Jump to content

(3DS) Shantae and the Pirate's Curse *.vol file


Go to solution Solved by BloodRaynare,

Recommended Posts

Posted

Hi, can someone please help me with the .vol file froen_Global.zipm Shantae and the Pirate's Curse on 3DS? It seems to be a type of compressed file. I would really appreciate any help.

Posted (edited)

Try this QuickBMS script that I made myself (well not really. I kinda took some bits from the aluigi's scooby_looney.bms script then adapt it accordingly):
 

## Shantae and the Pirate's Curse *.vol extractor script by BloodRaynare
## For use with QuickBMS

log MEMORY_FILE 0 0

ComType deflate

get SIGN long
if SIGN == 0xd177f050
	callfunction COMP_VARIANT 1
else
	callfunction UNCOMP_VARIANT 1
endif

startfunction COMP_VARIANT
	get DUMMY long  # 0x0101
	get ZSIZE long
	get SIZE long
	savepos OFFSET
	clog MEMORY_FILE OFFSET ZSIZE SIZE
	
	get SIGN long MEMORY_FILE
	get DUMMY long MEMORY_FILE
	get DUMMY long MEMORY_FILE
	get FILES long MEMORY_FILE
	get OFFSET long MEMORY_FILE
	goto OFFSET MEMORY_FILE
	xmath NAME_OFF "OFFSET + (FILES * 0x18)"
	for i = 0 < FILES
		get CRC long MEMORY_FILE
		get DUMMY long MEMORY_FILE
		get OFFSET long MEMORY_FILE
		get ZERO long MEMORY_FILE
		get ZERO long MEMORY_FILE
		get SIZE long MEMORY_FILE
	
		savepos TMP MEMORY_FILE
		goto NAME_OFF MEMORY_FILE
		get NAME string MEMORY_FILE
		savepos NAME_OFF MEMORY_FILE
		goto TMP MEMORY_FILE
	
		log NAME OFFSET SIZE MEMORY_FILE
	next i
endfunction

startfunction UNCOMP_VARIANT
	get DUMMY long
	get DUMMY long
	get FILES long
	get OFFSET long
	goto OFFSET
	xmath NAME_OFF "OFFSET + (FILES * 0x18)"
	for i = 0 < FILES
		get CRC long
		get DUMMY long
		get OFFSET long
		get ZERO long
		get ZERO long
		get SIZE long
	
		savepos TMP
		goto NAME_OFF
		get NAME string
		savepos NAME_OFF
		goto TMP
	
		log NAME OFFSET SIZE
	next i
endfunction
Edited by BloodRaynare
  • Thanks 1
Posted

It looks like you're still using the scooby_looney script in your image above.  However, the script by BloodRaynare doesn't work either as the file table is 0x14 bytes per entry instead of 0x18.  Try this one - it works on your sample, that is the only one I have from that game:

# Shantae and The Pirate's Curse (3DS)
# VOL extract
# QuickBMS script by DKDave, 2025


Comtype deflate

Goto 8
Get ZSIZE Long
Get SIZE Long

CLog MEMORY_FILE 0x10 ZSIZE SIZE

Goto 0x0c -1
Get FILES Long -1
Get ENTRY Long -1

For A = 0 < FILES
    Goto ENTRY -1
    Get MISC1 Long -1
    Get NAME_OFF Long -1
    Get OFFSET Long -1
    Get JUNK Long -1
    Get SIZE Long -1
    Goto NAME_OFF -1
    Get FILENAME String -1

    Log FILENAME OFFSET SIZE -1

    Math ENTRY + 0x14
Next A

 

 

 

  • Solution
Posted (edited)

 

57 minutes ago, DKDave said:

It looks like you're still using the scooby_looney script in your image above.  However, the script by BloodRaynare doesn't work either as the file table is 0x14 bytes per entry instead of 0x18.  Try this one - it works on your sample, that is the only one I have from that game:

# Shantae and The Pirate's Curse (3DS)
# VOL extract
# QuickBMS script by DKDave, 2025


Comtype deflate

Goto 8
Get ZSIZE Long
Get SIZE Long

CLog MEMORY_FILE 0x10 ZSIZE SIZE

Goto 0x0c -1
Get FILES Long -1
Get ENTRY Long -1

For A = 0 < FILES
    Goto ENTRY -1
    Get MISC1 Long -1
    Get NAME_OFF Long -1
    Get OFFSET Long -1
    Get JUNK Long -1
    Get SIZE Long -1
    Goto NAME_OFF -1
    Get FILENAME String -1

    Log FILENAME OFFSET SIZE -1

    Math ENTRY + 0x14
Next A

 

 

 

Hmmm, my script did work actually, but because I tested it with the files from the cart/physical version
@katashi Did you files come from the eshop version? It seems there are file format changes between the releases.
PC version went through with the same thing too (vol format is different between Steam and GOG version).

Edited by BloodRaynare
Posted
4 hours ago, BloodRaynare said:

 

Hmmm, my script did work actually, but because I tested it with the files from the cart/physical version
@katashi Did you files come from the eshop version? It seems there are file format changes between the releases.
PC version went through with the same thing too (vol format is different between Steam and GOG version).

Solved, I have successfully extracted it. Thank you very much.

Posted
7 hours ago, BloodRaynare said:

 

Hmmm, my script did work actually, but because I tested it with the files from the cart/physical version
@katashi Did you files come from the eshop version? It seems there are file format changes between the releases.
PC version went through with the same thing too (vol format is different between Steam and GOG version).

It's always a pain when there are different versions of formats for the same game.  So there are several valid scripts, just have to choose the correct one.

 

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...