diff options
author | mooglyguy <therealmogminer@gmail.com> | 2018-10-16 13:26:08 +0200 |
---|---|---|
committer | mooglyguy <therealmogminer@gmail.com> | 2018-10-16 13:26:08 +0200 |
commit | 562081262f8229c24a68f8f86324671c570e97b8 (patch) | |
tree | 952d0e770e951e2be0ea8bba0c3e89dc965e9311 | |
parent | 1a4391dcfba238ca45a8bf10b503e475a893bb4d (diff) | |
parent | 5705b26e945a162c1295657079b9f711c1244bdd (diff) |
Merge fix.
-rw-r--r-- | src/devices/machine/spg2xx.cpp | 118 | ||||
-rw-r--r-- | src/mame/drivers/cps1.cpp | 24 | ||||
-rw-r--r-- | src/mame/drivers/model3.cpp | 66 | ||||
-rw-r--r-- | src/mame/mame.lst | 2 | ||||
-rw-r--r-- | src/mame/video/cps1.cpp | 1 |
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 |