fixes for last pr

This commit is contained in:
bnnm 2023-06-03 17:55:35 +02:00
parent eea1c20afd
commit 288d1e57d0
3 changed files with 15 additions and 8 deletions

View File

@ -706,6 +706,7 @@ static const char* common_extension_list[] = {
"flac", //common
"m4a", //common
"m4v", //common
"mov", //common
"mp+", //common [Moonshine Runners (PC)]
"mp2", //common
"mp3", //common

View File

@ -5,7 +5,7 @@
/* RSD - from Radical Entertainment games */
VGMSTREAM* init_vgmstream_rsd(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
off_t start_offset, name_offset;
uint32_t start_offset, name_offset, coef_offset;
size_t data_size;
int loop_flag, channels, sample_rate, interleave;
uint32_t codec;
@ -14,9 +14,9 @@ VGMSTREAM* init_vgmstream_rsd(STREAMFILE* sf) {
/* checks */
if ((read_u32be(0x00,sf) & 0xFFFFFF00) != get_id32be("RSD\00"))
goto fail;
return NULL;
if (!check_extensions(sf,"rsd,rsp"))
goto fail;
return NULL;
loop_flag = 0;
@ -32,14 +32,19 @@ VGMSTREAM* init_vgmstream_rsd(STREAMFILE* sf) {
interleave = read_u32le(0x14,sf); /* VAG only, 0x04 otherwise */
start_offset = read_u32le(0x18,sf);
name_offset = 0;
coef_offset = 0x1C;
if ((codec == get_id32be("GADP")))
start_offset = 0xA0;
break;
case '4': /* known codecs: VAG/PCM/RADP/PCMB [The Simpsons: Hit & Run, Tetris Worlds, Hulk] */
/* 0x14: padding */
/* 0x14: padding/coefs */
/* 0x18: padding */
interleave = 0;
start_offset = 0x800;
name_offset = 0;
coef_offset = 0x14;
/* PCMB/PCM/GADP normally start early but sometimes have padding [The Simpsons: Hit & Run (GC/Xbox)] */
if ((codec == get_id32be("PCM ") || codec == get_id32be("PCMB") || codec == get_id32be("GADP"))
@ -52,6 +57,7 @@ VGMSTREAM* init_vgmstream_rsd(STREAMFILE* sf) {
name_offset = 0x18; /* dev file path */
interleave = 0;
start_offset = 0x800;
coef_offset = 0x00;
break;
default:
@ -104,8 +110,8 @@ VGMSTREAM* init_vgmstream_rsd(STREAMFILE* sf) {
vgmstream->coding_type = coding_NGC_DSP;
vgmstream->layout_type = layout_interleave;
vgmstream->interleave_block_size = 0x08; /* assumed, known files are mono */
dsp_read_coefs_le(vgmstream,sf,0x1c,0x2e); /* LE! */
dsp_read_hist_le (vgmstream,sf,0x38,0x2e);
dsp_read_coefs_le(vgmstream,sf,coef_offset,0x2e); /* LE! */
dsp_read_hist_le (vgmstream,sf,coef_offset + 0x24, 0x2e);
vgmstream->num_samples = dsp_bytes_to_samples(data_size, channels);
break;

View File

@ -639,7 +639,7 @@ static int parse_header(STREAMFILE* sf_h, STREAMFILE* sf_b, strwav_header* strwa
}
/* SpongeBob SquarePants: Creature from the Krusty Krab (PS2)[2006] */
/* Big Bumpin (Xbox)[2006] */
/* Big Bumpin' (Xbox)[2006] */
/* Sneak King (Xbox)[2006] */
if ( read_u32be(0x04,sf_h) == 0x00000800 &&
read_u32le(0x08,sf_h) == 0x00000000 &&
@ -674,7 +674,7 @@ static int parse_header(STREAMFILE* sf_h, STREAMFILE* sf_b, strwav_header* strwa
}
else {
strwav->codec = XBOX;
strwav->interleave = strwav->tracks > 1 ? 0x9000 : 0xD800; /* assumed for multitrack */
strwav->interleave = strwav->tracks > 1 ? 0x9000 : 0xD800;
}
;VGM_LOG("STR+WAV: header SBCKK/BB/SK (PS2/Xbox)\n");
return 1;