Getting the voicelines files of Jedi Power Battles (PS1) game

Codecs, formats, encoding/decoding of game audio, video and music
amgb
Posts: 44
Joined: Tue Jun 22, 2021 8:38 pm

Getting the voicelines files of Jedi Power Battles (PS1) game

Post by amgb »

Hello, I come back to this topic because I have another PS1 game to extract (Star Wars, Jedi Power Battles).

There are the same kinds of files but this time the SLES is 026.08. Would it be possible to have an updated script that works for this game ?

Here are all the files inside the bin file :

FILE.000
FILE.001
FILE.002
SLES_026.08
SYSTEM.CNF
Z.000

Here are the link of the files : https://we.tl/t-zPMBnvH0yC
BloodRaynare
Posts: 367
Joined: Fri Mar 10, 2017 7:23 am

Re: Getting the voicelines files of Jedi Power Battles (PS1) game

Post by BloodRaynare »

First, extract the FILE.000 with this script:

Code: Select all

open FDSE SLES_026.08
open FDSE FILE.000 1

math TOC = 0x907D0
goto TOC

for i = 0
	get MM byte
	get SS byte
	get FF byte
	get DIRNUM byte
	get SIZE long
	getdstring FNAME 16
   
	if MM == 00 && SS == 00 && FF == 00
		break
	endif

	string TMP1 p "%2x" MM
	string TMP2 p "%2x" SS
	string TMP3 p "%2x" FF
	math TMP1 * 60
	math TMP2 + TMP1
	math TMP2 * 75
	xmath OFFSET "TMP2 + TMP3"
	xmath OFF_SUB "2 * 75 * 2048"
	math OFFSET * 2048
	math OFFSET - OFF_SUB
	string NAME p "%02d/%s" DIRNUM FNAME
	log NAME OFFSET SIZE 1
next i
There are some grunt and few voicelines inside the VGC files which you can find inside the "01" directory, use this script to extract them:

Code: Select all

get VGC_SZ long
get SOUND_NUM long

for i = 0 < SOUND_NUM
	get SND_DATA_SZ short
	get IS_HALF_SAMPLE_RATE short
	get UNK short
	get UNK short
	
	putarray 0 i SND_DATA_SZ
	putarray 1 i IS_HALF_SAMPLE_RATE
next i

for i = 0 < SOUND_NUM
	get SND_NAME string
	putarray 2 i SND_NAME
next i

padding 4
savepos OFFSET

for i = 0 < SOUND_NUM
	getarray SND_DATA_SZ         0 i 
	getarray IS_HALF_SAMPLE_RATE 1 i 
	getarray SND_NAME            2 i 
	log MEMORY_FILE 0 0
	log MEMORY_FILE OFFSET SND_DATA_SZ
	callfunction AddVAGHeader 1
	get VAG_SZ asize MEMORY_FILE2
	string NAME p "%s.vag" SND_NAME
	log NAME 0 VAG_SZ MEMORY_FILE2
	math OFFSET + SND_DATA_SZ
next i

startfunction AddVAGHeader
	math VER = 0x02
	math SAMPLE_RATE = 11025
	log MEMORY_FILE2 0 0
	endian big
	
	append
	putDstring "VAGp" 4 MEMORY_FILE2
	put 2 long MEMORY_FILE2
	put 0 long MEMORY_FILE2
	xmath SND_DATA_SZ_TMP "SND_DATA_SZ + 0x10"
	put SND_DATA_SZ_TMP long MEMORY_FILE2
	if IS_HALF_SAMPLE_RATE == 0x8000
		math SAMPLE_RATE * 2
	endif
	put SAMPLE_RATE long MEMORY_FILE2
	put 0 long MEMORY_FILE2
	put 0 long MEMORY_FILE2
	put 0 long MEMORY_FILE2
	putDString SND_NAME 0x10 MEMORY_FILE2
	putDString "" 0x10 MEMORY_FILE2
	log MEMORY_FILE2 0 SND_DATA_SZ MEMORY_FILE
	append
	
	endian little
endfunction
The cutscenes voices are inside the FILE.002, which is just a collection of XA ADPCM audio that you can extract by using jPSXdec (BTW, you've extracted it incorrectly, there's no frame header that's why jPSXdec cannot detect anything). However, the cutscene voices has background music pre-baked into them.
amgb
Posts: 44
Joined: Tue Jun 22, 2021 8:38 pm

Re: Getting the voicelines files of Jedi Power Battles (PS1) game

Post by amgb »

Once again, thanks for the help and for the files.