Compare commits

...

6 commits

Author SHA1 Message Date
Christopher Snowhill
2f23420a6c Icon: Liquid Glass style icon for macOS Tahoe
Still need to adjust the custom dock icon for this.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-07-17 03:48:13 -07:00
Christopher Snowhill
b4a3bc6fdc Apply recommended settings
Except for deployment target, which is staying at 10.13 for now.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-07-17 03:48:04 -07:00
Christopher Snowhill
6c0ca775cd VGMStream: Updated libvgmstream code base
Updated VGMStream to r2023-66-g6eb1f65c

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-07-17 03:43:02 -07:00
Christopher Snowhill
f05aada52d Dependencies: Update bundled libraries
libvgm: 7cad78367fa35c3f7b3ae16a296d31063cd3a7e4
flac: v1.5.0
ogg: v1.3.6
opus: v1.5.2-153-g7aa5be98
opusfile: v0.12-51-g24d6e75

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-07-17 03:41:57 -07:00
Christopher Snowhill
aebc52880b libvgm: Add exception handling, and move buffer
Move the player buffer off the stack, as well as adding exception
handlers to the init, playback, and shutdown code.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-07-15 06:50:03 -07:00
Christopher Snowhill
e8a7eaf954 libvgm: Fix track ending without glitches
Track rendering returns the number of bytes rendered, which also cuts
short when the track ends. So properly react to this count when running
the player, so we don't keep trying to render, or pick up uninitialized
data from the buffer.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-07-15 06:32:27 -07:00
164 changed files with 2771 additions and 1381 deletions

2
.gitignore vendored
View file

@ -36,7 +36,7 @@ Xcode-config/SENTRY_SETTINGS.xcconfig
/ThirdParty/ffmpeg/lib/libavformat.61.dylib
/ThirdParty/ffmpeg/lib/libavutil.59.dylib
/ThirdParty/ffmpeg/lib/libswresample.5.dylib
/ThirdParty/flac/lib/libFLAC.12.dylib
/ThirdParty/flac/lib/libFLAC.14.dylib
/ThirdParty/libid3tag/lib/libid3tag.a
/ThirdParty/libmad/lib/libmad.a
/ThirdParty/libopenmpt/lib/libopenmpt.a

View file

@ -693,7 +693,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "CogAudio" */;
compatibilityVersion = "Xcode 12.0";
@ -905,6 +905,7 @@
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
PRODUCT_MODULE_NAME = CogAudio;
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "CogAudio-Bridging-Header.h";
SYMROOT = ../build;
};
@ -952,6 +953,7 @@
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
PRODUCT_MODULE_NAME = CogAudio;
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OBJC_BRIDGING_HEADER = "CogAudio-Bridging-Header.h";
SYMROOT = ../build;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -7,15 +7,5 @@
<string>$(PRODUCT_BUNDLE_IDENTIFIER)-spks</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)-spki</string>
</array>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>

View file

@ -129,7 +129,7 @@
836EF0C827BB91E600BF35B2 /* libogg.0.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 836EF0C427BB919300BF35B2 /* libogg.0.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
836EF0C927BB91E900BF35B2 /* libvorbisfile.3.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 836EF0C627BB91AB00BF35B2 /* libvorbisfile.3.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
836EF0CA27BB91EB00BF35B2 /* libvorbis.0.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 836EF0C527BB91AB00BF35B2 /* libvorbis.0.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
836EF0CB27BB91EE00BF35B2 /* libFLAC.12.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 836EF0C727BB91BC00BF35B2 /* libFLAC.12.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
836EF0CB27BB91EE00BF35B2 /* libFLAC.14.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 836EF0C727BB91BC00BF35B2 /* libFLAC.14.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
836EF0E027BB98A800BF35B2 /* libopus.0.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 836EF0CC27BB94E100BF35B2 /* libopus.0.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
836EF0E127BB98AB00BF35B2 /* libopusfile.0.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 836EF0CD27BB94F100BF35B2 /* libopusfile.0.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
836F5BF91A357A01002730CC /* sidplay.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8314D6411A354DFF00EEE8E6 /* sidplay.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@ -158,6 +158,7 @@
83988F0E27BE0A5900A0E89A /* RedundantPlaylistDataStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 83988F0D27BE0A5900A0E89A /* RedundantPlaylistDataStore.m */; };
8399D4E21805A55000B503B1 /* XmlContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8399D4E01805A55000B503B1 /* XmlContainer.m */; };
839B837F286D7F8D00F529EE /* NumberHertzToStringTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 839B837E286D7F8D00F529EE /* NumberHertzToStringTransformer.swift */; };
839C957A2DF8E70900D007EB /* Cog26.icon in Resources */ = {isa = PBXBuildFile; fileRef = 839C95792DF8E70900D007EB /* Cog26.icon */; };
839DA7CF274A2D4C001B18E5 /* NSDictionary+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 839DA7CE274A2D4C001B18E5 /* NSDictionary+Merge.m */; };
839E56F52879625100DFB5F4 /* SADIE_D02-96000.mhr in Resources */ = {isa = PBXBuildFile; fileRef = 839E56F12879625100DFB5F4 /* SADIE_D02-96000.mhr */; };
839E876E2D5DA0AC00A13526 /* RubberbandEngineTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 839E876D2D5DA0AC00A13526 /* RubberbandEngineTransformer.m */; };
@ -721,7 +722,7 @@
836DF617298F6F1700CD0580 /* libsoxr.0.dylib in CopyFiles */,
836EF0E127BB98AB00BF35B2 /* libopusfile.0.dylib in CopyFiles */,
836EF0E027BB98A800BF35B2 /* libopus.0.dylib in CopyFiles */,
836EF0CB27BB91EE00BF35B2 /* libFLAC.12.dylib in CopyFiles */,
836EF0CB27BB91EE00BF35B2 /* libFLAC.14.dylib in CopyFiles */,
836EF0CA27BB91EB00BF35B2 /* libvorbis.0.dylib in CopyFiles */,
83256B69286661FC0036D9C0 /* libmpg123.0.dylib in CopyFiles */,
836EF0C927BB91E900BF35B2 /* libvorbisfile.3.dylib in CopyFiles */,
@ -951,7 +952,7 @@
836EF0C427BB919300BF35B2 /* libogg.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libogg.0.dylib; path = ThirdParty/ogg/lib/libogg.0.dylib; sourceTree = "<group>"; };
836EF0C527BB91AB00BF35B2 /* libvorbis.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libvorbis.0.dylib; path = ThirdParty/vorbis/lib/libvorbis.0.dylib; sourceTree = "<group>"; };
836EF0C627BB91AB00BF35B2 /* libvorbisfile.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libvorbisfile.3.dylib; path = ThirdParty/vorbis/lib/libvorbisfile.3.dylib; sourceTree = "<group>"; };
836EF0C727BB91BC00BF35B2 /* libFLAC.12.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libFLAC.12.dylib; path = ThirdParty/flac/lib/libFLAC.12.dylib; sourceTree = "<group>"; };
836EF0C727BB91BC00BF35B2 /* libFLAC.14.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libFLAC.14.dylib; path = ThirdParty/flac/lib/libFLAC.14.dylib; sourceTree = "<group>"; };
836EF0CC27BB94E100BF35B2 /* libopus.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopus.0.dylib; path = ThirdParty/opus/lib/libopus.0.dylib; sourceTree = "<group>"; };
836EF0CD27BB94F100BF35B2 /* libopusfile.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopusfile.0.dylib; path = ThirdParty/opusfile/lib/libopusfile.0.dylib; sourceTree = "<group>"; };
836F6B2518BDB80D0095E648 /* vgmstream.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = vgmstream.xcodeproj; path = Plugins/vgmstream/vgmstream.xcodeproj; sourceTree = "<group>"; };
@ -1004,6 +1005,7 @@
8399D4E01805A55000B503B1 /* XmlContainer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XmlContainer.m; sourceTree = "<group>"; };
8399D4E11805A55000B503B1 /* XmlContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XmlContainer.h; sourceTree = "<group>"; };
839B837E286D7F8D00F529EE /* NumberHertzToStringTransformer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = NumberHertzToStringTransformer.swift; path = Transformers/NumberHertzToStringTransformer.swift; sourceTree = "<group>"; };
839C95792DF8E70900D007EB /* Cog26.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = Cog26.icon; sourceTree = "<group>"; };
839DA7CB274A2D4C001B18E5 /* NSDictionary+Merge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Merge.h"; sourceTree = "<group>"; };
839DA7CE274A2D4C001B18E5 /* NSDictionary+Merge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Merge.m"; sourceTree = "<group>"; };
839E3B53286595D700880EA2 /* GeneralPane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GeneralPane.h; path = Preferences/Preferences/GeneralPane.h; sourceTree = "<group>"; };
@ -1154,7 +1156,7 @@
835FAC7D27BCDF5B00BA8562 /* libavif.a */,
836EF0CD27BB94F100BF35B2 /* libopusfile.0.dylib */,
836EF0CC27BB94E100BF35B2 /* libopus.0.dylib */,
836EF0C727BB91BC00BF35B2 /* libFLAC.12.dylib */,
836EF0C727BB91BC00BF35B2 /* libFLAC.14.dylib */,
836EF0C527BB91AB00BF35B2 /* libvorbis.0.dylib */,
836EF0C627BB91AB00BF35B2 /* libvorbisfile.3.dylib */,
836EF0C427BB919300BF35B2 /* libogg.0.dylib */,
@ -1473,6 +1475,7 @@
29B97314FDCFA39411CA2CEA /* Cog */ = {
isa = PBXGroup;
children = (
839C95792DF8E70900D007EB /* Cog26.icon */,
0A1B412E286F6301008A6A44 /* Localizable.stringsdict */,
83D0380E24A40DF2004CF90F /* CogAssets.xcassets */,
83859520234FEB35004E9946 /* Cog.entitlements */,
@ -2043,7 +2046,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1500;
LastUpgradeCheck = 2600;
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Cog" */;
compatibilityVersion = "Xcode 12.0";
@ -2467,6 +2470,7 @@
839614AD286EDA5C00D3EEDB /* SpectrumWindow.xib in Resources */,
171B57DD0C091F2B00F6AFAF /* flac.icns in Resources */,
171B57DE0C091F2B00F6AFAF /* m4a.icns in Resources */,
839C957A2DF8E70900D007EB /* Cog26.icon in Resources */,
839E56F52879625100DFB5F4 /* SADIE_D02-96000.mhr in Resources */,
830C37A127B95E3000E02BB0 /* Equalizer.xib in Resources */,
171B57DF0C091F2B00F6AFAF /* mp3.icns in Resources */,
@ -2943,10 +2947,15 @@
C01FCF4B08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_APPICON_NAME = Cog26;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = "Cog color";
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
ENABLE_APP_SANDBOX = YES;
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES;
ENABLE_USER_SELECTED_FILES = readwrite;
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/ThirdParty/Frameworks";
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
@ -2971,6 +2980,7 @@
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/ThirdParty/rubberband/lib",
);
MACOSX_DEPLOYMENT_TARGET = 10.13;
OTHER_CFLAGS = (
"-D__MACOSX__",
"-DHAVE_CONFIG_H",
@ -2989,6 +2999,9 @@
);
PRODUCT_BUNDLE_IDENTIFIER = org.cogx.cog;
PRODUCT_NAME = Cog;
PROVISIONING_PROFILE_SPECIFIER = "";
RUNTIME_EXCEPTION_ALLOW_JIT = YES;
RUNTIME_EXCEPTION_DISABLE_LIBRARY_VALIDATION = YES;
SDKROOT = macosx;
SWIFT_OBJC_BRIDGING_HEADER = "Cog-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@ -3000,9 +3013,14 @@
C01FCF4C08A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_APPICON_NAME = Cog26;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = "Cog color";
COMBINE_HIDPI_IMAGES = YES;
DEAD_CODE_STRIPPING = YES;
ENABLE_APP_SANDBOX = YES;
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES;
ENABLE_USER_SELECTED_FILES = readwrite;
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/ThirdParty/Frameworks";
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
HEADER_SEARCH_PATHS = ThirdParty/avif/include;
@ -3025,6 +3043,7 @@
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/ThirdParty/rubberband/lib",
);
MACOSX_DEPLOYMENT_TARGET = 10.13;
OTHER_CFLAGS = (
"-D__MACOSX__",
"-DHAVE_CONFIG_H",
@ -3043,6 +3062,9 @@
);
PRODUCT_BUNDLE_IDENTIFIER = org.cogx.cog;
PRODUCT_NAME = Cog;
PROVISIONING_PROFILE_SPECIFIER = "";
RUNTIME_EXCEPTION_ALLOW_JIT = YES;
RUNTIME_EXCEPTION_DISABLE_LIBRARY_VALIDATION = YES;
SDKROOT = macosx;
SWIFT_OBJC_BRIDGING_HEADER = "Cog-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@ -3079,7 +3101,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_ENTITLEMENTS = Cog.entitlements;
COPY_PHASE_STRIP = NO;
ENABLE_HARDENED_RUNTIME = YES;
DEAD_CODE_STRIPPING = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
@ -3093,6 +3115,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.13;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -3124,8 +3147,8 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_ENTITLEMENTS = Cog.entitlements;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -3136,6 +3159,7 @@
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.13;
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SWIFT_COMPILATION_MODE = wholemodule;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 720 720" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1.00628,0.269633,-0.322362,1.20307,-166.912,-364.608)">
<g>
<path d="M688.647,164.035C696.109,164.437 702.246,169.104 703.433,175.279C705.212,184.454 707.761,197.712 709.467,206.587C710.54,212.171 715.688,216.592 722.334,217.638C735.557,219.762 748.579,222.681 761.306,226.357C767.68,228.229 774.772,226.554 779.036,222.172C785.832,215.21 795.964,204.793 802.977,197.584C807.701,192.727 815.814,191.25 822.524,194.026C834.796,199.178 846.699,204.926 858.161,211.252C864.383,214.721 866.908,221.329 864.244,227.173C860.301,235.863 854.582,248.41 850.754,256.809C848.346,262.095 850.161,268.076 855.292,271.761C865.473,279.131 875.006,287.104 883.831,295.61C888.231,299.897 895.374,301.413 901.686,299.401C911.734,296.214 926.736,291.43 937.119,288.12C944.113,285.889 952.022,288.003 956.173,293.213C963.722,302.807 970.594,312.763 976.739,323.035C980.053,328.641 978.29,335.42 972.49,339.367C963.88,345.243 951.427,353.719 943.091,359.391C937.846,362.961 935.842,368.901 938.083,374.238C942.494,384.878 945.984,395.771 948.542,406.828C949.79,412.381 955.07,416.681 961.74,417.578C972.346,419.02 988.197,421.151 999.17,422.626C1006.56,423.62 1012.15,428.76 1012.63,435.009C1013.43,446.473 1013.43,457.967 1012.61,469.43C1012.13,475.673 1006.55,480.808 999.167,481.801C988.198,483.289 972.346,485.421 961.736,486.847C955.059,487.745 949.774,492.051 948.524,497.61C945.984,508.67 942.495,519.562 938.1,530.207C935.862,535.538 937.864,541.471 943.103,545.037C951.427,550.721 963.88,559.197 972.5,565.063C978.306,569.014 980.071,575.799 976.754,581.411C970.594,591.677 963.722,601.633 956.16,611.219C952.012,616.424 944.112,618.536 937.125,616.308C926.736,613.01 911.734,608.226 901.693,605.025C895.374,603.01 888.223,604.528 883.817,608.82C875.006,617.336 865.473,625.31 855.303,632.691C850.178,636.372 848.366,642.347 850.772,647.626C854.582,656.03 860.301,668.578 864.259,677.263C866.926,683.113 864.398,689.728 858.17,693.201C846.699,699.515 834.796,705.262 822.516,710.402C815.813,713.175 807.709,711.7 802.989,706.848C795.964,699.647 785.832,689.23 779.05,682.258C774.782,677.871 767.681,676.195 761.3,678.069C748.579,681.759 735.557,684.678 722.337,686.817C715.699,687.862 710.557,692.278 709.485,697.856C707.761,706.728 705.212,719.986 703.448,729.163C702.261,735.345 696.118,740.016 688.648,740.419C674.94,741.09 661.196,741.09 647.488,740.405C640.026,740.003 633.889,735.336 632.702,729.161C630.923,719.986 628.375,706.728 626.669,697.854C625.596,692.269 620.448,687.848 613.802,686.802C600.579,684.678 587.557,681.759 574.83,678.083C568.456,676.211 561.364,677.886 557.1,682.268C550.304,689.23 540.172,699.647 533.159,706.856C528.435,711.713 520.322,713.19 513.612,710.414C501.339,705.263 489.437,699.515 477.975,693.189C471.753,689.72 469.228,683.112 471.892,677.268C475.835,668.578 481.554,656.03 485.382,647.632C487.79,642.346 485.975,636.365 480.845,632.68C470.663,625.31 461.13,617.336 452.305,608.83C447.905,604.543 440.762,603.027 434.45,605.039C424.402,608.226 409.4,613.01 399.017,616.32C392.023,618.551 384.114,616.437 379.963,611.227C372.414,601.633 365.542,591.677 359.397,581.405C356.083,575.799 357.846,569.02 363.646,565.073C372.256,559.197 384.709,550.721 393.044,545.049C398.29,541.479 400.294,535.539 398.053,530.202C393.641,519.562 390.152,508.67 387.594,497.613C386.346,492.06 381.066,487.76 374.397,486.863C363.79,485.42 347.939,483.289 336.967,481.813C329.577,480.82 323.992,475.682 323.511,469.434C322.709,457.968 322.709,446.472 323.527,435.007C324.008,428.766 329.587,423.633 336.97,422.64C347.939,421.152 363.79,419.02 374.399,417.594C381.076,416.696 386.362,412.39 387.612,406.831C390.152,395.771 393.642,384.878 398.036,374.232C400.274,368.902 398.272,362.969 393.033,359.403C384.709,353.719 372.256,345.243 363.636,339.377C357.83,335.426 356.065,328.641 359.382,323.029C365.542,312.763 372.414,302.807 379.976,293.221C384.124,288.016 392.024,285.904 399.011,288.132C409.4,291.43 424.402,296.214 434.443,299.415C440.762,301.43 447.913,299.912 452.319,295.62C461.13,287.104 470.663,279.131 480.832,271.75C485.957,268.069 487.77,262.094 485.364,256.815C481.554,248.41 475.835,235.863 471.877,227.178C469.21,221.328 471.738,214.713 477.966,211.24C489.437,204.926 501.339,199.178 513.62,194.038C520.323,191.265 528.427,192.74 533.147,197.592C540.172,204.793 550.304,215.21 557.086,222.182C561.354,226.569 568.455,228.245 574.836,226.371C587.557,222.681 600.579,219.762 613.798,217.623C620.437,216.578 625.579,212.162 626.651,206.584C628.375,197.712 630.923,184.454 632.687,175.278C633.874,169.096 640.018,164.424 647.488,164.022C661.196,163.351 674.94,163.351 688.647,164.035Z" style="fill:rgb(170,170,170);"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5 KiB

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 444 444" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-290.495,-290.495)">
<g transform="matrix(1.64928,0,0,2.40966,-344.908,-858.521)">
<ellipse cx="519.565" cy="568.761" rx="134.304" ry="91.924" style="fill:rgb(255,200,0);"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 701 B

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 207 234" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-421.248,-394.96)">
<g transform="matrix(11.2166,0,0,11.2166,395.945,394.96)">
<path d="M2.256,19.17C2.256,20.322 2.93,20.859 3.721,20.859C4.063,20.859 4.424,20.752 4.766,20.557L19.453,11.924C20.361,11.397 20.693,11.025 20.693,10.43C20.693,9.824 20.361,9.453 19.453,8.926L4.766,0.293C4.424,0.098 4.063,0 3.721,0C2.93,0 2.256,0.527 2.256,1.68L2.256,19.17Z" style="fill:rgb(226,255,0);fill-opacity:0.85;fill-rule:nonzero;"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 950 B

