You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(10) |
Sep
|
Oct
|
Nov
|
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(1) |
Feb
(2) |
Mar
(3) |
Apr
(2) |
May
(10) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2008 |
Jan
(6) |
Feb
(4) |
Mar
(5) |
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
(4) |
Aug
(6) |
Sep
(2) |
Oct
(9) |
Nov
(1) |
Dec
(4) |
2009 |
Jan
(9) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(6) |
Jun
(18) |
Jul
(33) |
Aug
(39) |
Sep
(33) |
Oct
(24) |
Nov
(23) |
Dec
(22) |
2010 |
Jan
(29) |
Feb
(32) |
Mar
(51) |
Apr
(17) |
May
(31) |
Jun
(21) |
Jul
(32) |
Aug
(28) |
Sep
(35) |
Oct
(27) |
Nov
(11) |
Dec
(13) |
2011 |
Jan
(14) |
Feb
(13) |
Mar
(27) |
Apr
(27) |
May
(28) |
Jun
(20) |
Jul
(43) |
Aug
(52) |
Sep
(66) |
Oct
(61) |
Nov
(11) |
Dec
(8) |
2012 |
Jan
(20) |
Feb
(30) |
Mar
(38) |
Apr
(21) |
May
(33) |
Jun
(21) |
Jul
(25) |
Aug
(9) |
Sep
(24) |
Oct
(42) |
Nov
(27) |
Dec
(41) |
2013 |
Jan
(20) |
Feb
(35) |
Mar
(156) |
Apr
(298) |
May
(258) |
Jun
(201) |
Jul
(105) |
Aug
(60) |
Sep
(193) |
Oct
(245) |
Nov
(280) |
Dec
(194) |
2014 |
Jan
(63) |
Feb
(202) |
Mar
(200) |
Apr
(23) |
May
(53) |
Jun
(105) |
Jul
(18) |
Aug
(26) |
Sep
(110) |
Oct
(187) |
Nov
(97) |
Dec
(74) |
2015 |
Jan
(45) |
Feb
(55) |
Mar
(116) |
Apr
(116) |
May
(193) |
Jun
(164) |
Jul
(50) |
Aug
(111) |
Sep
(98) |
Oct
(71) |
Nov
(103) |
Dec
(63) |
2016 |
Jan
(33) |
Feb
(101) |
Mar
(182) |
Apr
(139) |
May
(140) |
Jun
(103) |
Jul
(165) |
Aug
(286) |
Sep
(208) |
Oct
(127) |
Nov
(97) |
Dec
(54) |
2017 |
Jan
(64) |
Feb
(335) |
Mar
(202) |
Apr
(212) |
May
(139) |
Jun
(127) |
Jul
(294) |
Aug
(154) |
Sep
(170) |
Oct
(152) |
Nov
(156) |
Dec
(62) |
2018 |
Jan
(168) |
Feb
(237) |
Mar
(196) |
Apr
(174) |
May
(174) |
Jun
(161) |
Jul
(127) |
Aug
(88) |
Sep
(149) |
Oct
(66) |
Nov
(52) |
Dec
(135) |
2019 |
Jan
(146) |
Feb
(126) |
Mar
(104) |
Apr
(58) |
May
(60) |
Jun
(28) |
Jul
(197) |
Aug
(129) |
Sep
(141) |
Oct
(148) |
Nov
(63) |
Dec
(100) |
2020 |
Jan
(74) |
Feb
(37) |
Mar
(59) |
Apr
(154) |
May
(194) |
Jun
(133) |
Jul
(313) |
Aug
(197) |
Sep
(49) |
Oct
(162) |
Nov
(143) |
Dec
(57) |
2021 |
Jan
(120) |
Feb
(107) |
Mar
(314) |
Apr
(157) |
May
(524) |
Jun
(169) |
Jul
(72) |
Aug
(133) |
Sep
(135) |
Oct
(146) |
Nov
(198) |
Dec
(325) |
2022 |
Jan
(409) |
Feb
(249) |
Mar
(138) |
Apr
(95) |
May
(102) |
Jun
(221) |
Jul
(66) |
Aug
(120) |
Sep
(192) |
Oct
(131) |
Nov
(53) |
Dec
(171) |
2023 |
Jan
(357) |
Feb
(82) |
Mar
(168) |
Apr
(218) |
May
(196) |
Jun
(86) |
Jul
(115) |
Aug
(49) |
Sep
(190) |
Oct
(102) |
Nov
(45) |
Dec
(76) |
2024 |
Jan
(86) |
Feb
(50) |
Mar
(324) |
Apr
(209) |
May
(197) |
Jun
(232) |
Jul
(194) |
Aug
(247) |
Sep
(219) |
Oct
(266) |
Nov
(328) |
Dec
(304) |
2025 |
Jan
(191) |
Feb
(115) |
Mar
(137) |
Apr
(32) |
May
(126) |
Jun
(403) |
Jul
(213) |
Aug
(184) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@op...> - 2024-05-12 11:17:48
|
Author: manx Date: Sun May 12 13:17:36 2024 New Revision: 20804 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20804 Log: [Mod] OpenMPT: Version is now 1.30.12.12 Modified: branches/OpenMPT-1.30/common/versionNumber.h Modified: branches/OpenMPT-1.30/common/versionNumber.h ============================================================================== --- branches/OpenMPT-1.30/common/versionNumber.h Sun May 12 13:17:15 2024 (r20803) +++ branches/OpenMPT-1.30/common/versionNumber.h Sun May 12 13:17:36 2024 (r20804) @@ -18,6 +18,6 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 30 #define VER_MINOR 12 -#define VER_MINORMINOR 11 +#define VER_MINORMINOR 12 OPENMPT_NAMESPACE_END |
From: <sv...@op...> - 2024-05-12 11:17:45
|
Author: manx Date: Sun May 12 13:17:39 2024 New Revision: 20808 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20808 Log: [Mod] OpenMPT: Version is now 1.30.12.13 Modified: branches/OpenMPT-1.30/common/versionNumber.h Modified: branches/OpenMPT-1.30/common/versionNumber.h ============================================================================== --- branches/OpenMPT-1.30/common/versionNumber.h Sun May 12 13:17:38 2024 (r20807) +++ branches/OpenMPT-1.30/common/versionNumber.h Sun May 12 13:17:39 2024 (r20808) @@ -18,6 +18,6 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 30 #define VER_MINOR 12 -#define VER_MINORMINOR 12 +#define VER_MINORMINOR 13 OPENMPT_NAMESPACE_END |
From: <sv...@op...> - 2024-05-12 11:17:25
|
Author: manx Date: Sun May 12 13:17:13 2024 New Revision: 20801 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20801 Log: [Mod] libopenmpt: Prepare for release. Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.h branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.mk Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md ============================================================================== --- branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sun May 12 13:12:20 2024 (r20800) +++ branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sun May 12 13:17:13 2024 (r20801) @@ -5,7 +5,7 @@ For fully detailed change log, please see the source repository directly. This is just a high-level summary. -### libopenmpt 0.7.7-pre +### libopenmpt 0.7.7 (2024-05-12) * [**Bug**] `examples/libopenmpt_example_c_pipe.c` and `libopenmpt/bindings/freebasic/libopenmpt_ext.bi` were missing from the Modified: branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.h ============================================================================== --- branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.h Sun May 12 13:12:20 2024 (r20800) +++ branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.h Sun May 12 13:17:13 2024 (r20801) @@ -23,9 +23,9 @@ /*! \brief libopenmpt patch version number */ #define OPENMPT_API_VERSION_PATCH 7 /*! \brief libopenmpt pre-release tag */ -#define OPENMPT_API_VERSION_PREREL "-pre.0" +#define OPENMPT_API_VERSION_PREREL "" /*! \brief libopenmpt pre-release flag */ -#define OPENMPT_API_VERSION_IS_PREREL 1 +#define OPENMPT_API_VERSION_IS_PREREL 0 /*! \brief libopenmpt version number as a single integer value * \since 0.3 Modified: branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.mk ============================================================================== --- branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.mk Sun May 12 13:12:20 2024 (r20800) +++ branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.mk Sun May 12 13:17:13 2024 (r20801) @@ -1,7 +1,7 @@ LIBOPENMPT_VERSION_MAJOR=0 LIBOPENMPT_VERSION_MINOR=7 LIBOPENMPT_VERSION_PATCH=7 -LIBOPENMPT_VERSION_PREREL=-pre.0 +LIBOPENMPT_VERSION_PREREL= LIBOPENMPT_LTVER_CURRENT=4 LIBOPENMPT_LTVER_REVISION=7 |
From: <sv...@op...> - 2024-05-12 11:17:22
|
Author: manx Date: Sun May 12 13:17:15 2024 New Revision: 20803 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20803 Log: [Mod] libopenmpt: Bump patch version. Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.h branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.mk Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md ============================================================================== --- branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sun May 12 13:17:15 2024 (r20802) +++ branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sun May 12 13:17:15 2024 (r20803) @@ -5,6 +5,8 @@ For fully detailed change log, please see the source repository directly. This is just a high-level summary. +### libopenmpt 0.7.8-pre + ### libopenmpt 0.7.7 (2024-05-12) * [**Bug**] `examples/libopenmpt_example_c_pipe.c` and Modified: branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.h ============================================================================== --- branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.h Sun May 12 13:17:15 2024 (r20802) +++ branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.h Sun May 12 13:17:15 2024 (r20803) @@ -21,11 +21,11 @@ /*! \brief libopenmpt minor version number */ #define OPENMPT_API_VERSION_MINOR 7 /*! \brief libopenmpt patch version number */ -#define OPENMPT_API_VERSION_PATCH 7 +#define OPENMPT_API_VERSION_PATCH 8 /*! \brief libopenmpt pre-release tag */ -#define OPENMPT_API_VERSION_PREREL "" +#define OPENMPT_API_VERSION_PREREL "-pre.0" /*! \brief libopenmpt pre-release flag */ -#define OPENMPT_API_VERSION_IS_PREREL 0 +#define OPENMPT_API_VERSION_IS_PREREL 1 /*! \brief libopenmpt version number as a single integer value * \since 0.3 Modified: branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.mk ============================================================================== --- branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.mk Sun May 12 13:17:15 2024 (r20802) +++ branches/OpenMPT-1.31/libopenmpt/libopenmpt_version.mk Sun May 12 13:17:15 2024 (r20803) @@ -1,8 +1,8 @@ LIBOPENMPT_VERSION_MAJOR=0 LIBOPENMPT_VERSION_MINOR=7 -LIBOPENMPT_VERSION_PATCH=7 -LIBOPENMPT_VERSION_PREREL= +LIBOPENMPT_VERSION_PATCH=8 +LIBOPENMPT_VERSION_PREREL=-pre.0 LIBOPENMPT_LTVER_CURRENT=4 -LIBOPENMPT_LTVER_REVISION=7 +LIBOPENMPT_LTVER_REVISION=8 LIBOPENMPT_LTVER_AGE=4 |
From: <sv...@op...> - 2024-05-12 11:17:21
|
Author: manx Date: Sun May 12 13:17:15 2024 New Revision: 20802 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20802 Log: tag libopenmpt-0.7.7 Added: tags/libopenmpt-0.7.7/ (props changed) - copied from r20801, branches/OpenMPT-1.31/ |
From: <sv...@op...> - 2024-05-12 11:12:27
|
Author: manx Date: Sun May 12 13:12:20 2024 New Revision: 20800 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20800 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md ============================================================================== --- branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sun May 12 13:07:25 2024 (r20799) +++ branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sun May 12 13:12:20 2024 (r20800) @@ -19,7 +19,7 @@ * [**Regression**]: Optimization level when compiling with GCC 14 has been forced down to `-O1` due to the severe miscompilation GCC 14 has shown on - MinGW-w64 amd64. + MinGW-w64 amd64 (see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115049>). * IT: Disable a few more compatibility flags for older SchismTracker builds. * IT: Halve the output volume of files saved with ChibiTracker, as its mixer |
From: <sv...@op...> - 2024-05-12 11:07:44
|
Author: manx Date: Sun May 12 13:07:25 2024 New Revision: 20799 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20799 Log: Merged revision(s) 20798 from trunk/OpenMPT: [Var] Link to <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115049>. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/common/BuildSettings.h branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp branches/OpenMPT-1.31/src/mpt/check/compiler.hpp Modified: branches/OpenMPT-1.31/common/BuildSettings.h ============================================================================== --- branches/OpenMPT-1.31/common/BuildSettings.h Sun May 12 13:06:52 2024 (r20798) +++ branches/OpenMPT-1.31/common/BuildSettings.h Sun May 12 13:07:25 2024 (r20799) @@ -391,6 +391,7 @@ #if MPT_COMPILER_GCC #ifdef MPT_COMPILER_QUIRK_GCC_NO_O2 +// See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115049>. #if defined(__OPTIMIZE__) #pragma GCC optimize("O1") #endif Modified: branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp ============================================================================== --- branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp Sun May 12 13:06:52 2024 (r20798) +++ branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp Sun May 12 13:07:25 2024 (r20799) @@ -21,7 +21,7 @@ #if MPT_GCC_AT_LEAST(14, 0, 0) && MPT_GCC_BEFORE(15, 0, 0) // GCC 14 causes severe miscompilation of inline functions. -// Link to bug report will follow. +// See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115049>. #if defined(__OPTIMIZE__) #define MPT_COMPILER_QUIRK_GCC_NO_O2 #endif Modified: branches/OpenMPT-1.31/src/mpt/check/compiler.hpp ============================================================================== --- branches/OpenMPT-1.31/src/mpt/check/compiler.hpp Sun May 12 13:06:52 2024 (r20798) +++ branches/OpenMPT-1.31/src/mpt/check/compiler.hpp Sun May 12 13:07:25 2024 (r20799) @@ -9,6 +9,7 @@ #ifndef MPT_CHECK_CXX_IGNORE_WARNING_O2 #if defined(MPT_COMPILER_QUIRK_GCC_NO_O2) +// See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115049>. MPT_WARNING("GCC 14 is known to cause severe miscompilation of inline functions. OpenMPT has forced optimization settings down to -O1. This comes at a roughly 15% performance cost. It is strongly recommended to stay with GCC 13 for the time being. You will need to edit the source to opt-out of this safety guard.") #endif #endif |
From: <sv...@op...> - 2024-05-12 11:07:04
|
Author: manx Date: Sun May 12 13:06:52 2024 New Revision: 20798 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20798 Log: [Var] Link to <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115049>. Modified: trunk/OpenMPT/common/BuildSettings.h trunk/OpenMPT/src/mpt/base/detect_quirks.hpp trunk/OpenMPT/src/mpt/check/compiler.hpp Modified: trunk/OpenMPT/common/BuildSettings.h ============================================================================== --- trunk/OpenMPT/common/BuildSettings.h Sun May 12 12:50:15 2024 (r20797) +++ trunk/OpenMPT/common/BuildSettings.h Sun May 12 13:06:52 2024 (r20798) @@ -391,6 +391,7 @@ #if MPT_COMPILER_GCC #ifdef MPT_COMPILER_QUIRK_GCC_NO_O2 +// See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115049>. #if defined(__OPTIMIZE__) #pragma GCC optimize("O1") #endif Modified: trunk/OpenMPT/src/mpt/base/detect_quirks.hpp ============================================================================== --- trunk/OpenMPT/src/mpt/base/detect_quirks.hpp Sun May 12 12:50:15 2024 (r20797) +++ trunk/OpenMPT/src/mpt/base/detect_quirks.hpp Sun May 12 13:06:52 2024 (r20798) @@ -21,7 +21,7 @@ #if MPT_GCC_AT_LEAST(14, 0, 0) && MPT_GCC_BEFORE(15, 0, 0) // GCC 14 causes severe miscompilation of inline functions. -// Link to bug report will follow. +// See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115049>. #if defined(__OPTIMIZE__) #define MPT_COMPILER_QUIRK_GCC_NO_O2 #endif Modified: trunk/OpenMPT/src/mpt/check/compiler.hpp ============================================================================== --- trunk/OpenMPT/src/mpt/check/compiler.hpp Sun May 12 12:50:15 2024 (r20797) +++ trunk/OpenMPT/src/mpt/check/compiler.hpp Sun May 12 13:06:52 2024 (r20798) @@ -9,6 +9,7 @@ #ifndef MPT_CHECK_CXX_IGNORE_WARNING_O2 #if defined(MPT_COMPILER_QUIRK_GCC_NO_O2) +// See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115049>. MPT_WARNING("GCC 14 is known to cause severe miscompilation of inline functions. OpenMPT has forced optimization settings down to -O1. This comes at a roughly 15% performance cost. It is strongly recommended to stay with GCC 13 for the time being. You will need to edit the source to opt-out of this safety guard.") #endif #endif |
From: <sv...@op...> - 2024-05-12 10:50:27
|
Author: sagamusix Date: Sun May 12 12:50:15 2024 New Revision: 20797 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20797 Log: Created tag for OpenMPT 1.31.07.00 Added: tags/1.31.07.00/ (props changed) - copied from r20796, branches/OpenMPT-1.31/ |
From: <sv...@op...> - 2024-05-12 10:48:52
|
Author: sagamusix Date: Sun May 12 12:48:37 2024 New Revision: 20796 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20796 Log: [Doc] Update release notes. [Mod] OpenMPT: Version is now 1.31.07.00 Modified: branches/OpenMPT-1.31/common/versionNumber.h branches/OpenMPT-1.31/packageTemplate/History.txt Modified: branches/OpenMPT-1.31/common/versionNumber.h ============================================================================== --- branches/OpenMPT-1.31/common/versionNumber.h Sun May 12 12:43:05 2024 (r20795) +++ branches/OpenMPT-1.31/common/versionNumber.h Sun May 12 12:48:37 2024 (r20796) @@ -17,7 +17,7 @@ // Version definitions. The only thing that needs to be changed when changing version number. #define VER_MAJORMAJOR 1 #define VER_MAJOR 31 -#define VER_MINOR 06 -#define VER_MINORMINOR 01 +#define VER_MINOR 07 +#define VER_MINORMINOR 00 OPENMPT_NAMESPACE_END Modified: branches/OpenMPT-1.31/packageTemplate/History.txt ============================================================================== --- branches/OpenMPT-1.31/packageTemplate/History.txt Sun May 12 12:43:05 2024 (r20795) +++ branches/OpenMPT-1.31/packageTemplate/History.txt Sun May 12 12:48:37 2024 (r20796) @@ -20,6 +20,7 @@ <sp> pelya / Sergiy Pylypenko [pelya] <tn> plastik_s / Trevor Nunes [plastik_s] Patch submitters: + <cs127> cs127 <cs> kode54 / Christopher Snowhill <da> Revenant / Devin Acker <ih> xaimus / Imran Hameed @@ -32,16 +33,60 @@ find our issue tracker and forums. +v1.31.07.00 (12 May 2024, revision 20796) +----------------------------------------- +Pattern tab +- [Fix] <js> Find & Replace: In the plugin parameter dropdown, parameter 999 was missing if the number of plugin parameters was unknown. + +Comments tab +- [Fix] <js> Sample / instrument name editing was broken since OpenMPT 1.31.01.00 (tx SoDa7). + +Playback +- [Fix] <js> The OPL emulation produced unwanted clicks with mix rates exceeding 65 kHz (http://bugs.openmpt.org/view.php?id=1775). +- [Fix] <js> MIDI macro command s didn't compute the correct checksum if a device ID was made up from two bytes (e.g. Roland XV-5080). + +IT +- [Imp] <js> Disable a few more compatibility flags for ITs made with older Schism Tracker versions (http://bugs.openmpt.org/view.php?id=1764). +- [Mod] <js> Halve the output volume of files saved with ChibiTracker, as its mixer is about half as loud as ours. + +XM +- [Imp] <js> Detect files saved with PlayerPRO. Improved detection of files saved with ModPlug Tracker. +- [Mod] <js> Files with impossibly small pattern headers are now rejected, like FastTracker 2 does. + +S3M +- [Imp] <js> Detect files saved with PlayerPRO. +- [Fix] <js> In mono mode, the ratio between sample and OPL volume was incorrect (http://bugs.openmpt.org/view.php?id=1774). + +MOD +- [Mod] <js> Changed VBlank timing heuristic to always assume CIA timing when long samples (unsupported by original ProTracker) are found. +- [Fix] <js> Disable NoiseTracker quirks if empty sample slots have a default volume other than 0 (http://bugs.openmpt.org/view.php?id=1765). +- [Fix] <js> 7-bit panning detection may have returned incorrect results for MODs with a channel count other than 4. + +Other formats +- [Imp] <js> STK: Loosen SoundTracker file rejection heuristics a bit to allow loading of files with overly long samples (romantic.stk) and malformed song titles (schmokk.mod, scramble_2.mod and others). Other heuristics has been tightened a bit. +- [Imp] <js> MED: Improve handling of default tempo, panning and channel volume in files containing more than one song (fixes sugar n spice.mmd3, https://www.un4seen.com/forum/?topic=15448.msg142659#msg142659). +- [Mod] <js> MO3: Further reduce maximum allowed music data (not samples) size from 2 GiB to 512 MiB. +- [Mod] <js> MDL: Slightly more accurate import of pattern command 9 (enabling envelopes instead of setting envelope position). +- [Fix] <cs127> ULT: Support the highest three octaves. + +Misc +- [Mod] <js> Channel Manager: Allow middle-click to open Quick Channel Settings for all formats. +- [Imp] <js> When auto-saving, display the currently saving module's filename in the status bar. +- [Fix] <js> Fixed possible crash when merging sequences. +- [Fix] <jh> It was possible that OpenMPT would crash on shutdown if an automatic update check was still running in the background (http://bugs.openmpt.org/view.php?id=1760). + +Bundled plugins +- [Fix] <js> When changing the output plugin from the LFO plugin's editor, the change was not reflected in the General tab. + +Third-Party Libraries +- [Imp] Update mpg123 (v1.32.6), opus (v1.5.2) + + v1.31.06.00 (24 March 2024, revision 20438) ------------------------------------------- Sample tab - [Imp] <js> Audio is no longer blocked while updating the GUI after pasting a sample. -VST / DMO Plugins -- [Mod] <js> The "Triangle" waveform in the Chorus / Flanger DMO plugins is now labelled "Square" instead to reflect its actual behaviour. -- [Fix] <js> There was a periodic click when playing a module using the Chorus or Flanger DMO plugin at a mix rate exceeding ~136.5 kHz (http://bugs.openmpt.org/view.php?id=1752). -- [Fix] <js> Since OpenMPT 1.29.13.00, the Distortion plugin sounded incorrect when using certain parameter combinations. - IT - [Fix] <js> In OpenMPT 1.31.05.00, MIDI macros in IT files made with older MPT versions were no longer working (http://bugs.openmpt.org/view.php?id=1753). @@ -52,10 +97,15 @@ Misc - [New] <js> Added two more octaves worth of note key assignments suitable for micro-tuning (http://bugs.openmpt.org/view.php?id=1727). -- [Fix] <js> File / sample sizes in the instrument browser and comments tab were displayed incorrectly if a file size less than 1024 bytes ended in 0. +- [Fix] <js> File / sample sizes in the instrument browser and comments tab were displayed incorrectly if a size less than 1024 bytes ended in 0. + +Bundled plugins +- [Mod] <js> The "Triangle" waveform in the Chorus / Flanger DMO plugins is now labelled "Square" instead to reflect its actual behaviour. +- [Fix] <js> There was a periodic click when playing a module using the Chorus or Flanger DMO plugin at a mix rate exceeding ~136.5 kHz (http://bugs.openmpt.org/view.php?id=1752). +- [Fix] <js> Since OpenMPT 1.29.13.00, the Distortion plugin sounded incorrect when using certain parameter combinations. Third-Party Libraries -- [Imp] Update ancient (2024-03-23). +- [Imp] Update ancient (2024-03-23) v1.31.05.00 (3 March 2024, revision 20196) @@ -1338,7 +1388,7 @@ - [Fix] <js> Fix an infinite loop in GamerMan by MrGamer by playing non-ProTracker MODs more like FT2 would (http://bugs.openmpt.org/view.php?id=1337). Other formats -- [Imp] <js> M15: Improve tracker detection heuristics to never assume SoundTracker 2.0 if there is a huge number of Dxx commands, as that is a definite hint that they should be treated as volume slides. Fixes Monty On The Run by Master Blaster. +- [Imp] <js> STK: Improve tracker detection heuristics to never assume SoundTracker 2.0 if there is a huge number of Dxx commands, as that is a definite hint that they should be treated as volume slides. Fixes Monty On The Run by Master Blaster. - [Imp] <js> MO3: Support OPL patches in MO3 files created from MPTM and S3M. - [Imp] <js> DBM: If a global pattern command would be lost because both effect commands in a cell would have to go into the regular effect column (e.g. a speed and a tempo command), the lost command is now attempted to be written into a different cell on the same row. Fixes "Party-Question V" by grogon (http://bugs.openmpt.org/view.php?id=1346). - [Imp] <js> STM: Try to import ST2 tempo more correctly. @@ -1459,7 +1509,7 @@ - [New] <js> Added character '.' to drawable letters for built-in fonts. IT -- [Mod] <js> Disable retrigger with short notes quirk for modules saved with Chibi Tracker, as it does not implement that quirk. +- [Mod] <js> Disable retrigger with short notes quirk for modules saved with ChibiTracker, as it does not implement that quirk. IT::Compatible Playback Mode - [Fix] <js> Instrument and sample panning no longer override channel panning for following notes (http://bugs.openmpt.org/view.php?id=1220). @@ -1708,7 +1758,7 @@ - [Fix] <js> Saving 16-bit stereo samples (which should be converted to 8-bit mono) was broken since OpenMPT 1.28.01.00. Other formats -- [Imp] <js> M15: SoundTracker default tempo is no longer rounded. +- [Imp] <js> STK: SoundTracker default tempo is no longer rounded. - [Fix] <js> MTM: Ignore unused Exy commands on import (http://bugs.openmpt.org/view.php?id=1204). - [Fix] <js> Startrekker: Clamp speed to 31 ticks per row (http://bugs.openmpt.org/view.php?id=1201). @@ -2140,7 +2190,7 @@ MOD - [New] <js> Support MOD files from the Inconexia demo by Iguana. -- [Mod] <jh & js> Tighten M15 and MOD file rejection heuristics. +- [Mod] <jh & js> Tighten STK and MOD file rejection heuristics. Other formats - [Fix] <js> J2B: Ignore frequency limits from file header. Fixes Medivo.j2b, broken since OpenMPT 1.26. @@ -2503,7 +2553,7 @@ Other formats - [Imp] <js> PT36: Enable VBlank timing as specified in file and read song comment (http://bugs.openmpt.org/view.php?id=962). -- [Imp] <js> M15: Loosen heuristics to allow a few more semi-damaged files to play. +- [Imp] <js> STK: Loosen heuristics to allow a few more semi-damaged files to play. - [Fix] <js> MT2: If there were instruments with both sample and plugin assignments, sample data was not read correctly. Module cleanup @@ -5335,7 +5385,7 @@ IT::Loading and Saving - [New] <js> Edit history information can now be read from and saved to IT / MPTM files. This is based on an undocumented feature in Impulse Tracker. Use View -> Edit History for viewing or deleting this information. - [Imp] <js> Autovibrato sweep is now fixed when loading IT files made with old versions of (Open)MPT. -- [Imp] <js> IT files made with ModPlug Tracker 1.00a5 are now also detected as such. Since long patterns can also be created in other trackers (e.g. Chibi), long patterns are not used to identify files made with MPT anymore. +- [Imp] <js> IT files made with ModPlug Tracker 1.00a5 are now also detected as such. Since long patterns can also be created in other trackers (e.g. ChibiTracker), long patterns are not used to identify files made with MPT anymore. - [Mod] <js> MIDI macros are now cleared when loading IT files made with old Impulse Tracker versions (< 2.14), so that Zxx commands won't break the songs anymore (fixes denonde.it, fix from Schism Tracker). - [Mod] <js> Sane values are used again for the "cwtv" and "cmwt" header fields when saving IT files; in fact the same values as in compatibility export are used. To be able to distinguish between raped and compatibility-exported IT files, "OMPT" is written in the "reserved" header field. As a consequence, IT files made with OpenMPT can now be loaded in Impulse Tracker again. - [Fix] <js> Note mapping items that aren't notes (e.g. empty notes) are now ignored when loading and saving. |
From: <sv...@op...> - 2024-05-12 10:43:11
|
Author: sagamusix Date: Sun May 12 12:43:05 2024 New Revision: 20795 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20795 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.28/libopenmpt/dox/changelog.md Modified: branches/OpenMPT-1.28/libopenmpt/dox/changelog.md ============================================================================== --- branches/OpenMPT-1.28/libopenmpt/dox/changelog.md Sun May 12 12:42:59 2024 (r20794) +++ branches/OpenMPT-1.28/libopenmpt/dox/changelog.md Sun May 12 12:43:05 2024 (r20795) @@ -14,6 +14,15 @@ * [**Regression**] GCC 14 or later is unsupported on libopenmpt 0.4. Please use libopenmpt 0.7 or later. + * XM: Files with impossibly small pattern headers are now rejected, like + FastTracker 2 does. + * MO3: Reduced maximum allowed music data (not samples) size from 2 GiB to + 512 MiB. + * MDL: Slightly more accurate import of pattern command 9 (enabling envelopes + instead of setting envelope position). + * OPL emulation could produce clicks when using a mix rate higher than + 65536 Hz. + * mpg123: Update to v1.32.6 (2024-04-04). ### libopenmpt 0.4.41 (2024-03-24) @@ -366,7 +375,7 @@ * S3M: Support old-style sample pre-amp value in very early S3M files. * S3M: Only force-enable fast slides for files ST 3.00. Previously, any S3M file made with an ST3 version older than 3.20 enabled them. - * M15: Improve tracker detection heuristics to never assume SoundTracker 2.0 + * STK: Improve tracker detection heuristics to never assume SoundTracker 2.0 if there is a huge number of Dxx commands, as that is a definite hint that they should be treated as volume slides. Fixes Monty On The Run by Master Blaster. @@ -635,7 +644,7 @@ * XM: Do not default recall volume / panning for delayed instrument-less notes * XM :E60 loop bug was not considered in song length calucation. * S3M: Notes without instrument number use previous note's sample offset. - * Tighten M15 and MOD file rejection heuristics. + * Tighten STK and MOD file rejection heuristics. * J2B: Ignore frequency limits from file header. Fixes Medivo.j2b, broken since libopenmpt-0.2.6401-beta17. * STM: More accurate tempo calculation. @@ -823,7 +832,7 @@ malformed STM files to load which were previously rejected. * Detect whether "hidden" patterns in the order list of SoundTracker modules should be taken into account or not. - * Tighten heuristics for rejecting invalid 669, M15, MOD and ICE files and + * Tighten heuristics for rejecting invalid 669, STK, MOD and ICE files and loosen them in other places to allow some valid MOD files to load. * Improvements to seeking: Channel panning was not always updated from instruments / samples when seeking, and out-of-range global volume was not |
From: <sv...@op...> - 2024-05-12 10:43:11
|
Author: sagamusix Date: Sun May 12 12:42:59 2024 New Revision: 20794 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20794 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.29/libopenmpt/dox/changelog.md Modified: branches/OpenMPT-1.29/libopenmpt/dox/changelog.md ============================================================================== --- branches/OpenMPT-1.29/libopenmpt/dox/changelog.md Sun May 12 12:42:54 2024 (r20793) +++ branches/OpenMPT-1.29/libopenmpt/dox/changelog.md Sun May 12 12:42:59 2024 (r20794) @@ -14,8 +14,18 @@ * [**Regression**] GCC 14 or later is unsupported on libopenmpt 0.5. Please use libopenmpt 0.7 or later. - * M15: Loosen SoundTracker file rejection heuristics a bit to allow loading of - schmokk.mod and scramble_2.mod. Other heuristics has been tightened a bit. + * S3M: In mono mode, the ratio between sample and OPL volume was incorrect. + * XM: Files with impossibly small pattern headers are now rejected, like + FastTracker 2 does. + * STK: Loosen SoundTracker file rejection heuristics a bit to allow loading of + files with malformed song titles and overly long samples. + Other heuristics has been tightened a bit. + * MO3: Reduced maximum allowed music data (not samples) size from 2 GiB to + 512 MiB. + * MDL: Slightly more accurate import of pattern command 9 (enabling envelopes + instead of setting envelope position). + * OPL emulation could produce clicks when using a mix rate higher than + 65536 Hz. * mpg123: Update to v1.32.6 (2024-04-04). @@ -491,7 +501,7 @@ sample slot has sample data. * MOD: Fix an infinite loop in GamerMan by MrGamer by playing non-ProTracker MODs more like FT2 would. - * M15: Improve tracker detection heuristics to never assume SoundTracker 2.0 + * STK: Improve tracker detection heuristics to never assume SoundTracker 2.0 if there is a huge number of Dxx commands, as that is a definite hint that they should be treated as volume slides. Fixes Monty On The Run by Master Blaster. @@ -734,7 +744,7 @@ * XM: Do not default recall volume / panning for delayed instrument-less notes * XM :E60 loop bug was not considered in song length calucation. * S3M: Notes without instrument number use previous note's sample offset. - * Tighten M15 and MOD file rejection heuristics. + * Tighten STK and MOD file rejection heuristics. * J2B: Ignore frequency limits from file header. Fixes Medivo.j2b, broken since libopenmpt-0.2.6401-beta17. * STM: More accurate tempo calculation. @@ -922,7 +932,7 @@ malformed STM files to load which were previously rejected. * Detect whether "hidden" patterns in the order list of SoundTracker modules should be taken into account or not. - * Tighten heuristics for rejecting invalid 669, M15, MOD and ICE files and + * Tighten heuristics for rejecting invalid 669, STK, MOD and ICE files and loosen them in other places to allow some valid MOD files to load. * Improvements to seeking: Channel panning was not always updated from instruments / samples when seeking, and out-of-range global volume was not |
From: <sv...@op...> - 2024-05-12 10:43:06
|
Author: sagamusix Date: Sun May 12 12:42:54 2024 New Revision: 20793 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20793 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.30/libopenmpt/dox/changelog.md Modified: branches/OpenMPT-1.30/libopenmpt/dox/changelog.md ============================================================================== --- branches/OpenMPT-1.30/libopenmpt/dox/changelog.md Sun May 12 12:42:48 2024 (r20792) +++ branches/OpenMPT-1.30/libopenmpt/dox/changelog.md Sun May 12 12:42:54 2024 (r20793) @@ -14,8 +14,18 @@ * [**Regression**] GCC 14 or later is unsupported on libopenmpt 0.6. Please use libopenmpt 0.7 or later. - * M15: Loosen SoundTracker file rejection heuristics a bit to allow loading of - schmokk.mod and scramble_2.mod. Other heuristics has been tightened a bit. + * S3M: In mono mode, the ratio between sample and OPL volume was incorrect. + * XM: Files with impossibly small pattern headers are now rejected, like + FastTracker 2 does. + * STK: Loosen SoundTracker file rejection heuristics a bit to allow loading of + files with malformed song titles and overly long samples. + Other heuristics has been tightened a bit. + * MO3: Reduced maximum allowed music data (not samples) size from 2 GiB to + 512 MiB. + * MDL: Slightly more accurate import of pattern command 9 (enabling envelopes + instead of setting envelope position). + * OPL emulation could produce clicks when using a mix rate higher than + 65536 Hz. * mpg123: Update to v1.32.6 (2024-04-04). @@ -606,7 +616,7 @@ * XM: Do not default recall volume / panning for delayed instrument-less notes * XM :E60 loop bug was not considered in song length calucation. * S3M: Notes without instrument number use previous note's sample offset. - * Tighten M15 and MOD file rejection heuristics. + * Tighten STK and MOD file rejection heuristics. * J2B: Ignore frequency limits from file header. Fixes Medivo.j2b, broken since libopenmpt-0.2.6401-beta17. * STM: More accurate tempo calculation. @@ -794,7 +804,7 @@ malformed STM files to load which were previously rejected. * Detect whether "hidden" patterns in the order list of SoundTracker modules should be taken into account or not. - * Tighten heuristics for rejecting invalid 669, M15, MOD and ICE files and + * Tighten heuristics for rejecting invalid 669, STK, MOD and ICE files and loosen them in other places to allow some valid MOD files to load. * Improvements to seeking: Channel panning was not always updated from instruments / samples when seeking, and out-of-range global volume was not |
From: <sv...@op...> - 2024-05-12 10:43:00
|
Author: sagamusix Date: Sun May 12 12:42:48 2024 New Revision: 20792 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20792 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md ============================================================================== --- branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sun May 12 10:30:07 2024 (r20791) +++ branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sun May 12 12:42:48 2024 (r20792) @@ -21,8 +21,18 @@ forced down to `-O1` due to the severe miscompilation GCC 14 has shown on MinGW-w64 amd64. - * M15: Loosen SoundTracker file rejection heuristics a bit to allow loading of - schmokk.mod and scramble_2.mod. Other heuristics has been tightened a bit. + * IT: Disable a few more compatibility flags for older SchismTracker builds. + * IT: Halve the output volume of files saved with ChibiTracker, as its mixer + * is about half as loud as ours. + * S3M: In mono mode, the ratio between sample and OPL volume was incorrect. + * S3M: Detect files saved with PlayerPRO. + * XM: Detect files saved with PlayerPRO. Improved detection of files saved + with ModPlug Tracker. + * XM: Files with impossibly small pattern headers are now rejected, like + FastTracker 2 does. + * STK: Loosen SoundTracker file rejection heuristics a bit to allow loading of + files with malformed song titles and overly long samples. + Other heuristics has been tightened a bit. * MOD: Change VBlank timing heuristic to always assume CIA timing when long samples unsupported by original ProTracker) are found. * MOD: Disable NoiseTracker quirks if empty sample slots have a default volume @@ -31,6 +41,17 @@ with a channel count other than 4. * MED: Improve handling of default tempo, panning and channel volume in files containing more than one song. + * MO3: Reduced maximum allowed music data (not samples) size from 2 GiB to + 512 MiB. + * XMF: Header validation is now stricter. + * MDL: Slightly more accurate import of pattern command 9 (enabling envelopes + instead of setting envelope position). + * ULT: Support the highest three octaves. + * OPL emulation could produce clicks when using a mix rate higher than + 65536 Hz. + + * xmp-openmpt: Subsongs whose length could not be calculate no longer show a + duration of -12:-55. * mpg123: Update to v1.32.6 (2024-04-04). @@ -638,7 +659,7 @@ * XM: Do not default recall volume / panning for delayed instrument-less notes * XM :E60 loop bug was not considered in song length calucation. * S3M: Notes without instrument number use previous note's sample offset. - * Tighten M15 and MOD file rejection heuristics. + * Tighten STK and MOD file rejection heuristics. * J2B: Ignore frequency limits from file header. Fixes Medivo.j2b, broken since libopenmpt-0.2.6401-beta17. * STM: More accurate tempo calculation. @@ -826,7 +847,7 @@ malformed STM files to load which were previously rejected. * Detect whether "hidden" patterns in the order list of SoundTracker modules should be taken into account or not. - * Tighten heuristics for rejecting invalid 669, M15, MOD and ICE files and + * Tighten heuristics for rejecting invalid 669, STK, MOD and ICE files and loosen them in other places to allow some valid MOD files to load. * Improvements to seeking: Channel panning was not always updated from instruments / samples when seeking, and out-of-range global volume was not |
From: <sv...@op...> - 2024-05-12 08:30:14
|
Author: manx Date: Sun May 12 10:30:07 2024 New Revision: 20791 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20791 Log: [Reg] build: CI: GitHub: MSYS2: Remove MSYS2 builders from libopenmpt 0.6 because we do not support GCC 14 on this branch any more. Deleted: branches/OpenMPT-1.30/.github/workflows/MSYS2-Autotools.yml branches/OpenMPT-1.30/.github/workflows/MSYS2-Makefile-Clang.yml branches/OpenMPT-1.30/.github/workflows/MSYS2-Makefile.yml |
From: <sv...@op...> - 2024-05-11 23:27:58
|
Author: sagamusix Date: Sun May 12 01:27:46 2024 New Revision: 20790 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20790 Log: [Fix] IT compatibility: When triggering an empty instrument note slot, completely ignore the pattern cell - do not reset the currently playing instrument's envelopes (fixes wayfinder's Jet Rider), and also don't process any effects - including global ones. Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/soundlib/Snd_defs.h trunk/OpenMPT/soundlib/Snd_fx.cpp trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/UpgradeModule.cpp Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp Sat May 11 23:50:47 2024 (r20789) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp Sun May 12 01:27:46 2024 (r20790) @@ -710,6 +710,7 @@ case kITInitialNoteMemory: desc = _T("Initial Last Note Memory of each channel is C-0 instead of No Note"); break; case kPluginDefaultProgramAndBank1: desc = _T("Assume initial plugin MIDI program and bank number is 1"); break; case kITNoSustainOnPortamento: desc = _T("Portamento after note-off does not re-enable sample sustain loop"); break; + case kITEmptyNoteMapSlotIgnoreCell: desc = _T("Ignore pattern cell completely when trying to play unmapped instrument note"); break; default: MPT_ASSERT_NOTREACHED(); } Modified: trunk/OpenMPT/soundlib/Snd_defs.h ============================================================================== --- trunk/OpenMPT/soundlib/Snd_defs.h Sat May 11 23:50:47 2024 (r20789) +++ trunk/OpenMPT/soundlib/Snd_defs.h Sun May 12 01:27:46 2024 (r20790) @@ -566,6 +566,7 @@ kITInitialNoteMemory, // Initial "last note memory" for each channel is C-0 and not "no note" kPluginDefaultProgramAndBank1, // Default program and bank is set to 1 for plugins, so if an instrument is set to either of those, the program / bank change event is not sent to the plugin kITNoSustainOnPortamento, // Do not re-enable sustain loop on portamento, even when switching between samples + kITEmptyNoteMapSlotIgnoreCell, // IT ignores the entire pattern cell when trying to play an unmapped note of an instrument // Add new play behaviours here. Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp Sat May 11 23:50:47 2024 (r20789) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp Sun May 12 01:27:46 2024 (r20790) @@ -2889,7 +2889,25 @@ if(ModCommand::IsNote(note)) { chn.nNewNote = chn.nLastNote = note; + } + // IT compatibility: Empty sample mapping + // This is probably the single biggest WTF replayer bug in Impulse Tracker. + // In instrument mode, when an note + instrument is triggered that does not map to any sample, the entire cell (including potentially present global effects!) + // is ignored. Even better, if on a following row another instrument number (this time without a note) is encountered, we end up in the same situation! + // Test cases: NoMap.it, NoMapEffects.it + if(m_playBehaviour[kITEmptyNoteMapSlotIgnoreCell] && instr > 0 && instr <= GetNumInstruments() + && Instruments[instr] != nullptr + && ModCommand::IsNote(chn.nNewNote) && Instruments[instr]->Keyboard[chn.nNewNote - NOTE_MIN] == 0 + && !Instruments[instr]->HasValidMIDIChannel()) + { + chn.nNewIns = static_cast<ModCommand::INSTR>(instr); + chn.ClearRowCmd(); + continue; + } + + if(ModCommand::IsNote(note)) + { // New Note Action ? if(!bPorta) { Modified: trunk/OpenMPT/soundlib/Sndfile.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp Sat May 11 23:50:47 2024 (r20789) +++ trunk/OpenMPT/soundlib/Sndfile.cpp Sun May 12 01:27:46 2024 (r20790) @@ -1183,6 +1183,7 @@ playBehaviour.set(kITResetFilterOnPortaSmpChange); playBehaviour.set(kITInitialNoteMemory); playBehaviour.set(kITNoSustainOnPortamento); + playBehaviour.set(kITEmptyNoteMapSlotIgnoreCell); break; case MOD_TYPE_XM: Modified: trunk/OpenMPT/soundlib/UpgradeModule.cpp ============================================================================== --- trunk/OpenMPT/soundlib/UpgradeModule.cpp Sat May 11 23:50:47 2024 (r20789) +++ trunk/OpenMPT/soundlib/UpgradeModule.cpp Sun May 12 01:27:46 2024 (r20790) @@ -597,6 +597,7 @@ { kITResetFilterOnPortaSmpChange, MPT_V("1.30.08.02") }, { kITInitialNoteMemory, MPT_V("1.31.00.25") }, { kITNoSustainOnPortamento, MPT_V("1.32.00.13") }, + { kITEmptyNoteMapSlotIgnoreCell, MPT_V("1.32.00.13") }, }; for(const auto &b : behaviours) |
From: <sv...@op...> - 2024-05-11 21:50:58
|
Author: manx Date: Sat May 11 23:50:47 2024 New Revision: 20789 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20789 Log: [Doc/Reg] libopenmpt: Document GCC 14 as unsupported. Modified: branches/OpenMPT-1.28/libopenmpt/dox/changelog.md branches/OpenMPT-1.28/libopenmpt/dox/dependencies.md Modified: branches/OpenMPT-1.28/libopenmpt/dox/changelog.md ============================================================================== --- branches/OpenMPT-1.28/libopenmpt/dox/changelog.md Sat May 11 23:50:39 2024 (r20788) +++ branches/OpenMPT-1.28/libopenmpt/dox/changelog.md Sat May 11 23:50:47 2024 (r20789) @@ -11,6 +11,9 @@ `libopenmpt/bindings/freebasic/libopenmpt_ext.bi` were missing from the Autotools package. + * [**Regression**] GCC 14 or later is unsupported on libopenmpt 0.4. Please + use libopenmpt 0.7 or later. + * mpg123: Update to v1.32.6 (2024-04-04). ### libopenmpt 0.4.41 (2024-03-24) Modified: branches/OpenMPT-1.28/libopenmpt/dox/dependencies.md ============================================================================== --- branches/OpenMPT-1.28/libopenmpt/dox/dependencies.md Sat May 11 23:50:39 2024 (r20788) +++ branches/OpenMPT-1.28/libopenmpt/dox/dependencies.md Sat May 11 23:50:47 2024 (r20789) @@ -11,13 +11,13 @@ * Supported compilers for building libopenmpt: * **Microsoft Visual Studio 2015** or higher, running on a x86-64 build system (other target systems are supported) - * **GCC 4.8** or higher + * **GCC 4.8** up to **GCC 13.x** * **Clang 3.6** or higher - * **MinGW-W64 4.8** or higher (it is recommended to preferably use - posix threading model as opposed to win32 threading model, or at least - have mingw-std-threads available otherwise) + * **MinGW-W64 4.8** up to **GCC 13.x** (it is recommended to preferably + use posix threading model as opposed to win32 threading model, or at + least have mingw-std-threads available otherwise) * **emscripten 1.38.5** or higher - * **DJGPP GCC 7.2** or higher + * **DJGPP GCC 7.2** up to **GCC 13.x** * any other **C++11 compliant** compiler (full standard compliant mode is known to work with GCC >= 5.1 and Clang) |
From: <sv...@op...> - 2024-05-11 21:50:46
|
Author: manx Date: Sat May 11 23:50:39 2024 New Revision: 20788 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20788 Log: [Doc/Reg] libopenmpt: Document GCC 14 as unsupported. Modified: branches/OpenMPT-1.29/libopenmpt/dox/changelog.md branches/OpenMPT-1.29/libopenmpt/dox/dependencies.md Modified: branches/OpenMPT-1.29/libopenmpt/dox/changelog.md ============================================================================== --- branches/OpenMPT-1.29/libopenmpt/dox/changelog.md Sat May 11 23:50:32 2024 (r20787) +++ branches/OpenMPT-1.29/libopenmpt/dox/changelog.md Sat May 11 23:50:39 2024 (r20788) @@ -11,6 +11,9 @@ `libopenmpt/bindings/freebasic/libopenmpt_ext.bi` were missing from the Autotools package. + * [**Regression**] GCC 14 or later is unsupported on libopenmpt 0.5. Please + use libopenmpt 0.7 or later. + * M15: Loosen SoundTracker file rejection heuristics a bit to allow loading of schmokk.mod and scramble_2.mod. Other heuristics has been tightened a bit. Modified: branches/OpenMPT-1.29/libopenmpt/dox/dependencies.md ============================================================================== --- branches/OpenMPT-1.29/libopenmpt/dox/dependencies.md Sat May 11 23:50:32 2024 (r20787) +++ branches/OpenMPT-1.29/libopenmpt/dox/dependencies.md Sat May 11 23:50:39 2024 (r20788) @@ -11,13 +11,13 @@ * Supported compilers for building libopenmpt: * **Microsoft Visual Studio 2017** or higher, running on a x86-64 build system (other target systems are supported) - * **GCC 7.1** or higher + * **GCC 7.1** up to **GCC 13.x** * **Clang 5** or higher - * **MinGW-W64 7.1** or higher (it is recommended to preferably use - posix threading model as opposed to win32 threading model, or at least - have mingw-std-threads available otherwise) + * **MinGW-W64 7.1** up to **GCC 13.x** (it is recommended to preferably + use posix threading model as opposed to win32 threading model, or at + least have mingw-std-threads available otherwise) * **emscripten 1.39.1** or higher - * **DJGPP GCC 7.2** or higher + * **DJGPP GCC 7.2** up to **GCC 13.x** * any other **C++17 compliant** compiler libopenmpt makes the following assumptions about the C++ implementation |
From: <sv...@op...> - 2024-05-11 21:50:44
|
Author: manx Date: Sat May 11 23:50:32 2024 New Revision: 20787 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20787 Log: [Doc/Reg] libopenmpt: Document GCC 14 as unsupported. Modified: branches/OpenMPT-1.30/libopenmpt/dox/changelog.md branches/OpenMPT-1.30/libopenmpt/dox/dependencies.md Modified: branches/OpenMPT-1.30/libopenmpt/dox/changelog.md ============================================================================== --- branches/OpenMPT-1.30/libopenmpt/dox/changelog.md Sat May 11 23:45:15 2024 (r20786) +++ branches/OpenMPT-1.30/libopenmpt/dox/changelog.md Sat May 11 23:50:32 2024 (r20787) @@ -11,6 +11,9 @@ `libopenmpt/bindings/freebasic/libopenmpt_ext.bi` were missing from the Autotools package. + * [**Regression**] GCC 14 or later is unsupported on libopenmpt 0.6. Please + use libopenmpt 0.7 or later. + * M15: Loosen SoundTracker file rejection heuristics a bit to allow loading of schmokk.mod and scramble_2.mod. Other heuristics has been tightened a bit. Modified: branches/OpenMPT-1.30/libopenmpt/dox/dependencies.md ============================================================================== --- branches/OpenMPT-1.30/libopenmpt/dox/dependencies.md Sat May 11 23:45:15 2024 (r20786) +++ branches/OpenMPT-1.30/libopenmpt/dox/dependencies.md Sat May 11 23:50:32 2024 (r20787) @@ -20,12 +20,12 @@ headers and implementation, which significantly increases the matrix of possible configurations to test. - * **GCC 8.1** or higher + * **GCC 8.1** up to **GCC 13.x** * **Clang 7** or higher - * **MinGW-W64 8.1** or higher (it is recommended to preferably use - posix threading model as opposed to win32 threading model) + * **MinGW-W64 8.1** up to **GCC 13.x** (it is recommended to preferably + use posix threading model as opposed to win32 threading model) * **emscripten 1.39.1** or higher - * **DJGPP GCC 8.1** or higher + * **DJGPP GCC 8.1** up to **GCC 13.x** * any other **C++17 compliant** compiler libopenmpt makes the following assumptions about the C++ implementation |
From: <sv...@op...> - 2024-05-11 21:45:22
|
Author: manx Date: Sat May 11 23:45:15 2024 New Revision: 20786 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20786 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md ============================================================================== --- branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sat May 11 23:42:51 2024 (r20785) +++ branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sat May 11 23:45:15 2024 (r20786) @@ -17,6 +17,10 @@ * [**Change**] `build/download_externals.sh` now verifies the integrity of any downloaded files and uses curl instead of wget. + * [**Regression**]: Optimization level when compiling with GCC 14 has been + forced down to `-O1` due to the severe miscompilation GCC 14 has shown on + MinGW-w64 amd64. + * M15: Loosen SoundTracker file rejection heuristics a bit to allow loading of schmokk.mod and scramble_2.mod. Other heuristics has been tightened a bit. * MOD: Change VBlank timing heuristic to always assume CIA timing when long |
From: <sv...@op...> - 2024-05-11 21:43:02
|
Author: manx Date: Sat May 11 23:42:51 2024 New Revision: 20785 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20785 Log: Merged revision(s) 20767 from trunk/OpenMPT: [Fix/Reg] Force optimization down to -O1 when building with GCC 14. GCC 14 has shown severe miscompilation of inline functions that has caused the test suite to crash on MinGW-w64 amd64 builds. This is a drastic safety measure until GCC fixes their bug. The performance impact is roughly ~15%. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/common/BuildSettings.h branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp branches/OpenMPT-1.31/src/mpt/check/compiler.hpp Modified: branches/OpenMPT-1.31/common/BuildSettings.h ============================================================================== --- branches/OpenMPT-1.31/common/BuildSettings.h Sat May 11 23:41:55 2024 (r20784) +++ branches/OpenMPT-1.31/common/BuildSettings.h Sat May 11 23:42:51 2024 (r20785) @@ -388,6 +388,16 @@ #endif // MPT_COMPILER_MSVC +#if MPT_COMPILER_GCC + +#ifdef MPT_COMPILER_QUIRK_GCC_NO_O2 +#if defined(__OPTIMIZE__) +#pragma GCC optimize("O1") +#endif +#endif // MPT_COMPILER_QUIRK_GCC_NO_O2 + +#endif // MPT_COMPILER_GCC + #if MPT_COMPILER_CLANG #if defined(MPT_BUILD_MSVC) Modified: branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp ============================================================================== --- branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp Sat May 11 23:41:55 2024 (r20784) +++ branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp Sat May 11 23:42:51 2024 (r20785) @@ -19,6 +19,16 @@ +#if MPT_GCC_AT_LEAST(14, 0, 0) && MPT_GCC_BEFORE(15, 0, 0) +// GCC 14 causes severe miscompilation of inline functions. +// Link to bug report will follow. +#if defined(__OPTIMIZE__) +#define MPT_COMPILER_QUIRK_GCC_NO_O2 +#endif +#endif + + + #if MPT_COMPILER_MSVC #if !defined(_MSVC_TRADITIONAL) #define MPT_COMPILER_QUIRK_MSVC_OLD_PREPROCESSOR Modified: branches/OpenMPT-1.31/src/mpt/check/compiler.hpp ============================================================================== --- branches/OpenMPT-1.31/src/mpt/check/compiler.hpp Sat May 11 23:41:55 2024 (r20784) +++ branches/OpenMPT-1.31/src/mpt/check/compiler.hpp Sat May 11 23:42:51 2024 (r20785) @@ -7,6 +7,12 @@ #include "mpt/base/detect_quirks.hpp" #include "mpt/base/compiletime_warning.hpp" +#ifndef MPT_CHECK_CXX_IGNORE_WARNING_O2 +#if defined(MPT_COMPILER_QUIRK_GCC_NO_O2) +MPT_WARNING("GCC 14 is known to cause severe miscompilation of inline functions. OpenMPT has forced optimization settings down to -O1. This comes at a roughly 15% performance cost. It is strongly recommended to stay with GCC 13 for the time being. You will need to edit the source to opt-out of this safety guard.") +#endif +#endif + #ifndef MPT_CHECK_CXX_IGNORE_PREPROCESSOR #if defined(MPT_COMPILER_QUIRK_MSVC_OLD_PREPROCESSOR) MPT_WARNING("C++ preprocessor is not standard conformings.") |
From: <sv...@op...> - 2024-05-11 21:42:02
|
Author: manx Date: Sat May 11 23:41:55 2024 New Revision: 20784 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20784 Log: Merged revision(s) 20783 from trunk/OpenMPT: [Mod] build: CI: Fedora: Makefile: Disable STRICT due to GCC 14 warning. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/.github/workflows/Fedora-Makefile.yml Modified: branches/OpenMPT-1.31/.github/workflows/Fedora-Makefile.yml ============================================================================== --- branches/OpenMPT-1.31/.github/workflows/Fedora-Makefile.yml Sat May 11 23:39:21 2024 (r20783) +++ branches/OpenMPT-1.31/.github/workflows/Fedora-Makefile.yml Sat May 11 23:41:55 2024 (r20784) @@ -32,6 +32,6 @@ # https://github.com/actions/runner/issues/2033 run: chown -R $(id -u):$(id -g) $(pwd) - name: Build - run: make -j$(nproc) STRICT=1 VERBOSE=1 ${{ (matrix.deps == 'sys') && 'AUTO_DEPS=1' || (matrix.deps == 'local') && 'LOCAL_ZLIB=1 LOCAL_MPG123=1 LOCAL_OGG=1 LOCAL_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' || 'NO_ZLIB=1 NO_MPG123=1 NO_OGG=1 NO_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' }} + run: make -j$(nproc) VERBOSE=1 ${{ (matrix.deps == 'sys') && 'AUTO_DEPS=1' || (matrix.deps == 'local') && 'LOCAL_ZLIB=1 LOCAL_MPG123=1 LOCAL_OGG=1 LOCAL_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' || 'NO_ZLIB=1 NO_MPG123=1 NO_OGG=1 NO_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' }} - name: Test - run: make -j$(nproc) STRICT=1 VERBOSE=1 ${{ (matrix.deps == 'sys') && 'AUTO_DEPS=1' || (matrix.deps == 'local') && 'LOCAL_ZLIB=1 LOCAL_MPG123=1 LOCAL_OGG=1 LOCAL_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' || 'NO_ZLIB=1 NO_MPG123=1 NO_OGG=1 NO_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' }} check + run: make -j$(nproc) VERBOSE=1 ${{ (matrix.deps == 'sys') && 'AUTO_DEPS=1' || (matrix.deps == 'local') && 'LOCAL_ZLIB=1 LOCAL_MPG123=1 LOCAL_OGG=1 LOCAL_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' || 'NO_ZLIB=1 NO_MPG123=1 NO_OGG=1 NO_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' }} check |
From: <sv...@op...> - 2024-05-11 21:39:33
|
Author: manx Date: Sat May 11 23:39:21 2024 New Revision: 20783 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20783 Log: [Mod] build: CI: Fedora: Makefile: Disable STRICT due to GCC 14 warning. Modified: trunk/OpenMPT/.github/workflows/Fedora-Makefile.yml Modified: trunk/OpenMPT/.github/workflows/Fedora-Makefile.yml ============================================================================== --- trunk/OpenMPT/.github/workflows/Fedora-Makefile.yml Sat May 11 23:37:18 2024 (r20782) +++ trunk/OpenMPT/.github/workflows/Fedora-Makefile.yml Sat May 11 23:39:21 2024 (r20783) @@ -34,6 +34,6 @@ # https://github.com/actions/runner/issues/2033 run: chown -R $(id -u):$(id -g) $(pwd) - name: Build - run: make -j$(nproc) STRICT=1 VERBOSE=1 ${{ (matrix.deps == 'sys') && 'AUTO_DEPS=1' || (matrix.deps == 'local') && 'LOCAL_ZLIB=1 LOCAL_MPG123=1 LOCAL_OGG=1 LOCAL_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' || 'NO_ZLIB=1 NO_MPG123=1 NO_OGG=1 NO_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' }} + run: make -j$(nproc) VERBOSE=1 ${{ (matrix.deps == 'sys') && 'AUTO_DEPS=1' || (matrix.deps == 'local') && 'LOCAL_ZLIB=1 LOCAL_MPG123=1 LOCAL_OGG=1 LOCAL_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' || 'NO_ZLIB=1 NO_MPG123=1 NO_OGG=1 NO_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' }} - name: Test - run: make -j$(nproc) STRICT=1 VERBOSE=1 ${{ (matrix.deps == 'sys') && 'AUTO_DEPS=1' || (matrix.deps == 'local') && 'LOCAL_ZLIB=1 LOCAL_MPG123=1 LOCAL_OGG=1 LOCAL_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' || 'NO_ZLIB=1 NO_MPG123=1 NO_OGG=1 NO_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' }} check + run: make -j$(nproc) VERBOSE=1 ${{ (matrix.deps == 'sys') && 'AUTO_DEPS=1' || (matrix.deps == 'local') && 'LOCAL_ZLIB=1 LOCAL_MPG123=1 LOCAL_OGG=1 LOCAL_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' || 'NO_ZLIB=1 NO_MPG123=1 NO_OGG=1 NO_VORBIS=1 NO_PORTAUDIO=1 NO_PORTAUDIOCPP=1 NO_PULSEAUDIO=1 NO_SDL2=1 NO_FLAC=1 NO_SNDFILE=1' }} check |
From: <sv...@op...> - 2024-05-11 21:37:30
|
Author: sagamusix Date: Sat May 11 23:37:18 2024 New Revision: 20782 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20782 Log: Merged revision(s) 20780 from branches/OpenMPT-1.31: Merged revision(s) 20736 from trunk/OpenMPT: [Imp] STK: Allow romantic.stk to load, which has a sample longer than 74KB. [Imp] STK: Also allow files to load that have garbage in the song title, but whose sample names are properly null-terminated non-empty ASCII strings. Fixes STK.Sharks-NewIntro. ........ ........ Modified: branches/OpenMPT-1.29/ (props changed) branches/OpenMPT-1.29/soundlib/Load_mod.cpp Modified: branches/OpenMPT-1.29/soundlib/Load_mod.cpp ============================================================================== --- branches/OpenMPT-1.29/soundlib/Load_mod.cpp Sat May 11 23:36:49 2024 (r20781) +++ branches/OpenMPT-1.29/soundlib/Load_mod.cpp Sat May 11 23:37:18 2024 (r20782) @@ -1348,6 +1348,34 @@ } +enum class NameClassification +{ + Empty, + ValidASCII, + Invalid, +}; + +// Check if a name is a valid null-terminated ASCII string with no garbage after the null terminator, or if it's empty +static NameClassification ClassifyName(const mpt::span<const char> name) noexcept +{ + bool foundNull = false, foundNormal = false; + for(auto c : name) + { + if(c > 0 && c < ' ') + return NameClassification::Invalid; + if(c == 0) + foundNull = true; + else if(foundNull) + return NameClassification::Invalid; + else + foundNormal = true; + } + if(!foundNull) + return NameClassification::Invalid; + return foundNormal ? NameClassification::ValidASCII : NameClassification::Empty; +} + + // We'll have to do some heuristic checks to find out whether this is an old Ultimate Soundtracker module // or if it was made with the newer Soundtracker versions. // Thanks for Fraggie for this information! (https://www.un4seen.com/forum/?topic=14471.msg100829#msg100829) @@ -1386,7 +1414,8 @@ SmpLength totalSampleLen = 0; uint8 allVolumes = 0; - uint8 diskNameCount = 0; + uint8 validNameCount = 0; + bool invalidNames = false; for(SAMPLEINDEX smp = 0; smp < 15; smp++) { @@ -1397,13 +1426,16 @@ // schmokk.mod has a non-zero value here but it should not be treated as finetune if(sampleHeader.finetune != 0) invalidChars += 16; - if(sampleHeader.HasDiskName()) - diskNameCount++; + if(const auto nameType = ClassifyName(sampleHeader.name); nameType == NameClassification::ValidASCII) + validNameCount++; + else if(nameType == NameClassification::Invalid) + invalidNames = true; // Sanity checks - invalid character count adjusted for ata.mod (MD5 937b79b54026fa73a1a4d3597c26eace, SHA1 3322ca62258adb9e0ae8e9afe6e0c29d39add874) + // Sample length adjusted for romantic.stk which has a (valid) sample of length 72222 if(invalidChars > 48 || sampleHeader.volume > 64 - || sampleHeader.length > 32768) + || sampleHeader.length > 37000) { return false; } @@ -1412,8 +1444,8 @@ allVolumes |= sampleHeader.volume; } - // scramble_2.mod has a lot of garbage in the song title, but it has lots of sample names starting with st-01, so we consider those to be more important than the garbage bytes. - if(invalidCharsInTitle > 5 && diskNameCount < 4) + // scramble_2.mod has a lot of garbage in the song title, but it has lots of properly-formatted sample names, so we consider those to be more important than the garbage bytes. + if(invalidCharsInTitle > 5 && (validNameCount < 4 || invalidNames)) { return false; } |
From: <sv...@op...> - 2024-05-11 21:37:01
|
Author: sagamusix Date: Sat May 11 23:36:49 2024 New Revision: 20781 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20781 Log: Merged revision(s) 20780 from branches/OpenMPT-1.31: Merged revision(s) 20736 from trunk/OpenMPT: [Imp] STK: Allow romantic.stk to load, which has a sample longer than 74KB. [Imp] STK: Also allow files to load that have garbage in the song title, but whose sample names are properly null-terminated non-empty ASCII strings. Fixes STK.Sharks-NewIntro. ........ ........ Modified: branches/OpenMPT-1.30/ (props changed) branches/OpenMPT-1.30/soundlib/Load_mod.cpp Modified: branches/OpenMPT-1.30/soundlib/Load_mod.cpp ============================================================================== --- branches/OpenMPT-1.30/soundlib/Load_mod.cpp Sat May 11 23:35:36 2024 (r20780) +++ branches/OpenMPT-1.30/soundlib/Load_mod.cpp Sat May 11 23:36:49 2024 (r20781) @@ -1355,6 +1355,34 @@ } +enum class NameClassification +{ + Empty, + ValidASCII, + Invalid, +}; + +// Check if a name is a valid null-terminated ASCII string with no garbage after the null terminator, or if it's empty +static NameClassification ClassifyName(const mpt::span<const char> name) noexcept +{ + bool foundNull = false, foundNormal = false; + for(auto c : name) + { + if(c > 0 && c < ' ') + return NameClassification::Invalid; + if(c == 0) + foundNull = true; + else if(foundNull) + return NameClassification::Invalid; + else + foundNormal = true; + } + if(!foundNull) + return NameClassification::Invalid; + return foundNormal ? NameClassification::ValidASCII : NameClassification::Empty; +} + + // We'll have to do some heuristic checks to find out whether this is an old Ultimate Soundtracker module // or if it was made with the newer Soundtracker versions. // Thanks for Fraggie for this information! (https://www.un4seen.com/forum/?topic=14471.msg100829#msg100829) @@ -1393,7 +1421,8 @@ SmpLength totalSampleLen = 0; uint8 allVolumes = 0; - uint8 diskNameCount = 0; + uint8 validNameCount = 0; + bool invalidNames = false; for(SAMPLEINDEX smp = 0; smp < 15; smp++) { @@ -1404,13 +1433,16 @@ // schmokk.mod has a non-zero value here but it should not be treated as finetune if(sampleHeader.finetune != 0) invalidChars += 16; - if(sampleHeader.HasDiskName()) - diskNameCount++; + if(const auto nameType = ClassifyName(sampleHeader.name); nameType == NameClassification::ValidASCII) + validNameCount++; + else if(nameType == NameClassification::Invalid) + invalidNames = true; // Sanity checks - invalid character count adjusted for ata.mod (MD5 937b79b54026fa73a1a4d3597c26eace, SHA1 3322ca62258adb9e0ae8e9afe6e0c29d39add874) + // Sample length adjusted for romantic.stk which has a (valid) sample of length 72222 if(invalidChars > 48 || sampleHeader.volume > 64 - || sampleHeader.length > 32768) + || sampleHeader.length > 37000) { return false; } @@ -1419,8 +1451,8 @@ allVolumes |= sampleHeader.volume; } - // scramble_2.mod has a lot of garbage in the song title, but it has lots of sample names starting with st-01, so we consider those to be more important than the garbage bytes. - if(invalidCharsInTitle > 5 && diskNameCount < 4) + // scramble_2.mod has a lot of garbage in the song title, but it has lots of properly-formatted sample names, so we consider those to be more important than the garbage bytes. + if(invalidCharsInTitle > 5 && (validNameCount < 4 || invalidNames)) { return false; } |