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
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@op...> - 2024-10-20 13:06:02
|
Author: manx Date: Sun Oct 20 15:05:51 2024 New Revision: 21893 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21893 Log: [Imp] build: premake: PluginBridge: Enable building ARM64EC bridge. Modified: trunk/OpenMPT/build/premake/mpt-PluginBridge.lua Modified: trunk/OpenMPT/build/premake/mpt-PluginBridge.lua ============================================================================== --- trunk/OpenMPT/build/premake/mpt-PluginBridge.lua Sun Oct 20 15:04:15 2024 (r21892) +++ trunk/OpenMPT/build/premake/mpt-PluginBridge.lua Sun Oct 20 15:05:51 2024 (r21893) @@ -60,6 +60,8 @@ targetsuffix "-arm" filter { "architecture:ARM64" } targetsuffix "-arm64" + filter { "architecture:ARM64EC" } + targetsuffix "-arm64ec" project "PluginBridgeLegacy" uuid "BDEC2D44-C957-4940-A32B-02824AF6E21D" @@ -133,10 +135,14 @@ targetsuffix "-arm" filter { "architecture:ARM64" } targetsuffix "-arm64" + filter { "architecture:ARM64EC" } + targetsuffix "-arm64ec" filter {} filter {} filter { "action:vs*", "architecture:x86_64" } linkoptions { "/HIGHENTROPYVA:NO" } filter { "action:vs*", "architecture:ARM64" } linkoptions { "/HIGHENTROPYVA:NO" } + filter { "action:vs*", "architecture:ARM64EC" } + linkoptions { "/HIGHENTROPYVA:NO" } filter {} |
From: <sv...@op...> - 2024-10-20 13:04:27
|
Author: manx Date: Sun Oct 20 15:04:15 2024 New Revision: 21892 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21892 Log: [Imp] build: premake: Add project defaults for ARM64EC. Modified: trunk/OpenMPT/build/premake/premake-defaults.lua Modified: trunk/OpenMPT/build/premake/premake-defaults.lua ============================================================================== --- trunk/OpenMPT/build/premake/premake-defaults.lua Sun Oct 20 15:00:56 2024 (r21891) +++ trunk/OpenMPT/build/premake/premake-defaults.lua Sun Oct 20 15:04:15 2024 (r21892) @@ -20,6 +20,9 @@ filter { "platforms:arm64" } system "Windows" architecture "ARM64" + filter { "platforms:arm64ec" } + system "Windows" + architecture "ARM64EC" filter {} function mpt_kind(mykind) @@ -155,6 +158,8 @@ resdefines { "VER_ARCHNAME=\"arm\"" } filter { "action:vs*", "architecture:ARM64" } resdefines { "VER_ARCHNAME=\"arm64\"" } + filter { "action:vs*", "architecture:ARM64EC" } + resdefines { "VER_ARCHNAME=\"arm64ec\"" } filter {} filter { "kind:StaticLib" } @@ -209,15 +214,31 @@ targetdir ( "../../bin/release/" .. _ACTION .. "-" .. mpt_bindirsuffix .. "-static/arm64" ) filter { "kind:not StaticLib", "configurations:ReleaseShared", "architecture:ARM64" } targetdir ( "../../bin/release/" .. _ACTION .. "-" .. mpt_bindirsuffix .. "-shared/arm64" ) + filter { "kind:not StaticLib", "configurations:Debug", "architecture:ARM64EC" } + targetdir ( "../../bin/debug/" .. _ACTION .. "-" .. mpt_bindirsuffix .. "-static/arm64ec" ) + filter { "kind:not StaticLib", "configurations:DebugShared", "architecture:ARM64EC" } + targetdir ( "../../bin/debug/" .. _ACTION .. "-" .. mpt_bindirsuffix .. "-shared/arm64ec" ) + filter { "kind:not StaticLib", "configurations:Checked", "architecture:ARM64EC" } + targetdir ( "../../bin/checked/" .. _ACTION .. "-" .. mpt_bindirsuffix .. "-static/arm64ec" ) + filter { "kind:not StaticLib", "configurations:CheckedShared", "architecture:ARM64EC" } + targetdir ( "../../bin/checked/" .. _ACTION .. "-" .. mpt_bindirsuffix .. "-shared/arm64ec" ) + filter { "kind:not StaticLib", "configurations:Release", "architecture:ARM64EC" } + targetdir ( "../../bin/release/" .. _ACTION .. "-" .. mpt_bindirsuffix .. "-static/arm64ec" ) + filter { "kind:not StaticLib", "configurations:ReleaseShared", "architecture:ARM64EC" } + targetdir ( "../../bin/release/" .. _ACTION .. "-" .. mpt_bindirsuffix .. "-shared/arm64ec" ) filter { "configurations:Debug", "architecture:ARM" } editandcontinue "Off" filter { "configurations:Debug", "architecture:ARM64" } editandcontinue "Off" + filter { "configurations:Debug", "architecture:ARM64EC" } + editandcontinue "Off" filter { "configurations:DebugShared", "architecture:ARM" } editandcontinue "Off" filter { "configurations:DebugShared", "architecture:ARM64" } editandcontinue "Off" + filter { "configurations:DebugShared", "architecture:ARM64EC" } + editandcontinue "Off" filter { "configurations:Debug" } defines { "DEBUG" } @@ -226,7 +247,9 @@ symbols "On" filter { "configurations:Debug", "architecture:ARM64" } symbols "On" - filter { "configurations:Debug", "architecture:not ARM", "architecture:not ARM64" } + filter { "configurations:Debug", "architecture:ARM64EC" } + symbols "On" + filter { "configurations:Debug", "architecture:not ARM", "architecture:not ARM64", "architecture:not ARM64EC" } symbols "FastLink" filter { "configurations:Debug" } if _OPTIONS["windows-family"] ~= "uwp" then @@ -406,6 +429,9 @@ filter { "architecture:ARM64" } defines { "NTDDI_VERSION=0x0A00000C" } -- Windows 10 21H2 Build 19044 filter {} + filter { "architecture:ARM64EC" } + defines { "NTDDI_VERSION=0x0A00000E" } -- Windows 11 Build 22000 + filter {} elseif _OPTIONS["windows-version"] == "win81" then filter {} defines { "_WIN32_WINNT=0x0603" } |
From: <sv...@op...> - 2024-10-20 13:01:09
|
Author: manx Date: Sun Oct 20 15:00:56 2024 New Revision: 21891 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21891 Log: Merged revision(s) 21890 from trunk/OpenMPT: [Fix] Vorbis: Fix ARM64EC build. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/include/vorbis/OpenMPT.txt branches/OpenMPT-1.31/include/vorbis/lib/os.h Modified: branches/OpenMPT-1.31/include/vorbis/OpenMPT.txt ============================================================================== --- branches/OpenMPT-1.31/include/vorbis/OpenMPT.txt Sun Oct 20 15:00:34 2024 (r21890) +++ branches/OpenMPT-1.31/include/vorbis/OpenMPT.txt Sun Oct 20 15:00:56 2024 (r21891) @@ -5,6 +5,7 @@ - https://github.com/xiph/vorbis/pull/100 and https://github.com/xiph/vorbis/pull/101 have been applied. - GCC warnings in lib/lpc.c and lib/psy.c have been silenced. +- os.h has been modified to build for ARM64EC. - All modifications have been marked with /* OpenMPT */. - For building, premake is used to generate Visual Studio project files. See ../build/premake/ for details. Modified: branches/OpenMPT-1.31/include/vorbis/lib/os.h ============================================================================== --- branches/OpenMPT-1.31/include/vorbis/lib/os.h Sun Oct 20 15:00:34 2024 (r21890) +++ branches/OpenMPT-1.31/include/vorbis/lib/os.h Sun Oct 20 15:00:56 2024 (r21891) @@ -151,6 +151,7 @@ typedef ogg_int16_t vorbis_fpu_control; +#include <intrin.h> /* OpenMPT */ #include <emmintrin.h> static __inline int vorbis_ftoi(double f){ return _mm_cvtsd_si32(_mm_load_sd(&f)); |
From: <sv...@op...> - 2024-10-20 13:00:44
|
Author: manx Date: Sun Oct 20 15:00:34 2024 New Revision: 21890 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21890 Log: [Fix] Vorbis: Fix ARM64EC build. Modified: trunk/OpenMPT/include/vorbis/OpenMPT.txt trunk/OpenMPT/include/vorbis/lib/os.h Modified: trunk/OpenMPT/include/vorbis/OpenMPT.txt ============================================================================== --- trunk/OpenMPT/include/vorbis/OpenMPT.txt Sun Oct 20 15:00:01 2024 (r21889) +++ trunk/OpenMPT/include/vorbis/OpenMPT.txt Sun Oct 20 15:00:34 2024 (r21890) @@ -5,6 +5,7 @@ - https://github.com/xiph/vorbis/pull/100 and https://github.com/xiph/vorbis/pull/101 have been applied. - GCC warnings in lib/lpc.c and lib/psy.c have been silenced. +- os.h has been modified to build for ARM64EC. - All modifications have been marked with /* OpenMPT */. - For building, premake is used to generate Visual Studio project files. See ../build/premake/ for details. Modified: trunk/OpenMPT/include/vorbis/lib/os.h ============================================================================== --- trunk/OpenMPT/include/vorbis/lib/os.h Sun Oct 20 15:00:01 2024 (r21889) +++ trunk/OpenMPT/include/vorbis/lib/os.h Sun Oct 20 15:00:34 2024 (r21890) @@ -151,6 +151,7 @@ typedef ogg_int16_t vorbis_fpu_control; +#include <intrin.h> /* OpenMPT */ #include <emmintrin.h> static __inline int vorbis_ftoi(double f){ return _mm_cvtsd_si32(_mm_load_sd(&f)); |
From: <sv...@op...> - 2024-10-20 13:00:08
|
Author: manx Date: Sun Oct 20 15:00:01 2024 New Revision: 21889 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21889 Log: Merged revision(s) 21888 from trunk/OpenMPT: [Fix] MSVC ARM64EC requires including advanced intrinsics headers via <intrin.h> and not directly. Improve code compatibility in case we should ever enable SSE2 on ARM64EC. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/sounddsp/EQ.cpp branches/OpenMPT-1.31/sounddsp/Reverb.cpp branches/OpenMPT-1.31/tracklib/SampleEdit.cpp Modified: branches/OpenMPT-1.31/sounddsp/EQ.cpp ============================================================================== --- branches/OpenMPT-1.31/sounddsp/EQ.cpp Sun Oct 20 14:59:32 2024 (r21888) +++ branches/OpenMPT-1.31/sounddsp/EQ.cpp Sun Oct 20 15:00:01 2024 (r21889) @@ -31,6 +31,9 @@ #include <cstddef> #if defined(MPT_ENABLE_ARCH_INTRINSICS_SSE) +#if MPT_COMPILER_MSVC +#include <intrin.h> +#endif #include <xmmintrin.h> #endif Modified: branches/OpenMPT-1.31/sounddsp/Reverb.cpp ============================================================================== --- branches/OpenMPT-1.31/sounddsp/Reverb.cpp Sun Oct 20 14:59:32 2024 (r21888) +++ branches/OpenMPT-1.31/sounddsp/Reverb.cpp Sun Oct 20 15:00:01 2024 (r21889) @@ -20,6 +20,9 @@ #include "mpt/base/numbers.hpp" #if defined(MPT_ENABLE_ARCH_INTRINSICS_SSE2) +#if MPT_COMPILER_MSVC +#include <intrin.h> +#endif #include <emmintrin.h> #endif Modified: branches/OpenMPT-1.31/tracklib/SampleEdit.cpp ============================================================================== --- branches/OpenMPT-1.31/tracklib/SampleEdit.cpp Sun Oct 20 14:59:32 2024 (r21888) +++ branches/OpenMPT-1.31/tracklib/SampleEdit.cpp Sun Oct 20 15:00:01 2024 (r21889) @@ -23,6 +23,9 @@ #include "../include/r8brain/CDSPResampler.h" #if defined(MPT_ENABLE_ARCH_INTRINSICS_SSE2) +#if MPT_COMPILER_MSVC +#include <intrin.h> +#endif #include <emmintrin.h> #endif |
From: <sv...@op...> - 2024-10-20 12:59:44
|
Author: manx Date: Sun Oct 20 14:59:32 2024 New Revision: 21888 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21888 Log: [Fix] MSVC ARM64EC requires including advanced intrinsics headers via <intrin.h> and not directly. Improve code compatibility in case we should ever enable SSE2 on ARM64EC. Modified: trunk/OpenMPT/sounddsp/EQ.cpp trunk/OpenMPT/sounddsp/Reverb.cpp trunk/OpenMPT/tracklib/SampleEdit.cpp Modified: trunk/OpenMPT/sounddsp/EQ.cpp ============================================================================== --- trunk/OpenMPT/sounddsp/EQ.cpp Sun Oct 20 14:57:24 2024 (r21887) +++ trunk/OpenMPT/sounddsp/EQ.cpp Sun Oct 20 14:59:32 2024 (r21888) @@ -31,6 +31,9 @@ #include <cstddef> #if defined(MPT_ENABLE_ARCH_INTRINSICS_SSE) +#if MPT_COMPILER_MSVC +#include <intrin.h> +#endif #include <xmmintrin.h> #endif Modified: trunk/OpenMPT/sounddsp/Reverb.cpp ============================================================================== --- trunk/OpenMPT/sounddsp/Reverb.cpp Sun Oct 20 14:57:24 2024 (r21887) +++ trunk/OpenMPT/sounddsp/Reverb.cpp Sun Oct 20 14:59:32 2024 (r21888) @@ -20,6 +20,9 @@ #include "mpt/base/numbers.hpp" #if defined(MPT_ENABLE_ARCH_INTRINSICS_SSE2) +#if MPT_COMPILER_MSVC +#include <intrin.h> +#endif #include <emmintrin.h> #endif Modified: trunk/OpenMPT/tracklib/SampleEdit.cpp ============================================================================== --- trunk/OpenMPT/tracklib/SampleEdit.cpp Sun Oct 20 14:57:24 2024 (r21887) +++ trunk/OpenMPT/tracklib/SampleEdit.cpp Sun Oct 20 14:59:32 2024 (r21888) @@ -31,6 +31,9 @@ #endif // MPT_COMPILER_MSVC #if defined(MPT_ENABLE_ARCH_INTRINSICS_SSE2) +#if MPT_COMPILER_MSVC +#include <intrin.h> +#endif #include <emmintrin.h> #endif |
From: <sv...@op...> - 2024-10-20 12:57:35
|
Author: manx Date: Sun Oct 20 14:57:24 2024 New Revision: 21887 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21887 Log: Merged revision(s) 21885 from trunk/OpenMPT: [Fix] mptBaseUtils.h: Use __emul and related intrinsics only on x86 and amd64. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/common/mptBaseUtils.h Modified: branches/OpenMPT-1.31/common/mptBaseUtils.h ============================================================================== --- branches/OpenMPT-1.31/common/mptBaseUtils.h Sun Oct 20 14:56:57 2024 (r21886) +++ branches/OpenMPT-1.31/common/mptBaseUtils.h Sun Oct 20 14:57:24 2024 (r21887) @@ -18,6 +18,8 @@ #include "mpt/base/array.hpp" #include "mpt/base/bit.hpp" #include "mpt/base/constexpr_throw.hpp" +#include "mpt/base/detect_arch.hpp" +#include "mpt/base/detect_compiler.hpp" #include "mpt/base/math.hpp" #include "mpt/base/memory.hpp" #include "mpt/base/numeric.hpp" @@ -115,7 +117,7 @@ // MSVC generates unnecessarily complicated code for the unoptimized variant using _allmul. MPT_CONSTEXPR20_FUN int64 mul32to64(int32 a, int32 b) { - #if MPT_COMPILER_MSVC && (defined(_M_IX86) || defined(_M_X64)) + #if MPT_COMPILER_MSVC && (MPT_ARCH_X86 || MPT_ARCH_AMD64) MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { return static_cast<int64>(a) * b; @@ -130,7 +132,7 @@ MPT_CONSTEXPR20_FUN uint64 mul32to64_unsigned(uint32 a, uint32 b) { - #if MPT_COMPILER_MSVC && (defined(_M_IX86) || defined(_M_X64)) + #if MPT_COMPILER_MSVC && (MPT_ARCH_X86 || MPT_ARCH_AMD64) MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { return static_cast<uint64>(a) * b; |
From: <sv...@op...> - 2024-10-20 12:57:09
|
Author: manx Date: Sun Oct 20 14:56:57 2024 New Revision: 21886 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21886 Log: Merged revision(s) 21884 from trunk/OpenMPT: [Fix] BuildSettings: Do not use x86 intrinsics on ARM64EC. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/common/BuildSettings.h Modified: branches/OpenMPT-1.31/common/BuildSettings.h ============================================================================== --- branches/OpenMPT-1.31/common/BuildSettings.h Sun Oct 20 14:56:35 2024 (r21885) +++ branches/OpenMPT-1.31/common/BuildSettings.h Sun Oct 20 14:56:57 2024 (r21886) @@ -16,6 +16,7 @@ +#include "mpt/base/detect_arch.hpp" #include "mpt/base/detect_compiler.hpp" #include "mpt/base/detect_os.hpp" #include "mpt/base/detect_quirks.hpp" @@ -225,14 +226,14 @@ #endif #if defined(MPT_ENABLE_ARCH_INTRINSICS) -#if MPT_COMPILER_MSVC && defined(_M_IX86) +#if MPT_COMPILER_MSVC && MPT_ARCH_X86 #define MPT_ENABLE_ARCH_X86 #define MPT_ENABLE_ARCH_INTRINSICS_SSE #define MPT_ENABLE_ARCH_INTRINSICS_SSE2 -#elif MPT_COMPILER_MSVC && defined(_M_X64) +#elif MPT_COMPILER_MSVC && MPT_ARCH_AMD64 #define MPT_ENABLE_ARCH_AMD64 |
From: <sv...@op...> - 2024-10-20 12:56:47
|
Author: manx Date: Sun Oct 20 14:56:35 2024 New Revision: 21885 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21885 Log: [Fix] mptBaseUtils.h: Use __emul and related intrinsics only on x86 and amd64. Modified: trunk/OpenMPT/common/mptBaseUtils.h Modified: trunk/OpenMPT/common/mptBaseUtils.h ============================================================================== --- trunk/OpenMPT/common/mptBaseUtils.h Sun Oct 20 14:55:21 2024 (r21884) +++ trunk/OpenMPT/common/mptBaseUtils.h Sun Oct 20 14:56:35 2024 (r21885) @@ -18,6 +18,8 @@ #include "mpt/base/array.hpp" #include "mpt/base/bit.hpp" #include "mpt/base/constexpr_throw.hpp" +#include "mpt/base/detect_arch.hpp" +#include "mpt/base/detect_compiler.hpp" #include "mpt/base/math.hpp" #include "mpt/base/memory.hpp" #include "mpt/base/numeric.hpp" @@ -115,7 +117,7 @@ // MSVC generates unnecessarily complicated code for the unoptimized variant using _allmul. MPT_CONSTEXPR20_FUN int64 mul32to64(int32 a, int32 b) { - #if MPT_COMPILER_MSVC && (defined(_M_IX86) || defined(_M_X64)) + #if MPT_COMPILER_MSVC && (MPT_ARCH_X86 || MPT_ARCH_AMD64) MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { return static_cast<int64>(a) * b; @@ -130,7 +132,7 @@ MPT_CONSTEXPR20_FUN uint64 mul32to64_unsigned(uint32 a, uint32 b) { - #if MPT_COMPILER_MSVC && (defined(_M_IX86) || defined(_M_X64)) + #if MPT_COMPILER_MSVC && (MPT_ARCH_X86 || MPT_ARCH_AMD64) MPT_MAYBE_CONSTANT_IF(MPT_IS_CONSTANT_EVALUATED20()) { return static_cast<uint64>(a) * b; |
From: <sv...@op...> - 2024-10-20 12:55:33
|
Author: manx Date: Sun Oct 20 14:55:21 2024 New Revision: 21884 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21884 Log: [Fix] BuildSettings: Do not use x86 intrinsics on ARM64EC. Modified: trunk/OpenMPT/common/BuildSettings.h Modified: trunk/OpenMPT/common/BuildSettings.h ============================================================================== --- trunk/OpenMPT/common/BuildSettings.h Sun Oct 20 14:52:58 2024 (r21883) +++ trunk/OpenMPT/common/BuildSettings.h Sun Oct 20 14:55:21 2024 (r21884) @@ -16,6 +16,7 @@ +#include "mpt/base/detect_arch.hpp" #include "mpt/base/detect_compiler.hpp" #include "mpt/base/detect_os.hpp" #include "mpt/base/detect_quirks.hpp" @@ -229,14 +230,14 @@ #endif #if defined(MPT_ENABLE_ARCH_INTRINSICS) -#if MPT_COMPILER_MSVC && defined(_M_IX86) +#if MPT_COMPILER_MSVC && MPT_ARCH_X86 #define MPT_ENABLE_ARCH_X86 #define MPT_ENABLE_ARCH_INTRINSICS_SSE #define MPT_ENABLE_ARCH_INTRINSICS_SSE2 -#elif MPT_COMPILER_MSVC && defined(_M_X64) +#elif MPT_COMPILER_MSVC && MPT_ARCH_AMD64 #define MPT_ENABLE_ARCH_AMD64 |
From: <sv...@op...> - 2024-10-20 12:53:09
|
Author: manx Date: Sun Oct 20 14:52:58 2024 New Revision: 21883 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21883 Log: Merged revision(s) 21882 from trunk/OpenMPT: [Fix] mpt/base/detect_arch.hpp: Fix detecting ARM64EC. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/src/mpt/base/detect_arch.hpp Modified: branches/OpenMPT-1.31/src/mpt/base/detect_arch.hpp ============================================================================== --- branches/OpenMPT-1.31/src/mpt/base/detect_arch.hpp Sun Oct 20 14:52:30 2024 (r21882) +++ branches/OpenMPT-1.31/src/mpt/base/detect_arch.hpp Sun Oct 20 14:52:58 2024 (r21883) @@ -25,7 +25,7 @@ -#if defined(_M_ARM64) +#if defined(_M_ARM64) || defined(_M_ARM64EC) #define MPT_ARCH_AARCH64 1 #elif defined(_M_ARM) |
From: <sv...@op...> - 2024-10-20 12:52:42
|
Author: manx Date: Sun Oct 20 14:52:30 2024 New Revision: 21882 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21882 Log: [Fix] mpt/base/detect_arch.hpp: Fix detecting ARM64EC. Modified: trunk/OpenMPT/src/mpt/base/detect_arch.hpp Modified: trunk/OpenMPT/src/mpt/base/detect_arch.hpp ============================================================================== --- trunk/OpenMPT/src/mpt/base/detect_arch.hpp Sun Oct 20 14:48:58 2024 (r21881) +++ trunk/OpenMPT/src/mpt/base/detect_arch.hpp Sun Oct 20 14:52:30 2024 (r21882) @@ -25,7 +25,7 @@ -#if defined(_M_ARM64) +#if defined(_M_ARM64) || defined(_M_ARM64EC) #define MPT_ARCH_AARCH64 1 #elif defined(_M_ARM) |
From: <sv...@op...> - 2024-10-20 12:49:10
|
Author: manx Date: Sun Oct 20 14:48:58 2024 New Revision: 21881 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21881 Log: [Var] Update gitignore. Modified: branches/OpenMPT-1.31/.gitignore Modified: branches/OpenMPT-1.31/.gitignore ============================================================================== --- branches/OpenMPT-1.31/.gitignore Sun Oct 20 14:48:40 2024 (r21880) +++ branches/OpenMPT-1.31/.gitignore Sun Oct 20 14:48:58 2024 (r21881) @@ -681,6 +681,7 @@ /include/premake/build/vs2019/.vs /include/premake/build/vs2019/bin /include/premake/build/vs2019/obj +/include/premake/build/vs2022/.vs /include/premake/build/vs2022/bin /include/premake/build/vs2022/obj /include/pugixml/CMakeLists.txt |
From: <sv...@op...> - 2024-10-20 12:48:51
|
Author: manx Date: Sun Oct 20 14:48:40 2024 New Revision: 21880 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21880 Log: [Var] Update gitignore. Modified: trunk/OpenMPT/.gitignore Modified: trunk/OpenMPT/.gitignore ============================================================================== --- trunk/OpenMPT/.gitignore Sun Oct 20 14:47:39 2024 (r21879) +++ trunk/OpenMPT/.gitignore Sun Oct 20 14:48:40 2024 (r21880) @@ -676,6 +676,7 @@ /include/premake/build/vs2019/.vs /include/premake/build/vs2019/bin /include/premake/build/vs2019/obj +/include/premake/build/vs2022/.vs /include/premake/build/vs2022/bin /include/premake/build/vs2022/obj /include/pugixml/CMakeLists.txt |
From: <sv...@op...> - 2024-10-20 12:47:45
|
Author: manx Date: Sun Oct 20 14:47:39 2024 New Revision: 21879 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21879 Log: Merged revision(s) 21878 from trunk/OpenMPT: [Fix] premake: Set svn:ignore. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/include/premake/build/vs2022/ (props changed) |
From: <sv...@op...> - 2024-10-20 12:46:57
|
Author: manx Date: Sun Oct 20 14:46:51 2024 New Revision: 21878 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21878 Log: [Fix] premake: Set svn:ignore. Modified: trunk/OpenMPT/include/premake/build/vs2022/ (props changed) |
From: <sv...@op...> - 2024-10-20 12:46:00
|
Author: manx Date: Sun Oct 20 14:45:48 2024 New Revision: 21877 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21877 Log: [Imp] build: premake: Add ARM64EC support. Modified: trunk/OpenMPT/build/premake/premake.lua Modified: trunk/OpenMPT/build/premake/premake.lua ============================================================================== --- trunk/OpenMPT/build/premake/premake.lua Sun Oct 20 14:43:07 2024 (r21876) +++ trunk/OpenMPT/build/premake/premake.lua Sun Oct 20 14:45:48 2024 (r21877) @@ -67,6 +67,56 @@ +premake.ARM64EC = "ARM64EC" + +premake.api.unregister("architecture") + +premake.api.register { + name = "architecture", + scope = "config", + kind = "string", + allowed = { + "universal", + premake.X86, + premake.X86_64, + premake.ARM, + premake.ARM64, + premake.ARM64EC, + }, + aliases = { + i386 = premake.X86, + amd64 = premake.X86_64, + x32 = premake.X86, + x64 = premake.X86_64, + }, +} + +premake.vstudio.vs200x_architectures = +{ + win32 = "x86", + x86 = "x86", + x86_64 = "x64", + ARM = "ARM", + ARM64 = "ARM64", + ARM64EC = "ARM64EC", +} + +function premake.vstudio.vc2010.windowsSDKDesktopARM64ECSupport(cfg) + if cfg.system == premake.WINDOWS then + if cfg.architecture == premake.ARM64EC then + premake.w('<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>') + end + end +end + +premake.override(premake.vstudio.vc2010.elements, "configurationProperties", function(base, prj) + local calls = base(prj) + table.insertafter(calls, premake.vstudio.vc2010.windowsSDKDesktopARMSupport, premake.vstudio.vc2010.windowsSDKDesktopARM64ECSupport) + return calls +end) + + + premake.api.register { name = "spectremitigations", scope = "config", |
From: <sv...@op...> - 2024-10-20 12:43:14
|
Author: sagamusix Date: Sun Oct 20 14:43:07 2024 New Revision: 21876 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21876 Log: [Doc] Update libopenmpt changelog. Modified: trunk/OpenMPT/doc/libopenmpt/changelog.md Modified: trunk/OpenMPT/doc/libopenmpt/changelog.md ============================================================================== --- trunk/OpenMPT/doc/libopenmpt/changelog.md Sun Oct 20 14:35:14 2024 (r21875) +++ trunk/OpenMPT/doc/libopenmpt/changelog.md Sun Oct 20 14:43:07 2024 (r21876) @@ -16,6 +16,7 @@ * [**New**] Can now read Images Music System (`IMS`) modules. * [**New**] Can now read ChipTracker (`MOD`) modules. * [**New**] Can now read EasyTrax (`ETX`) modules. + * [**New**] Can now load UNIC Tracker v1 (`UNIC`) files. * [**New**] MED: Synthesized and hybrid instruments are now supported. * [**New**] GT2: Better support for old "envelopes", in particular adding support for the previously missing tremor / tremolo / vibrato. @@ -67,13 +68,18 @@ * IT: Various plaback fixes. * XM: If key-off is reached before auto-vibrato reaches full depth, the depth is reset. + * S3M: Combined slides (Kxy / Lxy) are no longer run on the first tick of a + row in files made with Scream Tracker. + * MOD: Groo's "The Ultimate Beeper" now plays like in ProTracker. * DTM: Portamentos are now also evaluated on the first tick of the row. * MO3: If multiple sample slots shared the same Ogg Vorbis sample, only one sample slot was loaded. * MED: Tempo parameters > 255 BPM were not imported properly if the files was imported as MOD instead of XM. + * SymMOD: Files containing more than 127 channels are no longer rejected. * Better support for automatic slide commands (commands that keep sliding on following rows) in various formats. + * The pattern channel limit was raised from 127 to 192 for some formats. * xmp-openmpt: Memory consumption during file loading has been reduced. |
From: <sv...@op...> - 2024-10-20 12:35:26
|
Author: sagamusix Date: Sun Oct 20 14:35:14 2024 New Revision: 21875 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21875 Log: Merged revision(s) 21825, 21854 from trunk/OpenMPT: [Mod] SymMOD: Ignore unknown hunks, as that's what Symphonie does as well. Fixes reading of Natsh1.SymMOD, which has garbage at the end of the file. ........ [Imp] SymMOD: When running out of Zxx macros, try to find the closest macro to use instead. Fixes files like ocean view.symmod with tons of filter sweeps. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_symmod.cpp Modified: branches/OpenMPT-1.31/soundlib/Load_symmod.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_symmod.cpp Sun Oct 20 14:33:28 2024 (r21874) +++ branches/OpenMPT-1.31/soundlib/Load_symmod.cpp Sun Oct 20 14:35:14 2024 (r21875) @@ -980,6 +980,30 @@ } +static uint8 MapToClosestMidiMacro(const SymEvent event, std::map<SymEvent, uint8> ¯oMap) +{ + if(event.command == SymEvent::DSPDelay) + return 0; + uint8 bestMatch = 0; + uint32 bestDistance = uint32_max; + for(const auto &m : macroMap) + { + const auto &mapEvent = m.first; + if(event.command != mapEvent.command || event.note != mapEvent.note) + continue; + const uint32 diff1 = static_cast<uint32>(event.param) - mapEvent.param, diff2 = static_cast<uint32>(event.inst) - mapEvent.inst; + const uint32 distance = diff1 * diff1 + diff2 * diff2; + if(distance >= bestDistance) + continue; + + bestMatch = m.second; + bestDistance = distance; + } + macroMap[event] = bestMatch; + return bestMatch; +} + + CSoundFile::ProbeResult CSoundFile::ProbeFileHeaderSymMOD(MemoryFileReader file, const uint64 *pfilesize) { MPT_UNREFERENCED_PARAMETER(pfilesize); @@ -1044,6 +1068,7 @@ uint16 sampleBoost = 2500; bool isSymphoniePro = false; bool externalSamples = false; + bool unknownHunks = false; std::vector<SymPosition> positions; std::vector<SymSequence> sequences; std::vector<SymEvent> patternData; @@ -1202,9 +1227,10 @@ file.Skip(file.ReadUint32BE()); break; - // Unrecognized chunk/value type + // Unrecognized chunk/value type (e.g. garbage at the end of Natsh1.SymMOD) default: - return false; + unknownHunks = true; + break; } } @@ -1212,6 +1238,8 @@ return false; if((loadFlags & loadPatternData) && (positions.empty() || patternData.empty() || sequences.empty())) return false; + if(unknownHunks) + AddToLog(LogWarning, U_("Unknown hunks were found and ignored.")); // Let's hope noone is going to use the 256th instrument ;) if(instruments.size() >= MAX_INSTRUMENTS) @@ -1641,10 +1669,9 @@ case SymEvent::DSPEcho: case SymEvent::DSPDelay: #endif - if(macroMap.count(event)) + if(auto it = macroMap.find(event); it != macroMap.end() && it->second != 0) { - m.command = CMD_MIDI; - m.param = macroMap[event]; + m.SetEffectCommand(CMD_MIDI, it->second); } else if(macroMap.size() < m_MidiCfg.Zxx.size()) { uint8 param = static_cast<uint8>(macroMap.size()); @@ -1656,6 +1683,9 @@ if(event.command == SymEvent::DSPEcho || event.command == SymEvent::DSPDelay) useDSP = true; } + } else if(uint8 param = MapToClosestMidiMacro(event, macroMap)) + { + m.SetEffectCommand(CMD_MIDI, param); } break; |
From: <sv...@op...> - 2024-10-20 12:33:35
|
Author: sagamusix Date: Sun Oct 20 14:33:28 2024 New Revision: 21874 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21874 Log: Merged revision(s) 21810, 21813, 21817 from trunk/OpenMPT: [Imp] STM: Map known tracker IDs to "made with" tracker string (patch by cs127, https://github.com/OpenMPT/openmpt/pull/23/files) ........ [Imp] S3M: Make it obvious that tracker ID 0x1320 may also refer to Scream Tracker 3.21. Patch by cs127 (https://github.com/OpenMPT/openmpt/pull/24). ........ [Mod] STM: Fix typo in version number range (patch by cs127, https://github.com/OpenMPT/openmpt/pull/25). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_s3m.cpp branches/OpenMPT-1.31/soundlib/Load_stm.cpp Modified: branches/OpenMPT-1.31/soundlib/Load_s3m.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_s3m.cpp Sun Oct 20 14:31:15 2024 (r21873) +++ branches/OpenMPT-1.31/soundlib/Load_s3m.cpp Sun Oct 20 14:33:28 2024 (r21874) @@ -283,9 +283,16 @@ // though several ST3.01/3.03 files with ultra-click values of 16 have been found as well. // However, we won't fingerprint these values here as it's unlikely that there is any other tracker out there disguising as ST3 and using a strange ultra-click value. // Also, re-saving a file with a strange ultra-click value in ST3 doesn't fix this value unless the user manually changes it, or if it's below 16. - madeWithTracker = UL_("Scream Tracker"); - formatTrackerStr = true; isST3 = true; + if(fileHeader.cwtv == S3MFileHeader::trkST3_20) + { + // 3.21 writes the version number as 3.20. There is no known way to differentiate between the two. + madeWithTracker = UL_("Scream Tracker 3.20 - 3.21"); + } else + { + madeWithTracker = UL_("Scream Tracker"); + formatTrackerStr = true; + } } break; case S3MFileHeader::trkImagoOrpheus: Modified: branches/OpenMPT-1.31/soundlib/Load_stm.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_stm.cpp Sun Oct 20 14:31:15 2024 (r21873) +++ branches/OpenMPT-1.31/soundlib/Load_stm.cpp Sun Oct 20 14:33:28 2024 (r21874) @@ -236,9 +236,24 @@ m_modFormat.formatName = U_("Scream Tracker 2"); m_modFormat.type = U_("stm"); - m_modFormat.madeWithTracker = MPT_UFORMAT("Scream Tracker {}.{}")(fileHeader.verMajor, mpt::ufmt::dec0<2>(fileHeader.verMinor)); m_modFormat.charset = mpt::Charset::CP437; + if(!std::memcmp(fileHeader.trackerName, "!Scream!", 8)) + { + if(fileHeader.verMinor >= 21) + m_modFormat.madeWithTracker = UL_("Scream Tracker 2.2 - 2.3 or compatible"); + else + m_modFormat.madeWithTracker = MPT_UFORMAT("Scream Tracker {}.{} or compatible")(fileHeader.verMajor, mpt::ufmt::dec0<2>(fileHeader.verMinor)); + } + else if(!std::memcmp(fileHeader.trackerName, "BMOD2STM", 8)) + m_modFormat.madeWithTracker = UL_("BMOD2STM"); + else if(!std::memcmp(fileHeader.trackerName, "WUZAMOD!", 8)) + m_modFormat.madeWithTracker = UL_("Wuzamod"); + else if(!std::memcmp(fileHeader.trackerName, "SWavePro", 8)) + m_modFormat.madeWithTracker = UL_("SoundWave Pro"); + else + m_modFormat.madeWithTracker = UL_("Unknown"); + m_playBehaviour.set(kST3SampleSwap); m_nSamples = 31; |
From: <sv...@op...> - 2024-10-20 12:31:27
|
Author: sagamusix Date: Sun Oct 20 14:31:15 2024 New Revision: 21873 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21873 Log: Merged revision(s) 21788 from trunk/OpenMPT: [Imp] Insert pattern break commands in MOD/S3M when trying to save patterns shorter than 64 rows. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_mod.cpp branches/OpenMPT-1.31/soundlib/Load_s3m.cpp branches/OpenMPT-1.31/soundlib/pattern.cpp branches/OpenMPT-1.31/soundlib/pattern.h Modified: branches/OpenMPT-1.31/soundlib/Load_mod.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_mod.cpp Sun Oct 20 14:26:40 2024 (r21872) +++ branches/OpenMPT-1.31/soundlib/Load_mod.cpp Sun Oct 20 14:31:15 2024 (r21873) @@ -2451,6 +2451,7 @@ continue; } const auto rowBase = Patterns[pat].GetRow(row); + bool writePatternBreak = (Patterns[pat].GetNumRows() < 64 && row + 1 == Patterns[pat].GetNumRows() && !Patterns[pat].RowHasJump(row)); events.resize(writeChannels * 4); size_t eventByte = 0; @@ -2466,6 +2467,11 @@ command = 0x0C; param = std::min(m.vol, uint8(64)); } + if(writePatternBreak && !command && !param) + { + command = 0x0D; + writePatternBreak = false; + } uint16 period = 0; // Convert note to period Modified: branches/OpenMPT-1.31/soundlib/Load_s3m.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_s3m.cpp Sun Oct 20 14:26:40 2024 (r21872) +++ branches/OpenMPT-1.31/soundlib/Load_s3m.cpp Sun Oct 20 14:31:15 2024 (r21873) @@ -930,6 +930,7 @@ const auto rowBase = Patterns[pat].GetRow(row); CHANNELINDEX writeChannels = std::min(CHANNELINDEX(32), GetNumChannels()); + bool writePatternBreak = (Patterns[pat].GetNumRows() < 64 && row + 1 == Patterns[pat].GetNumRows() && !Patterns[pat].RowHasJump(row)); for(CHANNELINDEX chn = 0; chn < writeChannels; chn++) { const ModCommand &m = rowBase[chn]; @@ -995,6 +996,12 @@ } } } + if(writePatternBreak && !(info & s3mEffectPresent)) + { + info |= s3mEffectPresent; + command = 'C' ^ 0x40; + writePatternBreak = false; + } if(info & s3mAnyPresent) { Modified: branches/OpenMPT-1.31/soundlib/pattern.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/pattern.cpp Sun Oct 20 14:26:40 2024 (r21872) +++ branches/OpenMPT-1.31/soundlib/pattern.cpp Sun Oct 20 14:31:15 2024 (r21873) @@ -37,21 +37,32 @@ bool CPattern::IsEmptyRow(ROWINDEX row) const noexcept { if(m_ModCommands.empty() || !IsValidRow(row)) - { return true; - } for(const auto &m : GetRow(row)) { if(!m.IsEmpty()) - { return false; - } } return true; } +// Check if the row contains any position jumps or pattern breaks. +bool CPattern::RowHasJump(ROWINDEX row) const noexcept +{ + if(m_ModCommands.empty() || !IsValidRow(row)) + return false; + + for(const auto &m : GetRow(row)) + { + if(m.command == CMD_PATTERNBREAK || m.command == CMD_POSITIONJUMP) + return true; + } + return false; +} + + bool CPattern::SetSignature(const ROWINDEX rowsPerBeat, const ROWINDEX rowsPerMeasure) noexcept { if(rowsPerBeat < 1 Modified: branches/OpenMPT-1.31/soundlib/pattern.h ============================================================================== --- branches/OpenMPT-1.31/soundlib/pattern.h Sun Oct 20 14:26:40 2024 (r21872) +++ branches/OpenMPT-1.31/soundlib/pattern.h Sun Oct 20 14:31:15 2024 (r21873) @@ -60,6 +60,8 @@ // Check if there is any note data on a given row. bool IsEmptyRow(ROWINDEX row) const noexcept; + // Check if the row contains any position jumps or pattern breaks. + bool RowHasJump(ROWINDEX row) const noexcept; // Allocate new pattern memory and replace old pattern data. bool AllocatePattern(ROWINDEX rows); |
From: <sv...@op...> - 2024-10-20 12:26:51
|
Author: sagamusix Date: Sun Oct 20 14:26:40 2024 New Revision: 21872 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21872 Log: Merged revision(s) 21688 from trunk/OpenMPT: [Imp] ULT: Try to preserve global commands if there's e.g. both a speed and tempo command in the same cell. Fixes trance mission.ult (https://www.un4seen.com/forum/?topic=15448.msg143764#msg143764). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_ult.cpp Modified: branches/OpenMPT-1.31/soundlib/Load_ult.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_ult.cpp Sun Oct 20 14:15:36 2024 (r21871) +++ branches/OpenMPT-1.31/soundlib/Load_ult.cpp Sun Oct 20 14:26:40 2024 (r21872) @@ -197,7 +197,9 @@ } -static int ReadULTEvent(ModCommand &m, FileReader &file, uint8 version) +struct ULTEventResult { uint8 repeat = 0; ModCommand::COMMAND lostCommand = CMD_NONE; ModCommand::PARAM lostParam = 0; }; + +static ULTEventResult ReadULTEvent(ModCommand &m, FileReader &file, uint8 version) { uint8 repeat = 1; uint8 b = file.ReadUint8(); @@ -222,7 +224,7 @@ m.SetEffectCommand(CMD_OFFSET, static_cast<ModCommand::PARAM>(offset)); if(offset > 0xFF) m.SetVolumeCommand(VOLCMD_OFFSET, static_cast<ModCommand::VOL>(offset >> 8)); - return repeat; + return {repeat}; } else if(cmd1 == CMD_OFFSET) { uint32 offset = param1 * 4; @@ -231,7 +233,7 @@ { m.SetEffectCommand(CMD_OFFSET, static_cast<ModCommand::PARAM>(offset)); m.SetVolumeCommand(VOLCMD_OFFSET, static_cast<ModCommand::VOL>(offset >> 8)); - return repeat; + return {repeat}; } } else if(cmd2 == CMD_OFFSET) { @@ -241,7 +243,7 @@ { m.SetEffectCommand(CMD_OFFSET, static_cast<ModCommand::PARAM>(offset)); m.SetVolumeCommand(VOLCMD_OFFSET, static_cast<ModCommand::VOL>(offset >> 8)); - return repeat; + return {repeat}; } } else if(cmd1 == cmd2) { @@ -257,9 +259,8 @@ // Combine slide commands, if possible ModCommand::CombineEffects(cmd2, param2, cmd1, param1); - m.FillInTwoCommands(cmd1, param1, cmd2, param2); - - return repeat; + const auto lostCommand = m.FillInTwoCommands(cmd1, param1, cmd2, param2); + return {repeat, lostCommand.first, lostCommand.second}; } @@ -388,8 +389,8 @@ m_songName = mpt::String::ReadBuf(mpt::String::spacePadded, fileHeader.songName); const mpt::uchar *versions[] = {UL_("<1.4"), UL_("1.4"), UL_("1.5"), UL_("1.6")}; - m_modFormat.formatName = U_("UltraTracker"); - m_modFormat.type = U_("ult"); + m_modFormat.formatName = UL_("UltraTracker"); + m_modFormat.type = UL_("ult"); m_modFormat.madeWithTracker = U_("UltraTracker ") + versions[fileHeader.version - '1']; m_modFormat.charset = mpt::Charset::CP437; @@ -456,7 +457,10 @@ ROWINDEX row = 0; while(row < 64) { - int repeat = ReadULTEvent(evnote, file, fileHeader.version); + const ULTEventResult eventResult = ReadULTEvent(evnote, file, fileHeader.version); + if(eventResult.lostCommand != CMD_NONE && ModCommand::IsGlobalCommand(eventResult.lostCommand, eventResult.lostParam)) + Patterns[pat].WriteEffect(EffectWriter(eventResult.lostCommand, eventResult.lostParam).Row(row).RetryNextRow()); + int repeat = eventResult.repeat; if(repeat + row > 64) repeat = 64 - row; if(repeat == 0) |
From: <sv...@op...> - 2024-10-20 12:15:48
|
Author: sagamusix Date: Sun Oct 20 14:15:36 2024 New Revision: 21871 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21871 Log: [Doc] Update libopenmpt changelog. Modified: trunk/OpenMPT/doc/libopenmpt/changelog.md Modified: trunk/OpenMPT/doc/libopenmpt/changelog.md ============================================================================== --- trunk/OpenMPT/doc/libopenmpt/changelog.md Sun Oct 20 14:01:21 2024 (r21870) +++ trunk/OpenMPT/doc/libopenmpt/changelog.md Sun Oct 20 14:15:36 2024 (r21871) @@ -7,13 +7,51 @@ ### libopenmpt 0.8.0-pre - * [**New**] MOD: Can now read modified 8-channel MOD files from the DOS game - Aleshar - The World Of Ice. + * [**New**] Can now read PumaTracker (`PUMA`) modules. + * [**New**] Can now read Face The Music (`FTM`) modules. + * [**New**] Can now read Game Music Creator (`GMC`) modules. + * [**New**] Can now read Chuck Biscuits / Black Artist (`CBA`) modules from + the Expoze musicdisk by Heretics + * [**New**] Can now read Real Tracker 2 (`RTM`) modules. + * [**New**] Can now read Images Music System (`IMS`) modules. + * [**New**] Can now read ChipTracker (`MOD`) modules. + * [**New**] Can now read EasyTrax (`ETX`) modules. + * [**New**] MED: Synthesized and hybrid instruments are now supported. + * [**New**] GT2: Better support for old "envelopes", in particular adding + support for the previously missing tremor / tremolo / vibrato. + * [**New**] NST: His Master's Noise "Mupp" instruments are now supported, + as well as command 7 "mega-arp". + * [**New**] `Makefile CONFIG=djgpp` now supports building LGPL libraries as DXE (use `ENABLE_DXE=0` to disable). * [**New**] New `Makefile` `CONFIG=mingw-w64` option `WINDOWS_CRT=[crtdll,msvcrt,ucrt]` to select the toolchain CRT library. * [**New**] 32bit ARM builds now support Windows 8 (Windows RT) again. + * [**New**] libopenmpt: New APIs for determining whether order list entrys or + pattern indices have a special meaning: + `openmpt::module::is_order_skip_entry()`, + `openmpt::module::is_pattern_skip_item()`, + `openmpt::module::is_order_stop_entry()`, + `openmpt::module::is_pattern_stop_item()` (C++), and + `openmpt_module_is_order_skip_entry()`, + `openmpt_module_is_pattern_skip_item()`, + `openmpt_module_is_order_stop_entry()`, + `openmpt_module_is_pattern_stop_item()` (C). + * [**New**] libopenmpt: New APIs for retrieving pattern time signature + information: + `openmpt::module::get_pattern_rows_per_beat()`, + `openmpt::module::get_pattern_rows_per_measure()` (C++), and + `openmpt_module_get_pattern_rows_per_beat()`, + `openmpt_module_get_pattern_rows_per_measure()` (C). + * [**New**] libopenmpt: New APIs for retrieving the restart / loop position: + `openmpt::module::get_restart_order()`, + `openmpt::module::get_restart_row()` (C++), and + `openmpt_module_get_restart_order()`, + `openmpt_module_get_restart_row()` (C). + * [**New**] libopenmpt: New API for retrieving the playback time at a given + order / row combination: + `openmpt::module::get_time_at_position()` (C++), and + `openmpt_module_get_time_at_position()` (C). * [**Change**] DOS builds now use zlib, libmpg123, libogg, and libvorbis instead of miniz, minimp3, and stb_vorbis by default. @@ -26,6 +64,17 @@ * [**Regression**] Using `EMSCRIPTEN_PORTS=1` with Emscripten older than 3.1.54 now requires additionally specifying `ANCIENT=1`. + * IT: Various plaback fixes. + * XM: If key-off is reached before auto-vibrato reaches full depth, the depth + is reset. + * DTM: Portamentos are now also evaluated on the first tick of the row. + * MO3: If multiple sample slots shared the same Ogg Vorbis sample, only one + sample slot was loaded. + * MED: Tempo parameters > 255 BPM were not imported properly if the files was + imported as MOD instead of XM. + * Better support for automatic slide commands (commands that keep sliding on + following rows) in various formats. + * xmp-openmpt: Memory consumption during file loading has been reduced. ### libopenmpt 0.7.0 (2023-04-30) |
From: <sv...@op...> - 2024-10-20 12:01:28
|
Author: manx Date: Sun Oct 20 14:01:21 2024 New Revision: 21870 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21870 Log: [Mod] libopenmpt: Bump prerel version. Modified: trunk/OpenMPT/libopenmpt/libopenmpt_version.h trunk/OpenMPT/libopenmpt/libopenmpt_version.mk Modified: trunk/OpenMPT/libopenmpt/libopenmpt_version.h ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt_version.h Sun Oct 20 14:00:52 2024 (r21869) +++ trunk/OpenMPT/libopenmpt/libopenmpt_version.h Sun Oct 20 14:01:21 2024 (r21870) @@ -23,7 +23,7 @@ /*! \brief libopenmpt patch version number */ #define OPENMPT_API_VERSION_PATCH 0 /*! \brief libopenmpt pre-release tag */ -#define OPENMPT_API_VERSION_PREREL "-pre.10" +#define OPENMPT_API_VERSION_PREREL "-pre.11" /*! \brief libopenmpt pre-release flag */ #define OPENMPT_API_VERSION_IS_PREREL 1 Modified: trunk/OpenMPT/libopenmpt/libopenmpt_version.mk ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt_version.mk Sun Oct 20 14:00:52 2024 (r21869) +++ trunk/OpenMPT/libopenmpt/libopenmpt_version.mk Sun Oct 20 14:01:21 2024 (r21870) @@ -1,7 +1,7 @@ LIBOPENMPT_VERSION_MAJOR=0 LIBOPENMPT_VERSION_MINOR=8 LIBOPENMPT_VERSION_PATCH=0 -LIBOPENMPT_VERSION_PREREL=-pre.10 +LIBOPENMPT_VERSION_PREREL=-pre.11 LIBOPENMPT_LTVER_CURRENT=5 LIBOPENMPT_LTVER_REVISION=0 |
From: <sv...@op...> - 2024-10-20 12:00:59
|
Author: sagamusix Date: Sun Oct 20 14:00:52 2024 New Revision: 21869 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21869 Log: [New] libopenmpt: Add a function to retrieve the playback time at a position: get_time_at_position (https://bugs.openmpt.org/view.php?id=1675). Modified: trunk/OpenMPT/libopenmpt/bindings/freebasic/libopenmpt.bi trunk/OpenMPT/libopenmpt/libopenmpt.h trunk/OpenMPT/libopenmpt/libopenmpt.hpp trunk/OpenMPT/libopenmpt/libopenmpt_c.cpp trunk/OpenMPT/libopenmpt/libopenmpt_cxx.cpp trunk/OpenMPT/libopenmpt/libopenmpt_impl.cpp trunk/OpenMPT/libopenmpt/libopenmpt_impl.hpp Modified: trunk/OpenMPT/libopenmpt/bindings/freebasic/libopenmpt.bi ============================================================================== --- trunk/OpenMPT/libopenmpt/bindings/freebasic/libopenmpt.bi Sun Oct 20 13:50:56 2024 (r21868) +++ trunk/OpenMPT/libopenmpt/bindings/freebasic/libopenmpt.bi Sun Oct 20 14:00:52 2024 (r21869) @@ -825,6 +825,18 @@ '/ Declare Function openmpt_module_get_duration_seconds(ByVal module As openmpt_module Ptr) As Double +/'* \brief Get approximate playback time in seconds at given position + + \param module The module handle to work on. + \param order The order position at which the time should be retrieved. + \param row The pattern row number at which the time should be retrieved. + \return Approximate playback time in seconds of current sub-song at the start of the given order and row combination. Negative if the position does not exist, or the pattern data is too complex to evaluate. + \remarks If an order / row combination is played multiple times (e.g. due the pattern loops), the first occurence of this position is returned. + \since 0.8.0 +'/ +Declare Function openmpt_module_get_time_at_position(ByVal module As openmpt_module Ptr, ByVal order As Long, ByVal row As Long) As Double + + /'* \brief Set approximate current song position \param module The module handle to work on. Modified: trunk/OpenMPT/libopenmpt/libopenmpt.h ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt.h Sun Oct 20 13:50:56 2024 (r21868) +++ trunk/OpenMPT/libopenmpt/libopenmpt.h Sun Oct 20 14:00:52 2024 (r21869) @@ -925,6 +925,17 @@ */ LIBOPENMPT_API double openmpt_module_get_duration_seconds( openmpt_module * mod ); +/*! \brief Get approximate playback time in seconds at given position + * + * \param mod The module handle to work on. + * \param order The order position at which the time should be retrieved. + * \param row The pattern row number at which the time should be retrieved. + * \return Approximate playback time in seconds of current sub-song at the start of the given order and row combination. Negative if the position does not exist, or the pattern data is too complex to evaluate. + * \remarks If an order / row combination is played multiple times (e.g. due the pattern loops), the first occurence of this position is returned. + * \since 0.8.0 + */ +LIBOPENMPT_API double openmpt_module_get_time_at_position( openmpt_module * mod, int32_t order, int32_t row ); + /*! \brief Set approximate current song position * * \param mod The module handle to work on. Modified: trunk/OpenMPT/libopenmpt/libopenmpt.hpp ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt.hpp Sun Oct 20 13:50:56 2024 (r21868) +++ trunk/OpenMPT/libopenmpt/libopenmpt.hpp Sun Oct 20 14:00:52 2024 (r21869) @@ -638,6 +638,16 @@ */ LIBOPENMPT_CXX_API_MEMBER double get_duration_seconds() const; + //! Get approximate playback time in seconds at given position + /*! + \param order The order position at which the time should be retrieved. + \param row The pattern row number at which the time should be retrieved. + \return Approximate playback time in seconds of current sub-song at the start of the given order and row combination. Negative if the position does not exist, or the pattern data is too complex to evaluate. + \remarks If an order / row combination is played multiple times (e.g. due the pattern loops), the first occurence of this position is returned. + \since 0.8.0 + */ + LIBOPENMPT_CXX_API_MEMBER double get_time_at_position( std::int32_t order, std::int32_t row ) const; + //! Set approximate current song position /*! \param seconds Seconds to seek to. If seconds is out of range, the position gets set to song start or end respectively. Modified: trunk/OpenMPT/libopenmpt/libopenmpt_c.cpp ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt_c.cpp Sun Oct 20 13:50:56 2024 (r21868) +++ trunk/OpenMPT/libopenmpt/libopenmpt_c.cpp Sun Oct 20 14:00:52 2024 (r21869) @@ -791,6 +791,16 @@ return 0.0; } +double openmpt_module_get_time_at_position( openmpt_module * mod, int32_t order, int32_t row ) { + try { + openmpt::interface::check_soundfile( mod ); + return mod->impl->get_time_at_position( order, row ); + } catch ( ... ) { + openmpt::report_exception( __func__, mod ); + } + return -1.0; +} + double openmpt_module_set_position_seconds( openmpt_module * mod, double seconds ) { try { openmpt::interface::check_soundfile( mod ); Modified: trunk/OpenMPT/libopenmpt/libopenmpt_cxx.cpp ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt_cxx.cpp Sun Oct 20 13:50:56 2024 (r21868) +++ trunk/OpenMPT/libopenmpt/libopenmpt_cxx.cpp Sun Oct 20 14:00:52 2024 (r21869) @@ -258,6 +258,10 @@ return impl->get_duration_seconds(); } +double module::get_time_at_position( std::int32_t order, std::int32_t row ) const { + return impl->get_time_at_position( order, row ); +} + double module::set_position_seconds( double seconds ) { return impl->set_position_seconds( seconds ); } Modified: trunk/OpenMPT/libopenmpt/libopenmpt_impl.cpp ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt_impl.cpp Sun Oct 20 13:50:56 2024 (r21868) +++ trunk/OpenMPT/libopenmpt/libopenmpt_impl.cpp Sun Oct 20 14:00:52 2024 (r21869) @@ -1077,6 +1077,15 @@ } return subsongs[m_current_subsong].duration; } + +double module_impl::get_time_at_position( std::int32_t order, std::int32_t row ) const { + const auto t = m_sndFile->GetLength( OpenMPT::eNoAdjust, OpenMPT::GetLengthTarget( static_cast<OpenMPT::ORDERINDEX>( order ), static_cast<OpenMPT::ROWINDEX>( row ) ) ).back(); + if ( t.targetReached ) + return t.duration; + else + return -1.0; +} + void module_impl::select_subsong( std::int32_t subsong ) { std::unique_ptr<subsongs_type> subsongs_temp = has_subsongs_inited() ? std::unique_ptr<subsongs_type>() : std::make_unique<subsongs_type>( get_subsongs() ); const subsongs_type & subsongs = has_subsongs_inited() ? m_subsongs : *subsongs_temp; Modified: trunk/OpenMPT/libopenmpt/libopenmpt_impl.hpp ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt_impl.hpp Sun Oct 20 13:50:56 2024 (r21868) +++ trunk/OpenMPT/libopenmpt/libopenmpt_impl.hpp Sun Oct 20 14:00:52 2024 (r21869) @@ -207,6 +207,7 @@ void set_repeat_count( std::int32_t repeat_count ); std::int32_t get_repeat_count() const; double get_duration_seconds() const; + double get_time_at_position( std::int32_t order, std::int32_t row ) const; double set_position_seconds( double seconds ); double get_position_seconds() const; double set_position_order_row( std::int32_t order, std::int32_t row ); |