ymz774: verified SEQ "Stop Channels" feature works as was expected, remove logging (nw)

This commit is contained in:
MetalliC 2017-12-17 17:13:54 +02:00
parent d1b02ba8fe
commit 7e3c5676dc

View File

@ -500,9 +500,7 @@ void ymz774_device::internal_reg_write(uint8_t reg, uint8_t data)
m_channels[ch].is_playing = true; m_channels[ch].is_playing = true;
} }
else else
{
m_channels[ch].is_playing = false; m_channels[ch].is_playing = false;
}
break; break;
case 0x58: // Pause / Resume case 0x58: // Pause / Resume
if (data) logerror("pause/resume unimplemented %02X %02X\n", reg, data); if (data) logerror("pause/resume unimplemented %02X %02X\n", reg, data);
@ -559,14 +557,13 @@ void ymz774_device::internal_reg_write(uint8_t reg, uint8_t data)
case 0x98: // Off trigger, bit4 = on/off, bits0-3 channel (end sequence when channel playback ends) case 0x98: // Off trigger, bit4 = on/off, bits0-3 channel (end sequence when channel playback ends)
if (data) logerror("SEQ Off trigger unimplemented %02X %02X\n", reg, data); if (data) logerror("SEQ Off trigger unimplemented %02X %02X\n", reg, data);
break; break;
case 0xa0: // stop channel mask H and L, what it for ? stop chanels immediatelly or when sequence ends (so far assuming later) ? case 0xa0: // stop channel mask H and L (when sequence stoped)
case 0xa8: case 0xa8:
sq = (reg >> 1) & 7; sq = (reg >> 1) & 7;
if (reg & 1) if (reg & 1)
m_sequences[sq].stopchan = (m_sequences[sq].stopchan & 0xff00) | data; m_sequences[sq].stopchan = (m_sequences[sq].stopchan & 0xff00) | data;
else else
m_sequences[sq].stopchan = (m_sequences[sq].stopchan & 0x00ff) | (data << 8); m_sequences[sq].stopchan = (m_sequences[sq].stopchan & 0x00ff) | (data << 8);
if (data) logerror("Check me: SEQ Stop Channels used %02X %02X\n", reg, data);
break; break;
case 0xb0: case 0xb0:
m_sqcs[sq].sqc = data; m_sqcs[sq].sqc = data;
@ -583,7 +580,7 @@ void ymz774_device::internal_reg_write(uint8_t reg, uint8_t data)
{ {
//logerror("SQC %d stop (%s)\n", sq, m_sqcs[sq].is_playing ? "playing" : "stopped"); //logerror("SQC %d stop (%s)\n", sq, m_sqcs[sq].is_playing ? "playing" : "stopped");
m_sqcs[sq].is_playing = false; m_sqcs[sq].is_playing = false;
// stop SEQ too, is this right ? at least kof98umh never manually stop SEQ // stop SEQ too, and stop chanels
if (m_sequences[sq].is_playing) if (m_sequences[sq].is_playing)
for (int ch = 0; ch < 16; ch++) for (int ch = 0; ch < 16; ch++)
if (m_sequences[sq].stopchan & (1 << ch)) if (m_sequences[sq].stopchan & (1 << ch))
@ -654,9 +651,7 @@ void ymz774_device::sequencer()
if (sequence.is_playing) if (sequence.is_playing)
{ {
if (sequence.delay > 0) if (sequence.delay > 0)
{
--sequence.delay; --sequence.delay;
}
else else
{ {
int reg = get_rom_byte(sequence.offset++); int reg = get_rom_byte(sequence.offset++);
@ -664,7 +659,7 @@ void ymz774_device::sequencer()
switch (reg) switch (reg)
{ {
case 0xff: // end case 0xff: // end
for (int ch = 0; ch < 16; ch++) // check this for (int ch = 0; ch < 16; ch++) // might be wrong, ie not needed in case of loop
if (sequence.stopchan & (1 << ch)) if (sequence.stopchan & (1 << ch))
m_channels[ch].is_playing = false; m_channels[ch].is_playing = false;
if (sequence.loop) if (sequence.loop)