summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-10-16 13:26:08 +0200
committer mooglyguy <therealmogminer@gmail.com>2018-10-16 13:26:08 +0200
commit562081262f8229c24a68f8f86324671c570e97b8 (patch)
tree952d0e770e951e2be0ea8bba0c3e89dc965e9311
parent1a4391dcfba238ca45a8bf10b503e475a893bb4d (diff)
parent5705b26e945a162c1295657079b9f711c1244bdd (diff)
Merge fix.
-rw-r--r--src/devices/machine/spg2xx.cpp118
-rw-r--r--src/mame/drivers/cps1.cpp24
-rw-r--r--src/mame/drivers/model3.cpp66
-rw-r--r--src/mame/mame.lst2
-rw-r--r--src/mame/video/cps1.cpp1
5 files changed, 149 insertions, 62 deletions
diff --git a/src/devices/machine/spg2xx.cpp b/src/devices/machine/spg2xx.cpp
index 55cd45b441a..fa4a45d14ff 100644
--- a/src/devices/machine/spg2xx.cpp
+++ b/src/devices/machine/spg2xx.cpp
@@ -18,31 +18,35 @@ DEFINE_DEVICE_TYPE(SPG28X, spg28x_device, "spg28x", "SPG280-series System-on-a-C
#define LOG_IO_READS (1U << 0)
#define LOG_IO_WRITES (1U << 1)
-#define LOG_GPIO (1U << 2)
+#define LOG_IRQS (1U << 2)
#define LOG_VLINES (1U << 3)
-#define LOG_IRQS (1U << 4)
+#define LOG_GPIO (1U << 4)
#define LOG_UART (1U << 5)
#define LOG_I2C (1U << 6)
#define LOG_DMA (1U << 7)
#define LOG_WATCHDOG (1U << 8)
#define LOG_SPU_READS (1U << 9)
#define LOG_SPU_WRITES (1U << 10)
-#define LOG_ENVELOPES (1U << 11)
-#define LOG_RAMPDOWN (1U << 12)
-#define LOG_SAMPLES (1U << 13)
-#define LOG_BEAT (1U << 14)
-#define LOG_CHANNEL_READS (1U << 15)
-#define LOG_CHANNEL_WRITES (1U << 16)
+#define LOG_CHANNEL_READS (1U << 11)
+#define LOG_CHANNEL_WRITES (1U << 12)
+#define LOG_ENVELOPES (1U << 13)
+#define LOG_SAMPLES (1U << 14)
+#define LOG_RAMPDOWN (1U << 15)
+#define LOG_BEAT (1U << 16)
#define LOG_PPU_READS (1U << 17)
#define LOG_PPU_WRITES (1U << 18)
-#define LOG_IO (LOG_IO_READS | LOG_IO_WRITES | LOG_GPIO | LOG_UART | LOG_I2C | LOG_DMA)
-#define LOG_SPU (LOG_SPU_READS | LOG_SPU_WRITES | LOG_ENVELOPES | LOG_RAMPDOWN | LOG_SAMPLES | LOG_BEAT | LOG_CHANNEL_READS | LOG_CHANNEL_WRITES)
+#define LOG_IO (LOG_IO_READS | LOG_IO_WRITES | LOG_IRQS | LOG_GPIO | LOG_UART | LOG_I2C | LOG_DMA)
+#define LOG_CHANNELS (LOG_CHANNEL_READS | LOG_CHANNEL_WRITES)
+#define LOG_SPU (LOG_SPU_READS | LOG_SPU_WRITES | LOG_CHANNEL_READS | LOG_CHANNEL_WRITES | LOG_ENVELOPES | LOG_SAMPLES | LOG_RAMPDOWN | LOG_BEAT)
#define LOG_PPU (LOG_PPU_READS | LOG_PPU_WRITES)
+#define LOG_ALL (LOG_IO | LOG_SPU | LOG_PPU | LOG_VLINES)
#define VERBOSE (0)
-
#include "logmacro.h"
+#define SPG_DEBUG_VIDEO (0)
+#define SPG_DEBUG_AUDIO (0)
+
#if SPG2XX_VISUAL_AUDIO_DEBUG
static const uint32_t s_visual_debug_palette[8] = {
0xff000000,
@@ -60,11 +64,6 @@ static const uint32_t s_visual_debug_palette[8] = {
#define SPG_VDB_VOL 4
#endif
-#define SPG_DEBUG_VIDEO (0)
-#define SPG_DEBUG_AUDIO (1)
-#define SPG_DEBUG_ENVELOPES (0)
-#define SPG_DEBUG_SAMPLES (1)
-
#define IO_IRQ_ENABLE m_io_regs[0x21]
#define IO_IRQ_STATUS m_io_regs[0x22]
#define VIDEO_IRQ_ENABLE m_video_regs[0x62]
@@ -586,15 +585,15 @@ READ16_MEMBER(spg2xx_device::video_r)
switch (offset)
{
case 0x38: // Current Line
- LOGMASKED(LOG_PPU_READS, "video_r: Current Line: %04x\n", m_screen->vpos());
+ LOGMASKED(LOG_VLINES, "video_r: Current Line: %04x\n", m_screen->vpos());
return m_screen->vpos();
case 0x62: // Video IRQ Enable
- LOGMASKED(LOG_PPU_READS, "video_r: Video IRQ Enable: %04x\n", VIDEO_IRQ_ENABLE);
+ LOGMASKED(LOG_IRQS, "video_r: Video IRQ Enable: %04x\n", VIDEO_IRQ_ENABLE);
return VIDEO_IRQ_ENABLE;
case 0x63: // Video IRQ Status
- LOGMASKED(LOG_PPU_READS, "video_r: Video IRQ Status: %04x\n", VIDEO_IRQ_STATUS);
+ LOGMASKED(LOG_IRQS, "video_r: Video IRQ Status: %04x\n", VIDEO_IRQ_STATUS);
return VIDEO_IRQ_STATUS;
default:
@@ -700,7 +699,7 @@ WRITE16_MEMBER(spg2xx_device::video_w)
case 0x36: // IRQ pos V
case 0x37: // IRQ pos H
m_video_regs[offset] = data & 0x01ff;
- LOGMASKED(LOG_PPU_WRITES, "video_w: Video IRQ Position: %04x,%04x (%04x)\n", m_video_regs[0x37], m_video_regs[0x36], 0x2800 | offset);
+ LOGMASKED(LOG_IRQS, "video_w: Video IRQ Position: %04x,%04x (%04x)\n", m_video_regs[0x37], m_video_regs[0x36], 0x2800 | offset);
if (m_video_regs[0x37] < 160 && m_video_regs[0x36] < 240)
m_screenpos_timer->adjust(m_screen->time_until_pos(m_video_regs[0x36], m_video_regs[0x37] << 1));
else
@@ -755,7 +754,6 @@ WRITE16_MEMBER(spg2xx_device::video_w)
LOGMASKED(LOG_IRQS, "video_w: Video IRQ Acknowledge = %04x\n", data);
const uint16_t old = VIDEO_IRQ_ENABLE & VIDEO_IRQ_STATUS;
VIDEO_IRQ_STATUS &= ~data;
- LOGMASKED(LOG_IRQS, "Setting video IRQ status to %04x\n", VIDEO_IRQ_STATUS);
const uint16_t changed = old ^ (VIDEO_IRQ_ENABLE & VIDEO_IRQ_STATUS);
if (changed)
check_video_irq();
@@ -1438,7 +1436,6 @@ void spg2xx_device::device_timer(emu_timer &timer, device_timer_id id, int param
void spg2xx_device::check_irqs(const uint16_t changed)
{
// {
- // verboselog(0, "audio 1 IRQ\n");
// m_cpu->set_input_line(UNSP_IRQ1_LINE, ASSERT_LINE);
// }
@@ -1558,33 +1555,33 @@ READ16_MEMBER(spg2xx_device::audio_r)
break;
case AUDIO_CHANNEL_FIQ_ENABLE:
- LOGMASKED(LOG_SPU_READS, "audio_r: Channel FIQ Enable: %04x\n", data);
+ LOGMASKED(LOG_SPU_READS | LOG_IRQS, "audio_r: Channel FIQ Enable: %04x\n", data);
break;
case AUDIO_CHANNEL_FIQ_STATUS:
- LOGMASKED(LOG_SPU_READS, "audio_r: Channel FIQ Acknowledge: %04x\n", data);
+ LOGMASKED(LOG_SPU_READS | LOG_IRQS, "audio_r: Channel FIQ Acknowledge: %04x\n", data);
break;
case AUDIO_BEAT_BASE_COUNT:
- LOGMASKED(LOG_SPU_READS, "audio_r: Beat Base Count: %04x\n", data);
+ LOGMASKED(LOG_SPU_READS | LOG_BEAT, "audio_r: Beat Base Count: %04x\n", data);
break;
case AUDIO_BEAT_COUNT:
- LOGMASKED(LOG_SPU_READS, "audio_r: Beat Count: %04x\n", data);
+ LOGMASKED(LOG_SPU_READS | LOG_BEAT, "audio_r: Beat Count: %04x\n", data);
break;
case AUDIO_ENVCLK0:
case AUDIO_ENVCLK1:
- LOGMASKED(LOG_SPU_READS, "audio_r: Envelope Interval %d (lo): %04x\n", offset == AUDIO_ENVCLK0 ? 0 : 1, data);
+ LOGMASKED(LOG_SPU_READS | LOG_ENVELOPES, "audio_r: Envelope Interval %d (lo): %04x\n", offset == AUDIO_ENVCLK0 ? 0 : 1, data);
break;
case AUDIO_ENVCLK0_HIGH:
case AUDIO_ENVCLK1_HIGH:
- LOGMASKED(LOG_SPU_READS, "audio_r: Envelope Interval %d (hi): %04x\n", offset == AUDIO_ENVCLK0_HIGH ? 0 : 1, data);
+ LOGMASKED(LOG_SPU_READS | LOG_ENVELOPES, "audio_r: Envelope Interval %d (hi): %04x\n", offset == AUDIO_ENVCLK0_HIGH ? 0 : 1, data);
break;
case AUDIO_ENV_RAMP_DOWN:
- LOGMASKED(LOG_SPU_READS, "audio_r: Envelope Fast Ramp Down: %04x\n", data);
+ LOGMASKED(LOG_SPU_READS | LOG_RAMPDOWN, "audio_r: Envelope Fast Ramp Down: %04x\n", data);
break;
case AUDIO_CHANNEL_STOP:
@@ -1628,7 +1625,7 @@ READ16_MEMBER(spg2xx_device::audio_r)
break;
case AUDIO_CHANNEL_ENV_MODE:
- LOGMASKED(LOG_SPU_READS, "audio_r: Channel Envelope Enable: %04x\n", data);
+ LOGMASKED(LOG_SPU_READS | LOG_ENVELOPES, "audio_r: Channel Envelope Enable: %04x\n", data);
break;
case AUDIO_CHANNEL_TONE_RELEASE:
@@ -1636,7 +1633,7 @@ READ16_MEMBER(spg2xx_device::audio_r)
break;
case AUDIO_CHANNEL_ENV_IRQ:
- LOGMASKED(LOG_SPU_READS, "audio_r: Channel Envelope IRQ Status: %04x\n", data);
+ LOGMASKED(LOG_SPU_READS | LOG_IRQS, "audio_r: Channel Envelope IRQ Status: %04x\n", data);
break;
case AUDIO_CHANNEL_PITCH_BEND:
@@ -1695,27 +1692,27 @@ READ16_MEMBER(spg2xx_device::audio_r)
break;
case AUDIO_ENVELOPE0:
- LOGMASKED(LOG_CHANNEL_READS, "audio_r: Channel %d: Envelope0: %04x (RPTPER:%d, TARGET:%02x, SIGN:%d, INC:%02x)\n", channel, data,
+ LOGMASKED(LOG_CHANNEL_READS | LOG_ENVELOPES, "audio_r: Channel %d: Envelope0: %04x (RPTPER:%d, TARGET:%02x, SIGN:%d, INC:%02x)\n", channel, data,
get_repeat_period_bit(channel), get_envelope_target(channel), get_envelope_sign_bit(channel), get_envelope_inc(channel));
break;
case AUDIO_ENVELOPE_DATA:
- LOGMASKED(LOG_CHANNEL_READS, "audio_r: Channel %d: Envelope Data: %04x (CNT:%d, EDD:%02x)\n", channel, data,
+ LOGMASKED(LOG_CHANNEL_READS | LOG_ENVELOPES, "audio_r: Channel %d: Envelope Data: %04x (CNT:%d, EDD:%02x)\n", channel, data,
get_envelope_count(channel), get_edd(channel));
break;
case AUDIO_ENVELOPE1:
- LOGMASKED(LOG_CHANNEL_READS, "audio_r: Channel %d: Envelope1 Data: %04x (RPTCNT:%02x, RPT:%d, LOAD:%02x)\n", channel, data,
+ LOGMASKED(LOG_CHANNEL_READS | LOG_ENVELOPES, "audio_r: Channel %d: Envelope1 Data: %04x (RPTCNT:%02x, RPT:%d, LOAD:%02x)\n", channel, data,
get_envelope_repeat_count(channel), get_envelope_repeat_bit(channel), get_envelope_load(channel));
break;
case AUDIO_ENVELOPE_ADDR_HIGH:
- LOGMASKED(LOG_CHANNEL_READS, "audio_r: Channel %d: Envelope Addr (hi): %04x (IRQADDR:%03x, IRQEN:%d, EADDR_HI:%02x)\n", channel, data,
+ LOGMASKED(LOG_CHANNEL_READS | LOG_ENVELOPES, "audio_r: Channel %d: Envelope Addr (hi): %04x (IRQADDR:%03x, IRQEN:%d, EADDR_HI:%02x)\n", channel, data,
get_audio_irq_addr(channel), get_audio_irq_enable_bit(channel), get_envelope_addr_high(channel));
break;
case AUDIO_ENVELOPE_ADDR:
- LOGMASKED(LOG_CHANNEL_READS, "audio_r: Channel %d: Envelope Addr (lo): %04x \n", channel, data);
+ LOGMASKED(LOG_CHANNEL_READS | LOG_ENVELOPES, "audio_r: Channel %d: Envelope Addr (lo): %04x \n", channel, data);
break;
case AUDIO_WAVE_DATA_PREV:
@@ -1723,7 +1720,7 @@ READ16_MEMBER(spg2xx_device::audio_r)
break;
case AUDIO_ENVELOPE_LOOP_CTRL:
- LOGMASKED(LOG_CHANNEL_READS, "audio_r: Channel %d: Envelope Loop Ctrl: %04x (RDOFFS:%02x, EAOFFS:%03x)\n", channel, data,
+ LOGMASKED(LOG_CHANNEL_READS | LOG_ENVELOPES, "audio_r: Channel %d: Envelope Loop Ctrl: %04x (RDOFFS:%02x, EAOFFS:%03x)\n", channel, data,
get_rampdown_offset(channel), get_envelope_eaoffset(channel));
break;
@@ -1749,7 +1746,7 @@ READ16_MEMBER(spg2xx_device::audio_r)
break;
case AUDIO_RAMP_DOWN_CLOCK:
- LOGMASKED(LOG_CHANNEL_READS, "audio_r: Channel %d: Rampdown Clock: %04x\n", channel, data);
+ LOGMASKED(LOG_CHANNEL_READS | LOG_RAMPDOWN, "audio_r: Channel %d: Rampdown Clock: %04x\n", channel, data);
break;
case AUDIO_PHASE:
@@ -1776,7 +1773,7 @@ READ16_MEMBER(spg2xx_device::audio_r)
}
else if (channel >= 16)
{
- LOGMASKED(LOG_SPU_READS, "audio_r: Trying to read from channel %d\n", channel);
+ LOGMASKED(LOG_CHANNEL_READS, "audio_r: Trying to read from channel %d\n", channel);
}
return data;
}
@@ -1834,24 +1831,24 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
break;
case AUDIO_CHANNEL_FIQ_ENABLE:
- LOGMASKED(LOG_SPU_WRITES, "audio_w: Channel FIQ Enable: %04x\n", data);
+ LOGMASKED(LOG_SPU_WRITES | LOG_IRQS, "audio_w: Channel FIQ Enable: %04x\n", data);
m_audio_regs[offset] = data & AUDIO_CHANNEL_FIQ_ENABLE_MASK;
break;
case AUDIO_CHANNEL_FIQ_STATUS:
- LOGMASKED(LOG_SPU_WRITES, "audio_w: Channel FIQ Acknowledge: %04x\n", data);
+ LOGMASKED(LOG_SPU_WRITES | LOG_IRQS, "audio_w: Channel FIQ Acknowledge: %04x\n", data);
m_audio_regs[offset] &= ~(data & AUDIO_CHANNEL_FIQ_STATUS_MASK);
break;
case AUDIO_BEAT_BASE_COUNT:
- LOGMASKED(LOG_SPU_WRITES, "audio_w: Beat Base Count: %04x\n", data);
+ LOGMASKED(LOG_SPU_WRITES | LOG_BEAT, "audio_w: Beat Base Count: %04x\n", data);
m_audio_regs[offset] = data & AUDIO_BEAT_BASE_COUNT_MASK;
m_audio_curr_beat_base_count = m_audio_regs[offset];
break;
case AUDIO_BEAT_COUNT:
{
- LOGMASKED(LOG_SPU_WRITES, "audio_w: Beat Count: %04x\n", data);
+ LOGMASKED(LOG_SPU_WRITES | LOG_BEAT, "audio_w: Beat Count: %04x\n", data);
const uint16_t old = m_audio_regs[offset];
m_audio_regs[offset] &= ~(data & AUDIO_BIS_MASK);
m_audio_regs[offset] &= AUDIO_BIS_MASK;
@@ -1862,7 +1859,7 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
}
if (changed & (AUDIO_BIS_MASK | AUDIO_BIE_MASK))
{
- LOGMASKED(LOG_SPU_WRITES, "BIS mask changed, updating IRQ\n");
+ LOGMASKED(LOG_BEAT, "BIS mask changed, updating IRQ\n");
check_irqs(changed & (AUDIO_BIS_MASK | AUDIO_BIE_MASK));
}
break;
@@ -1871,7 +1868,7 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
case AUDIO_ENVCLK0:
case AUDIO_ENVCLK1:
{
- LOGMASKED(LOG_SPU_WRITES, "audio_w: Envelope Interval %d (lo): %04x\n", offset == AUDIO_ENVCLK0 ? 0 : 1, data);
+ LOGMASKED(LOG_SPU_WRITES | LOG_ENVELOPES, "audio_w: Envelope Interval %d (lo): %04x\n", offset == AUDIO_ENVCLK0 ? 0 : 1, data);
const uint16_t old = m_audio_regs[offset];
m_audio_regs[offset] = data;
const uint16_t changed = old ^ m_audio_regs[offset];
@@ -1895,7 +1892,7 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
case AUDIO_ENVCLK0_HIGH:
case AUDIO_ENVCLK1_HIGH:
{
- LOGMASKED(LOG_SPU_WRITES, "audio_w: Envelope Interval %d (hi): %04x\n", offset == AUDIO_ENVCLK0_HIGH ? 0 : 1, data);
+ LOGMASKED(LOG_SPU_WRITES | LOG_ENVELOPES, "audio_w: Envelope Interval %d (hi): %04x\n", offset == AUDIO_ENVCLK0_HIGH ? 0 : 1, data);
const uint16_t old = m_audio_regs[offset];
m_audio_regs[offset] = data;
const uint16_t changed = old ^ m_audio_regs[offset];
@@ -1917,7 +1914,7 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
case AUDIO_ENV_RAMP_DOWN:
{
- LOGMASKED(LOG_SPU_WRITES, "audio_w: Envelope Fast Ramp Down: %04x\n", data);
+ LOGMASKED(LOG_SPU_WRITES | LOG_RAMPDOWN, "audio_w: Envelope Fast Ramp Down: %04x\n", data);
const uint16_t old = m_audio_regs[offset];
m_audio_regs[offset] = data & AUDIO_ENV_RAMP_DOWN_MASK;
const uint16_t changed = old ^ m_audio_regs[offset];
@@ -1991,7 +1988,7 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
break;
case AUDIO_CHANNEL_ENV_MODE:
- LOGMASKED(LOG_SPU_WRITES, "audio_w: Channel Envelope Enable: %04x\n", data);
+ LOGMASKED(LOG_SPU_WRITES | LOG_ENVELOPES, "audio_w: Channel Envelope Enable: %04x\n", data);
m_audio_regs[offset] = data & AUDIO_CHANNEL_ENV_MODE_MASK;
break;
@@ -2001,7 +1998,7 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
break;
case AUDIO_CHANNEL_ENV_IRQ:
- LOGMASKED(LOG_SPU_WRITES, "audio_w: Channel Envelope IRQ Acknowledge: %04x\n", data);
+ LOGMASKED(LOG_SPU_WRITES | LOG_ENVELOPES | LOG_IRQS, "audio_w: Channel Envelope IRQ Acknowledge: %04x\n", data);
m_audio_regs[offset] &= ~data & AUDIO_CHANNEL_ENV_IRQ_MASK;
break;
@@ -2074,31 +2071,31 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
case AUDIO_ENVELOPE0:
m_audio_regs[offset] = data;
- LOGMASKED(LOG_CHANNEL_WRITES, "audio_w: Channel %d: Envelope0: %04x (RPTPER:%d, TARGET:%02x, SIGN:%d, INC:%02x)\n", channel, data,
+ LOGMASKED(LOG_CHANNEL_WRITES | LOG_ENVELOPES, "audio_w: Channel %d: Envelope0: %04x (RPTPER:%d, TARGET:%02x, SIGN:%d, INC:%02x)\n", channel, data,
get_repeat_period_bit(channel), get_envelope_target(channel), get_envelope_sign_bit(channel), get_envelope_inc(channel));
break;
case AUDIO_ENVELOPE_DATA:
m_audio_regs[offset] = data & AUDIO_ENVELOPE_DATA_MASK;
- LOGMASKED(LOG_CHANNEL_WRITES, "audio_w: Channel %d: Envelope Data: %04x (CNT:%d, EDD:%02x)\n", channel, data,
+ LOGMASKED(LOG_CHANNEL_WRITES | LOG_ENVELOPES, "audio_w: Channel %d: Envelope Data: %04x (CNT:%d, EDD:%02x)\n", channel, data,
get_envelope_count(channel), get_edd(channel));
break;
case AUDIO_ENVELOPE1:
m_audio_regs[offset] = data;
- LOGMASKED(LOG_CHANNEL_WRITES, "audio_w: Channel %d: Envelope1 Data: %04x (RPTCNT:%02x, RPT:%d, LOAD:%02x)\n", channel, data,
+ LOGMASKED(LOG_CHANNEL_WRITES | LOG_ENVELOPES, "audio_w: Channel %d: Envelope1 Data: %04x (RPTCNT:%02x, RPT:%d, LOAD:%02x)\n", channel, data,
get_envelope_repeat_count(channel), get_envelope_repeat_bit(channel), get_envelope_load(channel));
break;
case AUDIO_ENVELOPE_ADDR_HIGH:
m_audio_regs[offset] = data;
- LOGMASKED(LOG_CHANNEL_WRITES, "audio_w: Channel %d: Envelope Addr (hi): %04x (IRQADDR:%03x, IRQEN:%d, EADDR_HI:%02x)\n", channel, data,
+ LOGMASKED(LOG_CHANNEL_WRITES | LOG_ENVELOPES, "audio_w: Channel %d: Envelope Addr (hi): %04x (IRQADDR:%03x, IRQEN:%d, EADDR_HI:%02x)\n", channel, data,
get_audio_irq_addr(channel), get_audio_irq_enable_bit(channel), get_envelope_addr_high(channel));
break;
case AUDIO_ENVELOPE_ADDR:
m_audio_regs[offset] = data;
- LOGMASKED(LOG_CHANNEL_WRITES, "audio_w: Channel %d: Envelope Addr (lo): %04x\n", channel, data);
+ LOGMASKED(LOG_CHANNEL_WRITES | LOG_ENVELOPES, "audio_w: Channel %d: Envelope Addr (lo): %04x\n", channel, data);
break;
case AUDIO_WAVE_DATA_PREV:
@@ -2108,7 +2105,7 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
case AUDIO_ENVELOPE_LOOP_CTRL:
m_audio_regs[offset] = data;
- LOGMASKED(LOG_CHANNEL_WRITES, "audio_w: Channel %d: Envelope Loop Ctrl: %04x (RDOFFS:%02x, EAOFFS:%03x)\n", channel, data,
+ LOGMASKED(LOG_CHANNEL_WRITES | LOG_ENVELOPES, "audio_w: Channel %d: Envelope Loop Ctrl: %04x (RDOFFS:%02x, EAOFFS:%03x)\n", channel, data,
get_rampdown_offset(channel), get_envelope_eaoffset(channel));
break;
@@ -2142,7 +2139,7 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
case AUDIO_RAMP_DOWN_CLOCK:
m_audio_regs[offset] = data & AUDIO_RAMP_DOWN_CLOCK_MASK;
- LOGMASKED(LOG_CHANNEL_WRITES, "audio_w: Channel %d: Rampdown Clock: %04x\n", channel, data);
+ LOGMASKED(LOG_CHANNEL_WRITES | LOG_RAMPDOWN, "audio_w: Channel %d: Rampdown Clock: %04x\n", channel, data);
break;
case AUDIO_PHASE:
@@ -2176,7 +2173,7 @@ WRITE16_MEMBER(spg2xx_device::audio_w)
}
else if (channel >= 16)
{
- LOGMASKED(LOG_SPU_WRITES, "audio_w: Trying to write to channel %d: %04x = %04x\n", channel, 0x3000 + offset, data);
+ LOGMASKED(LOG_CHANNEL_WRITES, "audio_w: Trying to write to channel %d: %04x = %04x\n", channel, 0x3000 + offset, data);
}
else
{
@@ -2412,7 +2409,6 @@ bool spg2xx_device::fetch_sample(address_space &space, const uint32_t channel)
if (tone_mode == AUDIO_TONE_MODE_HW_ONESHOT)
{
LOGMASKED(LOG_SAMPLES, "ADPCM stopped after %d samples\n", m_sample_count[channel]);
- if (m_audio_regs[AUDIO_CHANNEL_TONE_RELEASE] & (1 << channel)) LOGMASKED(LOG_SAMPLES, "Channel %d ADPCM stopped, but tone release is set! Oops!\n", channel);
m_sample_count[channel] = 0;
stop_channel(channel);
return false;
@@ -2434,7 +2430,6 @@ bool spg2xx_device::fetch_sample(address_space &space, const uint32_t channel)
if (tone_mode == AUDIO_TONE_MODE_HW_ONESHOT)
{
LOGMASKED(LOG_SAMPLES, "16-bit PCM stopped after %d samples\n", m_sample_count[channel]);
- if (m_audio_regs[AUDIO_CHANNEL_TONE_RELEASE] & (1 << channel)) LOGMASKED(LOG_SAMPLES, "Channel %d 16-bit stopped, but tone release is set! Oops!\n", channel);
m_sample_count[channel] = 0;
stop_channel(channel);
return false;
@@ -2463,7 +2458,6 @@ bool spg2xx_device::fetch_sample(address_space &space, const uint32_t channel)
if (tone_mode == AUDIO_TONE_MODE_HW_ONESHOT)
{
LOGMASKED(LOG_SAMPLES, "8-bit PCM stopped after %d samples\n", m_sample_count[channel]);
- if (m_audio_regs[AUDIO_CHANNEL_TONE_RELEASE] & (1 << channel)) LOGMASKED(LOG_SAMPLES, "Channel %d 8-bit stopped, but tone release is set! Oops!\n", channel);
m_sample_count[channel] = 0;
stop_channel(channel);
return false;
@@ -2575,7 +2569,7 @@ void spg2xx_device::audio_rampdown_tick(const uint32_t channel)
if (new_edd)
{
- LOGMASKED(LOG_ENVELOPES, "Channel %d preparing for next rampdown step (%02x)\n", channel, new_edd);
+ LOGMASKED(LOG_RAMPDOWN, "Channel %d preparing for next rampdown step (%02x)\n", channel, new_edd);
const uint16_t channel_mask = channel << 4;
m_audio_regs[channel_mask | AUDIO_ENVELOPE_DATA] &= ~AUDIO_EDD_MASK;
m_audio_regs[channel_mask | AUDIO_ENVELOPE_DATA] |= new_edd & AUDIO_EDD_MASK;
@@ -2583,7 +2577,7 @@ void spg2xx_device::audio_rampdown_tick(const uint32_t channel)
}
else
{
- LOGMASKED(LOG_ENVELOPES, "Stopping channel %d due to rampdown\n", channel);
+ LOGMASKED(LOG_RAMPDOWN, "Stopping channel %d due to rampdown\n", channel);
const uint16_t channel_mask = 1 << channel;
m_audio_regs[AUDIO_CHANNEL_ENABLE] &= ~channel_mask;
m_audio_regs[AUDIO_CHANNEL_STATUS] &= ~channel_mask;
diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp
index 2d949bac9ee..a104c6fd590 100644
--- a/src/mame/drivers/cps1.cpp
+++ b/src/mame/drivers/cps1.cpp
@@ -5874,6 +5874,29 @@ ROM_START( mtwins )
ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
ROM_END
+ROM_START( mtwinsb ) // board marked MGT-026
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "1-prg-27c4001.bin", 0x00001, 0x80000, CRC(8938a029) SHA1(50104d2afaec8d69d317780c071a4f2248e23e62) )
+ ROM_LOAD16_BYTE( "2-prg-27c4001.bin", 0x00000, 0x80000, CRC(7d5b8a97) SHA1(d3e456061a569765d400fc7c9b43e4fdacf17951) )
+
+ ROM_REGION( 0x200000, "gfx", 0 ) // identical to the original, but differently arranged
+ ROMX_LOAD( "g4.bin", 0x000004, 0x40000, CRC(11493e55) SHA1(0e45f53b034d66ce8d029346d4d88e46021df1a7), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000000, 0x40000)
+ ROMX_LOAD( "g3.bin", 0x000005, 0x40000, CRC(feda0f8b) SHA1(59c740478791ce95bf06feeda5173cc283a1eaea), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000001, 0x40000)
+ ROMX_LOAD( "g2.bin", 0x000006, 0x40000, CRC(745f0eba) SHA1(1cb07be5df7cc43b5aa236f114d303bf92436c74), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000002, 0x40000)
+ ROMX_LOAD( "g1.bin", 0x000007, 0x40000, CRC(8069026f) SHA1(3d5e9b36a349328bcd93d83d8d2fe3cd40e68a3b), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000003, 0x40000)
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "4-snd-z80-27c512.bin", 0x00000, 0x08000, CRC(4d4255b7) SHA1(81a76b58043af7252a854b7efc4109957ef0e679) ) // identical to the original
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "3-snd-27c208.bin", 0x00000, 0x40000, CRC(a0c3de92) SHA1(5135cd982564f898f799ff1bc2bb2a75154be0cd) ) // identical to the original, but one single bigger ROM
+ROM_END
+
/* B-Board 89625B-1 */
ROM_START( chikij )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
@@ -13082,6 +13105,7 @@ GAME( 1990, mercsur1, mercs, cps1_10MHz, mercs, cps_state, init_cps1,
GAME( 1990, mercsj, mercs, cps1_10MHz, mercs, cps_state, init_cps1, ROT270, "Capcom", "Senjou no Ookami II (Japan 900302)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, mtwins, 0, cps1_10MHz, mtwins, cps_state, init_cps1, ROT0, "Capcom", "Mega Twins (World 900619)", MACHINE_SUPPORTS_SAVE ) // "ETC" - (c) Capcom U.S.A. but World "warning"
GAME( 1990, chikij, mtwins, cps1_10MHz, mtwins, cps_state, init_cps1, ROT0, "Capcom", "Chiki Chiki Boys (Japan 900619)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, mtwinsb, mtwins, cps1_10MHz, mtwins, cps_state, init_cps1, ROT0, "Capcom", "Mega Twins (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // severe GFX problems due to different bootleg hardware
GAME( 1990, msword, 0, cps1_10MHz, msword, cps_state, init_cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (World 900725)", MACHINE_SUPPORTS_SAVE ) // 25.07.1990 "OTHER COUNTRY"
GAME( 1990, mswordr1, msword, cps1_10MHz, msword, cps_state, init_cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (World 900623)", MACHINE_SUPPORTS_SAVE ) // 23.06.1990 "OTHER COUNTRY"
GAME( 1990, mswordu, msword, cps1_10MHz, msword, cps_state, init_cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (USA 900725)", MACHINE_SUPPORTS_SAVE ) // 25.07.1990 "U.S.A."
diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp
index e4aeb0cae7d..40af0d28e40 100644
--- a/src/mame/drivers/model3.cpp
+++ b/src/mame/drivers/model3.cpp
@@ -5109,6 +5109,71 @@ ROM_START( eca ) /* Step 2.1 Export version */
ROM_PARAMETER( ":315_5881:key", "2923aa91" )
ROM_END
+ROM_START( ecaj ) /* Step 2.1, ROM board ID# 834-13946 ECA */
+ ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */
+ // CROM
+ ROM_LOAD64_WORD_SWAP( "epr-22891.17", 0x000006, 0x200000, CRC(823a251c) SHA1(d2cc4be9dffa860d9af519e1387e7b51322c5454) )
+ ROM_LOAD64_WORD_SWAP( "epr-22892.18", 0x000004, 0x200000, CRC(0ff828a8) SHA1(2a74414891ceb5989e6ccb6e9d597f7d2e31fec4) )
+ ROM_LOAD64_WORD_SWAP( "epr-22893.19", 0x000002, 0x200000, CRC(9755dd8c) SHA1(41f27a303f4af179f17520d0c2d6a0aa4467aae8) )
+ ROM_LOAD64_WORD_SWAP( "epr-22894.20", 0x000000, 0x200000, CRC(cde48c5d) SHA1(62e640110e204b682fc582a0c1aeca370e36b4cf) )
+
+ // CROM0
+ ROM_LOAD64_WORD_SWAP( "mpr-22870.1", 0x800006, 0x400000, CRC(52054043) SHA1(f07c1f95a5847393c9e640c10cd14e2a3750b3ff) )
+ ROM_LOAD64_WORD_SWAP( "mpr-22871.2", 0x800004, 0x400000, CRC(cf5bb5b5) SHA1(fd056fcf9a48854faa357014c2cb4a6ed301c3a6) )
+ ROM_LOAD64_WORD_SWAP( "mpr-22872.3", 0x800002, 0x400000, CRC(4fde63a1) SHA1(72f88e514caea28eeee9e57e55c835c490465df0) )
+ ROM_LOAD64_WORD_SWAP( "mpr-22873.4", 0x800000, 0x400000, CRC(dd406330) SHA1(e17ed1814cb84820f19922eef27bbad65be1d355) )
+
+ // CROM1
+ ROM_LOAD64_WORD_SWAP( "mpr-22874.5", 0x1800006, 0x400000, CRC(5e990497) SHA1(f0df52a19a11ef23f82e88eddbacdcb2a6357ded) )
+ ROM_LOAD64_WORD_SWAP( "mpr-22875.6", 0x1800004, 0x400000, CRC(1bb5c018) SHA1(5d0146c32f6a50613340ba0d2f5cc5430b595965) )
+ ROM_LOAD64_WORD_SWAP( "mpr-22876.7", 0x1800002, 0x400000, CRC(a7561249) SHA1(b4217cb088234831ca2e9486af849866790bf704) )
+ ROM_LOAD64_WORD_SWAP( "mpr-22877.8", 0x1800000, 0x400000, CRC(e53b8764) SHA1(03756ef0526aa0b56c2944336590918d8ff9a9b8) )
+
+ // CROM3
+ ROM_LOAD64_WORD_SWAP( "epr-22882.13", 0x3800006, 0x400000, CRC(b161416f) SHA1(753810fa4db80a2d3a333a257dc92095a112d282) )
+ ROM_LOAD64_WORD_SWAP( "epr-22883.14", 0x3800004, 0x400000, CRC(86d90148) SHA1(4336efb9e3d62cc5e8073993c44cbe49141d987f) )
+ ROM_LOAD64_WORD_SWAP( "epr-22884.15", 0x3800002, 0x400000, CRC(254c3b63) SHA1(b5cd94ecbffb6f0da70fb2cb7541d5bfc96cb67c) )
+ ROM_LOAD64_WORD_SWAP( "epr-22885.16", 0x3800000, 0x400000, CRC(3525b46d) SHA1(d7914cd5c558b50b9115303f77bef63e04316b29) )
+
+ ROM_REGION( 0x2000000, "user3", 0 ) /* Video ROMs Part 1 */
+ ROM_LOAD_VROM( "mpr-22854.26", 0x000002, 0x400000, CRC(97a23d16) SHA1(17a11a3e1b1806f7b994955ae22dd0e5333d47ea) )
+ ROM_LOAD_VROM( "mpr-22855.27", 0x000000, 0x400000, CRC(7249cdc9) SHA1(4bd07d911382cc569e09fb888858806d06809f9f) )
+ ROM_LOAD_VROM( "mpr-22856.28", 0x000006, 0x400000, CRC(9c0d1d1b) SHA1(f15c756fb262e15d784328ed3f731aea40797d98) )
+ ROM_LOAD_VROM( "mpr-22857.29", 0x000004, 0x400000, CRC(44e6ce2b) SHA1(03a33417dc96d3ddcbeb92422654f75f620ef265) )
+ ROM_LOAD_VROM( "mpr-22858.30", 0x00000a, 0x400000, CRC(0af40aae) SHA1(1af762e09af932d267b860712fa46eaf4b1500ac) )
+ ROM_LOAD_VROM( "mpr-22859.31", 0x000008, 0x400000, CRC(c64f0158) SHA1(b92dba07e52b4fdabc9bd4bbd26cc41cdab0414d) )
+ ROM_LOAD_VROM( "mpr-22860.32", 0x00000e, 0x400000, CRC(053af14b) SHA1(6d13609e52a4999d6dca3c4da695ebd973b06b7e) )
+ ROM_LOAD_VROM( "mpr-22861.33", 0x00000c, 0x400000, CRC(d26343da) SHA1(9d8c860c388cc2434cc8d753cde139096c12e79e) )
+
+ ROM_REGION( 0x2000000, "user4", 0 ) /* Video ROMs Part 2 */
+ ROM_LOAD_VROM( "mpr-22862.34", 0x000002, 0x400000, CRC(38347c14) SHA1(6222a5001d3a6ed8e8ff3010284658dbc69edee6) )
+ ROM_LOAD_VROM( "mpr-22863.35", 0x000000, 0x400000, CRC(28b558e6) SHA1(9b4849499baebbd2ea81d00663dff0d40c9db602) )
+ ROM_LOAD_VROM( "mpr-22864.36", 0x000006, 0x400000, CRC(31ed02f6) SHA1(a669aa8a42ff70562c86f348fcf4be6f14c2f650) )
+ ROM_LOAD_VROM( "mpr-22865.37", 0x000004, 0x400000, CRC(3e3a211a) SHA1(422f960914a6604de59b110b18f3e67ed9116f22) )
+ ROM_LOAD_VROM( "mpr-22866.38", 0x00000a, 0x400000, CRC(a863a3c8) SHA1(52e13b76a3698deef05df4c607d047e6362d81c0) )
+ ROM_LOAD_VROM( "mpr-22867.39", 0x000008, 0x400000, CRC(1ce6c7b2) SHA1(d5fd49f9838d3dc636366c436c507ac2b4f2596e) )
+ ROM_LOAD_VROM( "mpr-22868.40", 0x00000e, 0x400000, CRC(2db40cf8) SHA1(be1e04aeb5034c2edc5c0ad153700c385a1b773a) )
+ ROM_LOAD_VROM( "mpr-22869.41", 0x00000c, 0x400000, CRC(c6d62634) SHA1(72d493653b50fb31333f70c7ee143a8c7531106f) )
+
+ ROM_REGION( 0x080000, "audiocpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "epr-22886.21", 0x000000, 0x080000, CRC(374ec1c6) SHA1(b06e678db191971f6701bd1f739815d00d4cfb3e) )
+
+ ROM_REGION16_BE( 0x1000000, "samples", 0 ) /* SCSP samples */
+ ROM_LOAD16_WORD_SWAP( "mpr-22887.22", 0x000000, 0x400000, CRC(7d04a867) SHA1(053de98105880188b4daff183710d7932617547f) )
+ ROM_LOAD16_WORD_SWAP( "mpr-22889.24", 0x400000, 0x400000, CRC(4f9ba45d) SHA1(d60314e852637edf6510be52b9b6576a1f3e1b7e) )
+ ROM_LOAD16_WORD_SWAP( "mpr-22888.23", 0x800000, 0x400000, CRC(018fcf22) SHA1(c5133358f591d699f177617463e7dfa22edf5369) )
+ ROM_LOAD16_WORD_SWAP( "mpr-22890.25", 0xc00000, 0x400000, CRC(b638bd7c) SHA1(ed9c69175fd0ca4c6f22e542b4e68398a6e4ad07) )
+
+ ROM_REGION( 0x20000, "cpu2", 0 ) /* Z80 code */
+ ROM_FILL( 0x000000, 0x20000, 0x0000 )
+
+ ROM_REGION( 0x1000000, "dsb", 0 ) /* DSB samples */
+ ROM_FILL( 0x000000, 0x1000000, 0x0000 )
+
+ // ???? 317-0265-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "2923aa91" )
+ROM_END
+
ROM_START( ecau ) /* Step 2.1, ROM board ID# 834-13946-01 ECA */
ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */
// CROM
@@ -6050,5 +6115,6 @@ GAME( 1998, spikeout, 0, model3_21_5881, model3, model3_state, init_sp
GAME( 1999, spikeofe, 0, model3_21_5881, model3, model3_state, init_spikeofe, ROT0, "Sega", "Spikeout Final Edition", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1998, magtruck, 0, model3_21_5881, eca, model3_state, init_magtruck, ROT0, "Sega", "Magical Truck Adventure (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1999, eca, 0, model3_21_5881, eca, model3_state, init_eca, ROT0, "Sega", "Emergency Call Ambulance (Export)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, ecaj, eca, model3_21_5881, eca, model3_state, init_eca, ROT0, "Sega", "Emergency Call Ambulance (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1999, ecau, eca, model3_21_5881, eca, model3_state, init_eca, ROT0, "Sega", "Emergency Call Ambulance (USA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1999, ecap, eca, model3_21_5881, eca, model3_state, init_eca, ROT0, "Sega", "Emergency Call Ambulance (US location test?)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 06d5fcb2965..5f6d1e2c249 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -10180,6 +10180,7 @@ mswordj // 23/06/1990 (c) 1990 (Japan)
mswordr1 // 23/06/1990 (c) 1990 (World)
mswordu // 25/07/1990 (c) 1990 (USA)
mtwins // 19/06/1990 (c) 1990 (World)
+mtwinsb // bootleg
nemo // 30/11/1990 (c) 1990 (World)
nemoj // 20/11/1990 (c) 1990 (Japan)
nemor1 // 09/11/1990 (c) 1990 (World)
@@ -21644,6 +21645,7 @@ dirtdvlsa //
dirtdvlsj //
eca // 1999.10 Kyukyuusya Emergency Call Ambulance
ecap // 1999.12 Emergency Call Ambulance - US proto or location test
+ecaj //
ecau //
fvipers2 // 1998.04 Fighting Vipers 2
getbass //
diff --git a/src/mame/video/cps1.cpp b/src/mame/video/cps1.cpp
index 485aa610a23..a6df5578acb 100644
--- a/src/mame/video/cps1.cpp
+++ b/src/mame/video/cps1.cpp
@@ -1462,6 +1462,7 @@ static const struct CPS1config cps1_config_table[]=
{"mswordj", CPS_B_13, mapper_MS24B }, // wrong, this set uses MS22B, dumped but equations still not added
{"mtwins", CPS_B_14, mapper_CK24B },
{"chikij", CPS_B_14, mapper_CK24B }, // wrong, this set uses CK22B, dumped but equations still not added
+ {"mtwinsb", CPS_B_14, mapper_CK24B }, // wrong, bootleg hardware
{"nemo", CPS_B_15, mapper_NM24B },
{"nemor1", CPS_B_15, mapper_NM24B },
{"nemoj", CPS_B_15, mapper_NM24B }, // wrong, this set uses NM22B, still not dumped