Page 27 of 33
Re: My quickBMS scripts
Posted: Fri Jan 18, 2013 10:57 am
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
Re: My quickBMS scripts
Posted: Mon Jan 21, 2013 12:19 pm
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
Re: My quickBMS scripts
Posted: Thu May 16, 2013 9:31 pm
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).
Re: My quickBMS scripts
Posted: Wed Jun 26, 2013 5:16 pm
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
Re: My quickBMS scripts
Posted: Fri Jun 28, 2013 10:27 am
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
Re: My quickBMS scripts
Posted: Fri Jun 28, 2013 10:34 am
by Dinoguy1000
AlphaTwentyThree wrote:Baldur's Gate: Dark Alliane (PS2) - *.GOB/*.LMP
That's supposed to be "Dark Allian
ce", right?

Re: My quickBMS scripts
Posted: Fri Jun 28, 2013 4:20 pm
by AlphaTwentyThree
of course - changed.

Re: My quickBMS scripts
Posted: Wed Jul 03, 2013 11:49 am
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
Re: My quickBMS scripts
Posted: Tue Jul 09, 2013 8:18 am
by AlphaTwentyThree
UPDATE
Just made another update of
func_getTYPE.bms with some more file types and heuristics.
Re: My quickBMS scripts
Posted: Sat Jul 27, 2013 11:48 am
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

Re: My quickBMS scripts
Posted: Sat Jul 27, 2013 2:51 pm
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

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.
Re: My quickBMS scripts
Posted: Sat Jul 27, 2013 4:03 pm
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

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

Re: My quickBMS scripts
Posted: Thu Aug 15, 2013 6:48 pm
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
Re: My quickBMS scripts
Posted: Wed Aug 21, 2013 1:24 pm
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
Re: My quickBMS scripts
Posted: Fri Aug 30, 2013 10:04 pm
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