diff --git a/build/android_ndk/Android.mk b/build/android_ndk/Android.mk index 2ffb6ef74d0..2e5d72ca2d6 100644 --- a/build/android_ndk/Android.mk +++ b/build/android_ndk/Android.mk @@ -196,8 +196,9 @@ LOCAL_SRC_FILES += \ soundlib/Load_stm.cpp \ soundlib/Load_stp.cpp \ soundlib/Load_symmod.cpp \ - soundlib/Load_ult.cpp \ soundlib/Load_uax.cpp \ + soundlib/Load_ult.cpp \ + soundlib/Load_unic.cpp \ soundlib/Load_wav.cpp \ soundlib/Load_xm.cpp \ soundlib/Load_xmf.cpp \ diff --git a/build/autotools/Makefile.am b/build/autotools/Makefile.am index 8084f1bba81..9351c9144f1 100644 --- a/build/autotools/Makefile.am +++ b/build/autotools/Makefile.am @@ -438,6 +438,7 @@ MPT_FILES_SOUNDLIB += soundlib/Load_stp.cpp MPT_FILES_SOUNDLIB += soundlib/Load_symmod.cpp MPT_FILES_SOUNDLIB += soundlib/Load_uax.cpp MPT_FILES_SOUNDLIB += soundlib/Load_ult.cpp +MPT_FILES_SOUNDLIB += soundlib/Load_unic.cpp MPT_FILES_SOUNDLIB += soundlib/Load_wav.cpp MPT_FILES_SOUNDLIB += soundlib/Load_xm.cpp MPT_FILES_SOUNDLIB += soundlib/Load_xmf.cpp diff --git a/build/vs2017winxp/OpenMPT-ANSI.vcxproj b/build/vs2017winxp/OpenMPT-ANSI.vcxproj index dc14d1fbe04..4c925bfef84 100644 --- a/build/vs2017winxp/OpenMPT-ANSI.vcxproj +++ b/build/vs2017winxp/OpenMPT-ANSI.vcxproj @@ -1402,6 +1402,7 @@ + diff --git a/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters b/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters index a67fb686cc5..294a1c27658 100644 --- a/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters +++ b/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters @@ -2165,6 +2165,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxp/OpenMPT-UTF8.vcxproj b/build/vs2017winxp/OpenMPT-UTF8.vcxproj index 41165ad91fd..66a6adaeeb1 100644 --- a/build/vs2017winxp/OpenMPT-UTF8.vcxproj +++ b/build/vs2017winxp/OpenMPT-UTF8.vcxproj @@ -1402,6 +1402,7 @@ + diff --git a/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters b/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters index a67fb686cc5..294a1c27658 100644 --- a/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters +++ b/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters @@ -2165,6 +2165,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxp/OpenMPT.vcxproj b/build/vs2017winxp/OpenMPT.vcxproj index 33fd15c93a2..f3b9e947e42 100644 --- a/build/vs2017winxp/OpenMPT.vcxproj +++ b/build/vs2017winxp/OpenMPT.vcxproj @@ -1402,6 +1402,7 @@ + diff --git a/build/vs2017winxp/OpenMPT.vcxproj.filters b/build/vs2017winxp/OpenMPT.vcxproj.filters index a67fb686cc5..294a1c27658 100644 --- a/build/vs2017winxp/OpenMPT.vcxproj.filters +++ b/build/vs2017winxp/OpenMPT.vcxproj.filters @@ -2165,6 +2165,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxp/libopenmpt-small.vcxproj b/build/vs2017winxp/libopenmpt-small.vcxproj index 65822c1d193..5d3053d3d9c 100644 --- a/build/vs2017winxp/libopenmpt-small.vcxproj +++ b/build/vs2017winxp/libopenmpt-small.vcxproj @@ -1033,6 +1033,7 @@ + diff --git a/build/vs2017winxp/libopenmpt-small.vcxproj.filters b/build/vs2017winxp/libopenmpt-small.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2017winxp/libopenmpt-small.vcxproj.filters +++ b/build/vs2017winxp/libopenmpt-small.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxp/libopenmpt.vcxproj b/build/vs2017winxp/libopenmpt.vcxproj index c143c7f8d08..83cae72d8db 100644 --- a/build/vs2017winxp/libopenmpt.vcxproj +++ b/build/vs2017winxp/libopenmpt.vcxproj @@ -1033,6 +1033,7 @@ + diff --git a/build/vs2017winxp/libopenmpt.vcxproj.filters b/build/vs2017winxp/libopenmpt.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2017winxp/libopenmpt.vcxproj.filters +++ b/build/vs2017winxp/libopenmpt.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxp/libopenmpt_test.vcxproj b/build/vs2017winxp/libopenmpt_test.vcxproj index 6c7e98b861b..242f83efc0c 100644 --- a/build/vs2017winxp/libopenmpt_test.vcxproj +++ b/build/vs2017winxp/libopenmpt_test.vcxproj @@ -1074,6 +1074,7 @@ + diff --git a/build/vs2017winxp/libopenmpt_test.vcxproj.filters b/build/vs2017winxp/libopenmpt_test.vcxproj.filters index c912baaf30c..ca6c3148706 100644 --- a/build/vs2017winxp/libopenmpt_test.vcxproj.filters +++ b/build/vs2017winxp/libopenmpt_test.vcxproj.filters @@ -1382,6 +1382,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj b/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj index e47cb63d2b8..d969f83e852 100644 --- a/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj +++ b/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj @@ -1402,6 +1402,7 @@ + diff --git a/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters b/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters index a67fb686cc5..294a1c27658 100644 --- a/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters +++ b/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters @@ -2165,6 +2165,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj b/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj index f501b5d595b..fbd1bff5f5e 100644 --- a/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj +++ b/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj @@ -1402,6 +1402,7 @@ + diff --git a/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters b/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters index a67fb686cc5..294a1c27658 100644 --- a/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters +++ b/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters @@ -2165,6 +2165,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxpansi/OpenMPT.vcxproj b/build/vs2017winxpansi/OpenMPT.vcxproj index 54352372f71..a76fb73f4c7 100644 --- a/build/vs2017winxpansi/OpenMPT.vcxproj +++ b/build/vs2017winxpansi/OpenMPT.vcxproj @@ -1402,6 +1402,7 @@ + diff --git a/build/vs2017winxpansi/OpenMPT.vcxproj.filters b/build/vs2017winxpansi/OpenMPT.vcxproj.filters index a67fb686cc5..294a1c27658 100644 --- a/build/vs2017winxpansi/OpenMPT.vcxproj.filters +++ b/build/vs2017winxpansi/OpenMPT.vcxproj.filters @@ -2165,6 +2165,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxpansi/libopenmpt-small.vcxproj b/build/vs2017winxpansi/libopenmpt-small.vcxproj index af521974810..9a13c4481f4 100644 --- a/build/vs2017winxpansi/libopenmpt-small.vcxproj +++ b/build/vs2017winxpansi/libopenmpt-small.vcxproj @@ -1033,6 +1033,7 @@ + diff --git a/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters b/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters +++ b/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxpansi/libopenmpt.vcxproj b/build/vs2017winxpansi/libopenmpt.vcxproj index 7bebfd09dfe..55334fe8e76 100644 --- a/build/vs2017winxpansi/libopenmpt.vcxproj +++ b/build/vs2017winxpansi/libopenmpt.vcxproj @@ -1033,6 +1033,7 @@ + diff --git a/build/vs2017winxpansi/libopenmpt.vcxproj.filters b/build/vs2017winxpansi/libopenmpt.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2017winxpansi/libopenmpt.vcxproj.filters +++ b/build/vs2017winxpansi/libopenmpt.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2017winxpansi/libopenmpt_test.vcxproj b/build/vs2017winxpansi/libopenmpt_test.vcxproj index 08c60bfc72f..7c9b46dd4d1 100644 --- a/build/vs2017winxpansi/libopenmpt_test.vcxproj +++ b/build/vs2017winxpansi/libopenmpt_test.vcxproj @@ -1074,6 +1074,7 @@ + diff --git a/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters b/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters index c912baaf30c..ca6c3148706 100644 --- a/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters +++ b/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters @@ -1382,6 +1382,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2019win7/OpenMPT-ANSI.vcxproj b/build/vs2019win7/OpenMPT-ANSI.vcxproj index b0cd3685e7a..dc58392b004 100644 --- a/build/vs2019win7/OpenMPT-ANSI.vcxproj +++ b/build/vs2019win7/OpenMPT-ANSI.vcxproj @@ -1421,6 +1421,7 @@ + diff --git a/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters b/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters index c6f080d53b6..eacb81750f5 100644 --- a/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters +++ b/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2019win7/OpenMPT-UTF8.vcxproj b/build/vs2019win7/OpenMPT-UTF8.vcxproj index 96975d49367..9b2d729d891 100644 --- a/build/vs2019win7/OpenMPT-UTF8.vcxproj +++ b/build/vs2019win7/OpenMPT-UTF8.vcxproj @@ -1421,6 +1421,7 @@ + diff --git a/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters b/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters index c6f080d53b6..eacb81750f5 100644 --- a/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters +++ b/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2019win7/OpenMPT.vcxproj b/build/vs2019win7/OpenMPT.vcxproj index e7fdb5f62cb..5634fd2f097 100644 --- a/build/vs2019win7/OpenMPT.vcxproj +++ b/build/vs2019win7/OpenMPT.vcxproj @@ -1421,6 +1421,7 @@ + diff --git a/build/vs2019win7/OpenMPT.vcxproj.filters b/build/vs2019win7/OpenMPT.vcxproj.filters index c6f080d53b6..eacb81750f5 100644 --- a/build/vs2019win7/OpenMPT.vcxproj.filters +++ b/build/vs2019win7/OpenMPT.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2019win7/libopenmpt-small.vcxproj b/build/vs2019win7/libopenmpt-small.vcxproj index aeb95ab7538..84c4aff8c7a 100644 --- a/build/vs2019win7/libopenmpt-small.vcxproj +++ b/build/vs2019win7/libopenmpt-small.vcxproj @@ -1030,6 +1030,7 @@ + diff --git a/build/vs2019win7/libopenmpt-small.vcxproj.filters b/build/vs2019win7/libopenmpt-small.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2019win7/libopenmpt-small.vcxproj.filters +++ b/build/vs2019win7/libopenmpt-small.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2019win7/libopenmpt.vcxproj b/build/vs2019win7/libopenmpt.vcxproj index 0c0a290d182..9cdd8cfde03 100644 --- a/build/vs2019win7/libopenmpt.vcxproj +++ b/build/vs2019win7/libopenmpt.vcxproj @@ -1030,6 +1030,7 @@ + diff --git a/build/vs2019win7/libopenmpt.vcxproj.filters b/build/vs2019win7/libopenmpt.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2019win7/libopenmpt.vcxproj.filters +++ b/build/vs2019win7/libopenmpt.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2019win7/libopenmpt_test.vcxproj b/build/vs2019win7/libopenmpt_test.vcxproj index c7a70c034d0..02c4092d273 100644 --- a/build/vs2019win7/libopenmpt_test.vcxproj +++ b/build/vs2019win7/libopenmpt_test.vcxproj @@ -1071,6 +1071,7 @@ + diff --git a/build/vs2019win7/libopenmpt_test.vcxproj.filters b/build/vs2019win7/libopenmpt_test.vcxproj.filters index 828ba41e628..e79f9f2ec38 100644 --- a/build/vs2019win7/libopenmpt_test.vcxproj.filters +++ b/build/vs2019win7/libopenmpt_test.vcxproj.filters @@ -1388,6 +1388,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10/OpenMPT-ANSI.vcxproj b/build/vs2022win10/OpenMPT-ANSI.vcxproj index ed60bb49236..5e58f5e6175 100644 --- a/build/vs2022win10/OpenMPT-ANSI.vcxproj +++ b/build/vs2022win10/OpenMPT-ANSI.vcxproj @@ -2235,6 +2235,7 @@ + diff --git a/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters b/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters index 22f21229842..d5559bc84de 100644 --- a/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters +++ b/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10/OpenMPT-UTF8.vcxproj b/build/vs2022win10/OpenMPT-UTF8.vcxproj index be7d02d84ae..a13b3bb9c05 100644 --- a/build/vs2022win10/OpenMPT-UTF8.vcxproj +++ b/build/vs2022win10/OpenMPT-UTF8.vcxproj @@ -2235,6 +2235,7 @@ + diff --git a/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters b/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters index 22f21229842..d5559bc84de 100644 --- a/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters +++ b/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10/OpenMPT.vcxproj b/build/vs2022win10/OpenMPT.vcxproj index 75c3a17da1e..d1bf838cd5a 100644 --- a/build/vs2022win10/OpenMPT.vcxproj +++ b/build/vs2022win10/OpenMPT.vcxproj @@ -2235,6 +2235,7 @@ + diff --git a/build/vs2022win10/OpenMPT.vcxproj.filters b/build/vs2022win10/OpenMPT.vcxproj.filters index 22f21229842..d5559bc84de 100644 --- a/build/vs2022win10/OpenMPT.vcxproj.filters +++ b/build/vs2022win10/OpenMPT.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10/libopenmpt-small.vcxproj b/build/vs2022win10/libopenmpt-small.vcxproj index aa05c159b7c..a075376a8f1 100644 --- a/build/vs2022win10/libopenmpt-small.vcxproj +++ b/build/vs2022win10/libopenmpt-small.vcxproj @@ -1718,6 +1718,7 @@ + diff --git a/build/vs2022win10/libopenmpt-small.vcxproj.filters b/build/vs2022win10/libopenmpt-small.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win10/libopenmpt-small.vcxproj.filters +++ b/build/vs2022win10/libopenmpt-small.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10/libopenmpt.vcxproj b/build/vs2022win10/libopenmpt.vcxproj index 8b4c2ffb2c0..91e6c3624bd 100644 --- a/build/vs2022win10/libopenmpt.vcxproj +++ b/build/vs2022win10/libopenmpt.vcxproj @@ -1718,6 +1718,7 @@ + diff --git a/build/vs2022win10/libopenmpt.vcxproj.filters b/build/vs2022win10/libopenmpt.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win10/libopenmpt.vcxproj.filters +++ b/build/vs2022win10/libopenmpt.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10/libopenmpt_test.vcxproj b/build/vs2022win10/libopenmpt_test.vcxproj index 73acb23af06..572e04b4e24 100644 --- a/build/vs2022win10/libopenmpt_test.vcxproj +++ b/build/vs2022win10/libopenmpt_test.vcxproj @@ -1789,6 +1789,7 @@ + diff --git a/build/vs2022win10/libopenmpt_test.vcxproj.filters b/build/vs2022win10/libopenmpt_test.vcxproj.filters index 30a862387a5..df958784c72 100644 --- a/build/vs2022win10/libopenmpt_test.vcxproj.filters +++ b/build/vs2022win10/libopenmpt_test.vcxproj.filters @@ -1388,6 +1388,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10clang/OpenMPT-ANSI.vcxproj b/build/vs2022win10clang/OpenMPT-ANSI.vcxproj index 1c75441384e..fd454102082 100644 --- a/build/vs2022win10clang/OpenMPT-ANSI.vcxproj +++ b/build/vs2022win10clang/OpenMPT-ANSI.vcxproj @@ -2191,6 +2191,7 @@ + diff --git a/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters b/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters index 49fe0b71802..fe9cfe197d6 100644 --- a/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters +++ b/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters @@ -2165,6 +2165,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10clang/OpenMPT-UTF8.vcxproj b/build/vs2022win10clang/OpenMPT-UTF8.vcxproj index a7956bb2c90..f8347b62746 100644 --- a/build/vs2022win10clang/OpenMPT-UTF8.vcxproj +++ b/build/vs2022win10clang/OpenMPT-UTF8.vcxproj @@ -2191,6 +2191,7 @@ + diff --git a/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters b/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters index 49fe0b71802..fe9cfe197d6 100644 --- a/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters +++ b/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters @@ -2165,6 +2165,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10clang/OpenMPT.vcxproj b/build/vs2022win10clang/OpenMPT.vcxproj index 6389568c64e..9015d133ad9 100644 --- a/build/vs2022win10clang/OpenMPT.vcxproj +++ b/build/vs2022win10clang/OpenMPT.vcxproj @@ -2191,6 +2191,7 @@ + diff --git a/build/vs2022win10clang/OpenMPT.vcxproj.filters b/build/vs2022win10clang/OpenMPT.vcxproj.filters index 49fe0b71802..fe9cfe197d6 100644 --- a/build/vs2022win10clang/OpenMPT.vcxproj.filters +++ b/build/vs2022win10clang/OpenMPT.vcxproj.filters @@ -2165,6 +2165,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10clang/libopenmpt-small.vcxproj b/build/vs2022win10clang/libopenmpt-small.vcxproj index 5c0d3a967d4..d3821e1fbe3 100644 --- a/build/vs2022win10clang/libopenmpt-small.vcxproj +++ b/build/vs2022win10clang/libopenmpt-small.vcxproj @@ -1636,6 +1636,7 @@ + diff --git a/build/vs2022win10clang/libopenmpt-small.vcxproj.filters b/build/vs2022win10clang/libopenmpt-small.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win10clang/libopenmpt-small.vcxproj.filters +++ b/build/vs2022win10clang/libopenmpt-small.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10clang/libopenmpt.vcxproj b/build/vs2022win10clang/libopenmpt.vcxproj index a0cb5c0d86b..7a73bd0d65c 100644 --- a/build/vs2022win10clang/libopenmpt.vcxproj +++ b/build/vs2022win10clang/libopenmpt.vcxproj @@ -1636,6 +1636,7 @@ + diff --git a/build/vs2022win10clang/libopenmpt.vcxproj.filters b/build/vs2022win10clang/libopenmpt.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win10clang/libopenmpt.vcxproj.filters +++ b/build/vs2022win10clang/libopenmpt.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10clang/libopenmpt_test.vcxproj b/build/vs2022win10clang/libopenmpt_test.vcxproj index b95b0540ac6..c55b2d5f34d 100644 --- a/build/vs2022win10clang/libopenmpt_test.vcxproj +++ b/build/vs2022win10clang/libopenmpt_test.vcxproj @@ -1707,6 +1707,7 @@ + diff --git a/build/vs2022win10clang/libopenmpt_test.vcxproj.filters b/build/vs2022win10clang/libopenmpt_test.vcxproj.filters index 30a862387a5..df958784c72 100644 --- a/build/vs2022win10clang/libopenmpt_test.vcxproj.filters +++ b/build/vs2022win10clang/libopenmpt_test.vcxproj.filters @@ -1388,6 +1388,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10uwp/libopenmpt-small.vcxproj b/build/vs2022win10uwp/libopenmpt-small.vcxproj index 574f0b8e4ac..6893ee9fd59 100644 --- a/build/vs2022win10uwp/libopenmpt-small.vcxproj +++ b/build/vs2022win10uwp/libopenmpt-small.vcxproj @@ -1730,6 +1730,7 @@ + diff --git a/build/vs2022win10uwp/libopenmpt-small.vcxproj.filters b/build/vs2022win10uwp/libopenmpt-small.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win10uwp/libopenmpt-small.vcxproj.filters +++ b/build/vs2022win10uwp/libopenmpt-small.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win10uwp/libopenmpt.vcxproj b/build/vs2022win10uwp/libopenmpt.vcxproj index 59d4951bc70..4bc06510336 100644 --- a/build/vs2022win10uwp/libopenmpt.vcxproj +++ b/build/vs2022win10uwp/libopenmpt.vcxproj @@ -1730,6 +1730,7 @@ + diff --git a/build/vs2022win10uwp/libopenmpt.vcxproj.filters b/build/vs2022win10uwp/libopenmpt.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win10uwp/libopenmpt.vcxproj.filters +++ b/build/vs2022win10uwp/libopenmpt.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win7/OpenMPT-ANSI.vcxproj b/build/vs2022win7/OpenMPT-ANSI.vcxproj index 340a03519d5..cbe50421f0e 100644 --- a/build/vs2022win7/OpenMPT-ANSI.vcxproj +++ b/build/vs2022win7/OpenMPT-ANSI.vcxproj @@ -1441,6 +1441,7 @@ + diff --git a/build/vs2022win7/OpenMPT-ANSI.vcxproj.filters b/build/vs2022win7/OpenMPT-ANSI.vcxproj.filters index c6f080d53b6..eacb81750f5 100644 --- a/build/vs2022win7/OpenMPT-ANSI.vcxproj.filters +++ b/build/vs2022win7/OpenMPT-ANSI.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win7/OpenMPT-UTF8.vcxproj b/build/vs2022win7/OpenMPT-UTF8.vcxproj index 39207f25f0b..208bdeeef6d 100644 --- a/build/vs2022win7/OpenMPT-UTF8.vcxproj +++ b/build/vs2022win7/OpenMPT-UTF8.vcxproj @@ -1441,6 +1441,7 @@ + diff --git a/build/vs2022win7/OpenMPT-UTF8.vcxproj.filters b/build/vs2022win7/OpenMPT-UTF8.vcxproj.filters index c6f080d53b6..eacb81750f5 100644 --- a/build/vs2022win7/OpenMPT-UTF8.vcxproj.filters +++ b/build/vs2022win7/OpenMPT-UTF8.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win7/OpenMPT.vcxproj b/build/vs2022win7/OpenMPT.vcxproj index ee9436786d0..f9cb7837609 100644 --- a/build/vs2022win7/OpenMPT.vcxproj +++ b/build/vs2022win7/OpenMPT.vcxproj @@ -1441,6 +1441,7 @@ + diff --git a/build/vs2022win7/OpenMPT.vcxproj.filters b/build/vs2022win7/OpenMPT.vcxproj.filters index c6f080d53b6..eacb81750f5 100644 --- a/build/vs2022win7/OpenMPT.vcxproj.filters +++ b/build/vs2022win7/OpenMPT.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win7/libopenmpt-small.vcxproj b/build/vs2022win7/libopenmpt-small.vcxproj index bc810bc3f20..dc4c8094dce 100644 --- a/build/vs2022win7/libopenmpt-small.vcxproj +++ b/build/vs2022win7/libopenmpt-small.vcxproj @@ -1050,6 +1050,7 @@ + diff --git a/build/vs2022win7/libopenmpt-small.vcxproj.filters b/build/vs2022win7/libopenmpt-small.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win7/libopenmpt-small.vcxproj.filters +++ b/build/vs2022win7/libopenmpt-small.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win7/libopenmpt.vcxproj b/build/vs2022win7/libopenmpt.vcxproj index 25d01f365d3..683dcbd2c4b 100644 --- a/build/vs2022win7/libopenmpt.vcxproj +++ b/build/vs2022win7/libopenmpt.vcxproj @@ -1050,6 +1050,7 @@ + diff --git a/build/vs2022win7/libopenmpt.vcxproj.filters b/build/vs2022win7/libopenmpt.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win7/libopenmpt.vcxproj.filters +++ b/build/vs2022win7/libopenmpt.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win7/libopenmpt_test.vcxproj b/build/vs2022win7/libopenmpt_test.vcxproj index e1f42567138..21eef28ba0e 100644 --- a/build/vs2022win7/libopenmpt_test.vcxproj +++ b/build/vs2022win7/libopenmpt_test.vcxproj @@ -1091,6 +1091,7 @@ + diff --git a/build/vs2022win7/libopenmpt_test.vcxproj.filters b/build/vs2022win7/libopenmpt_test.vcxproj.filters index 828ba41e628..e79f9f2ec38 100644 --- a/build/vs2022win7/libopenmpt_test.vcxproj.filters +++ b/build/vs2022win7/libopenmpt_test.vcxproj.filters @@ -1388,6 +1388,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win8/OpenMPT-ANSI.vcxproj b/build/vs2022win8/OpenMPT-ANSI.vcxproj index e5a95ee427d..f546ad20364 100644 --- a/build/vs2022win8/OpenMPT-ANSI.vcxproj +++ b/build/vs2022win8/OpenMPT-ANSI.vcxproj @@ -1829,6 +1829,7 @@ + diff --git a/build/vs2022win8/OpenMPT-ANSI.vcxproj.filters b/build/vs2022win8/OpenMPT-ANSI.vcxproj.filters index 8e1e8fed960..8bfcc0ab324 100644 --- a/build/vs2022win8/OpenMPT-ANSI.vcxproj.filters +++ b/build/vs2022win8/OpenMPT-ANSI.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win8/OpenMPT-UTF8.vcxproj b/build/vs2022win8/OpenMPT-UTF8.vcxproj index 8a2e1a562d3..c8710d3e9b6 100644 --- a/build/vs2022win8/OpenMPT-UTF8.vcxproj +++ b/build/vs2022win8/OpenMPT-UTF8.vcxproj @@ -1829,6 +1829,7 @@ + diff --git a/build/vs2022win8/OpenMPT-UTF8.vcxproj.filters b/build/vs2022win8/OpenMPT-UTF8.vcxproj.filters index 8e1e8fed960..8bfcc0ab324 100644 --- a/build/vs2022win8/OpenMPT-UTF8.vcxproj.filters +++ b/build/vs2022win8/OpenMPT-UTF8.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win8/OpenMPT.vcxproj b/build/vs2022win8/OpenMPT.vcxproj index efe7a8c6be9..0c015e42d71 100644 --- a/build/vs2022win8/OpenMPT.vcxproj +++ b/build/vs2022win8/OpenMPT.vcxproj @@ -1829,6 +1829,7 @@ + diff --git a/build/vs2022win8/OpenMPT.vcxproj.filters b/build/vs2022win8/OpenMPT.vcxproj.filters index 8e1e8fed960..8bfcc0ab324 100644 --- a/build/vs2022win8/OpenMPT.vcxproj.filters +++ b/build/vs2022win8/OpenMPT.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win8/libopenmpt-small.vcxproj b/build/vs2022win8/libopenmpt-small.vcxproj index c34e7003126..9c76e0ab9d6 100644 --- a/build/vs2022win8/libopenmpt-small.vcxproj +++ b/build/vs2022win8/libopenmpt-small.vcxproj @@ -1375,6 +1375,7 @@ + diff --git a/build/vs2022win8/libopenmpt-small.vcxproj.filters b/build/vs2022win8/libopenmpt-small.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win8/libopenmpt-small.vcxproj.filters +++ b/build/vs2022win8/libopenmpt-small.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win8/libopenmpt.vcxproj b/build/vs2022win8/libopenmpt.vcxproj index b90e9f31c2b..e146160904e 100644 --- a/build/vs2022win8/libopenmpt.vcxproj +++ b/build/vs2022win8/libopenmpt.vcxproj @@ -1375,6 +1375,7 @@ + diff --git a/build/vs2022win8/libopenmpt.vcxproj.filters b/build/vs2022win8/libopenmpt.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win8/libopenmpt.vcxproj.filters +++ b/build/vs2022win8/libopenmpt.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win8/libopenmpt_test.vcxproj b/build/vs2022win8/libopenmpt_test.vcxproj index d53c67af8fd..867cfff00e6 100644 --- a/build/vs2022win8/libopenmpt_test.vcxproj +++ b/build/vs2022win8/libopenmpt_test.vcxproj @@ -1431,6 +1431,7 @@ + diff --git a/build/vs2022win8/libopenmpt_test.vcxproj.filters b/build/vs2022win8/libopenmpt_test.vcxproj.filters index 09708311a89..722dcf501fc 100644 --- a/build/vs2022win8/libopenmpt_test.vcxproj.filters +++ b/build/vs2022win8/libopenmpt_test.vcxproj.filters @@ -1388,6 +1388,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win81/OpenMPT-ANSI.vcxproj b/build/vs2022win81/OpenMPT-ANSI.vcxproj index a73044c43b1..1a7e5105e9e 100644 --- a/build/vs2022win81/OpenMPT-ANSI.vcxproj +++ b/build/vs2022win81/OpenMPT-ANSI.vcxproj @@ -1829,6 +1829,7 @@ + diff --git a/build/vs2022win81/OpenMPT-ANSI.vcxproj.filters b/build/vs2022win81/OpenMPT-ANSI.vcxproj.filters index a67152e04df..709db9f5e1c 100644 --- a/build/vs2022win81/OpenMPT-ANSI.vcxproj.filters +++ b/build/vs2022win81/OpenMPT-ANSI.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win81/OpenMPT-UTF8.vcxproj b/build/vs2022win81/OpenMPT-UTF8.vcxproj index 1a0be1287a4..7dd3eb24ff0 100644 --- a/build/vs2022win81/OpenMPT-UTF8.vcxproj +++ b/build/vs2022win81/OpenMPT-UTF8.vcxproj @@ -1829,6 +1829,7 @@ + diff --git a/build/vs2022win81/OpenMPT-UTF8.vcxproj.filters b/build/vs2022win81/OpenMPT-UTF8.vcxproj.filters index a67152e04df..709db9f5e1c 100644 --- a/build/vs2022win81/OpenMPT-UTF8.vcxproj.filters +++ b/build/vs2022win81/OpenMPT-UTF8.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win81/OpenMPT.vcxproj b/build/vs2022win81/OpenMPT.vcxproj index 5ee77f3b9a2..1ecbdd441d7 100644 --- a/build/vs2022win81/OpenMPT.vcxproj +++ b/build/vs2022win81/OpenMPT.vcxproj @@ -1829,6 +1829,7 @@ + diff --git a/build/vs2022win81/OpenMPT.vcxproj.filters b/build/vs2022win81/OpenMPT.vcxproj.filters index a67152e04df..709db9f5e1c 100644 --- a/build/vs2022win81/OpenMPT.vcxproj.filters +++ b/build/vs2022win81/OpenMPT.vcxproj.filters @@ -2207,6 +2207,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win81/libopenmpt-small.vcxproj b/build/vs2022win81/libopenmpt-small.vcxproj index 4cd73f8f92a..4e0542be29c 100644 --- a/build/vs2022win81/libopenmpt-small.vcxproj +++ b/build/vs2022win81/libopenmpt-small.vcxproj @@ -1375,6 +1375,7 @@ + diff --git a/build/vs2022win81/libopenmpt-small.vcxproj.filters b/build/vs2022win81/libopenmpt-small.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win81/libopenmpt-small.vcxproj.filters +++ b/build/vs2022win81/libopenmpt-small.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win81/libopenmpt.vcxproj b/build/vs2022win81/libopenmpt.vcxproj index 01f64707639..f08138e2661 100644 --- a/build/vs2022win81/libopenmpt.vcxproj +++ b/build/vs2022win81/libopenmpt.vcxproj @@ -1375,6 +1375,7 @@ + diff --git a/build/vs2022win81/libopenmpt.vcxproj.filters b/build/vs2022win81/libopenmpt.vcxproj.filters index 56ca214b744..3039d51f940 100644 --- a/build/vs2022win81/libopenmpt.vcxproj.filters +++ b/build/vs2022win81/libopenmpt.vcxproj.filters @@ -1334,6 +1334,9 @@ soundlib + + soundlib + soundlib diff --git a/build/vs2022win81/libopenmpt_test.vcxproj b/build/vs2022win81/libopenmpt_test.vcxproj index 7641f95f437..1f3b8f332aa 100644 --- a/build/vs2022win81/libopenmpt_test.vcxproj +++ b/build/vs2022win81/libopenmpt_test.vcxproj @@ -1431,6 +1431,7 @@ + diff --git a/build/vs2022win81/libopenmpt_test.vcxproj.filters b/build/vs2022win81/libopenmpt_test.vcxproj.filters index 682c515a736..54c64584833 100644 --- a/build/vs2022win81/libopenmpt_test.vcxproj.filters +++ b/build/vs2022win81/libopenmpt_test.vcxproj.filters @@ -1388,6 +1388,9 @@ soundlib + + soundlib + soundlib diff --git a/build/xcode-ios/libopenmpt.xcodeproj/project.pbxproj b/build/xcode-ios/libopenmpt.xcodeproj/project.pbxproj index f67e6b42054..aa0ee423041 100644 --- a/build/xcode-ios/libopenmpt.xcodeproj/project.pbxproj +++ b/build/xcode-ios/libopenmpt.xcodeproj/project.pbxproj @@ -75,6 +75,7 @@ 81C26ED360DF89053CE8E513 /* Load_gmc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D668A71B68F6710DD1CF155B /* Load_gmc.cpp */; }; 8479AC1F9F461AD1A316B25F /* Load_digi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D14936A73E714519400434E7 /* Load_digi.cpp */; }; 84A9E60B844CC93DBEA17C4B /* MixerLoops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B810F0D30F7663C5C1847F13 /* MixerLoops.cpp */; }; + 84F9B8439FC626F5A396BE83 /* Load_unic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EEAF28B0C1300FD0DA5F0CB /* Load_unic.cpp */; }; 8676CA3F6593E471419D407F /* Load_gt2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 10E0ADC7A36E77B90C471C07 /* Load_gt2.cpp */; }; 8751165421750B86D19AEC94 /* mptStringBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C510221C396A670EB74DF05C /* mptStringBuffer.cpp */; }; 877C818BA248F03DA61987CB /* Load_puma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DB68B53DADE99C5DC718993 /* Load_puma.cpp */; }; @@ -488,6 +489,7 @@ 9E737DF712CDC2E990B14C37 /* Distortion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Distortion.h; path = ../../soundlib/plugins/dmo/Distortion.h; sourceTree = ""; }; 9E8AC865F88BDF57BFD2D6A5 /* tests_binary.hpp */ = {isa = PBXFileReference; lastKnownFileType = text; name = tests_binary.hpp; path = ../../src/mpt/binary/tests/tests_binary.hpp; sourceTree = ""; }; 9EB0D073130B156590EE9EB3 /* Compressor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Compressor.h; path = ../../soundlib/plugins/dmo/Compressor.h; sourceTree = ""; }; + 9EEAF28B0C1300FD0DA5F0CB /* Load_unic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Load_unic.cpp; path = ../../soundlib/Load_unic.cpp; sourceTree = ""; }; 9F187E69B9E4ED1BBDB584A9 /* outputfile.hpp */ = {isa = PBXFileReference; lastKnownFileType = text; name = outputfile.hpp; path = ../../src/mpt/io_file/outputfile.hpp; sourceTree = ""; }; 9F2E1C1AF92F330CC0762A5A /* BuildSettingsCompiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BuildSettingsCompiler.h; path = ../../common/BuildSettingsCompiler.h; sourceTree = ""; }; 9FCB791A628BD98CBFC0B75A /* dos_memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = text; name = dos_memory.hpp; path = ../../src/mpt/osinfo/dos_memory.hpp; sourceTree = ""; }; @@ -1352,6 +1354,7 @@ 7D070D1F43950491B1972B5F /* Load_symmod.cpp */, 54393E69E6C7085B4F9FACA9 /* Load_uax.cpp */, 7FD19A57125F64497B380897 /* Load_ult.cpp */, + 9EEAF28B0C1300FD0DA5F0CB /* Load_unic.cpp */, 694D3F69FBDB095B64B3ADA9 /* Load_wav.cpp */, 2A6435F76EB2DB69B0DA1437 /* Load_xm.cpp */, 2EF17543C17F3F352A57E383 /* Load_xmf.cpp */, @@ -1695,6 +1698,7 @@ CF116C1742F9E3C965479257 /* Load_symmod.cpp in Sources */, 4174F40120920E33FC9B6A41 /* Load_uax.cpp in Sources */, F4EF37CFD40C5201B015AE0F /* Load_ult.cpp in Sources */, + 84F9B8439FC626F5A396BE83 /* Load_unic.cpp in Sources */, BD3885019C559F33785EFB41 /* Load_wav.cpp in Sources */, 00BB926F99087821C74F78AF /* Load_xm.cpp in Sources */, F57A8B7BD497A5ADB0A101BB /* Load_xmf.cpp in Sources */, diff --git a/build/xcode-macosx/libopenmpt.xcodeproj/project.pbxproj b/build/xcode-macosx/libopenmpt.xcodeproj/project.pbxproj index 2852ec529b0..3691e179fb6 100644 --- a/build/xcode-macosx/libopenmpt.xcodeproj/project.pbxproj +++ b/build/xcode-macosx/libopenmpt.xcodeproj/project.pbxproj @@ -76,6 +76,7 @@ 81C26ED360DF89053CE8E513 /* Load_gmc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D668A71B68F6710DD1CF155B /* Load_gmc.cpp */; }; 8479AC1F9F461AD1A316B25F /* Load_digi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D14936A73E714519400434E7 /* Load_digi.cpp */; }; 84A9E60B844CC93DBEA17C4B /* MixerLoops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B810F0D30F7663C5C1847F13 /* MixerLoops.cpp */; }; + 84F9B8439FC626F5A396BE83 /* Load_unic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EEAF28B0C1300FD0DA5F0CB /* Load_unic.cpp */; }; 8676CA3F6593E471419D407F /* Load_gt2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 10E0ADC7A36E77B90C471C07 /* Load_gt2.cpp */; }; 8751165421750B86D19AEC94 /* mptStringBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C510221C396A670EB74DF05C /* mptStringBuffer.cpp */; }; 877C818BA248F03DA61987CB /* Load_puma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DB68B53DADE99C5DC718993 /* Load_puma.cpp */; }; @@ -488,6 +489,7 @@ 9E737DF712CDC2E990B14C37 /* Distortion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Distortion.h; path = ../../soundlib/plugins/dmo/Distortion.h; sourceTree = ""; }; 9E8AC865F88BDF57BFD2D6A5 /* tests_binary.hpp */ = {isa = PBXFileReference; lastKnownFileType = text; name = tests_binary.hpp; path = ../../src/mpt/binary/tests/tests_binary.hpp; sourceTree = ""; }; 9EB0D073130B156590EE9EB3 /* Compressor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Compressor.h; path = ../../soundlib/plugins/dmo/Compressor.h; sourceTree = ""; }; + 9EEAF28B0C1300FD0DA5F0CB /* Load_unic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Load_unic.cpp; path = ../../soundlib/Load_unic.cpp; sourceTree = ""; }; 9F187E69B9E4ED1BBDB584A9 /* outputfile.hpp */ = {isa = PBXFileReference; lastKnownFileType = text; name = outputfile.hpp; path = ../../src/mpt/io_file/outputfile.hpp; sourceTree = ""; }; 9F2E1C1AF92F330CC0762A5A /* BuildSettingsCompiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BuildSettingsCompiler.h; path = ../../common/BuildSettingsCompiler.h; sourceTree = ""; }; 9FCB791A628BD98CBFC0B75A /* dos_memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = text; name = dos_memory.hpp; path = ../../src/mpt/osinfo/dos_memory.hpp; sourceTree = ""; }; @@ -1352,6 +1354,7 @@ 7D070D1F43950491B1972B5F /* Load_symmod.cpp */, 54393E69E6C7085B4F9FACA9 /* Load_uax.cpp */, 7FD19A57125F64497B380897 /* Load_ult.cpp */, + 9EEAF28B0C1300FD0DA5F0CB /* Load_unic.cpp */, 694D3F69FBDB095B64B3ADA9 /* Load_wav.cpp */, 2A6435F76EB2DB69B0DA1437 /* Load_xm.cpp */, 2EF17543C17F3F352A57E383 /* Load_xmf.cpp */, @@ -1695,6 +1698,7 @@ CF116C1742F9E3C965479257 /* Load_symmod.cpp in Sources */, 4174F40120920E33FC9B6A41 /* Load_uax.cpp in Sources */, F4EF37CFD40C5201B015AE0F /* Load_ult.cpp in Sources */, + 84F9B8439FC626F5A396BE83 /* Load_unic.cpp in Sources */, BD3885019C559F33785EFB41 /* Load_wav.cpp in Sources */, 00BB926F99087821C74F78AF /* Load_xm.cpp in Sources */, F57A8B7BD497A5ADB0A101BB /* Load_xmf.cpp in Sources */, diff --git a/common/versionNumber.h b/common/versionNumber.h index 394ceaa1b6e..a367dfc62ac 100644 --- a/common/versionNumber.h +++ b/common/versionNumber.h @@ -16,4 +16,4 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 32 #define VER_MINOR 00 -#define VER_MINORMINOR 25 +#define VER_MINORMINOR 26 diff --git a/contrib/fuzzing/all_formats.dict b/contrib/fuzzing/all_formats.dict index 7882bebf19e..247a05370b5 100644 --- a/contrib/fuzzing/all_formats.dict +++ b/contrib/fuzzing/all_formats.dict @@ -251,6 +251,9 @@ symmod="SymM\x00\x00\x00\x01\xFF\xFF\xFF\xFF\x00\x00\x00" ult="MAS_UTrack_V004" +#unic="UNIC" +#unic="\x00\x00\x00\x00" + umx="\xC1\x83\x2A\x9E" umx="music" umx="sound" diff --git a/installer/filetypes-multi-arch-per-arch-retro.iss b/installer/filetypes-multi-arch-per-arch-retro.iss index 8457561515c..d7fe128a66d 100644 --- a/installer/filetypes-multi-arch-per-arch-retro.iss +++ b/installer/filetypes-multi-arch-per-arch-retro.iss @@ -97,6 +97,7 @@ Root: HKLM; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAsso Root: HKLM; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".symmod"; ValueData: {#OpenMPTFile}; Components: {#Component} Root: HKLM; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".ult"; ValueData: {#OpenMPTFile}; Components: {#Component} Root: HKLM; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".umx"; ValueData: {#OpenMPTFile}; Components: {#Component} +Root: HKLM; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".unic"; ValueData: {#OpenMPTFile}; Components: {#Component} Root: HKLM; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".wow"; ValueData: {#OpenMPTFile}; Components: {#Component} Root: HKLM; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".xmf"; ValueData: {#OpenMPTFile}; Components: {#Component} diff --git a/installer/filetypes-multi-arch-per-arch.iss b/installer/filetypes-multi-arch-per-arch.iss index 9e4f78e62e1..4fe649c9a47 100644 --- a/installer/filetypes-multi-arch-per-arch.iss +++ b/installer/filetypes-multi-arch-per-arch.iss @@ -97,6 +97,7 @@ Root: HKA; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssoc Root: HKA; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".symmod"; ValueData: {#OpenMPTFile}; Components: {#Component} Root: HKA; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".ult"; ValueData: {#OpenMPTFile}; Components: {#Component} Root: HKA; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".umx"; ValueData: {#OpenMPTFile}; Components: {#Component} +Root: HKA; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".unic"; ValueData: {#OpenMPTFile}; Components: {#Component} Root: HKA; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".wow"; ValueData: {#OpenMPTFile}; Components: {#Component} Root: HKA; Subkey: "SOFTWARE\Clients\Media\{#OpenMPTarch}\Capabilities\FileAssociations"; ValueType: string; ValueName: ".xmf"; ValueData: {#OpenMPTFile}; Components: {#Component} diff --git a/installer/filetypes-multi-arch-retro.iss b/installer/filetypes-multi-arch-retro.iss index c81e6815b04..36c3eab10fe 100644 --- a/installer/filetypes-multi-arch-retro.iss +++ b/installer/filetypes-multi-arch-retro.iss @@ -72,6 +72,7 @@ Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".symmod"; ValueData: "" Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".ult"; ValueData: "" Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".umx"; ValueData: "" +Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".unic"; ValueData: "" Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".wow"; ValueData: "" Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".xmf"; ValueData: "" diff --git a/installer/filetypes-multi-arch.iss b/installer/filetypes-multi-arch.iss index 0a07e1a9f06..bde59d32849 100644 --- a/installer/filetypes-multi-arch.iss +++ b/installer/filetypes-multi-arch.iss @@ -72,6 +72,7 @@ Root: HKA; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; V Root: HKA; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".symmod"; ValueData: "" Root: HKA; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".ult"; ValueData: "" Root: HKA; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".umx"; ValueData: "" +Root: HKA; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".unic"; ValueData: "" Root: HKA; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".wow"; ValueData: "" Root: HKA; Subkey: "SOFTWARE\Classes\Applications\OpenMPT.exe\SupportedTypes"; ValueType: string; ValueName: ".xmf"; ValueData: "" diff --git a/soundlib/Load_unic.cpp b/soundlib/Load_unic.cpp new file mode 100644 index 00000000000..dade7cbd644 --- /dev/null +++ b/soundlib/Load_unic.cpp @@ -0,0 +1,254 @@ +/* + * Load_unic.cpp + * ------------- + * Purpose: UNIC Tracker v1 loader + * Notes : UNIC Tracker is actually a module packer, not a stand-alone tracker software. + * Support is mostly included to avoid such modules being recognized as regular M.K. MODs. + * UNIC files without file signature are not supported. + * Authors: OpenMPT Devs + * Based on ProWizard by Asle + * The OpenMPT source code is released under the BSD lUNICnse. Read LUNICNSE for more details. + */ + + +#include "stdafx.h" +#include "Loaders.h" +#include "MODTools.h" + +OPENMPT_NAMESPACE_BEGIN + + +static bool ValidateUNICSampleHeader(const MODSampleHeader &sampleHeader) +{ + if(CountInvalidChars(mpt::as_span(sampleHeader.name).subspan(0, 20))) + return false; + int16be finetune; + memcpy(&finetune, &sampleHeader.name[20], sizeof(int16be)); + if(finetune < -42 || finetune > 8) // African Dreams.unic has finetune = -42 + return false; + if(sampleHeader.finetune != 0 || sampleHeader.volume > 64) + return false; + if(sampleHeader.length >= 0x8000 || sampleHeader.loopStart >= 0x8000 || sampleHeader.loopLength >= 0x8000) + return false; + if(!sampleHeader.length && (sampleHeader.loopStart > 0 || sampleHeader.loopLength > 1 || finetune != 0)) + return false; + if(sampleHeader.length && sampleHeader.length < sampleHeader.loopStart + sampleHeader.loopLength) + return false; + return true; +} + + +static bool ValidateUNICPatternEntry(const std::array data, SAMPLEINDEX lastSample) +{ + if(data[0] > 0x74) + return false; + if((data[0] & 0x3F) > 0x24) + return false; + const uint8 command = (data[1] & 0x0F), param = data[2]; + if(command == 0x0C && param > 80) // Mastercoma.unic has values > 64 + return false; + if(command == 0x0B && param > 0x7F) + return false; + if(command == 0x0D && param > 0x40) + return false; + if(uint8 instr = ((data[0] >> 2) & 0x30) | ((data[1] >> 4) & 0x0F); instr > lastSample) + return false; + return true; +} + + +struct UNICFileHeader +{ + using PatternData = std::array, 64 * 4>; + + std::array title; + MODSampleHeader sampleHeaders[31]; + MODFileHeader fileHeader; + std::array magic; + PatternData firstPattern; + + struct ValidationResult + { + uint32 totalSampleSize = 0; + SAMPLEINDEX lastSample = 0; + uint8 numPatterns = 0; + }; + + ValidationResult IsValid() const noexcept + { + if(!IsMagic(magic.data(), "M.K.") && !IsMagic(magic.data(), "UNIC") && !IsMagic(magic.data(), "\0\0\0\0")) + return {}; + + if(CountInvalidChars(title)) + return {}; + + uint32 totalSampleSize = 0; + SAMPLEINDEX lastSample = 0; + for(SAMPLEINDEX smp = 1; smp <= 31; smp++) + { + const MODSampleHeader &sampleHeader = sampleHeaders[smp - 1]; + if(!ValidateUNICSampleHeader(sampleHeader)) + return {}; + totalSampleSize += sampleHeader.length * 2; + if(sampleHeader.length) + lastSample = smp; + } + if(totalSampleSize < 256) + return {}; + + if(!fileHeader.numOrders || fileHeader.numOrders >= 128) + return {}; + + uint8 numPatterns = 0; + for(uint8 pat = 0; pat < 128; pat++) + { + if(fileHeader.orderList[pat] >= 128 || (pat > fileHeader.numOrders + 1 && fileHeader.orderList[pat] != 0)) + return {}; + numPatterns = std::max(numPatterns, fileHeader.orderList[pat].get()); + } + numPatterns++; + + for(const auto data : firstPattern) + { + if(!ValidateUNICPatternEntry(data, lastSample)) + return {}; + } + + return {totalSampleSize, lastSample, numPatterns}; + } + +}; + +MPT_BINARY_STRUCT(UNICFileHeader, 1084 + 768) + + +CSoundFile::ProbeResult CSoundFile::ProbeFileHeaderUNIC(MemoryFileReader file, const uint64 *pfilesize) +{ + UNICFileHeader fileHeader; + if(!file.ReadStruct(fileHeader)) + return ProbeWantMoreData; + + const auto headerValidationResult = fileHeader.IsValid(); + if(!headerValidationResult.totalSampleSize) + return ProbeFailure; + + if(pfilesize && *pfilesize < 1084 + headerValidationResult.numPatterns * 64u * 4u * 3u + headerValidationResult.totalSampleSize) + return ProbeFailure; + + return ProbeSuccess; +} + + +bool CSoundFile::ReadUNIC(FileReader &file, ModLoadingFlags loadFlags) +{ + UNICFileHeader fileHeader; + file.Rewind(); + if(!file.ReadStruct(fileHeader)) + return false; + + const auto headerValidationResult = fileHeader.IsValid(); + if(!headerValidationResult.totalSampleSize) + return false; + if(loadFlags == onlyVerifyHeader) + return true; + + InitializeGlobals(MOD_TYPE_MOD, 4); + + // Reading patterns (done first to avoid doing unnecessary work if this is a real ProTracker M.K. file) + file.Seek(1084); + if(!file.CanRead(headerValidationResult.numPatterns * 64u * 4u * 3u)) + return false; + if(loadFlags & loadPatternData) + Patterns.ResizeArray(headerValidationResult.numPatterns); + uint16 numNotes = 0; + ModCommand::INSTR allInstrs = 0; + for(PATTERNINDEX pat = 0; pat < headerValidationResult.numPatterns; pat++) + { + if(!(loadFlags & loadPatternData) || !Patterns.Insert(pat, 64)) + { + UNICFileHeader::PatternData pattern; + if(!file.ReadArray(pattern)) + return false; + + for(const auto data : pattern) + { + if(!ValidateUNICPatternEntry(data, headerValidationResult.lastSample)) + return false; + } + continue; + } + + for(ModCommand &m : Patterns[pat]) + { + const auto data = file.ReadArray(); + if(!ValidateUNICPatternEntry(data, headerValidationResult.lastSample)) + return false; + + if(data[0] & 0x3F) + { + m.note = NOTE_MIDDLEC - 13 + (data[0] & 0x3F); + numNotes++; + } + m.instr = ((data[0] >> 2) & 0x30) | ((data[1] >> 4) & 0x0F); + allInstrs |= m.instr; + ConvertModCommand(m, data[1] & 0x0F, data[2]); + } + } + if(numNotes < 16 || !allInstrs) + return false; + + // Reading samples + if(!file.CanRead(headerValidationResult.totalSampleSize)) + return false; + m_nSamples = 31; + for(SAMPLEINDEX smp = 1; smp <= 31; smp++) + { + const MODSampleHeader &sampleHeader = fileHeader.sampleHeaders[smp - 1]; + ModSample &mptSmp = Samples[smp]; + sampleHeader.ConvertToMPT(mptSmp, true); + int16be finetune; + memcpy(&finetune, &sampleHeader.name[20], sizeof(int16be)); + mptSmp.nFineTune = MOD2XMFineTune(-finetune); + // Metal Jumpover.unic (and various other files) has incorrect loop starts expressed as DWORDs + // But for the flute sample African Dreams.unic this fix doesn't seem to be quite right + if(mptSmp.uFlags[CHN_LOOP] && mptSmp.nLoopStart > 0 + && mptSmp.nLoopStart + mptSmp.nLoopEnd >= mptSmp.nLength - 2 + && mptSmp.nLoopStart + mptSmp.nLoopEnd <= mptSmp.nLength) + { + mptSmp.nLoopEnd += mptSmp.nLoopStart; + mptSmp.nLoopStart += mptSmp.nLoopStart; + } + + m_szNames[smp] = mpt::String::ReadBuf(mpt::String::spacePadded, sampleHeader.name, 20); + + if(!(loadFlags & loadSampleData)) + continue; + SampleIO( + SampleIO::_8bit, + SampleIO::mono, + SampleIO::littleEndian, + SampleIO::signedPCM).ReadSample(Samples[smp], file); + } + + SetupMODPanning(true); + Order().SetDefaultSpeed(6); + Order().SetDefaultTempoInt(125); + ReadOrderFromArray(Order(), fileHeader.fileHeader.orderList, headerValidationResult.numPatterns); + m_nMinPeriod = 113 * 4; + m_nMaxPeriod = 856 * 4; + m_nSamplePreAmp = 64; + m_SongFlags.set(SONG_PT_MODE | SONG_IMPORTED); + m_playBehaviour.reset(kMODOneShotLoops); + m_playBehaviour.set(kMODIgnorePanning); + m_playBehaviour.set(kMODSampleSwap); // untested + + m_songName = mpt::String::ReadBuf(mpt::String::spacePadded, fileHeader.title); + + m_modFormat.formatName = UL_("UNIC Tracker"); + m_modFormat.type = UL_("unic"); + m_modFormat.charset = mpt::Charset::Amiga_no_C1; + + return true; +} + +OPENMPT_NAMESPACE_END diff --git a/soundlib/Sndfile.cpp b/soundlib/Sndfile.cpp index f35a6c3935d..94252ff9bb7 100644 --- a/soundlib/Sndfile.cpp +++ b/soundlib/Sndfile.cpp @@ -297,6 +297,7 @@ static constexpr FileFormatLoader ModuleFormatLoaders[] = MPT_DECLARE_FORMAT(STP), MPT_DECLARE_FORMAT(DSym), MPT_DECLARE_FORMAT(STX), + MPT_DECLARE_FORMAT(UNIC), // Magic bytes clash with MOD, must be tried first MPT_DECLARE_FORMAT(MOD), MPT_DECLARE_FORMAT(ICE), MPT_DECLARE_FORMAT(KRIS), diff --git a/soundlib/Sndfile.h b/soundlib/Sndfile.h index 0a2a9c2be1e..5b6682a8810 100644 --- a/soundlib/Sndfile.h +++ b/soundlib/Sndfile.h @@ -842,6 +842,7 @@ class CSoundFile static ProbeResult ProbeFileHeaderSTP(MemoryFileReader file, const uint64 *pfilesize); static ProbeResult ProbeFileHeaderSTX(MemoryFileReader file, const uint64 *pfilesize); static ProbeResult ProbeFileHeaderSymMOD(MemoryFileReader file, const uint64 *pfilesize); + static ProbeResult ProbeFileHeaderUNIC(MemoryFileReader file, const uint64 *pfilesize); static ProbeResult ProbeFileHeaderULT(MemoryFileReader file, const uint64 *pfilesize); static ProbeResult ProbeFileHeaderXM(MemoryFileReader file, const uint64 *pfilesize); static ProbeResult ProbeFileHeaderXMF(MemoryFileReader file, const uint64 *pfilesize); @@ -904,6 +905,7 @@ class CSoundFile bool ReadSTP(FileReader &file, ModLoadingFlags loadFlags = loadCompleteModule); bool ReadSTX(FileReader &file, ModLoadingFlags loadFlags = loadCompleteModule); bool ReadSymMOD(FileReader &file, ModLoadingFlags loadFlags = loadCompleteModule); + bool ReadUNIC(FileReader &file, ModLoadingFlags loadFlags = loadCompleteModule); bool ReadULT(FileReader &file, ModLoadingFlags loadFlags = loadCompleteModule); bool ReadXM(FileReader &file, ModLoadingFlags loadFlags = loadCompleteModule); bool ReadXMF(FileReader &file, ModLoadingFlags loadFlags = loadCompleteModule); diff --git a/soundlib/Tables.cpp b/soundlib/Tables.cpp index 79b36b240e1..3a2e034c1f2 100644 --- a/soundlib/Tables.cpp +++ b/soundlib/Tables.cpp @@ -111,6 +111,7 @@ static constexpr ModFormatInfo modFormatInfo[] = { UL_("Graoumf Tracker"), "gtk" }, { UL_("Graoumf Tracker 1 / 2"), "gt2" }, { UL_("UltraTracker"), "ult" }, + { UL_("UNIC Tracker"), "unic" }, { UL_("Mod's Grave"), "wow" }, { UL_("Astroidea XMF"), "xmf" }, // converted formats (no MODTYPE)