Skip to content

Supported titles ​

TitleReadWriteEvidence
Abiotic FactorYesYesShipped adapter (GamePassStorage.Adapters.AbioticFactor, built into wgs). Real sanitized stores and in-game use through Abiotic Editor
76 catalog titles (below)Native layout knownNative layout knownCommunity-sourced mappings in GamePassStorage.Adapters.Catalog (built into wgs). Synthetic tests only; no real store checked here
BethesdaSoftworks.ProjectTitan_3275kfvn8vcwc (title not publicly confirmed)Yes (container layer)Multi-blob write tested on a sanitized copyReal store, sanitized as tests/fixtures/RealMultiBlob. Container layer only: no adapter, payloads not interpreted, and no in-game round trip
Any other titleUnverifiedUnverifiedWorks through the generic model. Needs real sanitized fixtures before a support claim, and an adapter to add game knowledge

Adapters ​

A title with an adapter gets more than raw container access: the adapter recognises the package, names container kinds, describes what a blob holds, names orphaned data and adds its own write gate.

AdapterPackageServesWhat it adds
Abiotic FactorGamePassStorage.Adapters.AbioticFactor (built into wgs)PlayStack.AbioticFactor_3wcqaesafpzfyContainer classification (<World>-WC, <World>-WC-B, Profile*, Settings), the ABF_SAVE_VERSION table of contents read without decompressing, settings ini decoding, orphaned world names, and a gate that refuses while AbioticFactor* runs. World bodies are Oodle-compressed and Oodle is not bundled, so the adapter reports that instead of decoding.
CatalogGamePassStorage.Adapters.Catalog (built into wgs)The 76 families belowThe native layout for wgs unwrap and wgs wrap. Payload knowledge for Palworld (below); the rest are described generically, which names the class of any Unreal (GVAS) save. wgs refuses writes while the title's own package runs (the package gate, which every title gets).

Every other title is served by the generic adapter: list, diagnose, extract, put, delete, restore, export, import and a generic inspect (size, SHA-256, content sniffing) all work. To add a title see Game adapters (plugins).

The catalog ​

GamePassStorage.Adapters.Catalog knows, for each title below, how its containers map to the files the Steam or Epic version keeps, so wgs unwrap gives you the save as the game itself lays it out and wgs wrap puts edited files back. Package family names and mappings come from two independent community tools, XGP-save-extractor (E) and XgpSaveTools (T), both MIT; they agree on every title they share. XGP-save-extractor's README supplies the evidence column where it reports one. Titles marked H were also checked against a real store on a contributor's machine (structure, and for DOOM: The Dark Ages the SlotFile version and both checksum sidecars). No converted save has been loaded in-game by this repository. Every layout is tested against synthetic stores shaped as the sources describe.

