ILL ViLLaiN
11-23-2011, 07:08 PM
Like the title says. I haven't been in the ripping scene for quite a while, but I decided to rip a couple PSN games that haven't even been thought of being touched.

I have been looking inside of a couple psn games, and took out the at3 files from the music folders, but I have no luck converting, scanning or anything with them. I tried the nova extractor method that was used for PSP, and himdrender, but still no luck. Any solutions to my dilemma? Thanks in advance.

JBTND
11-23-2011, 09:06 PM
So do you mean that you extracted music out of respective game folders and are sure that format is AT3? Because I thought that PSN games as well as XBLA titles & DLC come as single extensionless files and hex editor is needed to extract individual files. Maybe you mean that you scanned such game dumps with Novasoft extractor or likes and considered files with WAVE header to be AT3? Makes sense but be aware that since both formats usually have WAVE header they aren`t the same: AT3+ is mostly used in PSP games (HiMDRenderer was made to work with this format from the start) and while AT3 can be found in some early PSP titles it`s more widespread on PS3 so that PSP ripping tools may not work with it.

Anyways you can always install an Atrac3 codec (http://free-codecs.com/download/sony_atrac3_audio_codec.htm) and if files become playable convert them with the means of players like Winamp or (possibly) any audio editors. You can also try converting AT3 to AA3 which should be compatible with Sony Sound Forge (but you can skip this step since this is the way AT3+ should be treated unless I`m mistaking it with simple AT3 this time) using this script
idstring "RIFF"
get SIZE asize
if SIZE == 0
cleanexit
endif
goto 0x14
get CODEC short
if CODEC == 624
cleanexit
endif
goto 0x3c
get INFO long
FindLoc SIZE string "data" 0 ""
math SIZE += 4
goto SIZE
get SIZE long
savepos DATA
set MEMORY_FILE binary "\x65\x61\x33\x3\x0\x0\x0\x0\x7\x76\x47\x45\x4f\x42 \x00\x00\x01\xc6\x00\x00\x02\x62\x69\x6e\x61\x72\x 79\x00\x00\x00\x00\x4f\x00\x4d\x00\x47\x00\x5f\x00 \x4c\x00\x53\x00\x49\x00\x00\x00\x01\x00\x40\x00\x dc\x00\x70\x00\x08\x00\x00\x00\x00\x00\x00\x4b\x45 \x59\x52\x49\x4e\x47"
putVarChr MEMORY_FILE 0x400 0x1334145 long
putVarChr MEMORY_FILE 0x404 0xffff6000 long
putVarChr MEMORY_FILE 0x420 INFO long
get FIRST long
putVarChr MEMORY_FILE 0x460 FIRST long
math DATA += 4
math SIZE -= 4
append
log MEMORY_FILE DATA SIZE
append
get NAME basename
string NAME += ".aa3"
math SIZE += 0x460
log NAME 0 SIZE MEMORY_FILE

goto 0x5c
getdstring CUE 4
if CUE == "smpl"
get NAME basename
string NAME += ".smpl"
log NAME 0x5c 0x44
endif
goto 0x58
getdstring CUE 4
if CUE == "smpl"
get NAME basename
string NAME += ".smpl"
log NAME 0x58 0x44
endif
goto 0x44
getdstring CUE 4
if CUE == "smpl"
get NAME basename
string NAME += ".smpl"
log NAME 0x58 0x44
endif
goto 0x48
getdstring CUE 4
if CUE == "smpl"
get NAME basename
string NAME += ".smpl"
log NAME 0x58 0x44
endiffor QuickBMS (http://aluigi.altervista.org/quickbms.htm). And as the last effort this script
set MEMORY_FILE binary "\x52\x49\x46\x46\x88\xb3\x6d\x0\x57\x41\x56\x45\x6 6\x6d\x74\x20\x20\x0\x0\x0\x70\x2\x2\x0\x80\xbb\x0 \x0\x9a\x40\x0\x0\x80\x1\x0\x0\xe\x0\x1\x0\x0\x10\ x0\x0\x0\x0\x0\x0\x1\x0\x0\x0\x66\x61\x63\x74\x8\x 0\x0\x0\x91\x81\x24\x1\x1b\x4\x0\x0\x64\x61\x74\x6 1\x88\xb3\x6d\x0"

set FREQ 48000
set CH 2
set BITRATE 132
set OFFSET 0x0
if BITRATE == 66
putVarChr MEMORY_FILE 0x1c 0x204d long
putVarChr MEMORY_FILE 0x20 0xc0 long
elif BITRATE == 105
putVarChr MEMORY_FILE 0x1c 0x3324 long
putVarChr MEMORY_FILE 0x20 0x130 long
elif BITRATE == 132
putVarChr MEMORY_FILE 0x1c 0x409a long
putVarChr MEMORY_FILE 0x20 0x180 long
endif
get NAME basename
get SIZE asize
math SIZE -= OFFSET
string NAME += ".at3"
set RIFFSIZE SIZE
math RIFFSIZE += 0x44
putVarChr MEMORY_FILE 0x04 RIFFSIZE long
putVarChr MEMORY_FILE 0x16 CH byte
putVarChr MEMORY_FILE 0x18 FREQ long
putVarChr MEMORY_FILE 0x48 SIZE long

append
log MEMORY_FILE OFFSET SIZE
append
math SIZE += 0x4c
log NAME 0 SIZE MEMORY_FILEcan come in handy given that the files you apply it to are headerless. This way trying and checking different frequencies and bitrates out can result in playable tracks. Hope it helps.

PS. And almost forgot! Since PSP uses a bit different AT3+ for actual music and movie audiotracks so that you even have to use different scripts to extract and convert these two the choice of scripts may depend on whether you`re ripping music or movies from the game.