From: <sv...@op...> - 2024-11-09 23:26:27
|
Author: sagamusix Date: Sun Nov 10 00:26:15 2024 New Revision: 22129 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22129 Log: [Fix] S3M: Saving note-less instrument broke in r22093 (see https://github.com/OpenMPT/openmpt/pull/28). [Imp] Improve S3M saving tests. Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp trunk/OpenMPT/test/test.cpp trunk/OpenMPT/test/test.s3m Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_s3m.cpp Sun Nov 10 00:10:17 2024 (r22128) +++ trunk/OpenMPT/soundlib/Load_s3m.cpp Sun Nov 10 00:26:15 2024 (r22129) @@ -973,16 +973,15 @@ { // Note Cut note = s3mNoteOff; - } else if(note < NOTE_MIN + 12) + } else if(note >= NOTE_MIN && note < NOTE_MIN + 12) { // Too low note = 0; - } else if(note <= NOTE_MIN + 107) + } else if(note >= NOTE_MIN && note <= NOTE_MIN + 107) { note -= (12 + NOTE_MIN); note = static_cast<uint8>((note % 12) + ((note / 12) << 4)); - } - else + } else { note = s3mNoteNone; } Modified: trunk/OpenMPT/test/test.cpp ============================================================================== --- trunk/OpenMPT/test/test.cpp Sun Nov 10 00:10:17 2024 (r22128) +++ trunk/OpenMPT/test/test.cpp Sun Nov 10 00:26:15 2024 (r22129) @@ -3296,7 +3296,8 @@ VERIFY_EQUAL_NONCONT(sndFile.m_SongFlags, SONG_FASTVOLSLIDES); VERIFY_EQUAL_NONCONT(sndFile.GetMixLevels(), MixLevels::Compatible); VERIFY_EQUAL_NONCONT(sndFile.m_nTempoMode, TempoMode::Classic); - VERIFY_EQUAL_NONCONT(sndFile.m_dwLastSavedWithVersion, resaved ? Version::Current() : MPT_V("1.27.00.00")); + VERIFY_EQUAL_NONCONT(sndFile.m_dwLastSavedWithVersion, resaved ? Version::Current() : MPT_V("1.32.00.32")); + VERIFY_EQUAL_NONCONT(sndFile.GetFileHistory().size(), 1); // Channels VERIFY_EQUAL_NONCONT(sndFile.GetNumChannels(), 4); @@ -3397,6 +3398,7 @@ VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetOverrideSignature(), false); VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(0, 0)->note, NOTE_MIN + 12); VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(1, 0)->note, NOTE_MIN + 107); + VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(2, 0)->note, NOTE_NOTECUT); VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(0, 1)->volcmd, VOLCMD_VOLUME); VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(0, 1)->vol, 0); VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(1, 1)->volcmd, VOLCMD_VOLUME); @@ -3407,6 +3409,10 @@ VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(3, 1)->vol, 64); VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(0, 3)->command, CMD_SPEED); VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(0, 3)->param, 0x11); + VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(3, 0)->IsEmpty(), false); + VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(3, 0)->note, NOTE_NONE); + VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(3, 0)->instr, 99); + VERIFY_EQUAL_NONCONT(sndFile.Patterns[0].GetpModCommand(4, 0)->IsEmpty(), true); VERIFY_EQUAL_NONCONT(sndFile.Patterns[1].GetNumRows(), 64); VERIFY_EQUAL_NONCONT(sndFile.Patterns.IsPatternEmpty(1), false); Modified: trunk/OpenMPT/test/test.s3m ============================================================================== Binary file (source and/or target). No diff available. |