Page 1 of 2

Summoner 2 (PS2) *.VPP

Posted: Wed Aug 07, 2019 9:19 am
by GenericRipper
Hi fellow rippers (and anyone else who'd like to help me out), may I ask you to look into samples of Volition VPP archives (mirror)? They're from Summoner 2, a PS2 exclusive title, and the newest rfguerrilla.bms can't handle them: QuickBMS reports "divide by zero" on every *.VPP file.
Goodbye and thanks in advance!

PS. I also tried Game Extractor & Novasoft Extractor (both can open Red Faction 1 (PC ver.) VPPs but not these) then gibbed.volition_1.0.0 pack but still nothing.

Re: Summoner 2 (PS2) *.VPP

Posted: Wed Aug 07, 2019 5:49 pm
by DKDave
Try this script - it should do the job!


# Summoner PS2 VPP extract

ComType zlib_noerror

Goto 0x3c
Get ENTRIES Long

Goto 0x4C
Get DATA_SIZE1 Long
Get DATA_SIZE2 Long

PutVarChr MEMORY_FILE DATA_SIZE2 0
Log MEMORY_FILE 0 0
CLog MEMORY_FILE 0x1800 DATA_SIZE1 DATA_SIZE2

Set FILE_ENTRIES 0x800
Set FILE_NAMES 0x1000

For A = 1 to ENTRIES

Goto FILE_ENTRIES

Get FNAME_OFF Long
Get OFFSET Long
Get JUNK Long
Get SIZE Long

Math FNAME_OFF + FILE_NAMES
Goto FNAME_OFF
Get FILENAME String

Log FILENAME OFFSET SIZE -1

Math FILE_ENTRIES + 0x1C

Next A

Re: Summoner 2 (PS2) *.VPP

Posted: Thu Aug 08, 2019 12:06 pm
by GenericRipper
I don't know, I get this error on both MUSIC.VPP & SOUNDS.VPP and nothing is extracted.
BTW what ver. of quickbms.exe do you use?
Bye!

Re: Summoner 2 (PS2) *.VPP

Posted: Thu Aug 08, 2019 5:13 pm
by DKDave
Hi.

I have the same version of QuicmBKS as you, but I've just noticed what the issue is. I was only looking at one of the other files (which are compressed), and not the MUSIC file, so I wasn't accounting for uncompressed archives, which store the info slightly differently.

Hopefully this script should work correctly now for all those VPP archives. I couldn't test it properly on MUSIC as I only have a partial file, so please let me know if it still doesn't work.


# Summoner VPP extract

ComType zlib_noerror

Goto 0x3c
Get ENTRIES Long

Goto 0x4C
Get DATA_SIZE1 Long
Get DATA_SIZE2 Long

If DATA_SIZE1 <> 0xFFFFFFFF
PutVarChr MEMORY_FILE DATA_SIZE2 0
Log MEMORY_FILE 0 0
CLog MEMORY_FILE 0x1800 DATA_SIZE1 DATA_SIZE2
Endif

Set FILE_ENTRIES 0x800
Set FILE_NAMES 0x1000
Set OFFSET2 0x1800

For A = 1 to ENTRIES

Goto FILE_ENTRIES

Get FNAME_OFF Long
Get OFFSET Long
Get JUNK Long
Get SIZE Long

Math FNAME_OFF + FILE_NAMES
Goto FNAME_OFF
Get FILENAME String

If DATA_SIZE1 <> 0xFFFFFFFF
Log FILENAME OFFSET SIZE -1
Else
Log FILENAME OFFSET2 SIZE 0
Math OFFSET2 + SIZE
Endif

Math FILE_ENTRIES + 0x1C

Next A

Re: Summoner 2 (PS2) *.VPP

Posted: Fri Aug 09, 2019 11:36 am
by GenericRipper
Well it seems to unpack MUSIC.VPP but not SOUNDS.VPP; to be precise it (QuickBMS.exe) extracts some files out of SOUNDS.VPP but they all have names like 0000001b.dat or 00000003.ia_, sometimes the program even makes me type in file names (WTH?!).
Maybe you'd like to try working with complete SOUNDS.VPP? It's 126 МBs but I hope it's not such a bother to download a file of this size these days. Am I right?
So long!

Re: Summoner 2 (PS2) *.VPP

Posted: Fri Aug 09, 2019 4:44 pm
by DKDave
Yes, I should be able to use that whole SOUNDS file, no problem. It sounds like they've messed with the format for different types of files, so what works for one doesn't necessarily work for others. But if you can upload the complete file it would be useful.

Re: Summoner 2 (PS2) *.VPP

Posted: Fri Aug 09, 2019 5:39 pm
by GenericRipper
Here you can get both untouched archives, I included MUSIC.VPP because I'm not so sure that extraction of it went smoothly either: I can't find correct interleave value for lots of tracks & many of those can't even be played as PS2 ADPCM (can be another codec but it's still rather unlikely).
Thanks in advance & good luck!

Re: Summoner 2 (PS2) *.VPP

Posted: Fri Aug 09, 2019 6:28 pm
by DKDave
Thanks. Those full files helped. I think I've cracked it this time. Third time lucky, hopefully. I was making assumptions about the format that were wrong. Compressed and uncompressed archives are treated slightly differently. The uncompressed ones are aligned on an 0x800 byte boundary, which I needed to take account of to get the data extracted from the correct offset.

