From ff35f6c3cff35b0232a4d57c127849b090801da7 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Sun, 7 Jul 2019 00:41:14 -0700 Subject: [PATCH] Updated VGMStream to r1050-2349-g5fe83c0c --- .../vgmstream/vgmstream/src/meta/meta.h | 2 ++ .../vgmstream/vgmstream/src/meta/opus.c | 27 +++++++++++++++++++ .../vgmstream/vgmstream/src/vgmstream.c | 1 + 3 files changed, 30 insertions(+) diff --git a/Frameworks/vgmstream/vgmstream/src/meta/meta.h b/Frameworks/vgmstream/vgmstream/src/meta/meta.h index 1eb4c1e89..db8804058 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/meta.h +++ b/Frameworks/vgmstream/vgmstream/src/meta/meta.h @@ -856,4 +856,6 @@ VGMSTREAM * init_vgmstream_fsb5_fev_bank(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_bwav(STREAMFILE * streamFile); +VGMSTREAM * init_vgmstream_opus_prototype(STREAMFILE * streamFile); + #endif /*_META_H*/ diff --git a/Frameworks/vgmstream/vgmstream/src/meta/opus.c b/Frameworks/vgmstream/vgmstream/src/meta/opus.c index 1866532ce..24c1d8939 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/opus.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/opus.c @@ -341,3 +341,30 @@ VGMSTREAM * init_vgmstream_opus_opusx(STREAMFILE *streamFile) { fail: return NULL; } + +/* Prototype variation [Clannad (Switch)] */ +VGMSTREAM * init_vgmstream_opus_prototype(STREAMFILE *streamFile) { + off_t offset = 0; + int num_samples = 0, loop_start = 0, loop_end = 0, loop_flag; + + /* checks */ + if (!check_extensions(streamFile, "opus,lopus")) + goto fail; + if (read_32bitBE(0x00, streamFile) != 0x4F505553 || /* "OPUS" */ + read_32bitBE(0x18, streamFile) != 0x01000080) + goto fail; + + offset = 0x18; + num_samples = read_32bitLE(0x08, streamFile); + + /* Check if there's a loop end value to determine loop_flag*/ + loop_flag = read_32bitLE(0x10, streamFile); + if (loop_flag) { + loop_start = read_32bitLE(0x0C, streamFile); + loop_end = read_32bitLE(0x10, streamFile); + } + + return init_vgmstream_opus(streamFile, meta_OPUS, offset, num_samples, loop_start, loop_end); +fail: + return NULL; +} diff --git a/Frameworks/vgmstream/vgmstream/src/vgmstream.c b/Frameworks/vgmstream/vgmstream/src/vgmstream.c index c39385ef3..97fac729e 100644 --- a/Frameworks/vgmstream/vgmstream/src/vgmstream.c +++ b/Frameworks/vgmstream/vgmstream/src/vgmstream.c @@ -481,6 +481,7 @@ VGMSTREAM * (*init_vgmstream_functions[])(STREAMFILE *streamFile) = { init_vgmstream_9tav, init_vgmstream_fsb5_fev_bank, init_vgmstream_bwav, + init_vgmstream_opus_prototype, /* lowest priority metas (should go after all metas, and TXTH should go before raw formats) */ init_vgmstream_txth, /* proper parsers should supersede TXTH, once added */