VPP archives, decoded
Volition Pack: a fixed header, a table of contents of 64-byte records at 0x800, and entry data packed sequentially from 0x1000. Filenames are stored unencrypted. Nine archives, 6,433 files on Summoner 1 alone.
We are taking apart Summoner and Summoner 2 — the 2000 and 2002 PlayStation 2 RPGs from Volition and THQ — down to the file formats, and rebuilding them into a proper randomizer. Doors and entrances, items, shops, encounters, characters, cutscenes and maps. This is the build log.
A randomizer shuffles a game's contents so that no two playthroughs are the same. In most randomizers that means shuffling which items appear where, so you have to search the whole game for the thing you need instead of walking a memorised route. This project aims to go further:
Every seed has to be beatable. That is the hard part, and it is why a reachability solver is a prerequisite rather than a luxury.
Summoner launched alongside the PlayStation 2 itself in October 2000 — one of the few RPGs on the shelf that day, built by Volition before they became the Saints Row studio. It sold modestly, aged strangely, and got almost no modding attention in the twenty-five years since. The entire community toolset for the PS2 version amounts to a widescreen patch.
Which is exactly why it is worth doing. There is no prior art to lean on, and no documentation to read. Everything below was worked out from the disc.
Work started September 2026. Both discs are far more open than expected: the archives store their own filenames in plain text, and the game's data layer turned out not to be binary at all.
Volition Pack: a fixed header, a table of contents of 64-byte records at 0x800, and entry data packed sequentially from 0x1000. Filenames are stored unencrypted. Nine archives, 6,433 files on Summoner 1 alone.
All 527 table entries are a human-readable script language — doors, dialogue, spawns, triggers, items. Randomizing them is text surgery, not binary patching.
MAIN.MAP is on the retail disc with the original source tree intact: code/summoner/summoner.o, code/vsdk/…. A function-level index of the executable, for free.
Real developer names for every map — Catacombs, Jadetemple, KhosaniStrng, Lenele1aa–3d, WorldMap1 and the day/night overworld regions — plus named interior geometry down to individual stairwells.
A working end-to-end build: read a disc image, apply table-layer transforms, write a new image. About a minute for 1.2 GB, byte-size preserving so nothing shifts.
The level scripts contain section markers named after the people who wrote them — #Abe, #bob, #Dennis, #cathey, #earle.
#Doors — from a Summoner level script, verbatim $Door: "cry_tombcen" +Open sound: "Doors\Open_Stone_verylarge.wav" 20.0 1.0 1.0 +Close sound: "Doors\Close_stone_verylarge.wav" 20.0 1.0 1.0 +Locked: 0.50 // progression gates are expressed as level + flag pairs +Trigger: "khosanistrng" "ready_for_end" +Trigger: "TempleInt" "unhide_madog"
| Target | Status | Notes |
|---|---|---|
| Door locks & sounds | working | Lock and audio data shuffle today. |
| Cutscenes & music | working | Good for pacing and for chaos seeds. |
| Item stats & descriptions | in progress | Locating the real item table inside the script blob. |
| Shops & economy | in progress | Prices, gold flow, stock. |
| Encounters & spawns | in progress | Per-region spawn tables. |
| Doors & entrances | blocked | Destinations live in the .p3d level geometry, still undecoded. This is the big one and the next major push. |
| Character classes & skills | planned | Class and skill records identified. |
| Character models | planned | 2,556 model files; format not yet decoded. |
| Summoner 2 (all of it) | blocked | Needs the VPP version 2 archive revision decoded first. |
Summoner 2 (SLUS20448, 2002) is a different animal. Its assets live under /S2ASSETS/ instead of the disc root, its cutscenes are split into individual archives organised by region, and its boot executable SLUS_204.48 is only 1.8 MB — against 17.5 MB for Summoner 1.
Critically, it uses a newer VPP revision: same magic number, different header, and a 28-byte table-of-contents record where version 1 used 64 bytes. The old reader returns zero entries for these files. Decoding that revision is the current blocker for Summoner 2.
Its level scripts are readable already, though — arena, city-of-glass, cm1-wheel through cm7-lair, coral-grotto, endgame, galdyr-pass, halassar, highwater, indubal, khargathalan, mud-god-boss.
A normal Summoner run is a twenty-hour proposition. We want a mode a competent player can finish in about sixty minutes — roughly a 20× compression. Shuffling alone cannot do that, so the plan is a curated critical-path slice:
The project is in active development, so none of this is a release yet.
Not yet publicly. As of September 2026 this project is building the first one. Summoner has had essentially no modding scene since 2000 — the only community tool for the PS2 version has been a widescreen patch. We have reverse-engineered the VPP archive format, the plain-text data layer and the level geometry index, and have a working ISO-in / randomized-ISO-out pipeline.
Not yet. Summoner 2 (PS2, SLUS20448) uses a newer revision of the VPP archive format — version 2 — which has a different header and a 28-byte table-of-contents record instead of version 1's 64-byte record. Decoding that revision is the current blocker before Summoner 2 can be randomized.
That is the goal and it is currently blocked. Door lock and sound data live in the human-readable table layer and can already be shuffled, but the destination each door sends you to is stored in the .p3d level geometry, which uses an undocumented format. Decoding .p3d is the next major milestone and is required before entrance randomization is possible.
Door locks, door open and close sounds, door names, NPC and enemy character assignments, model references and cutscene ordering. These are all table-layer, text-based transforms and have been verified end to end on a real disc image.
Either works. The randomizer produces a modified disc image, so you can run it in PCSX2 on a PC, or on real hardware via softmod such as FreeMcBoot with OPL, or on a modded console.
No. No disc images, ISOs, ROMs or download links are distributed or hosted anywhere by this project, on this site or anywhere else. You must supply your own legally dumped copy of the disc.
Yes, that is a design goal. A normal Summoner run takes roughly twenty hours, and the target is a mode completable in about sixty minutes. It works by confining randomization to the critical path, granting flags that gate only optional content, lowering the combat floor, bypassing cutscenes and validating every seed against a reachability solver.
Summoner 1 is the US PlayStation 2 release, SLUS-20074, published by THQ and developed by Volition, released 24 October 2000. Summoner 2 is the US PlayStation 2 release, SLUS20448. Both images are hash-verified against the original source.
This project distributes no game data. No disc images, no ISOs, no ROMs, no downloads, no mirrors, no links to any of it. Not on this page and not anywhere else.
Summoner and Summoner 2 are the property of their respective rights holders. Everything here is reverse engineering performed on a legitimately owned copy. To use anything we build, you need to dump your own disc — that part is on you.
Nothing on this site is affiliated with, endorsed by, or connected to Volition, THQ, THQ Nordic, Deep Silver, Sony, or anyone else who owns any part of this game. It is fans, in a room, with a hex editor.
Status: active development, September 2026. Formats are still moving and the pipeline is being rebuilt constantly, so nothing here is a release. Progress is logged as it happens.