The Summoner PS2 Randomizer Project

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.

VPP format cracked Text-script layer solved ISO pipeline working Doors blocked on .p3d Summoner 2 VPP v2 in progress
github.com/nto-live/Summoner-Summoner2-Randomizer → Read the FAQ

What is a Summoner randomizer

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:

  • Entrance and door randomization — doors lead somewhere other than where they used to, so the map itself becomes a puzzle.
  • Item and shop randomization — what you find, and what it costs.
  • Encounter randomization — which creatures show up in which regions.
  • Character and model swaps — who stands where, and what they look like.
  • A one-hour mode — a curated, solver-validated route for racing.

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.

Why Summoner, and why nobody has done this

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.

What we've already cracked

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.

FORMAT

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.

DATA

The data layer is plain text

All 527 table entries are a human-readable script language — doors, dialogue, spawns, triggers, items. Randomizing them is text surgery, not binary patching.

SOURCE

The linker map shipped unstripped

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.

WORLD

50 named levels and their rooms

Real developer names for every map — Catacombs, Jadetemple, KhosaniStrng, Lenele1aa3d, WorldMap1 and the day/night overworld regions — plus named interior geometry down to individual stairwells.

PIPELINE

ISO in, randomized ISO out

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.

TRIVIA

The developers signed it

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"

What can be randomized so far

TargetStatusNotes
Door locks & soundsworkingLock and audio data shuffle today.
Cutscenes & musicworkingGood for pacing and for chaos seeds.
Item stats & descriptionsin progressLocating the real item table inside the script blob.
Shops & economyin progressPrices, gold flow, stock.
Encounters & spawnsin progressPer-region spawn tables.
Doors & entrancesblockedDestinations live in the .p3d level geometry, still undecoded. This is the big one and the next major push.
Character classes & skillsplannedClass and skill records identified.
Character modelsplanned2,556 model files; format not yet decoded.
Summoner 2 (all of it)blockedNeeds the VPP version 2 archive revision decoded first.

How the Summoner 2 disc differs

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.

The one-hour mode

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:

  • Pre-satisfy the flag chain. The game gates progress with flags on doors and triggers. Anything that gates only optional content gets granted up front. This is where the hours actually come from.
  • Critical-path doors only. Randomization is confined to levels on the solved route, so a seed can never strand you in a dead-end area.
  • Combat floor removed — fights become traversal, not time sinks.
  • Cutscenes bypassed — a large fraction of a casual run.
  • Encounter rates cut in the overworld regions.
  • Every seed validated against a reachability solver before it ships. An unbeatable seed is a bug, not a challenge.

How to play a Summoner randomizer

  1. Own a copy of the game. You need to dump your own disc — we do not supply one. See the note below, and it is not a formality.
  2. Run the randomizer against your disc image. It produces a new, size-preserving image with the shuffled data written in.
  3. Play it in PCSX2 on a PC, or on real hardware via softmod such as FreeMcBoot with OPL, or on a modded console.
  4. Share the seed. Identical seed plus identical settings equals identical randomization, which is what makes racing possible.

The project is in active development, so none of this is a release yet.

Roadmap

  • DONE
    VPP format v1 decoded, full asset inventory of Summoner 1, working ISO pipeline, both discs dumped and hash-verified.
  • NOW
    Decode .p3d level geometry to find door and teleport records — the blocker for entrance randomization on both games. In parallel, decode the VPP version 2 revision for Summoner 2.
  • NEXT
    Build the flag graph and reachability solver so the critical path is computed, not guessed.
  • THEN
    v0.1 “Chaos” — items, shops, audio, cutscene order. No lock risk.
  • THEN
    v0.2 “Doors” — real entrance randomization within an act, checker-gated.
  • LATER
    v0.3 the one-hour mode, then a raceable v1.0 with spoiler logs.

Summoner randomizer FAQ

Is there a randomizer for Summoner on PS2?

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.

Does Summoner 2 have a randomizer?

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.

Can you randomize doors and entrances in Summoner?

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.

What can be randomized in Summoner right now?

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.

Do I need a modded PlayStation 2 or an emulator?

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.

Does the project distribute the game or ISO files?

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.

Will there be a one-hour completion mode?

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.

What are the disc revisions you are working from?

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.

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.