Important information: this site is currently scheduled to go offline indefinitely by end of the year.

My quickBMS scripts

Coders and would-be coders alike, this is the place to talk about programming.
zouzou69
n00b
Posts: 17
Joined: Thu Mar 10, 2011 11:46 am

Re: My quickBMS scripts

Post by zouzou69 »

can someone know how to edit the sbs et sbr files from fifa games ?

i would edit this files for pc version and xbox version of fifa 13 to change the audio ..the sbs contains probably xma files



here the exemple of the two files.

if someone could transform this ..thks a lot

http://www.datafilehost.com/download-5b1f42f3.html

THANKS A LOT .i think the files contains xma
User avatar
FinalBlast
advanced
Posts: 52
Joined: Mon Dec 28, 2009 6:35 pm
Location: Bulgaria
Has thanked: 22 times
Been thanked: 5 times
Contact:

Re: My quickBMS scripts

Post by FinalBlast »

AlphaTwentyThree wrote:
Researchman wrote:Works if .pck archives dont have much files. Problem .pcks - sounds_eng.pck, sounds_sfx.pck (Assasin`s Creed III (Xbox 360)). QuickBMS error - this BMS script uses more array elements than how much supported (0.5.15b).
Dont work with soundstream.pck (Halo 4) - dont do extracting (extracted 0 files from 0).
Without samples, I can't check the new script I'm afraid... :-\
Mr. Alpha, I have provided a 5 MB sample of the PC version of AC3 sounds_sfx.pck I hope it helps to make the script work on PC ver. :)

http://www.mediafire.com/?u89884l48xpy3ky
Researchman
mega-veteran
mega-veteran
Posts: 315
Joined: Fri Jun 11, 2010 12:08 pm
Has thanked: 78 times
Been thanked: 23 times

Re: My quickBMS scripts

Post by Researchman »

Dont sure, but I dont found func_header_CDXA.bms(use addCDXAheader.bms from here - viewtopic.php?f=13&p=40162#p40162 ).

Try use Playstation XA extractor on XA_STR from japan version 1.0 of Castlevania: Symphony of the Night, but its dont work. Maybe because, in this file contain some SEQ files(PS1 MIDI).
AlphaTwentyThree
double-veteran
double-veteran
Posts: 982
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 76 times
Been thanked: 660 times

Re: My quickBMS scripts

Post by AlphaTwentyThree »

Buzz! The Sports Quiz (PS2, 2006)

Code: Select all

# extracts the *.PAK files from "Buzz! The Sports Quiz" (PS2, 2006)
# (c) 2013-06-26 by AlphaTwentyThree of XeNTaX

idstring BPAK
get OFF_DATA long
goto 0x10
get FILES long
get TOC long
goto TOC
for i = 0 < FILES
	get CRC long
	get OFF_NAME long
	get OFFSET long
	get SIZE long
	savepos MYOFF
	goto OFF_NAME
	get NAME string
	goto MYOFF
	log NAME OFFSET SIZE
next i
If you like what you see, why not click the little Thank You button? ;) It will definitely motivate me! :)
And here's Mr.Mouse's Facebook link: http://www.facebook.com/permalink.php?s ... 8469022795 - thanks ;)
AlphaTwentyThree
double-veteran
double-veteran
Posts: 982
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 76 times
Been thanked: 660 times

Re: My quickBMS scripts

Post by AlphaTwentyThree »

Baldur's Gate: Dark Alliance (PS2) - *.GOB/*.LMP

Code: Select all

# extracts *.GOB archives from "Baldur's Gate: Dark Alliance" (PS2)
# (c) 2013-06-28 by AlphaTwentyThree of XeNTaX

for
	getDstring NAME 0x20
	get OFFSET long
	get SIZE long
	if NAME == ""
		cleanexit
	endif
	log NAME OFFSET SIZE
next

Code: Select all

# extracts *.LMP archives from "Baldur's Gate: Dark Alliance" (PS2)
# (c) 2013-06-28 by AlphaTwentyThree of XeNTaX

get FILES long
for i = 1 <= FILES
	getDstring NAME 0x38
	get OFFSET long
	get SIZE long
	log NAME OFFSET SIZE
next i
Last edited by AlphaTwentyThree on Fri Jun 28, 2013 4:19 pm, edited 1 time in total.
If you like what you see, why not click the little Thank You button? ;) It will definitely motivate me! :)
And here's Mr.Mouse's Facebook link: http://www.facebook.com/permalink.php?s ... 8469022795 - thanks ;)
User avatar
Dinoguy1000
Site Admin
Posts: 786
Joined: Mon Sep 13, 2004 1:55 am
Has thanked: 154 times
Been thanked: 163 times

Re: My quickBMS scripts

Post by Dinoguy1000 »

AlphaTwentyThree wrote:Baldur's Gate: Dark Alliane (PS2) - *.GOB/*.LMP
That's supposed to be "Dark Alliance", right? :wink:
Welcome to Xentax!

Rules | Requests | Wiki | Discord

If you run across a post that breaks the rules, please report the post - a mod or admin will handle it from there.
AlphaTwentyThree
double-veteran
double-veteran
Posts: 982
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 76 times
Been thanked: 660 times

Re: My quickBMS scripts

Post by AlphaTwentyThree »

of course - changed. ;)
If you like what you see, why not click the little Thank You button? ;) It will definitely motivate me! :)
And here's Mr.Mouse's Facebook link: http://www.facebook.com/permalink.php?s ... 8469022795 - thanks ;)
AlphaTwentyThree
double-veteran
double-veteran
Posts: 982
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 76 times
Been thanked: 660 times

Re: My quickBMS scripts

Post by AlphaTwentyThree »

Baldur's Gate: Dark Alliance (GC) - *.lmp

Structure is similar to the PS2 lmp files, only big endian and with an identifier. Those lmp files hold most of the game's files.

Code: Select all

# extracts the *.lmp archives from
# Baldur's Gate: Dark Alliance (Gamecube, 2001)
# (c) 2013-07-03 by AlphaTwentyThree of XeNTaX

endian big
idstring LUMP
get FILES long
get BNAME basename
string BNAME += "/"
for i = 1 <= FILES
	getDstring NAME 0x38
	get OFFSET long
	get SIZE long
	set WNAME BNAME
	string WNAME += NAME
	log WNAME OFFSET SIZE
next i
If you like what you see, why not click the little Thank You button? ;) It will definitely motivate me! :)
And here's Mr.Mouse's Facebook link: http://www.facebook.com/permalink.php?s ... 8469022795 - thanks ;)
AlphaTwentyThree
double-veteran
double-veteran
Posts: 982
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 76 times
Been thanked: 660 times

Re: My quickBMS scripts

Post by AlphaTwentyThree »

UPDATE

Just made another update of func_getTYPE.bms with some more file types and heuristics.
If you like what you see, why not click the little Thank You button? ;) It will definitely motivate me! :)
And here's Mr.Mouse's Facebook link: http://www.facebook.com/permalink.php?s ... 8469022795 - thanks ;)
User avatar
shekofte
mega-veteran
mega-veteran
Posts: 221
Joined: Sun Jan 18, 2009 1:45 pm
Location: Sagittarius
Has thanked: 301 times
Been thanked: 20 times
Contact:

Re: My quickBMS scripts

Post by shekofte »

here are .snd files that show ripple shapes data :
viewtopic.php?f=16&t=10632

i want to see , how you will write a Qbms script for extracting of wave from them ?
What a wonderful this would be for me , because my knowledge on sound data is low ...
just as a teaching session !

Yours sincerely :keke:
ILLUSORY VIDEO GAMES ARE MORE IMPORTANT THAN PRECIOUS INTERNATIONAL FOOTBALLs
AlphaTwentyThree
double-veteran
double-veteran
Posts: 982
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 76 times
Been thanked: 660 times

Re: My quickBMS scripts

Post by AlphaTwentyThree »

shekofte wrote:here are .snd files that show ripple shapes data :
viewtopic.php?f=16&t=10632

i want to see , how you will write a Qbms script for extracting of wave from them ?
What a wonderful this would be for me , because my knowledge on sound data is low ...
just as a teaching session !

Yours sincerely :keke:
Well, these are .VAB archives with PS2 ADPCM streams inside. Can't remember if I ever wrote an extractor for these. ATM I don't have time but for all I can see at first glance the format isn't complicated.
If you like what you see, why not click the little Thank You button? ;) It will definitely motivate me! :)
And here's Mr.Mouse's Facebook link: http://www.facebook.com/permalink.php?s ... 8469022795 - thanks ;)
User avatar
shekofte
mega-veteran
mega-veteran
Posts: 221
Joined: Sun Jan 18, 2009 1:45 pm
Location: Sagittarius
Has thanked: 301 times
Been thanked: 20 times
Contact:

Re: My quickBMS scripts

Post by shekofte »

AlphaTwentyThree wrote:
shekofte wrote:here are .snd files that show ripple shapes data :
viewtopic.php?f=16&t=10632

i want to see , how you will write a Qbms script for extracting of wave from them ?
What a wonderful this would be for me , because my knowledge on sound data is low ...
just as a teaching session !

Yours sincerely :keke:
Well, these are .VAB archives with PS2 ADPCM streams inside. Can't remember if I ever wrote an extractor for these. ATM I don't have time but for all I can see at first glance the format isn't complicated.
anyway thanks for your allusion :erm:
ILLUSORY VIDEO GAMES ARE MORE IMPORTANT THAN PRECIOUS INTERNATIONAL FOOTBALLs
AlphaTwentyThree
double-veteran
double-veteran
Posts: 982
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 76 times
Been thanked: 660 times

Re: My quickBMS scripts

Post by AlphaTwentyThree »

Culpa Innata (2007) PC - *.sfs

Different from the sfs files of IL-2.

Code: Select all

 # extracts the SFS containers from Culpa Innata (PC, 2007)
 # (c) 2013-08-15 by AlphaTwentyThree of XeNTaX

idstring "SFS1"
get FILES short
for i = 1 <= FILES
	get NAMEL short
	getDstring NAME NAMEL
	get OFFSET long
	savepos MYOFF
	goto OFFSET
	get SIZE long
	math OFFSET += 4
	goto MYOFF
	log NAME OFFSET SIZE
next i
If you like what you see, why not click the little Thank You button? ;) It will definitely motivate me! :)
And here's Mr.Mouse's Facebook link: http://www.facebook.com/permalink.php?s ... 8469022795 - thanks ;)
AlphaTwentyThree
double-veteran
double-veteran
Posts: 982
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 76 times
Been thanked: 660 times

Re: My quickBMS scripts

Post by AlphaTwentyThree »

Half-Life (2001) PS2 - *.pak

Code: Select all

# extracts *.PAK archives from the PS2 version of Half-Life
 #(c) 2013-08-21 by AlphaTwentyThree of XeNTaX

idstring PACK
get NAMESOFF long
get FILES long
goto NAMESOFF
for i = 1 <= FILES
	getDstring NAME 0x38
	get OFFSET long
	get SIZE long
	log NAME OFFSET SIZE
next i
If you like what you see, why not click the little Thank You button? ;) It will definitely motivate me! :)
And here's Mr.Mouse's Facebook link: http://www.facebook.com/permalink.php?s ... 8469022795 - thanks ;)
AlphaTwentyThree
double-veteran
double-veteran
Posts: 982
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 76 times
Been thanked: 660 times

Re: My quickBMS scripts

Post by AlphaTwentyThree »

Glacier engine - WHD/WAV pairs

Games like the Hitman series, Freedom Fighters or Kane & Lynch. You will need to put all whd/wav pairs as well as the streams.wav (if available) into the same folder.
Not all tested, though. So if you have problems with any of the Glacier games, post here.

Code: Select all

# extracts the WHD/WAV pairs from the Glacier engine
# needs the streams.wav in the same folder as the whd/wav pair(s)
# tested with Hitman 2: Silent Assassin (Xbox, PS2)
# (c) 2013-08-30 by AlphaTwentyThree of XeNTaX
# script for QuickBMS http://quickbms.aluigi.org

open FDDE WHD 0
open FDDE WAV 1
open FDSE "streams.wav" 2 EXISTS
if EXISTS == 0
	open FDSE "STREAMS.WAV" 2 EXISTS
endif
get TOCSIZE long 0
get WHDSIZE long 0
if WHDSIZE == 0x18
	cleanexit
endif
get UNK longlong 0
do
	get NAME string 0
	savepos MYOFF 0
	math MYOFF x= 4
	goto MYOFF 0
	get UNK long 0
	get UNK long 0
	get CODEC threebyte 0
	get FILE byte 0
	get FREQ long 0
	get BITS long 0
	get UNK long 0
	get SIZE long 0
	get CH long 0
	get OFFSET long 0
	get UNK long 0
	get INTERLEAVE long 0
	get UNK long 0
	savepos MYOFF 0
	if FILE == 0
		if CODEC == 0x69
			string NAME += ".lwav"
			callfunction XADP 1
		elif CODEC == 1
			set BLOCKALIGN 4
			callfunction PCM_1 1
		elif CODEC == 0x12
			string NAME += ".genh"
			set CODEC 9
			if CH == 1
				set INTERLEAVE 0
			endif
			callfunction GENH 1
		else
			print "Error: unknown codec. Aborting..."
			cleanexit
		endif
	elif FILE == 0x80
		if EXISTS == 1
			set BLOCKALIGN 4
			callfunction PCM_2 1
		endif
	endif
while MYOFF < TOCSIZE

startfunction XADP
	set MEMORY_FILE binary "\x52\x49\x46\x46\x18\x51\xa3\x0\x57\x41\x56\x45\x66\x6d\x74\x20\x14\x0\x0\x0\x69\x0\x2\x0\x44\xac\x0\x0\xcc\xc1\x0\x0\x48\x0\x4\x0\x2\x0\x40\x0\x64\x61\x74\x61\xf0\x50\xa3\x0"
	set RIFFSIZE SIZE
	math RIFFSIZE += 0x28
	putVarChr MEMORY_FILE 0x04 RIFFSIZE long
	putVarChr MEMORY_FILE 0x16 CH byte
	putVarChr MEMORY_FILE 0x18 FREQ long
	set VAR1 0x3073
	math VAR1 *= CH
	if FREQ == 48000
		math VAR1 *= 44100
	else
		math VAR1 *= FREQ
	endif
	math VAR1 /= 22050
	putVarChr MEMORY_FILE 0x1c VAR1 long	
	set VAR2 0x24
	math VAR2 *= CH
	putVarChr MEMORY_FILE 0x20 VAR2 short
	putVarChr MEMORY_FILE 0x2c SIZE long
	append
	log MEMORY_FILE OFFSET SIZE 1
	append
	if NAME == ""
		get NAME basename
		string NAME += ".lwav"
	endif
	get SIZE asize MEMORY_FILE
	log NAME 0 SIZE MEMORY_FILE
endfunction

startfunction PCM_1
	set PRE SIZE
	math PRE += 0x2c
	putVarChr MEMORY_FILE PRE 0
	log MEMORY_FILE 0 0
	set MEMORY_FILE binary "\x52\x49\x46\x46\x20\xC0\xB1\x00\x57\x41\x56\x45\x66\x6D\x74\x20\x10\x00\x00\x00\x01\x00\x02\x00\x44\xAC\x00\x00\x10\xB1\x02\x00\x04\x00\x10\x00\x64\x61\x74\x61\xFC\xBF\xB1\x00"
	append
	log MEMORY_FILE OFFSET SIZE 1
	append
	set RIFFSIZE SIZE
	math RIFFSIZE += 36
	set AVGBYTES FREQ
	if CODEC != 2
		math AVGBYTES *= BLOCKALIGN
	endif
	
	putvarchr MEMORY_FILE 0x04 RIFFSIZE long
	putvarchr MEMORY_FILE 0x14 CODEC short
	putvarchr MEMORY_FILE 0x16 CH short
	putvarchr MEMORY_FILE 0x18 FREQ short
	putvarchr MEMORY_FILE 0x1c AVGBYTES long
	putvarchr MEMORY_FILE 0x20 BLOCKALIGN short
	putvarchr MEMORY_FILE 0x22 BITS short
	putvarchr MEMORY_FILE 0x28 SIZE long
	if NAME == ""
		get NAME basename
		string NAME += ".wav"
	endif
	get SIZE asize MEMORY_FILE
	log NAME 0 SIZE MEMORY_FILE
endfunction

startfunction PCM_2
	set PRE SIZE
	math PRE += 0x2c
	putVarChr MEMORY_FILE PRE 0
	log MEMORY_FILE 0 0
	set MEMORY_FILE binary "\x52\x49\x46\x46\x20\xC0\xB1\x00\x57\x41\x56\x45\x66\x6D\x74\x20\x10\x00\x00\x00\x01\x00\x02\x00\x44\xAC\x00\x00\x10\xB1\x02\x00\x04\x00\x10\x00\x64\x61\x74\x61\xFC\xBF\xB1\x00"
	append
	log MEMORY_FILE OFFSET SIZE 2
	append
	set RIFFSIZE SIZE
	math RIFFSIZE += 36
	set AVGBYTES FREQ
	if CODEC != 2
		math AVGBYTES *= BLOCKALIGN
	endif
	
	putvarchr MEMORY_FILE 0x04 RIFFSIZE long
	putvarchr MEMORY_FILE 0x14 CODEC short
	putvarchr MEMORY_FILE 0x16 CH short
	putvarchr MEMORY_FILE 0x18 FREQ short
	putvarchr MEMORY_FILE 0x1c AVGBYTES long
	putvarchr MEMORY_FILE 0x20 BLOCKALIGN short
	putvarchr MEMORY_FILE 0x22 BITS short
	putvarchr MEMORY_FILE 0x28 SIZE long
	if NAME == ""
		get NAME basename
		string NAME += ".wav"
	endif
	get SIZE asize MEMORY_FILE
	log NAME 0 SIZE MEMORY_FILE
endfunction

startfunction GENH
	set SAMPLES SIZE
	math SAMPLES *= 8
	math SAMPLES /= BITS

	set FSIZE SIZE
	math FSIZE += 0x1000
	putVarChr MEMORY_FILE FSIZE 0
	log MEMORY_FILE 0 0
	putVarChr MEMORY_FILE 0 0x484e4547 long
	putVarChr MEMORY_FILE 0x4 CH long
	putVarChr MEMORY_FILE 0x8 INTERLEAVE long
	putVarChr MEMORY_FILE 0xc FREQ long
	putVarChr MEMORY_FILE 0x10 0xffffffff long
	putVarChr MEMORY_FILE 0x14 SAMPLES long
	putVarChr MEMORY_FILE 0x18 CODEC long
	putVarChr MEMORY_FILE 0x1c 0x1000 long # offset; == stream start if no header
	putVarChr MEMORY_FILE 0x20 0x1000 long
	putVarChr MEMORY_FILE 0x300 FSIZE long
	putVarChr MEMORY_FILE 0x304 0x32304756 long
	putVarChr MEMORY_FILE 0xfff 0 byte
	math FSIZE -= 0x1000
	append
	log MEMORY_FILE OFFSET FSIZE 1
	append
	get SIZE asize MEMORY_FILE
	log NAME 0 SIZE MEMORY_FILE
endfunction
If you like what you see, why not click the little Thank You button? ;) It will definitely motivate me! :)
And here's Mr.Mouse's Facebook link: http://www.facebook.com/permalink.php?s ... 8469022795 - thanks ;)
Post Reply