From 59cef16a2c0c5c5994976d8a72145e5c75c3db48 Mon Sep 17 00:00:00 2001 From: bnnm Date: Sat, 9 Dec 2017 12:23:19 +0100 Subject: [PATCH] Add TXTH "half_size" interleave + SDF/BD3 exts --- fb2k/foo_filetypes.h | 2 ++ src/formats.c | 2 ++ src/meta/txth.c | 8 +++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fb2k/foo_filetypes.h b/fb2k/foo_filetypes.h index 0dd8751f..cc6879f3 100644 --- a/fb2k/foo_filetypes.h +++ b/fb2k/foo_filetypes.h @@ -59,6 +59,7 @@ VGMSTREAM_DECLARE_FILE_TYPE("BAKA", baka); VGMSTREAM_DECLARE_FILE_TYPE("BAR", bar); VGMSTREAM_DECLARE_FILE_TYPE("BCSTM", bcstm); VGMSTREAM_DECLARE_FILE_TYPE("BCWAV", bcwav); +VGMSTREAM_DECLARE_FILE_TYPE("BD3", bd3); VGMSTREAM_DECLARE_FILE_TYPE("BDSP", bdsp); VGMSTREAM_DECLARE_FILE_TYPE("BFSTM", bfstm); VGMSTREAM_DECLARE_FILE_TYPE("BFWAV", bfwav); @@ -264,6 +265,7 @@ VGMSTREAM_DECLARE_FILE_TYPE("SC", sc); VGMSTREAM_DECLARE_FILE_TYPE("SCD", scd); VGMSTREAM_DECLARE_FILE_TYPE("SCK", sck); VGMSTREAM_DECLARE_FILE_TYPE("SD9", sd9); +VGMSTREAM_DECLARE_FILE_TYPE("SDF", sdf); VGMSTREAM_DECLARE_FILE_TYPE("SDT", sdt); VGMSTREAM_DECLARE_FILE_TYPE("SEG", seg); VGMSTREAM_DECLARE_FILE_TYPE("SF0", sf0); diff --git a/src/formats.c b/src/formats.c index fd3f629c..7f68e6de 100644 --- a/src/formats.c +++ b/src/formats.c @@ -52,6 +52,7 @@ static const char* extension_list[] = { "bar", "bcstm", "bcwav", + "bd3", //txth/reserved [Elevator Action Deluxe (PS3)] "bdsp", "bfstm", "bfwav", @@ -259,6 +260,7 @@ static const char* extension_list[] = { "scd", "sck", "sd9", + "sdf", "sdt", "seg", "sf0", diff --git a/src/meta/txth.c b/src/meta/txth.c index 8d54089a..7d6dd602 100644 --- a/src/meta/txth.c +++ b/src/meta/txth.c @@ -472,7 +472,13 @@ static int parse_keyval(STREAMFILE * streamFile, STREAMFILE * streamText, txth_h if (!parse_num(streamFile,val, &txth->codec_mode)) goto fail; } else if (0==strcmp(key,"interleave")) { - if (!parse_num(streamFile,val, &txth->interleave)) goto fail; + if (0==strcmp(val,"half_size")) { + txth->interleave = txth->data_size / txth->channels; + VGM_LOG("int=%x, ds=%x\n", txth->interleave, txth->data_size); + } + else { + if (!parse_num(streamFile,val, &txth->interleave)) goto fail; + } } else if (0==strcmp(key,"id_value")) { if (!parse_num(streamFile,val, &txth->id_value)) goto fail;