From: <sv...@op...> - 2024-06-28 22:54:57
|
Author: sagamusix Date: Sat Jun 29 00:54:45 2024 New Revision: 21100 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21100 Log: Merged revision(s) 21076-21077, 21082 from trunk/OpenMPT: [Imp] When combining two identical pattern commands, don't try to keep both commands. The first command is preferred to be kept (fixes DBM.143_gnoj, https://www.un4seen.com/forum/?topic=15448.msg143155#msg143155) ........ [Fix] Compiler warnings. ........ [Imp] DBM: Disable a few more IT-specific playback compatibility flags. Fixes "Are You Flying with Me?" by Jazzcat. ........ Modified: branches/OpenMPT-1.29/ (props changed) branches/OpenMPT-1.29/soundlib/Load_dbm.cpp branches/OpenMPT-1.29/soundlib/modcommand.cpp Modified: branches/OpenMPT-1.29/soundlib/Load_dbm.cpp ============================================================================== --- branches/OpenMPT-1.29/soundlib/Load_dbm.cpp Sat Jun 29 00:52:12 2024 (r21099) +++ branches/OpenMPT-1.29/soundlib/Load_dbm.cpp Sat Jun 29 00:54:45 2024 (r21100) @@ -354,6 +354,8 @@ m_playBehaviour.set(kSlidesAtSpeed1); m_playBehaviour.reset(kITVibratoTremoloPanbrello); m_playBehaviour.reset(kITArpeggio); + m_playBehaviour.reset(kITInstrWithNoteOff); + m_playBehaviour.reset(kITInstrWithNoteOffOldEffects); m_modFormat.formatName = U_("DigiBooster Pro"); m_modFormat.type = U_("dbm"); Modified: branches/OpenMPT-1.29/soundlib/modcommand.cpp ============================================================================== --- branches/OpenMPT-1.29/soundlib/modcommand.cpp Sat Jun 29 00:52:12 2024 (r21099) +++ branches/OpenMPT-1.29/soundlib/modcommand.cpp Sat Jun 29 00:54:45 2024 (r21100) @@ -1122,6 +1122,39 @@ std::pair<EffectCommand, ModCommand::PARAM> ModCommand::TwoRegularCommandsToMPT(uint8 &effect1, uint8 ¶m1, uint8 &effect2, uint8 ¶m2) { + if(effect1 == effect2) + { + // For non-sliding, absolute effects, it doesn't make sense to keep both commands + switch(effect1) + { + case CMD_ARPEGGIO: + case CMD_PANNING8: + case CMD_OFFSET: + case CMD_POSITIONJUMP: + case CMD_VOLUME: + case CMD_PATTERNBREAK: + case CMD_SPEED: + case CMD_TEMPO: + case CMD_CHANNELVOLUME: + case CMD_GLOBALVOLUME: + case CMD_KEYOFF: + case CMD_SETENVPOSITION: + case CMD_MIDI: + case CMD_SMOOTHMIDI: + case CMD_DELAYCUT: + case CMD_FINETUNE: + case CMD_FINETUNE_SMOOTH: + case CMD_DUMMY: + case CMD_REVERSEOFFSET: + case CMD_DBMECHO: + case CMD_OFFSETPERCENTAGE: + effect2 = CMD_NONE; + break; + default: + break; + } + } + for(uint8 n = 0; n < 4; n++) { if(ModCommand::ConvertVolEffect(effect1, param1, (n > 1))) |