Toward a native PC port of Extermination (PlayStation 2, Deep Space / Sony Computer Entertainment, 2001), the Antarctic survival horror that never left the PS2 and was never re-released.
This repository documents the disc and its formats, and grows the tooling for the port. Alongside it grows ps2kit, a game-agnostic toolkit for PS2 reverse engineering: everything the port needs that is not specific to Extermination.
This repository contains documentation and tools only. No game data, no executables, no assets. You need your own original disc. The work is done on the PAL release, SCES-50240.
docs/ disc, format and engine analysis, and the plan
tools/ Extermination-specific tools
ps2kit/ game-agnostic PS2 toolkit
runtime/ our changes to PS2Recomp's runtime and recompiler, and how to
build and run the recompiled game
Everything needs only Python 3.8+, no dependencies. Run from the repository root.
# what is on the disc
python -m ps2kit.fingerprint E:/ --deep
# data index: list, verify against the DATA file, extract
python tools/ext_index.py E:/DATA/INDEX_IT.IDX --list --section 4
python tools/ext_index.py E:/DATA/INDEX_IT.IDX --dat E:/DATA/DATA_IT.DAT --verify
python tools/ext_index.py E:/DATA/INDEX_IT.IDX --dat E:/DATA/DATA_IT.DAT \
--extract out/ --section 4
# music and voice tracks -> WAV
python tools/ext_stream.py E:/SCES_502.40 --list
python tools/ext_stream.py E:/SCES_502.40 --kind music \
--stream E:/STREAM/MUSIC.DAT --extract out/music/
# all text, per language (UTF-8 out)
python tools/ext_text.py E:/DATA/INDEX_IT.IDX E:/DATA/DATA_IT.DAT > text_it.txt
# GS texture pages: list transfers, read one back as PSMT8 with a CLUT
python -m ps2kit.gs out/s02/slot05.bin --list
python -m ps2kit.gs out/s02/slot05.bin --t8 0 --clut 16,352 --png logo.png
# textures, meshes and rooms -> PNG / glTF
python tools/ext_tex.py E:/DATA/INDEX_IT.IDX E:/DATA/DATA_IT.DAT --census
python tools/ext_mesh.py E:/DATA/INDEX_IT.IDX E:/DATA/DATA_IT.DAT \
--record s04_r0 --slots 44 --gltf out/room.gltf
# characters with skeleton and every animation -> skinned glTF
python tools/ext_anim.py E:/DATA/INDEX_IT.IDX E:/DATA/DATA_IT.DAT \
--record s28 --slot 3A --mesh s28:39 --variant 6 --gltf out/squad.gltf
# a room with its actors placed from the overlay's spawn tables
python tools/ext_spawn.py E:/SCES_502.40 E:/OVERLAY/AREA00.BIN \
E:/DATA/INDEX_IT.IDX --area 0 --room 0 --dat E:/DATA/DATA_IT.DAT \
--gltf out/room00.gltf
# ... or every room of every area
python tools/ext_spawn.py E:/SCES_502.40 E:/OVERLAY E:/DATA/INDEX_IT.IDX --dat E:/DATA/DATA_IT.DAT --all out/rooms
# sound banks -> samples as WAV, each at the rate its tones play it
python tools/ext_sound.py E:/DATA/INDEX_IT.IDX E:/DATA/DATA_IT.DAT --list
python tools/ext_sound.py E:/DATA/INDEX_IT.IDX E:/DATA/DATA_IT.DAT --record s04_r0 --wav out/sfx
# movies -> MPEG-2 video + WAV
python -m ps2kit.pss E:/MOVIE_IT/E001.PSS --video e001.m2v --audio e001.wav
# executable: layout, xrefs, raw reads by virtual address
python -m ps2kit.elf E:/SCES_502.40 --info
python -m ps2kit.elf E:/SCES_502.40 --xref 0x00284D08
python -m ps2kit.elf E:/SCES_502.40 --callers 0x001C6CE0
# VU microcode, from the DMA chain that uploads it
python -m ps2kit.vu E:/SCES_502.40 --dma 0x00237D00
# recompile the 19 overlays into PS2Recomp's runtime (runtime/README.md)
sh tools/recomp/export_overlays.sh build/ghidra D:/Tools/PS2Recomp/ps2xRecomp/tools/ghidra build/recomp/ov
python tools/recomp/ovl_recomp.py --recomp .../ps2_recomp.exe --runtime .../PS2Recomp-ext/ps2xRuntime
# overlays: header, function entries, an ELF with the executable for Ghidra
python -m ps2kit.mwo3 E:/OVERLAY/AREA00.BIN --seeds --host E:/SCES_502.40
python -m ps2kit.mwo3 E:/OVERLAY/AREA00.BIN --elf area00.elf --host E:/SCES_502.40
# IOP modules: imports, exports, relocated image
python -m ps2kit.irx E:/IRX/SNDN2DRV.IRXSessions 1–5: disc, index, streamed audio, text, textures, meshes, skeletons and animation, actor placement and sound (banks, sequences, real sample rates) are decoded; every room exports to glTF with its actors. The executable and all 19 overlays are mapped in Ghidra. Session 6: the executable and the overlays recompile with PS2Recomp, and the recompiled game runs at full speed through its language menu, logos and title screen, as far as the opening movie. See docs/00-sessions.md for the log, docs/06-attack-plan.md for the route, docs/07-next-session.md for what is next and docs/04-curiosities.md for the interesting bits.
00-sessions.md progress log
01-disc-layout.md what is on the DVD
02-container-formats.md every format, with verified layouts
04-curiosities.md what the disc reveals about its making
05-open-questions.md what is still unknown
06-attack-plan.md the porting route
07-next-session.md the plan for the next session
10-ps2kit.md the game-agnostic toolkit
MIT — see LICENSE. This covers the documentation and tools in this repository only. It says nothing about Extermination itself, which remains the property of its rights holders.