The extracted MUSIC files (*.vmu) have 12 bytes of data before the PS ADPCM data. I assume this is some information about the file (sample rate, channels). I'm not sure exactly how that info is stored, but the music seems to be stereo, 22,050 Hz, Interleave 0x4000.

The SOUNDS files (*.vse) have no additional data at the start and are PS ADPCM, mono, 22,050 Hz. There are over 4,000 of them so I haven't checked them all.

So, fingers crossed this will work correctly for you now!


# Summoner 2 VPP extract

ComType zlib_noerror

Goto 0x3c
Get ENTRIES Long

Goto 0x44
Get TABLE1_SIZE Long
Get TABLE2_SIZE Long
Set MOD1_VALUE TABLE1_SIZE
Math MOD1_VALUE % 0x800
Set MOD2_VALUE TABLE2_SIZE
Math MOD2_VALUE % 0x800

Goto 0x4C
Get DATA_SIZE1 Long
Get DATA_SIZE2 Long

If DATA_SIZE1 <> 0xFFFFFFFF
PutVarChr MEMORY_FILE DATA_SIZE2 0
Log MEMORY_FILE 0 0
CLog MEMORY_FILE 0x1800 DATA_SIZE1 DATA_SIZE2
Endif

Set FILE_ENTRIES 0x800
Set FILE_NAMES FILE_ENTRIES
Math FILE_NAMES + TABLE1_SIZE

If MOD1_VALUE > 0
XMath FILE_NAMES "FILE_NAMES + 0x800 - MOD1_VALUE"
Endif

Set OFFSET2 FILE_NAMES
Math OFFSET2 + TABLE2_SIZE

If MOD2_VALUE > 0
XMath OFFSET2 "OFFSET2 + 0x800 - MOD2_VALUE"
Endif


For A = 1 to ENTRIES

Goto FILE_ENTRIES

Get FNAME_OFF Long
Get OFFSET Long
Get JUNK Long
Get SIZE Long

Math FNAME_OFF + FILE_NAMES
Goto FNAME_OFF
Get FILENAME String

If DATA_SIZE1 <> 0xFFFFFFFF
Log FILENAME OFFSET SIZE -1
Else
Log FILENAME OFFSET2 SIZE 0
Math OFFSET2 + SIZE
XMath MOD3_VALUE "OFFSET2 % 0x800"

If MOD3_VALUE > 0
XMath OFFSET2 "OFFSET2 + 0x800 - MOD3_VALUE"
Endif
Endif

Math FILE_ENTRIES + 0x1C

Next A

Re: Summoner 2 (PS2) *.VPP

Posted: Sat Aug 10, 2019 2:28 pm
by GenericRipper
I can't thank you enough man, all BGMs & CS tracks work now (basically everything from MUSIC.VPP) but unfortunately I'm having some difficulties playing a few *.VSE files (musician_*.VSE or odoni_pet_music*.VSE to name some of those). If you looked into them I'd highly appreciate it!
All the best!

Re: Summoner 2 (PS2) *.VPP

Posted: Sat Aug 10, 2019 2:43 pm
by DKDave
No problem!

I've just used my BMS script on the SOUNDS archive. The musician_*.vse files play perfectly for me as mono, 22050 Hz, PS ADPCM. I used GENH to test them and they all worked ok. An example attached of both the .vse and the GENH version I created, so you can compare the original file with what you get from the script (although it should be identical).

Re: Summoner 2 (PS2) *.VPP

Posted: Sun Aug 11, 2019 12:44 pm
by GenericRipper
Nevermind, I've got it all sorted out and it was just a stupid mistake on my end while I was working with those *.vse files; they play perfectly for me now.
Thanks nonetheless & bye!

Re: Summoner 2 (PS2) *.VPP

Posted: Sun Sep 01, 2019 2:45 am
by 41hc1
The Punisher also uses these formats, but this doesn't seem to work for it.
http://www.mediafire.com/file/ebano4qms ... E.zip/file

Re: Summoner 2 (PS2) *.VPP

Posted: Sun Sep 01, 2019 11:25 am
by DKDave
That Punisher VPP archive is a slightly different (and simpler) format, so you'll need a different script. Try this one.

All of the files seem to be mono, 22050 Hz, PSX audio.


# Punisher (PS2) - VPP extract
# By Dave

Goto 0x0008
Get ENTRIES Long
Goto 0x0010
Get FILE_TABLE Long

XMath DATA_START "(ENTRIES * 0x20) + 0x800"
XMath REMAINDER "DATA_START % 0x800"

If REMAINDER > 0
XMath DATA_START "DATA_START + 0x800 - REMAINDER"
Endif

For A = 1 to ENTRIES

Goto FILE_TABLE
GetDString FILENAME 0x18
Get SIZE1 Long
Get SIZE2 Long

Log FILENAME DATA_START SIZE1

Math DATA_START + SIZE1
XMath REMAINDER "DATA_START % 0x800"
If REMAINDER > 0
XMath DATA_START "DATA_START + 0x800 - REMAINDER"
Endif

Math FILE_TABLE + 0x20

Next A

Re: Summoner 2 (PS2) *.VPP

Posted: Mon Sep 02, 2019 7:01 pm
by GenericRipper

Re: Summoner 2 (PS2) *.VPP

Posted: Tue Sep 03, 2019 7:32 am
by 41hc1
Thanks, the one by Dave works. The Red Faction one actually doesn't work for Punisher. How can I extract the .vse audio for Punisher?
http://www.mediafire.com/file/5679zwud7 ... e.zip/file