The Forum is up for sale: XeNTaX Forum looking for new owner
Summoner 2 (PS2) *.VPP
-
GenericRipper
- advanced
- Posts: 66
- Joined: Sun Mar 21, 2010 5:41 pm
- Has thanked: 56 times
- Been thanked: 4 times
Summoner 2 (PS2) *.VPP
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.
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.
- DKDave
- ultra-veteran

- Posts: 353
- Joined: Mon May 06, 2019 6:07 pm
- Location: On board the USS Callister
- Has thanked: 9 times
- Been thanked: 164 times
Re: Summoner 2 (PS2) *.VPP
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
# 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
I see a vision rising, dreary, Fading in as children play twilight games, In the town called Ordinary, An eye of light reveals a gateway to doomsday
-
GenericRipper
- advanced
- Posts: 66
- Joined: Sun Mar 21, 2010 5:41 pm
- Has thanked: 56 times
- Been thanked: 4 times
Re: Summoner 2 (PS2) *.VPP
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!
BTW what ver. of quickbms.exe do you use?
Bye!
You do not have the required permissions to view the files attached to this post.
- DKDave
- ultra-veteran

- Posts: 353
- Joined: Mon May 06, 2019 6:07 pm
- Location: On board the USS Callister
- Has thanked: 9 times
- Been thanked: 164 times
Re: Summoner 2 (PS2) *.VPP
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
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
I see a vision rising, dreary, Fading in as children play twilight games, In the town called Ordinary, An eye of light reveals a gateway to doomsday
-
GenericRipper
- advanced
- Posts: 66
- Joined: Sun Mar 21, 2010 5:41 pm
- Has thanked: 56 times
- Been thanked: 4 times
Re: Summoner 2 (PS2) *.VPP
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!
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!
- DKDave
- ultra-veteran

- Posts: 353
- Joined: Mon May 06, 2019 6:07 pm
- Location: On board the USS Callister
- Has thanked: 9 times
- Been thanked: 164 times
Re: Summoner 2 (PS2) *.VPP
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.
I see a vision rising, dreary, Fading in as children play twilight games, In the town called Ordinary, An eye of light reveals a gateway to doomsday
-
GenericRipper
- advanced
- Posts: 66
- Joined: Sun Mar 21, 2010 5:41 pm
- Has thanked: 56 times
- Been thanked: 4 times
Re: Summoner 2 (PS2) *.VPP
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!
Thanks in advance & good luck!
- DKDave
- ultra-veteran

- Posts: 353
- Joined: Mon May 06, 2019 6:07 pm
- Location: On board the USS Callister
- Has thanked: 9 times
- Been thanked: 164 times
Re: Summoner 2 (PS2) *.VPP
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
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
I see a vision rising, dreary, Fading in as children play twilight games, In the town called Ordinary, An eye of light reveals a gateway to doomsday
-
GenericRipper
- advanced
- Posts: 66
- Joined: Sun Mar 21, 2010 5:41 pm
- Has thanked: 56 times
- Been thanked: 4 times
Re: Summoner 2 (PS2) *.VPP
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!
All the best!
- DKDave
- ultra-veteran

- Posts: 353
- Joined: Mon May 06, 2019 6:07 pm
- Location: On board the USS Callister
- Has thanked: 9 times
- Been thanked: 164 times
Re: Summoner 2 (PS2) *.VPP
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).
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).
You do not have the required permissions to view the files attached to this post.
I see a vision rising, dreary, Fading in as children play twilight games, In the town called Ordinary, An eye of light reveals a gateway to doomsday
-
GenericRipper
- advanced
- Posts: 66
- Joined: Sun Mar 21, 2010 5:41 pm
- Has thanked: 56 times
- Been thanked: 4 times
Re: Summoner 2 (PS2) *.VPP
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!
Thanks nonetheless & bye!
Re: Summoner 2 (PS2) *.VPP
The Punisher also uses these formats, but this doesn't seem to work for it.
http://www.mediafire.com/file/ebano4qms ... E.zip/file
http://www.mediafire.com/file/ebano4qms ... E.zip/file
- DKDave
- ultra-veteran

- Posts: 353
- Joined: Mon May 06, 2019 6:07 pm
- Location: On board the USS Callister
- Has thanked: 9 times
- Been thanked: 164 times
Re: Summoner 2 (PS2) *.VPP
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
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
I see a vision rising, dreary, Fading in as children play twilight games, In the town called Ordinary, An eye of light reveals a gateway to doomsday
-
GenericRipper
- advanced
- Posts: 66
- Joined: Sun Mar 21, 2010 5:41 pm
- Has thanked: 56 times
- Been thanked: 4 times
Re: Summoner 2 (PS2) *.VPP
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
http://www.mediafire.com/file/5679zwud7 ... e.zip/file
