My quickBMS scripts

Coders and would-be coders alike, this is the place to talk about programming.
AlphaTwentyThree
double-veteran
double-veteran
Posts: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Mon Sep 02, 2013 9:32 am

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
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 ;)

arg274
beginner
Posts: 27
Joined: Sun Aug 25, 2013 8:05 pm
Location: Dacca, BD
Has thanked: 7 times
Been thanked: 2 times

Re: My quickBMS scripts

Post by arg274 » Tue Sep 03, 2013 7:13 pm

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:

AlphaTwentyThree
double-veteran
double-veteran
Posts: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Tue Sep 03, 2013 8:59 pm

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
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 ;)

arg274
beginner
Posts: 27
Joined: Sun Aug 25, 2013 8:05 pm
Location: Dacca, BD
Has thanked: 7 times
Been thanked: 2 times

Re: My quickBMS scripts

Post by arg274 » Wed Sep 04, 2013 5:00 pm

thnx man,thumbs up!

AlphaTwentyThree
double-veteran
double-veteran
Posts: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Sun Sep 08, 2013 1:20 pm

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
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: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Sat Oct 05, 2013 4:41 pm

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
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: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Sun Oct 06, 2013 12:07 am

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
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 ;)

arg274
beginner
Posts: 27
Joined: Sun Aug 25, 2013 8:05 pm
Location: Dacca, BD
Has thanked: 7 times
Been thanked: 2 times

Re: My quickBMS scripts

Post by arg274 » Sat Oct 12, 2013 11:53 am

can u do a GZip scanning bms,alpha?i only need a scanner one,no need to create a decomprssor too.

AlphaTwentyThree
double-veteran
double-veteran
Posts: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Sat Oct 12, 2013 2:41 pm

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.
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 ;)

arg274
beginner
Posts: 27
Joined: Sun Aug 25, 2013 8:05 pm
Location: Dacca, BD
Has thanked: 7 times
Been thanked: 2 times

Re: My quickBMS scripts

Post by arg274 » Sat Oct 12, 2013 4:31 pm

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.

AlphaTwentyThree
double-veteran
double-veteran
Posts: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Sun Oct 20, 2013 7:50 pm

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
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: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Mon Oct 28, 2013 3:00 pm

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
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: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Tue Oct 29, 2013 9:23 pm

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
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: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Wed Oct 30, 2013 11:34 am

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. ;)
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: 985
Joined: Mon Aug 24, 2009 10:55 pm
Has thanked: 75 times
Been thanked: 618 times

Re: My quickBMS scripts

Post by AlphaTwentyThree » Sun Jan 05, 2014 5:14 pm

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
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