From d4f6228809fd5fd24337d18ce79298f906c62efc Mon Sep 17 00:00:00 2001 From: bnnm Date: Sun, 15 Nov 2020 00:20:44 +0100 Subject: [PATCH] Add .nsopus [Sakuna: Of Rice and Ruin (Switch)] --- src/formats.c | 1 + src/meta/meta.h | 1 + src/meta/opus.c | 19 +++++++++++++++++++ src/vgmstream.c | 1 + 4 files changed, 22 insertions(+) diff --git a/src/formats.c b/src/formats.c index fba8e0aa..66e6c408 100644 --- a/src/formats.c +++ b/src/formats.c @@ -345,6 +345,7 @@ static const char* extension_list[] = { "nop", "nps", "npsf", //fake extension/header id for .nps (in bigfiles) + "nsopus", "nub", "nub2", "nus3audio", diff --git a/src/meta/meta.h b/src/meta/meta.h index 501d13fb..c19b9c13 100644 --- a/src/meta/meta.h +++ b/src/meta/meta.h @@ -645,6 +645,7 @@ VGMSTREAM* init_vgmstream_opus_nxa(STREAMFILE* sf); VGMSTREAM* init_vgmstream_opus_opusx(STREAMFILE* sf); VGMSTREAM* init_vgmstream_opus_prototype(STREAMFILE* sf); VGMSTREAM* init_vgmstream_opus_opusnx(STREAMFILE* sf); +VGMSTREAM* init_vgmstream_opus_nsopus(STREAMFILE* sf); VGMSTREAM* init_vgmstream_opus_sqex(STREAMFILE* sf); VGMSTREAM * init_vgmstream_raw_al(STREAMFILE * streamFile); diff --git a/src/meta/opus.c b/src/meta/opus.c index e3b9769a..b2fff433 100644 --- a/src/meta/opus.c +++ b/src/meta/opus.c @@ -427,6 +427,25 @@ fail: return NULL; } +/* Edelweiss variation [Sakuna: Of Rice and Ruin (Switch)] */ +VGMSTREAM* init_vgmstream_opus_nsopus(STREAMFILE* sf) { + off_t offset = 0; + int num_samples = 0, loop_start = 0, loop_end = 0; + + /* checks */ + if (!check_extensions(sf, "nsopus")) + goto fail; + if (read_u32be(0x00, sf) != 0x45574E4F) /* "EWNO" */ + goto fail; + + offset = 0x08; + num_samples = 0; //read_32bitLE(0x08, sf); /* samples without encoder delay? (lower than count) */ + + return init_vgmstream_opus(sf, meta_OPUS, offset, num_samples, loop_start, loop_end); +fail: + return NULL; +} + /* Square Enix variation [Dragon Quest I-III (Switch)] */ VGMSTREAM* init_vgmstream_opus_sqex(STREAMFILE* sf) { off_t offset = 0; diff --git a/src/vgmstream.c b/src/vgmstream.c index e0cba581..f82f4ba5 100644 --- a/src/vgmstream.c +++ b/src/vgmstream.c @@ -511,6 +511,7 @@ VGMSTREAM* (*init_vgmstream_functions[])(STREAMFILE* sf) = { init_vgmstream_dsp_wiivoice, init_vgmstream_xws, init_vgmstream_cpk, + init_vgmstream_opus_nsopus, /* 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 */