From 64fd0f8b669ba18ee34c0b40672383b1b2046c11 Mon Sep 17 00:00:00 2001
From: NicknineTheEagle <nik18.1995@gmail.com>
Date: Tue, 9 Aug 2022 14:02:07 +0300
Subject: [PATCH] VAB: Added a hack for empty sounds [Critical Depth (PS1)]

---
 src/meta/vab.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/meta/vab.c b/src/meta/vab.c
index 4f800414..6b5cc3f0 100644
--- a/src/meta/vab.c
+++ b/src/meta/vab.c
@@ -80,6 +80,19 @@ VGMSTREAM* init_vgmstream_vab(STREAMFILE* sf) {
 
     data_size = read_u16le(waves_off + i * 0x02, sf) << 3;
 
+    if (data_size == 0 && center == 0 && shift == 0) {
+        // hack for empty sounds in Critical Depth
+        vgmstream = init_vgmstream_silence(1, 44100, 44100);
+        if (!vgmstream) goto fail;
+
+        vgmstream->meta_type = meta_VAB;
+        vgmstream->num_streams = total_subsongs;
+        snprintf(vgmstream->stream_name, STREAM_NAME_SIZE, "%02d/%02d (empty)", program_num, tone_num);
+
+        if (is_vh) close_streamfile(sf_data);
+        return vgmstream;
+    }
+
     channels = 1;
     loop_flag = ps_find_loop_offsets(sf_data, data_offset, data_size, channels, 0, &loop_start, &loop_end);