Jackie Chan Adventures (PS2) *.AIF

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
Mygoshi
Posts: 654
Joined: Mon Oct 27, 2014 1:49 pm

Jackie Chan Adventures (PS2) *.AIF

Post by Mygoshi »

I need some help please to extract the data from Jackie Chan Adventures (PS2).

There is an archive with name Data1.AIF and I see headers at the beginning of it.

Samples: [expired]

Thanks!
Last edited by Mygoshi on Mon Nov 02, 2020 5:43 pm, edited 2 times in total.
Mygoshi
Posts: 654
Joined: Mon Oct 27, 2014 1:49 pm

Re: Jackie Chan Adventures (PS2) *.AIF

Post by Mygoshi »

Update:

I have new information which aren't necessary for the extraction but the output music files which I'm interested:

Codec: Sony ADPCM
Frequency: 44100Hz
Channels: Stereo

I didn't find any filenames inside the Data1.AIF, probably they're somewhere else...
Last edited by Mygoshi on Mon Nov 02, 2020 5:45 pm, edited 2 times in total.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Jackie Chan Adventures (PS2) *.AIF

Post by aluigi »

StreamThread
Posts: 54
Joined: Fri May 27, 2016 2:28 pm

Re: Jackie Chan Adventures (PS2) *.AIF

Post by StreamThread »

Interesting, is there a way to dumping filenames from executing process of game on this engine, for using when upacking?
e.g. Miami Vice game from 2004 year (PC\PS 2), having same AIF files, but with little other structure. Concrete this script will not work, but already exist other BMS script for other Atomic Planet game (I forgot title, kind of something related with "sea creatures"), which support Miami Vice game. Unpacking also without filenames. In HEX Editor also can not see filenames in AIF archive or EXE file.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Jackie Chan Adventures (PS2) *.AIF

Post by aluigi »

Often we have nameless files identified only by the hash or crc of their original name and the alternative is dumping all the filenames at runtime through the hooking of one or more functions, identifying the hashing algorithm and then using this dumped list with quickbms.
But you need some debugging knowledge to do it.
StreamThread
Posts: 54
Joined: Fri May 27, 2016 2:28 pm

Re: Jackie Chan Adventures (PS2) *.AIF

Post by StreamThread »

I was wrong. Data1.AIF file from MiamiVice not unpacking correctly with scripts for Sea Creatures & Jackie Chan games.
You can see this file if have time: http://www.mediafire.com/download/14dup ... 4/Data1.7z
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Jackie Chan Adventures (PS2) *.AIF

Post by aluigi »

The Jackie Chan script linked before works perfectly on that sample you provided.
Warthog1336
Posts: 140
Joined: Mon Feb 05, 2018 5:45 pm

Re: Jackie Chan Adventures (PS2) *.AIF

Post by Warthog1336 »

Looking at this thread, people mention there are no filenames, but I found them inside the game executable.

Therefore I'm asking if it's possible to use it to obtain the music with correct names.

I'll post the three executables, one for the Demo, the second from the Prototype and then the last one from the Final release, along with Data1.AIF using filecutter.

DEMO samples: https://mega.nz/file/v4MgQbKI#A4KWIzBcV ... poLVnNtwLo
PROTO samples: https://mega.nz/file/2gdkUR5T#v_K0gHbAZ ... mrKs2ij8OM
FINAL game samples: https://mega.nz/file/f4dyRJZQ#mr5CfF0JB ... jvOrbi0dvk

The reason I'm posting all of these is because I think it could help in supporting the different versions.

Thank you in advance :D
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Jackie Chan Adventures (PS2) *.AIF

Post by aluigi »

Same format of http://aluigi.org/bms/family_feud_aif.bms
I made the script just two days ago, that's why I remembered it ;)
Warthog1336
Posts: 140
Joined: Mon Feb 05, 2018 5:45 pm

Re: Jackie Chan Adventures (PS2) *.AIF

Post by Warthog1336 »

Thanks, btw Nicknine helped me to get the music names and I forgot to reply here, here is his script (basically doing what you said in your second post of this thread):

Code: Select all