170
Cog26.icon/icon.json Normal file
View file

@ -0,0 +1,170 @@
{
"fill" : "automatic",
"groups" : [
{
"blend-mode" : "plus-lighter",
"blur-material" : 1,
"layers" : [
{
"blend-mode-specializations" : [
{
"value" : "plus-lighter"
},
{
"appearance" : "tinted",
"value" : "plus-darker"
}
],
"fill-specializations" : [
{
"value" : {
"automatic-gradient" : "extended-gray:1.00000,1.00000"
}
},
{
"appearance" : "tinted",
"value" : {
"solid" : "srgb:0.74968,0.74968,0.74968,1.00000"
}
}
],
"glass" : true,
"image-name" : "play.svg",
"name" : "play",
"opacity" : 0.51,
"position" : {
"scale" : 1.06,
"translation-in-points" : [
21,
0
]
}
}
],
"shadow" : {
"kind" : "layer-color",
"opacity" : 1
},
"specular" : true,
"translucency-specializations" : [
{
"value" : {
"enabled" : true,
"value" : 1
}
},
{
"appearance" : "tinted",
"value" : {
"enabled" : false,
"value" : 1
}
}
]
},
{
"blur-material" : 0.53,
"hidden" : false,
"layers" : [
{
"fill-specializations" : [
{
"value" : {
"automatic-gradient" : "srgb:1.00000,0.45770,0.00000,1.00000"
}
},
{
"appearance" : "tinted",
"value" : {
"linear-gradient" : [
"gray:0.69290,1.00000",
"srgb:0.30390,0.30390,0.30390,1.00000"
]
}
}
],
"glass" : true,
"hidden" : false,
"image-name" : "orb.svg",
"name" : "orb",
"position" : {
"scale" : 1.15,
"translation-in-points" : [
0,
0
]
}
}
],
"lighting" : "combined",
"name" : "Group",
"position" : {
"scale" : 1,
"translation-in-points" : [
0,
0
]
},
"shadow" : {
"kind" : "layer-color",
"opacity" : 1
},
"specular" : true,
"translucency" : {
"enabled" : true,
"value" : 0
}
},
{
"blur-material" : null,
"layers" : [
{
"blend-mode" : "normal",
"fill-specializations" : [
{
"value" : "automatic"
},
{
"appearance" : "light",
"value" : {
"automatic-gradient" : "extended-gray:0.45594,1.00000"
}
},
{
"appearance" : "dark",
"value" : {
"automatic-gradient" : "extended-gray:0.57231,1.00000"
}
}
],
"hidden" : false,
"image-name" : "cog.svg",
"name" : "cog",
"opacity" : 1,
"position" : {
"scale" : 1.15,
"translation-in-points" : [
0,
0
]
}
}
],
"lighting" : "combined",
"shadow" : {
"kind" : "layer-color",
"opacity" : 1
},
"specular" : true,
"translucency" : {
"enabled" : false,
"value" : 0.72
}
}
],
"supported-platforms" : {
"squares" : [
"macOS"
]
}
}

View file

@ -558,7 +558,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 83D3C4CE201C654F005564CB /* Build configuration list for PBXProject "libAdPlug" */;
@ -743,6 +743,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
@ -802,6 +803,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};

View file

@ -632,7 +632,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1640;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 8359FF3617FEF39F0060F3ED /* Build configuration list for PBXProject "File_Extractor" */;
@ -811,6 +811,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -863,6 +864,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -628,7 +628,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "GME" */;
compatibilityVersion = "Xcode 12.0";
@ -849,6 +849,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Debug;
@ -896,6 +897,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -249,7 +249,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 8343792F17F97BDB00584396 /* Build configuration list for PBXProject "HighlyAdvanced" */;
@ -375,6 +375,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -426,6 +427,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -188,7 +188,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 8360EF0A17F92C91005208A4 /* Build configuration list for PBXProject "HighlyExperimental" */;
@ -312,6 +312,7 @@
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -363,6 +364,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.13;
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -160,7 +160,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 834378D817F96E2600584396 /* Build configuration list for PBXProject "HighlyQuixotic" */;
@ -284,6 +284,7 @@
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -342,6 +343,7 @@
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -202,7 +202,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 8343786817F9658E00584396 /* Build configuration list for PBXProject "HighlyTheoretical" */;
@ -331,6 +331,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -391,6 +392,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -142,7 +142,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 836FB550182053D700B3AD2D /* Build configuration list for PBXProject "HivelyPlayer" */;
@ -261,6 +261,7 @@
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -314,6 +315,7 @@
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -243,7 +243,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "MPCDec" */;
compatibilityVersion = "Xcode 12.0";
@ -410,6 +410,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Debug;
@ -455,6 +456,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -2347,7 +2347,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 83E5EFB71FFEF7CC00659F0F /* Build configuration list for PBXProject "libOpenMPT" */;
@ -2611,6 +2611,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
USE_HEADERMAP = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@ -2684,6 +2685,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
USE_HEADERMAP = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";

View file

@ -251,7 +251,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 83848FB21807623F00E7332D /* Build configuration list for PBXProject "SSEQPlayer" */;
@ -380,6 +380,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -431,6 +432,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -187,7 +187,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "Shorten" */;
compatibilityVersion = "Xcode 12.0";
@ -362,6 +362,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Debug;
@ -414,6 +415,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -230,7 +230,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 83D731161A74968900CA1366 /* Build configuration list for PBXProject "g719" */;
@ -353,6 +353,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
@ -407,6 +408,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -959,7 +959,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 83C8B61C18AF57770071B040 /* Build configuration list for PBXProject "lazyusf2" */;
@ -1123,6 +1123,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -1175,6 +1176,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -186,7 +186,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
TargetAttributes = {
835FC6AF23F61BF0006960FA = {
@ -308,6 +308,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
@ -368,6 +369,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};

View file

@ -126,7 +126,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 83D3C675201D37D8005564CB /* Build configuration list for PBXProject "libbinio" */;
@ -233,6 +233,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
@ -292,6 +293,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};

View file