TitlePackage familyLayoutDirectionEvidenceSource
Atomic HeartFocusHomeInteractiveSA.579645D26CFD_4hny5m903y3g0one-file:.savunwrap and wrapreported working on SteamE T
The Callisto ProtocolPUBGCorp.TheCallistoProtocolXB1_gsxfe54jwf950one-file:.savunwrap and wrapreported working on SteamE T
CelesteMattMakesGamesInc.Celeste_79daxvg0dq3v6one-fileunwrap and wrapunconfirmedE T
Final Fantasy XV39EA002F.FINALFANTASYXVforPC_n746a19ndrrjgone-fileunwrap and wrapreported working on SteamE T
Fuga: Melodies of Steel 2CyberConnect2Co.Ltd.FugaMelodiesofSteel2_zpv0gf6t8hz5rone-file:.savunwrap and wrapunconfirmedE T
High on Life2637SquanchGamesInc.HighonLife_mh7dg3tfmz2cjone-file:.savunwrap and wrapreported working on SteamE T
Hi-Fi RUSHBethesdaSoftworks.Hibiki_3275kfvn8vcwcone-file:.savunwrap and wrapreported working on SteamE T
Manor LordsHoodedHorse.ManorLords_znaey1dw2bdprone-file:.savunwrap and wrapreported working on SteamE T
MechWarrior 5: ClansPiranhaGamesInc.MechWarrior5Clans_skpx0jhaqqap2one-file:.savunwrap and wrapreported working on SteamE T
Remnant 2PerfectWorldEntertainment.GFREMP2_jrajkyc4tsa6wone-file:.savunwrap and wrapreported working on SteamE T
Solar AshAnnapurnaInteractive.SolarAsh_c96c51jf6wkvmone-file:.savunwrap and wrapreported working on SteamE T
Yakuza 0SEGAofAmericaInc.Yakuza0PC_s751p9cej88mtone-fileunwrap and wrapreported working on SteamE T
Trials of Mana39EA002F.TOMDF_n746a19ndrrjgone-file:.savunwrap and wrapreported working on SteamE
The Alters4063811bitstudios.TheAlters_gwy9gn5q9j1y6one-file:.savunwrap and wrapreported working on SteamE T
The Elder Scrolls IV: Oblivion RemasteredBethesdaSoftworks.ProjectAltar_3275kfvn8vcwcone-file:.savunwrap and wrapreported working on SteamE T
Indiana Jones and the Great CircleBethesdaSoftworks.ProjectRelic_3275kfvn8vcwcone-file:.savunwrap and wrapunconfirmedT
Lords of the FallenCIGamesS.A.LordsoftheFallen-PC_9609msxhzdsvjone-file:.savunwrap and wrapunconfirmedT
Railroads OnlineastragonSoftwareGmbH.RailroadsOnline_gq6wh0enzmg8jone-fileunwrap and wrapunconfirmedT
Yakuza KiwamiSEGAofAmericaInc.YakuzaKiwamiPC_s751p9cej88mtone-fileunwrap and wrapunconfirmedT
Solarpunkrokapublish.Solarpunk_6q4vfhsywtz4jone-file:.savunwrap and wrapunconfirmedT
TCG Card Shop SimulatorOPNEONGAMES.TCGCardShopSimulator_19j6by82ahhzrone-file:.jsonunwrap and wrapunconfirmedT
RematchSLOCLAP.ProjectRuntime_cse8z5zpmcvktone-file:.savunwrap and wrapunconfirmedT
Chained EchoesDECK13.ChainedEchoesRelease_rn1dn9jh54zftblobsunwrap and wrapunconfirmedE T
ChorusDeepSilver.UnleashedGoF_hmv7qcest37meblobs + .savunwrap and wrapreported working on SteamE T
HadesSupergiantGamesLLC.Hades_q53c1yqmx7phablobsunwrap and wrapreported working on SteamE T
Hypnospace OutlawNoMoreRobots.HypnospaceOutlaw_671zbmwb2bw9pblobsunwrap and wrapreported working on SteamE T
Just Cause 439C668CD.JustCause4-BaseGame_r7bfsmp40f67jblobsunwrap and wrapunconfirmedE T
Octopath Traveler39EA002F.FrigateMS_n746a19ndrrjgblobsunwrap and wrapunconfirmedE T
Remnant: From the AshesPerfectWorldEntertainment.RemnantFromtheAshes_jrajkyc4tsa6wblobs + .savunwrap and wrapunconfirmedE T
Sea of StarsSabotageStudio.SeaofStars_p3aneehax6csyblobs + .sosunwrap and wrapreported working on SteamE T
Totally Accurate Battle SimulatorLandfallGames.TotallyAccurateBattleSimulator_r2vq7k2y0v9ctblobsunwrap and wrapreported working on SteamE T
Chants of SennaarFocusHomeInteractiveSA.ChantsofSennaar-Windows_4hny5m903y3g0blobsunwrap and wrapunconfirmedT
AvowedMicrosoft.Avowed_8wekyb3d8bbweblobs + .savunwrap and wrapunconfirmedT
Citizen Sleeper 2: Starward VectorSurpriseAttackPtyLtd.CitizenSleeper2StarwardVector_8k24hnfn3vvj0blobsunwrap and wrapunconfirmedT
Crime Scene Cleaner5901F20F.CrimeSceneCleaner_t06nbjdc8fw86blobsunwrap and wrapunconfirmedT
SnowRunnerFocusHomeInteractiveSA.SnowRunnerWindows10_4hny5m903y3g0blobs + .cfgunwrap and wrapunconfirmedT
Monster Train69C22BB6.MonsterTrain_8ekbzbj4dakeecontainer-foldersunwrap and wrapreported working on SteamE T
Ninja Gaiden Sigma946B6A6E.NINJAGAIDENSIGMA_dkffhzhmh6pmycontainer-foldersunwrap and wrapreported working on SteamE T
Persona 5 RoyalSEGAofAmericaInc.F0cb6b3aer_s751p9cej88mtcontainer-foldersunwrap and wrapreported working on SteamE T
Persona 5 TacticaSEGAofAmericaInc.s0cb6b3ael_s751p9cej88mtcontainer-foldersunwrap and wrapreported working on SteamE T
SpiderHecktinyBuildGames.SpiderHeck_3sz1pp2ynv2xecontainer-foldersunwrap and wrapreported working on SteamE T
Wo Long: Fallen Dynasty946B6A6E.WoLongFallenDynasty_dkffhzhmh6pmycontainer-foldersunwrap and wrapunconfirmedE T
Dungeons of HinterbergCurveDigital.DungeonsOfHinterberg_1ezqdnbhnc70mcontainer-foldersunwrap and wrapunconfirmedT
Kingdom Come: Deliverance IIDeepSilver.77536C3FE941_hmv7qcest37mecontainer-foldersunwrap and wrapunconfirmedT
Phoenix PointSnapshotGames.PhoenixPoint_xxvrk32m0sthmcontainer-foldersunwrap and wrapunconfirmedT
The Outer Worlds 2Microsoft.OE-Arkansas_8wekyb3d8bbwecontainer-foldersunwrap and wrapunconfirmedT
The Lamplighters LeagueParadoxInteractive.ProjectWiseguy-PC_zfnrdv2de78nycontainer-foldersunwrap and wrapunconfirmedT
Quantum BreakMicrosoft.QuantumBreak_8wekyb3d8bbwecontainer-foldersunwrap and wrapunconfirmedT
DOOM EternalBethesdaSoftworks.DOOMEternal-PC_3275kfvn8vcwccontainer-folders, steam:<SteamID64>unwrap and wrapreported working on SteamE T
DOOM: The Dark AgesBethesdaSoftworks.ProjectTitan_3275kfvn8vcwccontainer-folders, steam:<SteamID64>unwrap and wrapreal store checked hereT H
PalworldPocketpairInc.Palworld_ad4psfrxyesvtpalworldunwrap and wrapreported working on SteamE T
Forza Horizon 5Microsoft.624F8B84B80_8wekyb3d8bbweforzaunwrap and wrapreported working on SteamE T
Lies of PNeowiz.3616725F496B_r4z3116tdh636lies-of-punwrap and wrapreported working on SteamE T
Coral IslandHumbleBundle.CoralIsland_q2mcdwmzx4qjabackup-folderunwrap and wrapreported working on SteamE T
Clair Obscur: Expedition 33KeplerInteractive.Expedition33_ymj30pw7xe604backup-folderunwrap and wrapreported working on SteamE T
Blue PrinceRawFury.BluePrince_9s0pnehqffj7tbackup-folderunwrap and wrapunconfirmedT
Arcade ParadiseWiredProductions.ArcadeParadise_hxzk6evwjr6syarcade-paradiseunwrap and wrapreported working on SteamE T
Railway Empire 2KalypsoMediaGroup.RailwayEmpire2Win_e60j8nnj33ga6railway-empire-2unwrap and wrapunconfirmedE T
State of Decay 2Microsoft.Dayton_8wekyb3d8bbwestate-of-decay-2unwrap onlyreported working on SteamE T
Cricket 24BigbenInteractiveSA.Cricket24Win10_tqjv3vrxr8ppwcricket-24unwrap and wrapreported working on SteamE T
Control505GAMESS.P.A.ControlPCGP_tefn33qh9azfccontrolunwrap and wrapreported working on EpicE T
StarfieldBethesdaSoftworks.ProjectGold_3275kfvn8vcwcstarfieldunwrap onlyreported working on SteamE T
Fallout 4BethesdaSoftworks.Fallout4-CoreGame_3275kfvn8vcwcfallout-4unwrap onlyunconfirmedT
One Lonely OutpostFreedomGames.OneLonelyOutpostGame_0c9x75n11d8wgone-lonely-outpostunwrap onlyreported working on SteamE T
GalacticareTheCultGamesLtd.Galacticare_vnassb3anythcgalacticareunwrap and wrapunconfirmedT
BalatroPlayStack.Balatro_3wcqaesafpzfybalatrounwrap and wrapunconfirmedT
Hollow Knight: SilksongTeamCherry.HollowKnightSilksong_y4jvztpgccj42silksongunwrap and wrapunconfirmedT
Metaphor: ReFantazioSEGAofAmericaInc.Pae22b02y_s751p9cej88mtmetaphor-refantaziounwrap and wrapunconfirmedT
Ninja Gaiden 2 Black946B6A6E.NINJAGAIDEN2Black_dkffhzhmh6pmyninja-gaiden-2-blackunwrap and wrapunconfirmedT
ScornKeplerInteractive.1439274AB3A46_ymj30pw7xe604scornunwrap and wrapunconfirmedT
Roadside ResearchOroInteractive.RoadsideResearch_z7bgc74zqm87rall-blobs-flatunwrap and wrapunconfirmedT
Persona 3 ReloadSEGAofAmericaInc.L0cb6b3aea_s751p9cej88mtpersona-3-reloadunwrap and wrapunconfirmedT
Like a Dragon: Ishin!SEGAofAmericaInc.ProjectMacan_s751p9cej88mtlike-a-dragon:pngunwrap and wrapunconfirmedE T
Like a Dragon Gaiden: The Man Who Erased His NameSEGAofAmericaInc.l1b05f489e_s751p9cej88mtlike-a-dragon:ddsunwrap and wrapunconfirmedE T
Yakuza: Like a DragonSEGAofAmericaInc.Yazawa_s751p9cej88mtlike-a-dragon:ddsunwrap and wrapunconfirmedE T
Call of Duty (HQ)38985CA0.COREBase_5bkah9njm3e9gone-fileunwrap and wrapreal store checked hereH

