From 7354d12c8588329f8ce753cad208cde13229680d Mon Sep 17 00:00:00 2001 From: EdnessP <55930127+EdnessP@users.noreply.github.com> Date: Mon, 20 May 2024 22:36:19 +0300 Subject: [PATCH] Cleanup --- src/meta/ea_eaac_mpf_mus.c | 16 ++++++++-------- src/meta/ea_schl.c | 24 ++++++++++++------------ src/meta/meta.h | 8 ++++---- src/meta/mib_mih.c | 8 ++++---- src/meta/vag.c | 20 +++++++++++++------- src/vgmstream.c | 8 ++++---- 6 files changed, 45 insertions(+), 39 deletions(-) diff --git a/src/meta/ea_eaac_mpf_mus.c b/src/meta/ea_eaac_mpf_mus.c index 88795144..e5d47c93 100644 --- a/src/meta/ea_eaac_mpf_mus.c +++ b/src/meta/ea_eaac_mpf_mus.c @@ -4,18 +4,18 @@ #include "../util/companion_files.h" -static VGMSTREAM* init_vgmstream_ea_mpf_mus_eaac(STREAMFILE* sf, const char* mus_name); +static VGMSTREAM* init_vgmstream_ea_mpf_mus_eaac_main(STREAMFILE* sf, const char* mus_name); static STREAMFILE *open_mapfile_pair(STREAMFILE* sf, int track /*, int num_tracks*/); /* .MPF - Standard EA MPF+MUS */ -VGMSTREAM* init_vgmstream_ea_mpf_eaac(STREAMFILE* sf) { +VGMSTREAM* init_vgmstream_ea_mpf_mus_eaac(STREAMFILE* sf) { if (!check_extensions(sf, "mpf")) return NULL; - return init_vgmstream_ea_mpf_mus_eaac(sf, NULL); + return init_vgmstream_ea_mpf_mus_eaac_main(sf, NULL); } /* .MSB/.MSX - EA Redwood Shores (MSB/MSX)+MUS [The Godfather (PS3/360), The Simpsons Game (PS3/360)] */ -VGMSTREAM* init_vgmstream_ea_msb_eaac(STREAMFILE* sf) { +VGMSTREAM* init_vgmstream_ea_msb_mus_eaac(STREAMFILE* sf) { /* container with MPF, extra info, and a pre-defined MUS filename */ VGMSTREAM* vgmstream = NULL; STREAMFILE* sf_mpf = NULL; @@ -31,7 +31,7 @@ VGMSTREAM* init_vgmstream_ea_msb_eaac(STREAMFILE* sf) { mus_name_offset = 0x30; /* 0x08: buffer size of the pre-defined .mus filename? (always 0x20) - * 0x20: mpf version number? (always 0x05) + * 0x20: mpf version number? (always 0x05) * 0x24: offset to a chunk of plaintext data w/ event and node info & names * 0x2C: some hash? * 0x30: intended .mus filename */ @@ -45,7 +45,7 @@ VGMSTREAM* init_vgmstream_ea_msb_eaac(STREAMFILE* sf) { sf_mpf = open_clamp_streamfile(sf_mpf, header_size, info_offset); if (!sf_mpf) goto fail; - vgmstream = init_vgmstream_ea_mpf_mus_eaac(sf_mpf, mus_name); + vgmstream = init_vgmstream_ea_mpf_mus_eaac_main(sf_mpf, mus_name); if (!vgmstream) goto fail; close_streamfile(sf_mpf); @@ -58,7 +58,7 @@ fail: } /* EA MPF/MUS combo - used in older 7th gen games for storing interactive music */ -static VGMSTREAM* init_vgmstream_ea_mpf_mus_eaac(STREAMFILE* sf, const char* mus_name) { +static VGMSTREAM* init_vgmstream_ea_mpf_mus_eaac_main(STREAMFILE* sf, const char* mus_name) { VGMSTREAM* vgmstream = NULL; STREAMFILE *sf_mus = NULL; uint32_t num_tracks, track_start, track_checksum = 0, mus_sounds, mus_stream = 0, bnk_index = 0, bnk_sound_index = 0, @@ -182,7 +182,7 @@ static VGMSTREAM* init_vgmstream_ea_mpf_mus_eaac(STREAMFILE* sf, const char* mus if (index == 0xffff) /* EOF check */ goto fail; - + entry_offset += 0x0c; if (read_u16(entry_offset + 0x00, sf_mus) != index || read_u16(entry_offset + 0x02, sf_mus) != sub_index + 1) diff --git a/src/meta/ea_schl.c b/src/meta/ea_schl.c index b7434eed..032e8e59 100644 --- a/src/meta/ea_schl.c +++ b/src/meta/ea_schl.c @@ -134,7 +134,7 @@ typedef struct { size_t stream_size; } ea_header; -static VGMSTREAM* init_vgmstream_ea_mpf_mus(STREAMFILE* sf, const char* mus_name); +static VGMSTREAM* init_vgmstream_ea_mpf_mus_main(STREAMFILE* sf, const char* mus_name); static VGMSTREAM* parse_schl_block(STREAMFILE* sf, off_t offset); static VGMSTREAM* parse_bnk_header(STREAMFILE* sf, off_t offset, int target_stream, int is_embedded); static int parse_variable_header(STREAMFILE* sf, ea_header* ea, off_t begin_offset, int max_length, int bnk_version); @@ -316,7 +316,7 @@ VGMSTREAM* init_vgmstream_ea_bnk(STREAMFILE* sf) { if (target_stream == 0) target_stream = 1; return parse_bnk_header(sf, 0x00, target_stream - 1, 0); - + fail: return NULL; } @@ -703,11 +703,11 @@ static STREAMFILE* open_mapfile_pair(STREAMFILE* sf, int track /*, int num_track /* EA loads pairs manually, so complex cases needs .txtm to map * NSF2: * - ZTRxxROK.MAP > ZTRxx.TRJ - * - ZTRxxTEC.MAP > ZTRxx.TRM - * - ZZSHOW.MAP and ZZSHOW2.MAP > ZZSHOW.MUS + * - ZTRxxTEC.MAP > ZTRxx.TRM + * - ZZSHOW.MAP and ZZSHOW2.MAP > ZZSHOW.MUS * NSF3: - * - ZTRxxROK.MAP > ZZZTRxxA.TRJ - * - ZTRxxTEC.MAP > ZZZTRxxB.TRM + * - ZTRxxROK.MAP > ZZZTRxxA.TRJ + * - ZTRxxTEC.MAP > ZZZTRxxB.TRM * - ZTR00R0A.MAP and ZTR00R0B.MAP > ZZZTR00A.TRJ * SSX 3: * - *.mpf > *.mus,xxloops0.mus @@ -861,14 +861,14 @@ fail: } /* .MPF - Standard EA MPF+MUS */ -VGMSTREAM* init_vgmstream_ea_mpf(STREAMFILE* sf) { +VGMSTREAM* init_vgmstream_ea_mpf_mus(STREAMFILE* sf) { if (!check_extensions(sf, "mpf")) return NULL; - return init_vgmstream_ea_mpf_mus(sf, NULL); + return init_vgmstream_ea_mpf_mus_main(sf, NULL); } /* .MSB/.MSX - EA Redwood Shores (MSB/MSX)+MUS [007: From Russia with Love, The Godfather (PC/PS2/Wii)] */ -VGMSTREAM* init_vgmstream_ea_msb(STREAMFILE* sf) { +VGMSTREAM* init_vgmstream_ea_msb_mus(STREAMFILE* sf) { /* container with MPF, extra info, and a pre-defined MUS filename */ VGMSTREAM* vgmstream = NULL; STREAMFILE* sf_mpf = NULL; @@ -884,7 +884,7 @@ VGMSTREAM* init_vgmstream_ea_msb(STREAMFILE* sf) { mus_name_offset = 0x30; /* 0x08: buffer size of the pre-defined .mus filename? (always 0x20) - * 0x20: mpf version number? (always 0x05) + * 0x20: mpf version number? (always 0x05) * 0x24: offset to a chunk of plaintext data w/ event and node info & names * 0x2C: some hash? * 0x30: intended .mus filename */ @@ -898,7 +898,7 @@ VGMSTREAM* init_vgmstream_ea_msb(STREAMFILE* sf) { sf_mpf = open_clamp_streamfile(sf_mpf, header_size, info_offset); if (!sf_mpf) goto fail; - vgmstream = init_vgmstream_ea_mpf_mus(sf_mpf, mus_name); + vgmstream = init_vgmstream_ea_mpf_mus_main(sf_mpf, mus_name); if (!vgmstream) goto fail; close_streamfile(sf_mpf); @@ -911,7 +911,7 @@ fail: } /* EA MPF/MUS combo - used in 6th gen games for interactive music (for EA's PathFinder tool) */ -static VGMSTREAM* init_vgmstream_ea_mpf_mus(STREAMFILE* sf, const char* mus_name) { +static VGMSTREAM* init_vgmstream_ea_mpf_mus_main(STREAMFILE* sf, const char* mus_name) { VGMSTREAM* vgmstream = NULL; STREAMFILE* sf_mus = NULL; segmented_layout_data *data_s = NULL; diff --git a/src/meta/meta.h b/src/meta/meta.h index e2093fc8..ccf194c7 100644 --- a/src/meta/meta.h +++ b/src/meta/meta.h @@ -603,8 +603,8 @@ VGMSTREAM * init_vgmstream_ea_abk(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_ea_hdr_dat(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_ea_hdr_dat_v2(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_ea_map_mus(STREAMFILE * streamFile); -VGMSTREAM * init_vgmstream_ea_mpf(STREAMFILE * streamFile); -VGMSTREAM * init_vgmstream_ea_msb(STREAMFILE * streamFile); +VGMSTREAM * init_vgmstream_ea_mpf_mus(STREAMFILE * streamFile); +VGMSTREAM * init_vgmstream_ea_msb_mus(STREAMFILE * streamFile); VGMSTREAM* load_vgmstream_ea_bnk(STREAMFILE* sf, off_t offset, int target_stream, int is_embedded); VGMSTREAM * init_vgmstream_ea_schl_fixed(STREAMFILE * streamFile); @@ -649,8 +649,8 @@ VGMSTREAM * init_vgmstream_ea_snr_sns(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_ea_sps(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_ea_abk_eaac(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_ea_hdr_sth_dat(STREAMFILE * streamFile); -VGMSTREAM * init_vgmstream_ea_mpf_eaac(STREAMFILE * streamFile); -VGMSTREAM * init_vgmstream_ea_msb_eaac(STREAMFILE * streamFile); +VGMSTREAM * init_vgmstream_ea_mpf_mus_eaac(STREAMFILE * streamFile); +VGMSTREAM * init_vgmstream_ea_msb_mus_eaac(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_ea_tmx(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_ea_sbr(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_ea_sbr_harmony(STREAMFILE * streamFile); diff --git a/src/meta/mib_mih.c b/src/meta/mib_mih.c index 2c37bd69..acd828fa 100644 --- a/src/meta/mib_mih.c +++ b/src/meta/mib_mih.c @@ -1,7 +1,7 @@ #include "meta.h" #include "../coding/coding.h" -static VGMSTREAM* parse_multistream_header(STREAMFILE* sf_head, STREAMFILE* sf_body, off_t header_offset, off_t start_offset); +static VGMSTREAM* init_vgmstream_multistream(STREAMFILE* sf_head, STREAMFILE* sf_body, off_t header_offset, off_t start_offset); /* MIH+MIB - SCEE MultiStream interleaved bank (header+data) [namCollection: Ace Combat 2 (PS2), Rampage: Total Destruction (PS2)] */ VGMSTREAM* init_vgmstream_mib_mih(STREAMFILE* sf_body) { @@ -30,7 +30,7 @@ VGMSTREAM* init_vgmstream_mib_mih(STREAMFILE* sf_body) { } } - vgmstream = parse_multistream_header(sf_head, sf_body, header_offset, start_offset); + vgmstream = init_vgmstream_multistream(sf_head, sf_body, header_offset, start_offset); if (!vgmstream) goto fail; vgmstream->meta_type = meta_MIB_MIH; @@ -61,7 +61,7 @@ VGMSTREAM* init_vgmstream_ps2_mihb(STREAMFILE* sf) { header_offset = 0x00; start_offset = 0x40; - vgmstream = parse_multistream_header(sf, sf, header_offset, start_offset); + vgmstream = init_vgmstream_multistream(sf, sf, header_offset, start_offset); if (!vgmstream) goto fail; vgmstream->meta_type = meta_PS2_MIHB; @@ -73,7 +73,7 @@ fail: return NULL; } -static VGMSTREAM* parse_multistream_header(STREAMFILE* sf_head, STREAMFILE* sf_body, off_t header_offset, off_t start_offset) { +static VGMSTREAM* init_vgmstream_multistream(STREAMFILE* sf_head, STREAMFILE* sf_body, off_t header_offset, off_t start_offset) { VGMSTREAM* vgmstream = NULL; size_t data_size, frame_size, frame_last, frame_count; int channels, loop_flag, sample_rate; diff --git a/src/meta/vag.c b/src/meta/vag.c index 715e8374..ae1af756 100644 --- a/src/meta/vag.c +++ b/src/meta/vag.c @@ -182,8 +182,10 @@ VGMSTREAM* init_vgmstream_vag(STREAMFILE* sf) { /* EoR/Maxis title specific * always blank in Killzone */ if (version == 0x02000000) { - //uint8_t c = read_u8(0x30, sf); /* maybe better to do (c >= 0x30 && c <= 0x7A)? */ - if (read_u8(0x30, sf) >= 0x20 && read_u8(0x30, sf) <= 0x7E) stream_name_size = 0x20; + //uint8_t c = read_u8(0x30, sf); + /* maybe better to do (c >= 0x30 && c <= 0x7A)? */ + if (read_u8(0x30, sf) >= 0x20 && read_u8(0x30, sf) <= 0x7E) + stream_name_size = 0x20; loop_flag = ps_find_loop_offsets(sf, start_offset, channel_size, channels, interleave, &loop_start_sample, &loop_end_sample); } } @@ -414,7 +416,7 @@ fail: return NULL; } -/* VAGp (footer) - Sims 2 console spinoffs [The Sims 2: Pets (PS2), The Sims 2: Castaway (PS2)] */ +/* VAGp footer - sound data first, header at the end [The Sims 2: Pets (PS2), The Sims 2: Castaway (PS2)] */ VGMSTREAM* init_vgmstream_vag_footer(STREAMFILE* sf) { VGMSTREAM* vgmstream = NULL; size_t file_size, stream_size; @@ -424,11 +426,9 @@ VGMSTREAM* init_vgmstream_vag_footer(STREAMFILE* sf) { uint32_t version; - file_size = get_streamfile_size(sf); - header_offset = file_size - 0x40; - /* checks */ - if (!is_id32be(header_offset, sf, "VAGp")) + /* check if this begins with valid PS-ADPCM */ + if (!ps_check_format(sf, 0x00, 0x40)) return NULL; /* (extensionless): Sims 2 console spinoffs @@ -436,6 +436,12 @@ VGMSTREAM* init_vgmstream_vag_footer(STREAMFILE* sf) { if (!check_extensions(sf, ",vag")) return NULL; + file_size = get_streamfile_size(sf); + header_offset = file_size - 0x40; + + if (!is_id32be(header_offset, sf, "VAGp")) + return NULL; + /* all the data is in little endian */ version = read_u32le(header_offset + 0x04, sf); diff --git a/src/vgmstream.c b/src/vgmstream.c index 6df58bcd..2affe010 100644 --- a/src/vgmstream.c +++ b/src/vgmstream.c @@ -293,8 +293,8 @@ init_vgmstream_t init_vgmstream_functions[] = { init_vgmstream_ea_hdr_dat, init_vgmstream_ea_hdr_dat_v2, init_vgmstream_ea_map_mus, - init_vgmstream_ea_mpf, - init_vgmstream_ea_msb, + init_vgmstream_ea_mpf_mus, + init_vgmstream_ea_msb_mus, init_vgmstream_ea_schl_fixed, init_vgmstream_sk_aud, init_vgmstream_stma, @@ -321,8 +321,8 @@ init_vgmstream_t init_vgmstream_functions[] = { init_vgmstream_ea_sps, init_vgmstream_ea_abk_eaac, init_vgmstream_ea_hdr_sth_dat, - init_vgmstream_ea_mpf_eaac, - init_vgmstream_ea_msb_eaac, + init_vgmstream_ea_mpf_mus_eaac, + init_vgmstream_ea_msb_mus_eaac, init_vgmstream_ea_tmx, init_vgmstream_ea_sbr, init_vgmstream_ea_sbr_harmony,