# Jackie Chan Adventures
# script for QuickBMS http://quickbms.aluigi.org
# written by Nicknine

get INFO_SIZE long
get INFO_OFF long

goto INFO_OFF
set PATH string ""

# Start with the root directory.
callfunction PARSE_DIRECTORY

startfunction PARSE_DIRECTORY
    get NAME_HASH long
    get SUBDIRS_OFF long
    get SUBFILES_OFF long
    get SUBDIRS short
    get SUBFILES short
   
    if NAME_HASH != 0
        namecrc NAME NAME_HASH "jackiechan_names.txt" 32
        string NAME R "." ""
        string PATH p "%s%s/" PATH NAME
    endif
   
    savepos CUR_OFF
    goto SUBDIRS_OFF
    for i = 0 < SUBDIRS
        callfunction PARSE_DIRECTORY
    next i
    goto SUBFILES_OFF
    for i = 0 < SUBFILES
        callfunction PARSE_FILE
    next i
    goto CUR_OFF
endfunction

startfunction PARSE_FILE
    get NAME_HASH long
    get OFFSET long
    get SIZE long
    get ZERO long
   
    namecrc NAME NAME_HASH "jackiechan_names.txt" 32
    string NAME p "%s%s" PATH NAME
    log NAME OFFSET SIZE
endfunction


In order to get the music names you'll need to place these lines in a text file called "jackiechan_names.txt" in the same folder as the script above:

Code: Select all

0xa64f94db Music
0x82373f61 Title.aus
0x3990c9fe China Town.aus
0x27b2e580 North Beach.aus
0x27b2e580 North Beach.aus
0x9be0c303 Fishermans Wharf.aus
0x1b3339c9 Golden Gate Park.aus
0x5d529071 Section 13.aus
0x8cf0c55f Section 13 Lift.aus
0x70729cab Mayan Temple Exterior.aus
0xeef0e0d4 Mayan Temple Interior.aus
0x3af7a4ed Mexican Village.aus
0x30d6ed44 Wrestling Fight.aus
0x02af64b5 Japanese Gardens Exterior.aus
0x1d73c33b Japanese shrine Interior.aus
0x9677d4df Japanese Castle Interior.aus
0x11d8ea11 Alcatraz Exterior.aus
0x7c14d8e8 Prison Interior.aus
0x703fe3af Cavern Interior.aus
0x1ae8eec1 Moon Exterior.aus
0x846a92be Moon Interior.aus
0x8190b37f Spanish Village.aus
0xa25fc299 Spanish Castle Interior.aus
0xa25fc299 Spanish Castle Interior.aus
0x4e5e7c67 Art Museum.aus
0xfb8eb96c Human Fight.aus
0x16aea00a Shadow Kahn USA.aus
0x9ce4da53 Shadow Kahn SPA.aus
0x214e90a6 Shadow Kahn JAP.aus
0x9ce4da53 Shadow Kahn SPA.aus
0x058b672b Boss Battle Intro.aus
0x937700be Boss Battle (easy).aus
0xba65cb47 Boss Battle (medium).aus
0x7daad7d2 Boss Battle (hard).aus
0x50cfbe9f Shendu battle.aus
0xf8334f0c Card Game.aus
0xe5ba556c Aution Game.aus
0x6f6dba74 Drum Game.aus
0xa047dce7 Castanets Game.aus
0x214e90a6 Shadow Kahn JAP.aus
0xc5743509 Fishing Game.aus
0xdbc1517a Fish Battle.aus
0xebdcc03c Episode Sting A.aus
0x79d97f97 Episode Complete.aus
0xd06b6d4b Talisman Collection.aus
0x967e787f Chi Symbol Collection.aus
0x38faf080 Game Over.aus
0xf7845c4c Puzzle Complete.aus
0xda374b33 Aution Room.aus
0xf5f99d1b Caught A Fish.aus
0x2d981817 spaceflight.AUS
0xb5bcbeba boss battle outro.aus
0x74541065 Shendu battle intro.aus
0x694190a4 credits.aus


Then you can play the AUS files using vgmstream, it's PSX ADPCM with Capcom AUS header.