DOOM: The Dark Ages and DOOM Eternal keep a .checksum beside each game_duration.dat (the data's MD5 with its four u32 words XORed, 8 and 4 bytes). The adapter recomputes it on every write, whether by put --blob, import, wrap or the library, so an edit never leaves a stale checksum. --layout steam:<SteamID64> unwraps each slot's four files AES-GCM encrypted for that Steam account (SlotFile version 11 for The Dark Ages), and wraps a Steam slot back into an existing Game Pass slot (version 10), as XgpSaveTools does.

Palworld also has payload knowledge: wgs inspect reads its .sav wrapper (PlZ, save type 0x31 zlib or 0x32 zlib twice, optionally behind a CNK prefix, as palworld-save-tools reads it, MIT) and names the GVAS class inside, and its codec decodes a save to the GVAS bytes for an Unreal save editor. Re-wrapping is not offered yet: which save type each file must use is not established.

Layout notes:

  • one-file[:suffix] takes single-blob containers only. The source tool takes the first blob of any container; a multi-blob container here is left out and reported instead.
  • blobs takes the store's first container, as the source does; other containers are left out.
  • Lies of P drops a numeric prefix, so wrapping only replaces existing saves. Railway Empire 2 leaves the description blob out; an existing container keeps its own, a new one has none.
  • Starfield, State of Decay 2 and One Lonely Outpost lose what wrapping would need (part sizes, blob path prefixes, the JSON envelope), so they only unwrap.

Reported not to move file for file (per XGP-save-extractor): A Plague Tale: Requiem, ARK: Survival Ascended, Chivalry 2, Death's Door, Forza Horizon 4, Neon White and Tinykin. It also lists the Like a Dragon titles and Persona 3 Reload as incompatible, while XgpSaveTools maps them; the catalog includes them, marked unconfirmed, with that note. Not yet in the catalog: Brotato (its saves are a bundle that needs a parser) and Dragon Ball Xenoverse 2 (XgpSaveTools only exports it raw). Newer GDK titles keep file-oriented saves under XboxGames\GameSave\pgs, a different layer from wgs. wgs pgs reads it (find, list, extract, back up; no writes); the only game id known so far is Forza Horizon 6's (16D460).

A title not in the catalog still unwraps with container-folders (lossless for any store) or a layout named with --layout. To promote a catalog title to a full adapter (payload knowledge, a process gate), contribute a sanitized store; see below.

What "verified" means here ​

Abiotic Factor is the only title verified so far. The format knowledge in this library comes from real Abiotic Factor stores analysed byte by byte, cross-checked against independent implementations (see the format reference).

Other Game Pass titles use the same container layer, so they may well work, but that is not evidence. The library's own in-memory tests exercise the API boundary with synthetic stores; they do not prove that a particular game's layout is supported. Multi-blob manifests are verified against one real store (see the format reference); different manifest versions are unseen. WgsStore reports layouts it does not understand as UnsupportedLayout rather than guessing.

Trying it on another title ​

Safe, read-only steps first:

console
wgs diagnose <store>
wgs list <store>
wgs backup <store> <backup-folder>

If diagnose opens the store and reports nothing alarming, reading with wgs extract is the next step. Only try a write on a title you have backed up, and remember that whether Xbox accepts a rewritten container in-game needs a real sync on a real machine. Use wgs snapshot and wgs compare around that sync to record what happened.

Contributing fixtures ​

A sanitized real store is the most valuable contribution. To make one:

  1. Close the game and the Xbox app.
  2. Sanitize it with wgs sanitize <store> <out-folder>. It copies containers.index and every container.N byte for byte, zeroes the index's root GUID (its meaning is undocumented), and replaces every blob file with zero bytes of the same length. Name the output folder something neutral such as 0009000000000002_00000000000000000000000000000001: the store's own folder name is your account id (XUID). The index still records the package family name, container names and ETags; check that you are happy to share those.
  3. Confirm wgs diagnose still opens the sanitized copy.
  4. Open an issue or pull request at ChristopherVR/GamePassStorage with the game name, the platform (Xbox app or Microsoft Store), whether you saw multiple blobs per container, and what you verified (read only, or a round trip in-game).

Tests skip gracefully when a fixture is absent, so fixtures are always optional for contributors. See Contributing.

Released under the Apache-2.0 license. Not affiliated with Microsoft.