From df94b272b3a47f4b9208c912de6b6c07a1cb2d72 Mon Sep 17 00:00:00 2001 From: M&M Date: Wed, 15 Apr 2020 13:20:37 -0700 Subject: [PATCH] Add looping support to .diva --- src/meta/diva.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/meta/diva.c b/src/meta/diva.c index 66aeaee4..c594f529 100644 --- a/src/meta/diva.c +++ b/src/meta/diva.c @@ -5,7 +5,9 @@ VGMSTREAM * init_vgmstream_diva(STREAMFILE *streamFile) { VGMSTREAM * vgmstream = NULL; off_t start_offset; - int channel_count, loop_flag = 0; + int channel_count; + int loop_end; + int loop_flag = (loop_end != 0); /* checks */ if (!check_extensions(streamFile, "diva")) @@ -16,16 +18,19 @@ VGMSTREAM * init_vgmstream_diva(STREAMFILE *streamFile) { start_offset = 0x40; channel_count = read_8bit(0x1C, streamFile); + loop_end = read_32bitLE(0x18, streamFile); /* build the VGMSTREAM */ vgmstream = allocate_vgmstream(channel_count, loop_flag); if (!vgmstream) goto fail; - vgmstream->sample_rate = read_32bitLE(0x0C, streamFile); - vgmstream->num_samples = read_32bitLE(0x10, streamFile); - vgmstream->meta_type = meta_DIVA; - vgmstream->layout_type = layout_none; - vgmstream->coding_type = coding_DVI_IMA; + vgmstream->sample_rate = read_32bitLE(0x0C, streamFile); + vgmstream->num_samples = read_32bitLE(0x10, streamFile); + vgmstream->loop_start_sample = read_32bitLE(0x14, streamFile); + vgmstream->loop_end_sample = loop_end; + vgmstream->meta_type = meta_DIVA; + vgmstream->layout_type = layout_none; + vgmstream->coding_type = coding_DVI_IMA; if (!vgmstream_open_stream(vgmstream, streamFile, start_offset)) goto fail;