mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
ymz774: verified SEQ "Stop Channels" feature works as was expected, remove logging (nw)
This commit is contained in:
parent
d1b02ba8fe
commit
7e3c5676dc
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user