From: <sv...@op...> - 2024-07-11 20:13:50
|
Author: sagamusix Date: Thu Jul 11 22:13:43 2024 New Revision: 21137 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21137 Log: Merged revision(s) 21127-21128, 21136 from trunk/OpenMPT: [Imp] S3M: Detect Liquid Tracker and NESMusa (tool by Bisqwit?) ........ [Imp] S3M: Detect all Liquid Tracker versions (presumably). ........ [Fix] S3M: (Some) NESMusa modules were identified as Liquid Tracker. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_s3m.cpp branches/OpenMPT-1.31/soundlib/S3MTools.h Modified: branches/OpenMPT-1.31/soundlib/Load_s3m.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_s3m.cpp Thu Jul 11 22:12:54 2024 (r21136) +++ branches/OpenMPT-1.31/soundlib/Load_s3m.cpp Thu Jul 11 22:13:43 2024 (r21137) @@ -339,7 +339,19 @@ nonCompatTracker = true; break; case S3MFileHeader::trkOpenMPT: - if(fileHeader.cwtv != S3MFileHeader::trkGraoumfTracker) + if((fileHeader.cwtv & 0xFF00) == S3MFileHeader::trkNESMusa) + { + madeWithTracker = U_("NESMusa"); + formatTrackerStr = true; + } else if(fileHeader.reserved2 == 0 && fileHeader.ultraClicks == 16 && fileHeader.channels[1] != 1) + { + // Liquid Tracker's ID clashes with OpenMPT's. + // OpenMPT started writing full version information with OpenMPT 1.29 and later changed the ultraClicks value from 8 to 16. + // Liquid Tracker writes an ultraClicks value of 16. + // So we assume that a file was saved with Liquid Tracker if the reserved fields are 0 and ultraClicks is 16. + madeWithTracker = U_("Liquid Tracker"); + formatTrackerStr = true; + } else if(fileHeader.cwtv != S3MFileHeader::trkGraoumfTracker) { uint32 mptVersion = (fileHeader.cwtv & S3MFileHeader::versionMask) << 16; if(mptVersion >= 0x01'29'00'00) Modified: branches/OpenMPT-1.31/soundlib/S3MTools.h ============================================================================== --- branches/OpenMPT-1.31/soundlib/S3MTools.h Thu Jul 11 22:12:54 2024 (r21136) +++ branches/OpenMPT-1.31/soundlib/S3MTools.h Thu Jul 11 22:13:43 2024 (r21137) @@ -53,8 +53,9 @@ trkIT2_14 = 0x3214, trkBeRoTrackerOld = 0x4100, // Used from 2004 to 2012 trkGraoumfTracker = 0x5447, + trkNESMusa = 0x5700, trkCamoto = 0xCA00, - trkPlayerPRO = 0x2013 // PlayerPRO on Intel doesn't byte-swap the tracker ID bytes + trkPlayerPRO = 0x2013, // PlayerPRO on Intel doesn't byte-swap the tracker ID bytes }; // Flags |