From 30ab06b1096a5f325c79e48138ab63faa8f173f7 Mon Sep 17 00:00:00 2001 From: bxaimc Date: Tue, 3 May 2022 22:44:42 -0400 Subject: [PATCH] Add brwsd & brwav ext. Fix RWSD for Wii Sports --- src/formats.c | 2 ++ src/meta/rwsd.c | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/formats.c b/src/formats.c index d08c0749..e4aee605 100644 --- a/src/formats.c +++ b/src/formats.c @@ -118,6 +118,8 @@ static const char* extension_list[] = { "bo2", "brstm", "brstmspm", + "brwav", + "brwsd", "bsnd", "btsnd", "bvg", diff --git a/src/meta/rwsd.c b/src/meta/rwsd.c index 77e49d49..f4a0a248 100644 --- a/src/meta/rwsd.c +++ b/src/meta/rwsd.c @@ -11,13 +11,13 @@ VGMSTREAM* init_vgmstream_rwsd(STREAMFILE* sf) { size_t wave_length; int codec, channels, loop_flag; size_t stream_size; - off_t start_offset, wave_offset = 0; + off_t start_offset, wave_offset = 0, labl_offset; if (!is_id32be(0x00, sf, "RWSD")) goto fail; - if (!check_extensions(sf, "rwsd")) + if (!check_extensions(sf, "brwsd,rwsd")) goto fail; /* check header */ @@ -98,6 +98,11 @@ VGMSTREAM* init_vgmstream_rwsd(STREAMFILE* sf) { /* this is just data size and following data may or may not be from this RWSD */ start_offset = read_32bitBE(0x08, sf); + if (is_id32be(start_offset, sf, "LABL")) { + labl_offset = start_offset; + start_offset += read_32bitBE(start_offset + 0x04, sf); + read_string(vgmstream->stream_name, 0x28, labl_offset + 0x18, sf); + } stream_size = read_32bitBE(wave_offset + 0x50,sf);