Page 28 of 32

Re: My quickBMS scripts

Posted: Mon Sep 02, 2013 9:32 am
by AlphaTwentyThree
DARK (2013) PC - *.darkpack

Very very easy archive format.

Code: Select all

# extracts the *.darkpack archives from "DARK" (PC, 2013)
# (c) 2013-09-02 by AlphaTwentyThree of XeNTaX
# script for QuickBMS http://quickbms.aluigi.org

idstring "DARKPACK"
goto 8
get TOC_SIZE long
get FILES long
for i = 1 <= FILES
	get OFFSET long
	get ZERO long
	get CRC long
	get ZERO long
	get SIZE long
	get NAMEL long
	getDstring NAME NAMEL
	log NAME OFFSET SIZE
next i

Re: My quickBMS scripts

Posted: Tue Sep 03, 2013 7:13 pm
by arg274
Hey alphatwentythree,can u whip off a bms for scanning and ripping *.pmf files from an unknown archive?or,can you at least tell me the read size at offset value so that i can use it with JN? :roll:

Re: My quickBMS scripts

Posted: Tue Sep 03, 2013 8:59 pm
by AlphaTwentyThree
arg274 wrote:Hey alphatwentythree,can u whip off a bms for scanning and ripping *.pmf files from an unknown archive?or,can you at least tell me the read size at offset value so that i can use it with JN? :roll:
Here's my old PMF scanner. ;)

Code: Select all

for i = 1
	FindLoc OFFSET string "PSMF00" 0 ""
	if OFFSET == ""
		cleanexit
	endif
	goto OFFSET
	get DUMMY long
	get DUMMY long
	get DUMMY long
	get SIZE long
	get NAME basename
	string NAME += "_"
	string NAME += i
	string NAME += ".pmf"
	log NAME OFFSET SIZE
	math OFFSET += SIZE
	goto OFFSET
next i

Re: My quickBMS scripts

Posted: Wed Sep 04, 2013 5:00 pm
by arg274
thnx man,thumbs up!

Re: My quickBMS scripts

Posted: Sun Sep 08, 2013 1:20 pm
by AlphaTwentyThree
AFL Live 2 (2013) X360 - .wad0/.wad1

Be sure to get the latest func_getTYPE.bms for this one!

Code: Select all

# extracts the game data from "AFL Live 2" (X360, 2013)
# (c) 2013-09-08 by AlphaTwentyThree of XeNTaX
# script for QuickBMS http://quickbms.aluigi.org

include "func_getTYPE.bms"
open FDDE wad0 0
open FDDE wad1 1
endian big
get FILES long 0
get UNK long 0
set BIAS files
math BIAS *= 0x10
math BIAS += 8
for i = 1 <= FILES
	get NAME long # crc
	string NAME p= "0x%08x" NAME
	get SIZE long
	get FILE long
	get OFFSET long
	putVarChr MEMORY_FILE SIZE 0
	log MEMORY_FILE 0 0
	append
	append
	if FILE == 0
		math OFFSET += BIAS
		log MEMORY_FILE OFFSET SIZE 0
	elif FILE == 1
		log MEMORY_FILE OFFSET SIZE 1
	endif
	callfunction getType 1
	endian big
	string NAME += EXT
	log NAME 0 SIZE MEMORY_FILE
next i

Re: My quickBMS scripts

Posted: Sat Oct 05, 2013 4:41 pm
by AlphaTwentyThree
9 Clues: The Secret of Serpent Creek - Game.cub

xor150 first, then apply this script.

Code: Select all

# extracts the Game.cub from "9 Clues: The Secret of Serpent Creek" (2013, PC)
# (c) 2013-10-05 by AlphaTwentyThree of XeNTaX
# script for QuickBMS http://quickbms.aluigi.org

idstring \x63\x75\x62\x00\x31\x2E\x30\x00
get FILES long
goto 0x10c
for i = 1 <= FILES
	getDstring NAME 0x100
	get OFFSET long
	get SIZE long
	log NAME OFFSET SIZE
next i

Re: My quickBMS scripts

Posted: Sun Oct 06, 2013 12:07 am
by AlphaTwentyThree
Full Mojo Rampage (2013) PC - DataPC.pak

Code: Select all

# extract the DataPC.pak of "Full Mojo Rampage" (PC, 2013)
# (c) 2013-10-06 by AlphaTwentyThree of XeNTaX
# script for QuickBMS http://quickbms.aluigi.org

idstring KCAP
endian big
goto 0xc
get FILES long
set BIAS FILES
math BIAS *= 0x120
math BIAS += 0x20
get OFF asize
math OFF -= BIAS
goto OFF
for i = 1 <= FILES
	getDstring NAME 0x100
	get ZSIZE long
	get SIZE long
	get OFFSET long
	get IDENT long
	getDstring DUMMY 0x10
	if IDENT == 1
		clog NAME OFFSET SIZE ZSIZE
	else
		log NAME OFFSET SIZE
	endif
next i

Re: My quickBMS scripts

Posted: Sat Oct 12, 2013 11:53 am
by arg274
can u do a GZip scanning bms,alpha?i only need a scanner one,no need to create a decomprssor too.

Re: My quickBMS scripts

Posted: Sat Oct 12, 2013 2:41 pm
by AlphaTwentyThree
arg274 wrote:can u do a GZip scanning bms,alpha?i only need a scanner one,no need to create a decomprssor too.
Well... I don't know the specs, but maybe offzip works? You can also try to use my generic splitter.

