From 8bbf38b20fdfb9633cdae7d80f9f92f1dc9c0576 Mon Sep 17 00:00:00 2001 From: bnnm Date: Tue, 24 Sep 2019 00:53:52 +0200 Subject: [PATCH] Add Edelweiss OPUSNX .opus/lopus [Astebreed (Switch)] --- src/meta/meta.h | 4 ++-- src/meta/opus.c | 21 +++++++++++++++++++++ src/vgmstream.c | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/meta/meta.h b/src/meta/meta.h index ea962817..a8fc3886 100644 --- a/src/meta/meta.h +++ b/src/meta/meta.h @@ -643,6 +643,8 @@ VGMSTREAM * init_vgmstream_opus_nus3(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_opus_sps_n1(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_opus_nxa(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_opus_opusx(STREAMFILE * streamFile); +VGMSTREAM * init_vgmstream_opus_prototype(STREAMFILE * streamFile); +VGMSTREAM * init_vgmstream_opus_opusnx(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_pc_al2(STREAMFILE * streamFile); @@ -832,8 +834,6 @@ VGMSTREAM * init_vgmstream_fsb5_fev_bank(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_bwav(STREAMFILE * streamFile); -VGMSTREAM * init_vgmstream_opus_prototype(STREAMFILE * streamFile); - VGMSTREAM * init_vgmstream_awb(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_awb_memory(STREAMFILE * streamFile, STREAMFILE *acbFile); diff --git a/src/meta/opus.c b/src/meta/opus.c index 7127f7ac..b9e593ae 100644 --- a/src/meta/opus.c +++ b/src/meta/opus.c @@ -390,3 +390,24 @@ VGMSTREAM * init_vgmstream_opus_prototype(STREAMFILE *streamFile) { fail: return NULL; } + +/* Edelweiss variation [Astebreed (Switch)] */ +VGMSTREAM * init_vgmstream_opus_opusnx(STREAMFILE *streamFile) { + off_t offset = 0; + int num_samples = 0, loop_start = 0, loop_end = 0; + + /* checks */ + if (!check_extensions(streamFile, "opus,lopus")) + goto fail; + if (read_64bitBE(0x00, streamFile) != 0x4F5055534E580000) /* "OPUSNX\0\0" */ + goto fail; + + offset = 0x10; + num_samples = 0; //read_32bitLE(0x08, streamFile); /* samples with encoder delay */ + if (read_32bitLE(0x0c, streamFile) != 0) + goto fail; + + return init_vgmstream_opus(streamFile, meta_OPUS, offset, num_samples, loop_start, loop_end); +fail: + return NULL; +} diff --git a/src/vgmstream.c b/src/vgmstream.c index 2327bd74..e1178cf3 100644 --- a/src/vgmstream.c +++ b/src/vgmstream.c @@ -479,6 +479,7 @@ VGMSTREAM * (*init_vgmstream_functions[])(STREAMFILE *streamFile) = { init_vgmstream_xmv_valve, init_vgmstream_ubi_hx, init_vgmstream_bmp_konami, + init_vgmstream_opus_opusnx, /* 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 */