@ -274,7 +274,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
TargetAttributes = {
83D6761F26539A7100252130 = {
CreatedOnToolsVersion = 12.5;
@ -441,6 +441,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
@ -542,6 +543,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};

View file

@ -263,7 +263,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
TargetAttributes = {
83D676AD26539F4E00252130 = {
CreatedOnToolsVersion = 12.5;
@ -429,6 +429,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
@ -530,6 +531,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};

View file

@ -1147,7 +1147,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
TargetAttributes = {
EDBE8EF825E7E641001EB4A4 = {
CreatedOnToolsVersion = 12.5;
@ -1320,6 +1320,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
@ -1380,6 +1381,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};

View file

@ -1105,7 +1105,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 83CA240D1D7BC47C00F2EA53 /* Build configuration list for PBXProject "mGBA" */;
@ -1266,6 +1266,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
@ -1324,6 +1325,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -172,7 +172,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 83B066A6180D56B9008E3612 /* Build configuration list for PBXProject "midi_processing" */;
@ -301,6 +301,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -354,6 +355,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -146,7 +146,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 8343781617F93CB500584396 /* Build configuration list for PBXProject "psflib" */;
@ -264,6 +264,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -315,6 +316,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -62,7 +62,7 @@
8306B0EB20984590000302D4 /* wave_segmented.c in Sources */ = {isa = PBXBuildFile; fileRef = 8306B0D02098458F000302D4 /* wave_segmented.c */; };
8306B0EC20984590000302D4 /* pcm_sre.c in Sources */ = {isa = PBXBuildFile; fileRef = 8306B0D12098458F000302D4 /* pcm_sre.c */; };
8306B0ED20984590000302D4 /* txtp.c in Sources */ = {isa = PBXBuildFile; fileRef = 8306B0D22098458F000302D4 /* txtp.c */; };
8306B0EE20984590000302D4 /* smc_smh.c in Sources */ = {isa = PBXBuildFile; fileRef = 8306B0D32098458F000302D4 /* smc_smh.c */; };
8306B0EE20984590000302D4 /* smh_smc.c in Sources */ = {isa = PBXBuildFile; fileRef = 8306B0D32098458F000302D4 /* smh_smc.c */; };
8306B0EF20984590000302D4 /* ubi_bao.c in Sources */ = {isa = PBXBuildFile; fileRef = 8306B0D420984590000302D4 /* ubi_bao.c */; };
8306B0F020984590000302D4 /* atsl.c in Sources */ = {isa = PBXBuildFile; fileRef = 8306B0D520984590000302D4 /* atsl.c */; };
8306B0F120984590000302D4 /* ppst.c in Sources */ = {isa = PBXBuildFile; fileRef = 8306B0D620984590000302D4 /* ppst.c */; };
@ -154,6 +154,8 @@
832BF82B21E0514B006F50F1 /* xopus.c in Sources */ = {isa = PBXBuildFile; fileRef = 832BF81921E0514A006F50F1 /* xopus.c */; };
832BF82C21E0514B006F50F1 /* hca_keys_awb.h in Headers */ = {isa = PBXBuildFile; fileRef = 832BF81A21E0514A006F50F1 /* hca_keys_awb.h */; };
832BF82D21E0514B006F50F1 /* nus3audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 832BF81B21E0514B006F50F1 /* nus3audio.c */; };
832F9EA62E29047F00D08728 /* srcd.c in Sources */ = {isa = PBXBuildFile; fileRef = 832F9EA52E29047F00D08728 /* srcd.c */; };
832F9EA82E2905D500D08728 /* mhwk.c in Sources */ = {isa = PBXBuildFile; fileRef = 832F9EA72E2905D500D08728 /* mhwk.c */; };
832FC36C278FA4CB0056A860 /* ubi_ckd_cwav_streamfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 832FC367278FA4CB0056A860 /* ubi_ckd_cwav_streamfile.h */; };
832FC36D278FA4CB0056A860 /* ubi_ckd_cwav.c in Sources */ = {isa = PBXBuildFile; fileRef = 832FC36B278FA4CB0056A860 /* ubi_ckd_cwav.c */; };
832FC36F278FAE3E0056A860 /* encrypted_mc161_streamfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 832FC36E278FAE3E0056A860 /* encrypted_mc161_streamfile.h */; };
@ -515,7 +517,7 @@
836F6F9418BDC2190095E648 /* iivb.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E5818BDC2180095E648 /* iivb.c */; };
836F6F9518BDC2190095E648 /* kraw.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E5918BDC2180095E648 /* kraw.c */; };
836F6F9618BDC2190095E648 /* lsf.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E5A18BDC2180095E648 /* lsf.c */; };
836F6F9818BDC2190095E648 /* mattel_hyperscan.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E5C18BDC2180095E648 /* mattel_hyperscan.c */; };
836F6F9818BDC2190095E648 /* kvag.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E5C18BDC2180095E648 /* kvag.c */; };
836F6F9918BDC2190095E648 /* maxis_xa.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E5D18BDC2180095E648 /* maxis_xa.c */; };
836F6F9A18BDC2190095E648 /* meta.h in Headers */ = {isa = PBXBuildFile; fileRef = 836F6E5E18BDC2180095E648 /* meta.h */; };
836F6F9C18BDC2190095E648 /* mp4.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E6018BDC2180095E648 /* mp4.c */; };
@ -1020,7 +1022,7 @@
8306B0D02098458F000302D4 /* wave_segmented.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wave_segmented.c; sourceTree = "<group>"; };
8306B0D12098458F000302D4 /* pcm_sre.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcm_sre.c; sourceTree = "<group>"; };
8306B0D22098458F000302D4 /* txtp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = txtp.c; sourceTree = "<group>"; };
8306B0D32098458F000302D4 /* smc_smh.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = smc_smh.c; sourceTree = "<group>"; };
8306B0D32098458F000302D4 /* smh_smc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = smh_smc.c; sourceTree = "<group>"; };
8306B0D420984590000302D4 /* ubi_bao.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ubi_bao.c; sourceTree = "<group>"; };
8306B0D520984590000302D4 /* atsl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = atsl.c; sourceTree = "<group>"; };
8306B0D620984590000302D4 /* ppst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ppst.c; sourceTree = "<group>"; };
@ -1112,6 +1114,8 @@
832BF81921E0514A006F50F1 /* xopus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xopus.c; sourceTree = "<group>"; };
832BF81A21E0514A006F50F1 /* hca_keys_awb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hca_keys_awb.h; sourceTree = "<group>"; };
832BF81B21E0514B006F50F1 /* nus3audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nus3audio.c; sourceTree = "<group>"; };
832F9EA52E29047F00D08728 /* srcd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = srcd.c; sourceTree = "<group>"; };
832F9EA72E2905D500D08728 /* mhwk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mhwk.c; sourceTree = "<group>"; };
832FC367278FA4CB0056A860 /* ubi_ckd_cwav_streamfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ubi_ckd_cwav_streamfile.h; sourceTree = "<group>"; };
832FC36B278FA4CB0056A860 /* ubi_ckd_cwav.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ubi_ckd_cwav.c; sourceTree = "<group>"; };
832FC36E278FAE3E0056A860 /* encrypted_mc161_streamfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = encrypted_mc161_streamfile.h; sourceTree = "<group>"; };
@ -1473,7 +1477,7 @@
836F6E5818BDC2180095E648 /* iivb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = iivb.c; sourceTree = "<group>"; };
836F6E5918BDC2180095E648 /* kraw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kraw.c; sourceTree = "<group>"; };
836F6E5A18BDC2180095E648 /* lsf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lsf.c; sourceTree = "<group>"; };
836F6E5C18BDC2180095E648 /* mattel_hyperscan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mattel_hyperscan.c; sourceTree = "<group>"; };
836F6E5C18BDC2180095E648 /* kvag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kvag.c; sourceTree = "<group>"; };
836F6E5D18BDC2180095E648 /* maxis_xa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = maxis_xa.c; sourceTree = "<group>"; };
836F6E5E18BDC2180095E648 /* meta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = meta.h; sourceTree = "<group>"; };
836F6E6018BDC2180095E648 /* mp4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mp4.c; sourceTree = "<group>"; };
@ -2498,6 +2502,7 @@
83D20074248DDB760048BD24 /* ktsr.c */,
834F7CFE2C7085EA003AC386 /* ktsr_streamfile.h */,
830EBE122004656E0023AA10 /* ktss.c */,
836F6E5C18BDC2180095E648 /* kvag.c */,
8373342423F60CDB00DE14DC /* kwb.c */,
835B9B8C2730BF2C00F87EE3 /* lopu_fb.c */,
836F6E9918BDC2180095E648 /* lp_ap_lep.c */,
@ -2509,11 +2514,11 @@
8373341F23F60CDB00DE14DC /* lrmd_streamfile.h */,
836F6E5A18BDC2180095E648 /* lsf.c */,
83EDE5D61A70951A005F5D84 /* madp.c */,
836F6E5C18BDC2180095E648 /* mattel_hyperscan.c */,
836F6E5D18BDC2180095E648 /* maxis_xa.c */,
836F6E9D18BDC2180095E648 /* mcg.c */,
83709E011ECBC1A4005C03D3 /* mcss.c */,
836F6E5E18BDC2180095E648 /* meta.h */,
832F9EA72E2905D500D08728 /* mhwk.c */,
834FE0DE215C79EB000A5D3D /* mib_mih.c */,
836F6EAC18BDC2180095E648 /* mic_koei.c */,
83B73C4A2D8FF19800A57F08 /* mio.c */,
@ -2660,7 +2665,7 @@
83CBF5422D46339200AA2D75 /* skex.c */,
836F6EBB18BDC2180095E648 /* sl3.c */,
836F6EF218BDC2190095E648 /* sli.c */,
8306B0D32098458F000302D4 /* smc_smh.c */,
8306B0D32098458F000302D4 /* smh_smc.c */,
837CEAEB23487F2B00E62A4A /* smk.c */,
83F0AA5C21E2028B004BBC04 /* smp.c */,
836F6EBC18BDC2180095E648 /* smpl.c */,
@ -2679,6 +2684,7 @@
83A21F84201D8981000F04B9 /* sqex_sead.c */,
837CEAF023487F2C00E62A4A /* sqex_streamfile.h */,
83C0C75C2AA435C60056AFD8 /* squeak.c */,
832F9EA52E29047F00D08728 /* srcd.c */,
834FE0D6215C79E9000A5D3D /* sscf.c */,
8396BE792935FC2F00CD0580 /* sscf_encrypted.h */,
8396BE782935FC2F00CD0580 /* sscf_encrypted.c */,
@ -3127,7 +3133,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 836F6B3318BDB8880095E648 /* Build configuration list for PBXProject "libvgmstream" */;
@ -3245,7 +3251,7 @@
83A21F8D201D8982000F04B9 /* sqex_sead.c in Sources */,
834F7ED32C70A786003AC386 /* mixing.c in Sources */,
83EED5D3203A8BC7008BEB45 /* ea_swvr.c in Sources */,
8306B0EE20984590000302D4 /* smc_smh.c in Sources */,
8306B0EE20984590000302D4 /* smh_smc.c in Sources */,
834F7DAB2C7093EA003AC386 /* asf_decoder.c in Sources */,
834F7E0C2C7093EA003AC386 /* ws_decoder.c in Sources */,
834F7EDB2C70A786003AC386 /* streamfile_api.c in Sources */,
@ -3553,7 +3559,7 @@
834F7E962C70A45C003AC386 /* txtp_parser.c in Sources */,
834FE0EA215C79ED000A5D3D /* aif_asobo.c in Sources */,
836F700418BDC2190095E648 /* vas_kceo.c in Sources */,
836F6F9818BDC2190095E648 /* mattel_hyperscan.c in Sources */,
836F6F9818BDC2190095E648 /* kvag.c in Sources */,
8306B0BA20984552000302D4 /* blocked_wsi.c in Sources */,
834F7E802C709EA0003AC386 /* adp_ongakukan.c in Sources */,
83BAFB6C19F45EB3005DAB60 /* bfstm.c in Sources */,
@ -3667,6 +3673,7 @@
834F7DB62C7093EA003AC386 /* compresswave_lib.c in Sources */,
834F7E042C7093EA003AC386 /* vorbis_custom_utils_awc.c in Sources */,
8306B0EC20984590000302D4 /* pcm_sre.c in Sources */,
832F9EA62E29047F00D08728 /* srcd.c in Sources */,
836F6FC818BDC2190095E648 /* pos.c in Sources */,
836F6F8918BDC2190095E648 /* gca.c in Sources */,
836F6FA418BDC2190095E648 /* nds_hwas.c in Sources */,
@ -3805,6 +3812,7 @@
836F6FA918BDC2190095E648 /* ngc_adpdtk.c in Sources */,
836F6FDC18BDC2190095E648 /* iab.c in Sources */,
83C7282122BC893D00678B4A /* msf_konami.c in Sources */,
832F9EA82E2905D500D08728 /* mhwk.c in Sources */,
833E82F72A2858EF00CD0580 /* reader.c in Sources */,
83B69B222845A26600D2435A /* bw_mp3_riff.c in Sources */,
834F7E192C709A1D003AC386 /* ea_schl_abk.c in Sources */,
@ -3981,6 +3989,7 @@
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -4066,6 +4075,7 @@
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -10,7 +10,6 @@ void decode_tantalus(VGMSTREAMCHANNEL* stream, sample_t* outbuf, int channelspac
size_t bytes_per_frame, samples_per_frame;
int32_t hist1 = stream->adpcm_history1_32;
int32_t hist2 = stream->adpcm_history2_32;
/* external interleave (fixed size), mono */

View file

@ -347,6 +347,7 @@ static const char* extension_list[] = {
"mds",
"mdsp",
"med",
"mhwk",
"mjb",
"mi4", //fake extension for .mib (renamed, to be removed)
"mib",
@ -536,7 +537,7 @@ static const char* extension_list[] = {
"skx",
"slb", //txth/reserved [THE Nekomura no Hitobito (PS2)]
"sli",
"smc",
"smh",
"smk",
"smp",
"smv",
@ -558,6 +559,7 @@ static const char* extension_list[] = {
"spsd",
"spw",
"srsa",
"srcd",
"ss2",
"ssd", //txth/reserved [Zack & Wiki (Wii)]
"ssf",
@ -1253,7 +1255,7 @@ static const meta_info meta_info_list[] = {
{meta_LSF_N1NJ4N, "Gizmondo Studios Helsingborg LSF header"},
{meta_XWAV, "feelplus XWAV header"},
{meta_RAW_SNDS, "PC .snds raw header"},
{meta_HYPERSCAN_KVAG, "Mattel Hyperscan KVAG"},
{meta_KVAG, "Mattel KVAG header"},
{meta_PSND, "Polarbit PSND header"},
{meta_ADP_WILDFIRE, "Wildfire ADP! header"},
{meta_QD_ADP, "Quantic Dream .ADP header"},
@ -1479,6 +1481,8 @@ static const meta_info meta_info_list[] = {
{meta_AUDIOPKG, "Inevitable .AUDIOPKG header"},
{meta_SWAR, "Nintendo SWAR header"},
{meta_IVB, "Metro IVB header"},
{meta_SRCD, "Capcom SRCD header"},
{meta_MHWK, "Broderbund MHWK header"}
};
void get_vgmstream_coding_description(VGMSTREAM* vgmstream, char* out, size_t out_size) {

View file

@ -1,22 +1,22 @@
#include "layout.h"
#include "../vgmstream.h"
//MxCh blocked layout as used by Lego Island
void block_update_mxch(off_t block_offset, VGMSTREAM * vgmstream) {
vgmstream->current_block_offset = block_offset;
vgmstream->next_block_offset = block_offset +
read_32bitLE(vgmstream->current_block_offset+4,vgmstream->ch[0].streamfile)+8;
/* skip pad blocks */
while (
read_32bitBE(vgmstream->current_block_offset,
vgmstream->ch[0].streamfile) == 0x70616420)
{
vgmstream->current_block_offset = vgmstream->next_block_offset;
vgmstream->next_block_offset = vgmstream->current_block_offset +
read_32bitLE(vgmstream->current_block_offset+4,vgmstream->ch[0].streamfile)+8;
}
vgmstream->current_block_size =
read_32bitLE(vgmstream->current_block_offset+4, vgmstream->ch[0].streamfile)-0xe;
// only one channel for now
vgmstream->ch[0].offset = vgmstream->current_block_offset+8+0xe;
}
#include "layout.h"
#include "../vgmstream.h"
//MxCh blocked layout as used by Lego Island
void block_update_mxch(off_t block_offset, VGMSTREAM * vgmstream) {
vgmstream->current_block_offset = block_offset;
vgmstream->next_block_offset = block_offset +
read_32bitLE(vgmstream->current_block_offset+4,vgmstream->ch[0].streamfile)+8;
/* skip pad blocks */
while (
read_32bitBE(vgmstream->current_block_offset,
vgmstream->ch[0].streamfile) == 0x70616420)
{
vgmstream->current_block_offset = vgmstream->next_block_offset;
vgmstream->next_block_offset = vgmstream->current_block_offset +
read_32bitLE(vgmstream->current_block_offset+4,vgmstream->ch[0].streamfile)+8;
}
vgmstream->current_block_size =
read_32bitLE(vgmstream->current_block_offset+4, vgmstream->ch[0].streamfile)-0xe;
// only one channel for now
vgmstream->ch[0].offset = vgmstream->current_block_offset+8+0xe;
}

View file

@ -25,13 +25,13 @@ VGMSTREAM* init_vgmstream_astl(STREAMFILE* sf) {
// 28: -1?
// 2c: -1?
if (read_u16le(0x30,sf) != 0x0001) // PCM only
return NULL;
channels = read_u16le(0x32, sf);
int sample_rate = read_s32le(0x34,sf);
// 38: bitrate
// 3a: block size
// 3c: bps
// fmt-like
int format = read_u16le(0x30 + 0x00, sf);
channels = read_u16le(0x30 + 0x02, sf);
int sample_rate = read_s32le(0x30 + 0x04, sf);
// 08: avg bitrate
// 0a: block size
// 0e: bps
loop_flag = 0; // unlike X360 no apparent loop info in the files
@ -42,11 +42,51 @@ VGMSTREAM* init_vgmstream_astl(STREAMFILE* sf) {
vgmstream->meta_type = meta_ASTL;
vgmstream->sample_rate = sample_rate;
vgmstream->num_samples = pcm16_bytes_to_samples(data_size, channels);
vgmstream->coding_type = coding_PCM16LE;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = 0x2;
switch(format) {
case 0x0001:
vgmstream->num_samples = pcm16_bytes_to_samples(data_size, channels);
vgmstream->coding_type = coding_PCM16LE;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = 0x2;
break;
#ifdef VGM_USE_FFMPEG
case 0xFFFE: { // WAVEFORMATEXTENSIBLE
uint32_t avg_bitrate = read_u32le(0x30 + 0x08, sf);
uint16_t block_size = read_u16le(0x30 + 0x0c, sf);
uint32_t channel_layout = read_u32le(0x30 + 0x14, sf);
// actually a GUID but first 32b matches fmt (0x0162 / STATIC_KSDATAFORMAT_SUBTYPE_WMAUDIO3 only?)
uint32_t xwma_format = read_u32le(0x30 + 0x18, sf);
uint32_t dpds_offset = 0x30 + 0x28;
uint32_t dpds_size;
uint32_t offset = dpds_offset;
// TODO channel layout
vgmstream->codec_data = init_ffmpeg_xwma(sf, start_offset, data_size, xwma_format, channels, sample_rate, avg_bitrate, block_size);
if (!vgmstream->codec_data) goto fail;
vgmstream->coding_type = coding_FFmpeg;
vgmstream->layout_type = layout_none;
vgmstream->channel_layout = channel_layout;
// somehow there is no dpds size, so find last value before null padding
while (offset < start_offset) {
uint32_t sample = read_u32le(offset, sf);
if (sample == 0)
break;
offset += 0x04;
}
dpds_size = offset - dpds_offset;
vgmstream->num_samples = xwma_dpds_get_samples(sf, dpds_offset, dpds_size, channels, false);
break;
}
#endif
default:
goto fail;
}
if (!vgmstream_open_stream(vgmstream, sf, start_offset))
goto fail;

View file

@ -9,7 +9,7 @@ VGMSTREAM * init_vgmstream_bar(STREAMFILE *streamFile) {
off_t start_offset;
off_t ch2_start_offset;
int loop_flag;
int channel_count;
int channel_count;
long file_size;

View file

@ -175,10 +175,10 @@ VGMSTREAM* init_vgmstream_ea_swvr(STREAMFILE* sf) {
do {
block_update(vgmstream->next_block_offset,vgmstream);
switch(vgmstream->coding_type) {
case coding_PSX: num_samples = ps_bytes_to_samples(vgmstream->current_block_size,1); break;
case coding_NGC_DSP: num_samples = dsp_bytes_to_samples(vgmstream->current_block_size,1); break;
case coding_PSX: num_samples = ps_bytes_to_samples(vgmstream->current_block_size,1); break;
case coding_NGC_DSP: num_samples = dsp_bytes_to_samples(vgmstream->current_block_size,1); break;
case coding_PCM8_U_int: num_samples = pcm_bytes_to_samples(vgmstream->current_block_size,1,8); break;
default: num_samples = 0; break;
default: num_samples = 0; break;
}
vgmstream->num_samples += num_samples;

View file

@ -50,11 +50,18 @@ VGMSTREAM* init_vgmstream_fsb5_fev_bank(STREAMFILE* sf) {
goto fail;
switch(chunk_type) {
case 0x4C495354: /* "LIST" with "SNDH" (usually v0x28 but also in Fall Guys's BNK_Music_RoundReveal) */
if (read_u32be(offset + 0x04, sf) == 0x534E4448) {
case 0x4C495354: /* "LIST" */
// "SNDH" (usually v0x28 but also in Fall Guys's BNK_Music_RoundReveal)
if (read_u32be(offset + 0x04, sf) == get_id32be("SNDH")) {
bank_offset = offset + 0x0c;
bank_size = read_s32le(offset + 0x08,sf);
}
// multiple CrankcaseAudio REV ADM3 [Rennsport (PC)]
if (read_u32be(offset + 0x00, sf) == get_id32be("PEFX")) {
bank_offset = offset;
bank_size = chunk_size;
}
break;
case 0x534E4448: /* "SNDH" */

View file

@ -1572,6 +1572,9 @@ static const hcakey_info hcakey_list[] = {
// Sand Land (multi)
{910990237314908160}, // 0CA47CCB51010000
// Patapon 1 & 2 Reloaded (PC)
{3316332033470531258}, // 2E05FA69EC4286BA
};
#endif

View file

@ -1,44 +1,45 @@
#include "meta.h"
#include "../coding/coding.h"
/* IDSP - from Inevitable Entertainment games [Defender (GC)] */
VGMSTREAM * init_vgmstream_idsp_ie(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset;
int loop_flag, channel_count;
/* checks */
if ( !check_extensions(streamFile,"idsp") )
goto fail;
if (read_32bitBE(0x00,streamFile) != 0x49445350) /* "IDSP" */
goto fail;
loop_flag = 0;
channel_count = read_32bitBE(0x0C,streamFile);
if (channel_count > 2) goto fail;
start_offset = 0x70;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,loop_flag);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_IDSP_IE;
vgmstream->sample_rate = read_32bitBE(0x08,streamFile);
vgmstream->coding_type = coding_NGC_DSP;
vgmstream->num_samples = dsp_bytes_to_samples(read_32bitBE(0x04,streamFile), channel_count);
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = read_32bitBE(0x10,streamFile);
dsp_read_coefs_be(vgmstream,streamFile,0x14,0x2E);
if ( !vgmstream_open_stream(vgmstream, streamFile, start_offset) )
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}
#include "meta.h"
#include "../coding/coding.h"
/* IDSP - from Inevitable Entertainment games [Defender (GC)] */
VGMSTREAM* init_vgmstream_idsp_ie(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
off_t start_offset;
int loop_flag, channels;
/* checks */
if (!is_id32be(0x00, sf, "IDSP"))
return NULL;
if (!check_extensions(sf,"idsp"))
return NULL;
channels = read_s32be(0x0C,sf);
if (channels > 2) return NULL;
loop_flag = 0;
start_offset = 0x70;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channels,loop_flag);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_IDSP_IE;
vgmstream->sample_rate = read_s32be(0x08,sf);
vgmstream->coding_type = coding_NGC_DSP;
vgmstream->num_samples = dsp_bytes_to_samples(read_u32be(0x04,sf), channels);
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = read_u32be(0x10,sf);
dsp_read_coefs_be(vgmstream, sf, 0x14, 0x2E);
if (!vgmstream_open_stream(vgmstream, sf, start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -1,115 +1,113 @@
#include "meta.h"
#include "../coding/coding.h"
/* .IMC - from iNiS Gitaroo Man (PS2) */
VGMSTREAM * init_vgmstream_imc(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset;
int loop_flag, channel_count, sample_rate, interleave, blocks;
size_t file_size, data_size;
/* checks */
/* .imc: extension from the main container */
if (!check_extensions(streamFile, "imc"))
goto fail;
channel_count = read_32bitLE(0x00, streamFile);
sample_rate = read_32bitLE(0x04, streamFile);
interleave = read_32bitLE(0x08, streamFile) * 0x10; /* number of frames in a block */
blocks = read_32bitLE(0x0c, streamFile); /* number of interleave blocks (even in mono) */
file_size = get_streamfile_size(streamFile);
loop_flag = 0;
start_offset = 0x10;
/* extra checks since the header is so simple */
if (channel_count < 1 || channel_count > 8)
goto fail;
if (sample_rate < 11025 || sample_rate > 48000)
/* game can play 11025, 16000, 22050, 32000, 44100, 48000. Anything else will be
silent in-game. ST10.IMC subsongs 42-47 use 22000, those are unused silent audio */
goto fail;
if (interleave*blocks + start_offset != file_size)
goto fail;
data_size = file_size - start_offset;
data_size -= ps_find_padding(streamFile, start_offset, data_size, channel_count, interleave, 0);
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count, loop_flag);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_IMC;
vgmstream->sample_rate = sample_rate;
vgmstream->num_samples = ps_bytes_to_samples(data_size, channel_count);
vgmstream->coding_type = coding_PSX;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = interleave;
if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}
/* ****************************************************************************** */
/* .IMC in containers */
VGMSTREAM * init_vgmstream_imc_container(STREAMFILE *streamFile) {
VGMSTREAM *vgmstream = NULL;
STREAMFILE *temp_streamFile = NULL;
off_t header_offset, subfile_offset, next_offset, name_offset;
size_t subfile_size;
int total_subsongs, target_subsong = streamFile->stream_index;
/* checks */
if (!check_extensions(streamFile, "imc"))
goto fail;
total_subsongs = read_32bitLE(0x00, streamFile);
if (target_subsong == 0) target_subsong = 1;
if (target_subsong < 0 || target_subsong > total_subsongs || total_subsongs < 1) goto fail;
header_offset = 0x04 + 0x20*(target_subsong-1);
name_offset = header_offset + 0x00;
/* 0x08: flags? (0x702ADE77|0x002ADE77|0x20000000|etc) */
/* 0x0c: same for all songs in single .imc but varies between .imc */
subfile_offset = read_32bitLE(header_offset + 0x10,streamFile);
/* 0x14: flags/size? (0xF0950000|0x3CFA1200|etc) */
/* 0x18: same for all songs in single .imc but varies between .imc */
/* 0x1c: flags? (0 or 2) */
if (target_subsong == total_subsongs) {
next_offset = get_streamfile_size(streamFile);
}
else {
next_offset = read_32bitLE(header_offset + 0x20 + 0x10,streamFile);
}
subfile_size = next_offset - subfile_offset;
temp_streamFile = setup_subfile_streamfile(streamFile, subfile_offset,subfile_size, NULL);
if (!temp_streamFile) goto fail;
vgmstream = init_vgmstream_imc(temp_streamFile);
if (!vgmstream) goto fail;
close_streamfile(temp_streamFile);
vgmstream->num_streams = total_subsongs;
read_string(vgmstream->stream_name,0x08+1, name_offset,streamFile);
return vgmstream;
fail:
close_streamfile(temp_streamFile);
close_vgmstream(vgmstream);
return NULL;
}
#include "meta.h"
#include "../coding/coding.h"
/* .IMC (subfile) - from iNiS Gitaroo Man (PS2) */
VGMSTREAM* init_vgmstream_imc(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
/* checks */
/* .imc: extension from the main container */
if (!check_extensions(sf, "imc"))
return NULL;
int channels = read_s32le(0x00, sf);
int sample_rate = read_s32le(0x04, sf);
int interleave = read_s32le(0x08, sf) * 0x10; // number of frames in a block
int blocks = read_s32le(0x0c, sf); // number of interleave blocks (even in mono)
uint32_t start_offset = 0x10;
uint32_t file_size = get_streamfile_size(sf);
bool loop_flag = false;
// extra checks since the header is so simple
if (channels < 1 || channels > 8)
return NULL;
// Game can play 11025, 16000, 22050, 32000, 44100, 48000. Anything else will be
// silent in-game. ST10.IMC subsongs 42-47 use 22000, those are unused silent audio
if (sample_rate < 11025 || sample_rate > 48000)
return NULL;
if (interleave * blocks + start_offset != file_size)
return NULL;
uint32_t data_size = file_size - start_offset;
data_size -= ps_find_padding(sf, start_offset, data_size, channels, interleave, 0);
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channels, loop_flag);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_IMC;
vgmstream->sample_rate = sample_rate;
vgmstream->num_samples = ps_bytes_to_samples(data_size, channels);
vgmstream->coding_type = coding_PSX;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = interleave;
if (!vgmstream_open_stream(vgmstream, sf, start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}
/* ****************************************************************************** */
/* .IMC in containers */
VGMSTREAM* init_vgmstream_imc_container(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
STREAMFILE* temp_sf = NULL;
off_t header_offset, subfile_offset, next_offset, name_offset;
size_t subfile_size;
int total_subsongs, target_subsong = sf->stream_index;
/* checks */
if (!check_extensions(sf, "imc"))
return NULL;
total_subsongs = read_s32le(0x00, sf);
if (target_subsong == 0) target_subsong = 1;
if (target_subsong < 0 || target_subsong > total_subsongs || total_subsongs < 1) goto fail;
header_offset = 0x04 + 0x20 * (target_subsong - 1);
name_offset = header_offset + 0x00;
/* 0x08: flags? (0x702ADE77|0x002ADE77|0x20000000|etc) */
/* 0x0c: same for all songs in single .imc but varies between .imc */
subfile_offset = read_u32le(header_offset + 0x10,sf);
/* 0x14: flags/size? (0xF0950000|0x3CFA1200|etc) */
/* 0x18: same for all songs in single .imc but varies between .imc */
/* 0x1c: flags? (0 or 2) */
if (target_subsong == total_subsongs) {
next_offset = get_streamfile_size(sf);
}
else {
next_offset = read_u32le(header_offset + 0x20 + 0x10,sf);
}
subfile_size = next_offset - subfile_offset;
temp_sf = setup_subfile_streamfile(sf, subfile_offset,subfile_size, NULL);
if (!temp_sf) goto fail;
vgmstream = init_vgmstream_imc(temp_sf);
if (!vgmstream) goto fail;
vgmstream->num_streams = total_subsongs;
read_string(vgmstream->stream_name,0x08+1, name_offset,sf);
close_streamfile(temp_sf);
return vgmstream;
fail:
close_streamfile(temp_sf);
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -0,0 +1,32 @@
#include "meta.h"
#include "../util/meta_utils.h"
/* KVAG - Mattel Hyperscan games [Marvel Heroes (Hyperscan), X-Men (Hyperscan)] */
VGMSTREAM* init_vgmstream_hyperscan_kvag(STREAMFILE* sf) {
/* checks */
if (!is_id32be(0x00,sf, "KVAG"))
return NULL;
if (!check_extensions(sf,"bvg"))
return NULL;
meta_header_t h = {0};
h.meta = meta_KVAG;
h.stream_size = read_u32le(0x04, sf);
h.sample_rate = read_s32le(0x08, sf);
h.channels = read_s16le(0x0c, sf) + 1;
h.stream_offset = 0x0e;
if (h.channels > 2) // 2ch is rare [Ben 10's Theme22ks]
return NULL;
h.num_samples = ima_bytes_to_samples(h.stream_size, h.channels);
h.coding = coding_DVI_IMA;
h.layout = layout_none;
h.open_stream = true;
h.sf = sf;
return alloc_metastream(&h);
}

View file

@ -1,66 +0,0 @@
#include "meta.h"
#include "../util.h"
/* Mattel Hyperscan,
- Place all metas for this console here (there are just 5 games) */
VGMSTREAM * init_vgmstream_hyperscan_kvag(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
char filename[PATH_LIMIT];
off_t start_offset;
int loop_flag = 0;
int channel_count;
/* check extension, case insensitive */
streamFile->get_name(streamFile,filename,sizeof(filename));
if (strcasecmp("bvg",filename_extension(filename))) goto fail;
/* check header */
if (read_32bitBE(0x00,streamFile) != 0x4B564147) /* "KVAG" */
goto fail;
channel_count = 1;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,loop_flag);
if (!vgmstream) goto fail;
/* fill in the vital statistics */
start_offset = 0xE;
vgmstream->channels = channel_count;
vgmstream->sample_rate = read_32bitLE(0x8,streamFile);
vgmstream->coding_type = coding_DVI_IMA;
vgmstream->num_samples = read_32bitLE(0x4,streamFile)*2;
#if 0
if (loop_flag) {
vgmstream->loop_start_sample = (read_32bitLE(0x08,streamFile)-1)*28;
vgmstream->loop_end_sample = (read_32bitLE(0x0c,streamFile)-1)*28;
}
#endif
vgmstream->layout_type = layout_none;
vgmstream->meta_type = meta_HYPERSCAN_KVAG;
/* open the file for reading */
{
int i;
STREAMFILE * file;
file = streamFile->open(streamFile,filename,STREAMFILE_DEFAULT_BUFFER_SIZE);
if (!file) goto fail;
for (i=0;i<channel_count;i++) {
vgmstream->ch[i].streamfile = file;
vgmstream->ch[i].channel_start_offset=
vgmstream->ch[i].offset=start_offset+
vgmstream->interleave_block_size*i;
}
}
return vgmstream;
/* clean up anything we may have opened */
fail:
if (vgmstream) close_vgmstream(vgmstream);
return NULL;
}

View file

@ -1,58 +1,54 @@
#include "meta.h"
#include "../util.h"
/* Maxis XA - found in Sim City 3000 (PC), The Sims 2 (PC) */
VGMSTREAM * init_vgmstream_maxis_xa(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset;
int avg_byte_rate, channel_count, loop_flag, resolution, sample_align, sample_rate;
/* check extension, case insensitive */
if (!check_extensions(streamFile,"xa"))
goto fail;
/* check header */
if ((read_16bitBE(0x00,streamFile) != 0x5841)) /* "XA" */
goto fail;
/* check format tag */
if ((read_16bitLE(0x08,streamFile) != 0x0001))
goto fail;
channel_count = read_16bitLE(0x0A,streamFile);
sample_rate = read_32bitLE(0x0C,streamFile);
avg_byte_rate = read_32bitLE(0x10,streamFile);
sample_align = read_16bitLE(0x14,streamFile);
resolution = read_16bitLE(0x16,streamFile);
/* check alignment */
if (sample_align != (resolution/8)*channel_count)
goto fail;
/* check average byte rate */
if (avg_byte_rate != sample_rate*sample_align)
goto fail;
loop_flag = 0;
start_offset = 0x18;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,loop_flag);
if (!vgmstream) goto fail;
vgmstream->sample_rate = sample_rate;
vgmstream->num_samples = read_32bitLE(0x04,streamFile)/2/channel_count;
vgmstream->meta_type = meta_MAXIS_XA;
vgmstream->coding_type = coding_MAXIS_XA;
vgmstream->layout_type = layout_none;
/* open streams */
if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}
#include "meta.h"
#include "../util.h"
/* Maxis XA - found in Sim City 3000 (PC), The Sims 2 (PC) */
VGMSTREAM* init_vgmstream_maxis_xa(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
/* checks */
if ((read_u32be(0x00,sf) & 0xFFFF0000) != get_id32be("XA\0\0")) // 02: "I"/"J"/null (version?)
return NULL;
uint32_t pcm_size = read_u32le(0x04,sf);
if (read_u16le(0x08,sf) != 0x0001)
return NULL;
if (!check_extensions(sf,"xa"))
return NULL;
int channels = read_s16le(0x0A,sf);
int sample_rate = read_s32le(0x0C,sf);
int avg_byte_rate = read_s32le(0x10,sf);
int sample_align = read_u16le(0x14,sf);
int resolution = read_u16le(0x16,sf);
/* check alignment */
if (sample_align != (resolution / 8) * channels)
return NULL;
/* check average byte rate */
if (avg_byte_rate != sample_rate * sample_align)
return NULL;
off_t start_offset = 0x18;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channels, false);
if (!vgmstream) goto fail;
vgmstream->sample_rate = sample_rate;
vgmstream->num_samples = pcm_size / sizeof(short) / channels;
vgmstream->meta_type = meta_MAXIS_XA;
vgmstream->coding_type = coding_MAXIS_XA;
vgmstream->layout_type = layout_none;
/* open streams */
if (!vgmstream_open_stream(vgmstream, sf, start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -701,7 +701,7 @@ VGMSTREAM * init_vgmstream_msb_msh(STREAMFILE * streamFile);
VGMSTREAM * init_vgmstream_txtp(STREAMFILE * streamFile);
VGMSTREAM * init_vgmstream_smc_smh(STREAMFILE * streamFile);
VGMSTREAM* init_vgmstream_smh_smc(STREAMFILE* sf);
VGMSTREAM * init_vgmstream_ppst(STREAMFILE *streamFile);
@ -1035,4 +1035,8 @@ VGMSTREAM* init_vgmstream_swar(STREAMFILE* sf);
VGMSTREAM* init_vgmstream_ivb(STREAMFILE* sf);
VGMSTREAM* init_vgmstream_mhwk(STREAMFILE* sf);
VGMSTREAM* init_vgmstream_srcd(STREAMFILE* sf);
#endif

View file

@ -0,0 +1,104 @@
#include "meta.h"
#include "../coding/coding.h"
/* MHWK - Broderbund's Mohawk engine (.mhk) */
VGMSTREAM* init_vgmstream_mhwk(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
off_t start_offset = 0;
int loop_flag = 0, channels = 0, sample_rate = 0, format = 0;
int32_t num_samples = 0, loop_start = 0, loop_end = 0;
off_t current_offset;
uint32_t chunk_id;
uint32_t chunk_size;
/* Check for MHWK magic word */
if (!is_id32be(0x00, sf, "MHWK"))
return NULL;
if (!check_extensions(sf, "mhk"))
return NULL;
/* Check for WAVE magic word, which follows the MHWK header */
if (!is_id32be(0x08, sf, "WAVE"))
goto fail;
current_offset = 0x0C;
while (current_offset < get_streamfile_size(sf)) {
chunk_id = read_u32be(current_offset, sf);
chunk_size = read_u32be(current_offset + 0x04, sf);
current_offset += 0x08;
if (chunk_id == get_id32be("Cue#")) {
current_offset += chunk_size;
continue;
}
else if (chunk_id == get_id32be("ADPC")) {
current_offset += chunk_size;
continue;
}
else if (chunk_id == get_id32be("Data")) {
break;
}
else {
goto fail;
}
}
/* Data chunk header */
/* Header size is consistently 20 bytes from analysis */
sample_rate = read_u16be(current_offset + 0x00, sf);
num_samples = read_u32be(current_offset + 0x02, sf);
/* 0x06: sample width (1 byte), 0x07: channels (1 byte) */
channels = read_u8(current_offset + 0x07, sf);
format = read_u16be(current_offset + 0x08, sf);
if (read_u16be(current_offset + 0x0A, sf) == 0xFFFF) {
loop_flag = 1;
loop_start = read_u32be(current_offset + 0x0C, sf);
loop_end = read_u32be(current_offset + 0x10, sf);
}
/* The actual audio data starts after the header's 20 bytes not 28 bytes */
start_offset = current_offset + 0x14;
vgmstream = allocate_vgmstream(channels, loop_flag);
if (!vgmstream)
goto fail;
vgmstream->meta_type = meta_MHWK;
vgmstream->sample_rate = sample_rate;
vgmstream->num_samples = num_samples;
vgmstream->loop_start_sample = loop_start;
vgmstream->loop_end_sample = loop_end;
/* Determine coding type based on format ID */
switch (format) {
//Myst 1993
case 0x0000: /* 8-bit unsigned PCM. Default */
vgmstream->coding_type = coding_PCM8_U;
vgmstream->layout_type = layout_interleave; // Usually mono.
vgmstream->interleave_block_size = 0x01;
break;
//Carmen Sandiego: Word Detective
case 0x0001: /* IMA ADPCM */
vgmstream->coding_type = coding_IMA;
vgmstream->layout_type = layout_none;
break;
default: /* Unknown format */
goto fail;
}
if (!vgmstream_open_stream(vgmstream, sf, start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -7,37 +7,37 @@
static VGMSTREAM* init_vgmstream_mp4_aac_offset(STREAMFILE* sf, uint64_t start, uint64_t size);
VGMSTREAM* init_vgmstream_mp4_aac(STREAMFILE* sf) {
return init_vgmstream_mp4_aac_offset( sf, 0x00, get_streamfile_size(sf));
return init_vgmstream_mp4_aac_offset( sf, 0x00, get_streamfile_size(sf));
}
static VGMSTREAM* init_vgmstream_mp4_aac_offset(STREAMFILE* sf, uint64_t start, uint64_t size) {
VGMSTREAM* vgmstream = NULL;
mp4_aac_codec_data* data = NULL;
VGMSTREAM* vgmstream = NULL;
mp4_aac_codec_data* data = NULL;
data = init_mp4_aac(sf);
if (!data) goto fail;
data = init_mp4_aac(sf);
if (!data) goto fail;
int channels = mp4_aac_get_channels(data);
int channels = mp4_aac_get_channels(data);
vgmstream = allocate_vgmstream(channels, 0);
if (!vgmstream) goto fail;
vgmstream = allocate_vgmstream(channels, 0);
if (!vgmstream) goto fail;
vgmstream->sample_rate = mp4_aac_get_sample_rate(data);
vgmstream->num_samples = mp4_aac_get_samples(data);
vgmstream->sample_rate = mp4_aac_get_sample_rate(data);
vgmstream->num_samples = mp4_aac_get_samples(data);
vgmstream->codec_data = data;
vgmstream->coding_type = coding_MP4_AAC;
vgmstream->codec_data = data;
vgmstream->coding_type = coding_MP4_AAC;
vgmstream->layout_type = layout_none;
vgmstream->meta_type = meta_MP4;
vgmstream->layout_type = layout_none;
vgmstream->meta_type = meta_MP4;
return vgmstream;
return vgmstream;
fail:
free_mp4_aac(data);
if (vgmstream) {
vgmstream->codec_data = NULL;
close_vgmstream(vgmstream);
}
return NULL;
return NULL;
}
#endif

View file

@ -1,218 +1,218 @@
//MxSt files ripped from Jukebox.si in Lego Island
#include "meta.h"
#include "../layout/layout.h"
#include "../util.h"
VGMSTREAM * init_vgmstream_pc_mxst(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
char filename[PATH_LIMIT];
int loop_flag=0;
int bits_per_sample;
int channel_count;
int sample_rate,bytes_per_second;
long sample_count;
int i;
off_t file_size;
off_t chunk_list_size=-1;
off_t start_offset;
/* check extension, case insensitive */
streamFile->get_name(streamFile,filename,sizeof(filename));
if (strcasecmp("mxst",filename_extension(filename))) goto fail;
/* looping info not found yet */
//loop_flag = get_streamfile_size(streamFile) > 700000;
/* check MxSt header */
if (0x4d785374 != read_32bitBE(0, streamFile)) goto fail;
file_size = read_32bitLE(4, streamFile) + 8;
if (file_size != get_streamfile_size(streamFile)) goto fail;
/* read chunks */
{
off_t MxDa=-1; /* points inside the MxDa chunk */
off_t MxCh=-1; /* point at start of the first MxCh chunk */
off_t chunk_offset = 8;
uint32_t stream_id;
while (chunk_offset < file_size)
{
uint32_t chunk_size = (read_32bitLE(chunk_offset+4, streamFile)+1)/2*2;
switch (read_32bitBE(chunk_offset, streamFile))
{
case 0x4d784f62: /* MxOb */
/* not interesting for playback */
break;
case 0x20574156: /* " WAV" */
if (chunk_size == 1)
chunk_size = 8;
break;
case 0x4c495354: /* LIST */
{
off_t first_item_offset = chunk_offset+0x14;
off_t list_chunk_offset = first_item_offset+
read_32bitLE(chunk_offset+0x10,streamFile);
if (read_32bitBE(chunk_offset+0x8,streamFile) == 0x4d784461) /* MxDa */
MxDa = first_item_offset;
else
goto fail;
if (read_32bitBE(chunk_offset+0xC,streamFile) ==
0x4d784368) /* MxCh */
{
MxCh = list_chunk_offset;
chunk_list_size = chunk_size - (list_chunk_offset-(chunk_offset+8));
}
else
goto fail;
break;
}
default:
goto fail;
}
chunk_offset += 8 + chunk_size;
if (chunk_offset > file_size) goto fail;
}
if (MxDa == -1 || MxCh == -1 || chunk_list_size == -1) goto fail;
/* parse MxDa */
{
/* ??? */
if (0 != read_16bitLE(MxDa+0x00,streamFile)) goto fail;
stream_id = read_32bitLE(MxDa+0x2,streamFile);
/* First sample (none in MxDa block) */
if (-1 != read_32bitLE(MxDa+0x06,streamFile)) goto fail;
/* size of format data */
if (0x18 != read_32bitLE(MxDa+0x0a,streamFile)) goto fail;
/* PCM */
if (1 != read_16bitLE(MxDa+0x0e,streamFile)) goto fail;
/* channel count */
channel_count = read_16bitLE(MxDa+0x10,streamFile);
/* only mono known */
if (1 != channel_count) goto fail;
sample_rate = read_32bitLE(MxDa+0x12,streamFile);
bits_per_sample = read_16bitLE(MxDa+0x1c,streamFile);
/* bytes per second */
bytes_per_second = read_32bitLE(MxDa+0x16,streamFile);
if (bits_per_sample/8*channel_count*sample_rate != bytes_per_second) goto fail;
/* block align */
if (bits_per_sample/8*channel_count !=
read_16bitLE(MxDa+0x1a,streamFile)) goto fail;
sample_count = read_32bitLE(MxDa+0x1e,streamFile)/(bits_per_sample/8)/channel_count;
/* 2c? data offset in normal RIFF WAVE? */
if (0x2c != read_32bitLE(MxDa+0x22,streamFile)) goto fail;
}
/* parse through all MxCh for consistency check */
{
long samples = 0;
int split_frames_seen = 0;
off_t MxCh_offset = MxCh;
while (MxCh_offset < MxCh+chunk_list_size)
{
uint16_t flags;
if (read_32bitBE(MxCh_offset,streamFile)!=0x70616420) /*pad*/
{
if (read_32bitBE(MxCh_offset,streamFile)!=0x4d784368) /*MxCh*/
goto fail;
flags = read_16bitLE(MxCh_offset+8+0,streamFile);
if (read_32bitLE(MxCh_offset+8+2,streamFile)!=stream_id)
goto fail;
if (flags & 0x10)
{
split_frames_seen ++;
if (split_frames_seen == 1)
{
if (read_32bitLE(MxCh_offset+8+6,streamFile)!=(samples*UINT64_C(1000)+sample_rate-1)/sample_rate)
goto fail;
}
else if (split_frames_seen == 2)
{
if ( read_32bitLE(MxCh_offset+8+0xa,streamFile)!=
read_32bitLE(MxCh_offset+4,streamFile)-0xe ) goto fail;
split_frames_seen = 0;
}
else goto fail;
}
if (!(flags & 0x10))
{
if (split_frames_seen != 0)
{
goto fail;
}
if (read_32bitLE(MxCh_offset+8+6,streamFile)!=(samples*UINT64_C(1000)+sample_rate-1)/sample_rate)
goto fail;
if ( read_32bitLE(MxCh_offset+8+0xa,streamFile)!=
read_32bitLE(MxCh_offset+4,streamFile)-0xe ) goto fail;
}
samples += (read_32bitLE(MxCh_offset+4,streamFile)-0xe)/(bits_per_sample/8/channel_count);
}
MxCh_offset += 8 + (read_32bitLE(MxCh_offset+4,streamFile)+1)/2*2;
if (MxCh_offset > MxCh+chunk_list_size) goto fail;
}
//printf("samples=%d sample_count=%d\n",samples,sample_count);
//samples = (samples * (bits_per_sample/8) * channel_count + 31)/32*32/(bits_per_sample/8)/channel_count;
if (samples < sample_count)
{
sample_count = samples;
}
if (samples != sample_count) goto fail;
}
start_offset = MxCh;
}
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,loop_flag);
if (!vgmstream) goto fail;
/* fill in the vital statistics */
vgmstream->channels = channel_count;
vgmstream->sample_rate = sample_rate;
vgmstream->layout_type = layout_blocked_mxch;
vgmstream->meta_type = meta_PC_MXST;
if(bits_per_sample == 8)
{
vgmstream->coding_type = coding_PCM8_U;
}
else if (bits_per_sample == 16)
{
vgmstream->coding_type = coding_PCM16LE;
}
else goto fail;
vgmstream->num_samples = sample_count;
if(loop_flag)
{
vgmstream->loop_start_sample = 0;
vgmstream->loop_end_sample=vgmstream->num_samples;
}
/* open the file for reading by each channel */
{
for (i=0;i<channel_count;i++) {
vgmstream->ch[i].streamfile =
streamFile->open(streamFile,filename,STREAMFILE_DEFAULT_BUFFER_SIZE);
if (!vgmstream->ch[i].streamfile) goto fail;
}
}
block_update_mxch(start_offset, vgmstream);
return vgmstream;
/* clean up anything we may have opened */
fail:
if (vgmstream) close_vgmstream(vgmstream);
return NULL;
}
//MxSt files ripped from Jukebox.si in Lego Island
#include "meta.h"
#include "../layout/layout.h"
#include "../util.h"
VGMSTREAM * init_vgmstream_pc_mxst(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
char filename[PATH_LIMIT];
int loop_flag=0;
int bits_per_sample;
int channel_count;
int sample_rate,bytes_per_second;
long sample_count;
int i;
off_t file_size;
off_t chunk_list_size=-1;
off_t start_offset;
/* check extension, case insensitive */
streamFile->get_name(streamFile,filename,sizeof(filename));
if (strcasecmp("mxst",filename_extension(filename))) goto fail;
/* looping info not found yet */
//loop_flag = get_streamfile_size(streamFile) > 700000;
/* check MxSt header */
if (0x4d785374 != read_32bitBE(0, streamFile)) goto fail;
file_size = read_32bitLE(4, streamFile) + 8;
if (file_size != get_streamfile_size(streamFile)) goto fail;
/* read chunks */
{
off_t MxDa=-1; /* points inside the MxDa chunk */
off_t MxCh=-1; /* point at start of the first MxCh chunk */
off_t chunk_offset = 8;
uint32_t stream_id;
while (chunk_offset < file_size)
{
uint32_t chunk_size = (read_32bitLE(chunk_offset+4, streamFile)+1)/2*2;
switch (read_32bitBE(chunk_offset, streamFile))
{
case 0x4d784f62: /* MxOb */
/* not interesting for playback */
break;
case 0x20574156: /* " WAV" */
if (chunk_size == 1)
chunk_size = 8;
break;
case 0x4c495354: /* LIST */
{
off_t first_item_offset = chunk_offset+0x14;
off_t list_chunk_offset = first_item_offset+
read_32bitLE(chunk_offset+0x10,streamFile);
if (read_32bitBE(chunk_offset+0x8,streamFile) == 0x4d784461) /* MxDa */
MxDa = first_item_offset;
else
goto fail;
if (read_32bitBE(chunk_offset+0xC,streamFile) ==
0x4d784368) /* MxCh */
{
MxCh = list_chunk_offset;
chunk_list_size = chunk_size - (list_chunk_offset-(chunk_offset+8));
}
else
goto fail;
break;
}
default:
goto fail;
}
chunk_offset += 8 + chunk_size;
if (chunk_offset > file_size) goto fail;
}
if (MxDa == -1 || MxCh == -1 || chunk_list_size == -1) goto fail;
/* parse MxDa */
{
/* ??? */
if (0 != read_16bitLE(MxDa+0x00,streamFile)) goto fail;
stream_id = read_32bitLE(MxDa+0x2,streamFile);
/* First sample (none in MxDa block) */
if (-1 != read_32bitLE(MxDa+0x06,streamFile)) goto fail;
/* size of format data */
if (0x18 != read_32bitLE(MxDa+0x0a,streamFile)) goto fail;
/* PCM */
if (1 != read_16bitLE(MxDa+0x0e,streamFile)) goto fail;
/* channel count */
channel_count = read_16bitLE(MxDa+0x10,streamFile);
/* only mono known */
if (1 != channel_count) goto fail;
sample_rate = read_32bitLE(MxDa+0x12,streamFile);
bits_per_sample = read_16bitLE(MxDa+0x1c,streamFile);
/* bytes per second */
bytes_per_second = read_32bitLE(MxDa+0x16,streamFile);
if (bits_per_sample/8*channel_count*sample_rate != bytes_per_second) goto fail;
/* block align */
if (bits_per_sample/8*channel_count !=
read_16bitLE(MxDa+0x1a,streamFile)) goto fail;
sample_count = read_32bitLE(MxDa+0x1e,streamFile)/(bits_per_sample/8)/channel_count;
/* 2c? data offset in normal RIFF WAVE? */
if (0x2c != read_32bitLE(MxDa+0x22,streamFile)) goto fail;
}
/* parse through all MxCh for consistency check */
{
long samples = 0;
int split_frames_seen = 0;
off_t MxCh_offset = MxCh;
while (MxCh_offset < MxCh+chunk_list_size)
{
uint16_t flags;
if (read_32bitBE(MxCh_offset,streamFile)!=0x70616420) /*pad*/
{
if (read_32bitBE(MxCh_offset,streamFile)!=0x4d784368) /*MxCh*/
goto fail;
flags = read_16bitLE(MxCh_offset+8+0,streamFile);
if (read_32bitLE(MxCh_offset+8+2,streamFile)!=stream_id)
goto fail;
if (flags & 0x10)
{
split_frames_seen ++;
if (split_frames_seen == 1)
{
if (read_32bitLE(MxCh_offset+8+6,streamFile)!=(samples*UINT64_C(1000)+sample_rate-1)/sample_rate)
goto fail;
}
else if (split_frames_seen == 2)
{
if ( read_32bitLE(MxCh_offset+8+0xa,streamFile)!=
read_32bitLE(MxCh_offset+4,streamFile)-0xe ) goto fail;
split_frames_seen = 0;
}
else goto fail;
}
if (!(flags & 0x10))
{
if (split_frames_seen != 0)
{
goto fail;
}
if (read_32bitLE(MxCh_offset+8+6,streamFile)!=(samples*UINT64_C(1000)+sample_rate-1)/sample_rate)
goto fail;
if ( read_32bitLE(MxCh_offset+8+0xa,streamFile)!=
read_32bitLE(MxCh_offset+4,streamFile)-0xe ) goto fail;
}
samples += (read_32bitLE(MxCh_offset+4,streamFile)-0xe)/(bits_per_sample/8/channel_count);
}
MxCh_offset += 8 + (read_32bitLE(MxCh_offset+4,streamFile)+1)/2*2;
if (MxCh_offset > MxCh+chunk_list_size) goto fail;
}
//printf("samples=%d sample_count=%d\n",samples,sample_count);
//samples = (samples * (bits_per_sample/8) * channel_count + 31)/32*32/(bits_per_sample/8)/channel_count;
if (samples < sample_count)
{
sample_count = samples;
}
if (samples != sample_count) goto fail;
}
start_offset = MxCh;
}
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,loop_flag);
if (!vgmstream) goto fail;
/* fill in the vital statistics */
vgmstream->channels = channel_count;
vgmstream->sample_rate = sample_rate;
vgmstream->layout_type = layout_blocked_mxch;
vgmstream->meta_type = meta_PC_MXST;
if(bits_per_sample == 8)
{
vgmstream->coding_type = coding_PCM8_U;
}
else if (bits_per_sample == 16)
{
vgmstream->coding_type = coding_PCM16LE;
}
else goto fail;
vgmstream->num_samples = sample_count;
if(loop_flag)
{
vgmstream->loop_start_sample = 0;
vgmstream->loop_end_sample=vgmstream->num_samples;
}
/* open the file for reading by each channel */
{
for (i=0;i<channel_count;i++) {
vgmstream->ch[i].streamfile =
streamFile->open(streamFile,filename,STREAMFILE_DEFAULT_BUFFER_SIZE);
if (!vgmstream->ch[i].streamfile) goto fail;
}
}
block_update_mxch(start_offset, vgmstream);
return vgmstream;
/* clean up anything we may have opened */
fail:
if (vgmstream) close_vgmstream(vgmstream);
return NULL;
}

View file

@ -1,256 +1,256 @@
#include "meta.h"
#include "../coding/coding.h"
/* Headerless PS-ADPCM
* Guesses interleave/channels/loops by testing data and using the file extension for sample rate.
* This is an ugly crutch for older sets, use TXTH to properly play headerless data instead. */
VGMSTREAM * init_vgmstream_ps_headerless(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset = 0x00;
char filename[PATH_LIMIT];
uint8_t mibBuffer[0x10];
uint8_t testBuffer[0x10];
size_t fileLength;
off_t loopStart = 0;
off_t loopEnd = 0;
off_t interleave = 0;
off_t readOffset = 0;
off_t loopStartPoints[0x10] = {0};
int loopStartPointsCount=0;
off_t loopEndPoints[0x10] = {0};
int loopEndPointsCount=0;
int loopToEnd=0;
int forceNoLoop=0;
int gotEmptyLine=0;
int i, channel_count=0;
/* checks
* .mib: common, but many ext-less files are renamed to this.
* .mi4: fake .mib to force another sample rate */
streamFile->get_name(streamFile,filename,sizeof(filename));
if (strcasecmp("mib",filename_extension(filename)) &&
strcasecmp("mi4",filename_extension(filename)))
goto fail;
/* test if raw PS-ADPCM */
if (!ps_check_format(streamFile, 0x00, 0x2000))
goto fail;
fileLength = get_streamfile_size(streamFile);
/* Search for interleave value (checking channel starts) and loop points (using PS-ADPCM flags).
* Channel start will by 0x0000, 0x0002, 0x0006 followed by 12 zero values.
* Interleave value is the offset where those repeat, and channels the number of times.
* Loop flags in second byte are: 0x06 = start, 0x03 = end (per channel).
* Interleave can be large (up to 0x20000 found so far) and is always a 0x10 multiple value. */
readOffset+=(off_t)read_streamfile(mibBuffer,0,0x10,streamFile);
mibBuffer[0]=0;
{
uint8_t doChannelUpdate=1;
uint8_t bDoUpdateInterleave=1;
readOffset=0;
do {
readOffset+=(off_t)read_streamfile(testBuffer,readOffset,0x10,streamFile);
// be sure to point to an interleave value
if(readOffset<(int32_t)(fileLength*0.5)) {
if(memcmp(testBuffer+2, mibBuffer+2,0x0e)) {
if(doChannelUpdate) {
doChannelUpdate=0;
channel_count++;
}
if(channel_count<2)
bDoUpdateInterleave=1;
}
testBuffer[0]=0;
if(!memcmp(testBuffer,mibBuffer,0x10)) {
gotEmptyLine=1;
if(bDoUpdateInterleave) {
bDoUpdateInterleave=0;
interleave=readOffset-0x10;
}
if(readOffset-0x10 == channel_count*interleave) {
doChannelUpdate=1;
}
}
}
// Loop Start ...
if(testBuffer[0x01]==0x06) {
if(loopStartPointsCount<0x10) {
loopStartPoints[loopStartPointsCount] = readOffset-0x10;
loopStartPointsCount++;
}
}
// Loop End ...
if(testBuffer[0x01]==0x03 && testBuffer[0x03]!=0x77) {
if(loopEndPointsCount<0x10) {
loopEndPoints[loopEndPointsCount] = readOffset;
loopEndPointsCount++;
}
}
if(testBuffer[0x01]==0x04) {
// 0x04 loop points flag can't be with a 0x03 loop points flag
if(loopStartPointsCount<0x10) {
loopStartPoints[loopStartPointsCount] = readOffset-0x10;
loopStartPointsCount++;
// Loop end value is not set by flags ...
// go until end of file
loopToEnd=1;
}
}
} while (readOffset<((int32_t)fileLength));
}
if(testBuffer[0]==0x0c && testBuffer[1]==0)
forceNoLoop=1;
if(channel_count==0)
channel_count=1;
// Calc Loop Points & Interleave ...
if(loopStartPointsCount>=2) {
// can't get more then 0x10 loop point !
if(loopStartPointsCount<=0x0F) {
// Always took the first 2 loop points
interleave=loopStartPoints[1]-loopStartPoints[0];
loopStart=loopStartPoints[1];
// Can't be one channel .mib with interleave values
if(interleave>0 && channel_count==1)
channel_count=2;
} else {
loopStart=0;
}
}
if(loopEndPointsCount>=2) {
// can't get more then 0x10 loop point !
if(loopEndPointsCount<=0x0F) {
// No need to recalculate interleave value ...
loopEnd=loopEndPoints[loopEndPointsCount-1];
// Can't be one channel .mib with interleave values
if(channel_count==1)
channel_count=2;
} else {
loopToEnd=0;
loopEnd=0;
}
}
if (loopToEnd)
loopEnd=fileLength;
if(forceNoLoop)
loopEnd=0;
if(interleave>0x10 && channel_count==1)
channel_count=2;
if(interleave==0)
interleave=0x10;
// further check on channel_count ...
if(gotEmptyLine) {
int newChannelCount = 0;
readOffset=0;
/* count empty lines at interleave = channels */
do {
newChannelCount++;
read_streamfile(testBuffer,readOffset,0x10,streamFile);
readOffset+=interleave;
} while(!memcmp(testBuffer,mibBuffer,16));
newChannelCount--;
if(newChannelCount>channel_count)
channel_count=newChannelCount;
}
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,(loopEnd!=0));
if (!vgmstream) goto fail;
vgmstream->coding_type = coding_PSX;
vgmstream->layout_type = (channel_count == 1) ? layout_none : layout_interleave;
vgmstream->interleave_block_size = interleave;
if(!strcasecmp("mib",filename_extension(filename)))
vgmstream->sample_rate = 44100;
if(!strcasecmp("mi4",filename_extension(filename)))
vgmstream->sample_rate = 48000;
vgmstream->num_samples = (int32_t)(fileLength/16/channel_count*28);
if(loopEnd!=0) {
if(vgmstream->channels==1) {
vgmstream->loop_start_sample = loopStart/16*18; //todo 18 instead of 28 probably a bug
vgmstream->loop_end_sample = loopEnd/16*28;
} else {
vgmstream->loop_start_sample = ((((loopStart/vgmstream->interleave_block_size)-1)*vgmstream->interleave_block_size)/16*14*channel_count)/channel_count;
if(loopStart%vgmstream->interleave_block_size) {
vgmstream->loop_start_sample += (((loopStart%vgmstream->interleave_block_size)-1)/16*14*channel_count);
}
if(loopEnd==fileLength) {
vgmstream->loop_end_sample=(loopEnd/16*28)/channel_count;
} else {
vgmstream->loop_end_sample = ((((loopEnd/vgmstream->interleave_block_size)-1)*vgmstream->interleave_block_size)/16*14*channel_count)/channel_count;
if(loopEnd%vgmstream->interleave_block_size) {
vgmstream->loop_end_sample += (((loopEnd%vgmstream->interleave_block_size)-1)/16*14*channel_count);
}
}
}
}
if(loopToEnd) {
// try to find if there's no empty line ...
int emptySamples=0;
for(i=0; i<16;i++) {
mibBuffer[i]=0; //memset
}
readOffset=fileLength-0x10;
do {
read_streamfile(testBuffer,readOffset,0x10,streamFile);
if(!memcmp(mibBuffer,testBuffer,16)) {
emptySamples+=28;
}
readOffset-=0x10;
} while(!memcmp(testBuffer,mibBuffer,16));
vgmstream->loop_end_sample-=(emptySamples*channel_count);
}
vgmstream->meta_type = meta_PS_HEADERLESS;
vgmstream->allow_dual_stereo = 1;
if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}
#include "meta.h"
#include "../coding/coding.h"
/* Headerless PS-ADPCM
* Guesses interleave/channels/loops by testing data and using the file extension for sample rate.
* This is an ugly crutch for older sets, use TXTH to properly play headerless data instead. */
VGMSTREAM * init_vgmstream_ps_headerless(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset = 0x00;
char filename[PATH_LIMIT];
uint8_t mibBuffer[0x10];
uint8_t testBuffer[0x10];
size_t fileLength;
off_t loopStart = 0;
off_t loopEnd = 0;
off_t interleave = 0;
off_t readOffset = 0;
off_t loopStartPoints[0x10] = {0};
int loopStartPointsCount=0;
off_t loopEndPoints[0x10] = {0};
int loopEndPointsCount=0;
int loopToEnd=0;
int forceNoLoop=0;
int gotEmptyLine=0;
int i, channel_count=0;
/* checks
* .mib: common, but many ext-less files are renamed to this.
* .mi4: fake .mib to force another sample rate */
streamFile->get_name(streamFile,filename,sizeof(filename));
if (strcasecmp("mib",filename_extension(filename)) &&
strcasecmp("mi4",filename_extension(filename)))
goto fail;
/* test if raw PS-ADPCM */
if (!ps_check_format(streamFile, 0x00, 0x2000))
goto fail;
fileLength = get_streamfile_size(streamFile);
/* Search for interleave value (checking channel starts) and loop points (using PS-ADPCM flags).
* Channel start will by 0x0000, 0x0002, 0x0006 followed by 12 zero values.
* Interleave value is the offset where those repeat, and channels the number of times.
* Loop flags in second byte are: 0x06 = start, 0x03 = end (per channel).
* Interleave can be large (up to 0x20000 found so far) and is always a 0x10 multiple value. */
readOffset+=(off_t)read_streamfile(mibBuffer,0,0x10,streamFile);
mibBuffer[0]=0;
{
uint8_t doChannelUpdate=1;
uint8_t bDoUpdateInterleave=1;
readOffset=0;
do {
readOffset+=(off_t)read_streamfile(testBuffer,readOffset,0x10,streamFile);
// be sure to point to an interleave value
if(readOffset<(int32_t)(fileLength*0.5)) {
if(memcmp(testBuffer+2, mibBuffer+2,0x0e)) {
if(doChannelUpdate) {
doChannelUpdate=0;
channel_count++;
}
if(channel_count<2)
bDoUpdateInterleave=1;
}
testBuffer[0]=0;
if(!memcmp(testBuffer,mibBuffer,0x10)) {
gotEmptyLine=1;
if(bDoUpdateInterleave) {
bDoUpdateInterleave=0;
interleave=readOffset-0x10;
}
if(readOffset-0x10 == channel_count*interleave) {
doChannelUpdate=1;
}
}
}
// Loop Start ...
if(testBuffer[0x01]==0x06) {
if(loopStartPointsCount<0x10) {
loopStartPoints[loopStartPointsCount] = readOffset-0x10;
loopStartPointsCount++;
}
}
// Loop End ...
if(testBuffer[0x01]==0x03 && testBuffer[0x03]!=0x77) {
if(loopEndPointsCount<0x10) {
loopEndPoints[loopEndPointsCount] = readOffset;
loopEndPointsCount++;
}
}
if(testBuffer[0x01]==0x04) {
// 0x04 loop points flag can't be with a 0x03 loop points flag
if(loopStartPointsCount<0x10) {
loopStartPoints[loopStartPointsCount] = readOffset-0x10;
loopStartPointsCount++;
// Loop end value is not set by flags ...
// go until end of file
loopToEnd=1;
}
}
} while (readOffset<((int32_t)fileLength));
}
if(testBuffer[0]==0x0c && testBuffer[1]==0)
forceNoLoop=1;
if(channel_count==0)
channel_count=1;
// Calc Loop Points & Interleave ...
if(loopStartPointsCount>=2) {
// can't get more then 0x10 loop point !
if(loopStartPointsCount<=0x0F) {
// Always took the first 2 loop points
interleave=loopStartPoints[1]-loopStartPoints[0];
loopStart=loopStartPoints[1];
// Can't be one channel .mib with interleave values
if(interleave>0 && channel_count==1)
channel_count=2;
} else {
loopStart=0;
}
}
if(loopEndPointsCount>=2) {
// can't get more then 0x10 loop point !
if(loopEndPointsCount<=0x0F) {
// No need to recalculate interleave value ...
loopEnd=loopEndPoints[loopEndPointsCount-1];
// Can't be one channel .mib with interleave values
if(channel_count==1)
channel_count=2;
} else {
loopToEnd=0;
loopEnd=0;
}
}
if (loopToEnd)
loopEnd=fileLength;
if(forceNoLoop)
loopEnd=0;
if(interleave>0x10 && channel_count==1)
channel_count=2;
if(interleave==0)
interleave=0x10;
// further check on channel_count ...
if(gotEmptyLine) {
int newChannelCount = 0;
readOffset=0;
/* count empty lines at interleave = channels */
do {
newChannelCount++;
read_streamfile(testBuffer,readOffset,0x10,streamFile);
readOffset+=interleave;
} while(!memcmp(testBuffer,mibBuffer,16));
newChannelCount--;
if(newChannelCount>channel_count)
channel_count=newChannelCount;
}
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,(loopEnd!=0));
if (!vgmstream) goto fail;
vgmstream->coding_type = coding_PSX;
vgmstream->layout_type = (channel_count == 1) ? layout_none : layout_interleave;
vgmstream->interleave_block_size = interleave;
if(!strcasecmp("mib",filename_extension(filename)))
vgmstream->sample_rate = 44100;
if(!strcasecmp("mi4",filename_extension(filename)))
vgmstream->sample_rate = 48000;
vgmstream->num_samples = (int32_t)(fileLength/16/channel_count*28);
if(loopEnd!=0) {
if(vgmstream->channels==1) {
vgmstream->loop_start_sample = loopStart/16*18; //todo 18 instead of 28 probably a bug
vgmstream->loop_end_sample = loopEnd/16*28;
} else {
vgmstream->loop_start_sample = ((((loopStart/vgmstream->interleave_block_size)-1)*vgmstream->interleave_block_size)/16*14*channel_count)/channel_count;
if(loopStart%vgmstream->interleave_block_size) {
vgmstream->loop_start_sample += (((loopStart%vgmstream->interleave_block_size)-1)/16*14*channel_count);
}
if(loopEnd==fileLength) {
vgmstream->loop_end_sample=(loopEnd/16*28)/channel_count;
} else {
vgmstream->loop_end_sample = ((((loopEnd/vgmstream->interleave_block_size)-1)*vgmstream->interleave_block_size)/16*14*channel_count)/channel_count;
if(loopEnd%vgmstream->interleave_block_size) {
vgmstream->loop_end_sample += (((loopEnd%vgmstream->interleave_block_size)-1)/16*14*channel_count);
}
}
}
}
if(loopToEnd) {
// try to find if there's no empty line ...
int emptySamples=0;
for(i=0; i<16;i++) {
mibBuffer[i]=0; //memset
}
readOffset=fileLength-0x10;
do {
read_streamfile(testBuffer,readOffset,0x10,streamFile);
if(!memcmp(mibBuffer,testBuffer,16)) {
emptySamples+=28;
}
readOffset-=0x10;
} while(!memcmp(testBuffer,mibBuffer,16));
vgmstream->loop_end_sample-=(emptySamples*channel_count);
}
vgmstream->meta_type = meta_PS_HEADERLESS;
vgmstream->allow_dual_stereo = 1;
if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -1,38 +1,38 @@
#include "meta.h"
#include "../coding/coding.h"
/* RAW - RAW format is native 44khz PCM file */
VGMSTREAM * init_vgmstream_raw_pcm(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset;
int loop_flag, channel_count;
/* checks */
if (!check_extensions(streamFile, "raw"))
goto fail;
channel_count = 2;
loop_flag = 0;
start_offset = 0x00;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count, loop_flag);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_RAW_PCM;
vgmstream->sample_rate = 44100;
vgmstream->num_samples = pcm_bytes_to_samples(get_streamfile_size(streamFile), channel_count, 16);
vgmstream->coding_type = coding_PCM16LE;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = 0x02;
if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}
#include "meta.h"
#include "../coding/coding.h"
/* RAW - RAW format is native 44khz PCM file */
VGMSTREAM * init_vgmstream_raw_pcm(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset;
int loop_flag, channel_count;
/* checks */
if (!check_extensions(streamFile, "raw"))
goto fail;
channel_count = 2;
loop_flag = 0;
start_offset = 0x00;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count, loop_flag);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_RAW_PCM;
vgmstream->sample_rate = 44100;
vgmstream->num_samples = pcm_bytes_to_samples(get_streamfile_size(streamFile), channel_count, 16);
vgmstream->coding_type = coding_PCM16LE;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = 0x02;
if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -1,36 +1,36 @@
#include "meta.h"
#include "../coding/coding.h"
/* WAVM - headerless format which can be found on XBOX */
VGMSTREAM * init_vgmstream_raw_wavm(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset = 0;
int loop_flag, channel_count;
/* check extension */
if (!check_extensions(streamFile,"wavm"))
goto fail;
start_offset = 0;
loop_flag = 0;
channel_count = 2;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,loop_flag);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_RAW_WAVM;
vgmstream->sample_rate = 44100;
vgmstream->num_samples = xbox_ima_bytes_to_samples(get_streamfile_size(streamFile), vgmstream->channels);
vgmstream->coding_type = coding_XBOX_IMA;
vgmstream->layout_type = layout_none;
if (!vgmstream_open_stream(vgmstream, streamFile, start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}
#include "meta.h"
#include "../coding/coding.h"
/* WAVM - headerless format which can be found on XBOX */
VGMSTREAM * init_vgmstream_raw_wavm(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset = 0;
int loop_flag, channel_count;
/* check extension */
if (!check_extensions(streamFile,"wavm"))
goto fail;
start_offset = 0;
loop_flag = 0;
channel_count = 2;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,loop_flag);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_RAW_WAVM;
vgmstream->sample_rate = 44100;
vgmstream->num_samples = xbox_ima_bytes_to_samples(get_streamfile_size(streamFile), vgmstream->channels);
vgmstream->coding_type = coding_XBOX_IMA;
vgmstream->layout_type = layout_none;
if (!vgmstream_open_stream(vgmstream, streamFile, start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -1,53 +1,54 @@
#include "meta.h"
/* .seb - Game Arts games [Grandia (PS1), Grandia II/III/X (PS2)] */
VGMSTREAM * init_vgmstream_seb(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset;
int loop_flag, channel_count;
/* checks */
/* .seb: found in Grandia II (PS2) .idx */
/* .gms: fake? (.stz+idx bigfile without names, except in Grandia II) */
if (!check_extensions(streamFile, "seb,gms,"))
goto fail;
channel_count = read_32bitLE(0x00,streamFile);
if (channel_count > 2) goto fail; /* mono or stereo */
/* 0x08/0c: unknown count, possibly related to looping */
start_offset = 0x800;
if (read_32bitLE(0x10,streamFile) > get_streamfile_size(streamFile) || /* loop start offset */
read_32bitLE(0x18,streamFile) > get_streamfile_size(streamFile)) /* loop end offset */
goto fail;
/* in Grandia III sometimes there is a value at 0x24/34 */
loop_flag = (read_32bitLE(0x20,streamFile) == 0);
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,loop_flag);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_SEB;
vgmstream->sample_rate = read_32bitLE(0x04,streamFile);
vgmstream->num_samples = read_32bitLE(0x1c,streamFile);
vgmstream->loop_start_sample = read_32bitLE(0x14,streamFile);
vgmstream->loop_end_sample = read_32bitLE(0x1c,streamFile);
vgmstream->coding_type = coding_PSX;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = 0x800;
if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}
#include "meta.h"
/* .seb - Game Arts games [Grandia (PS1), Grandia II/III/X (PS2)] */
VGMSTREAM* init_vgmstream_seb(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
off_t start_offset;
int loop_flag, channels;
/* checks */
channels = read_32bitLE(0x00,sf);
if (channels > 2)
return NULL;
// 0x08/0c: unknown count, possibly related to looping
/* .seb: found in Grandia II (PS2) .idx */
/* .gms: fake? (.stz+idx bigfile without names, except in Grandia II) */
if (!check_extensions(sf, "seb,gms,"))
return NULL;
start_offset = 0x800;
if (read_u32le(0x10,sf) > get_streamfile_size(sf) || // loop start offset
read_u32le(0x18,sf) > get_streamfile_size(sf)) // loop end offset
return NULL;
/* in Grandia III sometimes there is a value at 0x24/34 */
loop_flag = (read_s32le(0x20,sf) == 0);
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channels,loop_flag);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_SEB;
vgmstream->sample_rate = read_s32le(0x04,sf);
vgmstream->num_samples = read_s32le(0x1c,sf);
vgmstream->loop_start_sample = read_s32le(0x14,sf);
vgmstream->loop_end_sample = read_s32le(0x1c,sf);
vgmstream->coding_type = coding_PSX;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = 0x800;
if (!vgmstream_open_stream(vgmstream, sf, start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -1,65 +0,0 @@
#include "meta.h"
#include "../coding/coding.h"
/* SMC+SMH - from Wangan Midnight 1/R (System246) */
VGMSTREAM * init_vgmstream_smc_smh(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
STREAMFILE * streamHeader = NULL;
off_t start_offset, header_offset = 0;
size_t stream_size;
int loop_flag = 0, channel_count, sample_rate;
int total_subsongs, target_subsong = streamFile->stream_index;
/* checks */
if (!check_extensions(streamFile, "smc"))
goto fail;
streamHeader = open_streamfile_by_ext(streamFile, "smh");
if (!streamHeader) goto fail;
total_subsongs = read_32bitLE(0x00,streamHeader);
if (target_subsong == 0) target_subsong = 1;
if (target_subsong < 0 || target_subsong > total_subsongs || total_subsongs < 1) goto fail;
if (total_subsongs*0x10 + 0x10 != get_streamfile_size(streamHeader))
goto fail;
header_offset = 0x10 + (target_subsong-1)*0x10;
start_offset = read_32bitLE(header_offset+0x00, streamHeader);
stream_size = read_32bitLE(header_offset+0x04, streamHeader);
sample_rate = read_32bitLE(header_offset+0x08, streamHeader);
/* 0x0c(2): always 0x10, frame size? */
channel_count = read_16bitLE(header_offset+0x0e, streamHeader);
loop_flag = 0;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count,loop_flag);
if (!vgmstream) goto fail;
vgmstream->sample_rate = sample_rate;
vgmstream->num_samples = ps_bytes_to_samples(stream_size,channel_count);
vgmstream->num_streams = total_subsongs;
vgmstream->stream_size = stream_size;
vgmstream->meta_type = meta_SMC_SMH;
vgmstream->coding_type = coding_PSX;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = read_32bitLE(0x04, streamHeader);
if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
goto fail;
close_streamfile(streamHeader);
return vgmstream;
fail:
close_streamfile(streamHeader);
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -0,0 +1,64 @@
#include "meta.h"
#include "../coding/coding.h"
/* SMH+SMC - from Wangan Midnight 1/R (System246) */
VGMSTREAM* init_vgmstream_smh_smc(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
STREAMFILE* sb = NULL;
off_t start_offset, header_offset = 0;
size_t stream_size;
int loop_flag = 0, channels, sample_rate;
int total_subsongs, target_subsong = sf->stream_index;
/* checks */
if (!check_extensions(sf, "smh"))
return NULL;
total_subsongs = read_s32le(0x00,sf);
if (target_subsong == 0) target_subsong = 1;
if (target_subsong < 0 || target_subsong > total_subsongs || total_subsongs < 1) goto fail;
if (total_subsongs * 0x10 + 0x10 != get_streamfile_size(sf))
return NULL;
sb = open_streamfile_by_ext(sf, "smc");
if (!sb) goto fail;
header_offset = 0x10 + (target_subsong - 1) * 0x10;
start_offset = read_u32le(header_offset+0x00, sf);
stream_size = read_u32le(header_offset+0x04, sf);
sample_rate = read_u32le(header_offset+0x08, sf);
// 0x0c(2): always 0x10, frame size?
channels = read_u16le(header_offset+0x0e, sf);
loop_flag = 0;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channels, loop_flag);
if (!vgmstream) goto fail;
vgmstream->sample_rate = sample_rate;
vgmstream->num_samples = ps_bytes_to_samples(stream_size, channels);
vgmstream->num_streams = total_subsongs;
vgmstream->stream_size = stream_size;
vgmstream->meta_type = meta_SMC_SMH;
vgmstream->coding_type = coding_PSX;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = read_32bitLE(0x04, sf);
if (!vgmstream_open_stream(vgmstream, sb, start_offset))
goto fail;
close_streamfile(sb);
return vgmstream;
fail:
close_streamfile(sb);
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -0,0 +1,124 @@
#include "meta.h"
#include "../coding/coding.h"
/* srcd - Capcom RE Engine */
VGMSTREAM* init_vgmstream_srcd(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
STREAMFILE* subfile = NULL;
off_t start_offset = 0;
int loop_flag = 0;
int32_t loop_start_sample = 0, loop_end_sample = 0;
uint32_t container_type;
const char* extension = NULL;
VGMSTREAM* (*init_vgmstream_function)(STREAMFILE*) = NULL;
if (!is_id32be(0x00, sf, "srcd"))
return NULL;
if (!check_extensions(sf, "srcd,asrc,14,21,26,31"))
return NULL;
{
enum versions { VERSION_31, VERSION_21_26, VERSION_14, VERSION_UNKNOWN };
enum versions ver = VERSION_UNKNOWN;
//v31 - AJ_AAT
if (read_u32le(0x18, sf) > 0x02) {
ver = VERSION_31;
}
//v21 - CAS2
else if (read_u32le(0x41, sf) == 0x49) {
ver = VERSION_21_26;
}
//v26 - GTPD
else if (read_u32le(0x46, sf) == 0x4E) {
ver = VERSION_21_26;
}
//v14 - CAS
else if (read_u8(0x3A, sf) == 0x42) {
ver = VERSION_14;
}
switch (ver) {
case VERSION_31:
loop_flag = read_u8(0x34, sf);
loop_start_sample = read_u32le(0x35, sf);
loop_end_sample = read_u32le(0x39, sf);
break;
case VERSION_21_26:
loop_flag = read_u8(0x2C, sf);
loop_start_sample = read_u32le(0x2D, sf);
loop_end_sample = read_u32le(0x31, sf);
break;
case VERSION_14:
loop_flag = read_u8(0x28, sf);
loop_start_sample = read_u32le(0x29, sf);
loop_end_sample = read_u32le(0x2D, sf);
break;
default:
VGM_LOG("SRCD: Unknown version, disabling loop\n");
loop_flag = 0;
break;
}
}
container_type = read_u32be(0x0C, sf);
{
const off_t scan_start = 0x40;
const size_t scan_size = 0x100; //Should be small
off_t current_offset;
uint32_t magic_to_find = 0;
if (container_type == get_id32be("wav ")) {
magic_to_find = get_id32be("RIFF");
} else if (container_type == get_id32be("ogg ")) {
magic_to_find = get_id32be("OggS");
}
if (magic_to_find) {
for (current_offset = scan_start; current_offset < scan_start + scan_size; current_offset++) {
if (read_u32be(current_offset, sf) == magic_to_find) {
start_offset = current_offset;
break;
}
}
}
}
if (start_offset == 0)
goto fail;
/* Select the appropriate init function and extension based on container type */
if (container_type == get_id32be("wav ")) {
extension = "wav";
init_vgmstream_function = init_vgmstream_riff;
} else if (container_type == get_id32be("ogg ")) {
extension = "ogg";
init_vgmstream_function = init_vgmstream_ogg_vorbis;
} else {
VGM_LOG("SRCD: Codec not recognized");
goto fail;
}
subfile = setup_subfile_streamfile(sf, start_offset, get_streamfile_size(sf) - start_offset, extension);
if (!subfile) goto fail;
vgmstream = init_vgmstream_function(subfile);
if (!vgmstream) goto fail;
vgmstream->meta_type = meta_SRCD;
vgmstream_force_loop(vgmstream, loop_flag, loop_start_sample, loop_end_sample);
close_streamfile(subfile);
return vgmstream;
fail:
close_streamfile(subfile);
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -1,55 +1,55 @@
#include "meta.h"
#include "../coding/coding.h"
/* WV6 - Gorilla Systems PC games [Spy Kids: Mega Mission Zone (PC), Lilo & Stitch: Hawaiian Adventure (PC)] */
VGMSTREAM * init_vgmstream_wv6(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset;
int loop_flag, channel_count;
/* checks */
if (!check_extensions(streamFile, "wv6"))
goto fail;
if (read_32bitLE(0x00,streamFile) != get_streamfile_size(streamFile))
goto fail;
if (read_32bitBE(0x2c,streamFile) != 0x57563620 || /* "WV6 " */
read_32bitBE(0x30,streamFile) != 0x494D415F) /* "IMA_" ("WV6 IMA_ADPCM COMPRESSED 16 BIT AUDIO") */
goto fail;
/* 0x54/58/5c/60/6c: unknown (reject to catch possible stereo files, but don't seem to exist) */
if (read_32bitLE(0x54,streamFile) != 0x01 ||
read_32bitLE(0x58,streamFile) != 0x01 ||
read_32bitLE(0x5c,streamFile) != 0x10 ||
read_32bitLE(0x68,streamFile) != 0x01 ||
read_32bitLE(0x6c,streamFile) != 0x88)
goto fail;
/* 0x64: PCM size (samples*channels*2) */
channel_count = 1;
loop_flag = 0;
start_offset = 0x8c;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channel_count, loop_flag);
if (!vgmstream) goto fail;
vgmstream->sample_rate = read_32bitLE(0x60, streamFile);
vgmstream->num_samples = ima_bytes_to_samples(read_32bitLE(0x88,streamFile), channel_count);
vgmstream->meta_type = meta_WV6;
vgmstream->coding_type = coding_WV6_IMA;
vgmstream->layout_type = layout_none;
read_string(vgmstream->stream_name,0x1c+1, 0x04,streamFile);
if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}
#include "meta.h"
#include "../coding/coding.h"
/* WV6 - Gorilla Systems PC games [Spy Kids: Mega Mission Zone (PC), Lilo & Stitch: Hawaiian Adventure (PC)] */
VGMSTREAM* init_vgmstream_wv6(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
off_t start_offset;
int loop_flag, channels;
/* checks */
if (read_u32le(0x00,sf) != get_streamfile_size(sf))
return NULL;
// 04: filename
if (!is_id32be(0x2c,sf, "WV6 ") || !is_id32be(0x30,sf, "IMA_")) // "WV6 IMA_ADPCM COMPRESSED 16 BIT AUDIO"
return NULL;
if (!check_extensions(sf, "wv6"))
return NULL;
// 0x54/58/5c/60/6c: unknown (reject to catch possible stereo files, but don't seem to exist)
if (read_s32le(0x54,sf) != 0x01 ||
read_s32le(0x58,sf) != 0x01 ||
read_s32le(0x5c,sf) != 0x10 ||
read_s32le(0x68,sf) != 0x01 ||
read_s32le(0x6c,sf) != 0x88)
return NULL;
// 0x64: PCM size (samples * channels * 2)
channels = 1;
loop_flag = 0;
start_offset = 0x8c;
/* build the VGMSTREAM */
vgmstream = allocate_vgmstream(channels, loop_flag);
if (!vgmstream) goto fail;
vgmstream->sample_rate = read_s32le(0x60, sf);
vgmstream->num_samples = ima_bytes_to_samples(read_u32le(0x88,sf), channels);
vgmstream->meta_type = meta_WV6;
vgmstream->coding_type = coding_WV6_IMA;
vgmstream->layout_type = layout_none;
read_string(vgmstream->stream_name, 0x1c + 1, 0x04,sf);
if (!vgmstream_open_stream(vgmstream,sf,start_offset))
goto fail;
return vgmstream;
fail:
close_vgmstream(vgmstream);
return NULL;
}

View file

@ -12,7 +12,7 @@ enum {
VGMSTREAM_MAX_CHANNELS = 64, /* +40ch multilayers */
VGMSTREAM_MIN_SAMPLE_RATE = 300, /* 300 is Wwise min */
VGMSTREAM_MAX_SAMPLE_RATE = 192000, /* found in some FSB5 */
VGMSTREAM_MAX_SUBSONGS = 65535, /* +20000 isn't that uncommon */
VGMSTREAM_MAX_SUBSONGS = 90000, /* +20000 isn't that uncommon, known max is 89734 in EA NHL 14 sbs+sbr */
VGMSTREAM_MAX_NUM_SAMPLES = 1000000000, /* no ~5h vgm hopefully */
};

View file

@ -317,7 +317,6 @@ init_vgmstream_t init_vgmstream_functions[] = {
init_vgmstream_ubi_lyn_container,
init_vgmstream_msb_msh,
init_vgmstream_txtp,
init_vgmstream_smc_smh,
init_vgmstream_ppst,
init_vgmstream_sps_n1_segmented,
init_vgmstream_ubi_bao_pk,
@ -330,7 +329,6 @@ init_vgmstream_t init_vgmstream_functions[] = {
init_vgmstream_xmd,
init_vgmstream_cks,
init_vgmstream_ckb,
init_vgmstream_wv6,
init_vgmstream_str_wav,
init_vgmstream_wavebatch,
init_vgmstream_hd3_bd3,
@ -368,8 +366,6 @@ init_vgmstream_t init_vgmstream_functions[] = {
init_vgmstream_dsp_adpx,
init_vgmstream_ogg_opus,
init_vgmstream_nus3audio,
init_vgmstream_imc,
init_vgmstream_imc_container,
init_vgmstream_smp,
init_vgmstream_gin,
init_vgmstream_dsf,
@ -512,6 +508,8 @@ init_vgmstream_t init_vgmstream_functions[] = {
init_vgmstream_audiopkg,
init_vgmstream_swar,
init_vgmstream_ivb,
init_vgmstream_srcd,
init_vgmstream_mhwk,
/* lower priority metas (no clean header identity, somewhat ambiguous, or need extension/companion file to identify) */
init_vgmstream_agsc,
@ -539,6 +537,10 @@ init_vgmstream_t init_vgmstream_functions[] = {
init_vgmstream_vai,
init_vgmstream_ezw,
init_vgmstream_vgs_old,
init_vgmstream_imc,
init_vgmstream_imc_container,
init_vgmstream_wv6,
init_vgmstream_smh_smc,
/* need companion files */
init_vgmstream_pos,
init_vgmstream_sli_loops,

View file

@ -496,7 +496,7 @@ typedef enum {
meta_LSF_N1NJ4N, /* .lsf n1nj4n Fastlane Street Racing (iPhone) */
meta_XWAV,
meta_RAW_SNDS,
meta_HYPERSCAN_KVAG, /* Hyperscan KVAG/BVG */
meta_KVAG,
meta_PSND,
meta_ADP_WILDFIRE,
meta_QD_ADP,
@ -721,6 +721,8 @@ typedef enum {
meta_AUDIOPKG,
meta_SWAR,
meta_IVB,
meta_SRCD,
meta_MHWK
} meta_t;
#endif

View file

@ -295,7 +295,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 83DE0C00180A9BD400269051 /* Build configuration list for PBXProject "vio2sf" */;
@ -428,6 +428,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -480,6 +481,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -656,6 +656,7 @@
<string>mds</string>
<string>mdsp</string>
<string>med</string>
<string>mhwk</string>
<string>mjb</string>
<string>mi4</string>
<string>mib</string>
@ -829,7 +830,7 @@
<string>skx</string>
<string>slb</string>
<string>sli</string>
<string>smc</string>
<string>smh</string>
<string>smk</string>
<string>smp</string>
<string>smv</string>
@ -851,6 +852,7 @@
<string>spsd</string>
<string>spw</string>
<string>srsa</string>
<string>srcd</string>
<string>ss2</string>
<string>ssd</string>
<string>ssf</string>

View file

@ -156,7 +156,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "APL" */;
compatibilityVersion = "Xcode 12.0";
@ -242,6 +242,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Debug;
@ -287,6 +288,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -185,7 +185,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 83D3C5EE201C674D005564CB /* Build configuration list for PBXProject "AdPlug" */;
@ -315,6 +315,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -370,6 +371,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -189,7 +189,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = "";
};
buildConfigurationList = 8359FF1217FEF35C0060F3ED /* Build configuration list for PBXProject "ArchiveSource" */;
@ -330,6 +330,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -382,6 +383,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Release;
};

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -160,7 +160,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "CoreAudio" */;
compatibilityVersion = "Xcode 12.0";
@ -285,6 +285,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Debug;
@ -330,6 +331,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -190,7 +190,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "CueSheet" */;
compatibilityVersion = "Xcode 12.0";
@ -339,6 +339,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Debug;
@ -384,6 +385,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -245,7 +245,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "FFMPEG" */;
compatibilityVersion = "Xcode 12.0";
@ -376,6 +376,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
};
name = Debug;
};
@ -425,6 +426,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -184,7 +184,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "FileSource" */;
compatibilityVersion = "Xcode 12.0";
@ -332,6 +332,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Debug;
@ -377,6 +378,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -10,7 +10,7 @@
17C93F080B8FF67A008627D6 /* FlacDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 17C93F040B8FF67A008627D6 /* FlacDecoder.m */; };
8301C147287805F500651A6E /* NSDictionary+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8301C146287805F500651A6E /* NSDictionary+Merge.m */; };
834D18FE2D7F949900F13B89 /* CogAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 834D18FD2D7F949900F13B89 /* CogAudio.framework */; };
836EF0DA27BB970B00BF35B2 /* libFLAC.12.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 836EF0D927BB970B00BF35B2 /* libFLAC.12.dylib */; };
836EF0DA27BB970B00BF35B2 /* libFLAC.14.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 836EF0D927BB970B00BF35B2 /* libFLAC.14.dylib */; };
83AA660B27B7DAE40098D4B8 /* cuesheet.m in Sources */ = {isa = PBXBuildFile; fileRef = 83AA660A27B7DAE40098D4B8 /* cuesheet.m */; };
8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; };
/* End PBXBuildFile section */
@ -40,7 +40,7 @@
834A42B4287AF7AA00EB9D9B /* AudioChunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioChunk.h; path = ../../Audio/Chain/AudioChunk.h; sourceTree = "<group>"; };
834D18FD2D7F949900F13B89 /* CogAudio.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CogAudio.framework; sourceTree = BUILT_PRODUCTS_DIR; };
8356BD1927B3CCBB0074E50C /* HTTPSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPSource.h; path = ../HTTPSource/HTTPSource.h; sourceTree = "<group>"; };
836EF0D927BB970B00BF35B2 /* libFLAC.12.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libFLAC.12.dylib; path = ../../ThirdParty/flac/lib/libFLAC.12.dylib; sourceTree = "<group>"; };
836EF0D927BB970B00BF35B2 /* libFLAC.14.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libFLAC.14.dylib; path = ../../ThirdParty/flac/lib/libFLAC.14.dylib; sourceTree = "<group>"; };
83747C4A2862DCF40021245F /* Shared.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Shared.xcconfig; sourceTree = "<group>"; };
8384912D180816C900E7332D /* Logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logging.h; path = ../../Utils/Logging.h; sourceTree = "<group>"; };
83AA660A27B7DAE40098D4B8 /* cuesheet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = cuesheet.m; sourceTree = "<group>"; };
@ -56,7 +56,7 @@
buildActionMask = 2147483647;
files = (
834D18FE2D7F949900F13B89 /* CogAudio.framework in Frameworks */,
836EF0DA27BB970B00BF35B2 /* libFLAC.12.dylib in Frameworks */,
836EF0DA27BB970B00BF35B2 /* libFLAC.14.dylib in Frameworks */,
8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -115,7 +115,7 @@
1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
836EF0D927BB970B00BF35B2 /* libFLAC.12.dylib */,
836EF0D927BB970B00BF35B2 /* libFLAC.14.dylib */,
1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */,
);
name = "Linked Frameworks";
@ -193,7 +193,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "Flac" */;
compatibilityVersion = "Xcode 12.0";
@ -334,6 +334,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Debug;
@ -379,6 +380,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -337,6 +337,8 @@ void ErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorS
FLAC__StreamDecoderInitStatus ret;
if(isOggFlac) {
FLAC__stream_decoder_set_decode_chained_stream(decoder, true);
ret = FLAC__stream_decoder_init_ogg_stream(decoder,
ReadCallback,
([source seekable] ? SeekCallback : NULL),
@ -384,8 +386,13 @@ void ErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorS
AudioChunk *chunk = nil;
while (blockBufferFrames <= 0) {
if(FLAC__stream_decoder_get_state(decoder) == FLAC__STREAM_DECODER_END_OF_STREAM) {
FLAC__StreamDecoderState state = FLAC__stream_decoder_get_state(decoder);
if(state == FLAC__STREAM_DECODER_END_OF_STREAM) {
return nil;
} else if(state == FLAC__STREAM_DECODER_END_OF_LINK) {
if(!FLAC__stream_decoder_finish_link(decoder)) {
return nil;
}
}
if(!FLAC__stream_decoder_process_single(decoder)) {

View file

@ -232,7 +232,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "GME" */;
compatibilityVersion = "Xcode 12.0";
@ -405,6 +405,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Debug;
@ -451,6 +452,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View file

@ -183,7 +183,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
LastUpgradeCheck = 2600;
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "HTTPSource" */;
compatibilityVersion = "Xcode 12.0";
@ -314,6 +314,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Debug;
@ -359,6 +360,7 @@
OTHER_CFLAGS = "-Wframe-larger-than=4000";
OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000";
SDKROOT = macosx;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SYMROOT = ../../build;
};
name = Release;

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
LastUpgradeVersion = "2600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

Some files were not shown because too many files have changed in this diff Show more