From: <sv...@op...> - 2024-08-12 22:04:11
|
Author: sagamusix Date: Tue Aug 13 00:03:59 2024 New Revision: 21418 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21418 Log: [Fix] 669: Auto slides were only stopped on note change (https://www.un4seen.com/forum/?topic=15448.msg143478#msg143478). Modified: trunk/OpenMPT/soundlib/Load_669.cpp Modified: trunk/OpenMPT/soundlib/Load_669.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_669.cpp Tue Aug 13 00:01:57 2024 (r21417) +++ trunk/OpenMPT/soundlib/Load_669.cpp Tue Aug 13 00:03:59 2024 (r21418) @@ -215,6 +215,7 @@ uint8 note = noteInstr >> 2; uint8 instr = ((noteInstr & 0x03) << 4) | (instrVol >> 4); uint8 vol = instrVol & 0x0F; + uint8 command = effect[chn] >> 4; if(noteInstr < 0xFE) { m->note = note + 36 + NOTE_MIN; @@ -235,6 +236,8 @@ { // A param value of 0 resets the effect. effect[chn] = 0xFF; + if(command < 3) + m->SetEffectCommand(effTrans[command], 0); } if(effect[chn] == 0xFF) { @@ -244,7 +247,6 @@ m->param = effect[chn] & 0x0F; // Weird stuff happening in corehop.669 with effects > 8... they seem to do the same thing as if the high bit wasn't set, but the sample also behaves strangely. - uint8 command = effect[chn] >> 4; if(command < static_cast<uint8>(std::size(effTrans))) { m->command = effTrans[command]; |