Merge pull request #159 from bxaimc/master

Add type 3 GCM/IDSP variant for Lego LOTR (Wii) & Reduce strictness of EALayer 3 header checks
This commit is contained in:
Christopher Snowhill 2017-12-14 18:11:27 -08:00 committed by GitHub
commit 5cc215b408
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 2 deletions

View File

@ -48,8 +48,9 @@ VGMSTREAM * init_vgmstream_ea_sps(STREAMFILE * streamFile) {
if (!check_extensions(streamFile,"sps"))
goto fail;
/* seems to be fixed */
if ((read_32bitBE(0x00,streamFile) & 0xFFFFFF00) != 0x48000000)
/* Very hacky but the original check for 0x48000000 rejected some playable files */
if (((read_16bitBE(0x00,streamFile) & 0xFFFFFF00) != 0x4800) &&
((read_8bit(0x00, streamFile) & 0xFFFFFF00) != 0x00))
goto fail;
start_offset = read_8bit(0x03, streamFile);

View File

@ -1214,6 +1214,7 @@ fail:
Lego Indiana Jones - The Original Adventures (Wii)
Lego Indiana Jones 2 - The Adventure Continues (Wii)
Lego Star Wars - The Complete Saga (Wii)
Lego The Lord of the Rings (Wii)
The Chronicles of Narnia - Prince Caspian (Wii) */
VGMSTREAM * init_vgmstream_wii_idsp(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
@ -1249,6 +1250,14 @@ VGMSTREAM * init_vgmstream_wii_idsp(STREAMFILE *streamFile) {
start_offset = 0xe0;
}
else if (read_32bitBE(0x4, streamFile) == 3 && //Lego The Lord of the Rings (Wii)
read_32bitBE(0x8, streamFile) == 0x12c)
{
if (read_dsp_header(&ch0_header, 0x20, streamFile)) goto fail;
if (read_dsp_header(&ch1_header, 0x80, streamFile)) goto fail;
start_offset = 0xe0;
}
else goto fail;
interleave = read_32bitBE(0xc, streamFile);