Re: My quickBMS scripts

Posted: Sat Oct 12, 2013 4:31 pm
by arg274
AlphaTwentyThree wrote:
arg274 wrote:can u do a GZip scanning bms,alpha?i only need a scanner one,no need to create a decomprssor too.
Well... I don't know the specs, but maybe offzip works? You can also try to use my generic splitter.
meh,tried offzip quite some time ago but somehow,didnt work for me.i'll give your splitter a try.

Re: My quickBMS scripts

Posted: Sun Oct 20, 2013 7:50 pm
by AlphaTwentyThree
Alien Rage Unlimited (2013) PC - SNDTABLE.AFB/SNDCACHE.AFB

Code: Select all

# Alien Rage Unlimited (2013) PC
# extracts the sounds from the SNDTABLE.AFB/SNDCACHE.AFB
# (c) 2013-10-20 by AlphaTwentyThree of XeNTaX
# script for QuickBMS http://quickbms.aluigi.org

open FDSE "SNDTABLE.AFB" 0
open FDSE "SNDCACHE.AFB" 1

get FILES long 0
for i = 1 <= FILES
	get OFFSET long 0
	get SIZE long 0
	get NAMEL long 0
	math NAMEL *= 2
	getDstring UNINAME NAMEL 0
	set NAME unicode UNINAME
	callfunction transname 1
	string NAME += ".ogg"
	log NAME OFFSET SIZE 1
next i

startfunction transname
	math NAMEL /= 2
	for k = 0 < NAMEL
		getVarChr TEST NAME k
		if TEST == 0x2e
			putVarChr NAME k 0x2f
		endif
	next k
endfunction

Re: My quickBMS scripts

Posted: Mon Oct 28, 2013 3:00 pm
by AlphaTwentyThree
Wwise *.bnk soundbank extractor

Somehow I never posted this...

Code: Select all

# extracts sound files from Wwise *.bnk soundbanks
# (c) 2013-10-28 by AlphaTwentyThree of Xentax
# script for QuickBMS http://quickbms.aluigi.org

include "func_getTYPE.bms"
idstring "BKHD"
get SIZE_HEADER long
savepos MYOFF
math MYOFF += SIZE_HEADER
get FSIZE asize
if MYOFF == FSIZE
	print "bnk is empty"
	cleanexit
endif
goto MYOFF
idstring "DIDX"
get SIZE_DIDX long
set FILES SIZE_DIDX
math FILES /= 0xc
set BIAS MYOFF # complete header
math BIAS += SIZE_DIDX
math BIAS += 16
get BNAME basename
for i = 1 <= FILES
	get DIDX long
	get OFFSET long
	math OFFSET += BIAS
	get SIZE long
	set NAME DIDX
	string NAME += " ("
	string NAME += BNAME
	string NAME += ")"
	putVarChr MEMORY_FILE SIZE 0
	log MEMORY_FILE 0 0
	append
	log MEMORY_FILE OFFSET SIZE
	append
	callfunction getTYPE 1
	string NAME += EXT
	log NAME OFFSET SIZE
next i

Re: My quickBMS scripts

Posted: Tue Oct 29, 2013 9:23 pm
by AlphaTwentyThree
Simple audio file sorter

This could come in helpful when you rip a game with the Wwise engine and have thousands of files but don't know what type of sound the file is (music, sfx, ambience, speech etc.).
Just run all the files through the script, it will sort them according to their frequency and channels. Will save you a LOT of time when it comes to music processing!
Also: Good script for beginners. ;)

Code: Select all

getDstring IDENT 4
if IDENT == "OggS"
	goto 0x27
	get CH byte
	get FREQ short
elif IDENT == "RIFF"
	goto 0x16
	get CH short
	get FREQ long
endif
get FNAME filename
string NAME p= "%d_%d/%s" FREQ CH FNAME
get SIZE asize
log NAME 0 SIZE

Re: My quickBMS scripts

Posted: Wed Oct 30, 2013 11:34 am
by AlphaTwentyThree
UPDATE

Just updated my generic file splitter with an additional option that makes it a generic filetype scanner (!!!).
Funny thing is that it was really easy to implement, I just didn't see the obvious. ;)

Re: My quickBMS scripts

Posted: Sun Jan 05, 2014 5:14 pm
by AlphaTwentyThree
Reservoir Dogs (PS2) - *.PS2

The sounds in this game are wav/wav.str pairs. Maybe I'll take a look at these some other time.

Code: Select all

# Reservoir Dogs (PS2) - *.PS2 extractor
# (c) 2014-01-05 by AlphaTwentyThree of XeNTaX
# script for QuickBMS http://quickbms.aluigi.org

goto 0xc
get FILES long
get OFF_INFO long
math OFF_INFO *= 0x800
goto 0x28
get OFF_NAMES long
math OFF_NAMES *= 0x800
goto OFF_INFO
for i = 1 <= FILES
	get OFFSET long
	get CRC long
	get SIZE long
	get NAMEPOS long
	math NAMEPOS += OFF_NAMES
	get UNK long # always 1
	get UNK long # 0 or 4
	get UNK long
	get UNK long
	
	math OFFSET *= 0x800
	savepos MYOFF
	goto NAMEPOS
	get NAME string
	goto MYOFF
	
	get WNAME basename
	string WNAME += "/"
	string WNAME += NAME
	log WNAME OFFSET SIZE
next i