{
  "schemaVersion": 1,
  "dataRevision": "c29d77ba0f3540c8f11a814a7293395a4ad53b077097e5433f992ee638c55712",
  "specificationUrl": "https://playable.wtf/catalog/spec/",
  "scope": "Public source-reviewed listings, excluding thin, unavailable, video-only and restricted entries. This is a subset of catalog/v1.json, not a gameplay certification.",
  "rights": {
    "metadata": "Playable assembles project identities, factual classifications, original summaries and source references. No blanket open-data license has been granted for this compilation.",
    "thirdParty": "Game code, game files, images, footage, project documentation and third-party text retain their own rights and terms. Downloads contain no media or game files; source links do not grant permission to copy linked material.",
    "reuse": "Use the downloads to inspect and reference the catalog with canonical Playable and original project citations. Check applicable rights before redistributing protected text or compiling a derivative dataset. Bulk redistribution or commercial licensing of Playable-authored material requires a separate rights decision."
  },
  "counts": {
    "projects": 176,
    "guides": 21
  },
  "games": [
    {
      "id": "project:aabrole-huntersrecomp",
      "slug": "aabrole-huntersrecomp",
      "title": "Metroid Prime Hunters",
      "project": "Hunters Recomp for AYN Thor",
      "canonicalUrl": "https://playable.wtf/games/aabrole-huntersrecomp/",
      "originals": [
        {
          "id": "metroidprimehunters",
          "name": "Metroid Prime Hunters",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Shooter",
      "summary": "A distinct Android adaptation for the AYN Thor’s dual screens.",
      "editorial": {
        "sections": [
          {
            "id": "play",
            "title": "A two-screen handheld take on Hunters",
            "kind": "project",
            "paragraphs": [
              "Hunters Recomp adapts mstan’s desktop project for the AYN Thor. The main display carries the action while the second panel retains the DS touchscreen, so menus and stylus interaction do not have to compete for space with the aiming view. Twin-stick controls put movement on the left stick and aiming on the right.",
              "Triggers fire and scan-fire, A jumps, B enters morph ball and X selects missiles. R3 switches to the scan visor, while the touchscreen still accepts stylus input. This arrangement suits players who want familiar shooter controls while keeping the game’s two-screen identity. Every action can be rebound."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Match the ROM and start at a sensible resolution",
            "kind": "practical",
            "paragraphs": [
              "Install the APK, choose Locate ROM and select your own USA revision-0 cartridge dump: AMHE, 64 MiB. Revision 1, other regions and trimmed dumps are rejected. The app copies and validates the ROM before play.",
              "The creator recommends 3× internal resolution for the tested Thor configuration. Going to 4× can increase GPU waiting and audio crackle, so sharper output is not always the better handheld setting. If play stutters, briefly drop to 2× to see whether graphics load is the cause. Other ARM64 Android 11+ dual-screen devices are a target, but only the Thor is tested."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "saves",
            "title": "Keep progress and treat achievements separately",
            "kind": "practical",
            "paragraphs": [
              "Save at the ship as in the game. The save lives at Android/data/com.thor.mph/files/mph.sav and survives an update installed over the existing app. Hold Select to fast-forward cinematics or use Start to skip FMVs; those shortcuts are different from saving progress.",
              "RetroAchievements integration has a revision mismatch: the service’s listed hash is revision 1, while this port runs revision 0. An optional switch can report the linked hash, but it is off by default and carries its own explanation. Read that choice before enabling achievements, rather than assuming signing in resolves the cartridge-version issue."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Hunters Recomp for AYN Thor · project documentation",
            "url": "https://github.com/aabrole/HuntersRecomp"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/aabrole/HuntersRecomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own USA revision 0 Metroid Prime Hunters ROM (AMHE, 64 MiB).",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/aabrole/HuntersRecomp"
        },
        "setup": {
          "answer": "Follow the project’s AYN Thor APK and ROM setup instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/aabrole/HuntersRecomp"
        },
        "devices": {
          "answer": "Targets the AYN Thor Android handheld; other devices are not confirmed.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/aabrole/HuntersRecomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/aabrole/HuntersRecomp"
    },
    {
      "id": "project:alexbatalov-fallout1-ce",
      "slug": "alexbatalov-fallout1-ce",
      "title": "Fallout",
      "project": "Fallout Community Edition",
      "canonicalUrl": "https://playable.wtf/games/alexbatalov-fallout1-ce/",
      "originals": [
        {
          "id": "fallout",
          "name": "Fallout",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine recreation",
      "genre": "RPG",
      "summary": "A native reimplementation of Fallout with desktop and mobile packages.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A role-playing journey beyond the Vault",
            "kind": "background",
            "paragraphs": [
              "The original Fallout begins with a practical emergency: your underground community needs a replacement water-purification chip. Leaving the Vault introduces a wasteland of radiation, mutants and competing groups, with your character’s skills shaping how you handle encounters. Combat is turn-based, giving you time to choose attacks rather than asking for fast aiming.",
              "The appeal is building a character whose strengths affect both conflict and non-combat problems. Experience comes from more than fighting, so exploration and solving situations are part of progression. Community Edition retains that original gameplay rather than converting Fallout into a different style of action game."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "A replacement engine for your copy",
            "kind": "project",
            "paragraphs": [
              "Fallout Community Edition supplies a native replacement executable with bug fixes and selected quality-of-life changes. On Windows it sits in the existing Fallout folder in place of the original program; Linux and macOS builds also use original game data. It is separate from Fallout 2 Community Edition and does not make the two games interchangeable."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "screen-and-sound",
            "title": "Make the interface readable before you begin",
            "kind": "practical",
            "paragraphs": [
              "Window size and fullscreen behavior are configured in f1_res.ini. On tablets the project recommends using the logical display size rather than the screen’s raw pixel count; on phones it suggests starting from a 480-pixel height and matching the aspect ratio. This helps avoid shrinking the already detailed interface unnecessarily.",
              "If music is missing, check music_path1 in fallout.cfg against the actual sound/music folder. The README calls out filename case as significant: asset paths must match, and the ACM music filenames use uppercase. A correctly copied game can still need those path adjustments."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "mobile-session",
            "title": "Touch input behaves like a trackpad",
            "kind": "practical",
            "paragraphs": [
              "Mobile input moves a cursor rather than replacing every action with a large touch button. One finger moves and clicks; two fingers change cursor mode or scroll. That makes precise inventory and world interactions different from tapping directly on an object.",
              "Android release and debug packages have separate assets and saves. Stick to the release app for a continuing campaign unless you deliberately want a separate testing installation. On iOS, the initial missing-data message is part of the documented file-sharing setup; copy the owned assets before expecting the game to start."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Fallout Community Edition · setup and configuration",
            "url": "https://raw.githubusercontent.com/alexbatalov/fallout1-ce/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "Fallout · original game description",
            "url": "https://www.gog.com/en/game/fallout"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/alexbatalov/fallout1-ce/releases/tag/v1.1.0"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "An owned installation supplies master.dat, critter.dat, and the data directory. Keep filenames lowercase for the documented mobile setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alexbatalov/fallout1-ce/HEAD/README.md"
        },
        "setup": {
          "answer": "Download the platform package and place the replacement executable in your Fallout installation. Mobile builds import the game-data folder through the documented platform workflow.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alexbatalov/fallout1-ce/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows, Linux, macOS, Android and iOS are documented. macOS requires 10.11 or later.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alexbatalov/fallout1-ce/HEAD/README.md"
        },
        "controls": {
          "answer": "Desktop play retains mouse-oriented input. Mobile controls use a virtual trackpad: one finger moves the pointer, one-finger tap clicks, and two-finger tap changes cursor mode.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alexbatalov/fallout1-ce/HEAD/README.md"
        },
        "issues": {
          "answer": "Precise mouse-oriented actions can be awkward on touchscreens. Release and debug Android apps keep separate data and saves.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alexbatalov/fallout1-ce/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/alexbatalov/fallout1-ce"
    },
    {
      "id": "project:alexbatalov-fallout2-ce",
      "slug": "alexbatalov-fallout2-ce",
      "title": "Fallout 2",
      "project": "Fallout 2 Community Edition",
      "canonicalUrl": "https://playable.wtf/games/alexbatalov-fallout2-ce/",
      "originals": [
        {
          "id": "fallout2",
          "name": "Fallout 2",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine recreation",
      "genre": "RPG",
      "summary": "A native reimplementation of Fallout 2 with desktop and mobile packages.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Return to the wasteland with a different goal",
            "kind": "background",
            "paragraphs": [
              "Fallout 2 sends a new protagonist out to find a Garden of Eden Creation Kit and save their village. Its setting is a later chapter of the same post-nuclear world, where survival depends on a character’s skills and traits as well as the people they encounter. The attraction is shaping that character through a long role-playing journey rather than following a fixed action hero."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Original gameplay, selectively modernized",
            "kind": "project",
            "paragraphs": [
              "Community Edition recreates Fallout 2 for modern systems while retaining its original gameplay and adding engine fixes and selected conveniences. It can replace the Windows executable in an owned installation, or use those assets on Linux, macOS, Android and iOS. This is the Fallout 2 engine: the separate first-game Community Edition has its own installation.",
              "The distinction matters most for mods. Restoration Project, Fallout Et Tu and Olympus 2207 are not supported. The developer describes original Nevada and Sonora versions as likely to work when they avoid extended Sfall features, without confirming a complete playthrough. A mod working with the old Windows executable does not automatically make it compatible here."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "mobile-and-display",
            "title": "Plan for a cursor-driven interface",
            "kind": "practical",
            "paragraphs": [
              "The phone and tablet controls work like a trackpad: moving a finger moves the pointer, a one-finger tap clicks, and two-finger gestures change cursor mode or scroll. This preserves the interface’s many precise interactions but rewards a readable screen size. Adjust f2_res.ini for window dimensions and fullscreen mode; the project recommends logical tablet resolution rather than raw display pixels.",
              "Android’s first import can take much longer for a localized installation or a mod containing many loose files. Release and debug apps also keep separate saves and assets, so changing app type is not a seamless campaign transfer."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "configuration",
            "title": "Treat advanced settings as selective support",
            "kind": "limitations",
            "paragraphs": [
              "fallout2.cfg controls the original asset and music paths, including their filename case. ddraw.ini exposes Sfall-style options, but only a subset is implemented in Community Edition. Start with the standard game and its documented configuration before expecting an advanced override or total conversion to behave as it does in another engine."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Fallout 2 Community Edition · project documentation",
            "url": "https://raw.githubusercontent.com/alexbatalov/fallout2-ce/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "Fallout 2 Community Edition · original game publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=38410&l=english"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/alexbatalov/fallout2-ce/releases/tag/v1.3.0"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "An owned installation supplies master.dat, critter.dat, patch000.dat, and the data directory. Keep filenames lowercase for the documented mobile setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alexbatalov/fallout2-ce/HEAD/README.md"
        },
        "setup": {
          "answer": "Download the platform package and place the replacement executable in your Fallout 2 installation. Mobile builds import the game-data folder through the documented platform workflow.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alexbatalov/fallout2-ce/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows, Linux, macOS, Android and iOS are documented. macOS requires 10.11 or later.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alexbatalov/fallout2-ce/HEAD/README.md"
        },
        "controls": {
          "answer": "Desktop play retains mouse-oriented input. Mobile controls use a virtual trackpad: one finger moves the pointer, one-finger tap clicks, and two-finger tap changes cursor mode.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alexbatalov/fallout2-ce/HEAD/README.md"
        },
        "issues": {
          "answer": "Restoration Project, Fallout Et Tu and Olympus 2207 are not supported; other total conversions have incomplete or untested compatibility.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alexbatalov/fallout2-ce/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/alexbatalov/fallout2-ce"
    },
    {
      "id": "project:alistert-openjazz",
      "slug": "alistert-openjazz",
      "title": "Jazz Jackrabbit",
      "project": "OpenJazz browser build",
      "canonicalUrl": "https://playable.wtf/games/alistert-openjazz/",
      "originals": [
        {
          "id": "jazzjackrabbit",
          "name": "Jazz Jackrabbit",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Platformer",
      "summary": "The OpenJazz engine compiled for the browser, linked by its maintainers.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Jazz Jackrabbit’s fast platform shooting",
            "kind": "background",
            "paragraphs": [
              "Epic’s original Jazz Jackrabbit is a colourful PC platform game built around speed and shooting. OpenJazz’s weapon selection includes the Blaster, Toaster, Missile, Bouncer and TNT; movement also includes jumping and swimming. Choosing a weapon and lining up a jump are both part of navigating its levels.",
              "This is the first Jazz Jackrabbit’s engine family. Jazz² Resurrection is a separate project for the sequel, with a different episode import system. A data set intended for one should not be treated as a substitute for the other."
            ],
            "sourceIds": [
              "project",
              "manual"
            ]
          },
          {
            "id": "this-version",
            "title": "An engine shared with native OpenJazz",
            "kind": "project",
            "paragraphs": [
              "The maintainers link this browser build from OpenJazz's main repository. OpenJazz replaces the old executable so that original Jazz data can run on modern systems. The hosted build's own repository names three supplied shareware sets: Jazz Jackrabbit Shareware 1.1, Holiday Hare and Holiday Hare '95. These provide a browser starting point without presenting the complete retail game as bundled content.",
              "The broader engine manual lists additional compatible data sets, including the CD's Lost Episodes and the Complete edition. That native-engine compatibility list is wider than the hosted shareware inventory. Use the main project's setup documentation when exploring an owned retail release; the browser host does not document an equivalent retail-import flow."
            ],
            "sourceIds": [
              "project",
              "manual",
              "web-data"
            ]
          },
          {
            "id": "controls",
            "title": "Set jump and fire before starting a run",
            "kind": "practical",
            "paragraphs": [
              "Use Enter to select menu items and Escape to go back. In Setup options, check the bindings for movement, jump and fire: OpenJazz defaults vary by platform, so remembered DOS or Windows keys may not match this build. The number keys 1–5 select the five weapon types when available, and P pauses.",
              "The manual’s controller instructions concern devices recognised by SDL and can require manual mapping. They should not be read as a guarantee for every controller in the hosted browser version. A keyboard is the clearest starting point while checking the in-game bindings."
            ],
            "sourceIds": [
              "manual"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenJazz · engine README",
            "url": "https://github.com/AlisterT/openjazz"
          },
          {
            "id": "manual",
            "label": "OpenJazz · player manual",
            "url": "https://raw.githubusercontent.com/AlisterT/openjazz/HEAD/res/unix/OpenJazz.6.adoc"
          },
          {
            "id": "host",
            "label": "OpenJazz · hosted browser build",
            "url": "https://openjazz.github.io/"
          },
          {
            "id": "web-data",
            "label": "OpenJazz web build · supplied shareware inventory",
            "url": "https://raw.githubusercontent.com/openjazz/openjazz.github.io/master/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://openjazz.github.io/"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The browser host packages Jazz Jackrabbit Shareware 1.1, Holiday Hare and Holiday Hare ’95. These shareware episodes are separate from the full retail game data required by other OpenJazz installations.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/openjazz/openjazz.github.io/master/README.md"
        },
        "setup": {
          "answer": "Open the maintainer-linked web build. Use the project manual for controls and the repository for native alternatives.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/AlisterT/openjazz/HEAD/README.md"
        },
        "devices": {
          "answer": "An Emscripten browser build is linked by the project; no device/browser compatibility matrix is established by the reviewed web page.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/AlisterT/openjazz/HEAD/README.md"
        },
        "controls": {
          "answer": "Use Enter to choose menu options, Escape to go back and P to pause. Movement, jump and fire bindings can be changed under Setup options; defaults vary by platform.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/AlisterT/openjazz/HEAD/res/unix/OpenJazz.6.adoc"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/AlisterT/openjazz"
    },
    {
      "id": "project:andrewnakas-skate3-android",
      "slug": "andrewnakas-skate3-android",
      "title": "Skate 3",
      "project": "Skate 3 for Android",
      "canonicalUrl": "https://playable.wtf/games/andrewnakas-skate3-android/",
      "originals": [
        {
          "id": "skate3",
          "name": "Skate 3",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Sports",
      "summary": "An Android shell for the native Skate 3 recompilation.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "The original city as a skating playground",
            "kind": "background",
            "paragraphs": [
              "Skate 3 combines street spots, plazas and parks with a career built around a skating team. Practicing a trick and fitting it into a longer line is as much the attraction as completing a challenge. Those are the original game’s priorities; its publisher’s online team features do not establish online service support in this Android adaptation."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "android-edition",
            "title": "Skate’s retail systems in an Android shell",
            "kind": "project",
            "paragraphs": [
              "This Android project hosts an ARM64 recompilation of Skate 3, with the original skating, physics and career code and a native Vulkan scene renderer. It is different from the Rust/Bevy engine rewrite: the Android app builds on the Xbox 360 recompilation lineage, including Alex McHugh’s engine and the ReXGlue runtime.",
              "The repository itself contains the Android activity, setup interface and platform scripts. The large game engine lives in a separate source tree. That separation matters to someone considering a source build: compiling this app shell alone does not recreate all of the engine components."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installing-data",
            "title": "Prepare the phone for the game data",
            "kind": "practical",
            "paragraphs": [
              "The release APK contains no game content. In the app, choose Install from a disc image and supply your own Skate 3 Xbox 360 image and Title Update 3 through the system document picker. The installation extracts about 6 GB into the app’s directory, so allow space for both the source image and prepared data while setting up.",
              "The documented alternative copies an already extracted game folder over a cable. That route is useful for repeated development installations, while the on-device importer avoids a manual file layout for an ordinary first setup. Neither path downloads the game for you."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "graphics-driver",
            "title": "The GPU driver is part of compatibility",
            "kind": "limitations",
            "paragraphs": [
              "The app targets ARM64 and Vulkan. Its creator’s measurement device is a Galaxy S23 FE with an Adreno GPU; those results are not a performance promise for every Android handset. Shared builds also differ from a CPU-tuned development preset.",
              "The launcher can select a compatible Mesa Turnip driver instead of the device’s default driver. Applying a driver change restarts the app because the choice lasts for the process. Leave the default alone unless troubleshooting a specific problem, and use the creator’s supported import route. This is a real platform distinction, not a reason to assume the iOS port’s graphics settings carry over unchanged."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Skate 3 for Android · project documentation",
            "url": "https://github.com/andrewnakas/skate3-android"
          },
          {
            "id": "original",
            "label": "EA · Skate 3",
            "url": "https://www.ea.com/games/skate/skate-3"
          }
        ]
      },
      "families": [
        {
          "id": "skate",
          "title": "Skate",
          "indexUrl": "https://playable.wtf/families/#family-skate",
          "guideUrl": "https://playable.wtf/guides/skate-browser-vs-native-ports/",
          "choices": [
            {
              "slug": "skate-3-native",
              "label": "Desktop disc installer",
              "reason": "A release-based ISO installer and controller input; Windows is the maintainer’s most-tested platform.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-native/"
            },
            {
              "slug": "skate-3-browser",
              "label": "Prepared-data browser experiment",
              "reason": "Connect a compatible converted copy through Game Server; the public launcher supplies no converter.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-browser/"
            },
            {
              "slug": "andrewnakas-skate3-android",
              "label": "Android installation",
              "reason": "The native app can extract your own disc image and Title Update 3 on the phone.",
              "canonicalUrl": "https://playable.wtf/games/andrewnakas-skate3-android/"
            },
            {
              "slug": "skate-3-rust-engine",
              "label": "Skating rewrite",
              "reason": "A gamepad-led Windows experiment for tricks and maps, with unfinished original-game parity.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-rust-engine/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/andrewnakas/skate3-android/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Skate 3 Xbox 360 disc image and Title Update 3.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/andrewnakas/skate3-android"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/andrewnakas/skate3-android"
        },
        "devices": {
          "answer": "See the creator’s platform-specific instructions. Native installation/building is required; this is not a mobile browser game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/andrewnakas/skate3-android"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/andrewnakas/skate3-android"
    },
    {
      "id": "project:andrewnakas-skate3-ios-setup",
      "slug": "andrewnakas-skate3-ios-setup",
      "title": "Skate 3",
      "project": "Skate 3 for iOS",
      "canonicalUrl": "https://playable.wtf/games/andrewnakas-skate3-ios-setup/",
      "originals": [
        {
          "id": "skate3",
          "name": "Skate 3",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Sports",
      "summary": "An iOS setup project for the native recompilation.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "From learning a trick to building a line",
            "kind": "background",
            "paragraphs": [
              "The original Skate 3 gives its skating room to breathe in Port Carverton. Skate.School teaches stick skills, while challenges and career progression supply goals beyond a clean landing. Revisiting a spot invites a more confident run. The iOS adaptation has separate compatibility requirements; original online competitions do not establish the same service on a phone."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "ios-route",
            "title": "Two routes to the same iPhone installation",
            "kind": "project",
            "paragraphs": [
              "Skate 3 for iOS adapts the recompilation to Apple’s mobile platform. The project offers an unsigned IPA for sideloading as well as a build script that prepares the app on your Mac from your own disc image. The latter checks tools, extracts data, recompiles, signs and installs; it is a development workflow rather than a browser launcher.",
              "On-screen controls appear when no controller is attached, making a gamepad optional in the documented setup. The creator reports performance on particular iPhones, but that is different from a guarantee for every device, graphics setting or busy scene."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "disc-and-update",
            "title": "Both the game and Title Update 3 are needed",
            "kind": "practical",
            "paragraphs": [
              "The app supplies neither the original disc content nor its required title update. After first launching the app, place your extracted game files in the Skate 3 game folder in Files. The expected contents include default.xex and data, taking roughly 6 GB.",
              "Title Update 3 is a separate required input. Copy the correct update into the app’s Documents area and select it in the update installer. The project explains that its code was built against that update and that the former in-app download route does not work on iOS. Having the disc files alone is therefore insufficient."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "signing-and-build",
            "title": "Plan for signing as well as storage",
            "kind": "practical",
            "paragraphs": [
              "The sideloaded IPA is signed with your own Apple ID. The project documents a seven-day refresh cycle for free-account signing, so an app that stops opening after that interval may need its signature refreshed rather than a fresh game-data import.",
              "Building from source needs full Xcode on a Mac, CMake and Ninja, the engine checkout with its submodules and space for extracted data and generated code. The script adjusts parallel build work to available memory. Choose the prebuilt-app or source route first, then follow its own instructions; installing the app and providing the game are separate steps in either case."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Skate 3 for iOS · project documentation",
            "url": "https://github.com/andrewnakas/skate3-ios-setup"
          },
          {
            "id": "original",
            "label": "EA · Skate 3",
            "url": "https://www.ea.com/games/skate/skate-3"
          }
        ]
      },
      "families": [
        {
          "id": "skate",
          "title": "Skate",
          "indexUrl": "https://playable.wtf/families/#family-skate",
          "guideUrl": "https://playable.wtf/guides/skate-browser-vs-native-ports/",
          "choices": [
            {
              "slug": "skate-3-native",
              "label": "Desktop disc installer",
              "reason": "A release-based ISO installer and controller input; Windows is the maintainer’s most-tested platform.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-native/"
            },
            {
              "slug": "skate-3-browser",
              "label": "Prepared-data browser experiment",
              "reason": "Connect a compatible converted copy through Game Server; the public launcher supplies no converter.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-browser/"
            },
            {
              "slug": "andrewnakas-skate3-android",
              "label": "Android installation",
              "reason": "The native app can extract your own disc image and Title Update 3 on the phone.",
              "canonicalUrl": "https://playable.wtf/games/andrewnakas-skate3-android/"
            },
            {
              "slug": "skate-3-rust-engine",
              "label": "Skating rewrite",
              "reason": "A gamepad-led Windows experiment for tricks and maps, with unfinished original-game parity.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-rust-engine/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/andrewnakas/skate3-ios-setup/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Supply extracted files from your own Xbox 360 Skate 3 disc and Title Update 3. Neither is included in the app.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/andrewnakas/skate3-ios-setup"
        },
        "setup": {
          "answer": "Choose the unsigned IPA and a supported sideloading tool, or build from source on a Mac. Sign with your own Apple ID, then import the game files and Title Update 3.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/andrewnakas/skate3-ios-setup"
        },
        "devices": {
          "answer": "See the creator’s platform-specific instructions. Native installation/building is required; this is not a mobile browser game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/andrewnakas/skate3-ios-setup"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/andrewnakas/skate3-ios-setup"
    },
    {
      "id": "project:arcanite24-pinyon-shift",
      "slug": "arcanite24-pinyon-shift",
      "title": "Forza Horizon",
      "project": "Pinyon Shift",
      "canonicalUrl": "https://playable.wtf/games/arcanite24-pinyon-shift/",
      "originals": [
        {
          "id": "forzahorizon",
          "name": "Forza Horizon",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Racing",
      "summary": "A launcher that builds Forza Horizon from your own Xbox 360 disc.",
      "editorial": {
        "sections": [
          {
            "id": "build-on-your-pc",
            "title": "A launcher that builds your own copy",
            "kind": "project",
            "paragraphs": [
              "Pinyon Shift brings the Xbox 360 Forza Horizon to desktop systems by compiling the game locally from your own disc. The download is a launcher and toolchain workflow, not a prebuilt game executable. It verifies the source data, obtains build tools and creates the application on your machine.",
              "The project calls the result a playable preview and warns about rendering bugs and slowdowns. Its attraction is access to native display and control settings around the original racing game, including higher frame-rate targets, ultrawide output and internal-resolution choices."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "first-build",
            "title": "Set aside time and space for the first build",
            "kind": "practical",
            "paragraphs": [
              "The supported source is the USA retail disc, serial MS-2505 and title ID 4D5309C9. Drop your ISO into the launcher or select an unmodified extracted folder, confirm ownership and choose Verify and build. The documented first build takes roughly 20–60 minutes and needs about 30 GB of free disk space.",
              "Windows, Linux/Steam Deck and Apple silicon macOS have different launcher packages. Keep the launcher open through setup and use its Play action afterward. The Android route is an alpha built from the working PC installation, with separate Android 13, Vulkan 1.3 and device requirements."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "driving-settings",
            "title": "Tune the drive, then add optional content",
            "kind": "practical",
            "paragraphs": [
              "F6 opens in-game settings. The project offers 60 and 120 frame-per-second targets, resolution scaling, antialiasing and optional motion blur or depth of field. It also documents photo export, save backups, personal music and an optional camera that reacts to the car. These choices let you prioritize clarity, presentation or performance.",
              "Owned DLC packages are verified on import. Car packs are supported, while Rally and 1000 Club use the optional title-update-v4 build. Check that update choice before expecting those add-ons to appear; a base build and an updated DLC setup are different configurations."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "preview-limits",
            "title": "Check the GPU before investing in setup",
            "kind": "limitations",
            "paragraphs": [
              "The desktop requirements specify Vulkan 1.3, and the maintainer distinguishes tested NVIDIA hardware from AMD and Intel GPUs that are not yet qualified. The Steam Deck and Android performance figures in the documentation describe particular tested or simulated setups, not a universal frame-rate promise.",
              "Start with a suitable preset and resolve rendering or stability problems before increasing internal resolution. Keep save backups when experimenting with mods or the trainer, and use the project’s release notes to understand what changed between previews."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Pinyon Shift · project documentation",
            "url": "https://github.com/arcanite24/pinyon-shift"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/arcanite24/pinyon-shift/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Forza Horizon Xbox 360 disc.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/arcanite24/pinyon-shift"
        },
        "setup": {
          "answer": "Use the project’s launcher and documentation to build locally from your disc.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/arcanite24/pinyon-shift"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/arcanite24/pinyon-shift"
    },
    {
      "id": "project:arx-arxlibertatis",
      "slug": "arx-arxlibertatis",
      "title": "Arx Fatalis",
      "project": "Arx Libertatis",
      "canonicalUrl": "https://playable.wtf/games/arx-arxlibertatis/",
      "originals": [
        {
          "id": "arxfatalis",
          "name": "Arx Fatalis",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "RPG",
      "summary": "Arx Fatalis on modern systems through the released source engine.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "An underground world you can experiment with",
            "kind": "background",
            "paragraphs": [
              "Arx Fatalis is a first-person role-playing game set beneath a world that has lost its sun. Humans and other peoples occupy caves, mines and settlements under increasing pressure, while the threat of Akbaa drives the central quest. Character skills cover different approaches, including weapons, stealth and magic.",
              "Spellcasting is especially distinctive: the original game asks you to draw runes with the mouse and combine them into spells. Exploration, puzzles and choices are part of the same adventure. It suits players interested in interacting with a place and experimenting with their character rather than following only a sequence of battles."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "The released engine on modern platforms",
            "kind": "project",
            "paragraphs": [
              "Arx Libertatis is based on Arkane’s released Arx Fatalis source code. It runs the original game using a maintained native engine; the commercial world, dialogue and other assets still come from the game data. The project also supports the PC demo, which is a different content scope from a full installation.",
              "Its renderer uses OpenGL, while sound uses OpenAL. The published documentation separates ordinary installation from compiling the engine and optional development tools, so players choosing a release package do not need to treat the entire compiler dependency list as a play checklist."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "data-and-language",
            "title": "Choose the correct PC data set",
            "kind": "practical",
            "paragraphs": [
              "Use the full PC version or a supported demo, following the data guide for the language-specific PAK files. The Xbox edition is not a substitute. On case-sensitive systems, filename case matters; the arx-install-data helper can install resources, normalize names and check that the required files are present.",
              "If the game cannot find its resources, arx --list-dirs shows the locations it searches. The engine also checks beside the executable. This is more useful than copying another set of files into an arbitrary folder and hoping the launcher will discover it."
            ],
            "sourceIds": [
              "project",
              "data"
            ]
          },
          {
            "id": "your-progress",
            "title": "Know where the engine stores your adventure",
            "kind": "practical",
            "paragraphs": [
              "Configuration and save files live in the platform’s user directories, separate from the original data. The README identifies Saved Games on modern Windows, Application Support on macOS and the corresponding user directories on Linux. Keep those files when moving an installation. The project also includes a save tool for specific older-build issues; use its documented purpose instead of treating it as a general save converter."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Arx Libertatis · project documentation",
            "url": "https://raw.githubusercontent.com/arx/ArxLibertatis/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "Arx Libertatis · original game publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=1700&l=english"
          },
          {
            "id": "data",
            "label": "Arx Libertatis · original game data guide",
            "url": "https://wiki.arx-libertatis.org/Getting_the_game_data"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/arx/ArxLibertatis/releases/tag/1.2.1"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Either the full PC Arx Fatalis data or the supported demo. The Xbox edition is not the required source. Use the project data guide for language-specific PAK requirements.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wiki.arx-libertatis.org/Getting_the_game_data"
        },
        "setup": {
          "answer": "Install the release for your platform and import the original or demo data using the documented data installer or manual directories.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/arx/ArxLibertatis/HEAD/README.md"
        },
        "devices": {
          "answer": "The checked release offers Windows and Linux builds; the README documents additional source-build platforms.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/arx/ArxLibertatis/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/arx/ArxLibertatis"
    },
    {
      "id": "project:arx-fatalis-browser",
      "slug": "arx-fatalis-browser",
      "title": "Arx Fatalis",
      "project": "Arxwasm",
      "canonicalUrl": "https://playable.wtf/games/arx-fatalis-browser/",
      "originals": [
        {
          "id": "arxfatalis",
          "name": "Arx Fatalis",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "RPG",
      "summary": "An Arx Libertatis web demo with local saves and the original interaction scheme.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "An underground role-playing world",
            "kind": "background",
            "paragraphs": [
              "Arx Fatalis takes place after the sun has failed and its inhabitants have moved underground. Its first-person role-playing combines exploration, conversations, puzzles and character development with weapons, stealth and magic. Spells use drawn runes, making the act of casting part of the game's interaction rather than only a choice from a spell list.",
              "The original game encourages different approaches through character skills and equipment. Those possibilities describe Arx Fatalis as a whole; the browser project's hosted demo supplies a smaller introduction to that world."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Arx Libertatis brought to the web",
            "kind": "project",
            "paragraphs": [
              "Arxwasm adapts Arx Libertatis, the open-source engine project for Arx Fatalis, to WebAssembly. The hosted launch uses demo data, with a download of roughly 150 MB that is cached for later visits. It is an engine demonstration you can enter from a browser, rather than a distribution of the full retail game.",
              "Use a current desktop browser for the intended input experience. The creator lists Chrome, Firefox, Safari and Edge; the fact that the engine can run on a mobile device does not supply a playable touch interface."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controls",
            "title": "Switch between looking, fighting and magic",
            "kind": "practical",
            "paragraphs": [
              "Right-click switches between the cursor and mouse-look. Tab changes combat mode, Ctrl activates magic mode, Enter equips an object and Home opens the menu. Learning those switches helps explain the game's rhythm: interacting with the world, fighting and drawing magic do not all use the same pointer behavior.",
              "Saves use browser storage, so use a normal profile when you want persistent progress. Private browsing can prevent saves from being retained. The cached download and saved progress belong to the browser's local storage, not an automatically synchronized account."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "visuals",
            "title": "A demo with renderer differences",
            "kind": "limitations",
            "paragraphs": [
              "The creator documents missing effects, including some magic visuals and fog. Keep that in mind when comparing the web demo with native Arx Fatalis or Arx Libertatis. The browser build's presentation and touch limitations are specific to this experiment."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Arkane · Arx Fatalis publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=1700&l=english"
          },
          {
            "id": "project",
            "label": "Arxwasm · creator setup and limitations",
            "url": "https://raw.githubusercontent.com/gabrielcuvillier/arxwasm/HEAD/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://wasm.continuation-labs.com/arxdemo/"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The hosted build uses demo data. Retail content is separate.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gabrielcuvillier/arxwasm/d1ffd0b9a1d84cd73d456a5a0c654a43405b1cc6/README.md"
        },
        "setup": {
          "answer": "Open the demo in a desktop browser with IndexedDB storage enabled and wait for its initial data load.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gabrielcuvillier/arxwasm/d1ffd0b9a1d84cd73d456a5a0c654a43405b1cc6/README.md"
        },
        "devices": {
          "answer": "The creator lists desktop Firefox, Chrome, Safari and Edge with WebAssembly, WebGL and IndexedDB. Mobile can run the engine but lacks playable touch input.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gabrielcuvillier/arxwasm/d1ffd0b9a1d84cd73d456a5a0c654a43405b1cc6/README.md"
        },
        "controls": {
          "answer": "Right-click switches cursor/mouselook, Tab enters combat, Ctrl enters magic mode and Home opens the menu.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gabrielcuvillier/arxwasm/d1ffd0b9a1d84cd73d456a5a0c654a43405b1cc6/README.md"
        },
        "issues": {
          "answer": "Experimental port with documented visual glitches. Saves live in browser storage.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gabrielcuvillier/arxwasm/d1ffd0b9a1d84cd73d456a5a0c654a43405b1cc6/README.md"
        },
        "scope": {
          "answer": "The hosted route downloads the Arx Fatalis demo, approximately 150 MB, and caches it in IndexedDB. It does not include the retail adventure.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gabrielcuvillier/arxwasm/d1ffd0b9a1d84cd73d456a5a0c654a43405b1cc6/README.md"
        },
        "saves": {
          "answer": "Saves stay in local browser storage. Private browsing and some storage configurations may prevent persistence.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gabrielcuvillier/arxwasm/d1ffd0b9a1d84cd73d456a5a0c654a43405b1cc6/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/gabrielcuvillier/arxwasm"
    },
    {
      "id": "project:banjorecomp-banjorecomp",
      "slug": "banjorecomp-banjorecomp",
      "title": "Banjo-Kazooie",
      "project": "BanjoRecomp",
      "canonicalUrl": "https://playable.wtf/games/banjorecomp-banjorecomp/",
      "originals": [
        {
          "id": "banjokazooie",
          "name": "Banjo-Kazooie",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Platformer",
      "summary": "Banjo-Kazooie through N64Recomp and RT64.",
      "editorial": {
        "sections": [
          {
            "id": "collecting-notes",
            "title": "A meaningful change to collecting notes",
            "kind": "project",
            "paragraphs": [
              "BanjoRecomp adapts the N64 Banjo-Kazooie to a native application, with a particularly useful choice for repeat visits to its levels. Its optional note-saving behavior keeps collected notes when you leave a level or die, as later releases do. Turn that option off to restore the N64 note-score mechanic; the change takes effect when you return to Grunty’s Lair or restart.",
              "The developers also account for Bottles’ puzzles: notes collected during demonstrations are not saved. That distinction matters to completion-focused players because the added convenience is designed to avoid the corresponding note-collection issue in the Xbox Live Arcade version."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "display-and-camera",
            "title": "Keep the N64 style, adjust the view",
            "kind": "project",
            "paragraphs": [
              "The RT64 renderer supports high frame rates and widescreen while preserving effects such as the jigsaw transition and Bottles’ Moving Picture Game. Frame rate can follow your monitor or remain at the original rate without changing gameplay speed. Cutscenes can be constrained to their original framing or 16:9 to hide details that were never intended to appear outside the shot.",
              "An optional dual-analog camera uses the right stick for finer view control. C-button actions assigned to that stick still work while crouching, letting the modern camera coexist with those original inputs. Controls, sound and graphics are configured through menus usable with a mouse, keyboard or controller."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "copy-and-mods",
            "title": "Start with the correct cartridge dump",
            "kind": "practical",
            "paragraphs": [
              "The required game is the North American 1.0 N64 release. Select your own ROM in the main menu; compatible byte-order formats are converted automatically. BanjoRecomp is not a general emulator or a Banjo-Tooie launcher. It does not include game assets.",
              "The built-in mod menu installs manually downloaded mods and texture packs. Drag files onto the window before starting or choose Install Mods, then enable them in the menu. The project does not support Thunderstore’s separate mod manager. Portable mode, enabled with portable.txt beside the executable, keeps settings, saves and mods together."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "before-you-launch",
            "title": "Hardware and presentation limits",
            "kind": "limitations",
            "paragraphs": [
              "Check the documented Direct3D 12, Vulkan 1.2 or Metal requirements, plus SSE4.1 on x86-64 processors. If rendering stutters, use the in-game frame-rate control before applying an external limiter. Overlays can also interfere with rendering. Ray tracing remains a planned feature, so it should not be a reason to install the current build."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "BanjoRecomp · project documentation",
            "url": "https://github.com/BanjoRecomp/BanjoRecomp"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/BanjoRecomp/BanjoRecomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Banjo-Kazooie ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/BanjoRecomp/BanjoRecomp"
        },
        "setup": {
          "answer": "Use the current release and import the ROM supported by its setup guide.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/BanjoRecomp/BanjoRecomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/BanjoRecomp/BanjoRecomp"
    },
    {
      "id": "project:battle-city-browser",
      "slug": "battle-city-browser",
      "title": "Battle City",
      "project": "Battle City web reimplementation",
      "canonicalUrl": "https://playable.wtf/games/battle-city-browser/",
      "originals": [
        {
          "id": "battlecity",
          "name": "Battle City",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Arcade",
      "summary": "The Famicom tank game reconstructed for browsers with a stage editor.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A tank game built around protecting one place",
            "kind": "background",
            "paragraphs": [
              "Battle City turns a small battlefield into a defence problem. You control a tank, but the thing you must keep alive is the eagle base. Enemy waves force you to balance hunting tanks with returning to cover an exposed approach. Namco’s original Famicom game spans 35 stages and includes simultaneous two-player play and a construction mode.",
              "That combination gives it two different rhythms: a short arcade run through a prepared stage, or a shared session in which two players divide the defensive work. Building a stage changes the question again, letting you decide the layout you will have to defend."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "A reconstruction with the stage editor intact",
            "kind": "project",
            "paragraphs": [
              "vgrichina’s browser version is a JavaScript reimplementation built alongside annotated reverse-engineering notes. The creator reports the full stage sequence, two-player mode, construction mode, high-score entry and the end-of-stage tally. The browser game opens directly; the cartridge-dump requirement in the repository applies to its disassembly tools, not to launching this web version."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "playing",
            "title": "Choose a mode, then share the keyboard",
            "kind": "practical",
            "paragraphs": [
              "The title menu offers one player, two players and Construction. For a solo start, use the arrow keys and Space, with Enter to begin. For two players at the same keyboard, the second tank uses WASD and E or Q to fire. This is a local arrangement: sit together and agree which approaches each player will cover.",
              "The web page also provides a directional pad, Fire and Start for touch input. Construction exposes stage and tile controls alongside the play area. Start with a normal stage to learn the space before changing its layout; brick, steel and water block movement, while the map also contains passable terrain such as ice and trees. Terrain is part of the defence, not just decoration."
            ],
            "sourceIds": [
              "interface",
              "controls"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Battle City · project README",
            "url": "https://github.com/vgrichina/battlecity"
          },
          {
            "id": "interface",
            "label": "Battle City · web interface",
            "url": "https://battle-city.berrry.app"
          },
          {
            "id": "controls",
            "label": "Battle City · input and terrain implementation",
            "url": "https://battle-city.berrry.app/game.js"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://battle-city.berrry.app"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The creator states the browser reimplementation does not require a ROM. Disassembly tools require your own cartridge dump.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/vgrichina/battlecity"
        },
        "setup": {
          "answer": "Open the web port; its source can also be served locally without a build step.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/vgrichina/battlecity"
        },
        "devices": {
          "answer": "The JavaScript web build includes touch buttons for one-player input. Its simultaneous two-player keyboard layout uses separate movement and fire keys.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://battle-city.berrry.app/game.js"
        },
        "controls": {
          "answer": "Player one uses arrows to move and Space to fire. In two-player mode, player two uses WASD and E or Q to fire. Enter starts; touch screens have a direction pad, Fire and Start buttons.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://battle-city.berrry.app/game.js"
        },
        "multiplayer": {
          "answer": "Two-player simultaneous mode is documented; online networking is not confirmed.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/vgrichina/battlecity"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/vgrichina/battlecity"
    },
    {
      "id": "project:birabittoh-eternalsonatareprise",
      "slug": "birabittoh-eternalsonatareprise",
      "title": "Eternal Sonata",
      "project": "Eternal Sonata Reprise",
      "canonicalUrl": "https://playable.wtf/games/birabittoh-eternalsonatareprise/",
      "originals": [
        {
          "id": "eternalsonata",
          "name": "Eternal Sonata",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "RPG",
      "summary": "The Xbox 360 RPG with a Windows/Linux native runtime.",
      "editorial": {
        "sections": [
          {
            "id": "versions",
            "title": "Choose the game edition before choosing a build",
            "kind": "project",
            "paragraphs": [
              "Eternal Sonata Reprise is a native recompilation project with an unusually important distinction between playing and compiling. The current prebuilt release accepts Xbox 360 and PS3 game data across PAL, USA and Japanese editions, according to its documentation. Building the executable yourself still requires the Xbox 360 PAL version.",
              "For a player, the stable release is the useful starting point; nightly artifacts are a separate development option. Keep the edition you own in mind when following instructions, because the source-build example that extracts default.xex is not a generic instruction for every supported disc."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "input",
            "title": "Combat and exploration on the keyboard",
            "kind": "practical",
            "paragraphs": [
              "WASD handles walking. The mouse buttons supply interaction, attack and guard, with the middle button assigned to Object; Space uses a special ability and Alt changes the camera. The PS3 version’s alternative special ability is mapped to Ctrl. Those edition-specific inputs matter more than assuming the Xbox and PS3 releases share every action.",
              "Insert opens the overlay, F4 settings and F5 input options. Shift is fast-forward, so distinguish it from an ordinary movement modifier when learning the default layout. F1 opens the mod manager; start with standard controls before adding optional modifications."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "saves-and-startup",
            "title": "Keep progress portable and diagnose startup delays",
            "kind": "practical",
            "paragraphs": [
              "By default, saves, options and caches live in the platform’s user folder. Creating an empty portable.txt beside the executable keeps them next to the program instead. The configuration also lets advanced users separate game data, saves, caches and mods into different folders.",
              "A black window before the title appears on Windows can come from an unresponsive input device delaying SDL’s DirectInput scan. The project documents a way to bypass that scan, but doing so also disables controllers that rely on DirectInput. Android startup failures may instead involve an old Vulkan driver; the port supplies a custom-driver selection path. Neither workaround establishes that every device will run the game."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Eternal Sonata Reprise · project documentation",
            "url": "https://github.com/birabittoh/EternalSonataReprise"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/birabittoh/EternalSonataReprise/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own legally dumped Eternal Sonata game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/birabittoh/EternalSonataReprise"
        },
        "setup": {
          "answer": "Prefer the documented stable release and follow its game-import instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/birabittoh/EternalSonataReprise"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/birabittoh/EternalSonataReprise"
    },
    {
      "id": "project:birabittoh-nocturnerecomp",
      "slug": "birabittoh-nocturnerecomp",
      "title": "Castlevania: Symphony of the Night",
      "project": "NocturneRecomp",
      "canonicalUrl": "https://playable.wtf/games/birabittoh-nocturnerecomp/",
      "originals": [
        {
          "id": "castlevaniasymphonyofthenight",
          "name": "Castlevania: Symphony of the Night",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Action",
      "summary": "The Xbox Live Arcade edition recompiled for Windows and Linux.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original game: Alucard in Dracula’s castle",
            "kind": "background",
            "paragraphs": [
              "Symphony of the Night is a side-view action RPG built around Alucard’s journey through Dracula’s castle. Jumping, dashing and close combat carry you between its enemies and characters, giving exploration and fighting equal space in the adventure. The appeal is following the castle’s changing encounters at your own pace, with its distinctive music and illustrated environments. NocturneRecomp uses the XBLA edition; the mobile edition’s extra features are separate."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Start from the Xbox Live Arcade edition",
            "kind": "project",
            "paragraphs": [
              "NocturneRecomp is a Windows and Linux port of the Xbox Live Arcade release of Symphony of the Night. It translates that edition’s executable and supplies a native host around it. Your input is therefore a legally dumped XBLA package, not a PlayStation disc image. That edition distinction is the first thing to check when choosing among Symphony of the Night projects.",
              "The stable release is the simplest starting point: extract its archive, launch the program and follow the game-extraction prompt. Nightly builds are available separately for newer development work. The source-build path expects a LIVE/STFS package and supports a separate title-update option."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "settings",
            "title": "Native settings and a visible achievements menu",
            "kind": "project",
            "paragraphs": [
              "Recent releases move common display choices into the game’s own settings: resolution, fullscreen, language, graphics backend and screen-size presets. F4 also opens an in-game settings overlay. The Enhanced Graphics switch now replaces the old render-scale control, so older screenshots and instructions may show an option that is no longer present.",
              "The port adds a native achievements page, with recent fixes for Japanese glyphs and menu alignment. These are features of NocturneRecomp’s host interface; they should not be confused with a promise of Xbox network account integration."
            ],
            "sourceIds": [
              "releases"
            ]
          },
          {
            "id": "mods",
            "title": "Adjust the port through its mod manager",
            "kind": "practical",
            "paragraphs": [
              "F1 opens the mod manager, which can browse, install, reorder, update and remove mods. A ZIP dropped onto the game window can be installed as a local mod. That gives players a route to change the host’s behavior without rebuilding the entire project.",
              "Language and screen-size extension hooks have also been added for mod authors. Check a mod’s version against the chosen release, especially when it changes graphics settings: those APIs have evolved alongside the native menus. Start with the stable build and its standard settings before combining optional changes."
            ],
            "sourceIds": [
              "releases"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "NocturneRecomp · project documentation",
            "url": "https://github.com/birabittoh/NocturneRecomp"
          },
          {
            "id": "releases",
            "label": "NocturneRecomp · release notes",
            "url": "https://github.com/birabittoh/NocturneRecomp/releases"
          },
          {
            "id": "original",
            "label": "Konami · Symphony of the Night description",
            "url": "https://www.konami.com/games/eu/en/products/castlevania2020_son/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/birabittoh/NocturneRecomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own legally dumped Xbox Live Arcade game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/birabittoh/NocturneRecomp"
        },
        "setup": {
          "answer": "Extract the release, start the executable and follow its game-extraction prompt.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/birabittoh/NocturneRecomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/birabittoh/NocturneRecomp"
    },
    {
      "id": "project:black-ops-kisakblack",
      "slug": "black-ops-kisakblack",
      "title": "Call of Duty: Black Ops",
      "project": "KisakBlack",
      "canonicalUrl": "https://playable.wtf/games/black-ops-kisakblack/",
      "originals": [
        {
          "id": "callofdutyblackops",
          "name": "Call of Duty: Black Ops",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Shooter",
      "summary": "A buildable Windows multiplayer executable reimplementation.",
      "editorial": {
        "sections": [
          {
            "id": "scope",
            "title": "A multiplayer executable for developers to work on",
            "kind": "project",
            "paragraphs": [
              "KisakBlack reimplements the Call of Duty: Black Ops multiplayer executable and is aimed at mod developers and enthusiasts. Its useful distinction is access to a buildable Windows project that can be studied or changed while using the game’s existing assets. It is not a browser edition and does not describe a campaign or Zombies conversion.",
              "Choose it if building and experimenting with the multiplayer program is part of the appeal. The repository’s documented route starts with developer tools and an owned Steam installation, rather than offering a one-click public match launcher."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "build",
            "title": "Keep the complete game data together",
            "kind": "practical",
            "paragraphs": [
              "The build requires Windows, Visual Studio 2022, CMake and the June 2010 DirectX SDK. Generate the Visual Studio solution for Win32, then choose Debug or Release and compile. The architecture setting matters even on a modern 64-bit Windows machine.",
              "After building, copy the Black Ops game files into the matching output folder. The maintainer explicitly warns against selecting only the obvious large files: small files such as localization.txt are also required. The listed runtime DLLs must accompany the program. A missing-DLL startup error is therefore a file-layout problem to check before assuming the code failed to compile."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "network",
            "title": "Understand the old networking boundary",
            "kind": "limitations",
            "paragraphs": [
              "The creator warns that the old networking code has known exploits and that online play can expose the process to binary attacks. A successful local build should not be treated as a hardened replacement for the original multiplayer software.",
              "For dedicated-server connection failures, check net_ip and net_port. A server may move to a higher port when its preferred port is busy, while the client does not automatically search those higher ports. That is a specific configuration issue worth checking before repeatedly rebuilding."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "KisakBlack · project documentation",
            "url": "https://github.com/SwagSoftware/KisakBlack"
          }
        ]
      },
      "families": [
        {
          "id": "call-of-duty",
          "title": "Call of Duty",
          "indexUrl": "https://playable.wtf/families/#family-call-of-duty",
          "guideUrl": "https://playable.wtf/guides/call-of-duty-browser-native-versions/",
          "choices": [
            {
              "slug": "black-ops-zombies",
              "label": "Choose BO1 Zombies rules",
              "reason": "Select Classic or Counter-Strike guns before a solo or lobby session.",
              "canonicalUrl": "https://playable.wtf/games/black-ops-zombies/"
            },
            {
              "slug": "nacht-der-untoten",
              "label": "Invite a small co-op group",
              "reason": "A separate desktop fan remake with a two-to-four-player invitation flow.",
              "comparisonException": "The creator launcher and compatibility help document solo/co-op invitations and input; match completion and multiplayer lifecycle are untested.",
              "canonicalUrl": "https://playable.wtf/games/nacht-der-untoten/"
            },
            {
              "slug": "modern-warfare-browser",
              "label": "Play the original COD4 campaign",
              "reason": "Import your own Steam files for the story and Mile High Club.",
              "canonicalUrl": "https://playable.wtf/games/modern-warfare-browser/"
            },
            {
              "slug": "paulcombal-mw2-recompiled",
              "label": "Use the 2009 console edition natively",
              "reason": "Choose the Windows/Linux controller route with matching owned Xbox 360 data.",
              "canonicalUrl": "https://playable.wtf/games/paulcombal-mw2-recompiled/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "unknown",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/SwagSoftware/KisakBlack"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Steam and your own Black Ops installation, plus the documented build dependencies.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/SwagSoftware/KisakBlack"
        },
        "setup": {
          "answer": "Follow the Visual Studio 2022/CMake build instructions and copy the required files from your installation.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/SwagSoftware/KisakBlack"
        },
        "devices": {
          "answer": "Windows is specified in the reviewed README.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/SwagSoftware/KisakBlack"
        },
        "issues": {
          "answer": "The creator warns about known exploits in the old game’s networking code.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/SwagSoftware/KisakBlack"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/SwagSoftware/KisakBlack"
    },
    {
      "id": "project:black-ops-zombies",
      "slug": "black-ops-zombies",
      "title": "Call of Duty: Black Ops Zombies",
      "project": "vel.gg browser build",
      "canonicalUrl": "https://playable.wtf/games/black-ops-zombies/",
      "originals": [
        {
          "id": "callofdutyblackops",
          "name": "Call of Duty: Black Ops",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser build · method unconfirmed",
      "genre": "Shooter",
      "summary": "A community browser build of Call of Duty: Black Ops Zombies.",
      "editorial": {
        "sections": [
          {
            "id": "zombies",
            "title": "The Zombies side of Black Ops",
            "kind": "background",
            "paragraphs": [
              "The original Call of Duty: Black Ops offers Zombies as a separate attraction alongside its covert-operations campaign and competitive multiplayer. Activision describes that mode as playable alone or cooperatively. Its appeal is a repeatable fight against zombies, rather than progressing through the campaign's story missions.",
              "That original-game context is distinct from vel.gg's browser project. This launch is focused on Zombies, and its own setup choices determine the session you are preparing."
            ],
            "sourceIds": [
              "original",
              "host"
            ]
          },
          {
            "id": "this-version",
            "title": "Choose a mode and a weapon set",
            "kind": "project",
            "paragraphs": [
              "The setup menu offers Single Player and Multiplayer. The Multiplayer description says you create a lobby and invite friends. A separate Guns choice changes more than the weapon names: Classic uses the original Black Ops guns, while Counter-Strike is described as bringing Counter-Strike 2 guns, recoil and movement.",
              "The weapon choice also changes familiar keys: Classic uses F to interact and Shift to sprint, while Counter-Strike uses E to interact and Shift to walk. Pick the rules before choosing a map; Back returns to the setup if you want to change them."
            ],
            "sourceIds": [
              "host",
              "controls"
            ]
          },
          {
            "id": "setup",
            "title": "Set up the session before choosing a map",
            "kind": "practical",
            "paragraphs": [
              "Enter a player name of up to sixteen characters, then choose graphics. High uses shadows and full resolution. Low removes shadows and reduces resolution; the creator presents it as the smoother option for slower computers.",
              "The current Mission Select screen presents Kino der Toten and Five. Choose from this host's displayed maps after setting the mode and guns. For a group session, use this project's lobby invitation rather than opening a different Zombies host."
            ],
            "sourceIds": [
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Activision · Black Ops modes",
            "url": "https://store.steampowered.com/api/appdetails?appids=42700&l=english"
          },
          {
            "id": "host",
            "label": "vel.gg · Black Ops Zombies setup menu",
            "url": "https://vel.gg/bo1z"
          },
          {
            "id": "controls",
            "label": "vel.gg · default input mappings",
            "url": "https://vel.gg/bo1z/gamepad.js"
          }
        ]
      },
      "families": [
        {
          "id": "call-of-duty",
          "title": "Call of Duty",
          "indexUrl": "https://playable.wtf/families/#family-call-of-duty",
          "guideUrl": "https://playable.wtf/guides/call-of-duty-browser-native-versions/",
          "choices": [
            {
              "slug": "black-ops-zombies",
              "label": "Choose BO1 Zombies rules",
              "reason": "Select Classic or Counter-Strike guns before a solo or lobby session.",
              "canonicalUrl": "https://playable.wtf/games/black-ops-zombies/"
            },
            {
              "slug": "nacht-der-untoten",
              "label": "Invite a small co-op group",
              "reason": "A separate desktop fan remake with a two-to-four-player invitation flow.",
              "comparisonException": "The creator launcher and compatibility help document solo/co-op invitations and input; match completion and multiplayer lifecycle are untested.",
              "canonicalUrl": "https://playable.wtf/games/nacht-der-untoten/"
            },
            {
              "slug": "modern-warfare-browser",
              "label": "Play the original COD4 campaign",
              "reason": "Import your own Steam files for the story and Mile High Club.",
              "canonicalUrl": "https://playable.wtf/games/modern-warfare-browser/"
            },
            {
              "slug": "paulcombal-mw2-recompiled",
              "label": "Use the 2009 console edition natively",
              "reason": "Choose the Windows/Linux controller route with matching owned Xbox 360 data.",
              "canonicalUrl": "https://playable.wtf/games/paulcombal-mw2-recompiled/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://vel.gg/bo1z"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "setup": {
          "answer": "Choose Single player or Multiplayer, Classic or Counter-Strike guns, and High or Low graphics before selecting Choose map. Multiplayer has its own lobby and invitation flow.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://vel.gg/bo1z"
        },
        "controls": {
          "answer": "Default keyboard and mouse controls: WASD moves, the mouse looks, left click fires, R reloads, Space jumps and Esc opens the menu. With Classic guns, F interacts, right click aims, C toggles crouch and Shift sprints. Counter-Strike guns change interaction to E, crouch to held Ctrl, Shift to walk and right click to secondary attack. Custom key bindings can differ.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://vel.gg/bo1z/gamepad.js"
        },
        "issues": {
          "answer": "Low graphics removes shadows and reduces resolution. Choose it if the High preset is too demanding for your computer.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://vel.gg/bo1z"
        },
        "scope": {
          "answer": "The launcher offers Classic Black Ops guns or Counter-Strike 2 guns, recoil and movement. These are separate rule choices within the Zombies setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://vel.gg/bo1z"
        }
      },
      "credits": [],
      "sourceUrl": "https://vel.gg/bo1z"
    },
    {
      "id": "project:blacklabelhq-symphonyrecomp",
      "slug": "blacklabelhq-symphonyrecomp",
      "title": "Castlevania: Symphony of the Night",
      "project": "SymphonyRecomp",
      "canonicalUrl": "https://playable.wtf/games/blacklabelhq-symphonyrecomp/",
      "originals": [
        {
          "id": "castlevaniasymphonyofthenight",
          "name": "Castlevania: Symphony of the Night",
          "relationship": "port-of"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Action adventure",
      "summary": "A PlayStation recompilation with an openly labeled beta release.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Alucard’s journey through Dracula’s castle",
            "kind": "background",
            "paragraphs": [
              "Symphony of the Night combines action and role-playing as Alucard moves through Dracula’s sprawling castle, fighting its creatures and encountering other characters. Jumping, dashing and close combat are central to the experience. The castle setting and changing encounters give it a different appeal from a succession of isolated fighting arenas.",
              "Konami’s later mobile version is a separate product with its own features. Its controller support, achievements and continue system should not be assumed to describe this PlayStation recompilation."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "An open beta from BlackLabelHQ",
            "kind": "project",
            "paragraphs": [
              "SymphonyRecomp targets the North American PlayStation game using RecompOne, with knowledge from the separate Symphony of the Night decompilation effort helping identify functions and create patches. The two projects are related through research and contributors, but they are not the same release or support channel.",
              "BlackLabelHQ offers downloadable releases for players and a separate source-build path. Its stated goal is bringing the game to modern computers, but the current release is explicitly an open beta. A completed stable version is not promised by the existence of a playable download."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "disc-setup",
            "title": "Keep the disc tracks and region straight",
            "kind": "practical",
            "paragraphs": [
              "The project accepts an owned North American NTSC PlayStation disc in BIN/CUE or CHD form. For the documented BIN/CUE arrangement, both disc tracks and the CUE file use specific names in the disc directory. The CUE must refer to the matching files. Copying only the first track is not the complete documented setup.",
              "Other-language discs are discussed as potential inputs for future language tooling, but the American NTSC copy remains the required base. Do not treat a translated or differently regioned image as interchangeable."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "beta-expectations",
            "title": "Allow for unfinished behavior",
            "kind": "limitations",
            "paragraphs": [
              "The maintainers warn that game-breaking bugs can occur during the beta. Choose this build if you are comfortable exploring an evolving port, and use BlackLabelHQ’s project-specific release notes and help channels when a problem appears. Development builds also do not automatically update. The source-build instructions list .NET, OpenAL and OpenGL requirements separately from the simpler player download route."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "SymphonyRecomp · project documentation",
            "url": "https://raw.githubusercontent.com/BlackLabelHQ/SymphonyRecomp/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "Konami · Symphony of the Night overview",
            "url": "https://www.konami.com/games/eu/en/products/castlevania2020_son/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "beta",
        "route": {
          "kind": "download",
          "url": "https://github.com/BlackLabelHQ/SymphonyRecomp/releases/tag/v0.5.1b"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "A legally owned North American NTSC PlayStation copy in BIN/CUE or CHD form. The README lists the expected Track 1, Track 2 and CUE filenames in the disc directory.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/BlackLabelHQ/SymphonyRecomp/HEAD/README.md"
        },
        "setup": {
          "answer": "Download the beta package for your platform and follow its disc-data setup. Developers can instead generate and compile from the owned disc.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/BlackLabelHQ/SymphonyRecomp/HEAD/README.md"
        },
        "devices": {
          "answer": "The checked release has Windows, Linux and macOS packages; the README requires OpenGL 2.1, .NET 10 and OpenAL.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/BlackLabelHQ/SymphonyRecomp/HEAD/README.md"
        },
        "issues": {
          "answer": "Open beta: the creators warn of potentially game-breaking bugs and distinguish this project from the separate SOTN decompilation.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/BlackLabelHQ/SymphonyRecomp/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/BlackLabelHQ/SymphonyRecomp"
    },
    {
      "id": "project:brazilianhobbyist-project-re-visited-re3",
      "slug": "brazilianhobbyist-project-re-visited-re3",
      "title": "Resident Evil 3: Nemesis",
      "project": "Project RE: Visited",
      "canonicalUrl": "https://playable.wtf/games/brazilianhobbyist-project-re-visited-re3/",
      "originals": [
        {
          "id": "residentevil3nemesis",
          "name": "Resident Evil 3: Nemesis",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Horror",
      "summary": "A Windows port of the original PlayStation survival-horror game.",
      "editorial": {
        "sections": [
          {
            "id": "original-presentation",
            "title": "The 1999 game and its fixed-camera spaces",
            "kind": "background",
            "paragraphs": [
              "Resident Evil 3: Nemesis uses fixed viewpoints and pre-rendered backgrounds, an important part of its original survival-horror presentation. Project RE: Visited keeps those backgrounds rather than attempting to turn them into a free-camera world. The original artwork still determines what a room looks like, even when character geometry is rendered more cleanly.",
              "This is the PlayStation-era Nemesis, not the later Resident Evil 3 remake. The wider RE: Visited initiative lists Resident Evil and Resident Evil 2 as future projects; they are not extra games included with this release."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "modern-controls",
            "title": "Two ways to move through the same rooms",
            "kind": "project",
            "paragraphs": [
              "The project’s most meaningful control choice is between analog movement and the classic directional-pad tank controls. The analog stick offers camera-relative movement with automatic running at large deflections, while the D-pad retains turning and forward/backward movement. The creator specifically describes continuity across fixed-camera cuts, a detail worth testing early if you know the original controls well.",
              "Other options change the pace or appearance: faster door transitions, skippable cinematics, interpolation for high-refresh displays and geometry correction. The 16:9 option is described as stretched, whereas 4:3 preserves the original proportions with pillarboxing. A higher internal resolution does not replace the original background artwork with newly drawn scenes."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "files-and-saves",
            "title": "Set up the supported disc and keep your memory cards",
            "kind": "practical",
            "paragraphs": [
              "Open the Windows launcher’s Setup Files wizard and supply your own disc image containing the supported SLUS_009.23 executable. The package uses OpenBIOS, so its documented route does not require a separate proprietary BIOS dump. Configure resolution, timing and controls before starting the game.",
              "The project stores standard PS1 memory-card files under saves/card1.mcd and saves/card2.mcd. Keep copies of those files when changing installations. The launcher’s optional modifiers can unlock content or alter health and ammunition; leave them disabled if you want the original progression and resource constraints."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Project RE: Visited · project documentation",
            "url": "https://github.com/BrazilianHobbyist/Project-RE-Visited-RE3"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/BrazilianHobbyist/Project-RE-Visited-RE3/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Resident Evil 3 disc image; consult the SLUS_009.23 setup notes.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/BrazilianHobbyist/Project-RE-Visited-RE3"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/BrazilianHobbyist/Project-RE-Visited-RE3"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/BrazilianHobbyist/Project-RE-Visited-RE3"
    },
    {
      "id": "project:bryanthaboi-gen1recomp",
      "slug": "bryanthaboi-gen1recomp",
      "title": "Pokémon generations I–III",
      "project": "G1R Deluxe",
      "canonicalUrl": "https://playable.wtf/games/bryanthaboi-gen1recomp/",
      "originals": [
        {
          "id": "pokemonred",
          "name": "Pokémon Red",
          "relationship": "associated-with"
        },
        {
          "id": "pokemonblue",
          "name": "Pokémon Blue",
          "relationship": "associated-with"
        },
        {
          "id": "pokemonyellow",
          "name": "Pokémon Yellow",
          "relationship": "associated-with"
        },
        {
          "id": "pokemongold",
          "name": "Pokémon Gold",
          "relationship": "associated-with"
        },
        {
          "id": "pokemonsilver",
          "name": "Pokémon Silver",
          "relationship": "associated-with"
        },
        {
          "id": "pokemoncrystal",
          "name": "Pokémon Crystal",
          "relationship": "associated-with"
        },
        {
          "id": "pokemonfirered",
          "name": "Pokémon FireRed",
          "relationship": "associated-with"
        },
        {
          "id": "pokemonleafgreen",
          "name": "Pokémon LeafGreen",
          "relationship": "associated-with"
        },
        {
          "id": "pokemonruby",
          "name": "Pokémon Ruby",
          "relationship": "associated-with"
        },
        {
          "id": "pokemonsapphire",
          "name": "Pokémon Sapphire",
          "relationship": "associated-with"
        },
        {
          "id": "pokemonemerald",
          "name": "Pokémon Emerald",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "RPG",
      "summary": "A LÖVE2D recreation that decodes your Pokémon ROM locally.",
      "editorial": {
        "sections": [
          {
            "id": "what-g1r-recreates",
            "title": "What G1R Deluxe recreates",
            "kind": "project",
            "paragraphs": [
              "G1R Deluxe, also called Gen1Recomp, rebuilds the games in a hand-written Lua engine running through LÖVE2D. It imports the data, graphics and audio programs from a ROM you provide. Despite the project name, this is not a static translation of Game Boy machine code: the engine and map behavior are recreated, with music, effects and cries synthesized at runtime.",
              "The launcher accepts eleven games, each with its own tab: Red, Blue, Yellow, Gold, Silver, Crystal, FireRed, LeafGreen, Ruby, Sapphire and Emerald. That list does not mean eleven equally finished recreations. Generation 2 is still under construction, and the five Game Boy Advance titles are described as beta support."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "battle-rules-and-presentation",
            "title": "Battle rules and presentation choices",
            "kind": "project",
            "paragraphs": [
              "The Generation 1 ruleset is an unusually consequential choice. Faithful mode retains original quirks such as the rare miss for a nominally fully accurate move and the Focus Energy bug. Modern Clean keeps the damage formulas while correcting selected quirks, including enemy PP use and Hyper Beam recharge. Pick the behavior you want before treating an unexpected battle result as a defect.",
              "Presentation has separate controls for color, zoom, tilt and shader effects. Performance tiers scale optional visual features without changing game logic. Game speed is another explicit player setting, so you can distinguish speeding up play from simply reducing graphical extras."
            ],
            "sourceIds": [
              "project",
              "rules"
            ]
          },
          {
            "id": "rom-import-and-controls",
            "title": "Importing your games and setting controls",
            "kind": "practical",
            "paragraphs": [
              "Use an accepted US English ROM revision from your own copy. The importer checks its SHA-1 against the project’s documented list; a different language, modified ROM or unsupported revision may fail even if the game name matches. After import, future launches use generated local data rather than repeatedly opening the ROM. The application includes neither ROMs nor game assets.",
              "Arrow keys or WASD move, Z or Enter confirms, X or Backspace cancels, Escape opens Start and Tab acts as Select. A controller is supported, and Options → Controls lets you rebind the buttons. Download through the project repository or its linked official site; similarly named websites are not necessarily connected to this project."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "battles-trades-and-mods",
            "title": "Battles, trades and matching rules",
            "kind": "practical",
            "paragraphs": [
              "The Online tab documents hosted battles, spectating, tournaments and trading between saves. A battle opens directly into the match, then returns to the launcher. Rooms identify the engine, version and ruleset so both participants use the same configuration, including an agreed custom cart where applicable.",
              "The in-game Link menu is a separate local-network route. Do not confuse those two ways of connecting, or assume that every imported generation has the same completeness as the established games. For a first session, choose a supported title and matching rules before adding mods."
            ],
            "sourceIds": [
              "online",
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "G1R Deluxe · project documentation",
            "url": "https://github.com/bryanthaboi/gen1recomp"
          },
          {
            "id": "rules",
            "label": "G1R Deluxe · battle rulesets",
            "url": "https://github.com/bryanthaboi/gen1recomp/blob/HEAD/docs/guides/rulesets.md"
          },
          {
            "id": "online",
            "label": "G1R Deluxe · online play",
            "url": "https://github.com/bryanthaboi/gen1recomp/blob/HEAD/docs/guides/online-play.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/bryanthaboi/gen1recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Pokémon ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/bryanthaboi/gen1recomp"
        },
        "setup": {
          "answer": "Use the original repository’s release and ROM-import instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/bryanthaboi/gen1recomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/bryanthaboi/gen1recomp"
    },
    {
      "id": "project:bryantmh-rush2recompiled",
      "slug": "bryantmh-rush2recompiled",
      "title": "Rush 2: Extreme Racing USA",
      "project": "Rush 2 Recompiled",
      "canonicalUrl": "https://playable.wtf/games/bryantmh-rush2recompiled/",
      "originals": [
        {
          "id": "rush2extremeracingusa",
          "name": "Rush 2: Extreme Racing USA",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Racing",
      "summary": "Rush 2 with widescreen, interpolated presentation and controller options.",
      "editorial": {
        "sections": [
          {
            "id": "racing-and-stunts",
            "title": "Arcade racing with room for a personal best",
            "kind": "project",
            "paragraphs": [
              "Rush 2 Recompiled brings the N64 racer to Windows while adding ways to revisit its races and stunts. Ghost runs let you compete against a recorded attempt, and the added unlock shop provides another progression option; the creator also offers a switch back to original Rush 2 unlock behavior. Choose that setting deliberately if you want a familiar return rather than a revised reward structure.",
              "The display can be smoother without speeding the game up. The simulation retains its original 30 FPS speed while interpolation fills higher-refresh displays. Widescreen and ultrawide framing, movable HUD placement, redrawn fonts and optional texture filters are presentation choices, not a different physics rate."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "local-and-online",
            "title": "Couch races and experimental online lobbies",
            "kind": "project",
            "paragraphs": [
              "Up to four local players can use assigned controllers or a keyboard, and two-player races can split the screen side by side. The controls screen supports rebinding buttons, triggers, sticks and keys. Rumble options extend to different feedback for crashes, scrapes and tire effects on supported hardware.",
              "The separate online mode supports up to eight players through a host’s lobby rather than a central server. Everyone needs the same version and the required track content. Because each machine runs the race and exchanges inputs, a steady connection matters; online play is explicitly experimental."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "extra-games",
            "title": "Optional Rush imports are separate purchases and files",
            "kind": "practical",
            "paragraphs": [
              "Your own supported USA Rush 2 ROM is the starting requirement. Supplying the supported N64 Rush 2049 ROM adds its tracks, cars, wings and arenas; the original San Francisco Rush ROM adds its own tracks and music. These extras do not arrive inside the port, and the Dreamcast import route is labeled more experimental.",
              "Keep a backup of the application’s saves directory under LocalAppData/Rush2Recompiled. The virtual Controller Pak, extra progress data and ghosts are separate files there. Portable mode can relocate data beside the executable on the next launch, which is useful when deliberately maintaining a movable installation."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Rush 2 Recompiled · project documentation",
            "url": "https://github.com/bryantmh/rush2recompiled"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/bryantmh/rush2recompiled/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Rush 2 ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/bryantmh/rush2recompiled"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/bryantmh/rush2recompiled"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/bryantmh/rush2recompiled"
    },
    {
      "id": "project:bvschaik-julius",
      "slug": "bvschaik-julius",
      "title": "Caesar III",
      "project": "Julius",
      "canonicalUrl": "https://playable.wtf/games/bvschaik-julius/",
      "originals": [
        {
          "id": "caesariii",
          "name": "Caesar III",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Strategy",
      "summary": "Caesar III with modern compatibility and small usability improvements.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Govern a city, not just its skyline",
            "kind": "background",
            "paragraphs": [
              "Caesar III asks you to build Roman cities while balancing trade, industry, money and imperial expectations. Some scenarios involve defending the settlement as well as developing it. Citizens provide clues about what needs attention, so the city’s apparent prosperity is only part of the picture.",
              "Its appeal lies in making the parts work together: new structures and challenges arrive as your career progresses, requiring you to rethink how the settlement functions. Julius is intended for players who want those original rules with a more usable modern display."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "faithful-logic",
            "title": "Why choose Julius rather than Augustus?",
            "kind": "project",
            "paragraphs": [
              "Julius deliberately keeps Caesar III’s game logic, look and feel while adding interface improvements such as widescreen support and windowed play. It also supports the high-quality MP3 music files once provided by Sierra. The goal is a familiar game, not a redesign of the simulation.",
              "That goal includes retaining gameplay bugs from the original when needed for compatibility. Augustus, a separate fork, adds broader gameplay changes such as roadblocks. If you want the original behavior, Julius is the appropriate branch; if you want a revised ruleset, compare Augustus before starting a long campaign."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "install-and-save",
            "title": "Use a patched copy and a writable folder",
            "kind": "practical",
            "paragraphs": [
              "Supply the original Caesar III files from your CD or digital purchase, patched to version 1.0.1.0. You can place Julius in that game folder or run it elsewhere and select the folder when prompted. The application does not include the original data.",
              "The game-data directory must be writable because Julius stores saves there. If saving fails, check that location rather than assuming the city itself is damaged. A system-protected installation directory can need a different location or permissions arrangement."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "save-compatibility",
            "title": "Your existing cities have a route forward",
            "kind": "practical",
            "paragraphs": [
              "Julius and original Caesar III saves are compatible in both directions. That makes Julius particularly useful when you want to continue an old city while retaining the option of returning to the original program.",
              "Augustus can import original or Julius saves, but cities saved by Augustus cannot be loaded back into Julius or Caesar III. Keep a separate pre-conversion copy if you experiment with that fork. The browser and mobile targets listed by the project also have their own platform setup; this page links the upstream project and its installation instructions."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Julius · project documentation",
            "url": "https://github.com/bvschaik/julius"
          },
          {
            "id": "original",
            "label": "Activision · Caesar III on Steam",
            "url": "https://store.steampowered.com/app/517790/Caesar_3/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/bvschaik/julius/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Original Caesar III game files from your disc or digital purchase.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/bvschaik/julius"
        },
        "setup": {
          "answer": "Get the platform release and follow its game-data location instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/bvschaik/julius"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/bvschaik/julius"
    },
    {
      "id": "project:captain-claw-web",
      "slug": "captain-claw-web",
      "title": "Captain Claw",
      "project": "Claw Web",
      "canonicalUrl": "https://playable.wtf/games/captain-claw-web/",
      "originals": [
        {
          "id": "captainclaw",
          "name": "Captain Claw",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Platformer",
      "summary": "Captain Claw’s 14 levels, with widescreen play, gamepad support and browser saves.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Platforming with a sword and ranged weapons",
            "kind": "background",
            "paragraphs": [
              "Captain Claw is Monolith's 1997 platform game. Jumping, sword attacks and ranged weapons give its movement a combat rhythm: you have to make space for an attack as well as reach the next platform. The browser port's separate sword, fire and weapon-switch actions preserve that distinction instead of reducing everything to one action button."
            ],
            "sourceIds": [
              "project",
              "gamepad"
            ]
          },
          {
            "id": "this-version",
            "title": "OpenClaw with a browser-focused interface",
            "kind": "project",
            "paragraphs": [
              "Arthur Boss's Claw Web is based on OpenClaw. The creator documents all 14 levels, original graphics and audio, saved progress and wide through super-widescreen resolutions. It ships no game content: provide CLAW.REZ from a copy you own before the engine can run the levels.",
              "The current address replaces older captain-claw-web and WASM-OpenClaw paths. The project documents redirects and migration of existing files and saves, so returning players should use the current play link rather than installing a second unrelated build."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controls",
            "title": "A controller offers distinct combat buttons",
            "kind": "practical",
            "paragraphs": [
              "With the standard Xbox-style mapping, A jumps, X attacks with the sword and B fires a ranged weapon. The shoulder buttons change weapons, the stick or D-pad moves and Start pauses. On PlayStation-style controllers, use the corresponding Cross, Square and Circle positions.",
              "If a controller is not detected, connect it, focus the tab and press a button. Safari's controller and vibration support is more limited than the other documented browsers; lack of rumble does not by itself mean the game has failed. On macOS, Ctrl with arrow keys can trigger system desktop shortcuts, so consider the game's WASD movement binding."
            ],
            "sourceIds": [
              "gamepad",
              "project",
              "launcher"
            ]
          },
          {
            "id": "storage",
            "title": "Leave space for the game data",
            "kind": "practical",
            "paragraphs": [
              "The project asks for about 120 MB of free browser storage for setup. Keep your original CLAW.REZ outside the browser as well: cached assets and browser-held progress should not be your only copy of the material needed to return. If loading fails in a private session, the troubleshooting guide identifies restricted persistent storage as a possible cause."
            ],
            "sourceIds": [
              "project",
              "troubleshooting"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Claw Web · scope and setup",
            "url": "https://github.com/arthurboss/claw-web"
          },
          {
            "id": "launcher",
            "label": "Claw Web · current launcher and controls",
            "url": "https://arthurboss.github.io/claw-web/"
          },
          {
            "id": "gamepad",
            "label": "Claw Web · gamepad guide",
            "url": "https://raw.githubusercontent.com/arthurboss/claw-web/HEAD/docs/player/GAMEPAD.md"
          },
          {
            "id": "troubleshooting",
            "label": "Claw Web · troubleshooting",
            "url": "https://raw.githubusercontent.com/arthurboss/claw-web/HEAD/docs/player/TROUBLESHOOTING.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://arthurboss.github.io/claw-web/"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Use CLAW.REZ from your own Captain Claw (1997) installation. The project asks for about 120 MB of free browser storage and does not include the retail archive.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/arthurboss/claw-web/blob/master/README.md"
        },
        "setup": {
          "answer": "Choose or drop CLAW.REZ in the one-time setup. Keep the tab open while it stores the archive.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://arthurboss.github.io/claw-web/"
        },
        "devices": {
          "answer": "The documented minimums are Chrome/Edge 105+, Firefox 121+ and Safari 16.4+.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/arthurboss/claw-web/blob/master/README.md"
        },
        "controls": {
          "answer": "Arrows or WASD move; Space jumps; left Ctrl attacks; left Alt fires; left Shift or E changes weapon; Esc pauses. Standard Xbox and PlayStation controllers are supported, with rumble.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/arthurboss/claw-web/blob/master/README.md"
        },
        "issues": {
          "answer": "On macOS, Ctrl plus an arrow can trigger the system’s Spaces shortcut. The project also documents migration from its older URLs.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/arthurboss/claw-web/blob/master/README.md"
        },
        "scope": {
          "answer": "The project describes all 14 original levels with the graphics and audio read from your CLAW.REZ.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/arthurboss/claw-web/blob/master/README.md"
        },
        "saves": {
          "answer": "Progress is saved in browser storage. The current project documents automatic migration of assets and saves from its older host paths.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/arthurboss/claw-web/blob/master/README.md"
        }
      },
      "credits": [
        {
          "name": "Arthur Boss",
          "role": "port-author",
          "url": "https://github.com/arthurboss/claw-web",
          "evidence": "https://github.com/arthurboss/claw-web",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/arthurboss/claw-web"
    },
    {
      "id": "project:chasmlol-2010-rust-rewrite-mashup",
      "slug": "chasmlol-2010-rust-rewrite-mashup",
      "title": "Modern Warfare 2 × Skate 3 × Minecraft",
      "project": "2010 Rust Rewrite Mashup",
      "canonicalUrl": "https://playable.wtf/games/chasmlol-2010-rust-rewrite-mashup/",
      "originals": [
        {
          "id": "callofdutymodernwarfare22009",
          "name": "Call of Duty: Modern Warfare 2 (2009)",
          "relationship": "associated-with"
        },
        {
          "id": "skate3",
          "name": "Skate 3",
          "relationship": "associated-with"
        },
        {
          "id": "minecraft",
          "name": "Minecraft",
          "relationship": "associated-with"
        }
      ],
      "kind": "Mashup mod",
      "genre": "Shooter",
      "summary": "Skating, MW2 combat and a Minecraft world in one IW4L-based project.",
      "editorial": {
        "sections": [
          {
            "id": "play",
            "title": "Shoot, skate and build in the same world",
            "kind": "project",
            "paragraphs": [
              "The 2010 Rust Rewrite Mashup combines MW2’s multiplayer maps and weapons with a skateboard mode and a Minecraft-generated world. In the Minecraft map, gunfire breaks blocks according to weapon damage and range, grenades act like TNT and broken blocks drop items. You can then place blocks, mine with an empty hand and use an inventory styled around the MW2 interface.",
              "This is deliberately a sandbox: the Minecraft map supplies unlimited ammunition and grenades, persistent access to several weapons and no time or score limit. Vanilla mobs can fight back, and the minimap follows the block world. Switching to skating keeps block collision, making your constructions part of the space you ride through."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "requirements",
            "title": "Skating is an optional extra",
            "kind": "practical",
            "paragraphs": [
              "A supported MW2 installation is required; the creator has tested the Steam edition. Skateboard mode additionally needs your own extracted Xbox 360 Skate 3 default.xex and data folder, plus a controller. Choosing No at the Skate 3 prompt leaves the rest available with skating disabled.",
              "The Minecraft world has a separate first-run process: the project says it fetches Minecraft 26.3 data from Mojang’s servers, roughly 125 MB, then can run offline. It does not require an existing Minecraft installation. That process is distinct from the player-supplied MW2 and optional Skate 3 files."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "start",
            "title": "Choose the overworld and learn its shared controls",
            "kind": "practical",
            "paragraphs": [
              "Extract to a writable folder and start iw4l.exe. After selecting MW2 and any Skate 3 files, choose Create Game → Minecraft → overworld, or use the included Minecraft World launcher. WASD and mouse retain the shooting layout; E opens inventory, number keys or the wheel choose a hotbar slot, and right click places a held block.",
              "J, or clicking both controller sticks, toggles skateboard mode. Controller layouts, aim assist and bindings can be adjusted in Options. The project still lists invisible skateboards on some maps, so the crossover remains experimental even when the movement is active."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "2010 Rust Rewrite Mashup · project documentation",
            "url": "https://github.com/chasmlol/2010-rust-rewrite-mashup"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/chasmlol/2010-rust-rewrite-mashup/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "A supported MW2 installation for its game content; review the separate Minecraft first-run data process in the README.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/chasmlol/2010-rust-rewrite-mashup"
        },
        "setup": {
          "answer": "Use the original release/build instructions. The Minecraft world’s first run fetches its own data from Mojang, according to the creator.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/chasmlol/2010-rust-rewrite-mashup"
        },
        "controls": {
          "answer": "J enters skateboard mode. The README documents rebindable controller layouts.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/chasmlol/2010-rust-rewrite-mashup"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/chasmlol/2010-rust-rewrite-mashup"
    },
    {
      "id": "project:chasmlol-skycraft",
      "slug": "chasmlol-skycraft",
      "title": "Skyrim × Minecraft",
      "project": "SkyCraft",
      "canonicalUrl": "https://playable.wtf/games/chasmlol-skycraft/",
      "originals": [
        {
          "id": "theelderscrollsvskyrim",
          "name": "The Elder Scrolls V: Skyrim",
          "relationship": "associated-with"
        },
        {
          "id": "minecraft",
          "name": "Minecraft",
          "relationship": "associated-with"
        }
      ],
      "kind": "Mashup mod",
      "genre": "RPG",
      "summary": "Minecraft’s player and blocks inside Skyrim’s world.",
      "editorial": {
        "sections": [
          {
            "id": "play",
            "title": "Minecraft tools meet Skyrim’s world",
            "kind": "project",
            "paragraphs": [
              "SkyCraft puts Minecraft movement, inventory and block interaction inside Skyrim. You can build across its landscape, mine ground into layers of dirt and stone, send water or lava flowing over terrain and fight Skyrim NPCs with Minecraft weapons. Minecraft lights illuminate the world, while Skyrim NPCs collide with placed blocks and attempt to navigate around them.",
              "The two games continue running their own logic. Skyrim retains quests and characters, while Minecraft runs hidden in the background and supplies the player’s movement, items and block world. Combat and crafting can train Skyrim skills, but this is an experimental connection between systems rather than a complete replacement for Skyrim’s ordinary interface."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Start after Helgen and budget for two games",
            "kind": "practical",
            "paragraphs": [
              "The project targets Skyrim Special Edition’s Anniversary runtime, with matching SKSE64 and the Anniversary Address Library. It does not support SE 1.5.97 or VR. You also need an account that owns Minecraft Java Edition; the bundled Prism setup handles Minecraft, Java, Fabric and the mod after sign-in.",
              "Allow extra memory and disk space for the hidden Minecraft process. The scripted cart ride and Helgen opening may get stuck, so use a post-Helgen save or the recommended alternate-start route. Back up saves before adding this early mod."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "input",
            "title": "Know which game receives each key",
            "kind": "practical",
            "paragraphs": [
              "Minecraft owns most controls: E opens inventory, F5 changes camera and Shift crouches. G remains Skyrim’s activate action for doors, dialogue and furniture. Esc opens Skyrim’s menu or closes a Minecraft screen; O opens Minecraft’s menu. That division is essential when a familiar Skyrim key no longer does what you expect.",
              "Skyrim’s inventory, magic, shouts and perks cannot be opened while Minecraft drives the player. Minecraft attacks also cannot clear every Skyrim quest object. Some camera mods conflict, and interiors share Minecraft coordinates, which can make placed blocks appear in another interior."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "friends",
            "title": "Share blocks without sharing Skyrim quests",
            "kind": "limitations",
            "paragraphs": [
              "Friends can join the Minecraft side of a SkyCraft session, sharing blocks, items, mobs and other players. Each person keeps a separate Skyrim world, NPCs and quests; guests cannot currently hit their own Skyrim NPCs. The multiplayer feature therefore does not make Skyrim’s campaign cooperative."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "SkyCraft · project documentation",
            "url": "https://github.com/chasmlol/SkyCraft"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/chasmlol/SkyCraft/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Skyrim Special Edition and Minecraft Java Edition copies.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/chasmlol/SkyCraft"
        },
        "setup": {
          "answer": "Follow the SKSE/Fabric prerequisites and install the mod using the project’s guide; back up saves first.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/chasmlol/SkyCraft"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/chasmlol/SkyCraft"
    },
    {
      "id": "project:chocolate-doom-chocolate-doom",
      "slug": "chocolate-doom-chocolate-doom",
      "title": "Doom / Heretic / Hexen / Strife",
      "project": "Chocolate Doom",
      "canonicalUrl": "https://playable.wtf/games/chocolate-doom-chocolate-doom/",
      "originals": [
        {
          "id": "doom",
          "name": "Doom",
          "relationship": "port-of"
        },
        {
          "id": "heretic",
          "name": "Heretic",
          "relationship": "port-of"
        },
        {
          "id": "hexen",
          "name": "Hexen",
          "relationship": "port-of"
        },
        {
          "id": "strife",
          "name": "Strife",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "Shooter",
      "summary": "Ports designed to preserve the original DOS behavior, including compatibility quirks.",
      "editorial": {
        "sections": [
          {
            "id": "the-games",
            "title": "A lone marine against a demonic invasion",
            "kind": "background",
            "paragraphs": [
              "The original Doom casts you as the surviving marine facing an invasion from Hell. Doom II brings that invasion to Earth and adds enemies and weapons, including the Super Shotgun. Their first-person combat is the foundation preserved by Chocolate Doom. The current commercial Doom bundle also contains a separate enhanced engine and newer episodes; those additions are not all part of the original DOS rules that this port aims to reproduce."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "Choose it for the original behavior",
            "kind": "project",
            "paragraphs": [
              "Chocolate Doom’s defining feature is fidelity to the DOS games. It aims to reproduce their display, input and behavior, including some bugs, instead of adding a new graphics style or redesigning the combat. The project also contains corresponding ports for Heretic, Hexen and Strife.",
              "That makes it useful when you want an older level or recorded demo to behave as expected. Compatibility with DOS configuration, saves and demo files is a central goal. It is a different priority from a port designed around advanced rendering or expanded mod scripting."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Use the setup program as your starting point",
            "kind": "practical",
            "paragraphs": [
              "The setup utility brings display, sound and input settings together in a menu-driven interface. Configure keyboard actions, mouse speed and buttons, or a gamepad before beginning. It can also launch a single-player level or start and join a network game.",
              "The original configuration file and Chocolate Doom’s extra settings are stored separately. This lets the port preserve the old configuration format while still offering settings needed by a modern application. Editing the setup menus is usually clearer than guessing which configuration file owns a particular option."
            ],
            "sourceIds": [
              "project",
              "setup"
            ]
          },
          {
            "id": "mods",
            "title": "Old total conversions can need a different launch option",
            "kind": "practical",
            "paragraphs": [
              "The vanilla -file option does not support every old total conversion’s sprite arrangement. Chocolate Doom provides -merge to reproduce the merge those packages traditionally performed with utilities such as DEUSF, without changing the main IWAD on disk. Some conversions also need their accompanying DeHackEd patches.",
              "Follow the conversion’s documented file set and the port’s examples. A WAD designed for a more advanced source port may depend on features outside Chocolate Doom’s preservation goals, so the Doom name alone is not a compatibility promise."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "quirks",
            "title": "An old limitation may be intentional",
            "kind": "limitations",
            "paragraphs": [
              "A behavior that looks wrong can be part of the DOS game being reproduced. The project maintains a NOT-BUGS explanation for intentional compatibility quirks, and the setup utility offers a small selection of compatibility switches. Choose those settings with the intended experience in mind: changing a quirk for convenience and reproducing an old demo exactly can be different objectives."
            ],
            "sourceIds": [
              "project",
              "setup"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Chocolate Doom · project documentation",
            "url": "https://raw.githubusercontent.com/chocolate-doom/chocolate-doom/HEAD/README.md"
          },
          {
            "id": "setup",
            "label": "Chocolate Doom · setup utility",
            "url": "https://www.chocolate-doom.org/wiki/index.php/Setup"
          },
          {
            "id": "original",
            "label": "Doom and Doom II · publisher descriptions of the original games",
            "url": "https://store.steampowered.com/api/appdetails?appids=2280&l=english"
          }
        ]
      },
      "families": [
        {
          "id": "doom",
          "title": "Doom",
          "indexUrl": "https://playable.wtf/families/#family-doom",
          "guideUrl": "https://playable.wtf/guides/doom-quake-browser-versions/",
          "choices": [
            {
              "slug": "wad-commander-v1",
              "label": "Classic Doom in a browser",
              "reason": "Choose owned WADs, shareware or Freedoom, with a documented touch layout.",
              "canonicalUrl": "https://playable.wtf/games/wad-commander-v1/"
            },
            {
              "slug": "chocolate-doom-chocolate-doom",
              "label": "Keep the original DOS behavior",
              "reason": "A native port for compatible classic content, old demos and saves.",
              "canonicalUrl": "https://playable.wtf/games/chocolate-doom-chocolate-doom/"
            },
            {
              "slug": "doom-3-browser",
              "label": "Try the Doom 3 demo",
              "reason": "A desktop browser route into the later game without a retail-data setup.",
              "canonicalUrl": "https://playable.wtf/games/doom-3-browser/"
            },
            {
              "slug": "dhewm-dhewm3",
              "label": "Play owned original Doom 3",
              "reason": "Use original 1.3.1 data in a native port; BFG Edition files do not fit.",
              "canonicalUrl": "https://playable.wtf/games/dhewm-dhewm3/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/chocolate-doom/chocolate-doom/releases/tag/chocolate-doom-3.1.1"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "setup": {
          "answer": "Install the matching release and use chocolate-setup to configure input and start a single-player or network game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.chocolate-doom.org/wiki/index.php/Setup"
        },
        "devices": {
          "answer": "The checked release offers Windows packages and macOS builds.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/chocolate-doom/chocolate-doom/HEAD/README.md"
        },
        "controls": {
          "answer": "The setup utility configures keyboard, mouse and gamepad/joystick input.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.chocolate-doom.org/wiki/index.php/Setup"
        },
        "multiplayer": {
          "answer": "The setup utility can host or join a network game. Firewall or NAT configuration can affect connections.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.chocolate-doom.org/wiki/index.php/Setup"
        },
        "issues": {
          "answer": "Original DOS bugs can be intentionally preserved. Total conversions may require -merge instead of the vanilla -file behavior.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/chocolate-doom/chocolate-doom/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/chocolate-doom/chocolate-doom"
    },
    {
      "id": "project:chrissotraidis-bluewake",
      "slug": "chrissotraidis-bluewake",
      "title": "The Legend of Zelda: The Wind Waker",
      "project": "BlueWake",
      "canonicalUrl": "https://playable.wtf/games/chrissotraidis-bluewake/",
      "originals": [
        {
          "id": "thelegendofzeldathewindwaker",
          "name": "The Legend of Zelda: The Wind Waker",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Adventure",
      "summary": "A GameCube recompilation with desktop and Apple-device routes.",
      "editorial": {
        "sections": [
          {
            "id": "wind-waker",
            "title": "The GameCube adventure, with optional changes",
            "kind": "project",
            "paragraphs": [
              "BlueWake recompiles the GameCube version of The Wind Waker and adds platform-specific controls, rendering settings and mods. It remains based on the original disc rather than being a port of Wind Waker HD. Its documented areas include the opening, Outset Island, sailing and Windfall; later dungeons and boss fights remain less established than those early routes.",
              "The optional Better Wind Waker features include Swift Sail, faster text and animation changes. Widescreen, texture packs and Smooth Motion are separate choices. That separation lets a returning player decide which conveniences to adopt instead of assuming every modification is required."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "platform-choice",
            "title": "Windows download or a personal Apple build",
            "kind": "practical",
            "paragraphs": [
              "The Windows package asks for your own USA GZLE01 revision 0 disc image and requires a Direct3D 12 GPU and AVX2-capable CPU. ISO and GCM are accepted; an RVZ first needs conversion through the documented Dolphin route. The Linux route is a source build, while the Apple mobile route uses an Apple Silicon Mac and signing.",
              "For iPhone or iPad, the README requires iOS or iPadOS 17, an A13 or newer device, Developer Mode, Xcode and substantial free Mac disk space. PadMint can organize the personal build. Touch controls have a layout editor; controller and keyboard mappings are also documented."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "updates-and-saves",
            "title": "Carry the save forward carefully",
            "kind": "practical",
            "paragraphs": [
              "Wind Waker Recomp has moved into BlueWake. The current Windows BlueWake release replaces the older project build and uses the same AppData/BlueWake save location. Back up that folder before switching. The older experimental 60 FPS game logic was removed; optional Smooth Motion is a separate presentation feature.",
              "On iPhone and iPad, use Game Data & Saves to export a backup before deleting the app, because deletion removes its local saves. Install updates over the existing application when possible. Area transitions can stall briefly, and demanding scenes can run slower on phones, so start with a modest rendering resolution before adding expensive effects."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "BlueWake · project documentation",
            "url": "https://github.com/chrissotraidis/bluewake"
          }
        ]
      },
      "families": [
        {
          "id": "zelda",
          "title": "Zelda adventures",
          "indexUrl": "https://playable.wtf/families/#family-zelda",
          "guideUrl": "https://playable.wtf/guides/zelda-game-versions/",
          "choices": [
            {
              "slug": "harbourmasters-shipwright",
              "label": "Ocarina of Time",
              "reason": "Ship of Harkinian offers native packages with ROM validation and configurable controls.",
              "canonicalUrl": "https://playable.wtf/games/harbourmasters-shipwright/"
            },
            {
              "slug": "zelda64recomp-zelda64recomp",
              "label": "Majora’s Mask",
              "reason": "Zelda64Recomp imports the North American ROM and adds optional dual-stick camera and autosave.",
              "canonicalUrl": "https://playable.wtf/games/zelda64recomp-zelda64recomp/"
            },
            {
              "slug": "zelda-links-awakening-2019-lasrecomp",
              "label": "The Switch Link’s Awakening",
              "reason": "LAS Recomp offers vanilla or randomizer play from your own version 1.0.0 files, with beta limitations.",
              "canonicalUrl": "https://playable.wtf/games/zelda-links-awakening-2019-lasrecomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/chrissotraidis/bluewake/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own USA GameCube Wind Waker disc (GZLE01, revision 0).",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/chrissotraidis/bluewake"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/chrissotraidis/bluewake"
        },
        "devices": {
          "answer": "See the creator’s platform-specific instructions. Native installation/building is required; this is not a mobile browser game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/chrissotraidis/bluewake"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/chrissotraidis/bluewake"
    },
    {
      "id": "project:chrissotraidis-projectreach",
      "slug": "chrissotraidis-projectreach",
      "title": "Halo: Combat Evolved",
      "project": "HaloPad",
      "canonicalUrl": "https://playable.wtf/games/chrissotraidis-projectreach/",
      "originals": [
        {
          "id": "halocombatevolved",
          "name": "Halo: Combat Evolved",
          "relationship": "associated-with"
        }
      ],
      "kind": "Source port",
      "genre": "Shooter",
      "summary": "A build-your-own Halo client for iPhone, iPad and Mac.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original campaign on the ringworld",
            "kind": "background",
            "paragraphs": [
              "Halo: Combat Evolved puts the Master Chief and Cortana on a mysterious ringworld after a crash landing. The campaign begins with surviving the Covenant assault and helping the remaining humans, then follows the discovery of what Halo actually does. Its ten missions give the shooting a continuing science-fiction story. HaloPad’s Xbox route brings that original campaign to its host platforms; it does not import Anniversary’s remastered graphics or MCC’s progression system."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "editions",
            "title": "Two Halo editions with different purposes",
            "kind": "project",
            "paragraphs": [
              "HaloPad is the current name of Project Reach. Its Xbox edition offers the original campaign and OpenCE multiplayer, while the optional PC Custom Edition route is for community servers and LAN. They are separate choices at launch, keep their own saves and cannot play matches with each other. The Xbox edition is the recommended starting point because it needs one disc image.",
              "The project documents OpenCE matches of up to 128 players and Custom Edition servers shared with PC players. Those are different networking systems, not a single combined lobby. Custom maps can be imported, but Windows DLL mods such as Chimera, OpenSauce and HAC2 do not load."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "build",
            "title": "Build the app before importing Halo",
            "kind": "practical",
            "paragraphs": [
              "There is no public ready-made HaloPad app download. An Apple Silicon Mac can build it through PadMint, while a personal GitHub workflow can build the Xbox edition from another computer. iPhone and iPad installation then requires signing. Custom Edition additionally needs an Apple Silicon Mac, the original installer, a Halo PC product key and Wine.",
              "For Xbox play, add an original-Xbox Halo ISO or XISO inside the installed app. Halo Anniversary, MCC and the retail PC executable are not substitutes. Import copies roughly 2 GB of maps, after which the source image can be removed from the device. USA NTSC is the tested disc choice; broader region claims come from upstream."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "input-and-updates",
            "title": "Set up controls and preserve the app data",
            "kind": "practical",
            "paragraphs": [
              "The touch overlay can be moved and resized, with adjustable look speed. Connect a controller before opening HaloPad for the most reliable behavior. On Mac, Custom Edition releases the pointer with Escape; the Xbox edition uses F12. Halo’s Button 6 pickup prompt maps to RB on a controller.",
              "Install updates over the existing app with the same signing identity. Deleting it first also deletes imported maps, profiles and saves. Multiplayer peers need compatible engine network versions, and a changed engine may require restarting a campaign level. First appearances of maps or effects can hitch, some Xbox textures differ and reconnecting a controller can still cause trouble."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "HaloPad · project documentation",
            "url": "https://github.com/chrissotraidis/projectreach"
          },
          {
            "id": "original",
            "label": "Xbox Game Studios · original campaign description in Anniversary",
            "url": "https://store.steampowered.com/app/1064221/Halo_Combat_Evolved_Anniversary/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/chrissotraidis/projectreach"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Halo Xbox copy; see the current disc requirements.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/chrissotraidis/projectreach"
        },
        "setup": {
          "answer": "Follow Build and install in the repository before adding your disc. Do not expect an App Store or ready-made download.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/chrissotraidis/projectreach"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/chrissotraidis/projectreach"
    },
    {
      "id": "project:ckosmic-g64",
      "slug": "ckosmic-g64",
      "title": "Garry’s Mod × Super Mario 64",
      "project": "G64",
      "canonicalUrl": "https://playable.wtf/games/ckosmic-g64/",
      "originals": [
        {
          "id": "garrysmod",
          "name": "Garry's Mod",
          "relationship": "associated-with"
        },
        {
          "id": "supermario64",
          "name": "Super Mario 64",
          "relationship": "associated-with"
        }
      ],
      "kind": "Mashup mod",
      "genre": "Sandbox",
      "summary": "A playable libsm64 Mario inside Garry’s Mod.",
      "editorial": {
        "sections": [
          {
            "id": "play",
            "title": "Mario as a sandbox character",
            "kind": "project",
            "paragraphs": [
              "G64 adds a playable Mario to Garry’s Mod using libsm64, whose purpose is to bring the original character’s movement and rendering into other engines. The interesting change is the relationship between the character and the map: an existing Garry’s Mod environment becomes somewhere to explore with Mario, rather than a replacement set of Super Mario 64 courses.",
              "The addon has its own G64 spawn tab and Utilities settings. Its exposed actions include movement, jumping, crouching, attacking and picking things up, plus removing Mario and choosing emotes. That supports a sandbox session built around movement and experimentation rather than a newly authored star-collection campaign."
            ],
            "sourceIds": [
              "project",
              "settings",
              "library"
            ]
          },
          {
            "id": "setup",
            "title": "Install both halves of the addon",
            "kind": "practical",
            "paragraphs": [
              "G64 requires Windows and the x86-64 branch of Garry’s Mod. Subscribe to the Workshop addon or place the repository in the addons folder, then install the native integration files with the separate G64 installer. The Workshop subscription alone does not supply that native module.",
              "After changing Garry’s Mod to its 64-bit branch, load a map and open Utilities → G64 → Settings. Set the path to your own US Super Mario 64 ROM, then spawn Mario from the G64 tab. Keeping the host branch, addon and integration module aligned is the first thing to check if Mario does not appear."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "customize",
            "title": "Tune the character without changing the map",
            "kind": "practical",
            "paragraphs": [
              "The G64 panels provide key bindings, gamepad camera sensitivity, HUD size, volume and separate colors for Mario’s clothing and body parts. A game-over option returns you to Mario mode after running out of lives. These are useful adjustments for making a long sandbox session comfortable.",
              "Mesh interpolation can smooth Mario’s appearance, but its own tooltip warns about visual artifacts and a small performance cost. If the character looks wrong after enabling it, return to the standard setting before changing unrelated Garry’s Mod graphics options."
            ],
            "sourceIds": [
              "settings"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "G64 · project documentation",
            "url": "https://github.com/ckosmic/g64"
          },
          {
            "id": "settings",
            "label": "G64 · settings and controls implementation",
            "url": "https://github.com/ckosmic/g64/blob/HEAD/lua/autorun/client/g64_spawnmenu.lua"
          },
          {
            "id": "library",
            "label": "libsm64 · movement and rendering library",
            "url": "https://github.com/libsm64/libsm64"
          }
        ]
      },
      "families": [
        {
          "id": "mario",
          "title": "Mario platformers",
          "indexUrl": "https://playable.wtf/families/#family-mario",
          "guideUrl": "https://playable.wtf/guides/mario-platformer-versions/",
          "choices": [
            {
              "slug": "coop-deluxe-sm64coopdx",
              "label": "SM64 with friends",
              "reason": "Native online co-op synchronizes enemies and events, with public or private CoopNet rooms.",
              "canonicalUrl": "https://playable.wtf/games/coop-deluxe-sm64coopdx/"
            },
            {
              "slug": "super-mario-galaxy-galaxypad",
              "label": "Galaxy on iPhone or iPad",
              "reason": "Build a personal native app with touch and controller input; bring the supported USA Wii image.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-galaxy-galaxypad/"
            },
            {
              "slug": "super-mario-wonder-recomp",
              "label": "Follow an early Wonder build",
              "reason": "Source-build the Switch 1.0.0 project if you want to explore its experimental early-course progress.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-wonder-recomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/ckosmic/g64/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "64-bit Garry’s Mod and your own US Super Mario 64 ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/ckosmic/g64"
        },
        "setup": {
          "answer": "Follow the workshop/addon and G64 integration instructions in the original repository.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/ckosmic/g64"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/ckosmic/g64"
    },
    {
      "id": "project:classicube",
      "slug": "classicube",
      "title": "ClassiCube",
      "project": "ClassiCube",
      "canonicalUrl": "https://playable.wtf/games/classicube/",
      "originals": [
        {
          "id": "minecraft",
          "name": "Minecraft",
          "relationship": "inspired-by"
        }
      ],
      "kind": "Fan recreation",
      "genre": "Sandbox",
      "summary": "Build your own corner of a classic block world.",
      "editorial": {
        "sections": [
          {
            "id": "classic",
            "title": "Building in the Minecraft Classic tradition",
            "kind": "background",
            "paragraphs": [
              "ClassiCube recreates the style of the 2009 Minecraft Classic client. The focus is placing and exploring block structures in that older creative sandbox, rather than following the survival progression of modern Minecraft. That makes it a useful choice when the activity you want is building in a shared block world.",
              "The distinction is deliberate: ClassiCube does not provide modern Minecraft survival, use Minecraft accounts or connect to modern Minecraft servers. It is its own client and community, with optional extensions such as custom blocks, models and environment colors."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "web-client",
            "title": "The browser client has its own tradeoffs",
            "kind": "project",
            "paragraphs": [
              "The project offers both a web client and native downloads. Its browser launch notice explicitly lists no music or sound, lower performance, alternate textures and an inability to connect to every server. Choose the browser route for convenient access while allowing for those differences from the downloaded client.",
              "A server can also set rules that change what a client is allowed to do. If flying or speed controls do not work, the project's help notes that the server may have disabled those abilities. A missing ability in a particular world is therefore not necessarily a broken key binding."
            ],
            "sourceIds": [
              "web",
              "project"
            ]
          },
          {
            "id": "controls",
            "title": "Adjust the view and bindings to suit the world",
            "kind": "practical",
            "paragraphs": [
              "Open Escape, then Options and Controls to inspect or change the keyboard layout. The project's troubleshooting guidance suggests reducing view distance with F when performance is poor. That reduces how much of the world must be drawn, a practical adjustment when entering a larger or more demanding build.",
              "For a first visit, read the chosen server's rules and use the client's controls menu before assuming it behaves like a newer Minecraft release. If a particular server or a more complete audiovisual experience matters to you, compare the native client against the web client's stated limitations."
            ],
            "sourceIds": [
              "project",
              "web"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "ClassiCube · project and troubleshooting documentation",
            "url": "https://raw.githubusercontent.com/ClassiCube/ClassiCube/master/readme.md"
          },
          {
            "id": "web",
            "label": "ClassiCube · web client notices",
            "url": "https://www.classicube.net/server/play/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://www.classicube.net/server/play/"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The official site offers an in-browser client. Extra game files are not specified for that route.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.classicube.net/"
        },
        "setup": {
          "answer": "Open the official browser client. The site may ask you to acknowledge its web-client limitations.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.classicube.net/server/play/"
        },
        "devices": {
          "answer": "The project has documented mobile web touch controls; support varies by device and browser.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.classicube.net/"
        },
        "controls": {
          "answer": "After joining a world, Escape opens Pause. Go to Options → Controls to see the client’s key bindings. F cycles view distance; a lower distance can improve performance. Touch controls are documented for mobile web.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/ClassiCube/ClassiCube/master/readme.md"
        },
        "multiplayer": {
          "answer": "The site discusses web-client server connections, but the web client cannot connect to all servers.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.classicube.net/server/play/"
        },
        "issues": {
          "answer": "The official notice says the web client has no sound, lower performance, alternate textures, and cannot connect to all servers.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.classicube.net/server/play/"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/ClassiCube/ClassiCube"
    },
    {
      "id": "project:coccofresco-triaevum",
      "slug": "coccofresco-triaevum",
      "title": "The Legend of Zelda: Ocarina of Time 3D",
      "project": "TriAevum — Echoes of Time",
      "canonicalUrl": "https://playable.wtf/games/coccofresco-triaevum/",
      "originals": [
        {
          "id": "thelegendofzeldaocarinaoftime3d",
          "name": "The Legend of Zelda: Ocarina of Time 3D",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Adventure",
      "summary": "The 3DS adventure with a native renderer and single-screen interface.",
      "editorial": {
        "sections": [
          {
            "id": "release-status",
            "title": "Use the current beta release notes",
            "kind": "limitations",
            "paragraphs": [
              "TriAevum now has beta releases for Windows and Linux. The old alpha.3 and alpha.3b builds were withdrawn as broken; that warning does not mean the newer beta downloads are unavailable. Check the version attached to instructions before following an older setup or troubleshooting note.",
              "Beta.1b addresses upscaler startup crashes, menu behavior and scene-change problems. Beta.1c is a Linux save-state location hotfix; its notes say Windows players can remain on beta.1b. These are still experimental releases, and the creator asks players to back up progress before updating."
            ],
            "sourceIds": [
              "beta",
              "release"
            ]
          },
          {
            "id": "single-screen",
            "title": "Ocarina of Time 3D on one screen",
            "kind": "project",
            "paragraphs": [
              "Echoes of Time is TriAevum’s Ocarina of Time 3D project. Its distinguishing design is a single-screen HUD and menu experience inspired by rlgcarrot’s TopScreen, reimplemented for this runtime. The game input is the 3DS remake, not the N64 original used by other Ocarina projects.",
              "The renderer offers toon shading, outlines, widescreen framing, a configurable camera and optional effects. Its 60/90 FPS option interpolates the original 30 Hz game state; it does not turn the underlying physics into a 60 or 90 Hz simulation. F2 temporarily disables the main added visual effects without discarding their configuration, which helps compare the presentation."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "data-and-settings",
            "title": "What the Forge setup prepares",
            "kind": "practical",
            "paragraphs": [
              "The documented Forge importer accepts supported decrypted personal EUR or USA dumps in .3ds or .cci form and checks their contents. It also prepares shaders and the TopScreen texture package, using an internet connection unless that package is supplied locally. The engine download includes no ROM or original game assets.",
              "The newer beta supports decrypted EUR or USA .3ds and .cci dumps, including original and Rev 1 inputs; Japanese, Korean and Taiwanese releases remain unsupported. On Windows, updating into a new folder requires preparing it with Forge and carrying over data/savedata. Linux beta.1c moves default save states out of the read-only package and beside user data. Preserve ordinary in-game saves as well as save states when changing versions."
            ],
            "sourceIds": [
              "project",
              "beta",
              "release"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "TriAevum — Echoes of Time · project documentation",
            "url": "https://github.com/coccofresco/TriAevum"
          },
          {
            "id": "beta",
            "label": "TriAevum · beta.1b fixes and limitations",
            "url": "https://github.com/coccofresco/TriAevum/blob/main/docs/releases/v0.8.0-beta.1b.md"
          },
          {
            "id": "release",
            "label": "TriAevum · beta.1c release and packages",
            "url": "https://github.com/coccofresco/TriAevum/releases/tag/v0.8.0-beta.1c"
          }
        ]
      },
      "families": [
        {
          "id": "zelda",
          "title": "Zelda adventures",
          "indexUrl": "https://playable.wtf/families/#family-zelda",
          "guideUrl": "https://playable.wtf/guides/zelda-game-versions/",
          "choices": [
            {
              "slug": "harbourmasters-shipwright",
              "label": "Ocarina of Time",
              "reason": "Ship of Harkinian offers native packages with ROM validation and configurable controls.",
              "canonicalUrl": "https://playable.wtf/games/harbourmasters-shipwright/"
            },
            {
              "slug": "zelda64recomp-zelda64recomp",
              "label": "Majora’s Mask",
              "reason": "Zelda64Recomp imports the North American ROM and adds optional dual-stick camera and autosave.",
              "canonicalUrl": "https://playable.wtf/games/zelda64recomp-zelda64recomp/"
            },
            {
              "slug": "zelda-links-awakening-2019-lasrecomp",
              "label": "The Switch Link’s Awakening",
              "reason": "LAS Recomp offers vanilla or randomizer play from your own version 1.0.0 files, with beta limitations.",
              "canonicalUrl": "https://playable.wtf/games/zelda-links-awakening-2019-lasrecomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/coccofresco/TriAevum/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own decrypted supported European or US Ocarina of Time 3D ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/coccofresco/TriAevum"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/coccofresco/TriAevum"
        },
        "issues": {
          "answer": "The alpha.3 and alpha.3b builds were withdrawn. Use the current release notes to choose a later beta and back up existing saves and settings before upgrading.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/coccofresco/TriAevum/releases"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/coccofresco/TriAevum"
    },
    {
      "id": "project:coop-deluxe-sm64coopdx",
      "slug": "coop-deluxe-sm64coopdx",
      "title": "Super Mario 64",
      "project": "sm64coopdx",
      "canonicalUrl": "https://playable.wtf/games/coop-deluxe-sm64coopdx/",
      "originals": [
        {
          "id": "supermario64",
          "name": "Super Mario 64",
          "relationship": "associated-with"
        }
      ],
      "kind": "Source port",
      "genre": "Platformer",
      "summary": "Super Mario 64 with synchronized online co-op and Lua mods.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A castle full of shared goals",
            "kind": "background",
            "paragraphs": [
              "Super Mario 64 turns Peach’s castle into a gateway to large, self-contained worlds. Mario enters paintings to find Power Stars through platforming, puzzles, races and exploration, using a broad movement set that includes swimming, wall-height jumps and temporary cap powers. The original adventure’s appeal is the freedom to revisit a space and find another objective rather than simply moving through a linear course."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "shared-world",
            "title": "What co-op changes",
            "kind": "project",
            "paragraphs": [
              "sm64coopdx continues sm64ex-coop with online play and a larger Lua modding interface. Its key distinction is synchronization: enemies, level events and other entities are shared between players, so you interact with the same world rather than merely seeing another character moving through a separate session.",
              "That shared setting makes the familiar star hunt a social activity. The project also supports Lua modifications, letting a host’s chosen mods shape the session. A modded lobby can therefore be a substantially different experience from an ordinary Super Mario 64 adventure; check what the group intends to play before joining."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "lobbies",
            "title": "Public rooms or a session with friends",
            "kind": "practical",
            "paragraphs": [
              "Choose Host from the main menu to start a session. CoopNet can create a public lobby when its password field is left empty, or a private lobby accessed with a password or Discord invitation. Join separates public lobbies, private lobbies and direct connections, making CoopNet the straightforward route when you do not want to configure router forwarding.",
              "Discord invitations require Game Activity to be enabled, and appearing offline prevents sending them. Direct Connection is a separate networking choice with its own port requirements; the project documents UDP port 7777 as the default. Use the network option that matches how the host set up the room."
            ],
            "sourceIds": [
              "hosting"
            ]
          },
          {
            "id": "install-and-customize",
            "title": "Use the project’s installation path",
            "kind": "practical",
            "paragraphs": [
              "Start from the official release and wiki for your operating system, then follow its game-data instructions. The wiki separates Windows, Linux and Intel/ARM macOS build guidance. These platform instructions belong to this native co-op project; a browser Super Mario 64 build or another PC fork is not interchangeable with it.",
              "For custom content, the project’s Lua documentation is the useful reference. It describes the interface mod authors work with, while the separate C documentation is for contributors changing the application itself. Playing a published mod does not mean you need to modify the engine code."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "sm64coopdx · project documentation",
            "url": "https://github.com/coop-deluxe/sm64coopdx"
          },
          {
            "id": "original",
            "label": "Nintendo · Super Mario 64",
            "url": "https://www.nintendo.com/en-gb/Games/Nintendo-64/Super-Mario-64-269745.html"
          },
          {
            "id": "hosting",
            "label": "sm64coopdx · hosting and joining",
            "url": "https://github.com/coop-deluxe/sm64coopdx/wiki/Hosting-and-joining"
          }
        ]
      },
      "families": [
        {
          "id": "mario",
          "title": "Mario platformers",
          "indexUrl": "https://playable.wtf/families/#family-mario",
          "guideUrl": "https://playable.wtf/guides/mario-platformer-versions/",
          "choices": [
            {
              "slug": "coop-deluxe-sm64coopdx",
              "label": "SM64 with friends",
              "reason": "Native online co-op synchronizes enemies and events, with public or private CoopNet rooms.",
              "canonicalUrl": "https://playable.wtf/games/coop-deluxe-sm64coopdx/"
            },
            {
              "slug": "super-mario-galaxy-galaxypad",
              "label": "Galaxy on iPhone or iPad",
              "reason": "Build a personal native app with touch and controller input; bring the supported USA Wii image.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-galaxy-galaxypad/"
            },
            {
              "slug": "super-mario-wonder-recomp",
              "label": "Follow an early Wonder build",
              "reason": "Source-build the Switch 1.0.0 project if you want to explore its experimental early-course progress.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-wonder-recomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/coop-deluxe/sm64coopdx/releases"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "setup": {
          "answer": "Use the project wiki for the current build, game-data and installation workflow.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/coop-deluxe/sm64coopdx"
        },
        "multiplayer": {
          "answer": "Online co-op synchronizes enemies and level events between players.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/coop-deluxe/sm64coopdx"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/coop-deluxe/sm64coopdx"
    },
    {
      "id": "project:corsixth-corsixth",
      "slug": "corsixth-corsixth",
      "title": "Theme Hospital",
      "project": "CorsixTH",
      "canonicalUrl": "https://playable.wtf/games/corsixth-corsixth/",
      "originals": [
        {
          "id": "themehospital",
          "name": "Theme Hospital",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Simulation",
      "summary": "Theme Hospital’s hospital-building systems on a replacement engine.",
      "editorial": {
        "sections": [
          {
            "id": "running-a-hospital",
            "title": "A hospital full of management problems",
            "kind": "project",
            "paragraphs": [
              "CorsixTH recreates Theme Hospital’s business simulation, where treatment rooms, staff and hospital policy have to cope with an unruly flow of patients. The project includes the single-player campaign, diseases and rooms, management windows, and events such as emergencies, epidemics, earthquakes and VIP visits. That combination makes planning capacity as important as constructing the next room.",
              "The maintainers describe the full campaign as completable. The reimplementation also adds custom campaigns and a built-in map editor, so finishing the original scenarios does not exhaust the kinds of hospitals you can manage."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "modern-management",
            "title": "More room to see and plan",
            "kind": "project",
            "paragraphs": [
              "High-resolution support, zoom and interface scaling let you adapt the hospital view to a modern screen. Subtitles and configurable hotkeys make the interface more flexible, while an adviser-message history helps recover information that passed while you were busy elsewhere.",
              "Several changes are optional management conveniences. You can allow room building while paused, remove destroyed rooms for a fee and use unlimited save files. These options are useful when experimenting with a crowded layout; decide which rules you want before turning a campaign into a series of construction trials."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installation",
            "title": "The engine still needs Theme Hospital’s assets",
            "kind": "practical",
            "paragraphs": [
              "CorsixTH supplies the new application but uses graphics, sound and other data from the original game. Install the package for your operating system, then point it at the Theme Hospital installation or the HOSP folder copied from your disc. The creator’s getting-started guide also supports demo data, but that contains only one level and lacks most management screens.",
              "Official releases include Windows and macOS builds and a Linux AppImage. Linux also has packaging options such as Flatpak and distribution repositories. Keep the package source clear when looking for help, since separately maintained wrappers can have their own installation behavior."
            ],
            "sourceIds": [
              "project",
              "install"
            ]
          },
          {
            "id": "missing-original-features",
            "title": "Where it differs from the original",
            "kind": "limitations",
            "paragraphs": [
              "Multiplayer/LAN and competing AI hospitals remain missing. Other gaps include the bonus rat level and some end-of-level presentation. These omissions are worth knowing before choosing CorsixTH specifically to revisit one of those features.",
              "The original graphics do not include complete sets for every optional patient type, so enabling regular spawning of certain unusual conditions can cause visual anomalies. The project also lists some object-and-wall glitches. Its complete campaign claim does not mean every original feature or optional visual combination is identical."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "CorsixTH · project documentation",
            "url": "https://github.com/CorsixTH/CorsixTH"
          },
          {
            "id": "install",
            "label": "CorsixTH · getting started and supported demo data",
            "url": "https://github.com/CorsixTH/CorsixTH/wiki/Getting-Started"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/CorsixTH/CorsixTH/releases"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "CorsixTH needs the Theme Hospital demo or the full original game. The creator links to the demo and the GOG edition.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://corsixth.com/"
        },
        "setup": {
          "answer": "Download the installer or standalone application for your platform. The creator also lists Linux Flatpak and package-manager options; original game assets are separate.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://corsixth.com/download.html"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/CorsixTH/CorsixTH"
    },
    {
      "id": "project:counter-strike-1-6",
      "slug": "counter-strike-1-6",
      "title": "Counter-Strike 1.6",
      "project": "CSJS",
      "canonicalUrl": "https://playable.wtf/games/counter-strike-1-6/",
      "originals": [
        {
          "id": "counterstrike16",
          "name": "Counter-Strike 1.6",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "Classic Counter-Strike matches through a live browser server list.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Team tactics and weapon choices",
            "kind": "background",
            "paragraphs": [
              "Counter-Strike is built around teams completing objectives: supporting a teammate and securing the route to a hostage or objective matter alongside individual aim. Its weapon choices add another decision. A fast, inexpensive close-range gun asks for a different approach from a costly sniper rifle with a small margin for a missed shot.",
              "The CSJS weapon guide describes the original 1.6 arsenal, including armor effects, penetration, alternate firing modes and handling. Use it to understand a weapon's job rather than choosing only by its headline damage. Those mechanics explain why learning a map and the right engagement distance remains useful even when the client starts in a browser."
            ],
            "sourceIds": [
              "original",
              "weapons"
            ]
          },
          {
            "id": "this-version",
            "title": "What CSJS puts around the match",
            "kind": "project",
            "paragraphs": [
              "LK's CSJS pairs its Xash3D FWGS browser client with a live server list and shared scoreboard. Quick play suits an immediate match; the server browser gives you more control over the map or room you enter.",
              "Community operators can set a server's maps, rules and capacity. Compatible custom content must be available to both the server and browser client. Consequently, the server you choose matters: CSJS is an entry point to individual matches, rather than one fixed playlist with identical rules everywhere."
            ],
            "sourceIds": [
              "project",
              "servers"
            ]
          },
          {
            "id": "voice",
            "title": "Joining and talking to teammates",
            "kind": "practical",
            "paragraphs": [
              "Enter a player name when joining. Voice chat is optional and belongs to the server you enter. If you enable it, select a microphone in the join dialog and approve the browser's microphone request; hold K to speak and release it to mute. You can join without granting microphone access, which is useful when you simply want to learn a map or check the controls first."
            ],
            "sourceIds": [
              "voice"
            ]
          },
          {
            "id": "phone",
            "title": "The same servers on a phone",
            "kind": "practical",
            "paragraphs": [
              "Phone players join the same server list as desktop players, rather than a separate simplified edition. The engine supplies touch movement, aiming and action controls, while landscape fullscreen depends on what the mobile browser permits."
            ],
            "sourceIds": [
              "phone"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Valve · Counter-Strike",
            "url": "https://store.steampowered.com/app/10/CounterStrike/"
          },
          {
            "id": "project",
            "label": "CSJS · server browser",
            "url": "https://csjs.live/"
          },
          {
            "id": "weapons",
            "label": "CSJS · weapon guide",
            "url": "https://csjs.live/weapons"
          },
          {
            "id": "servers",
            "label": "CSJS · custom server guide",
            "url": "https://csjs.live/custom-counter-strike-servers"
          },
          {
            "id": "voice",
            "label": "CSJS · voice chat",
            "url": "https://csjs.live/counter-strike-voice-chat"
          },
          {
            "id": "phone",
            "label": "CSJS · mobile play",
            "url": "https://csjs.live/play-counter-strike-on-your-phone"
          }
        ]
      },
      "families": [
        {
          "id": "counter-strike",
          "title": "Counter-Strike",
          "indexUrl": "https://playable.wtf/families/#family-counter-strike",
          "guideUrl": "https://playable.wtf/guides/counter-strike-16-browser-setup/",
          "choices": [
            {
              "slug": "counter-strike-1-6",
              "label": "Quick team match",
              "reason": "A live server list, optional voice and explicit desktop/phone input avoid manual file and server preparation.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-1-6/"
            },
            {
              "slug": "half-life-webxash",
              "label": "Your files and server",
              "reason": "Import your own valve/cstrike folders and connect to a known WebSocket-compatible server.",
              "canonicalUrl": "https://playable.wtf/games/half-life-webxash/"
            },
            {
              "slug": "counter-strike-bunnyhop",
              "label": "Bunnyhop time trials",
              "reason": "Source-style hopping, selectable movement styles and records for desktop keyboard-and-mouse play.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-bunnyhop/"
            },
            {
              "slug": "counter-strike-surf",
              "label": "Surf practice",
              "reason": "Solo ramps, route viewing and repeatable practice positions before chasing a timed finish.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-surf/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://csjs.live"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "setup": {
          "answer": "Select a live server or Quick play, enter a player name and join. Voice is optional; you can enter a match without enabling the microphone.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://csjs.live/"
        },
        "devices": {
          "answer": "CSJS detects touch devices and enables Xash3D’s touch interface. It requests landscape fullscreen where the browser allows it; mobile and desktop use the same server list.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://csjs.live/play-counter-strike-on-your-phone"
        },
        "controls": {
          "answer": "Desktop defaults: WASD moves and the mouse aims; left/right mouse buttons perform primary/secondary attacks. Space jumps, Ctrl crouches, Shift walks, R reloads and E uses. B opens buying, M chooses a team, Q returns to the last weapon, the mouse wheel changes weapons and Tab shows scores. Saved or custom bindings can differ. On phones, use the touch interface and rotate to landscape.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://csjs.live/"
        },
        "multiplayer": {
          "answer": "The creator advertises multiplayer servers, voice chat and custom server hosting.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://csjs.live"
        },
        "scope": {
          "answer": "CSJS focuses on Counter-Strike 1.6 multiplayer servers. The related Quake III and Jedi Academy links launch separate games.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://csjs.live/"
        }
      },
      "credits": [],
      "sourceUrl": "https://csjs.live"
    },
    {
      "id": "project:counter-strike-bunnyhop",
      "slug": "counter-strike-bunnyhop",
      "title": "Counter-Strike: Source",
      "project": "bunnyhop.lol",
      "canonicalUrl": "https://playable.wtf/games/counter-strike-bunnyhop/",
      "originals": [
        {
          "id": "counterstrikesource",
          "name": "Counter-Strike: Source",
          "relationship": "inspired-by"
        }
      ],
      "kind": "Movement recreation",
      "genre": "Sports",
      "summary": "Source-style bunnyhop maps, ghosts, replays and online servers.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Turn movement into a time trial",
            "kind": "background",
            "paragraphs": [
              "Bunnyhop.lol takes the movement side of Counter-Strike: Source and makes it the whole challenge. Instead of winning a gunfight, you try to carry speed across a course, finish cleanly and improve your time. The creator describes Source-style 100-tick movement, with distinct movement styles and separate records for each.",
              "A short course can reward a long practice session: cleaner turns and better landings change a run even when the route itself is familiar. That makes it a good fit for players who enjoy repeating a skill and comparing their own attempts, rather than progressing through a story."
            ],
            "sourceIds": [
              "project",
              "guide"
            ]
          },
          {
            "id": "this-version",
            "title": "Maps, ghosts and a shared server",
            "kind": "project",
            "paragraphs": [
              "The browser game offers maps, ghosts, replays, online servers and map voting. A guest can begin without linking an account. The server gives you other runners and chat, while the timed course still gives each player an individual goal.",
              "Movement style matters when comparing results. A personal best in one style does not become the record in another. Choose the style you intend to learn before using a ghost or leaderboard time as your benchmark."
            ],
            "sourceIds": [
              "project",
              "guide"
            ]
          },
          {
            "id": "first-run",
            "title": "What starts and ends a run",
            "kind": "practical",
            "paragraphs": [
              "Choose a map and style, then leave the green start zone to begin timing. Reach the red end zone to finish. Hold jump for automatic hopping; in the air, release W and pair A with a left mouse turn or D with a right turn. R restarts and F3 changes style, with rebinding available.",
              "Use a current desktop browser with WebGL 2 and a keyboard and mouse. The project excludes phone and tablet play. On larger maps, lower the graphics preset if the display struggles; smooth feedback makes it easier to judge a turn."
            ],
            "sourceIds": [
              "guide"
            ]
          },
          {
            "id": "progress",
            "title": "Keep records and video exports straight",
            "kind": "practical",
            "paragraphs": [
              "Link Discord or an email account if you want progress to follow you across devices. MP4 replay exports are videos of completed runs, useful for watching a line or sharing an attempt; they are not save files that restore you to a position in the course."
            ],
            "sourceIds": [
              "guide"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "bunnyhop.lol · project overview",
            "url": "https://bunnyhop.lol"
          },
          {
            "id": "guide",
            "label": "bunnyhop.lol · how to play",
            "url": "https://bunnyhop.lol/about"
          }
        ]
      },
      "families": [
        {
          "id": "counter-strike",
          "title": "Counter-Strike",
          "indexUrl": "https://playable.wtf/families/#family-counter-strike",
          "guideUrl": "https://playable.wtf/guides/counter-strike-16-browser-setup/",
          "choices": [
            {
              "slug": "counter-strike-1-6",
              "label": "Quick team match",
              "reason": "A live server list, optional voice and explicit desktop/phone input avoid manual file and server preparation.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-1-6/"
            },
            {
              "slug": "half-life-webxash",
              "label": "Your files and server",
              "reason": "Import your own valve/cstrike folders and connect to a known WebSocket-compatible server.",
              "canonicalUrl": "https://playable.wtf/games/half-life-webxash/"
            },
            {
              "slug": "counter-strike-bunnyhop",
              "label": "Bunnyhop time trials",
              "reason": "Source-style hopping, selectable movement styles and records for desktop keyboard-and-mouse play.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-bunnyhop/"
            },
            {
              "slug": "counter-strike-surf",
              "label": "Surf practice",
              "reason": "Solo ramps, route viewing and repeatable practice positions before chasing a timed finish.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-surf/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://bunnyhop.lol"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The creator offers direct browser play without an extra-file step.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://bunnyhop.lol"
        },
        "setup": {
          "answer": "Start as a guest, choose a map and movement style, then leave the green start zone to begin the timer. Reach the red end zone to finish.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://bunnyhop.lol/about"
        },
        "devices": {
          "answer": "Use current desktop Chrome, Edge, Firefox or Safari with WebGL 2 and a keyboard and mouse. The creator explicitly excludes phones and tablets from play.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://bunnyhop.lol/about"
        },
        "controls": {
          "answer": "Hold jump for autohop. In the air, release W and pair A with a left mouse turn or D with a right turn. R restarts, F3 changes style, and keys can be rebound.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://bunnyhop.lol/about"
        },
        "multiplayer": {
          "answer": "Online servers with chat and map votes are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://bunnyhop.lol"
        },
        "issues": {
          "answer": "Large maps can need more graphics power. Use the graphics presets in Settings on slower computers.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://bunnyhop.lol/about"
        },
        "saves": {
          "answer": "Link Discord or an email account to keep progress across devices. Personal bests and leaderboards are separate for each movement style. Replay MP4 exports are videos of runs, not restorable game saves.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://bunnyhop.lol/about"
        }
      },
      "credits": [],
      "sourceUrl": "https://bunnyhop.lol"
    },
    {
      "id": "project:counter-strike-surf",
      "slug": "counter-strike-surf",
      "title": "Counter-Strike: Source",
      "project": "Surfd",
      "canonicalUrl": "https://playable.wtf/games/counter-strike-surf/",
      "originals": [
        {
          "id": "counterstrikesource",
          "name": "Counter-Strike: Source",
          "relationship": "inspired-by"
        }
      ],
      "kind": "Movement recreation",
      "genre": "Sports",
      "summary": "Surf ramps with Source-style movement and practice tools.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The route is the challenge",
            "kind": "background",
            "paragraphs": [
              "Surfd turns Source-style surfing into a dedicated browser game. The task is to carry speed across sloping ramps, shape your line through transfers and reach the finish with a better time. It uses 66-tick movement and courses with checkpoints; it does not recreate Counter-Strike's team objectives or weapon combat.",
              "The central skill is steering while airborne or on the ramp face. The guide tells you to release W on a ramp, hold the strafe key toward its face and turn the mouse gently. Speed and strafe-sync displays help connect your input to the resulting movement, making a failed transfer something you can diagnose rather than simply repeat."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "practice",
            "title": "Learn one transfer at a time",
            "kind": "practical",
            "paragraphs": [
              "Watch route and the practice facility give a newcomer a way to study the course before chasing a record. Practice positions let you repeat a difficult section. Restoring one keeps the attempt in practice mode, and practice runs do not produce leaderboard records.",
              "Movement-rule changes also restart the run. Unrestricted starts keep separate local bests, so they are useful for experimenting without confusing that result with an ordinary timed finish. If you care about comparing times, settle on the rules before leaving the start."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "records",
            "title": "Solo practice, shared servers and records",
            "kind": "project",
            "paragraphs": [
              "Solo mode stays outside multiplayer rooms. Online servers let you see other surfers and their timers, chat and choose maps together; players do not collide. The social side therefore adds company without turning a clean line into a collision contest.",
              "An account is optional for playing, but public records require signing in. Local bests and preferences belong to this browser. An eligible guest finish can be claimed after signing in within the run ticket's 24-hour window; clearing site data can remove the local copy."
            ],
            "sourceIds": [
              "project",
              "privacy"
            ]
          },
          {
            "id": "replays",
            "title": "A replay is not a video file",
            "kind": "practical",
            "paragraphs": [
              "Surfd's downloadable command replay records movement and view instructions. It is different from a screen recording. Use it for the game's replay workflow, and use the rendering-quality setting separately if you need a smoother display; changing render quality does not change the movement rules."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Surfd · game interface and surfing guide",
            "url": "https://surfd.net/"
          },
          {
            "id": "privacy",
            "label": "Surfd · local records and multiplayer",
            "url": "https://surfd.net/privacy.html"
          }
        ]
      },
      "families": [
        {
          "id": "counter-strike",
          "title": "Counter-Strike",
          "indexUrl": "https://playable.wtf/families/#family-counter-strike",
          "guideUrl": "https://playable.wtf/guides/counter-strike-16-browser-setup/",
          "choices": [
            {
              "slug": "counter-strike-1-6",
              "label": "Quick team match",
              "reason": "A live server list, optional voice and explicit desktop/phone input avoid manual file and server preparation.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-1-6/"
            },
            {
              "slug": "half-life-webxash",
              "label": "Your files and server",
              "reason": "Import your own valve/cstrike folders and connect to a known WebSocket-compatible server.",
              "canonicalUrl": "https://playable.wtf/games/half-life-webxash/"
            },
            {
              "slug": "counter-strike-bunnyhop",
              "label": "Bunnyhop time trials",
              "reason": "Source-style hopping, selectable movement styles and records for desktop keyboard-and-mouse play.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-bunnyhop/"
            },
            {
              "slug": "counter-strike-surf",
              "label": "Surf practice",
              "reason": "Solo ramps, route viewing and repeatable practice positions before chasing a timed finish.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-surf/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://surfd.net"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The landing page offers direct free browser play without a file-import step.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://surfd.net"
        },
        "setup": {
          "answer": "Open Surfd, wait for the selected map and use its How to surf guide.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://surfd.net"
        },
        "devices": {
          "answer": "The creator specifies desktop with keyboard and mouse.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://surfd.net"
        },
        "controls": {
          "answer": "WASD, mouse look, Space or wheel down to jump, Shift to duck, R to restart and Esc for the menu.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://surfd.net"
        },
        "multiplayer": {
          "answer": "Choose an online server to surf with other players, chat and see their run timers. Solo play stays outside multiplayer rooms.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://surfd.net/privacy.html"
        },
        "saves": {
          "answer": "Controls, preferences and local personal bests are stored in this browser. Clearing site data removes them. Signing in enables public records; an eligible guest finish can be claimed by signing in within 24 hours of its run ticket.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://surfd.net/privacy.html"
        }
      },
      "credits": [],
      "sourceUrl": "https://surfd.net"
    },
    {
      "id": "project:crash-bash-browser",
      "slug": "crash-bash-browser",
      "title": "Crash Bash",
      "project": "Crash Bash Online",
      "canonicalUrl": "https://playable.wtf/games/crash-bash-browser/",
      "originals": [
        {
          "id": "crashbash",
          "name": "Crash Bash",
          "relationship": "associated-with"
        }
      ],
      "kind": "Fan browser port",
      "genre": "Party",
      "summary": "Four-player Battle rooms and an account-saved Adventure campaign.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Short contests with different skills",
            "kind": "background",
            "paragraphs": [
              "Crash Bash is an arena party game rather than a board-game journey between minigames. Its families change what you are trying to master: Crate Crush is about throwing and avoiding crates, Pogo Pandemonium turns movement into territory and scoring, Ballistix asks you to defend a goal, and Polar Push turns an icy platform into a shoving contest.",
              "The same familiar character can therefore feel useful in quite different ways from one event to the next. Start with a simple arena in a family before moving to a variant with a changing floor or another hazard; learning the objective is more helpful than treating every round as the same brawl."
            ],
            "sourceIds": [
              "arenas"
            ]
          },
          {
            "id": "this-version",
            "title": "Battle rooms or an Adventure run",
            "kind": "project",
            "paragraphs": [
              "Crash Bash Online offers 28 Battle arenas, solo play against CPU opponents and online rooms for two to four players. Battle does not require an account. A private room code is the convenient route for a planned group, while public rooms let players take open seats.",
              "Adventure is a separate choice above Battle. The project documents five warp rooms, four bosses and trophy, gem, crystal and relic challenges. Its bosses belong to Adventure rather than the Battle arena list. This is the crashbash.app project, separate from Crash Bash LIVE by the Beyond Twinsanity team."
            ],
            "sourceIds": [
              "faq",
              "adventure"
            ]
          },
          {
            "id": "save-slots",
            "title": "Choose a campaign slot deliberately",
            "kind": "practical",
            "paragraphs": [
              "Adventure requires an account and keeps runs in four save slots. Choose the existing slot when returning to a campaign instead of starting a new run. Two-player Adventure uses a private room: one player hosts and the other joins with the code.",
              "A Battle invitation is only a way into that match. It does not restore an Adventure campaign. That distinction matters if your group switches from a quick set of minigames to a longer cooperative run."
            ],
            "sourceIds": [
              "adventure",
              "faq"
            ]
          },
          {
            "id": "input",
            "title": "Get everyone ready before the round",
            "kind": "practical",
            "paragraphs": [
              "The keyboard mapping separates jump, attack and pick-up/throw actions, so try those before everyone marks themselves ready. Controllers must be activated with a button press so the browser can detect them. Keyboard input continues to work alongside the pad, which makes it possible to navigate without reconnecting the controller."
            ],
            "sourceIds": [
              "faq"
            ]
          }
        ],
        "sources": [
          {
            "id": "arenas",
            "label": "Crash Bash Online · arena rules",
            "url": "https://crashbash.app/minigames"
          },
          {
            "id": "faq",
            "label": "Crash Bash Online · player FAQ",
            "url": "https://crashbash.app/faq"
          },
          {
            "id": "adventure",
            "label": "Crash Bash Online · Adventure mode",
            "url": "https://crashbash.app/adventure"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://crashbash.app"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The creator offers play directly on the page with no separate file import documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://crashbash.app"
        },
        "setup": {
          "answer": "Choose Battle for solo or room play without an account. For Adventure, select ADVENTURE above Battle and sign in to use a campaign slot.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://crashbash.app/faq"
        },
        "devices": {
          "answer": "The page describes phone/tablet touch controls and controllers.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://crashbash.app"
        },
        "controls": {
          "answer": "Move with WASD or arrows; Space jumps, X attacks, Z picks up or throws and C taunts. Press any gamepad button to activate it. On PlayStation pads, Cross jumps, Square attacks, Circle picks up or throws and Triangle taunts.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://crashbash.app/faq"
        },
        "multiplayer": {
          "answer": "Battle rooms support two to four players with public joining or a private code. Adventure co-op supports two players: one hosts a private room and the other joins with its code.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://crashbash.app/faq"
        },
        "scope": {
          "answer": "The host lists 28 playable Battle arenas. Adventure includes five warp rooms, four bosses and trophy, gem, crystal and relic challenges.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://crashbash.app/faq"
        },
        "saves": {
          "answer": "Adventure requires an account and stores each run in one of four slots. Battle can be played without an account; its room code joins a match rather than restoring an Adventure save.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://crashbash.app/faq"
        }
      },
      "credits": [],
      "sourceUrl": "https://crashbash.app"
    },
    {
      "id": "project:crash-team-racing-high-octane-web",
      "slug": "crash-team-racing-high-octane-web",
      "title": "Crash Team Racing",
      "project": "High Octane · browser build",
      "canonicalUrl": "https://playable.wtf/games/crash-team-racing-high-octane-web/",
      "originals": [
        {
          "id": "crashteamracing",
          "name": "Crash Team Racing",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Racing",
      "summary": "The PS1 kart racer with widescreen, remappable controls and browser save backups.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Racing for a better line and a better time",
            "kind": "background",
            "paragraphs": [
              "Crash Team Racing combines kart races with time-based challenges. High Octane retains distinctions such as Time Trial and Relic Race, so racing against a field is not the only reason to return to a track. A recorded ghost makes a previous attempt visible, turning another lap into a comparison with your own driving."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "More tools for returning racers",
            "kind": "project",
            "paragraphs": [
              "High Octane builds on ctr-native and adds widescreen presentation, rebindable controls and racing aids such as a reserves meter. Its expanded ghost system provides seven slots per track rather than seven across the game. Ghost Replay can display the recorded inputs, which makes it useful for studying an attempt as well as chasing it.",
              "The repository covers PC, Vita and web builds. Its split-screen support is explicitly described for PC and supported Vita setups; that should not be treated as a web multiplayer promise. The web launcher instead exposes an optional account-key file for online leaderboards."
            ],
            "sourceIds": [
              "project",
              "launcher"
            ]
          },
          {
            "id": "setup",
            "title": "Bring the US disc image",
            "kind": "practical",
            "paragraphs": [
              "Wait for the runtime and save storage to load, then select your own NTSC-U ctr-u.bin in CTR disc. The launcher reads that local file to start the engine. A highoctane.key is optional for leaderboard use; it is not required merely to select the disc and play. In-game controls can be rebound, and the project documents F11 for fullscreen in the browser build."
            ],
            "sourceIds": [
              "launcher",
              "project"
            ]
          },
          {
            "id": "saves",
            "title": "Export before replacing a save archive",
            "kind": "practical",
            "paragraphs": [
              "Export Save creates a .hosave archive containing the browser build's persistent files. Import is available before starting the game and replaces that persistent set rather than merging individual progress records. Export your current archive first if you want to retain it. A .hosave backup is separate from the original disc image: keep both when moving a setup to another browser."
            ],
            "sourceIds": [
              "launcher"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Crash Team Racing: High Octane · features and platform notes",
            "url": "https://github.com/Rinnegatamante/Crash-Team-Racing-High-Octane"
          },
          {
            "id": "launcher",
            "label": "High Octane · browser launcher and save archive implementation",
            "url": "https://rinnegatamante.github.io/Crash-Team-Racing-High-Octane/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://rinnegatamante.github.io/Crash-Team-Racing-High-Octane/"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Provide the .bin dump of your own US Crash Team Racing PlayStation disc. The browser launcher has a CTR disc picker; the project identifies the US data set as ctr-u.bin.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Rinnegatamante/Crash-Team-Racing-High-Octane/blob/vita/README.md"
        },
        "setup": {
          "answer": "Wait for the runtime, select your CTR disc .bin, then choose Play. The optional Online Key File is separate from the game disc.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rinnegatamante.github.io/Crash-Team-Racing-High-Octane/"
        },
        "controls": {
          "answer": "Controls can be rebound in Options. F11 toggles fullscreen in the PC and browser builds.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Rinnegatamante/Crash-Team-Racing-High-Octane/blob/vita/README.md"
        },
        "issues": {
          "answer": "The web changelog records a Mac black-screen fix in v1.5. Use the current build if an older browser build opens to a black screen.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Rinnegatamante/Crash-Team-Racing-High-Octane/blob/vita/README.md"
        },
        "scope": {
          "answer": "An enhanced source port based on ctr-native, with widescreen, ghost replays, optional 60 FPS and extra race options.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Rinnegatamante/Crash-Team-Racing-High-Octane/blob/vita/README.md"
        },
        "saves": {
          "answer": "The browser launcher has Export Save and Import Save controls. Export a backup before clearing site storage.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rinnegatamante.github.io/Crash-Team-Racing-High-Octane/"
        }
      },
      "credits": [
        {
          "name": "Rinnegatamante",
          "role": "port-author",
          "url": "https://github.com/Rinnegatamante/Crash-Team-Racing-High-Octane",
          "evidence": "https://github.com/Rinnegatamante/Crash-Team-Racing-High-Octane",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/Rinnegatamante/Crash-Team-Racing-High-Octane"
    },
    {
      "id": "project:deathkiller-jazz2",
      "slug": "deathkiller-jazz2",
      "title": "Jazz Jackrabbit 2",
      "project": "Jazz² Resurrection web preview",
      "canonicalUrl": "https://playable.wtf/games/deathkiller-jazz2/",
      "originals": [
        {
          "id": "jazzjackrabbit2",
          "name": "Jazz Jackrabbit 2",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Browser engine recreation",
      "genre": "Platformer",
      "summary": "A browser preview of the Jazz Jackrabbit 2 reimplementation with an episode import option.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Jazz and Spaz in a fast platform adventure",
            "kind": "background",
            "paragraphs": [
              "Jazz Jackrabbit 2 brings Jazz and his brother Spaz into a side-scrolling adventure against Devan Shell's plan to change Carrotus' past. The original collection emphasises fast movement, with swimming, flying and warping among its ways through the levels. Its appeal is the pace and variety of moving through those spaces with different characters.",
              "The retail collection also includes additional episodes and its own multiplayer features. Those describe the original package; the web preview's supplied content and supported extensions are a separate question."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "A preview of the second Jazz engine",
            "kind": "project",
            "paragraphs": [
              "Jazz² Resurrection reimplements Jazz Jackrabbit 2, rather than running the first game through OpenJazz. Its browser preview supplies the second game’s Shareware Demo data. That gives you a starting point before bringing in episodes from an owned installation; the browser link is not a bundle of every supported retail release.",
              "The broader engine recognises releases including Holiday Hare ’98, The Secret Files and Christmas Chronicles, with partial support for JJ2+ and MLLE features. Those compatibility notes describe what the reimplementation can understand, not a promise that every community extension works unchanged."
            ],
            "sourceIds": [
              "project",
              "host"
            ]
          },
          {
            "id": "setup",
            "title": "Try the demo before importing episodes",
            "kind": "practical",
            "paragraphs": [
              "Open the preview and let its initial assets load. Additional episodes are imported from the original Jazz Jackrabbit 2 directory through the main menu. Use the demo first to check the browser’s graphics path, then import the content you actually own instead of following a desktop installation’s folder-copy instructions.",
              "The web build requires WebAssembly and WebGL 2.0. The creator names Chrome, Edge and Firefox for the browser route. The separate Android download is a native application with its own installation process; its requirements do not establish support for an Android browser."
            ],
            "sourceIds": [
              "project",
              "host"
            ]
          },
          {
            "id": "versions",
            "title": "Use the right documentation for this build",
            "kind": "limitations",
            "paragraphs": [
              "Jazz² Resurrection has native packages for several systems, experimental builds and a separate current source repository, jazz2-native. The older jazz2 repository now directs source builds there and retains releases. This matters when following a guide: a native binary, a development snapshot and the hosted web preview can have different available features and setup steps.",
              "For a browser session, follow the web preview and its episode-import path. For a specific mod or extension, check the creator’s current compatibility guidance before committing a long playthrough. The project explicitly describes its JJ2+ and MLLE coverage as partial."
            ],
            "sourceIds": [
              "project",
              "site"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Jazz² Resurrection · platform README",
            "url": "https://github.com/deathkiller/jazz2"
          },
          {
            "id": "host",
            "label": "Jazz² Resurrection · shareware browser preview",
            "url": "https://de4th.dev/jazz2/wasm/"
          },
          {
            "id": "site",
            "label": "Jazz² Resurrection · current project information",
            "url": "https://de4th.dev/jazz2/"
          },
          {
            "id": "original",
            "label": "Epic Games · Jazz Jackrabbit 2 collection description",
            "url": "https://www.gog.com/en/game/jazz_jackrabbit_2_collection"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://de4th.dev/jazz2/wasm/"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The hosted preview uses Jazz Jackrabbit 2 Shareware Demo data. Import episodes from your owned original Jazz Jackrabbit 2 installation to unlock additional content.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://de4th.dev/jazz2/wasm/"
        },
        "setup": {
          "answer": "Open the web preview; use its main-menu import option for your original episodes.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/deathkiller/jazz2/HEAD/README.md"
        },
        "devices": {
          "answer": "A browser with WebAssembly and WebGL 2.0 is required. Native Android instructions elsewhere in the repository do not establish mobile-browser support.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/deathkiller/jazz2/HEAD/README.md"
        },
        "scope": {
          "answer": "The browser route is explicitly a shareware preview; native packages also exist.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://de4th.dev/jazz2/wasm/"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/deathkiller/jazz2"
    },
    {
      "id": "project:deltarooo-er-mario",
      "slug": "deltarooo-er-mario",
      "title": "Elden Ring × Super Mario 64",
      "project": "ER Mario",
      "canonicalUrl": "https://playable.wtf/games/deltarooo-er-mario/",
      "originals": [
        {
          "id": "eldenring",
          "name": "Elden Ring",
          "relationship": "mod-for"
        },
        {
          "id": "supermario64",
          "name": "Super Mario 64",
          "relationship": "includes-mechanics-from"
        }
      ],
      "kind": "Mashup mod",
      "genre": "Adventure",
      "summary": "Mario’s movement and attacks inside Elden Ring.",
      "editorial": {
        "sections": [
          {
            "id": "play",
            "title": "Platforming changes the Lands Between",
            "kind": "project",
            "paragraphs": [
              "ER Mario puts Super Mario 64’s movement into Elden Ring: triple jumps, long jumps, wall kicks and ground pounds become ways to cross its terrain and engage enemies. Punches and kicks deal damage, staggered bosses can be swung by the tail and smaller enemies can be thrown. Mario’s eight-part health meter, coins and Lakitu camera reinforce that this is a different set of rules inside Elden Ring’s world.",
              "It also changes the role of progression. Damage is based on a fixed share of enemy health, and Vigor does not enlarge Mario’s health meter. Strength, Dexterity, weapons, stamina, FP and equip load do not drive the normal Elden Ring build system here. The appeal is experimenting with movement and encounters, not optimizing an ordinary Tarnished build."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Use the mod’s separate offline save",
            "kind": "practical",
            "paragraphs": [
              "You need Elden Ring on Steam, me3 and your own US Super Mario 64 ROM. Extract the release to a writable folder, add the ROM and start er-mario.me3. The first launch extracts the needed Mario data; when setup finishes, close and relaunch as instructed. Start a new character because the mod uses its own save.",
              "me3 launches offline with anti-cheat disabled, and the creator explicitly says to keep this mod offline. Xbox controllers, a PS5 controller through Steam and keyboard/mouse have been tested. Other pads use Steam Input to present the expected Xbox-style input."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "camera-and-limits",
            "title": "Switch cameras when the experiment gets awkward",
            "kind": "limitations",
            "paragraphs": [
              "F9 switches between Lakitu’s camera and Elden Ring’s camera. You can make the latter the startup choice in er_mario.ini. If you become stuck, holding F1 for three seconds kills Mario and returns you to the last grace.",
              "Elevator clipping can still occur, some thrown bosses produce unstable ragdolls and Mario’s shadow may flicker. Cutscenes can show a distorted Mario with the Tarnished’s head. Those rough edges are part of the current work-in-progress mod, so keep the separate save and expect occasional resets."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "ER Mario · project documentation",
            "url": "https://github.com/deltarooo/er-mario"
          }
        ]
      },
      "families": [
        {
          "id": "mario",
          "title": "Mario platformers",
          "indexUrl": "https://playable.wtf/families/#family-mario",
          "guideUrl": "https://playable.wtf/guides/mario-platformer-versions/",
          "choices": [
            {
              "slug": "coop-deluxe-sm64coopdx",
              "label": "SM64 with friends",
              "reason": "Native online co-op synchronizes enemies and events, with public or private CoopNet rooms.",
              "canonicalUrl": "https://playable.wtf/games/coop-deluxe-sm64coopdx/"
            },
            {
              "slug": "super-mario-galaxy-galaxypad",
              "label": "Galaxy on iPhone or iPad",
              "reason": "Build a personal native app with touch and controller input; bring the supported USA Wii image.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-galaxy-galaxypad/"
            },
            {
              "slug": "super-mario-wonder-recomp",
              "label": "Follow an early Wonder build",
              "reason": "Source-build the Switch 1.0.0 project if you want to explore its experimental early-course progress.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-wonder-recomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/deltarooo/er-mario/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Elden Ring on Steam and your own US Super Mario 64 ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/deltarooo/er-mario"
        },
        "setup": {
          "answer": "Follow the me3 setup and the mod release’s ROM extraction instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/deltarooo/er-mario"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/deltarooo/er-mario"
    },
    {
      "id": "project:dethrace-labs-dethrace",
      "slug": "dethrace-labs-dethrace",
      "title": "Carmageddon",
      "project": "dethrace",
      "canonicalUrl": "https://playable.wtf/games/dethrace-labs-dethrace/",
      "originals": [
        {
          "id": "carmageddon",
          "name": "Carmageddon",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Racing",
      "summary": "The 1997 driving game rebuilt for modern systems.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A race with more than one finish condition",
            "kind": "background",
            "paragraphs": [
              "Carmageddon is an intentionally excessive driving game where finishing laps is only one way to win. Events can also end by wrecking opposing vehicles or eliminating every pedestrian in the area. A time limit pushes you to keep acting, while checkpoints, destruction and power-ups can extend the run.",
              "The original’s credits pay for repairs, recovery and vehicle upgrades. Its open environments make detours and collisions part of the strategy rather than simply mistakes to avoid. This is background to the 1997 game; Dethrace supplies a new native implementation for its data."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "native-rebuild",
            "title": "What Dethrace is rebuilding",
            "kind": "project",
            "paragraphs": [
              "Dethrace reconstructs Carmageddon to run on modern systems. The work grew from debugging symbols found with the Splat Pack release, replacing original assembly functions with equivalent C code. The result is a dedicated engine project rather than a packaged DOS emulator.",
              "Its README provides both a build route and runtime setup. The project supplies no game content. Use the files from your own copy, or one of the explicitly supported freeware demos if you want a limited introduction before setting up the full game."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "data-and-audio",
            "title": "Give it the right game folder",
            "kind": "practical",
            "paragraphs": [
              "The expected location is the top-level Carmageddon directory containing CARMA.EXE. Place Dethrace there, or point a dethrace.ini configuration at the data directory. Windows also needs SDL2.dll beside the executable. Choosing the directory above or below the actual game folder can leave the engine unable to find its resources.",
              "For CD audio, Dethrace understands the GOG folder convention: a MUSIC directory with tracks named Track02.ogg, Track03.ogg and so on. Keep those filenames intact when moving an installation. The music folder is distinct from the engine download and from the rest of the game data."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "build-and-scope",
            "title": "Full data and demo data are separate starts",
            "kind": "limitations",
            "paragraphs": [
              "The supported demo list includes the original Carmageddon demo and Splat Pack demo variants. Their availability does not turn a demo installation into the full retail campaign. Select the data set intentionally and follow the matching setup.",
              "If building from source, fetch the repository’s submodules before using CMake; SDL2 is the runtime dependency. Keep the game data and music directory intact when updating the executable. A different engine build does not replace those files, and the same data-folder setup is needed after compiling a new version."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "dethrace · project documentation",
            "url": "https://github.com/dethrace-labs/dethrace"
          },
          {
            "id": "original",
            "label": "Stainless Games · Carmageddon Max Pack",
            "url": "https://store.steampowered.com/app/282010/Carmageddon_Max_Pack/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/dethrace-labs/dethrace/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Original Carmageddon data; no game content is shipped by the project.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/dethrace-labs/dethrace"
        },
        "setup": {
          "answer": "Follow the project’s build or release instructions and supply the data from your copy.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/dethrace-labs/dethrace"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/dethrace-labs/dethrace"
    },
    {
      "id": "project:dhewm-dhewm3",
      "slug": "dhewm-dhewm3",
      "title": "Doom 3",
      "project": "dhewm3",
      "canonicalUrl": "https://playable.wtf/games/dhewm-dhewm3/",
      "originals": [
        {
          "id": "doom3",
          "name": "Doom 3",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "Shooter",
      "summary": "A source port of the original Doom 3 with modern platform and input updates.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original Mars horror campaign",
            "kind": "background",
            "paragraphs": [
              "Doom 3 follows a survivor through the UAC’s Mars research facility after a demonic invasion. The original game leans into horror and close encounters within that facility, giving it a different rhythm from Doom’s earlier sprite-based games. Resurrection of Evil is a separate expansion returning to the aftermath of the disaster.",
              "The later BFG Edition changes parts of the presentation and play experience, including its armor-mounted flashlight and checkpoint system. Those BFG features should not be used to describe dhewm3’s original-game campaign."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Modern systems without changing the core game",
            "kind": "project",
            "paragraphs": [
              "dhewm3 develops the released Doom 3 source into a native port. Its goal is to fix engine problems while preserving original gameplay. Windows, Linux, macOS and FreeBSD are documented, with widescreen support, arbitrary display resolutions and an updated audio backend.",
              "Gamepad support is included, although rumble is not. An additional settings menu opens with F10 by default and is independent of a mod’s own menus. That gives players a place to adjust port-specific options without depending on every older mod to expose them."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "edition-check",
            "title": "Check the edition before copying files",
            "kind": "practical",
            "paragraphs": [
              "Use original Doom 3 data patched to version 1.3.1. The base directory should contain the original sequence of PK4 archives, including pak000 through pak008. A store bundle may include both original Doom 3 and BFG Edition, so selecting the correct installation matters even if the purchase has only one store listing.",
              "BFG Edition data is incompatible with dhewm3. The source release also excludes the commercial game assets. Installing the native engine and supplying the matching original files are two separate steps."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "mods",
            "title": "Use the port’s own compatibility guidance",
            "kind": "limitations",
            "paragraphs": [
              "dhewm3 maintains a dedicated list of supported mods and a separate mod SDK. Check that list before building a modded campaign around an old package. A mod’s existence for the original Windows engine is not by itself a promise that its compiled game code works with this port. For an initial setup, establish that the unmodified campaign loads before adding a mod."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "dhewm3 · project documentation",
            "url": "https://raw.githubusercontent.com/dhewm/dhewm3/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "dhewm3 · original game publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=208200&l=english"
          }
        ]
      },
      "families": [
        {
          "id": "doom",
          "title": "Doom",
          "indexUrl": "https://playable.wtf/families/#family-doom",
          "guideUrl": "https://playable.wtf/guides/doom-quake-browser-versions/",
          "choices": [
            {
              "slug": "wad-commander-v1",
              "label": "Classic Doom in a browser",
              "reason": "Choose owned WADs, shareware or Freedoom, with a documented touch layout.",
              "canonicalUrl": "https://playable.wtf/games/wad-commander-v1/"
            },
            {
              "slug": "chocolate-doom-chocolate-doom",
              "label": "Keep the original DOS behavior",
              "reason": "A native port for compatible classic content, old demos and saves.",
              "canonicalUrl": "https://playable.wtf/games/chocolate-doom-chocolate-doom/"
            },
            {
              "slug": "doom-3-browser",
              "label": "Try the Doom 3 demo",
              "reason": "A desktop browser route into the later game without a retail-data setup.",
              "canonicalUrl": "https://playable.wtf/games/doom-3-browser/"
            },
            {
              "slug": "dhewm-dhewm3",
              "label": "Play owned original Doom 3",
              "reason": "Use original 1.3.1 data in a native port; BFG Edition files do not fit.",
              "canonicalUrl": "https://playable.wtf/games/dhewm-dhewm3/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/dhewm/dhewm3/releases/tag/1.5.5"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Original Doom 3 patched to 1.3.1, including base/pak000.pk4 through pak008.pk4. Doom 3: BFG Edition data is not supported.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dhewm/dhewm3/HEAD/README.md"
        },
        "setup": {
          "answer": "Choose a release package and follow the game-data installation guide on dhewm3.org.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dhewm/dhewm3/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows, Linux, macOS and FreeBSD are documented; the checked release has Windows and Linux binaries.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dhewm/dhewm3/HEAD/README.md"
        },
        "controls": {
          "answer": "Gamepad configuration is documented in Configuration.md.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dhewm/dhewm3/HEAD/README.md"
        },
        "issues": {
          "answer": "Use the original Doom 3 edition; BFG Edition is incompatible.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dhewm/dhewm3/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/dhewm/dhewm3"
    },
    {
      "id": "project:diablo-browser",
      "slug": "diablo-browser",
      "title": "Diablo",
      "project": "DiabloWeb",
      "canonicalUrl": "https://playable.wtf/games/diablo-browser/",
      "originals": [
        {
          "id": "diablo",
          "name": "Diablo",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "RPG",
      "summary": "Play the shareware build or import your own full-game MPQ.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A descent beneath Tristram",
            "kind": "background",
            "paragraphs": [
              "Diablo begins in the troubled town of Tristram and draws you into the cathedral above its underground labyrinth. The original game offers Warrior, Rogue and Sorcerer characters, with different abilities, equipment and approaches to combat. New gear and changing dungeon layouts make the next descent an opportunity to improve a character as well as uncover more of the story.",
              "The setting gives the game a focused rhythm: a small town above, a dangerous labyrinth below, and an increasing sense of what lies at its bottom. This is the first Diablo, not Diablo II or the later games built around different classes and systems."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Try shareware, or use your own full game",
            "kind": "project",
            "paragraphs": [
              "d07RiV's DiabloWeb adapts the reconstructed Devilution engine to WebAssembly. Its included shareware lets you play the Warrior through the first two dungeon floors. It is an opening dungeon run, with Rogue and Sorcerer reserved for the retail game.",
              "Supplying DIABDAT.MPQ from your own Diablo copy adds those two character choices and the rest of the base game's dungeon beyond the demo boundary. A store bundle containing Hellfire does not make that expansion part of this client's setup; the retail input here is Diablo's base-game archive."
            ],
            "sourceIds": [
              "project",
              "shareware-levels",
              "shareware-classes"
            ]
          },
          {
            "id": "saves",
            "title": "The character belongs to this browser profile",
            "kind": "practical",
            "paragraphs": [
              "The retail archive and your character are separate files. Importing DIABDAT.MPQ supplies game content; a save carries your progress. Moving only the archive to another browser will not bring the character with it.",
              "Before switching devices, export the save and keep its original backup until the destination loads the expected character. The save controls below explain the .sv import and export steps for this client."
            ],
            "sourceIds": [
              "saves"
            ]
          },
          {
            "id": "versions",
            "title": "Which Diablo browser client is this?",
            "kind": "project",
            "paragraphs": [
              "This is the earlier DiabloWeb client. JohnImril's Diablo Web builds on that work with a newer browser interface and storage management, while DevilutionX is another project with its own feature set. Choose between their specific setup and save workflows rather than treating their shared Diablo ancestry as identical support."
            ],
            "sourceIds": [
              "project",
              "modern"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Blizzard / GOG · Diablo description",
            "url": "https://www.gog.com/en/game/diablo"
          },
          {
            "id": "project",
            "label": "DiabloWeb · README",
            "url": "https://raw.githubusercontent.com/d07RiV/diabloweb/HEAD/README.md"
          },
          {
            "id": "saves",
            "label": "DiabloWeb · save interface source",
            "url": "https://raw.githubusercontent.com/d07RiV/diabloweb/HEAD/src/App.js"
          },
          {
            "id": "modern",
            "label": "Diablo Web · origins and credits",
            "url": "https://raw.githubusercontent.com/JohnImril/diablo_web/HEAD/README.md"
          },
          {
            "id": "shareware-levels",
            "label": "DiabloWeb engine · shareware dungeon boundary",
            "url": "https://github.com/d07RiV/devilution/blob/a702a42b2f87880abfcaa2654b5ef701cf0b684f/Source/player.cpp#L1973-L1984"
          },
          {
            "id": "shareware-classes",
            "label": "DiabloWeb engine · shareware class selection",
            "url": "https://github.com/d07RiV/devilution/blob/a702a42b2f87880abfcaa2654b5ef701cf0b684f/Source/ui/workflow.cpp#L78-L90"
          }
        ]
      },
      "families": [
        {
          "id": "diablo",
          "title": "Diablo",
          "indexUrl": "https://playable.wtf/families/#family-diablo",
          "guideUrl": "https://playable.wtf/guides/diablo-browser-demo-game-files/",
          "choices": [
            {
              "slug": "diablo-web-modern",
              "label": "Browser with save controls",
              "reason": "Clear demo and retail choices plus documented save import, export and storage recovery.",
              "canonicalUrl": "https://playable.wtf/games/diablo-web-modern/"
            },
            {
              "slug": "diablo-browser",
              "label": "Earlier browser client",
              "reason": "The original DiabloWeb host offers shareware and retail MPQ import, including its documented phone route.",
              "canonicalUrl": "https://playable.wtf/games/diablo-browser/"
            },
            {
              "slug": "diasurgical-devilutionx",
              "label": "Native with Hellfire",
              "reason": "A separate port with expansion-data support and a documented controller scheme.",
              "canonicalUrl": "https://playable.wtf/games/diasurgical-devilutionx/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://d07riv.github.io/diabloweb/"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The hosted shareware route supplies spawn.mpq. The full game needs your own DIABDAT.MPQ from Diablo.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/d07RiV/diabloweb/9c7e156f850ac96819e32dfcdb44770457c813f0/README.md"
        },
        "setup": {
          "answer": "Open the linked web build and choose the shareware route or your own full-game archive.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/d07RiV/diabloweb/9c7e156f850ac96819e32dfcdb44770457c813f0/README.md"
        },
        "devices": {
          "answer": "The README explicitly includes mobile phones; exact browsers are unspecified.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/d07RiV/diabloweb/9c7e156f850ac96819e32dfcdb44770457c813f0/README.md"
        },
        "issues": {
          "answer": "Export save files before clearing this site’s browser data. The storage implementation falls back to memory when IndexedDB is unavailable, so progress will not persist in that fallback.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/d07RiV/diabloweb/HEAD/src/fs.js"
        },
        "scope": {
          "answer": "The shareware route lets you play the Warrior through the first two dungeon floors. Rogue, Sorcerer and the deeper dungeon require your own retail DIABDAT.MPQ. Hellfire is a separate expansion and is not included by importing the base-game archive.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/d07RiV/devilution/blob/a702a42b2f87880abfcaa2654b5ef701cf0b684f/Source/player.cpp#L1973-L1984"
        },
        "saves": {
          "answer": "Saves stay in IndexedDB in this browser profile. Once a save exists, open Manage Saves to download it or choose Upload Save to restore a .sv file. On a fresh profile, the main file picker also accepts a .sv file before starting the game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/d07RiV/diabloweb/HEAD/src/App.js"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/d07RiV/diabloweb"
    },
    {
      "id": "project:diablo-ii-resurrected-mobile",
      "slug": "diablo-ii-resurrected-mobile",
      "title": "Diablo II: Resurrected",
      "project": "D2R Mobile",
      "canonicalUrl": "https://playable.wtf/games/diablo-ii-resurrected-mobile/",
      "originals": [
        {
          "id": "diabloiiresurrected",
          "name": "Diablo II: Resurrected",
          "relationship": "associated-with"
        }
      ],
      "kind": "Native compatibility port",
      "genre": "Action RPG",
      "summary": "Build a native iPhone, iPad or Apple silicon Mac version using your own supported Switch game files.",
      "editorial": {
        "sections": [
          {
            "id": "touch-combat",
            "title": "Loot hunting rebuilt around touch",
            "kind": "project",
            "paragraphs": [
              "D2R Mobile adapts the Switch version of Diablo II: Resurrected with Reign of the Warlock to Apple devices. Its central player-facing work is a touch interface for repeated combat, skill use and inventory management. A virtual stick handles movement, while tapping scenery, characters and entrances can direct interaction. Skill buttons support holding to repeat and dragging to aim.",
              "Inventory gestures matter in a game built around equipment: double-tapping equips items, dragging to a vendor sells them, and long presses offer additional actions. Connecting a controller switches to the original controller-style interface; touching the screen switches back. This is a local offline adaptation, with no multiplayer or online account route."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "extra-modes",
            "title": "Separate the original adventure from added modes",
            "kind": "project",
            "paragraphs": [
              "The project includes its own optional endgame and convenience features alongside the original program. Greater Rift progression, Boss Rush, Elysium drop changes and a Kill Board are additions described by this project, not promises about unmodified Diablo II. Elysium in particular changes reward rates, so choose the character mode with the desired experience in mind.",
              "That distinction is useful whether you want a familiar character-building journey or a faster loop of fights and equipment experiments. Consult Options → Custom for individual convenience toggles rather than assuming all of the mobile additions preserve the original balance."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "personal-build",
            "title": "The public shell still needs a personal build",
            "kind": "practical",
            "paragraphs": [
              "The release shell is build input, not an installable copy of the game. You supply the supported Switch files, prepare the package and sign it for your device. The documented target is game version 1.0.34.0; other versions require separate adaptation rather than simply changing the filename.",
              "Choose the build matching the operating-system version and chip. Older supported devices can need an additional texture pack generated from your own files. The Windows packaging route also compiles shaders on the first phone launch, whereas the Xcode route prepares them earlier. Keep app updates, original resource files and character saves separate when maintaining the installation."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "D2R Mobile · project documentation",
            "url": "https://github.com/jhaizhou-ops/d2r-mobile"
          }
        ]
      },
      "families": [
        {
          "id": "diablo",
          "title": "Diablo",
          "indexUrl": "https://playable.wtf/families/#family-diablo",
          "guideUrl": "https://playable.wtf/guides/diablo-browser-demo-game-files/",
          "choices": [
            {
              "slug": "diablo-web-modern",
              "label": "Browser with save controls",
              "reason": "Clear demo and retail choices plus documented save import, export and storage recovery.",
              "canonicalUrl": "https://playable.wtf/games/diablo-web-modern/"
            },
            {
              "slug": "diablo-browser",
              "label": "Earlier browser client",
              "reason": "The original DiabloWeb host offers shareware and retail MPQ import, including its documented phone route.",
              "canonicalUrl": "https://playable.wtf/games/diablo-browser/"
            },
            {
              "slug": "diasurgical-devilutionx",
              "label": "Native with Hellfire",
              "reason": "A separate port with expansion-data support and a documented controller scheme.",
              "canonicalUrl": "https://playable.wtf/games/diasurgical-devilutionx/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "source-build",
        "status": "experimental",
        "route": {
          "kind": "project",
          "url": "https://github.com/jhaizhou-ops/d2r-mobile"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Switch Diablo II: Resurrected plus Reign of the Warlock, version 1.0.34.0. PC game files are incompatible; neither game content nor the expansion is supplied.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/jhaizhou-ops/d2r-mobile/HEAD/docs/GAME_FILES.md"
        },
        "setup": {
          "answer": "Follow the project build guide with your own game files. On Mac, use its Xcode build route; the alternative packaging tool combines the release shell with your files before signing and installing. The shell ZIP alone is not an installable game. Use matching source and shell versions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/jhaizhou-ops/d2r-mobile/HEAD/README.md"
        },
        "devices": {
          "answer": "iPhone and iPad use iOS 26+, or the older-API build for iOS 18–25. Apple silicon Macs use macOS 26+, or the older-API build for macOS 15–25. Older chips need the documented Legacy Device Pack. The Apple TV community preview has only reached character selection on its author’s device.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/jhaizhou-ops/d2r-mobile/HEAD/README.md"
        },
        "controls": {
          "answer": "Touch controls and controller support are documented on iPhone/iPad. The Mac build documents mouse, keyboard and gamepad mappings, but the README says its keyboard and physical gamepad paths still lack hands-on verification.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/jhaizhou-ops/d2r-mobile/HEAD/README.md"
        },
        "multiplayer": {
          "answer": "The project explicitly runs offline and does not support multiplayer.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/jhaizhou-ops/d2r-mobile/HEAD/README.md"
        },
        "issues": {
          "answer": "v1.0.17 replaces withdrawn v1.0.16 after personal-stash loss and shared-stash duplication reports. Its release notes say the fixes do not restore items already lost or duplicated. Performance and device claims are from the maintainer, not tests by this catalog.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/jhaizhou-ops/d2r-mobile/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/jhaizhou-ops/d2r-mobile"
    },
    {
      "id": "project:diablo-web-modern",
      "slug": "diablo-web-modern",
      "title": "Diablo",
      "project": "Diablo Web by JohnImril",
      "canonicalUrl": "https://playable.wtf/games/diablo-web-modern/",
      "originals": [
        {
          "id": "diablo",
          "name": "Diablo",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "RPG",
      "summary": "A modernized client with shareware, MPQ import and save export.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Diablo beneath Tristram",
            "kind": "background",
            "paragraphs": [
              "The original Diablo sends its hero into the dungeons beneath Tristram, combining real-time fighting, equipment and magic with the search for better loot. Warrior, Rogue and Sorcerer provide different starting approaches to that descent. The town and dungeon form the rhythm of the adventure: prepare, venture deeper, then return with what you have found.",
              "That is the original game's structure. A browser client's modern interface does not turn Diablo into a different sequel or automatically include an expansion."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "A modernized client around earlier DiabloWeb work",
            "kind": "project",
            "paragraphs": [
              "JohnImril's Diablo Web modernizes the browser client around the existing Devilution-based WebAssembly runtime and d07RiV's earlier DiabloWeb work. Choose Play Free Demo for limited shareware content, or Load Your MPQ for your own DIABDAT.MPQ. Dropping that archive onto the start screen is also supported."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "save-lock",
            "title": "One active tab protects the saves",
            "kind": "practical",
            "paragraphs": [
              "Keep one game tab or installed-app window open. If Game already open appears, finish saving in the other window, close it and choose Try Again. Returning to its menu does not release storage. Do not clear browser data to fix this message.",
              "Manage Saves exports local saves before a browser or device change. If that menu has not appeared yet, drop a .sv file onto the start screen for the first import. There is no cloud-save service."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "devices",
            "title": "Desktop input remains the best starting point",
            "kind": "limitations",
            "paragraphs": [
              "Use keyboard and mouse for the best experience; touch controls still need improvement. The browser must support Web Locks and run in a secure context to open save storage. Online multiplayer remains experimental, so choose this client for its documented local play and save-management workflow."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Blizzard · Diablo game description on GOG",
            "url": "https://www.gog.com/en/game/diablo"
          },
          {
            "id": "project",
            "label": "JohnImril Diablo Web · player and save documentation",
            "url": "https://raw.githubusercontent.com/JohnImril/diablo_web/HEAD/README.md"
          }
        ]
      },
      "families": [
        {
          "id": "diablo",
          "title": "Diablo",
          "indexUrl": "https://playable.wtf/families/#family-diablo",
          "guideUrl": "https://playable.wtf/guides/diablo-browser-demo-game-files/",
          "choices": [
            {
              "slug": "diablo-web-modern",
              "label": "Browser with save controls",
              "reason": "Clear demo and retail choices plus documented save import, export and storage recovery.",
              "canonicalUrl": "https://playable.wtf/games/diablo-web-modern/"
            },
            {
              "slug": "diablo-browser",
              "label": "Earlier browser client",
              "reason": "The original DiabloWeb host offers shareware and retail MPQ import, including its documented phone route.",
              "canonicalUrl": "https://playable.wtf/games/diablo-browser/"
            },
            {
              "slug": "diasurgical-devilutionx",
              "label": "Native with Hellfire",
              "reason": "A separate port with expansion-data support and a documented controller scheme.",
              "canonicalUrl": "https://playable.wtf/games/diasurgical-devilutionx/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://johnimril.github.io/diablo_web/"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "Play Free Demo uses shareware; Load Your MPQ needs DIABDAT.MPQ from your own Diablo copy.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JohnImril/diablo_web/35195130aea564aa349645181ac4ce96e463f61d/README.md"
        },
        "setup": {
          "answer": "Choose the demo or import your retail archive.",
          "steps": [
            "Choose Play Free Demo for shareware.",
            "Alternatively, select Load Your MPQ or drop your DIABDAT.MPQ on the start screen."
          ],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JohnImril/diablo_web/35195130aea564aa349645181ac4ce96e463f61d/README.md"
        },
        "devices": {
          "answer": "Requires WebAssembly, Web Workers, IndexedDB and Web Locks in a secure context. Touch input needs improvement; keyboard/mouse is preferred.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JohnImril/diablo_web/35195130aea564aa349645181ac4ce96e463f61d/README.md"
        },
        "controls": {
          "answer": "Keyboard/mouse is preferred. Touch controls exist but remain limited.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JohnImril/diablo_web/35195130aea564aa349645181ac4ce96e463f61d/README.md"
        },
        "multiplayer": {
          "answer": "Online multiplayer is explicitly experimental and not finished support for ordinary play.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JohnImril/diablo_web/35195130aea564aa349645181ac4ce96e463f61d/README.md"
        },
        "issues": {
          "answer": "Game already open means another tab or installed app is using the saves: save there, close it, then choose Try Again. For loading errors use Reload and Try Again when offered, preserving browser data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JohnImril/diablo_web/HEAD/README.md"
        },
        "saves": {
          "answer": "Saves use this browser profile’s IndexedDB. Manage Saves exports them; for a first import, drop a .sv file on the start screen. Manage Saves then appears for further imports. There is no cloud-save service.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JohnImril/diablo_web/HEAD/README.md"
        }
      },
      "credits": [
        {
          "name": "Nikita Maksimov",
          "role": "port-author",
          "url": "https://github.com/JohnImril",
          "basis": "creator-reported",
          "evidence": "https://raw.githubusercontent.com/JohnImril/diablo_web/35195130aea564aa349645181ac4ce96e463f61d/README.md"
        },
        {
          "name": "d07RiV",
          "role": "upstream-author",
          "url": "https://github.com/d07RiV/diabloweb",
          "basis": "creator-reported",
          "evidence": "https://raw.githubusercontent.com/JohnImril/diablo_web/35195130aea564aa349645181ac4ce96e463f61d/README.md"
        },
        {
          "name": "Blizzard North",
          "role": "original-developer",
          "url": "https://github.com/JohnImril/diablo_web#origins-and-credits",
          "basis": "creator-reported",
          "evidence": "https://raw.githubusercontent.com/JohnImril/diablo_web/35195130aea564aa349645181ac4ce96e463f61d/README.md",
          "originalGameId": "diablo"
        }
      ],
      "sourceUrl": "https://github.com/JohnImril/diablo_web"
    },
    {
      "id": "project:diasurgical-devilutionx",
      "slug": "diasurgical-devilutionx",
      "title": "Diablo & Hellfire",
      "project": "DevilutionX",
      "canonicalUrl": "https://playable.wtf/games/diasurgical-devilutionx/",
      "originals": [
        {
          "id": "diablo",
          "name": "Diablo",
          "relationship": "associated-with"
        },
        {
          "id": "diablohellfire",
          "name": "Diablo: Hellfire",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "RPG",
      "summary": "A maintained Diablo and Hellfire port with a shareware option.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The descent beneath Tristram",
            "kind": "background",
            "paragraphs": [
              "Diablo is an action RPG built around repeated trips from the town of Tristram into a changing dungeon. Warrior, Rogue and Sorcerer approach enemies differently, while equipment and spells give each descent new decisions. The compact town-and-dungeon structure makes preparation and retreat part of the rhythm, alongside the fighting.",
              "Hellfire adds a separate storyline, the Monk and additional locations, enemies and items. It is an expansion to the original Diablo, not Diablo II. Which of those adventures you can play in DevilutionX depends on the data files you provide."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "port-choices",
            "title": "Classic Diablo with optional conveniences",
            "kind": "project",
            "paragraphs": [
              "DevilutionX runs Diablo and Hellfire through a modernized engine with bug fixes and optional quality-of-life features. Its widescreen display can be disabled, and the health and experience bars shown in project screenshots are options rather than mandatory changes. That lets you choose how much extra information appears during combat.",
              "This is the native DevilutionX project. Browser-hosted DiabloWeb installations have their own setup and storage behavior; instructions for a web browser’s saved files should not be assumed to describe the native application."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "game-data",
            "title": "Full game, expansion or shareware",
            "kind": "practical",
            "paragraphs": [
              "For the full original game, supply DIABDAT.MPQ from your Diablo CD or installed copy. Hellfire additionally needs hellfire.mpq, hfmonk.mpq, hfmusic.mpq and hfvoice.mpq. Copying only the expansion archive leaves out content the engine expects.",
              "The shareware spawn.mpq is an alternative for trying the shareware portion, not a substitute that unlocks the full adventure. DevilutionX’s own support archive is also needed, while some languages require additional fonts or voice packs. Follow the installation guide for the exact package and language you choose."
            ],
            "sourceIds": [
              "project",
              "install"
            ]
          },
          {
            "id": "platform-storage",
            "title": "Put the files where the app can find them",
            "kind": "practical",
            "paragraphs": [
              "The installation guide distinguishes the executable folder from platform-specific data directories. Windows can use an existing GOG installation without manually copying its MPQs; Linux and macOS have documented local data paths. Android requires starting the app once so it creates its storage folder before the files are transferred.",
              "Use a regular release for your first installation. Development test builds are available for contributors, but the project explicitly advises backing up files before using them. Keep your game data and progress safe when trying a new build or a community mod."
            ],
            "sourceIds": [
              "project",
              "install"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "DevilutionX · project documentation",
            "url": "https://github.com/diasurgical/DevilutionX"
          },
          {
            "id": "original",
            "label": "Blizzard · Diablo and Hellfire on GOG",
            "url": "https://www.gog.com/en/game/diablo"
          },
          {
            "id": "install",
            "label": "DevilutionX · platform installation",
            "url": "https://github.com/diasurgical/DevilutionX/blob/master/docs/installing.md"
          }
        ]
      },
      "families": [
        {
          "id": "diablo",
          "title": "Diablo",
          "indexUrl": "https://playable.wtf/families/#family-diablo",
          "guideUrl": "https://playable.wtf/guides/diablo-browser-demo-game-files/",
          "choices": [
            {
              "slug": "diablo-web-modern",
              "label": "Browser with save controls",
              "reason": "Clear demo and retail choices plus documented save import, export and storage recovery.",
              "canonicalUrl": "https://playable.wtf/games/diablo-web-modern/"
            },
            {
              "slug": "diablo-browser",
              "label": "Earlier browser client",
              "reason": "The original DiabloWeb host offers shareware and retail MPQ import, including its documented phone route.",
              "canonicalUrl": "https://playable.wtf/games/diablo-browser/"
            },
            {
              "slug": "diasurgical-devilutionx",
              "label": "Native with Hellfire",
              "reason": "A separate port with expansion-data support and a documented controller scheme.",
              "canonicalUrl": "https://playable.wtf/games/diasurgical-devilutionx/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/diasurgical/DevilutionX/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Original Diablo data, plus Hellfire data if used; shareware spawn.mpq is an alternative.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/diasurgical/DevilutionX"
        },
        "setup": {
          "answer": "Follow the project’s platform guide and put the selected game data in its documented data directory.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/diasurgical/DevilutionX"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/diasurgical/DevilutionX"
    },
    {
      "id": "project:diddy-kong-golden-balloon-web",
      "slug": "diddy-kong-golden-balloon-web",
      "title": "Diddy Kong Racing",
      "project": "Golden Balloon · browser build",
      "canonicalUrl": "https://playable.wtf/games/diddy-kong-golden-balloon-web/",
      "originals": [
        {
          "id": "diddykongracing",
          "name": "Diddy Kong Racing",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Racing",
      "summary": "Diddy Kong Racing with WebGPU, split-screen and local ROM loading.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "More than a single race menu",
            "kind": "background",
            "paragraphs": [
              "Diddy Kong Racing is Rare's 1997 Nintendo 64 kart racer. Golden Balloon's documented game routes include Adventure, individual tracks, Time Trial, bosses, trophy series and challenges. That gives a returning player several reasons to revisit a course: advance an adventure, win a series or work on a record.",
              "The controls also reflect the game's different vehicles. Steering is distinct from plane pitch, and hopping or power-sliding is an action to learn alongside acceleration and braking. An analogue stick gives finer steering control than a keyboard's all-or-nothing direction keys."
            ],
            "sourceIds": [
              "project",
              "launcher"
            ]
          },
          {
            "id": "this-version",
            "title": "Modern presentation around the original timing",
            "kind": "project",
            "paragraphs": [
              "Golden Balloon builds on the community decompilation. Its Restored presentation is the recommended starting point; Pure keeps the original 4:3 look, while Remastered remains unfinished. Higher presentation frame rates and interpolation do not speed up the simulation, physics or lap timers.",
              "The web build needs WebGPU and has no WebGL fallback. Current Chrome or Edge is the recommended route. If performance suffers, reduce supersampling before adding more visual effects; rendering above the window's resolution costs additional graphics work."
            ],
            "sourceIds": [
              "project",
              "launcher"
            ]
          },
          {
            "id": "setup",
            "title": "Check the ROM revision and connect controllers",
            "kind": "practical",
            "paragraphs": [
              "Bring a US 1.1 or European 1.1 ROM in .z64, .v64 or .n64 format. Other revisions are recognised but refused. The supplied ROM checker can identify a copy locally without uploading it.",
              "The browser supports solo play and two-to-four-player local split-screen with additional controllers. The online-room beta belongs to native desktop packages; it is not available in the published browser build. On a keyboard, X accelerates, Z brakes, Space hops or slides and Shift uses an item."
            ],
            "sourceIds": [
              "project",
              "launcher"
            ]
          },
          {
            "id": "progress",
            "title": "Back up adventure progress and ghosts separately",
            "kind": "practical",
            "paragraphs": [
              "The launcher exports adventure progress as a .mdkr-save backup or raw EEPROM, while Controller Pak ghosts use a separate .mdkr-paks bundle. Download both if both matter to you. Raw emulator .mpk imports are not supported. Keeping only the adventure backup can leave a carefully earned ghost collection behind when changing browsers."
            ],
            "sourceIds": [
              "launcher"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Golden Balloon · source port and platform limits",
            "url": "https://github.com/akratch/goldenballoon"
          },
          {
            "id": "launcher",
            "label": "Golden Balloon · browser controls, ROMs and backups",
            "url": "https://akratch.github.io/golden-balloon/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://akratch.github.io/golden-balloon/"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerOnline": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "Use your own US 1.1 or European 1.1 ROM as .z64, .v64 or .n64. US 1.0, EU 1.0 and Japanese revisions are not supported. The ROM is read locally, not uploaded.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://akratch.github.io/golden-balloon/"
        },
        "setup": {
          "answer": "Select the ROM, keep Restored presentation for the recommended path, then Play here. Lower supersampling if rendering is too heavy.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://akratch.github.io/golden-balloon/"
        },
        "devices": {
          "answer": "Requires WebGPU with no WebGL fallback. Current Chrome or Edge is recommended. The launcher also provides phone/tablet touch controls; other WebGPU browsers are capability-checked.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://akratch.github.io/golden-balloon/"
        },
        "controls": {
          "answer": "Arrows/WASD steer, X accelerates, Z brakes, Space hops or drifts, Shift uses an item and Enter pauses. Gamepads are supported, and touch controls appear on phones/tablets.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://akratch.github.io/golden-balloon/"
        },
        "multiplayer": {
          "answer": "The published browser build is local-only. Two to four players can use split-screen with additional controllers; the native online-room feature is not a browser feature.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/akratch/goldenballoon/blob/main/README.md"
        },
        "issues": {
          "answer": "Remastered presentation remains work in progress. Rumble depends on the browser/controller, and raw emulator .mpk imports are not supported.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://akratch.github.io/golden-balloon/"
        },
        "scope": {
          "answer": "The host describes Adventure, Tracks, Time Trial, bosses, trophy series and challenges, with optional presentation changes.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://akratch.github.io/golden-balloon/"
        },
        "saves": {
          "answer": "Progress and ghosts persist locally. In Stored data, download the .mdkr-save progress backup and the separate .mdkr-paks ghost Controller Pak backup. Restore each with its matching import control. Progress import also accepts a 512-byte EEPROM file; raw emulator .mpk ghost files are unsupported.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://akratch.github.io/golden-balloon/"
        }
      },
      "credits": [
        {
          "name": "akratch",
          "role": "port-author",
          "url": "https://github.com/akratch/goldenballoon",
          "evidence": "https://github.com/akratch/goldenballoon",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/akratch/goldenballoon"
    },
    {
      "id": "project:dinosaurplanetrecomp-dino-recomp",
      "slug": "dinosaurplanetrecomp-dino-recomp",
      "title": "Dinosaur Planet (December 2000 prototype)",
      "project": "Dinosaur Planet: Recompiled",
      "canonicalUrl": "https://playable.wtf/games/dinosaurplanetrecomp-dino-recomp/",
      "originals": [
        {
          "id": "dinosaurplanetdecember2000prototype",
          "name": "Dinosaur Planet (December 2000 prototype)",
          "relationship": "port-of"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Action adventure",
      "summary": "The unreleased N64 Dinosaur Planet prototype as a native recompilation.",
      "editorial": {
        "sections": [
          {
            "id": "which-game",
            "title": "A particular unreleased prototype",
            "kind": "project",
            "paragraphs": [
              "Dinosaur Planet: Recompiled targets the December 2000 Nintendo 64 prototype. Its attraction is access to that specific unfinished game through a native port, with modern rendering and mod support. It should not be approached as the completed retail Star Fox Adventures or as a general Nintendo 64 emulator.",
              "The distinction follows right through setup: only the unmodified supported prototype ROM works. A different revision or a ROM patched for an emulator is not an alternative input. The project does not distribute the game assets."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "recomp-and-mods",
            "title": "Apply changes as recomp mods",
            "kind": "project",
            "paragraphs": [
              "The port uses N64Recomp and RT64, with the Dinosaur Planet decompilation contributing knowledge about the game. Mod support is a major part of the offering. The menu can install and toggle NRM mods, and texture packs can change the presentation.",
              "Changes commonly applied to the ROM for console or emulator play are instead supplied as separate recomp mods. Begin with the supported unpatched image, then choose the equivalent mod if you want a particular change. Keeping those layers separate also makes it easier to return to the baseline prototype."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "hardware",
            "title": "Check graphics support before starting",
            "kind": "practical",
            "paragraphs": [
              "The documented PC requirements include Direct3D 12 with Shader Model 6 or Vulkan 1.2, plus SSE4.1 CPU support. These requirements come from the modern host and renderer, so the age of the Nintendo 64 game is not a reliable guide to whether an older computer can run it. Updated graphics drivers are the project’s first recommendation for startup crashes.",
              "The window can use a 4:3 launch option or an explicitly chosen width and height. This gives you a way to select the presentation before adding visual mods."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "progress-and-limits",
            "title": "Preserve progress while following development",
            "kind": "limitations",
            "paragraphs": [
              "Saves normally live in the DinoPlanetRecompiled user directory on Windows or Linux. A portable.txt file beside the executable moves saves, configuration and mods into that folder instead, which is useful for a self-contained installation.",
              "The recomp remains work in progress and is missing some enhancements available in other N64 ports. Its prototype foundation is also an important limit: a functioning native renderer does not turn unfinished original content into a completed retail adventure."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Dinosaur Planet: Recompiled · project documentation",
            "url": "https://raw.githubusercontent.com/DinosaurPlanetRecomp/dino-recomp/HEAD/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "work-in-progress",
        "route": {
          "kind": "download",
          "url": "https://github.com/DinosaurPlanetRecomp/dino-recomp/releases/tag/v0.3.0"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Only the unpatched December 2000 prototype ROM is supported. Arbitrary or emulator-patched ROMs are not accepted.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/DinosaurPlanetRecomp/dino-recomp/HEAD/README.md"
        },
        "setup": {
          "answer": "Download a Windows or Linux release and supply the supported prototype ROM. Recomp mods are separate from patched ROMs.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/DinosaurPlanetRecomp/dino-recomp/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows and Linux packages require an SSE4.1 CPU and a Direct3D 12 Shader Model 6 or Vulkan 1.2 GPU.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/DinosaurPlanetRecomp/dino-recomp/HEAD/README.md"
        },
        "issues": {
          "answer": "Work in progress; this is a port of a prototype, not a completed retail Star Fox Adventures release.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/DinosaurPlanetRecomp/dino-recomp/HEAD/README.md"
        },
        "saves": {
          "answer": "The README documents platform save directories and portable.txt mode.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/DinosaurPlanetRecomp/dino-recomp/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/DinosaurPlanetRecomp/dino-recomp"
    },
    {
      "id": "project:doom-3-browser",
      "slug": "doom-3-browser",
      "title": "Doom 3",
      "project": "D3Wasm",
      "canonicalUrl": "https://playable.wtf/games/doom-3-browser/",
      "originals": [
        {
          "id": "doom3",
          "name": "Doom 3",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "The Doom 3 demo running through a WebAssembly port of id Tech 4.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Doom 3 takes its time in the dark",
            "kind": "background",
            "paragraphs": [
              "The original Doom 3 places you inside a UAC research facility on Mars as a demonic invasion overwhelms it. Its enclosed spaces, darkness and horror setting give combat a different atmosphere from the abstract arenas and quick map-to-map movement of the earliest Doom games. Exploration and the next close-range encounter share the same corridors.",
              "That is the game behind this port, but the hosted D3Wasm launch supplies the demo. It is a way to experience part of Doom 3 and its engine in a browser, rather than an included copy of the entire commercial campaign."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "An id Tech 4 browser experiment",
            "kind": "project",
            "paragraphs": [
              "D3Wasm is Gabriel Cuvillier's experiment bringing the Doom 3 engine to WebAssembly and WebGL, using dhewm3 as its basis. The demo's data download is roughly 400 MB. The menu arrives after the first portion, while most of the remaining data continues loading; you can inspect the controls during that wait.",
              "The full retail game requires a separate setup with your own data. Opening the hosted demo does not supply that commercial campaign."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "keys",
            "title": "Two browser-specific keys to remember",
            "kind": "practical",
            "paragraphs": [
              "WASD is the default movement layout. The port uses Home for the menu and skipping sequences where the original game uses Escape, and Insert opens the console. Those substitutions are worth learning before play because the browser handles some keys differently from a native application.",
              "The project stores saves and configuration in IndexedDB and caches downloaded data locally. Private browsing can prevent that persistence, so use a normal browser profile when you want to return to the same saves."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "limits",
            "title": "Use a desktop and expect an experimental renderer",
            "kind": "limitations",
            "paragraphs": [
              "Use a desktop for this build. The creator reports mobile performance limitations and no usable touch controls. Some visual effects differ from the original renderer, and the documented in-game brightness adjustment does not work. That matters in a game whose dark spaces are central to its presentation."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "id Software · Doom 3 publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=9050&l=english"
          },
          {
            "id": "project",
            "label": "D3Wasm · creator documentation and limitations",
            "url": "https://www.continuation-labs.com/projects/d3wasm/"
          }
        ]
      },
      "families": [
        {
          "id": "doom",
          "title": "Doom",
          "indexUrl": "https://playable.wtf/families/#family-doom",
          "guideUrl": "https://playable.wtf/guides/doom-quake-browser-versions/",
          "choices": [
            {
              "slug": "wad-commander-v1",
              "label": "Classic Doom in a browser",
              "reason": "Choose owned WADs, shareware or Freedoom, with a documented touch layout.",
              "canonicalUrl": "https://playable.wtf/games/wad-commander-v1/"
            },
            {
              "slug": "chocolate-doom-chocolate-doom",
              "label": "Keep the original DOS behavior",
              "reason": "A native port for compatible classic content, old demos and saves.",
              "canonicalUrl": "https://playable.wtf/games/chocolate-doom-chocolate-doom/"
            },
            {
              "slug": "doom-3-browser",
              "label": "Try the Doom 3 demo",
              "reason": "A desktop browser route into the later game without a retail-data setup.",
              "canonicalUrl": "https://playable.wtf/games/doom-3-browser/"
            },
            {
              "slug": "dhewm-dhewm3",
              "label": "Play owned original Doom 3",
              "reason": "Use original 1.3.1 data in a native port; BFG Edition files do not fit.",
              "canonicalUrl": "https://playable.wtf/games/dhewm-dhewm3/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://wasm.continuation-labs.com/d3demo/"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The hosted route uses Doom 3 Demo data. Running the full game requires your own retail files and additional setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.continuation-labs.com/projects/d3wasm/"
        },
        "setup": {
          "answer": "Open the demo and allow its data to load into browser storage.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.continuation-labs.com/projects/d3wasm/"
        },
        "devices": {
          "answer": "The creator documents desktop browsers and says the mobile build lacks usable touch controls.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.continuation-labs.com/projects/d3wasm/"
        },
        "controls": {
          "answer": "WASD; Home opens the menu and Insert opens the console.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.continuation-labs.com/projects/d3wasm/"
        },
        "issues": {
          "answer": "Experimental demo. The creator documents missing effects and storage limitations; performance has not been retested here.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.continuation-labs.com/projects/d3wasm/"
        },
        "scope": {
          "answer": "The hosted D3Wasm route is the Doom 3 demo. The full retail game is not included.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.continuation-labs.com/projects/d3wasm/"
        },
        "saves": {
          "answer": "Savegames and configuration use local IndexedDB. The creator warns that this storage does not work in private browsing.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.continuation-labs.com/projects/d3wasm/"
        }
      },
      "credits": [],
      "sourceUrl": "https://www.continuation-labs.com/projects/d3wasm/"
    },
    {
      "id": "project:doom-multiplayer-browser",
      "slug": "doom-multiplayer-browser",
      "title": "Doom",
      "project": "Silent Space Marine",
      "canonicalUrl": "https://playable.wtf/games/doom-multiplayer-browser/",
      "originals": [
        {
          "id": "doom",
          "name": "Doom",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "A Cloudflare WebAssembly experiment with solo and multiplayer entry points.",
      "editorial": {
        "sections": [
          {
            "id": "classic-engine",
            "title": "Classic Doom behavior in a web experiment",
            "kind": "background",
            "paragraphs": [
              "Silent Space Marine uses Chocolate Doom as the basis for its browser port. Chocolate Doom aims to reproduce the Doom experience of the 1990s, so the project's starting point is the classic game's behavior rather than a modernized remake with a different presentation. The browser and networking work sits around that engine.",
              "This matters when comparing Doom projects: the engine's preservation goal and the host's multiplayer transport answer different questions. One concerns how Doom behaves; the other concerns how players share a session."
            ],
            "sourceIds": [
              "engine",
              "article"
            ]
          },
          {
            "id": "this-version",
            "title": "Choose solo play or start a group",
            "kind": "project",
            "paragraphs": [
              "The site provides Play Solo and Start Multiplayer. Multiplayer runs through Cloudflare's network and supports up to four players. The host shares an invitation URL; guests enter their names and wait for the host to start. Use the invitation when joining friends, rather than independently starting another multiplayer game."
            ],
            "sourceIds": [
              "host",
              "article"
            ]
          },
          {
            "id": "controls",
            "title": "Desktop mouse or phone controls",
            "kind": "practical",
            "paragraphs": [
              "The implementation supports mouse input and sound, with F for fullscreen during play. Phones use virtual gamepads, and the landing page suggests hiding the browser toolbar for more room. These are controls documented for this specific experiment, not a promise that every Doom WebAssembly port has the same mobile layout."
            ],
            "sourceIds": [
              "article",
              "host"
            ]
          },
          {
            "id": "connection",
            "title": "The group moves at its slowest connection",
            "kind": "limitations",
            "paragraphs": [
              "The multiplayer simulation waits for every player's input. A slow connection can therefore slow the whole group, even when the other players have faster links. The creator also describes rough handling of abrupt disconnects and reconnects.",
              "Treat a match as a shared live session. The experiment does not make that session a durable saved game simply by using Cloudflare Durable Objects; the implementation article distinguishes its live coordination from persistent storage."
            ],
            "sourceIds": [
              "article"
            ]
          }
        ],
        "sources": [
          {
            "id": "engine",
            "label": "Chocolate Doom · preservation goals",
            "url": "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom"
          },
          {
            "id": "host",
            "label": "Silent Space Marine · solo and multiplayer launcher",
            "url": "https://silentspacemarine.com/"
          },
          {
            "id": "article",
            "label": "Cloudflare · Doom multiplayer implementation",
            "url": "https://blog.cloudflare.com/doom-multiplayer-workers/"
          }
        ]
      },
      "families": [
        {
          "id": "doom",
          "title": "Doom",
          "indexUrl": "https://playable.wtf/families/#family-doom",
          "guideUrl": "https://playable.wtf/guides/doom-quake-browser-versions/",
          "choices": [
            {
              "slug": "wad-commander-v1",
              "label": "Classic Doom in a browser",
              "reason": "Choose owned WADs, shareware or Freedoom, with a documented touch layout.",
              "canonicalUrl": "https://playable.wtf/games/wad-commander-v1/"
            },
            {
              "slug": "chocolate-doom-chocolate-doom",
              "label": "Keep the original DOS behavior",
              "reason": "A native port for compatible classic content, old demos and saves.",
              "canonicalUrl": "https://playable.wtf/games/chocolate-doom-chocolate-doom/"
            },
            {
              "slug": "doom-3-browser",
              "label": "Try the Doom 3 demo",
              "reason": "A desktop browser route into the later game without a retail-data setup.",
              "canonicalUrl": "https://playable.wtf/games/doom-3-browser/"
            },
            {
              "slug": "dhewm-dhewm3",
              "label": "Play owned original Doom 3",
              "reason": "Use original 1.3.1 data in a native port; BFG Edition files do not fit.",
              "canonicalUrl": "https://playable.wtf/games/dhewm-dhewm3/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://silentspacemarine.com"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "setup": {
          "answer": "Use Play Solo or Start Multiplayer on the project page.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://silentspacemarine.com"
        },
        "devices": {
          "answer": "The project’s own implementation article documents desktop browsers and mobile phones with virtual gamepads.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://blog.cloudflare.com/doom-multiplayer-workers"
        },
        "controls": {
          "answer": "The browser port supports mouse input. Press F during play for fullscreen; phones use virtual gamepads.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://blog.cloudflare.com/doom-multiplayer-workers"
        },
        "multiplayer": {
          "answer": "The demo supports up to four players through Cloudflare’s network. Everyone’s simulation waits for the other players’ inputs, so a slow connection affects the group.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://blog.cloudflare.com/doom-multiplayer-workers"
        },
        "issues": {
          "answer": "The creator documents rough handling of abrupt disconnects and reconnects. Do not treat a multiplayer session as a durable saved game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://blog.cloudflare.com/doom-multiplayer-workers"
        }
      },
      "credits": [],
      "sourceUrl": "https://silentspacemarine.com"
    },
    {
      "id": "project:doom-wasm-browser",
      "slug": "doom-wasm-browser",
      "title": "Doom",
      "project": "doom.wasm",
      "canonicalUrl": "https://playable.wtf/games/doom-wasm-browser/",
      "originals": [
        {
          "id": "doom",
          "name": "Doom",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "A minimal Doom WebAssembly runtime with a playable browser example.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original Doom in a minimal browser shell",
            "kind": "background",
            "paragraphs": [
              "The 1993 Doom casts you as a marine fighting a demonic invasion. Its appeal is immediate first-person combat: choosing weapons, reading the space around enemies and pushing through to the next area. This project approaches that original game as a compact runnable engine, rather than as the enhanced commercial Doom + Doom II package."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "Why this Doom port is different",
            "kind": "project",
            "paragraphs": [
              "Jacob Enget designed doom.wasm around a small interface that other programs can use. The browser page is a deliberately simple demonstration of the same module also used by native and Python examples. It defaults to shareware data; its programming interface can load custom WAD data, but that is not the same as a polished drag-and-drop mod launcher.",
              "Choose this version if you want to see a small WebAssembly implementation at work. For a longer campaign session, its missing audio is a substantial tradeoff: neither music nor sound effects are produced."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "playing",
            "title": "Use the classic keyboard layout",
            "kind": "practical",
            "paragraphs": [
              "The example follows vanilla Doom controls. Arrows move and turn, Ctrl fires, Space operates doors and switches, and comma or period steps sideways. Learn the strafe keys early so that moving out of the way does not require turning away from a target.",
              "A brief apparent freeze during a screen transition can be the original melting animation completing without intermediate browser frames. That documented limitation is separate from a failed game load. Retail content requires your own WAD data; the shareware default is not the complete paid game."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Bethesda · original Doom description",
            "url": "https://store.steampowered.com/app/2280/DOOM__DOOM_II/"
          },
          {
            "id": "project",
            "label": "doom.wasm · runtime and browser example documentation",
            "url": "https://github.com/jacobenget/doom.wasm"
          }
        ]
      },
      "families": [
        {
          "id": "doom",
          "title": "Doom",
          "indexUrl": "https://playable.wtf/families/#family-doom",
          "guideUrl": "https://playable.wtf/guides/doom-quake-browser-versions/",
          "choices": [
            {
              "slug": "wad-commander-v1",
              "label": "Classic Doom in a browser",
              "reason": "Choose owned WADs, shareware or Freedoom, with a documented touch layout.",
              "canonicalUrl": "https://playable.wtf/games/wad-commander-v1/"
            },
            {
              "slug": "chocolate-doom-chocolate-doom",
              "label": "Keep the original DOS behavior",
              "reason": "A native port for compatible classic content, old demos and saves.",
              "canonicalUrl": "https://playable.wtf/games/chocolate-doom-chocolate-doom/"
            },
            {
              "slug": "doom-3-browser",
              "label": "Try the Doom 3 demo",
              "reason": "A desktop browser route into the later game without a retail-data setup.",
              "canonicalUrl": "https://playable.wtf/games/doom-3-browser/"
            },
            {
              "slug": "dhewm-dhewm3",
              "label": "Play owned original Doom 3",
              "reason": "Use original 1.3.1 data in a native port; BFG Edition files do not fit.",
              "canonicalUrl": "https://playable.wtf/games/dhewm-dhewm3/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://jacobenget.github.io/doom.wasm/examples/browser/doom.html"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The runtime defaults to Doom shareware and can accept custom WAD data; use your own files for retail content.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/jacobenget/doom.wasm"
        },
        "setup": {
          "answer": "Open the browser example and use the classic keyboard controls.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/jacobenget/doom.wasm"
        },
        "controls": {
          "answer": "The example uses vanilla Doom keyboard controls: arrows move/turn, Ctrl fires, Space uses doors and switches, and comma/period strafe.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/jacobenget/doom.wasm/HEAD/README.md"
        },
        "issues": {
          "answer": "This runtime currently produces no music or sound effects. Screen transitions can appear frozen while the original melt effect completes.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/jacobenget/doom.wasm/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/jacobenget/doom.wasm"
    },
    {
      "id": "project:dxx-rebirth-dxx-rebirth",
      "slug": "dxx-rebirth-dxx-rebirth",
      "title": "Descent / Descent II",
      "project": "DXX-Rebirth",
      "canonicalUrl": "https://playable.wtf/games/dxx-rebirth-dxx-rebirth/",
      "originals": [
        {
          "id": "descent",
          "name": "Descent",
          "relationship": "port-of"
        },
        {
          "id": "descentii",
          "name": "Descent II",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "Shooter",
      "summary": "Six-degrees-of-freedom Descent engines updated for modern systems.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A shooter with no fixed floor",
            "kind": "background",
            "paragraphs": [
              "Descent puts you in a small spacecraft inside robot-filled mines. Movement has six degrees of freedom: you can climb, drop, slide and rotate through tunnels instead of staying upright on a floor. The original mission sends the Material Defender to investigate lost mining colonies and find survivors.",
              "That freedom changes how you read a firefight. A passage can be above or behind you, and turning to face a target is only one part of positioning the ship. It is a strong fit for players who want spatial navigation to matter as much as aim."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Two engines with a preservation-minded approach",
            "kind": "project",
            "paragraphs": [
              "DXX-Rebirth contains D1X-Rebirth for Descent and D2X-Rebirth for Descent II. Its stated aim is to preserve the games while updating their platform support. The project documents compatibility with expansions, third-party missions and original DOS player files, saves and recorded demos.",
              "Display choices include modern resolutions and aspect ratios, with optional filtering, colored lighting and other effects. Keyboard, mouse and joysticks can be used together. That flexibility is useful for arranging the many movement axes, rather than forcing a six-direction craft into one fixed input scheme."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installing",
            "title": "Match the data to the engine",
            "kind": "practical",
            "paragraphs": [
              "Each engine needs only its own game’s data. Supported shareware and demo sets offer a way to try the games; retail files supply the full corresponding content. PC and Mac data can be used regardless of the operating system running Rebirth, but their required file sets differ.",
              "For Descent II, movies are optional for gameplay. The installation guide recommends the robots movie file if you want the single-player briefings. Use the guide’s exact list rather than copying only a HOG archive and assuming the sound and texture data are included."
            ],
            "sourceIds": [
              "install"
            ]
          },
          {
            "id": "playing-together",
            "title": "LAN and online sessions use UDP",
            "kind": "practical",
            "paragraphs": [
              "Rebirth supports LAN and internet play. Direct-IP hosting and joining through the online tracker have different networking needs; the project says tracker-based sessions usually avoid manual port forwarding. Agree on which game and mission you are playing before connecting. For a source installation, follow the platform build guidance in the repository."
            ],
            "sourceIds": [
              "project",
              "install"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "DXX-Rebirth · project documentation",
            "url": "https://raw.githubusercontent.com/dxx-rebirth/dxx-rebirth/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "DXX-Rebirth · original game publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=273570&l=english"
          },
          {
            "id": "install",
            "label": "DXX-Rebirth · data and engine installation",
            "url": "https://raw.githubusercontent.com/dxx-rebirth/dxx-rebirth/HEAD/INSTALL.markdown"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "source-build",
        "status": "source-work",
        "route": {
          "kind": "project",
          "url": "https://github.com/dxx-rebirth/dxx-rebirth"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "D1 needs descent.hog and descent.pig. D2 requires the appropriate retail or demo HOG/HAM/PIG files and sound data; the installation guide lists each set. Demo/shareware data is supported.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dxx-rebirth/dxx-rebirth/HEAD/INSTALL.markdown"
        },
        "setup": {
          "answer": "Follow INSTALL.markdown to obtain a platform build from GitHub Actions or compile locally, then place the matching Descent data in its search directory.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dxx-rebirth/dxx-rebirth/HEAD/INSTALL.markdown"
        },
        "devices": {
          "answer": "Linux, macOS and Windows are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dxx-rebirth/dxx-rebirth/HEAD/README.md"
        },
        "controls": {
          "answer": "Keyboard, mouse and SDL joysticks can be used together.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dxx-rebirth/dxx-rebirth/HEAD/README.md"
        },
        "multiplayer": {
          "answer": "UDP multiplayer is documented for LAN and internet play. Direct-IP hosts may need network configuration.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dxx-rebirth/dxx-rebirth/HEAD/README.md"
        },
        "saves": {
          "answer": "Original DOS player files, saves, demos and missions are supported by the project.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/dxx-rebirth/dxx-rebirth/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/dxx-rebirth/dxx-rebirth"
    },
    {
      "id": "project:dyotson-forzahorizon1-reimagined",
      "slug": "dyotson-forzahorizon1-reimagined",
      "title": "Forza Horizon",
      "project": "Forza Horizon 1: ReImagined",
      "canonicalUrl": "https://playable.wtf/games/dyotson-forzahorizon1-reimagined/",
      "originals": [
        {
          "id": "forzahorizon",
          "name": "Forza Horizon",
          "relationship": "port-of"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Racing",
      "summary": "A native Forza Horizon launcher that builds locally from owned Xbox 360 data.",
      "editorial": {
        "sections": [
          {
            "id": "the-experience",
            "title": "Colorado driving with a rebuilt online layer",
            "kind": "project",
            "paragraphs": [
              "Forza Horizon 1: ReImagined takes the original Horizon’s Colorado driving, races and career and adds its own modern host and service layer. The creator documents free roam, race events, audio and saves, with higher frame-rate options and keyboard or controller input. It is intended to make the original game easier to revisit while adding ways to meet and compete online.",
              "Its Forza Live server is a project-run replacement service, not the original Xbox LIVE or Turn 10 infrastructure. Shared free roam, Rivals and leaderboards depend on that service and its current configuration."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installation",
            "title": "The launcher builds from your files",
            "kind": "practical",
            "paragraphs": [
              "The downloadable launcher is an installation tool. It extracts and checks your owned base-game package or disc-one ISO, generates the local game code and builds the runtime. It may download a compiler and SDK when needed. Allow space for both the original extracted game and the build tools, rather than judging the installation size by the launcher alone.",
              "Linux Flatpak is the documented end-to-end tested launcher path. Windows packages exist, but the README says the cross-compiled runtime was tried under Proton and the Windows installer path had not been run on Windows. That distinction matters when choosing where to set up a first installation."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "driving",
            "title": "A controller and keyboard do not feel identical",
            "kind": "practical",
            "paragraphs": [
              "The keyboard mode covers menus, free roam, races, the map and photo mode, with rebindable keys and mouse-based camera control. Throttle and brake are digital, while keyboard steering uses a ramp. A controller offers a different input feel, particularly when making small steering and speed adjustments.",
              "Higher frame-rate targets are configurable, but the creator’s measurements show busy races can become GPU-limited. A high menu or free-roam rate should not be taken as a promise that a full race holds the same target."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "versions-and-services",
            "title": "Keep updates, profiles and online expectations aligned",
            "kind": "limitations",
            "paragraphs": [
              "Title Update 4 adds the documented route for Horizon Rally and the 1000 Club, using your own update and relevant content. Base-game and TU4 players occupy separate rooms, and a profile used with TU4 is refused by the base build. Choose the intended version before building a continuing career.",
              "The auction-house screens are absent and the storefront returns empty. Rally support also has a stated co-driver-audio limitation. These concrete gaps are more informative than treating restored online functionality as a claim that every original service is back."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Forza Horizon 1: ReImagined · project documentation",
            "url": "https://raw.githubusercontent.com/Dyotson/ForzaHorizon1-ReImagined/HEAD/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/Dyotson/ForzaHorizon1-ReImagined/releases/tag/v0.1.7"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The base Games on Demand package (4D5309C9/00007000 plus its .data directory), retail disc 1 ISO or extracted disc files. Title Update 4 is optional for the documented DLC features.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/Dyotson/ForzaHorizon1-ReImagined/HEAD/README.md"
        },
        "setup": {
          "answer": "Install the experimental launcher, choose your owned base game data and let it prepare the local build. The launcher downloads required build tools; it does not supply the game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/Dyotson/ForzaHorizon1-ReImagined/HEAD/README.md"
        },
        "devices": {
          "answer": "Linux x86-64 or Windows 10/11 64-bit, Vulkan 1.3 graphics and about 15 GB free disk are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/Dyotson/ForzaHorizon1-ReImagined/HEAD/README.md"
        },
        "controls": {
          "answer": "Keyboard/mouse and controllers are documented; keyboard throttle and braking are on/off.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/Dyotson/ForzaHorizon1-ReImagined/HEAD/README.md"
        },
        "multiplayer": {
          "answer": "The project describes Horizon World online free roam and races through its own server. This remains creator-reported functionality in an experimental release.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/Dyotson/ForzaHorizon1-ReImagined/HEAD/README.md"
        },
        "issues": {
          "answer": "The auction-house screens are absent and the storefront returns empty. Installation performs a local build and requires additional tools.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/Dyotson/ForzaHorizon1-ReImagined/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Dyotson/ForzaHorizon1-ReImagined"
    },
    {
      "id": "project:ecwolfengine-ecwolf",
      "slug": "ecwolfengine-ecwolf",
      "title": "Wolfenstein 3D / Spear of Destiny",
      "project": "ECWolf",
      "canonicalUrl": "https://playable.wtf/games/ecwolfengine-ecwolf/",
      "originals": [
        {
          "id": "wolfenstein3d",
          "name": "Wolfenstein 3D",
          "relationship": "port-of"
        },
        {
          "id": "spearofdestiny",
          "name": "Spear of Destiny",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "Shooter",
      "summary": "A Wolfenstein-engine source port with modern controls and mod support.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Close corridors and maze navigation",
            "kind": "background",
            "paragraphs": [
              "Wolfenstein 3D follows B.J. Blazkowicz escaping a Nazi stronghold, fighting through a maze of passages with weapons ranging from a knife to machine guns. Spear of Destiny is a separate prequel mission centered on recovering the stolen spear. These early first-person shooters place navigation and recognizing threats around corners at the center of their action."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Original engine roots with a modern interface",
            "kind": "project",
            "paragraphs": [
              "ECWolf builds on Wolf4SDL and the Wolfenstein engine, keeping software ray-cast rendering while adding conveniences inspired by ZDoom. Widescreen resolutions, aspect-ratio correction, a built-in automap and unrestricted save slots make the old maze structure easier to approach. WASD and mouse controls are explicitly supported.",
              "The same program can load the supported games’ data sets. That does not mean every game mentioned in the README is finished: several engine-family titles and Macintosh Wolfenstein support appear as future plans."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "data",
            "title": "Check the edition when graphics look wrong",
            "kind": "practical",
            "paragraphs": [
              "The download page identifies the supported Wolfenstein and Spear data extensions and offers shareware or demo data as well as instructions for owned versions. Windows can find some Steam and GOG installations automatically; manual installations use the appropriate data folder for their operating system.",
              "ECWolf expects the latest supported Wolfenstein data revision. If the game launches with corrupted-looking graphics, the project points to its data patch utility rather than a renderer upgrade. A correctly named set of old files can still be the wrong revision."
            ],
            "sourceIds": [
              "download"
            ]
          },
          {
            "id": "mods-and-platforms",
            "title": "Mods and mobile builds have their own limits",
            "kind": "limitations",
            "paragraphs": [
              "ECWolf lets authors build substantial mods without changing its source code, including new maps, textures and sprites. Use the engine version requested by a mod: the README cautions that pre-2.0 mod compatibility is not guaranteed across every change.",
              "Android downloads exist, but the project describes that support as buggy and in need of a maintainer. Desktop availability should not be read as equivalent mobile polish. For an ordinary first session, a supported desktop package and the standard game data provide the clearest starting point."
            ],
            "sourceIds": [
              "project",
              "download"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "ECWolf · project documentation",
            "url": "https://raw.githubusercontent.com/ECWolfEngine/ECWolf/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "ECWolf · original game publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=2270&l=english"
          },
          {
            "id": "download",
            "label": "ECWolf · downloads, data and platform limits",
            "url": "https://maniacsvault.net/ecwolf/download.php"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://maniacsvault.net/ecwolf/download.php"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Registered or shareware Wolfenstein 3D or Spear of Destiny data. The download page identifies wl1/wl6 and sdm/sod/sd2/sd3 file sets for these games.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://maniacsvault.net/ecwolf/download.php"
        },
        "setup": {
          "answer": "Install the platform package and use a detected Steam/GOG installation or put the relevant data in the documented ECWolf directory.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://maniacsvault.net/ecwolf/download.php"
        },
        "devices": {
          "answer": "Windows, macOS and Linux are documented. The Android port is explicitly described as buggy and in need of a maintainer.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://maniacsvault.net/ecwolf/download.php"
        },
        "controls": {
          "answer": "WASD plus mouse controls are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/ECWolfEngine/ECWolf/HEAD/README.md"
        },
        "issues": {
          "answer": "Android support is limited. Future support mentioned in the README is not treated as currently available.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://maniacsvault.net/ecwolf/download.php"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/ECWolfEngine/ECWolf"
    },
    {
      "id": "project:elliotttate-dkc1recomp",
      "slug": "elliotttate-dkc1recomp",
      "title": "Donkey Kong Country",
      "project": "DKC1Recomp",
      "canonicalUrl": "https://playable.wtf/games/elliotttate-dkc1recomp/",
      "originals": [
        {
          "id": "donkeykongcountry",
          "name": "Donkey Kong Country",
          "relationship": "port-of"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Platformer",
      "summary": "The first Donkey Kong Country statically recompiled with native desktop hosts.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "A native route into the original Donkey Kong Country",
            "kind": "project",
            "paragraphs": [
              "DKC1Recomp targets the USA 1.0 Super Nintendo version of Donkey Kong Country. It translates the game into a native host while preserving the cartridge’s underlying game logic. The project’s movement and animation work covers familiar actions such as jumping, rolling, carrying and throwing, climbing ropes and swimming.",
              "The developer calls the project a playable bring-up. That is a useful boundary: a generated-code milestone or successful opening level is not a claim that every level, optional mod and host platform has identical completeness."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "presentation",
            "title": "Widescreen is an optional interpretation",
            "kind": "project",
            "paragraphs": [
              "The port offers the original 256×224 presentation alongside wider views. Its approach preserves the underlying camera, collisions and level boundaries while extending what is shown around them. The Mac host provides several image-sampling choices, from crisp pixels to smoother filtering.",
              "Wider views can expose problems the original screen never showed. The documentation identifies experimental aquatic-level fixes and incomplete coverage of entrances. If a level’s edges look wrong, compare with the original-width mode before concluding that the original game data is damaged."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "platform-versions",
            "title": "Check the version for your actual device",
            "kind": "practical",
            "paragraphs": [
              "Windows, macOS and iOS packages have not always advanced together. The README explicitly distinguishes Windows releases with persistent Candy saves from an older accompanying Mac build that lacks the same fix. Read the notes for the file you download, not just the release page’s largest version number.",
              "Desktop controls support keyboard and SDL gamepads. The iPhone and iPad frontend offers landscape touch controls, controller input and ROM import, with sideloaded builds requiring signing for the recipient device. That installation route is separate from opening a desktop app."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "roms-and-mods",
            "title": "Use a clean base before adding character variants",
            "kind": "practical",
            "paragraphs": [
              "The normal input is a headerless USA 1.0 ROM with the exact size and checksum documented by the project. Optional character variants are separate from that baseline. The Baby Kong option, for example, needs a supported Donkey Kong Country 3 donor ROM; it is not evidence that this engine also runs the third game.",
              "Keep ordinary in-game saves distinct from host quick-save features, and preserve the host’s user-data directory when upgrading. Optional music packs and mods also have their own stored selections and resources."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "DKC1Recomp · project documentation",
            "url": "https://raw.githubusercontent.com/elliotttate/DKC1Recomp/HEAD/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "work-in-progress",
        "route": {
          "kind": "download",
          "url": "https://github.com/elliotttate/DKC1Recomp/releases/tag/v0.0.17"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "A headerless Donkey Kong Country USA v1.0 ROM, checked against the project’s documented digest. Optional character mods may require a separate supported donor ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/elliotttate/DKC1Recomp/HEAD/README.md"
        },
        "setup": {
          "answer": "Choose the release for your platform and import the verified original ROM with the native picker.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/elliotttate/DKC1Recomp/HEAD/README.md"
        },
        "devices": {
          "answer": "The latest checked release has Windows and macOS packages. An iPhone/iPad frontend is documented for an earlier release and requires device-specific signing.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/elliotttate/DKC1Recomp/HEAD/README.md"
        },
        "controls": {
          "answer": "Keyboard controls and SDL game controllers are documented, with native remapping options.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/elliotttate/DKC1Recomp/HEAD/README.md"
        },
        "issues": {
          "answer": "Playable bring-up, with platform versions and feature sets differing. Experimental widescreen and optional mods are not blanket completeness guarantees.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/elliotttate/DKC1Recomp/HEAD/README.md"
        },
        "saves": {
          "answer": "Candy saves and quick-save/load are documented, with platform- and release-specific persistence notes.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/elliotttate/DKC1Recomp/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/elliotttate/DKC1Recomp"
    },
    {
      "id": "project:elmasas-lcs-recomp",
      "slug": "elmasas-lcs-recomp",
      "title": "Grand Theft Auto: Liberty City Stories",
      "project": "LCS Recomp",
      "canonicalUrl": "https://playable.wtf/games/elmasas-lcs-recomp/",
      "originals": [
        {
          "id": "grandtheftautolibertycitystories",
          "name": "Grand Theft Auto: Liberty City Stories",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Adventure",
      "summary": "The PSP game recompiled with a documented US-version setup.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "The PSP edition with PC input",
            "kind": "project",
            "paragraphs": [
              "LCS Recomp brings the PSP release of Liberty City Stories to a native PC program through PSPRecomp. Its input layer maps the handheld controls onto familiar mouse, keyboard and gamepad actions, covering both movement on foot and driving. The camera can follow mouse motion, while a separate recenter command puts it behind the character.",
              "The supported game is US version 1.05, ULUS-10041. Setup needs the decrypted EBOOT.ELF together with the disc’s PSP_GAME folder. A random executable from a different region or update is not an equivalent input, and the port does not include those files."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "input",
            "title": "Learn the on-foot and vehicle differences",
            "kind": "practical",
            "paragraphs": [
              "WASD moves on foot; in a vehicle, W accelerates and S brakes. Space sprints on foot but becomes the handbrake when driving. Shift jumps on foot, while F or Enter enters and exits vehicles. Left click attacks or fires and right click aims on foot. The wheel changes weapons, then changes radio stations in a vehicle.",
              "H or middle click recenters the camera and also serves the game’s weapon-pickup action. These shared bindings matter because a control can do something different after entering a car. The configuration file supports alternate keys and controller actions; change bindings there, then restart. F10 opens host settings and F11 toggles fullscreen."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "display",
            "title": "Window size and render resolution are separate",
            "kind": "practical",
            "paragraphs": [
              "LCSNative.ini controls both the window’s size and the internal rendering target. Each can use the PSP size, a scale, a custom resolution or the desktop. A larger window alone is therefore different from increasing the detail of the rendered image. Texture LOD bias provides another way to adjust distant texture sharpness.",
              "Windows source builds use Visual Studio and LLVM. The Linux route uses Vulkan with SDL2 and has its own build and launch scripts. Follow the layout for your chosen package: release files go under game/, while source builds expect lcs/game/. Keeping those paths distinct avoids an apparently missing game after a successful extraction."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "LCS Recomp · project documentation",
            "url": "https://github.com/elmasas/lcs-recomp"
          }
        ]
      },
      "families": [
        {
          "id": "gta",
          "title": "Grand Theft Auto",
          "indexUrl": "https://playable.wtf/families/#family-gta",
          "guideUrl": "https://playable.wtf/guides/gta-game-versions/",
          "choices": [
            {
              "slug": "gta-iii-re3-web",
              "label": "GTA III in a desktop browser",
              "reason": "WASM Arcade documents re3-based play, keyboard/gamepad input and local save exports; launch includes advertising.",
              "canonicalUrl": "https://playable.wtf/games/gta-iii-re3-web/"
            },
            {
              "slug": "elmasas-lcs-recomp",
              "label": "Liberty City Stories",
              "reason": "A native route for the supported PSP US v1.05 edition, with configurable keyboard, mouse and controller input.",
              "canonicalUrl": "https://playable.wtf/games/elmasas-lcs-recomp/"
            },
            {
              "slug": "koreanseats1-theft4",
              "label": "GTA IV on Apple mobile",
              "reason": "An experimental signed iOS/iPadOS app using the exact Xbox 360 base and TU8, with a save-export workflow.",
              "canonicalUrl": "https://playable.wtf/games/koreanseats1-theft4/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/elmasas/lcs-recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "US v1.05 (ULUS-10041): your EBOOT.ELF and PSP_GAME folder.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/elmasas/lcs-recomp"
        },
        "setup": {
          "answer": "Place the required files in the release’s game directory, then follow its Play instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/elmasas/lcs-recomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/elmasas/lcs-recomp"
    },
    {
      "id": "project:elyosh-opentie",
      "slug": "elyosh-opentie",
      "title": "Star Wars: TIE Fighter",
      "project": "OpenTIE",
      "canonicalUrl": "https://playable.wtf/games/elyosh-opentie/",
      "originals": [
        {
          "id": "starwarstiefighter",
          "name": "Star Wars: TIE Fighter",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Simulation",
      "summary": "TIE Fighter’s classic editions on a new cross-platform engine.",
      "editorial": {
        "sections": [
          {
            "id": "an-imperial-cockpit",
            "title": "The original Imperial flight campaign",
            "kind": "background",
            "paragraphs": [
              "TIE Fighter puts you in the Imperial Navy after the Battle of Hoth, flying against the Rebellion from the Empire’s side of the conflict. Its campaign combines starfighter combat with a story delivered through mission progression and cinematic scenes. The appeal here is the cockpit-level perspective: the familiar Star Wars conflict becomes a sequence of flights undertaken as an Imperial pilot."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "combine-the-editions",
            "title": "Choosing the best parts of two editions",
            "kind": "project",
            "paragraphs": [
              "OpenTIE is a native reimplementation for current computers using your original game installation. It supports the 1995 Collector’s CD-ROM and the 1998 Windows edition, either separately or together. With both available, you can choose menus, cutscenes, flight simulation and music independently instead of accepting every trade-off of one release.",
              "The recommended combination pairs the 1995 presentation and adaptive iMUSE music with the 1998 flight simulation and 3D assets. iMUSE responds to mission events during flight. If the later edition’s prerecorded soundtrack is the version you remember, that remains an option too."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "a-familiar-view-or-modern-flight",
            "title": "A familiar view or modern flight",
            "kind": "project",
            "paragraphs": [
              "Classic graphics preserve the older presentation; modern graphics keep the original models and cockpit artwork while adding higher-resolution rendering, new lighting, shadows and optional effects. Tab switches between the two during play. Flight simulation can update at up to 240 Hz, but the original editions’ timing modes remain available.",
              "Mouse and keyboard, a gamepad or a joystick can control flight. Mouse users can choose the classic scheme or a virtual stick and adjust sensitivity and inversion. Those choices make it worth setting up your preferred controls before deciding whether you want original timing or the faster simulation update."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installations-sound-and-compatibility",
            "title": "Installations, sound and compatibility",
            "kind": "practical",
            "paragraphs": [
              "Point the launcher at a complete installation of at least one supported edition; both are needed for the hybrid configuration. OpenTIE validates the folders and can import compatible existing pilot files at setup. Keep the downloaded executable, libraries, resources and shaders together when moving the port.",
              "The built-in OPL3 sound option needs no separate synthesizer ROM. Roland SC-55 emulation requires compatible ROMs you supply, while FluidSynth accepts your chosen SoundFont. OpenTIE settings are reached through Escape from the concourse or during flight.",
              "Windows uses Direct3D 12 or Vulkan; macOS 13 and later supports Intel and Apple silicon through Metal; Linux requires x86-64, glibc 2.35 or later and Vulkan. The project is actively developed, so bugs or differences from the original remain possible. This is a native download, not a browser flight simulator."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenTIE · project documentation",
            "url": "https://github.com/elyosh/OpenTIE"
          },
          {
            "id": "original",
            "label": "LucasArts / Disney · TIE Fighter Special Edition",
            "url": "https://store.steampowered.com/app/355250/STAR_WARS_TIE_Fighter_Special_Edition/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/elyosh/OpenTIE/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "A complete supported TIE Fighter installation; both editions for the hybrid option.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/elyosh/OpenTIE"
        },
        "setup": {
          "answer": "Select the original game installation using the release’s setup instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/elyosh/OpenTIE"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/elyosh/OpenTIE"
    },
    {
      "id": "project:elyosh-openxvt",
      "slug": "elyosh-openxvt",
      "title": "Star Wars: X-Wing vs. TIE Fighter",
      "project": "OpenXvT",
      "canonicalUrl": "https://playable.wtf/games/elyosh-openxvt/",
      "originals": [
        {
          "id": "starwarsxwingvstiefighter",
          "name": "Star Wars: X-Wing vs. TIE Fighter",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Simulation",
      "summary": "X-Wing vs. TIE Fighter and Balance of Power on a replacement engine.",
      "editorial": {
        "sections": [
          {
            "id": "flight-options",
            "title": "Dogfights, team battles and cooperative campaigns",
            "kind": "project",
            "paragraphs": [
              "OpenXvT recreates X-Wing vs. TIE Fighter together with its Balance of Power expansion for current desktop systems. Its documented multiplayer supports up to eight players across Windows, macOS and Linux, including dogfights, team battles and cooperative missions. The Rebel and Imperial campaigns come from Balance of Power, which is why the expansion is an installation requirement rather than an optional extra.",
              "Hosting and joining use an in-game browser without a separate GameRanger setup. For a group choosing between this and OpenXWA, that cooperative and competitive scope is a decisive difference: the projects cover different games and do not share identical multiplayer support."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "cockpit",
            "title": "Keep the cockpit familiar or modernize the view",
            "kind": "project",
            "paragraphs": [
              "Classic graphics preserve the original appearance. Modern mode retains original models and cockpit artwork while adding high-resolution rendering, lighting, shadows and optional effects. Tab switches between the two during play, so the choice is easy to revisit rather than a permanent installation decision.",
              "The flight simulation can run more smoothly on current displays, and virtual-stick mouse controls remove the need to own a joystick. Gamepads and joysticks remain available with configurable axes, deadzones and bindings. Start by choosing the input method you actually have, then adjust sensitivity before joining a demanding mission."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "first-flight",
            "title": "Getting your first flight ready",
            "kind": "practical",
            "paragraphs": [
              "Install the package for your platform and select the main game directory containing BalanceOfPower. To fly with a mouse, enable Mouse Flight Control in the Mouse tab of OpenXvT Settings; Escape opens those settings. Ctrl+Alt+M releases or recaptures the pointer during flight.",
              "The desktop targets require a modern GPU: Windows uses Direct3D 12 or Vulkan, macOS 13 and later uses Metal, and the Linux build uses Vulkan. Keep the libraries, resources and shaders with the executable. The project remains in active development, so its modern features coexist with possible bugs and differences from the original."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenXvT · project documentation",
            "url": "https://github.com/elyosh/OpenXvT"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/elyosh/OpenXvT/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "A complete X-Wing vs. TIE Fighter installation with Balance of Power.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/elyosh/OpenXvT"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/elyosh/OpenXvT"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/elyosh/OpenXvT"
    },
    {
      "id": "project:elyosh-openxwa",
      "slug": "elyosh-openxwa",
      "title": "Star Wars: X-Wing Alliance",
      "project": "OpenXWA",
      "canonicalUrl": "https://playable.wtf/games/elyosh-openxwa/",
      "originals": [
        {
          "id": "starwarsxwingalliance",
          "name": "Star Wars: X-Wing Alliance",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Simulation",
      "summary": "The 1999 space simulator adapted to current desktop systems.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "A family story that grows into a galactic war",
            "kind": "background",
            "paragraphs": [
              "X-Wing Alliance begins with a family trading business caught between commercial rivals and the Empire. The original campaign moves from those personal stakes into Rebel assignments and eventually the Battle of Endor. Its appeal is not only piloting famous fighters: Corellian transports and the Millennium Falcon also make the cockpit feel part of a larger working galaxy.",
              "The publisher describes fifty story-driven missions and a configurable skirmish mode in the original game. OpenXWA’s present scope is the single-player recreation; original multiplayer features do not carry over automatically."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "single-player",
            "title": "An Alliance recreation focused on solo flight",
            "kind": "project",
            "paragraphs": [
              "OpenXWA recreates X-Wing Alliance using the original game data on Windows, macOS and Linux. Its stated scope includes the original functions outside multiplayer and the digital iMUSE audio system. Multiplayer is not implemented, so choose it for the single-player game rather than assuming that X-Wing vs. TIE Fighter’s group-play options carry over.",
              "The project offers a higher single-player simulation rate for smoother flight and more responsive input. A classic timing mode remains available, giving returning players a choice between the older rhythm and the newer presentation. This is a change to how the game runs, not a claim that all differences from the original have disappeared."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "view-and-input",
            "title": "A modern cockpit without requiring a joystick",
            "kind": "project",
            "paragraphs": [
              "Classic and modern graphics modes can be compared with F5, while F2 toggles a split comparison view. The modern renderer adds widescreen output, lighting, anti-aliasing and upscaling. Original OPT models work in both modes; optional replacement models, textures, interface art and videos can be loaded without modifying the original data.",
              "Mouse flight has Virtual Stick and Direct modes, with sensitivity and inversion settings. Gamepads and joysticks are also supported, including translation of force-feedback effects into gamepad rumble. Those choices make the control setup part of preparing a comfortable first flight."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Use an installed game layout",
            "kind": "practical",
            "paragraphs": [
              "Select a complete X-Wing Alliance installation when the application asks for data. GOG and Steam installations already use the expected layout; the README gives a separate instruction to merge a raw CD’s ALLIANCE directory into the root. OpenXWA validates and remembers that selection.",
              "Enable Mouse Flight Control in Game Controller Options, and adjust the renderer under Video Options followed by OpenXWA Video Options. Ctrl+Alt+M releases the pointer. Keep the packaged runtime files together and use the appropriate desktop build; the supported graphics backends are Direct3D 12 or Vulkan on Windows, Metal on macOS and Vulkan on Linux."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenXWA · project documentation",
            "url": "https://github.com/elyosh/OpenXWA"
          },
          {
            "id": "original",
            "label": "LucasArts · X-Wing Alliance on Steam",
            "url": "https://store.steampowered.com/app/361670/STAR_WARS__XWing_Alliance/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/elyosh/OpenXWA/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "A complete installation of X-Wing Alliance.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/elyosh/OpenXWA"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/elyosh/OpenXWA"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/elyosh/OpenXWA"
    },
    {
      "id": "project:fallout-rerun-reactor",
      "slug": "fallout-rerun-reactor",
      "title": "Fallout / Fallout 2",
      "project": "Rerun Reactor",
      "canonicalUrl": "https://playable.wtf/games/fallout-rerun-reactor/",
      "originals": [
        {
          "id": "fallout",
          "name": "Fallout",
          "relationship": "port-of"
        },
        {
          "id": "fallout2",
          "name": "Fallout 2",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser engine remake",
      "genre": "RPG",
      "summary": "Both classic Fallouts in one local-file browser launcher, with save backups and touch controls.",
      "editorial": {
        "sections": [
          {
            "id": "the-games",
            "title": "The original Fallout role-playing games",
            "kind": "background",
            "paragraphs": [
              "The original Fallout builds a character-driven adventure around a post-nuclear world. Its SPECIAL system makes the person you create part of how you approach encounters: character strengths and weaknesses shape the available options. It rewards attention to decisions and character development rather than treating every problem as a shooting challenge.",
              "Rerun Reactor covers both Fallout and Fallout 2, using their separate Community Edition engines. Choose the game you own and want to continue; a sequel's files, patches or character rules are not interchangeable with the first game's."
            ],
            "sourceIds": [
              "original",
              "host"
            ]
          },
          {
            "id": "setup",
            "title": "Import a complete installation locally",
            "kind": "project",
            "paragraphs": [
              "The launcher accepts an installation folder, a ZIP or supported disc images. Bring master.dat and critter.dat with the supporting data folder from the same game. On a phone, preparing the ZIP on a computer and transferring it to Files gives the picker a straightforward input. A CUE needs its accompanying BIN; it is only the disc's table of contents.",
              "The site copies game data into this browser's storage without uploading it. No account is required. You can keep both games installed, with their data and saves separated in the launcher."
            ],
            "sourceIds": [
              "handbook",
              "host"
            ]
          },
          {
            "id": "versions",
            "title": "Settle on patches before a long Fallout 2 run",
            "kind": "practical",
            "paragraphs": [
              "For an original Fallout 2 CD installation, the launcher offers a guided update to version 1.02. Its patch picker accepts patch000.dat or a ZIP containing it. The Restoration Project has a separate installer and requires starting a new game; it changes maps and scripts, so loading an old vanilla save is not a reliable compatibility test.",
              "These patch routes apply to Fallout 2. They are not updates for Fallout 1, and the handbook's Fallout 2 mechanics tables should not be used as a guide to the first game's rules."
            ],
            "sourceIds": [
              "handbook"
            ]
          },
          {
            "id": "saves",
            "title": "Bring saves separately and test an export",
            "kind": "practical",
            "paragraphs": [
              "Importing game data deliberately skips desktop saves. Use the save archive to move those separately and keep the same patch and mod setup. Export a backup for each game before clearing site data or changing devices. Safari and Chrome on the same phone still have separate storage.",
              "Touch input includes map gestures and interface controls, but inventory, barter and targeted skills remain more demanding than ordinary movement. Try those interactions early, before deciding whether the phone is comfortable for a full playthrough."
            ],
            "sourceIds": [
              "handbook",
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Bethesda · Fallout",
            "url": "https://store.steampowered.com/app/38400/"
          },
          {
            "id": "host",
            "label": "Rerun Reactor · launcher and save archive",
            "url": "https://rerunreactor.com/"
          },
          {
            "id": "handbook",
            "label": "Rerun Reactor · getting started with Fallout 1 and 2",
            "url": "https://rerunreactor.com/handbook/getting-started/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://rerunreactor.com/"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Import your own Fallout or Fallout 2 install folder, ZIP, or supported disc image. Keep master.dat and critter.dat together with the data folder. For Fallout 2, patch000.dat is strongly recommended; do not mix files from the two games.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rerunreactor.com/handbook/getting-started/"
        },
        "setup": {
          "answer": "Choose the folder, ZIP or disc-image route, keep the page open while it imports, correct missing-file warnings, then select the game and Start. A ZIP transferred to Files is the suggested phone setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rerunreactor.com/handbook/getting-started/"
        },
        "devices": {
          "answer": "The project supports desktop and mobile browsers, with Safari and Chrome receiving the most testing. Phone inventory, barter and skill targeting still require precision.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rerunreactor.com/handbook/getting-started/"
        },
        "controls": {
          "answer": "The mobile layout provides touch actions plus pinch and pan for the map. Prepare the installation ZIP on a computer if importing on a phone.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rerunreactor.com/handbook/getting-started/"
        },
        "issues": {
          "answer": "Fallout 2’s original 1.0 disc version has serious bugs; use a properly patched copy. The Restoration Project needs a new game, and its setup does not apply to Fallout 1.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rerunreactor.com/handbook/getting-started/"
        },
        "scope": {
          "answer": "Fallout and Fallout 2 use separate installations and save sets. Fallout 2 supports a bring-your-own Restoration Project ZIP; its mechanics documentation is not a Fallout 1 guide.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rerunreactor.com/handbook/getting-started/"
        },
        "saves": {
          "answer": "Export separate save backups for Fallout and Fallout 2. The ZIP uses SAVEGAME/SLOT## folders and can be transferred between this launcher and a compatible desktop install. Reimporting game data preserves saves; Erase everything removes both data and saves, so export first.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rerunreactor.com/"
        }
      },
      "credits": [
        {
          "name": "Smackrazor / Rerun Reactor",
          "role": "host",
          "url": "https://rerunreactor.com/",
          "evidence": "https://rerunreactor.com/",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://rerunreactor.com/"
    },
    {
      "id": "project:fatal-racing-browser",
      "slug": "fatal-racing-browser",
      "title": "Whiplash / Fatal Racing",
      "project": "ROLLER",
      "canonicalUrl": "https://playable.wtf/games/fatal-racing-browser/",
      "originals": [
        {
          "id": "whiplashfatalracing",
          "name": "Whiplash / Fatal Racing",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser source port",
      "genre": "Racing",
      "summary": "A freeware demo in the browser, with an import route for the full game.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Stunt tracks with a field of rivals",
            "kind": "background",
            "paragraphs": [
              "Fatal Racing, also released as Whiplash, builds its racing around loops, corkscrews and jumps as well as competition with other cars. The original game's presentation emphasizes contact, aggressive rivals and tracks whose changes in height make the next section part of the challenge. Choosing a car involves a balance between handling and acceleration, rather than simply selecting the highest top speed.",
              "That describes the original game's appeal. The browser demo and an imported retail copy are different amounts of that game; the original marketing's complete track collection should not be mistaken for the contents of the demo."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "Try the demo or bring a retail disc",
            "kind": "project",
            "paragraphs": [
              "ROLLER reconstructs the 1995 game for modern systems and provides a browser build. You can start with the bundled freeware demo or import data from your own retail disc. This gives the project two useful entry points: try the game before preparing files, or use a copy you already own to go beyond the demo.",
              "The import accepts disc-image workflows, including a CUE with its associated BIN and audio files. Keep the related files together; selecting only the small CUE descriptor is not equivalent to supplying the disc data it references. Follow the launcher's supported selection flow for an ISO or a multi-file disc image."
            ],
            "sourceIds": [
              "project",
              "shell"
            ]
          },
          {
            "id": "input",
            "title": "Touch and tilt are separate choices",
            "kind": "practical",
            "paragraphs": [
              "The web shell provides touch input and a motion-control option. Tilt controls depend on the browser granting motion permission; if permission is denied, the shell returns to touch input. On a phone, use landscape orientation so the game and driving controls have room. A rejected motion request is therefore a reason to choose the touch layout, not to repeatedly force the same permission prompt."
            ],
            "sourceIds": [
              "shell"
            ]
          },
          {
            "id": "local-data",
            "title": "Keep settings and replays with the browser",
            "kind": "practical",
            "paragraphs": [
              "The browser shell uses persistent local storage for game configuration, replays and custom tracks. Those records are separate from selecting the retail game data. Staying in the same browser profile preserves that local context; deleting site data can remove it. Treat a browser-data cleanup as a deliberate reset, rather than a routine step for switching from the demo to your own disc."
            ],
            "sourceIds": [
              "shell"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Fatal Racing · original game presentation archive",
            "url": "https://fatal.racing/"
          },
          {
            "id": "project",
            "label": "ROLLER · project and demo documentation",
            "url": "https://raw.githubusercontent.com/FatalDecomp/ROLLER/HEAD/README.md"
          },
          {
            "id": "shell",
            "label": "ROLLER · web import, input and persistence implementation",
            "url": "https://raw.githubusercontent.com/FatalDecomp/ROLLER/HEAD/web/roller-shell.js"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://play.fatal.racing/"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Play the bundled freeware demo, or import a disc image from your own retail copy. ISO images are accepted; for CUE/BIN, select the CUE and every BIN/audio file it references together.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://play.fatal.racing/roller-shell.js"
        },
        "setup": {
          "answer": "Follow Play in your browser in the project README, then choose the demo or your own retail import.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/FatalDecomp/ROLLER"
        },
        "devices": {
          "answer": "The web frontend includes a phone mode for touch devices and asks for landscape orientation. Tilt steering depends on browser motion-sensor access.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://play.fatal.racing/roller-shell.js"
        },
        "controls": {
          "answer": "Phone mode offers tilt or touch steering. The frontend requests motion permission where the browser requires it for tilt input.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://play.fatal.racing/roller-shell.js"
        },
        "issues": {
          "answer": "If a CUE/BIN import finds no game data, select the CUE and all its referenced files together. Selecting only one part of the disc image is insufficient.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://play.fatal.racing/roller-shell.js"
        },
        "saves": {
          "answer": "The browser build stores configuration, replays and custom tracks in IndexedDB-backed local storage. These stay in the browser profile and are separate from the imported retail game data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://play.fatal.racing/roller-shell.js"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/FatalDecomp/ROLLER"
    },
    {
      "id": "project:fishb0nes98-tekken3recompiled",
      "slug": "fishb0nes98-tekken3recompiled",
      "title": "Tekken 3",
      "project": "Tekken3Recompiled",
      "canonicalUrl": "https://playable.wtf/games/fishb0nes98-tekken3recompiled/",
      "originals": [
        {
          "id": "tekken3",
          "name": "Tekken 3",
          "relationship": "port-of"
        }
      ],
      "kind": "Hybrid recompilation",
      "genre": "Fighting",
      "summary": "A hybrid PlayStation recompilation with a local setup launcher and an unfinished native-port slice.",
      "editorial": {
        "sections": [
          {
            "id": "two-products",
            "title": "Two projects behind the launcher",
            "kind": "project",
            "paragraphs": [
              "Tekken 3 Recompiled contains two distinct executables. The hybrid recompilation is the playable reference built around the original US PlayStation game. The separate native PC port is an early vertical slice with its own match simulation and renderer. It is not a complete recreation of Tekken 3’s fighters, stages and modes.",
              "The native slice currently uses procedural content while the original stage and character formats are being decoded. Its controls cover movement, jumping and attacks, making it useful for following the native engine’s development. Choose the hybrid reference if your interest is the project’s work with the original disc content, and do not mistake progress in one executable for completion of the other."
            ],
            "sourceIds": [
              "project",
              "native"
            ]
          },
          {
            "id": "widescreen",
            "title": "Widescreen changes the view around the fight",
            "kind": "project",
            "paragraphs": [
              "The hybrid reference enables True Widescreen by default. It exposes more stage geometry horizontally and adapts selected menus and loading screens to 16:9 while keeping portraits and text in proportion. Unrecognized menus and movies retain their 4:3 presentation.",
              "A separate experimental fight-framing option widens regular fights before the camera pulls back. The documentation distinguishes that view change from movement and collision. You can disable the framing option to compare the original close view, or turn off widescreen altogether for 4:3. These are useful choices when deciding which presentation feels right for judging spacing."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Prepare an owned US disc locally",
            "kind": "practical",
            "paragraphs": [
              "The Easy Setup package asks for the USA PlayStation CUE/BIN image and prepares the game on your computer. Allow at least 4 GB of working space: the first setup also downloads pinned build tools. Later starts open a launcher with a disc library, mods, updates and separate keyboard and controller mappings. The optional Jun setup has additional arcade-data requirements; a PlayStation image alone does not supply those assets."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "sound",
            "title": "Save audio changes explicitly",
            "kind": "practical",
            "paragraphs": [
              "The hybrid reference adds separate music and sound-effect sliders. Changes preview immediately, but you must choose Save to keep them across launches; Back discards them. The settings live in tekken3-sound.ini in the active save directory, separate from the original menu’s BGM selection and stereo/mono setting."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Tekken 3 Recompiled · project documentation",
            "url": "https://raw.githubusercontent.com/FishB0nes98/Tekken3Recompiled/HEAD/README.md"
          },
          {
            "id": "native",
            "label": "Tekken 3 · native slice scope and controls",
            "url": "https://raw.githubusercontent.com/FishB0nes98/Tekken3Recompiled/HEAD/native/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "work-in-progress",
        "route": {
          "kind": "setup",
          "url": "https://github.com/FishB0nes98/Tekken3Recompiled/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Tekken 3 USA PlayStation CUE/BIN image. The optional Jun feature additionally needs the supported non-merged tektagt.zip and tekken3.zip arcade sets.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/FishB0nes98/Tekken3Recompiled/HEAD/README.md"
        },
        "setup": {
          "answer": "Extract the full Easy Setup package and select your owned disc image in Play Tekken 3. First setup downloads pinned build tools and prepares the game locally; allow at least 4 GB workspace.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/FishB0nes98/Tekken3Recompiled/HEAD/README.md"
        },
        "devices": {
          "answer": "The reviewed Easy Setup route is for Windows.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/FishB0nes98/Tekken3Recompiled/HEAD/README.md"
        },
        "controls": {
          "answer": "The launcher provides separate keyboard and controller mappings.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/FishB0nes98/Tekken3Recompiled/HEAD/README.md"
        },
        "issues": {
          "answer": "The reference runtime is a hybrid recompilation. The separate native-port slice uses procedural stand-ins and lacks the full roster, moves, modes, stages and media.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/FishB0nes98/Tekken3Recompiled/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/FishB0nes98/Tekken3Recompiled"
    },
    {
      "id": "project:florinp93-hells-gate-recomp",
      "slug": "florinp93-hells-gate-recomp",
      "title": "Dante’s Inferno",
      "project": "Hell’s Gate",
      "canonicalUrl": "https://playable.wtf/games/florinp93-hells-gate-recomp/",
      "originals": [
        {
          "id": "dantesinferno",
          "name": "Dante's Inferno",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Action",
      "summary": "Dante’s Inferno’s Xbox 360 code translated to a native PC build.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "The Xbox 360 game with native PC presentation",
            "kind": "project",
            "paragraphs": [
              "Hell’s Gate recompiles Dante’s Inferno and replaces its graphics layer with a Vulkan renderer. The maintainer reports play from beginning to end with saves, alongside support for importing DLC packages. The base game and the DLC still come from your own Xbox 360 copy; the installer supplies the port rather than the game data.",
              "Its visual options are a major distinction: the native renderer supports arbitrary resolutions, original 4:3 framing and wider formats up to super-ultrawide. Refresh choices run from 60 to 240 fps in multiples of 60, with menus and minigames kept at the intended speed. These are configurable targets, not a guarantee that every graphics card can sustain them."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Import the disc, then configure the launcher",
            "kind": "practical",
            "paragraphs": [
              "On Windows, the installer asks for an installation folder and your Xbox 360 ISO, then creates the launch route. Choose controls and graphics before pressing Play. Keyboard bindings are adjustable; Xbox and PlayStation controllers are supported, with button prompts following the device in use.",
              "Language selection depends on which languages your disc’s region contains. To add owned DLC, open the launcher’s DLC folder, copy the STFS packages there and launch again. The packages are installed at startup. Do not assume a language or expansion becomes available merely because it appears in another regional edition."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "compatibility",
            "title": "Know the renderer and online limits",
            "kind": "limitations",
            "paragraphs": [
              "A working Vulkan driver is required. Linux x86-64 users can follow the native build instructions or the documented Proton route; ARM64 has a separate launcher and AppImage path. These are different installation routes and should not be treated as one universal download.",
              "The native renderer is still being refined. The project documents a Xenos/D3D12 fallback when the new renderer misbehaves, configured through dantes_inferno.toml. Trials of Saint Lucia’s online server is still in development: DLC import support does not mean the online service has been restored."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Hell’s Gate · project documentation",
            "url": "https://github.com/florinp93/hells-gate-recomp"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/florinp93/hells-gate-recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported copy of Dante’s Inferno.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/florinp93/hells-gate-recomp"
        },
        "setup": {
          "answer": "Follow the current release’s game import and setup instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/florinp93/hells-gate-recomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/florinp93/hells-gate-recomp"
    },
    {
      "id": "project:frankhun88453-cod3recomp",
      "slug": "frankhun88453-cod3recomp",
      "title": "Call of Duty 3",
      "project": "CoD3Recomp",
      "canonicalUrl": "https://playable.wtf/games/frankhun88453-cod3recomp/",
      "originals": [
        {
          "id": "callofduty3",
          "name": "Call of Duty 3",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Shooter",
      "summary": "A native Xbox 360 recompilation with an early playable release.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "A PC route into the console campaign",
            "kind": "project",
            "paragraphs": [
              "CoD3Recomp translates the Xbox 360 version of Call of Duty 3 into a Windows PC program. The project’s status document describes all fifteen level modules loading and playing, with mission transitions, failed-mission restarts, briefing films and checkpoint saves. That makes the campaign the documented attraction here. The source still labels the build as in development, so a working level does not remove the possibility of bugs elsewhere.",
              "Its renderer converts the game’s own shaders for Direct3D 11, preserving the title’s environments rather than rebuilding them as new PC maps. The maintainer’s reports cover terrain, soldiers, smoke, lighting and sound as well as menu progress. The result is intended to make the original campaign accessible with PC input and display settings."
            ],
            "sourceIds": [
              "status"
            ]
          },
          {
            "id": "input",
            "title": "Mouse aiming and familiar action keys",
            "kind": "practical",
            "paragraphs": [
              "The default layout uses WASD, mouse aim, left-click fire and right-click aim. E interacts, R reloads, C crouches, Shift sprints and Space jumps; G throws a grenade, while 4 throws smoke. Escape pauses and releases the cursor, and clicking the window captures it again. A connected controller also works.",
              "F11 opens settings for rebinding, sensitivity, raw mouse input, field of view, resolution scale and graphics options. Raw input bypasses Windows pointer acceleration. Start with a comfortable field of view and render scale before raising anti-aliasing or model detail."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Import once and keep the save folder",
            "kind": "practical",
            "paragraphs": [
              "First-run setup can extract your Xbox 360 image, copy an already extracted folder or use that folder in place. It validates the executable before copying several gigabytes. If you already maintain an extracted disc, the in-place route avoids a second copy.",
              "Saves live beside the executable in saves/, and settings live in CoD3Recomp.ini. Preserve those when changing releases. The release is the player route; the repository’s Clang, CMake and recompiler instructions are for building it yourself."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "CoD3Recomp · project documentation",
            "url": "https://github.com/FrankHUN88453/CoD3Recomp"
          },
          {
            "id": "status",
            "label": "CoD3Recomp · project status",
            "url": "https://github.com/FrankHUN88453/CoD3Recomp/blob/HEAD/STATUS.md"
          }
        ]
      },
      "families": [
        {
          "id": "call-of-duty",
          "title": "Call of Duty",
          "indexUrl": "https://playable.wtf/families/#family-call-of-duty",
          "guideUrl": "https://playable.wtf/guides/call-of-duty-browser-native-versions/",
          "choices": [
            {
              "slug": "black-ops-zombies",
              "label": "Choose BO1 Zombies rules",
              "reason": "Select Classic or Counter-Strike guns before a solo or lobby session.",
              "canonicalUrl": "https://playable.wtf/games/black-ops-zombies/"
            },
            {
              "slug": "nacht-der-untoten",
              "label": "Invite a small co-op group",
              "reason": "A separate desktop fan remake with a two-to-four-player invitation flow.",
              "comparisonException": "The creator launcher and compatibility help document solo/co-op invitations and input; match completion and multiplayer lifecycle are untested.",
              "canonicalUrl": "https://playable.wtf/games/nacht-der-untoten/"
            },
            {
              "slug": "modern-warfare-browser",
              "label": "Play the original COD4 campaign",
              "reason": "Import your own Steam files for the story and Mile High Club.",
              "canonicalUrl": "https://playable.wtf/games/modern-warfare-browser/"
            },
            {
              "slug": "paulcombal-mw2-recompiled",
              "label": "Use the 2009 console edition natively",
              "reason": "Choose the Windows/Linux controller route with matching owned Xbox 360 data.",
              "canonicalUrl": "https://playable.wtf/games/paulcombal-mw2-recompiled/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/FrankHUN88453/CoD3Recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Xbox 360 Call of Duty 3 disc image.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/FrankHUN88453/CoD3Recomp"
        },
        "setup": {
          "answer": "Use the release’s CoD3 installer with your disc image; check the current limitations.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/FrankHUN88453/CoD3Recomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/FrankHUN88453/CoD3Recomp"
    },
    {
      "id": "project:freeciv-web-community",
      "slug": "freeciv-web-community",
      "title": "Freeciv",
      "project": "Freeciv-web community server",
      "canonicalUrl": "https://playable.wtf/games/freeciv-web-community/",
      "originals": [
        {
          "id": "freeciv",
          "name": "Freeciv",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Strategy",
      "summary": "Freeciv’s open-source empire-building game in a browser, with solo, online and hotseat routes.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Build an empire one decision at a time",
            "kind": "background",
            "paragraphs": [
              "Freeciv is an open-source empire-building strategy game inspired by the progress of human civilisation. You found cities, gather resources, decide on government and build an army, guiding a society from early history towards advanced technology. The interest lies in how those systems compete for attention: an immediate military need can pull resources away from long-term growth.",
              "This is Freeciv’s own strategy game and rules, not a browser conversion of a commercial Civilization executable. The community server makes it possible to play against the computer or other people through a web client."
            ],
            "sourceIds": [
              "project",
              "host"
            ]
          },
          {
            "id": "pace",
            "title": "Choose a pace that fits your session",
            "kind": "project",
            "paragraphs": [
              "The host offers single-player against the AI, ordinary multiplayer, hotseat on one computer, play by email and Longturn games with one turn each day. Those are meaningfully different commitments. A solo game is a useful place to learn the interface; a daily-turn game makes room for planning and diplomacy between moves.",
              "Longturn listings include rulesets, player-experience restrictions and alliance conditions. Read the game’s Info page before joining. A beginner-only match and an expert event may use the same client while asking very different things of the player."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "setup",
            "title": "The browser client connects to a game server",
            "kind": "practical",
            "paragraphs": [
              "Freeciv-web pairs a browser interface with a Freeciv server. Opening New Game or joining a listed game uses that hosted setup; you do not need to install the repository’s Java, database or server tooling to be a player. Those longer installation instructions are for operating a server yourself.",
              "The project documents HTML5 support and both isometric 2D and WebGL-based 3D clients. The community homepage’s solo route emphasises isometric graphics. Choose the actual game and client offered by the host rather than assuming that every Freeciv-web deployment has identical modes or presentation."
            ],
            "sourceIds": [
              "project",
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Freeciv-web community server · README",
            "url": "https://github.com/Lexxie9952/fcw.org-server"
          },
          {
            "id": "host",
            "label": "Freecivweb.com · modes and game listings",
            "url": "https://www.freecivweb.com/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://www.freecivweb.com/"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The creator-linked server offers Freeciv directly in an HTML5 browser. It does not require a Civilization installation or retail game files; Freeciv is a separate open-source game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.freecivweb.com/"
        },
        "setup": {
          "answer": "Open the current community server and choose a single-player game, a multiplayer listing or hotseat. Some listed longturn rooms have their own joining requirements.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.freecivweb.com/"
        },
        "devices": {
          "answer": "The project documents HTML5-capable browsers with an isometric client and a WebGL rendering option. Current mobile/controller compatibility is not established here.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/Lexxie9952/fcw.org-server/HEAD/README.md"
        },
        "multiplayer": {
          "answer": "The current server offers single-player against AI, online multiplayer, longturn, play-by-email and hotseat for multiple people on one computer. Individual longturn rooms may require a password.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.freecivweb.com/"
        },
        "issues": {
          "answer": "The project README says the community moved to freecivweb.com in March 2025. The old .org address is not a valid launch source; use the creator-linked .com host. Live server capacity and room availability were not gameplay-tested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/Lexxie9952/fcw.org-server/HEAD/README.md"
        },
        "scope": {
          "answer": "This is the Freeciv-web community implementation, not a browser copy of a commercial Civilization game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/Lexxie9952/fcw.org-server/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Lexxie9952/fcw.org-server"
    },
    {
      "id": "project:gameflorist-dunedynasty",
      "slug": "gameflorist-dunedynasty",
      "title": "Dune II",
      "project": "Dune Dynasty",
      "canonicalUrl": "https://playable.wtf/games/gameflorist-dunedynasty/",
      "originals": [
        {
          "id": "duneii",
          "name": "Dune II",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "Strategy",
      "summary": "Dune II enhanced with modern controls, higher resolutions and multiplayer skirmishes.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "Dune II with less interface friction",
            "kind": "project",
            "paragraphs": [
              "Dune Dynasty builds on OpenDUNE’s reverse-engineered Dune II engine. It keeps the original game as its foundation while adding the conveniences expected from later real-time strategy games. This continuation of the earlier Dune Dynasty project publishes native Windows, macOS and Linux packages.",
              "Its biggest changes affect commanding an army: drag-select multiple units, queue production, assign control groups and set rally points. These tools reduce repeated individual orders, leaving more attention for the battlefield. They are also why Dynasty is a different choice from OpenDUNE’s closer reproduction of the original interface."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "campaign-or-skirmish",
            "title": "Campaigns and configurable skirmishes",
            "kind": "project",
            "paragraphs": [
              "The project supports original gameplay and selected fan campaigns, plus skirmish and multiplayer matches for up to six human or computer players. Skirmishes add Fremen, Sardaukar and Mercenary factions, configurable alliances and generated maps. Credits, spice fields, worms and defeat conditions can be adjusted.",
              "Optional enhancements can alter difficulty or rules. Brutal AI, regrowing fog of war and changed unit limits should be chosen deliberately, rather than mistaken for the untouched DOS balance. The README explains which changes are always active in multiplayer."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controls-and-screen",
            "title": "Scale the battlefield and interface separately",
            "kind": "practical",
            "paragraphs": [
              "The menu bar, side panel and map have separate scaling controls, which is useful on high-density screens. The mouse wheel zooms the view, dragging with the right button pans, and right-click issues commands by default. Windows touchscreen users can choose left-click commands and pinch zoom.",
              "Aspect-ratio correction is configurable because the original graphics were designed around older displays. The default automatic mode balances corrected menus with readable gameplay; change it according to the look you prefer instead of stretching the whole window externally."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "data-and-saves",
            "title": "Use the correct data and keep your campaign",
            "kind": "practical",
            "paragraphs": [
              "Dune Dynasty requires the European 1.07 PAK data set. Its location depends on whether you use a regular package, macOS app or Linux Flatpak. Save files sit beside the active configuration directory, and original Dune II saves are supported. A configuration file beside the executable enables portable mode.",
              "Music sources can be combined or disabled in Options and Extras. Additional soundtrack sets are separate resources, so their availability should not be confused with the contents of the engine download."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Dune Dynasty · project documentation",
            "url": "https://raw.githubusercontent.com/gameflorist/dunedynasty/HEAD/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/gameflorist/dunedynasty/releases/tag/v1.6.4"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The *.PAK data files from the European v1.07 release of Dune II. The project’s static/general/data/FILELIST.TXT lists the full required set.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gameflorist/dunedynasty/HEAD/README.md"
        },
        "setup": {
          "answer": "Download the platform package and put the original data in its data directory; the README gives separate Windows, macOS and Linux paths.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gameflorist/dunedynasty/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows, macOS and Linux are documented. Windows touchscreen support does not establish phone support.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gameflorist/dunedynasty/HEAD/README.md"
        },
        "multiplayer": {
          "answer": "Skirmish multiplayer supports up to six human or AI participants with configurable alliances.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gameflorist/dunedynasty/HEAD/README.md"
        },
        "issues": {
          "answer": "Platform packages have different dependencies and data locations. We have not run the provided setup scripts or assessed their security.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/gameflorist/dunedynasty/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/gameflorist/dunedynasty"
    },
    {
      "id": "project:generals-zero-hour-browser",
      "slug": "generals-zero-hour-browser",
      "title": "Command & Conquer: Generals Zero Hour",
      "project": "GeneralsX",
      "canonicalUrl": "https://playable.wtf/games/generals-zero-hour-browser/",
      "originals": [
        {
          "id": "commandconquergeneralszerohour",
          "name": "Command & Conquer: Generals Zero Hour",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser build · method unconfirmed",
      "genre": "Strategy",
      "summary": "Generals Zero Hour in a WebGPU browser, using your own installed game files.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Commanders with different approaches",
            "kind": "background",
            "paragraphs": [
              "Zero Hour expands Command & Conquer: Generals around the USA, China and GLA, adding commanders and units that encourage different battlefield plans. The original expansion includes fifteen missions and nine commanders to face. Its additions range from China's electronic countermeasures tank to the GLA Battle Bus and the USA's Spectre gunship.",
              "Those differences are part of the strategy game's appeal: choosing a commander changes the tools around which you build an army. The publisher's expansion description provides the original-game context; the web project's requirements determine how you can run that game here."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "GeneralsX with a WebGPU renderer",
            "kind": "project",
            "paragraphs": [
              "GeneralsX Web adapts the source-based GeneralsX engine to the browser. The creator targets the complete Zero Hour game and retains its original menus, loading screens and pause behavior.",
              "It reads the game's BIG archives on demand from your own installation. Game assets are not bundled with the web engine, so opening the site alone does not provide Zero Hour."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Select an installed copy",
            "kind": "practical",
            "paragraphs": [
              "Use your installed Zero Hour files from Steam, the EA app or disc. Point the launcher at that installation rather than an unopened installer. The documented browser requirements are WebGPU, with Chrome or Edge recommended, and a secure HTTPS connection. Escape opens the game's own pause menu."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "multiplayer",
            "title": "The documented multiplayer route is a LAN relay",
            "kind": "practical",
            "paragraphs": [
              "The project documents LAN multiplayer through a WebSocket relay and a shareable link for players on your network. Plan around that arrangement rather than assuming a public matchmaking service. The browser build and the project's native macOS reference build are separate launches, even though they come from the same source tree."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "EA · Generals Zero Hour publisher description",
            "url": "https://store.steampowered.com/app/2732960/Command__Conquer_Generals_Zero_Hour/"
          },
          {
            "id": "project",
            "label": "GeneralsX Web · requirements and playable scope",
            "url": "https://raw.githubusercontent.com/origami-ltd/wasm-generals/HEAD/README.md"
          }
        ]
      },
      "families": [
        {
          "id": "command-and-conquer",
          "title": "Command & Conquer",
          "indexUrl": "https://playable.wtf/families/#family-command-and-conquer",
          "guideUrl": "https://playable.wtf/guides/command-and-conquer-versions/",
          "choices": [
            {
              "slug": "red-alert-2-browser",
              "label": "Red Alert 2 in a browser",
              "reason": "Chrono Divide offers browser multiplayer with classic or modern command controls.",
              "canonicalUrl": "https://playable.wtf/games/red-alert-2-browser/"
            },
            {
              "slug": "generals-zero-hour-browser",
              "label": "Use your Zero Hour installation",
              "reason": "GeneralsX Web reads your installed game through a WebGPU browser.",
              "canonicalUrl": "https://playable.wtf/games/generals-zero-hour-browser/"
            },
            {
              "slug": "openra-openra",
              "label": "Install revised classic RTS games",
              "reason": "OpenRA provides its own Tiberian Dawn, Red Alert and Dune 2000 rulesets.",
              "canonicalUrl": "https://playable.wtf/games/openra-openra/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://generals.wasm.ltd"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Provide your own installed Generals Zero Hour copy from Steam, EA app or disc. The browser reads its .big archives from the selected installation; the project does not supply game assets.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/origami-ltd/wasm-generals/HEAD/README.md"
        },
        "setup": {
          "answer": "Open the HTTPS host in a WebGPU browser and point the page at your installed Zero Hour folder.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/origami-ltd/wasm-generals/HEAD/README.md"
        },
        "devices": {
          "answer": "The creator specifies a WebGPU browser such as Chrome or Edge. The threaded build also needs a secure context for SharedArrayBuffer; use HTTPS or localhost when self-hosting.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/origami-ltd/wasm-generals/HEAD/README.md"
        },
        "controls": {
          "answer": "Escape opens the original game’s pause menu.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/origami-ltd/wasm-generals/HEAD/README.md"
        },
        "multiplayer": {
          "answer": "The project documents LAN multiplayer through a WebSocket relay and a shareable link for players on your network.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/origami-ltd/wasm-generals/HEAD/README.md"
        },
        "issues": {
          "answer": "Landing-page review only; no campaign or compatibility test.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://generals.wasm.ltd"
        }
      },
      "credits": [],
      "sourceUrl": "https://generals.wasm.ltd"
    },
    {
      "id": "project:god-of-war-iii-remastered-pc",
      "slug": "god-of-war-iii-remastered-pc",
      "title": "God of War III Remastered",
      "project": "gow3_pc",
      "canonicalUrl": "https://playable.wtf/games/god-of-war-iii-remastered-pc/",
      "originals": [
        {
          "id": "godofwariiiremastered",
          "name": "God of War III Remastered",
          "relationship": "associated-with"
        }
      ],
      "kind": "Native compatibility port",
      "genre": "Action adventure",
      "summary": "A Windows and experimental Linux runtime for the PS4 remaster, with your own game dump.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Kratos at the end of the Greek trilogy",
            "kind": "background",
            "paragraphs": [
              "God of War III follows Kratos’s revenge against the Greek gods, moving from Hades toward Mount Olympus. The PS4 Remastered edition revisits that action game rather than the later Norse adventure with Atreus. Its appeal lies in the scale and momentum of that confrontation: this is the closing chapter of the original trilogy, with Kratos at the center of its combat spectacle."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-runtime",
            "title": "The PS4 remaster through a dedicated runtime",
            "kind": "project",
            "paragraphs": [
              "gow3_pc runs the remaster’s x86-64 game program with replacement system services and a shadPS4-derived Vulkan graphics core. The project documents gameplay, cinematics, audio, manual saves and autosaves, with keyboard and controller input available together. The runtime is tailored to this game and needs your own supported PS4 dump.",
              "Resolution and engine frame-rate patches are separate choices. A high frame-rate setting is a target rather than a measured result for every scene or machine. Ultrawide rendering is beta, and cinematics retain their 16:9 framing. Start with the ordinary display presets before combining several experimental changes."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup-and-saves",
            "title": "Prepare the folder, then preserve user data",
            "kind": "practical",
            "paragraphs": [
              "Extract the Windows package, choose the game folder containing eboot.bin, sce_module and sce_sys, save the launcher settings and start. The documented dumps include CUSA01623 and CUSA01715, versions 01.00 and 01.02. First launch prepares the image, and shader compilation can affect startup and later play.",
              "The user folder beside the Windows executable contains saves, shader cache and logs; keep it when updating. Insert, or R3 plus L2, opens the runtime menu. The Linux AppImage has its own data locations and remains experimental, with Steam Deck/RADV rendering corruption listed for the published 2.2.0 package. A desktop Linux launch does not guarantee the same result on the handheld."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "PlayStation · God of War III Remastered",
            "url": "https://www.playstation.com/en-us/games/god-of-war-iii-remastered/"
          },
          {
            "id": "project",
            "label": "gow3_pc · installation and compatibility",
            "url": "https://github.com/FelipePrado0/gow3_pc"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "beta",
        "route": {
          "kind": "download",
          "url": "https://github.com/FelipePrado0/gow3_pc/releases/tag/windows-v2.3.0"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own PS4 God of War III Remastered dump. The project lists CUSA01623 and CUSA01715, versions 01.00 and 01.02. No game files are included.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/FelipePrado0/gow3_pc/HEAD/README.md"
        },
        "setup": {
          "answer": "Extract the Windows ZIP, open its launcher and select the game directory containing eboot.bin. Save settings and start from the launcher. Linux has a separate experimental AppImage. First launch prepares game data and shaders; follow the original release instructions for the selected platform.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/FelipePrado0/gow3_pc/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows 10 version 1903+ or Windows 11, x86-64 CPU with AVX, and Vulkan 1.3 graphics. Experimental x86-64 Linux requires glibc 2.39+ and an appropriate Vulkan driver. Mobile support is unconfirmed.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/FelipePrado0/gow3_pc/HEAD/README.md"
        },
        "controls": {
          "answer": "Keyboard and SDL3 controllers are documented. WASD moves, arrow keys control the camera, and Space maps to Cross. Insert or R3 + L2 opens the runtime menu. Full remapping and controller prompts are described in the README.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/FelipePrado0/gow3_pc/HEAD/README.md"
        },
        "issues": {
          "answer": "Shader preparation can affect startup and frame times; Linux remains experimental. The release lists GPU-specific rendering fixes. Frame-rate settings and social performance demonstrations are not a universal performance guarantee.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/FelipePrado0/gow3_pc/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/FelipePrado0/gow3_pc"
    },
    {
      "id": "project:gta-iii-re3-web",
      "slug": "gta-iii-re3-web",
      "title": "Grand Theft Auto III",
      "project": "re3 · WASM Arcade host",
      "canonicalUrl": "https://playable.wtf/games/gta-iii-re3-web/",
      "originals": [
        {
          "id": "grandtheftautoiii",
          "name": "Grand Theft Auto III",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser engine port",
      "genre": "Adventure",
      "summary": "The re3 browser build with streamed assets and local save-file management.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Liberty City on foot and behind the wheel",
            "kind": "background",
            "paragraphs": [
              "Grand Theft Auto III is a single-player open-world action game set in Liberty City. Moving between walking, fighting and driving gives a visit to the city its rhythm: a vehicle changes how you cross it, while a mission gives that movement a purpose. Story progress opens further parts of the city."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "this-version",
            "title": "A hosted re3 build with streamed assets",
            "kind": "project",
            "paragraphs": [
              "WASM Arcade identifies this version as re3 running through WebAssembly. Its page streams the game data as you explore and provides a save manager beside the play area. The controls cover keyboard, mouse and gamepad, with WebGL 2 required by the host.",
              "The archive is unofficial and supported by advertising. Its About page explains that pressing Play can open a sponsor page in another tab. The game remains a browser application that downloads engine and asset data; no desktop installer is required."
            ],
            "sourceIds": [
              "host",
              "about"
            ]
          },
          {
            "id": "playing",
            "title": "Switch controls when you enter a vehicle",
            "kind": "practical",
            "paragraphs": [
              "Use WASD or the arrows to move and steer, the mouse to attack, and F or Enter to enter or leave a vehicle. Space becomes the handbrake while driving. Escape releases the captured mouse when you need to use the surrounding page."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "saves",
            "title": "Back up a slot outside the browser",
            "kind": "practical",
            "paragraphs": [
              "Save at a safehouse, then use Saves to download the resulting .b file. The manager has eight browser-local slots and can import a file back into one. Keep a downloaded copy before clearing site data or moving devices; a browser save is not an account-based cloud save."
            ],
            "sourceIds": [
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "host",
            "label": "WASM Arcade · GTA III launcher and save manager",
            "url": "https://wasmarcade.com/gta3"
          },
          {
            "id": "about",
            "label": "WASM Arcade · hosting and advertising explanation",
            "url": "https://wasmarcade.com/about"
          }
        ]
      },
      "families": [
        {
          "id": "gta",
          "title": "Grand Theft Auto",
          "indexUrl": "https://playable.wtf/families/#family-gta",
          "guideUrl": "https://playable.wtf/guides/gta-game-versions/",
          "choices": [
            {
              "slug": "gta-iii-re3-web",
              "label": "GTA III in a desktop browser",
              "reason": "WASM Arcade documents re3-based play, keyboard/gamepad input and local save exports; launch includes advertising.",
              "canonicalUrl": "https://playable.wtf/games/gta-iii-re3-web/"
            },
            {
              "slug": "elmasas-lcs-recomp",
              "label": "Liberty City Stories",
              "reason": "A native route for the supported PSP US v1.05 edition, with configurable keyboard, mouse and controller input.",
              "canonicalUrl": "https://playable.wtf/games/elmasas-lcs-recomp/"
            },
            {
              "slug": "koreanseats1-theft4",
              "label": "GTA IV on Apple mobile",
              "reason": "An experimental signed iOS/iPadOS app using the exact Xbox 360 base and TU8, with a save-export workflow.",
              "canonicalUrl": "https://playable.wtf/games/koreanseats1-theft4/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://wasmarcade.com/gta3"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The host supplies streamed browser assets and does not ask for a local game-file import on its documented start flow.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/gta3"
        },
        "setup": {
          "answer": "Choose Play GTA III and allow the browser resources to load. The host says pressing Play also opens an advertising sponsor tab.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/gta3"
        },
        "devices": {
          "answer": "The host recommends a current desktop browser with WebGL 2. Its About page also advertises touch controls for GTA on phones and tablets; those were not tested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/about"
        },
        "controls": {
          "answer": "The host lists WASD/arrows for movement, mouse aiming, F/Enter for vehicles and Esc to release the pointer, plus a controller mapping.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/gta3"
        },
        "multiplayer": {
          "answer": "The page describes this hosted game as single-player.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/gta3"
        },
        "issues": {
          "answer": "Sponsor-tab advertising is part of the launch flow. Browser storage and full-game completion have not been independently tested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/gta3"
        },
        "saves": {
          "answer": "The host says safehouse saves stay in browser storage and its Save Manager can export or import .b files.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/gta3"
        }
      },
      "credits": [
        {
          "name": "WASM Arcade",
          "role": "host",
          "url": "https://wasmarcade.com/gta3",
          "evidence": "https://wasmarcade.com/gta3",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://wasmarcade.com/gta3"
    },
    {
      "id": "project:half-life-pixelsuft",
      "slug": "half-life-pixelsuft",
      "title": "Half-Life",
      "project": "Pixelsuft em-xash",
      "canonicalUrl": "https://playable.wtf/games/half-life-pixelsuft/",
      "originals": [
        {
          "id": "halflife",
          "name": "Half-Life",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "An older Xash3D browser client with selectable game-data and save storage.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Half-Life’s action and problem solving",
            "kind": "background",
            "paragraphs": [
              "Valve’s original Half-Life combines first-person combat with an unfolding science-fiction adventure. The publisher describes a world in which surviving requires thinking as well as shooting. That mixture makes the journey between encounters part of the game: you are working through spaces and situations rather than selecting isolated combat arenas.",
              "This page concerns Pixelsuft’s browser build of Xash. The original game’s reputation and feature list provide background; they do not establish which campaigns or modifications this particular browser package supports."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "A configurable Xash browser launcher",
            "kind": "project",
            "paragraphs": [
              "Pixelsuft describes the project as an Emscripten port of Xash with Half-Life modifications. The launch page exposes the engine’s configuration directly, including memory, game-data loading and storage choices. It is better suited to someone comfortable choosing those options than to a guided game library with a documented campaign picker."
            ],
            "sourceIds": [
              "project",
              "launcher"
            ]
          },
          {
            "id": "data",
            "title": "Choose data and storage as separate options",
            "kind": "practical",
            "paragraphs": [
              "The detailed launcher can load a local ZIP or use a configured data server. Its Emscripten data route can cache files in IndexedDB, while the server-ZIP route is labelled slower and uncached. Loading an archive and retaining your progress are separate decisions: the filesystem menu also offers IndexedDB, LocalStorage and RAM-only operation.",
              "Choose a persistent filesystem if you intend to return, and follow the launcher's instruction to exit the game correctly when using IndexedDB. RAM-only mode keeps the session temporary; LocalStorage is explicitly labelled as sometimes lacking space. Keep your original data archive separately rather than treating the browser cache as its only copy."
            ],
            "sourceIds": [
              "launcher"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Valve · Half-Life",
            "url": "https://store.steampowered.com/app/70/HalfLife/"
          },
          {
            "id": "project",
            "label": "Pixelsuft · em-xash README",
            "url": "https://github.com/Pixelsuft/hl"
          },
          {
            "id": "launcher",
            "label": "Pixelsuft · Xash data and filesystem launcher",
            "url": "https://pixelsuft.github.io/hl/xash.html"
          }
        ]
      },
      "families": [
        {
          "id": "half-life",
          "title": "Half-Life",
          "indexUrl": "https://playable.wtf/families/#family-half-life",
          "guideUrl": "https://playable.wtf/guides/half-life-browser-versions/",
          "choices": [
            {
              "slug": "half-life-webxash",
              "label": "Use your installation and export saves",
              "reason": "The folder/ZIP frontend includes a save manager for Half-Life and supported mods.",
              "canonicalUrl": "https://playable.wtf/games/half-life-webxash/"
            },
            {
              "slug": "half-life-pixelsuft",
              "label": "Choose data and storage manually",
              "reason": "The older em-xash launcher exposes local ZIP, server-data and filesystem options.",
              "canonicalUrl": "https://playable.wtf/games/half-life-pixelsuft/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://pixelsuft.github.io/hl/"
        }
      },
      "fileRequirement": "optional",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Game Options offers server packages, server ZIPs and a local ZIP file. The local option can use files from your own game copy; availability and provenance of hosted packages were not established.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pixelsuft.github.io/hl/xash.html"
        },
        "setup": {
          "answer": "Set the memory size on the landing page and choose Start. In Game Options select a data source and a storage backend before launching.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pixelsuft.github.io/hl/"
        },
        "controls": {
          "answer": "The runtime exposes Lock/hide mouse pointer and Resize canvas options; full control mappings were not reviewed.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pixelsuft.github.io/hl/xash.html"
        },
        "issues": {
          "answer": "The reviewed repository revision is from June 2021. The launcher and configuration were checked, not a completed game load.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Pixelsuft/hl/commit/45b6c93ad1c05643946f8036fe51aab38a53deb4"
        },
        "saves": {
          "answer": "The client offers IndexedDB, LocalStorage or temporary RAM. Its UI says IndexedDB changes require a correct exit and LocalStorage may run out of space.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pixelsuft.github.io/hl/xash.html"
        }
      },
      "credits": [
        {
          "name": "Pixelsuft",
          "role": "port-author",
          "url": "https://github.com/Pixelsuft/hl",
          "evidence": "https://github.com/Pixelsuft/hl",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/Pixelsuft/hl"
    },
    {
      "id": "project:half-life-webxash",
      "slug": "half-life-webxash",
      "title": "Half-Life & Counter-Strike 1.6",
      "project": "WebXash",
      "canonicalUrl": "https://playable.wtf/games/half-life-webxash/",
      "originals": [
        {
          "id": "halflife",
          "name": "Half-Life",
          "relationship": "port-of"
        },
        {
          "id": "counterstrike16",
          "name": "Counter-Strike 1.6",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "Load your own Steam folders into a configurable Xash3D browser client.",
      "editorial": {
        "sections": [
          {
            "id": "games",
            "title": "An action adventure or a team match",
            "kind": "background",
            "paragraphs": [
              "Half-Life and Counter-Strike share an engine lineage but offer different reasons to play. Valve describes Half-Life around action and adventure, with thinking and survival alongside shooting. Counter-Strike turns toward team objectives, where cooperating with your side and handling its mission shape a round.",
              "WebXash is the client that loads the game you supply. Choosing Half-Life, Counter-Strike or a supported mod therefore changes the experience; the browser frontend is not a single curated game mode."
            ],
            "sourceIds": [
              "halflife",
              "counterstrike",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "Your files and your game selection",
            "kind": "project",
            "paragraphs": [
              "WebXash is x8BitRain's frontend for Xash3D-FWGS WebAssembly. Supply the root containing your valve or cstrike folder, or a ZIP with those directories at its root. A mod folder belongs beside valve; set its game launch option before selecting files. Only Xash-compatible mods are suitable."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "saves",
            "title": "Keep game files and saves separate",
            "kind": "practical",
            "paragraphs": [
              "Folder selection reads your installation without writing into it. Saves instead go to IndexedDB, grouped by game or mod, and the save manager can download them. It also works with ZIP-loaded games but is disabled for Counter-Strike 1.6. Export the saves you want to keep before clearing site storage."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "network",
            "title": "Multiplayer needs a known server",
            "kind": "practical",
            "paragraphs": [
              "Multiplayer requires the documented WebSocket server and its address, normally using port 27016. Enter that address before launch, then find the server under Multiplayer and LAN Game, including for an internet connection. Automatic internet server discovery is unavailable."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "input",
            "title": "Plan for a keyboard and mouse",
            "kind": "limitations",
            "paragraphs": [
              "The creator recommends keyboard and mouse and points mobile players toward native Xash ports. Browser shortcuts also matter: Ctrl+W can close the tab, and the README recommends fullscreen. Check the input setup before relying on a crouch-and-move combination."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "halflife",
            "label": "Valve · Half-Life publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=70&l=english"
          },
          {
            "id": "counterstrike",
            "label": "Valve · Counter-Strike publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=10&l=english"
          },
          {
            "id": "project",
            "label": "WebXash · file, multiplayer and save documentation",
            "url": "https://raw.githubusercontent.com/x8BitRain/webXash/HEAD/README.md"
          }
        ]
      },
      "families": [
        {
          "id": "counter-strike",
          "title": "Counter-Strike",
          "indexUrl": "https://playable.wtf/families/#family-counter-strike",
          "guideUrl": "https://playable.wtf/guides/counter-strike-16-browser-setup/",
          "choices": [
            {
              "slug": "counter-strike-1-6",
              "label": "Quick team match",
              "reason": "A live server list, optional voice and explicit desktop/phone input avoid manual file and server preparation.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-1-6/"
            },
            {
              "slug": "half-life-webxash",
              "label": "Your files and server",
              "reason": "Import your own valve/cstrike folders and connect to a known WebSocket-compatible server.",
              "canonicalUrl": "https://playable.wtf/games/half-life-webxash/"
            },
            {
              "slug": "counter-strike-bunnyhop",
              "label": "Bunnyhop time trials",
              "reason": "Source-style hopping, selectable movement styles and records for desktop keyboard-and-mouse play.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-bunnyhop/"
            },
            {
              "slug": "counter-strike-surf",
              "label": "Surf practice",
              "reason": "Solo ramps, route viewing and repeatable practice positions before chasing a timed finish.",
              "canonicalUrl": "https://playable.wtf/games/counter-strike-surf/"
            }
          ]
        },
        {
          "id": "half-life",
          "title": "Half-Life",
          "indexUrl": "https://playable.wtf/families/#family-half-life",
          "guideUrl": "https://playable.wtf/guides/half-life-browser-versions/",
          "choices": [
            {
              "slug": "half-life-webxash",
              "label": "Use your installation and export saves",
              "reason": "The folder/ZIP frontend includes a save manager for Half-Life and supported mods.",
              "canonicalUrl": "https://playable.wtf/games/half-life-webxash/"
            },
            {
              "slug": "half-life-pixelsuft",
              "label": "Choose data and storage manually",
              "reason": "The older em-xash launcher exposes local ZIP, server-data and filesystem options.",
              "canonicalUrl": "https://playable.wtf/games/half-life-pixelsuft/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://x8bitrain.github.io/webXash/"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "Your own valve and/or cstrike folders from a legitimate game installation, supplied as a folder or correctly structured ZIP.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/x8BitRain/webXash/6ab2abb1857dd765a3e1460a0ebd2288a3066d7d/README.md"
        },
        "setup": {
          "answer": "Supply the game root or a correctly structured ZIP, then select the game/mod. Set mod launch options before loading.",
          "steps": [
            "Select the root containing valve and/or cstrike using Open game folder, or choose Open ZIP with those directories at the archive root.",
            "For expansions, keep valve beside the mod directory and set its -game option before selecting files.",
            "Select the game directory when prompted."
          ],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/x8BitRain/webXash/6ab2abb1857dd765a3e1460a0ebd2288a3066d7d/README.md"
        },
        "devices": {
          "answer": "The FAQ says this port needs a keyboard and mouse for proper play; it recommends native Xash ports for mobile.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/x8BitRain/webXash/6ab2abb1857dd765a3e1460a0ebd2288a3066d7d/README.md"
        },
        "multiplayer": {
          "answer": "Internet/LAN play needs the documented WebSocket server and a manually entered address. Automatic Internet server discovery is unavailable.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/x8BitRain/webXash/6ab2abb1857dd765a3e1460a0ebd2288a3066d7d/README.md"
        },
        "issues": {
          "answer": "Ctrl+W can close the browser tab; the creator recommends fullscreen. Unsupported Xash mods may fail.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/x8BitRain/webXash/6ab2abb1857dd765a3e1460a0ebd2288a3066d7d/README.md"
        },
        "saves": {
          "answer": "The save manager stores game/mod saves in IndexedDB and can download them. It is disabled for CS 1.6.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/x8BitRain/webXash/6ab2abb1857dd765a3e1460a0ebd2288a3066d7d/README.md"
        }
      },
      "credits": [
        {
          "name": "x8BitRain (WebXash frontend)",
          "role": "port-author",
          "url": "https://github.com/x8BitRain/webXash",
          "basis": "creator-reported",
          "evidence": "https://raw.githubusercontent.com/x8BitRain/webXash/6ab2abb1857dd765a3e1460a0ebd2288a3066d7d/README.md"
        }
      ],
      "sourceUrl": "https://github.com/x8BitRain/webXash"
    },
    {
      "id": "project:halo-3-openh3m",
      "slug": "halo-3-openh3m",
      "title": "Halo 3: Mythic",
      "project": "OpenH3M",
      "canonicalUrl": "https://playable.wtf/games/halo-3-openh3m/",
      "originals": [
        {
          "id": "halo3",
          "name": "Halo 3",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Shooter",
      "summary": "Halo 3 Mythic Custom Games, Forge and local split-screen for native Windows.",
      "editorial": {
        "sections": [
          {
            "id": "mythic-disc",
            "title": "Halo’s multiplayer disc, on its own terms",
            "kind": "project",
            "paragraphs": [
              "OpenH3M targets the Halo 3 Mythic multiplayer disc bundled with ODST, rather than its campaign. Beta 0.8 documents Custom Games, Forge and one to four local players at the original 30 FPS target. It has no Xbox LIVE or matchmaking; System Link remains untested.",
              "Custom Games provides the route into a local match, while Forge lets you switch between player and build modes. The creator illustrates split-screen play on Last Resort and Construct. That makes this Windows recompilation a project for local Halo sessions, with compatible controllers ready before entering the lobby."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "local-play",
            "title": "Preparing a local match or Forge session",
            "kind": "practical",
            "paragraphs": [
              "Use your own extracted Mythic disc files, preserving default.xex and maps inside a game folder beside OpenH3M.exe. The README links a Windows release package and describes a 1280×720 windowed first launch. Windows 10 or 11, a Direct3D 12 GPU and compatible controllers are the documented starting point.",
              "Additional local players join with Start. In Forge, D-pad Up switches between player and build modes. Theater is accessible, but recording and saved-film playback remain less established than the documented Custom Games and Forge routes."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "source-route",
            "title": "For players building from source",
            "kind": "practical",
            "paragraphs": [
              "The source path uses the win-amd64-release CMake preset and launches halo3mp.exe with an extracted-disc directory as game_data_root and the xenos GPU plugin. That differs from the packaged application’s automatic adjacent game folder. Keep the complete extracted directory available rather than pointing the developer executable at an ISO. The original disc data and rebuilt program remain separate parts of the installation, even when you compile the runtime yourself."
            ],
            "sourceIds": [
              "build"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenH3M · beta 0.8 README",
            "url": "https://github.com/GTTeancum/OpenH3M"
          },
          {
            "id": "build",
            "label": "OpenH3M · build instructions",
            "url": "https://raw.githubusercontent.com/GTTeancum/OpenH3M/HEAD/halo3mp/BUILD.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/GTTeancum/OpenH3M"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Supply legally obtained files from Halo 3: ODST Multiplayer Disc (Disc 2), preserving default.xex and maps/ under the game folder. This is the Mythic multiplayer disc, not the ODST campaign disc.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/GTTeancum/OpenH3M/HEAD/README.md"
        },
        "setup": {
          "answer": "Consult the original repository for the current supported files, build process and limitations.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/GTTeancum/OpenH3M"
        },
        "devices": {
          "answer": "The creator requires 64-bit Windows 10 or 11 and a Direct3D 12 GPU.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/GTTeancum/OpenH3M/HEAD/README.md"
        },
        "controls": {
          "answer": "Xbox/XInput controllers use the original controls. Additional local players join with Start; D-pad Up switches Forge modes.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/GTTeancum/OpenH3M/HEAD/README.md"
        },
        "multiplayer": {
          "answer": "Beta 0.8 documents one to four local split-screen players. Matchmaking and Xbox LIVE are unsupported; System Link remains untested by the creator.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/GTTeancum/OpenH3M/HEAD/README.md"
        },
        "scope": {
          "answer": "Custom Games and Forge are documented. Theater is reachable, but recording and saved-film playback are not fully validated by the creator.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/GTTeancum/OpenH3M/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/GTTeancum/OpenH3M"
    },
    {
      "id": "project:halo-ce-decompilation",
      "slug": "halo-ce-decompilation",
      "title": "Halo: Combat Evolved",
      "project": "Halo decompilation",
      "canonicalUrl": "https://playable.wtf/games/halo-ce-decompilation/",
      "originals": [
        {
          "id": "halocombatevolved",
          "name": "Halo: Combat Evolved",
          "relationship": "associated-with"
        }
      ],
      "kind": "Matching decompilation",
      "genre": "Shooter",
      "summary": "Reconstruct Halo CE build 2342 from the matching PAL debug executable.",
      "editorial": {
        "sections": [
          {
            "id": "the-target",
            "title": "Reconstructing one early Halo executable",
            "kind": "project",
            "paragraphs": [
              "punpckhdq’s Halo project reconstructs Combat Evolved build 2342, identified by the executable cachebeta.exe. The goal is a matching decompilation of that target, not a modern browser frontend or a general installer for retail Halo discs. This distinction is the main thing to understand before choosing it from several similarly named Halo projects.",
              "The work draws on debug symbols from later Halo games to help identify structures, types and function signatures. The README warns that the Halo: Combat Evolved Anniversary beta is based on Halo PC and differs from the original Xbox title. Useful research material is therefore not automatically an exact description of the older executable."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "development-route",
            "title": "A developer build with exact prerequisites",
            "kind": "practical",
            "paragraphs": [
              "The documented workflow requires the PAL debug build, the August 2001 Xbox SDK and Ninja. The target executable belongs in the repository root, while the SDK’s xbox directory supplies the bin and include paths. configure.py prepares the build; Ninja compiles it and reports progress, with a Visual Studio 2022 project offered as another development route on Windows.",
              "Those requirements are specific development inputs obtained with appropriate authorization. They are not interchangeable with the retail files accepted by unrelated Halo ports. The project is useful for following source reconstruction, but its build statistics do not establish a ready campaign, supported controller setup or online service."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Halo decompilation · project documentation",
            "url": "https://github.com/punpckhdq/halo"
          }
        ]
      },
      "families": [
        {
          "id": "halo",
          "title": "Halo: Combat Evolved",
          "indexUrl": "https://playable.wtf/families/#family-halo",
          "guideUrl": "https://playable.wtf/guides/halo-ce-browser-versions/",
          "choices": [
            {
              "slug": "halo-combat-evolved",
              "label": "Browser with a mouse",
              "reason": "Direct XISO import, desktop bindings and private map-and-mode invite rooms.",
              "canonicalUrl": "https://playable.wtf/games/halo-combat-evolved/"
            },
            {
              "slug": "halo-ce-mobile",
              "label": "Phone controls",
              "reason": "Editable touch layouts, home-screen installation and per-copy save export.",
              "canonicalUrl": "https://playable.wtf/games/halo-ce-mobile/"
            },
            {
              "slug": "opencommunityedition-opence",
              "label": "Native desktop play",
              "reason": "Windows and Linux releases with disc import and documented local split-screen campaign.",
              "canonicalUrl": "https://playable.wtf/games/opencommunityedition-opence/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "unknown",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/punpckhdq/halo"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The project targets Halo CE build 2342 (cachebeta.exe) and requires the Halo 1 PAL debug build plus the August 2001 Xbox SDK, obtained with appropriate authorization.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/punpckhdq/halo/HEAD/README.md"
        },
        "setup": {
          "answer": "The documented source workflow places cachebeta.exe in the repository root and the SDK files under xbox/, then uses configure.py and Ninja. This is a developer build process.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/punpckhdq/halo/HEAD/README.md"
        },
        "scope": {
          "answer": "A work-in-progress decompilation of build 2342. A retail disc image for a different Halo port does not substitute for this project’s target executable.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/punpckhdq/halo/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/punpckhdq/halo"
    },
    {
      "id": "project:halo-ce-mobile",
      "slug": "halo-ce-mobile",
      "title": "Halo: Combat Evolved",
      "project": "HCEMobile",
      "canonicalUrl": "https://playable.wtf/games/halo-ce-mobile/",
      "originals": [
        {
          "id": "halocombatevolved",
          "name": "Halo: Combat Evolved",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "A phone-focused Halo client with local disc import and home-screen installation.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original ringworld campaign",
            "kind": "background",
            "paragraphs": [
              "The original Halo campaign follows the Master Chief and Cortana on an alien ringworld, trying to keep human survivors alive against the Covenant while uncovering the installation's purpose. That story is the background to HCEMobile's campaign route. The imported Xbox game is distinct from the later Anniversary remaster and its additional presentation features."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Halo built around a portable screen",
            "kind": "project",
            "paragraphs": [
              "HCEMobile brings the original Xbox Halo into a browser interface designed for phones as well as computers. Its distinguishing work is around the game: editable touch layouts, home-screen installation, per-copy saves and an online account service. The creator offers both a modern mobile-shooter layout and an arrangement based on the original Xbox controller, so you can choose between familiarity with touch shooters and familiarity with Halo's pad.",
              "The campaign, split screen and System Link do not require an online account. Online matchmaking and custom lobbies use the project's free account system. These are HCEMobile services; an account here does not turn another independently hosted Halo browser client into the same service."
            ],
            "sourceIds": [
              "project",
              "guide"
            ]
          },
          {
            "id": "your-copy",
            "title": "Choose the right copy before importing",
            "kind": "practical",
            "paragraphs": [
              "Supply your own verified original-Xbox .iso or .xiso. The guide accepts both full-game and multiplayer discs, so the content you can choose depends on the copy you import. Keep the page open while it copies the maps, which can occupy up to 1.8 GB of device storage. The creator says the image stays local.",
              "Several copies can coexist, with separate saves for each. That is useful if you keep different disc versions, but it also makes choosing the right entry important when looking for an existing campaign. Export saves before removing game data or moving devices."
            ],
            "sourceIds": [
              "project",
              "guide"
            ]
          },
          {
            "id": "playing-online",
            "title": "Arrange a match with friends",
            "kind": "practical",
            "paragraphs": [
              "Matchmaking groups players by playlist; Custom Games lets a host choose the map, game type and settings. For a planned session, update everyone's client and use the same disc-image version. The guide recommends Wi-Fi because some mobile networks block the direct connections used for play."
            ],
            "sourceIds": [
              "guide"
            ]
          },
          {
            "id": "comfort",
            "title": "Trade resolution for a steadier session",
            "kind": "practical",
            "paragraphs": [
              "Adjust the touch buttons and aim sensitivity before a demanding fight. The settings also expose resolution and lower-resolution textures. If levels turn black or the game stops, the creator specifically recommends the lower-resolution texture setting; for memory errors, close other apps and tabs. A controller is another documented input choice, activated by pressing a button on the start page."
            ],
            "sourceIds": [
              "project",
              "guide"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "HCEMobile · game and settings",
            "url": "https://hcemobile.com/"
          },
          {
            "id": "guide",
            "label": "HCEMobile · getting started guide",
            "url": "https://hcemobile.com/guide/"
          },
          {
            "id": "original",
            "label": "Xbox Game Studios · Halo campaign and Anniversary edition",
            "url": "https://store.steampowered.com/app/1064221/Halo_Combat_Evolved_Anniversary/"
          }
        ]
      },
      "families": [
        {
          "id": "halo",
          "title": "Halo: Combat Evolved",
          "indexUrl": "https://playable.wtf/families/#family-halo",
          "guideUrl": "https://playable.wtf/guides/halo-ce-browser-versions/",
          "choices": [
            {
              "slug": "halo-combat-evolved",
              "label": "Browser with a mouse",
              "reason": "Direct XISO import, desktop bindings and private map-and-mode invite rooms.",
              "canonicalUrl": "https://playable.wtf/games/halo-combat-evolved/"
            },
            {
              "slug": "halo-ce-mobile",
              "label": "Phone controls",
              "reason": "Editable touch layouts, home-screen installation and per-copy save export.",
              "canonicalUrl": "https://playable.wtf/games/halo-ce-mobile/"
            },
            {
              "slug": "opencommunityedition-opence",
              "label": "Native desktop play",
              "reason": "Windows and Linux releases with disc import and documented local split-screen campaign.",
              "canonicalUrl": "https://playable.wtf/games/opencommunityedition-opence/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://hcemobile.com"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "Supply your own verified original-Xbox Halo .iso or .xiso. The maps occupy up to 1.8 GB of private browser storage; the host says nothing is uploaded.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://hcemobile.com/"
        },
        "setup": {
          "answer": "Import the disc image, then use the app’s Play control. Home-screen installation is documented for iOS and Android.",
          "steps": [
            "Choose your verified Xbox disc image and wait for map import.",
            "On iOS, use Safari Share → Add to Home Screen; on Android, use the browser’s install option.",
            "Open the installed app and choose Play."
          ],
          "basis": "creator-reported",
          "sourceUrl": "https://hcemobile.com/"
        },
        "devices": {
          "answer": "The creator specifies iOS 17 or later on iPhone/iPad, Chrome on Android, and current Chrome, Edge, Safari or Firefox on computers.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://hcemobile.com/guide/"
        },
        "controls": {
          "answer": "The host documents editable touch layouts, keyboard/mouse, and Xbox, PlayStation, Switch Pro, MFi and Backbone controllers.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://hcemobile.com/"
        },
        "multiplayer": {
          "answer": "Online play needs a free account. To join friends, update both clients and use the same disc-image version; the guide recommends Wi-Fi because some mobile networks block direct connections.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://hcemobile.com/guide/"
        },
        "issues": {
          "answer": "For memory errors, close other apps and tabs. For black levels, enable Lower-resolution textures in Settings and data. On iPhone, check the silent switch or Play sound when the phone is on silent.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://hcemobile.com/guide/"
        },
        "saves": {
          "answer": "Saves belong to each imported game copy. The host provides save export and restore.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://hcemobile.com/"
        }
      },
      "credits": [
        {
          "name": "Trevor",
          "role": "host",
          "url": "https://hcemobile.com/",
          "basis": "creator-reported",
          "evidence": "https://hcemobile.com/"
        }
      ],
      "sourceUrl": "https://hcemobile.com"
    },
    {
      "id": "project:halo-combat-evolved",
      "slug": "halo-combat-evolved",
      "title": "Halo: Combat Evolved",
      "project": "Mitchell Hynes Web",
      "canonicalUrl": "https://playable.wtf/games/halo-combat-evolved/",
      "originals": [
        {
          "id": "halocombatevolved",
          "name": "Halo: Combat Evolved",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "Halo’s Xbox campaign and invite-based multiplayer, with your own disc image.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original Halo adventure",
            "kind": "background",
            "paragraphs": [
              "Halo: Combat Evolved follows the Master Chief and Cortana after humanity's survivors reach a mysterious ringworld. The campaign begins as a fight against the Covenant and gradually turns into a discovery about the ring itself. It is a story-led first-person shooter: the setting and the changing threats give the journey a purpose beyond winning an isolated match.",
              "This project targets the original Xbox game. Halo: Combat Evolved Anniversary is a separate commercial remaster with its own graphics options and PC features; those are not features of this browser build."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "Campaign and custom matches",
            "kind": "project",
            "paragraphs": [
              "Mitchell Hynes' independently hosted client builds on halo-ce-universal decompilation work. Its interface provides campaign loading and private multiplayer rooms. The multiplayer selector includes compact arenas such as Battle Creek and larger maps such as Blood Gulch, with Slayer, Team Slayer, Capture the Flag, Oddball, King of the Hill and Race.",
              "For a custom match, choose the map and mode before making an invite link. Optional rules include score limits, respawn time, lives, health and shields. That makes the room creator's choices part of the experience; an invitation to the same map can still lead to a very different match."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "getting-started",
            "title": "Bring the Xbox disc image",
            "kind": "practical",
            "paragraphs": [
              "Choose an XISO made from your own Xbox Halo copy, then let the runtime load. The host supplies no Halo game data. This is a separate service from OpenCE, so use Mitchell Hynes' project contact for problems with this website."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "input",
            "title": "Settle the controls before joining",
            "kind": "practical",
            "paragraphs": [
              "Click the game or Focus game to capture the mouse. The on-screen legend maps keyboard controls to the Xbox controller, including weapon switching, grenades and melee. Aim magnetism is automatically disabled for mouse and keyboard and enabled for a controller. Check that setting before a match if the aiming response feels different between the two inputs."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Xbox Game Studios · Halo campaign and Anniversary edition",
            "url": "https://store.steampowered.com/app/1064221/Halo_Combat_Evolved_Anniversary/"
          },
          {
            "id": "project",
            "label": "Mitchell Hynes · Halo web client",
            "url": "https://mitchellhynes.com/halo/halo.html"
          }
        ]
      },
      "families": [
        {
          "id": "halo",
          "title": "Halo: Combat Evolved",
          "indexUrl": "https://playable.wtf/families/#family-halo",
          "guideUrl": "https://playable.wtf/guides/halo-ce-browser-versions/",
          "choices": [
            {
              "slug": "halo-combat-evolved",
              "label": "Browser with a mouse",
              "reason": "Direct XISO import, desktop bindings and private map-and-mode invite rooms.",
              "canonicalUrl": "https://playable.wtf/games/halo-combat-evolved/"
            },
            {
              "slug": "halo-ce-mobile",
              "label": "Phone controls",
              "reason": "Editable touch layouts, home-screen installation and per-copy save export.",
              "canonicalUrl": "https://playable.wtf/games/halo-ce-mobile/"
            },
            {
              "slug": "opencommunityedition-opence",
              "label": "Native desktop play",
              "reason": "Windows and Linux releases with disc import and documented local split-screen campaign.",
              "canonicalUrl": "https://playable.wtf/games/opencommunityedition-opence/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://mitchellhynes.com/halo/halo.html"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "Choose an XISO made from your own Xbox copy of Halo: Combat Evolved. The host says it does not provide game data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://mitchellhynes.com/halo/halo.html"
        },
        "setup": {
          "answer": "Import your Xbox XISO and wait for the runtime. Click the game or Focus game to capture the mouse.",
          "steps": [
            "Choose an XISO from your own Xbox Halo copy.",
            "Wait for runtime/campaign loading.",
            "Click Focus game to capture mouse input."
          ],
          "basis": "creator-reported",
          "sourceUrl": "https://mitchellhynes.com/halo/halo.html"
        },
        "controls": {
          "answer": "WASD moves, mouse aims and left click fires. Space jumps, E/R acts or reloads, Tab/wheel changes weapons, G/right click throws a grenade, F melees and Esc opens the menu. Click Focus game to capture the mouse.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://mitchellhynes.com/halo/halo.html"
        },
        "multiplayer": {
          "answer": "The host offers invite links, map and mode selection, and peer-to-peer rooms when possible.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://mitchellhynes.com/halo/halo.html"
        },
        "scope": {
          "answer": "The host provides campaign loading and private multiplayer rooms with map and mode selection. This independently maintained web build credits halo-ce-universal upstream work.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://mitchellhynes.com/halo/halo.html"
        }
      },
      "credits": [
        {
          "name": "Mitchell Hynes",
          "role": "port-author",
          "url": "https://mitchellhynes.com/halo/halo.html",
          "basis": "creator-reported",
          "evidence": "https://mitchellhynes.com/halo/halo.html"
        },
        {
          "name": "Mitchell Hynes",
          "role": "host",
          "url": "https://mitchellhynes.com/halo/halo.html",
          "basis": "creator-reported",
          "evidence": "https://mitchellhynes.com/halo/halo.html"
        }
      ],
      "sourceUrl": "https://mitchellhynes.com/halo/halo.html"
    },
    {
      "id": "project:halo-reach-decompilation",
      "slug": "halo-reach-decompilation",
      "title": "Halo: Reach",
      "project": "Reach decompilation",
      "canonicalUrl": "https://playable.wtf/games/halo-reach-decompilation/",
      "originals": [
        {
          "id": "haloreach",
          "name": "Halo: Reach",
          "relationship": "associated-with"
        }
      ],
      "kind": "Matching decompilation",
      "genre": "Shooter",
      "summary": "Work-in-progress Halo Reach decompilation targeting a specific July 2011 debug build.",
      "editorial": {
        "sections": [
          {
            "id": "research-target",
            "title": "A precise Reach research target",
            "kind": "project",
            "paragraphs": [
              "ChimpsAtSea’s Reach repository is a work-in-progress decompilation. Its supported target is the tag-debug build identified as July 11, 2011, rather than a general replacement for every retail Halo: Reach release. That specificity is important: a project reconstructing one executable does not automatically accept a different edition of the game.",
              "The repository tracks code and data progress separately. Those development measures describe reconstruction work; they should not be read as a campaign completion percentage or a list of working multiplayer modes."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "following-work",
            "title": "Following the project",
            "kind": "practical",
            "paragraphs": [
              "The useful route here is the source repository and its progress links. An existing copy of the game is required, and the repository expressly excludes game assets and assembly. There is no browser launch route for this entry.",
              "Choose this project if you want to follow or study the reconstruction of that specific Reach build. For a playing session, use a separately documented playable release rather than treating the source archive as a ready installation."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Reach decompilation · project documentation",
            "url": "https://github.com/ChimpsAtSea/Reach"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "unknown",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/ChimpsAtSea/Reach"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The supported target is tag_debug_untracked_jul_11_2011, identified as reach halo3 tag debug xenon untracked Jul 11 2011 16:43:16. The repository requires an existing copy and includes no game assets or assembly.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/ChimpsAtSea/Reach/HEAD/README.md"
        },
        "setup": {
          "answer": "View the repository’s development documentation; no Play button is provided for this source-only entry.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/ChimpsAtSea/Reach"
        },
        "scope": {
          "answer": "This is a work-in-progress decompilation of the specified Halo Reach debug build.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/ChimpsAtSea/Reach/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/ChimpsAtSea/Reach"
    },
    {
      "id": "project:harbourmasters-shipwright",
      "slug": "harbourmasters-shipwright",
      "title": "The Legend of Zelda: Ocarina of Time",
      "project": "Ship of Harkinian",
      "canonicalUrl": "https://playable.wtf/games/harbourmasters-shipwright/",
      "originals": [
        {
          "id": "thelegendofzeldaocarinaoftime",
          "name": "The Legend of Zelda: Ocarina of Time",
          "relationship": "associated-with"
        }
      ],
      "kind": "Source port",
      "genre": "Adventure",
      "summary": "A native Ocarina of Time port with its own ROM compatibility checker.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original adventure: tools, puzzles and time",
            "kind": "background",
            "paragraphs": [
              "Ocarina of Time follows Link across Hyrule and through time in a quest to stop Ganondorf. Weapons and items are tools for solving puzzles as well as fighting enemies, while bosses test how well you understand what the adventure has taught you. The draw is that combination of exploration, puzzle solving and action; Ship of Harkinian provides a new way to configure and run that original adventure."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "why-ship",
            "title": "Ocarina of Time through Ship of Harkinian",
            "kind": "project",
            "paragraphs": [
              "Ship of Harkinian runs Ocarina of Time using the game’s decompiled code and a modern platform library. The project extracts the assets from your supported ROM into its own local archive, then uses those assets with the native application. You are choosing a dedicated Ocarina of Time port, with its own settings, shortcuts and mod format.",
              "The difference becomes especially useful when configuring the experience. Graphics backends can be selected for the host computer, keyboard controls are documented directly, and custom asset packs have a dedicated mods folder. These are features of Ship itself; a texture pack or other optional modification remains a separate addition."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "rom-before-release",
            "title": "Check your copy before installing",
            "kind": "practical",
            "paragraphs": [
              "Start with the project’s ROM compatibility checker or compare your dump’s SHA-1 against its supported-hash list. A filename alone is not enough to identify the required revision. Once the dump matches, download the release for your operating system and let the application process the game assets when prompted. No copyrighted game assets are supplied with Ship.",
              "Windows uses soh.exe, Linux uses an AppImage and macOS uses soh.app. On Linux, the AppImage may first need execute permission. The asset-conversion step is part of setup; it is different from downloading a ready-made copy of the game."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "shortcuts-and-assets",
            "title": "Controls, saves and optional assets",
            "kind": "practical",
            "paragraphs": [
              "The default keyboard scheme uses WASD for the analog stick, arrow keys for the C buttons, X for A and C for B. Escape opens the menu, while F11 toggles fullscreen. Save-state shortcuts use F5 to save, F6 to change state and F7 to load, so learn those bindings before experimenting with an existing adventure.",
              "Custom assets are packaged as .otr archives and placed in the mods folder. Keep a clear distinction between those optional packs and the .o2r archive generated from your game. Linux normally stores saves and settings under ~/.local/share/soh/, with documented overrides for a local folder or SHIP_HOME."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "backend-and-build",
            "title": "Pick a release and graphics backend",
            "kind": "limitations",
            "paragraphs": [
              "DirectX 11 is the Windows default; OpenGL is available across platforms and Metal on macOS. Changing the backend requires restarting the application. If a graphics problem prevents normal startup, the README explains the corresponding configuration-file setting. Continuous-integration downloads are explicitly for playtesting and may crash, so use the ordinary Releases route for your first installation."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Ship of Harkinian · project documentation",
            "url": "https://github.com/HarbourMasters/Shipwright"
          },
          {
            "id": "original",
            "label": "Nintendo · Ocarina of Time",
            "url": "https://www.nintendo.com/en-gb/Games/Nintendo-64/The-Legend-of-Zelda-Ocarina-of-Time-269536.html"
          }
        ]
      },
      "families": [
        {
          "id": "zelda",
          "title": "Zelda adventures",
          "indexUrl": "https://playable.wtf/families/#family-zelda",
          "guideUrl": "https://playable.wtf/guides/zelda-game-versions/",
          "choices": [
            {
              "slug": "harbourmasters-shipwright",
              "label": "Ocarina of Time",
              "reason": "Ship of Harkinian offers native packages with ROM validation and configurable controls.",
              "canonicalUrl": "https://playable.wtf/games/harbourmasters-shipwright/"
            },
            {
              "slug": "zelda64recomp-zelda64recomp",
              "label": "Majora’s Mask",
              "reason": "Zelda64Recomp imports the North American ROM and adds optional dual-stick camera and autosave.",
              "canonicalUrl": "https://playable.wtf/games/zelda64recomp-zelda64recomp/"
            },
            {
              "slug": "zelda-links-awakening-2019-lasrecomp",
              "label": "The Switch Link’s Awakening",
              "reason": "LAS Recomp offers vanilla or randomizer play from your own version 1.0.0 files, with beta limitations.",
              "canonicalUrl": "https://playable.wtf/games/zelda-links-awakening-2019-lasrecomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/HarbourMasters/Shipwright/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "A supported Ocarina of Time ROM dump; verify compatibility with ship.equipment.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/HarbourMasters/Shipwright"
        },
        "setup": {
          "answer": "Verify your dump, get the platform release, launch it and select the ROM when prompted.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/HarbourMasters/Shipwright"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/HarbourMasters/Shipwright"
    },
    {
      "id": "project:harbourmasters-spaghettikart",
      "slug": "harbourmasters-spaghettikart",
      "title": "Mario Kart 64",
      "project": "SpaghettiKart",
      "canonicalUrl": "https://playable.wtf/games/harbourmasters-spaghettikart/",
      "originals": [
        {
          "id": "mariokart64",
          "name": "Mario Kart 64",
          "relationship": "associated-with"
        }
      ],
      "kind": "Source port",
      "genre": "Racing",
      "summary": "Mario Kart 64’s native port with an explicit US-ROM setup.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Racing lines and well-timed items",
            "kind": "background",
            "paragraphs": [
              "Mario Kart 64 combines four-track cups with item combat and a separate Battle Mode. Its eight racers differ in handling, acceleration and speed, while shells, bananas and lightning can change a race even after a clean start. Learning corners and the power slide gives the driving depth beyond simply holding the accelerator.",
              "The original offers 50cc, 100cc and 150cc classes. That progression provides a natural way to learn tracks before faster races make obstacles and braking points more demanding. This background describes Nintendo’s game; the port’s installation and customization choices are separate."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "port-choice",
            "title": "What SpaghettiKart supplies",
            "kind": "project",
            "paragraphs": [
              "SpaghettiKart is HarbourMasters’ native Mario Kart 64 project. It generates an mk64.o2r asset archive from your own supported ROM and runs the game through its desktop application. You can choose a graphics backend, configure inputs and load custom asset packs without treating the ROM as a general-purpose emulator library.",
              "The mod format is specific: .o2r files and stored .zip archives go in the mods folder. Unlike some other HarbourMasters projects, SpaghettiKart does not accept .otr archives. Start with its own linked modding documentation and community page when choosing additional content."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "first-race",
            "title": "From your ROM to the starting grid",
            "kind": "practical",
            "paragraphs": [
              "The supported base is the US Mario Kart 64 ROM in .z64 format. Verify the SHA-1 in the README and convert the byte order if your dump is .n64. On Windows, extract the release and run Spaghettify.exe to select the ROM; Linux uses spaghetti.appimage and requires zenity or kdialog for the file dialog.",
              "The keyboard layout uses arrow keys for steering, Shift for A, Ctrl for B, Space for R and Z for Z. The documented SDL gamepad layout is another option. Escape opens settings and F11 toggles fullscreen, so configure the screen and input before committing to a cup."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "release-and-renderer",
            "title": "Release builds and renderer choices",
            "kind": "limitations",
            "paragraphs": [
              "DirectX 11, OpenGL and Metal are documented graphics options, with changes requiring a restart. The Switch workflow generates assets using a PC release first. Nightly downloads are explicitly playtest builds that may crash; they are useful for following development but should not be confused with the ordinary release path."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "SpaghettiKart · project documentation",
            "url": "https://github.com/HarbourMasters/SpaghettiKart"
          },
          {
            "id": "original",
            "label": "Nintendo · Mario Kart 64",
            "url": "https://www.nintendo.com/en-gb/Games/Nintendo-64/Mario-Kart-64-269558.html"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/HarbourMasters/SpaghettiKart/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own US Mario Kart 64 ROM in .z64 format.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/HarbourMasters/SpaghettiKart"
        },
        "setup": {
          "answer": "Verify the listed SHA-1 and follow the platform release instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/HarbourMasters/SpaghettiKart"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/HarbourMasters/SpaghettiKart"
    },
    {
      "id": "project:harbourmasters-starship",
      "slug": "harbourmasters-starship",
      "title": "Star Fox 64",
      "project": "Starship",
      "canonicalUrl": "https://playable.wtf/games/harbourmasters-starship/",
      "originals": [
        {
          "id": "starfox64",
          "name": "Star Fox 64",
          "relationship": "associated-with"
        }
      ],
      "kind": "Source port",
      "genre": "Shooter",
      "summary": "The Star Fox 64 native port with explicit regional ROM support.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "The original flight through the Lylat System",
            "kind": "background",
            "paragraphs": [
              "Star Fox 64, known as Lylat Wars in Europe, mixes forward-scrolling flight missions with open arenas where you can turn freely. Fox’s Arwing is the main vehicle, but the original campaign also takes combat to land and underwater in the Landmaster and Blue Marine. Dodging, aiming and keeping track of threats matter more than exploring at your own pace.",
              "Hidden paths give the campaign a reason to be replayed: seeing a different route is part of the game’s attraction. This is the Nintendo 64 adventure behind Starship; the port’s supported ROMs and voice-replacement options are separate choices explained below."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "starship-version",
            "title": "A dedicated Star Fox 64 port",
            "kind": "project",
            "paragraphs": [
              "Starship runs Star Fox 64 through HarbourMasters’ native port framework. Its setup creates a local asset archive from a supported Nintendo 64 ROM, while the desktop application provides the rendering, menus and input layer. It is a dedicated installation for this game, with its own configuration and optional custom assets.",
              "The release route is intended for players. The project also publishes continuous-integration builds for playtesting, but warns that those may contain bugs or crashes. Choose the normal release before trying a development build so that setup problems are easier to separate from unfinished changes."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "rom-and-voices",
            "title": "Base ROM and voice language are different choices",
            "kind": "practical",
            "paragraphs": [
              "The base game must be a US 1.0 or US 1.1 revision in .z64 format. Check your dump against the SHA-1 values in the README before generating assets. A .n64 dump needs byte-order conversion; renaming its extension does not perform that conversion.",
              "European Lylat Wars and Japanese assets can supply optional replacement voices alongside the US base. They do not substitute for the supported US ROM, and only one replacement voice language can be active at a time. This is particularly useful to know if you remember the game under its European name and arrive with a European copy."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "desktop-controls",
            "title": "Set up controls before taking off",
            "kind": "practical",
            "paragraphs": [
              "The documented keyboard layout maps the analog stick to WASD and the C buttons to the arrow keys. X, C and Z represent the N64 A, B and Z buttons, with Space for Start. F1 opens the menu bar, F11 toggles fullscreen and F4 resets the game. Treat the reset key separately from the menu shortcut when exploring settings.",
              "Custom assets go in the mods folder as .o2r or .otr archives. The project links its asset tools for creators, but the listed Blender tool does not currently support Star Fox 64. Use packs made for Starship rather than assuming another HarbourMasters game’s assets will fit."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "graphics-and-platforms",
            "title": "Match the renderer to your computer",
            "kind": "practical",
            "paragraphs": [
              "Windows, Linux and macOS have documented launch flows; the Switch route first generates sf64.o2r on a PC. DirectX 11 is the Windows default, Metal the macOS default, and OpenGL is the cross-platform alternative. Changing the API in settings needs a restart. If a crash blocks the menu, the README also gives the configuration-file values needed to select OpenGL."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Starship · project documentation",
            "url": "https://github.com/HarbourMasters/Starship"
          },
          {
            "id": "original",
            "label": "Nintendo · Lylat Wars / Star Fox 64",
            "url": "https://www.nintendo.com/en-gb/Games/Nintendo-64/Lylat-Wars-277897.html"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/HarbourMasters/Starship/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported US 1.0 or US 1.1 Star Fox 64 dump in .z64 format.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/HarbourMasters/Starship"
        },
        "setup": {
          "answer": "Verify the ROM against the listed hashes, then follow the release setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/HarbourMasters/Starship"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/HarbourMasters/Starship"
    },
    {
      "id": "project:harvestmoon64recomp-harvestmoon64recomp",
      "slug": "harvestmoon64recomp-harvestmoon64recomp",
      "title": "Harvest Moon 64",
      "project": "Harvest Moon 64 Recompiled",
      "canonicalUrl": "https://playable.wtf/games/harvestmoon64recomp-harvestmoon64recomp/",
      "originals": [
        {
          "id": "harvestmoon64",
          "name": "Harvest Moon 64",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Simulation",
      "summary": "The N64 farming game with an RT64-backed native runtime.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original game: build a life around the farm",
            "kind": "background",
            "paragraphs": [
              "Harvest Moon 64 is a single-player farming simulation about restoring an inherited farm. Its central appeal is planning work around the changing seasons and building a life with help from the neighboring community. Progress comes from a continuing routine rather than a succession of isolated matches. That makes reliable saves and comfortable controls especially useful when choosing a modern version."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Modern presentation without speeding up the calendar",
            "kind": "project",
            "paragraphs": [
              "Harvest Moon 64 Recompiled loads the North American game directly from your own ROM, without a separate asset-extraction or compiler step. RT64 supplies higher frame-rate presentation and flexible aspect ratios. Raising the displayed frame rate does not accelerate gameplay, so a smoother view does not shorten the time available for farm work.",
              "The in-game menu groups gameplay, graphics, audio and input settings and works with a mouse, controller or keyboard. On an ultrawide display the HUD can remain positioned around a 16:9 area, keeping important information closer to the center. Original frame-rate presentation is also available."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "mods-and-saves",
            "title": "Add mods carefully and keep the farm portable",
            "kind": "practical",
            "paragraphs": [
              "Mods and texture packs can be dropped onto the window before starting or installed through the Mods menu. Use Manual Download on the project’s Thunderstore page: its external mod manager is not supported. Individual mods can then be enabled and configured in the port itself.",
              "Saves normally live in the platform’s HarvestMoon64Recompiled user-data directory. An empty portable.txt beside the executable places saves, configuration and mods together with the program. On Steam Deck, import the ROM in Desktop Mode and add the executable to Steam before using Gaming Mode."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "compatibility",
            "title": "Check the graphics driver first",
            "kind": "limitations",
            "paragraphs": [
              "The renderer needs Direct3D 12 Shader Model 6, Vulkan 1.2 or a supported Metal implementation; x86-64 processors also need SSE4.1. If startup fails, begin with the graphics driver. For stuttering, use the port’s frame-limit slider instead of an external limiter. Overlays such as MSI Afterburner and desktop effects software can also interfere with correct rendering."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Harvest Moon 64 Recompiled · project documentation",
            "url": "https://github.com/HarvestMoon64Recomp/HarvestMoon64Recomp"
          },
          {
            "id": "original",
            "label": "Nintendo · Harvest Moon 64 publisher description",
            "url": "https://www.nintendo.com/en-gb/Games/Nintendo-64/Harvest-Moon-64-1197058.html"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/HarvestMoon64Recomp/HarvestMoon64Recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Harvest Moon 64 ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/HarvestMoon64Recomp/HarvestMoon64Recomp"
        },
        "setup": {
          "answer": "Check the ROM and GPU requirements, then import the game in the release.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/HarvestMoon64Recomp/HarvestMoon64Recomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/HarvestMoon64Recomp/HarvestMoon64Recomp"
    },
    {
      "id": "project:headshot2017-gzdoom-sm64",
      "slug": "headshot2017-gzdoom-sm64",
      "title": "Doom × Super Mario 64",
      "project": "gzdoom-sm64",
      "canonicalUrl": "https://playable.wtf/games/headshot2017-gzdoom-sm64/",
      "originals": [
        {
          "id": "doom",
          "name": "Doom",
          "relationship": "associated-with"
        },
        {
          "id": "supermario64",
          "name": "Super Mario 64",
          "relationship": "associated-with"
        }
      ],
      "kind": "Mashup mod",
      "genre": "Shooter",
      "summary": "Mario takes the player’s place in a GZDoom fork.",
      "editorial": {
        "sections": [
          {
            "id": "scope",
            "title": "Mario takes the player slot in Doom",
            "kind": "project",
            "paragraphs": [
              "gzdoom-sm64 replaces the Doom player with Mario through libsm64. It is based on GZDoom 3.2.0, giving the crossover a specific engine baseline rather than following every feature of current GZDoom. The library brings Mario’s movement and rendering into the host; the Doom WAD still supplies the environment.",
              "That combination is the reason to try it: familiar Doom spaces become a setting for a different character. It is not a package containing Doom and Super Mario 64, and it does not turn either original campaign into newly authored crossover levels."
            ],
            "sourceIds": [
              "project",
              "library"
            ]
          },
          {
            "id": "setup",
            "title": "Supply both games’ required files",
            "kind": "practical",
            "paragraphs": [
              "Use the project’s release with a Doom WAD and your own US Super Mario 64 ROM, named sm64.us.z64. The listed development release directs ordinary users to release.7z rather than the source archive. Keep those game inputs separate from the source-build instructions.",
              "The creator calls this a work in progress and says only that some Doom mods may work. Treat a favorite WAD or gameplay mod as a compatibility experiment, not as something guaranteed by its support in another GZDoom version."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "gzdoom-sm64 · project documentation",
            "url": "https://github.com/headshot2017/gzdoom-sm64"
          },
          {
            "id": "library",
            "label": "libsm64 · character movement library",
            "url": "https://github.com/libsm64/libsm64"
          },
          {
            "id": "release",
            "label": "gzdoom-sm64 · development release",
            "url": "https://github.com/headshot2017/gzdoom-sm64/releases/tag/v20221211"
          }
        ]
      },
      "families": [
        {
          "id": "doom",
          "title": "Doom",
          "indexUrl": "https://playable.wtf/families/#family-doom",
          "guideUrl": "https://playable.wtf/guides/doom-quake-browser-versions/",
          "choices": [
            {
              "slug": "wad-commander-v1",
              "label": "Classic Doom in a browser",
              "reason": "Choose owned WADs, shareware or Freedoom, with a documented touch layout.",
              "canonicalUrl": "https://playable.wtf/games/wad-commander-v1/"
            },
            {
              "slug": "chocolate-doom-chocolate-doom",
              "label": "Keep the original DOS behavior",
              "reason": "A native port for compatible classic content, old demos and saves.",
              "canonicalUrl": "https://playable.wtf/games/chocolate-doom-chocolate-doom/"
            },
            {
              "slug": "doom-3-browser",
              "label": "Try the Doom 3 demo",
              "reason": "A desktop browser route into the later game without a retail-data setup.",
              "canonicalUrl": "https://playable.wtf/games/doom-3-browser/"
            },
            {
              "slug": "dhewm-dhewm3",
              "label": "Play owned original Doom 3",
              "reason": "Use original 1.3.1 data in a native port; BFG Edition files do not fit.",
              "canonicalUrl": "https://playable.wtf/games/dhewm-dhewm3/"
            }
          ]
        },
        {
          "id": "mario",
          "title": "Mario platformers",
          "indexUrl": "https://playable.wtf/families/#family-mario",
          "guideUrl": "https://playable.wtf/guides/mario-platformer-versions/",
          "choices": [
            {
              "slug": "coop-deluxe-sm64coopdx",
              "label": "SM64 with friends",
              "reason": "Native online co-op synchronizes enemies and events, with public or private CoopNet rooms.",
              "canonicalUrl": "https://playable.wtf/games/coop-deluxe-sm64coopdx/"
            },
            {
              "slug": "super-mario-galaxy-galaxypad",
              "label": "Galaxy on iPhone or iPad",
              "reason": "Build a personal native app with touch and controller input; bring the supported USA Wii image.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-galaxy-galaxypad/"
            },
            {
              "slug": "super-mario-wonder-recomp",
              "label": "Follow an early Wonder build",
              "reason": "Source-build the Switch 1.0.0 project if you want to explore its experimental early-course progress.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-wonder-recomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/headshot2017/gzdoom-sm64/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "A Doom WAD and your own US Super Mario 64 ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/headshot2017/gzdoom-sm64"
        },
        "setup": {
          "answer": "Follow the release instructions and provide the WAD plus sm64.us.z64.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/headshot2017/gzdoom-sm64"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/headshot2017/gzdoom-sm64"
    },
    {
      "id": "project:headshot2017-sm64-san-andreas",
      "slug": "headshot2017-sm64-san-andreas",
      "title": "GTA: San Andreas × Super Mario 64",
      "project": "sm64-san-andreas",
      "canonicalUrl": "https://playable.wtf/games/headshot2017-sm64-san-andreas/",
      "originals": [
        {
          "id": "grandtheftautosanandreas",
          "name": "Grand Theft Auto: San Andreas",
          "relationship": "associated-with"
        },
        {
          "id": "supermario64",
          "name": "Super Mario 64",
          "relationship": "associated-with"
        }
      ],
      "kind": "Mashup mod",
      "genre": "Adventure",
      "summary": "Mario’s original moves in San Andreas through an ASI plugin.",
      "editorial": {
        "sections": [
          {
            "id": "play",
            "title": "Swap CJ for Mario in San Andreas",
            "kind": "project",
            "paragraphs": [
              "This ASI plugin brings libsm64 into the original PC version of GTA: San Andreas. Press M during play to switch between CJ and Mario. The contrast is the attraction: Mario’s movement code and character rendering are placed inside San Andreas’s environment, letting you approach a familiar world with a different playable character.",
              "It is an integration into an installed game, not a standalone Mario adventure or a conversion of the Definitive Edition. The creator still labels it under development. Start by exploring the character switch in an ordinary session before treating it as a replacement for every scripted mission."
            ],
            "sourceIds": [
              "project",
              "library"
            ]
          },
          {
            "id": "setup",
            "title": "Use the original PC game and its plugin loader",
            "kind": "practical",
            "paragraphs": [
              "Install Silent’s ASI Loader, then extract the mod release into San Andreas’s scripts folder. Place your US Super Mario 64 ROM beside gta_sa.exe and name it sm64.us.z64. Both the ASI plugin route and the ROM path matter; putting the ROM only inside scripts does not follow the documented layout.",
              "For the delisted Steam edition, the maintainer points to a downgrade to version 1.0. That instruction does not apply to the Definitive Edition, which is a different target. Release packages and development artifacts are separate download routes."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "graphics",
            "title": "Recognize the documented shading conflicts",
            "kind": "limitations",
            "paragraphs": [
              "SilentPatchSA is recommended because it fixes Mario appearing flat-shaded outdoors, though the plugin does not require it to start. SkyGFX creates a different known conflict: excessive brightness and incorrectly drawn facial textures. The documented remedy is to disable dualPass in its INI files.",
              "Those are specific compatibility notes for existing mods. Adding this plugin to a heavily modified installation can make it harder to identify the cause of a visual problem, so check the known interactions before changing several graphics mods at once."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "sm64-san-andreas · project documentation",
            "url": "https://github.com/headshot2017/sm64-san-andreas"
          },
          {
            "id": "library",
            "label": "libsm64 · character movement library",
            "url": "https://github.com/libsm64/libsm64"
          }
        ]
      },
      "families": [
        {
          "id": "mario",
          "title": "Mario platformers",
          "indexUrl": "https://playable.wtf/families/#family-mario",
          "guideUrl": "https://playable.wtf/guides/mario-platformer-versions/",
          "choices": [
            {
              "slug": "coop-deluxe-sm64coopdx",
              "label": "SM64 with friends",
              "reason": "Native online co-op synchronizes enemies and events, with public or private CoopNet rooms.",
              "canonicalUrl": "https://playable.wtf/games/coop-deluxe-sm64coopdx/"
            },
            {
              "slug": "super-mario-galaxy-galaxypad",
              "label": "Galaxy on iPhone or iPad",
              "reason": "Build a personal native app with touch and controller input; bring the supported USA Wii image.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-galaxy-galaxypad/"
            },
            {
              "slug": "super-mario-wonder-recomp",
              "label": "Follow an early Wonder build",
              "reason": "Source-build the Switch 1.0.0 project if you want to explore its experimental early-course progress.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-wonder-recomp/"
            }
          ]
        },
        {
          "id": "gta",
          "title": "Grand Theft Auto",
          "indexUrl": "https://playable.wtf/families/#family-gta",
          "guideUrl": "https://playable.wtf/guides/gta-game-versions/",
          "choices": [
            {
              "slug": "gta-iii-re3-web",
              "label": "GTA III in a desktop browser",
              "reason": "WASM Arcade documents re3-based play, keyboard/gamepad input and local save exports; launch includes advertising.",
              "canonicalUrl": "https://playable.wtf/games/gta-iii-re3-web/"
            },
            {
              "slug": "elmasas-lcs-recomp",
              "label": "Liberty City Stories",
              "reason": "A native route for the supported PSP US v1.05 edition, with configurable keyboard, mouse and controller input.",
              "canonicalUrl": "https://playable.wtf/games/elmasas-lcs-recomp/"
            },
            {
              "slug": "koreanseats1-theft4",
              "label": "GTA IV on Apple mobile",
              "reason": "An experimental signed iOS/iPadOS app using the exact Xbox 360 base and TU8, with a save-export workflow.",
              "canonicalUrl": "https://playable.wtf/games/koreanseats1-theft4/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/headshot2017/sm64-san-andreas/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own compatible San Andreas installation and US Super Mario 64 ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/headshot2017/sm64-san-andreas"
        },
        "setup": {
          "answer": "Use the documented ASI loader and place sm64.us.z64 next to gta_sa.exe.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/headshot2017/sm64-san-andreas"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/headshot2017/sm64-san-andreas"
    },
    {
      "id": "project:hedge-dev-unleashedrecomp",
      "slug": "hedge-dev-unleashedrecomp",
      "title": "Sonic Unleashed",
      "project": "Unleashed Recompiled",
      "canonicalUrl": "https://playable.wtf/games/hedge-dev-unleashedrecomp/",
      "originals": [
        {
          "id": "sonicunleashed",
          "name": "Sonic Unleashed",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Platformer",
      "summary": "The Xbox 360 release ported to Windows and Linux.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "Two sides of the original Sonic adventure",
            "kind": "background",
            "paragraphs": [
              "Sonic Unleashed builds its identity around a change at night. The original game contrasts Sonic’s speedy daytime form with a more powerful nighttime transformation. That changing pace is useful context when choosing this port: it brings the Xbox 360 game across, rather than isolating only the fast daytime side of the adventure."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "unleashed-desktop",
            "title": "The Xbox 360 game on Windows and Linux",
            "kind": "project",
            "paragraphs": [
              "Unleashed Recompiled translates the Xbox 360 version of Sonic Unleashed into a native PC application. The project combines a new renderer with settings designed for the game, including high frame rates, ultrawide output and controller-friendly menus. It remains based on the Xbox 360 game; a PlayStation 3 or Wii copy is not the installation source.",
              "Several choices directly affect a playthrough. You can suppress control tutorials and hints, disable the Werehog battle theme, or choose the original Xbox 360 warm color filter. The port recreates achievements locally with its own notifications and menu, but those achievements do not connect to Steam or RetroAchievements."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "required-content",
            "title": "Prepare the game and title update",
            "kind": "practical",
            "paragraphs": [
              "Installation requires your own US or European Xbox 360 game files and the title update. Japanese-region game data is not supported. Adventure Pack DLC is optional; the project recommends it because it also includes higher-quality lighting data for the game. You can return to the installer from the title screen to add it later.",
              "Add Files accepts Xbox 360 containers or images. Add Folder expects the raw files for the particular content requested and does not search a whole directory tree for them. The installer rejects modified files, so install a clean copy before adding mods."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "playing-and-tuning",
            "title": "Controller and frame-rate choices",
            "kind": "practical",
            "paragraphs": [
              "The options menu supports controller navigation and Xbox or PlayStation button prompts. DualShock 4 and DualSense features include context-sensitive lighting and touchpad movement on the world map, although input translation software and Linux can limit those extras. D-pad support is expanded for players who prefer it to the analog stick.",
              "The default limit is 60 frames per second. Higher targets are available, but some optional content may still require returning to 60. Ultrawide play keeps cutscenes at their original framing by default; unlocking them can expose presentation problems outside the intended camera view."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "hardware-and-mods",
            "title": "Plan for the PC requirements",
            "kind": "limitations",
            "paragraphs": [
              "The minimum requirements include an AVX-capable CPU, 8 GB of memory and a GPU supporting Direct3D 12 Shader Model 6 or Vulkan 1.2. On Steam Deck, perform installation in Desktop Mode so the file picker is available, and allow extra storage for extracted files.",
              "Hedge Mod Manager-compatible content is supported, but executable and shader replacements are not. Mods made for the unpatched Xbox 360 release may need updates. The title’s mod support is therefore useful without making every existing console modification compatible."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Unleashed Recompiled · project documentation",
            "url": "https://github.com/hedge-dev/UnleashedRecomp"
          },
          {
            "id": "original",
            "label": "SEGA · Sonic Unleashed on Xbox",
            "url": "https://www.xbox.com/en-US/games/store/sonic-unleashed/c098fgnmts8f"
          }
        ]
      },
      "families": [
        {
          "id": "sonic",
          "title": "Sonic games",
          "indexUrl": "https://playable.wtf/families/#family-sonic",
          "guideUrl": "https://playable.wtf/guides/sonic-game-versions/",
          "choices": [
            {
              "slug": "sonic-3-air-web",
              "label": "Sonic 3 in a web app",
              "reason": "The official A.I.R. web beta imports a compatible ROM and offers save-file exports.",
              "canonicalUrl": "https://playable.wtf/games/sonic-3-air-web/"
            },
            {
              "slug": "hedge-dev-unleashedrecomp",
              "label": "Unleashed on a computer",
              "reason": "Use the native Windows/Linux installer with your supported Xbox 360 game and title update.",
              "canonicalUrl": "https://playable.wtf/games/hedge-dev-unleashedrecomp/"
            },
            {
              "slug": "sansnope-unleashedrecomp-android",
              "label": "Unleashed with Android touch",
              "reason": "This experimental fork adds editable touch controls and its own in-app file importer.",
              "canonicalUrl": "https://playable.wtf/games/sansnope-unleashedrecomp-android/"
            },
            {
              "slug": "rsdkmodding-sonic-mania-decompilation",
              "label": "Mania and native mods",
              "reason": "Use supported Mania or Plus assets with the RSDK project’s built-in mod loader.",
              "canonicalUrl": "https://playable.wtf/games/rsdkmodding-sonic-mania-decompilation/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/hedge-dev/UnleashedRecomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Xbox 360 Sonic Unleashed game files.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/hedge-dev/UnleashedRecomp"
        },
        "setup": {
          "answer": "Read the platform requirements and use the release installer with your dumped game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/hedge-dev/UnleashedRecomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/hedge-dev/UnleashedRecomp"
    },
    {
      "id": "project:hedgewars-webwars",
      "slug": "hedgewars-webwars",
      "title": "Hedgewars",
      "project": "WebWars",
      "canonicalUrl": "https://playable.wtf/games/hedgewars-webwars/",
      "originals": [
        {
          "id": "hedgewars",
          "name": "Hedgewars",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Strategy",
      "summary": "Hedgewars compiled through pas2c and Emscripten; public host currently fails TLS.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Terrain is part of the fight",
            "kind": "background",
            "paragraphs": [
              "Hedgewars is turn-based artillery built around teams of cartoon hedgehogs. Players move into position and choose from an exaggerated arsenal, with explosions reshaping the landscape around them. A useful shot can change the ground as well as damage an opponent, so where a hedgehog stands matters alongside aim and weapon choice.",
              "The original desktop project includes local and network play and a wider collection of modes and content. WebWars is a separate effort to run that engine through a browser; its documented browser features need to be judged on their own."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "browser-port",
            "title": "The Hedgewars engine with a web front end",
            "kind": "project",
            "paragraphs": [
              "WebWars compiles the actual Hedgewars engine to WebAssembly and pairs it with a web interface. The creator documents hotseat play with two teams sharing a keyboard, plus online rooms in which each player adds a team and the room chief starts the match. Theme, game style, scheme and weapon-set choices are exposed before playing.",
              "Its input instructions use the arrow keys for movement, right-click for the weapon menu and Space to fire. That desktop-oriented scheme is useful to know before expecting a touch-first game on a phone."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "local-build",
            "title": "A source build includes assets and servers",
            "kind": "practical",
            "paragraphs": [
              "The hosted play endpoint currently has a certificate problem. To run WebWars locally, use the source-build instructions, which target Linux and were tested on Ubuntu 22.04.",
              "Building means more than compiling the web front end. It generates an asset-data pack that is absent from the repository, and online sessions also require the WebSocket gateway and Hedgewars game server. Serving the checked-in JavaScript or WebAssembly files alone is not a complete installation."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "session-limits",
            "title": "Starting over reloads the page",
            "kind": "limitations",
            "paragraphs": [
              "The browser engine does not currently support teardown after a game. The interface resets a session by reloading the page, a practical difference from moving continuously between matches in a native client. Treat a locally built session as a browser-port workflow, with its own lifecycle and server setup, rather than assuming all desktop behavior carries across unchanged."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "WebWars · project documentation",
            "url": "https://raw.githubusercontent.com/apmlabs/webwars/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "Hedgewars · official game introduction",
            "url": "https://www.hedgewars.org/about.html"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "source-build",
        "status": "experimental",
        "route": {
          "kind": "project",
          "url": "https://github.com/apmlabs/webwars"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerOnline": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The project uses Hedgewars game assets; its documented build packages them for the web. No separately purchased game copy is listed as a prerequisite.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/apmlabs/webwars/HEAD/README.md"
        },
        "setup": {
          "answer": "Use the repository’s Linux/Emscripten build instructions. The public webwars.link route currently fails certificate validation and is not offered as a Play shortcut.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/apmlabs/webwars/HEAD/README.md"
        },
        "devices": {
          "answer": "The creator’s February update reports no mobile controls and a Safari compatibility issue. These limitations have not been independently retested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.hedgewars.org/node/9500"
        },
        "controls": {
          "answer": "The creator documents arrows to move, right-click for weapons, Space to fire and Enter to jump.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.hedgewars.org/node/9500"
        },
        "multiplayer": {
          "answer": "The source documents shared-keyboard hotseat and an experimental WebSocket multiplayer lobby. The creator says PC cross-play was not fully tested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.hedgewars.org/node/9500"
        },
        "issues": {
          "answer": "The public browser host failed TLS hostname validation on October 15. No security warning was bypassed. Source availability is not a verified live browser session.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/apmlabs/webwars/HEAD/README.md"
        }
      },
      "credits": [
        {
          "name": "apmlabs / idealist",
          "role": "port-author",
          "url": "https://github.com/apmlabs/webwars",
          "evidence": "https://github.com/apmlabs/webwars",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/apmlabs/webwars"
    },
    {
      "id": "project:himdo-fable-2-recomp",
      "slug": "himdo-fable-2-recomp",
      "title": "Fable II",
      "project": "Fable 2 Recompiled",
      "canonicalUrl": "https://playable.wtf/games/himdo-fable-2-recomp/",
      "originals": [
        {
          "id": "fableii",
          "name": "Fable II",
          "relationship": "port-of"
        }
      ],
      "kind": "Static recompilation",
      "genre": "RPG",
      "summary": "A Windows recompilation targeting supported Fable II Game of the Year editions.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A hero’s life beyond the next fight",
            "kind": "background",
            "paragraphs": [
              "Fable II follows a hero through Albion, with fighting, guns and magic sitting alongside relationships and consequential choices. Your dog accompanies exploration, and the original game lets you make friends, build a family and meet the people of its towns and countryside. Its appeal is shaping a life and reputation as well as completing an adventure.",
              "That is the original game’s premise. This Windows project is a separate fan implementation of a supported Xbox 360 edition, not a new official PC release."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "scope",
            "title": "A completed story is not the same as complete testing",
            "kind": "project",
            "paragraphs": [
              "The creator reports finishing the story with this recompilation but explicitly stops short of calling the project fully complete. Supported inputs are the specified GOTY editions, with executable-revision checking during setup. The safest starting point is the documented USA/Europe or German GOTY input, rather than assuming every disc or download edition matches.",
              "The launcher can extract the required executable and data from an ISO and configure presentation options. It checks the executable revision before continuing the full import. The owned game remains necessary; the project supplies the host software."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "keyboard-camera",
            "title": "Keyboard and mouse translate to controller actions",
            "kind": "practical",
            "paragraphs": [
              "WASD drives the movement stick, and the mouse drives the camera stick. Mouse movement therefore acts as a controller-style deflection rather than promising unrestricted PC-shooter aiming. Bindings and sensitivity can be adjusted in the project configuration.",
              "The original on-screen prompts have not all been changed to keyboard labels. Learn how your chosen keys map to the displayed controller buttons before a complicated encounter. A real controller can continue to work alongside the keyboard mapping."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "save-and-display",
            "title": "Protect the campaign when changing builds",
            "kind": "practical",
            "paragraphs": [
              "Saves are kept in a saves folder beside the build, even when the game assets are stored elsewhere. Back up that folder before replacing or moving an installation. The launcher preserves its own preferences separately from the runtime configuration.",
              "Resolution, filtering and frame-rate controls are available in the launcher, while several rendering and platform goals remain unfinished. In particular, Linux and Vulkan appear as planned work. Choose settings within what the current Windows build actually offers rather than treating the development checklist as a finished feature list."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Fable 2 Recompiled · project documentation",
            "url": "https://raw.githubusercontent.com/himdo/Fable-2-Recomp/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "Xbox · Fable II game description",
            "url": "https://www.xbox.com/en-US/games/store/fable-ii/c2wkjj9f5936"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "work-in-progress",
        "route": {
          "kind": "download",
          "url": "https://github.com/himdo/Fable-2-Recomp/releases/tag/1.5.0"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "An owned supported Fable II GOTY USA/Europe or German GOTY disc image. Setup extracts default.xex and data/; other XEX revisions are rejected.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/himdo/Fable-2-Recomp/HEAD/README.md"
        },
        "setup": {
          "answer": "Extract the Windows release, use the launcher’s ISO import for a supported disc, or place default.xex and data/ in its game-data directory.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/himdo/Fable-2-Recomp/HEAD/README.md"
        },
        "devices": {
          "answer": "The checked release provides a Windows package.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/himdo/Fable-2-Recomp/HEAD/README.md"
        },
        "controls": {
          "answer": "Gamepad input and keyboard/mouse-to-gamepad mappings are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/himdo/Fable-2-Recomp/HEAD/README.md"
        },
        "issues": {
          "answer": "The creator reports completing the story but explicitly does not consider the project fully complete or 100% tested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/himdo/Fable-2-Recomp/HEAD/README.md"
        },
        "saves": {
          "answer": "Saves live under the build directory’s saves folder; the README recommends backing it up between builds.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/himdo/Fable-2-Recomp/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/himdo/Fable-2-Recomp"
    },
    {
      "id": "project:ihhub-fheroes2",
      "slug": "ihhub-fheroes2",
      "title": "Heroes of Might and Magic II",
      "project": "fheroes2",
      "canonicalUrl": "https://playable.wtf/games/ihhub-fheroes2/",
      "originals": [
        {
          "id": "heroesofmightandmagicii",
          "name": "Heroes of Might and Magic II",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine recreation",
      "genre": "Strategy",
      "summary": "Heroes II recreated with modern resolutions, interface improvements and revised AI.",
      "editorial": {
        "sections": [
          {
            "id": "strategy",
            "title": "Clearer decisions in a familiar strategy game",
            "kind": "project",
            "paragraphs": [
              "fheroes2 recreates Heroes of Might and Magic II while revising its interface, AI and display support. Its improvements concentrate on the decisions you make while moving heroes, arranging armies and fighting turn-based battles. Creature abilities, spell duration and damage information become easier to inspect, helping explain a tactical choice before committing to it.",
              "Adventure-map improvements include visited-object information and clearer travel-day indicators. In towns, income information and recruitment tools reduce unnecessary navigation. The result is a version aimed at making the existing strategy easier to read, rather than supplying a different Heroes campaign under the same name."
            ],
            "sourceIds": [
              "project",
              "improvements"
            ]
          },
          {
            "id": "battle-options",
            "title": "Choose how much of each battle to control",
            "kind": "project",
            "paragraphs": [
              "The engine offers instant battles, a route to restart them manually, and an option to finish a manual battle automatically. Army-splitting shortcuts and movement-area highlights make it easier to organize stacks and judge positions. These conveniences are useful when a routine encounter does not need the same attention as a close fight.",
              "Hotkeys can be reassigned, and the project includes interface scaling and translation improvements. Language selection does not replace text baked into original assets or recorded voices, so the imported edition still affects parts of the presentation."
            ],
            "sourceIds": [
              "improvements"
            ]
          },
          {
            "id": "starting",
            "title": "Try the demo or import your own full game",
            "kind": "practical",
            "paragraphs": [
              "The installation guide supports your own Heroes II resources or the free English demo through the provided download script. The Windows installer can perform the resource step, and a ZIP installation supplies separate extraction and demo scripts. Manually imported editions use ANIM, DATA, MAPS and MUSIC where those directories exist.",
              "Choose a package for the actual platform: Windows, macOS, Linux and Android have documented routes, while console ports have separate requirements. The engine download alone does not contain the original game resources. A demo is a way to try the supported demo content; it does not unlock the full game’s maps or campaign assets."
            ],
            "sourceIds": [
              "install"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "fheroes2 · engine overview",
            "url": "https://github.com/ihhub/fheroes2"
          },
          {
            "id": "improvements",
            "label": "fheroes2 · gameplay and interface improvements",
            "url": "https://github.com/ihhub/fheroes2/blob/master/docs/GAME_IMPROVEMENTS.md"
          },
          {
            "id": "install",
            "label": "fheroes2 · installation and original resources",
            "url": "https://github.com/ihhub/fheroes2/blob/master/docs/INSTALL.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/ihhub/fheroes2/releases/tag/1.1.17"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Use your own Heroes II data, or the free English demo described in the installation guide. Manual imports use ANIM, DATA, MAPS and MUSIC directories where supplied by that edition.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/ihhub/fheroes2/HEAD/docs/INSTALL.md"
        },
        "setup": {
          "answer": "Choose the package for your platform, install it, and import the original resources or use the documented demo-data option.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/ihhub/fheroes2/HEAD/docs/INSTALL.md"
        },
        "devices": {
          "answer": "Windows, macOS, Linux and Android packages are documented; console packages have separate setup requirements.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/ihhub/fheroes2/HEAD/docs/INSTALL.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/ihhub/fheroes2"
    },
    {
      "id": "project:isledecomp-isle-portable",
      "slug": "isledecomp-isle-portable",
      "title": "LEGO Island",
      "project": "isle-portable",
      "canonicalUrl": "https://playable.wtf/games/isledecomp-isle-portable/",
      "originals": [
        {
          "id": "legoisland",
          "name": "LEGO Island",
          "relationship": "associated-with"
        }
      ],
      "kind": "Source port",
      "genre": "Adventure",
      "summary": "LEGO Island’s decompilation adapted for modern platforms.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "The original island as a place to play",
            "kind": "background",
            "paragraphs": [
              "LEGO Island combines first-person exploration with building vehicles and choosing how to spend time around the island. It has a story, but it is also designed as a place to experiment. Playing as Pepper Roni and building a police helicopter can lead into the Brickster’s escape, giving the free-roaming toy-like setting a more directed adventure.",
              "That balance is the original game’s appeal: constructing something and discovering what it lets you do can be as important as following the story. The portable project aims to preserve that existing game, rather than offering a new island or a sequel."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "original-experience",
            "title": "The same island on more systems",
            "kind": "project",
            "paragraphs": [
              "LEGO Island, portable starts from the decompilation of the English 1.1 release. Its goal is to preserve the original game while removing its dependence on old Windows components. That is an important distinction from a remake: the project prioritizes compatibility rather than changing the core gameplay or rewriting systems merely to modernize them.",
              "It supports light modding through extensions. Those additions sit alongside a preservation-focused base, so choose an extension deliberately rather than assuming a new feature is part of every installation. The native project and its web target also have different launch and file workflows."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "guided-install",
            "title": "Use the guide for your exact platform",
            "kind": "practical",
            "paragraphs": [
              "An existing copy of LEGO Island is required. The project’s guided installer walks through supported platforms and uses the continuous builds published from its main development branch. Follow that guide for the required game files and package instead of expecting the application download to contain the island’s data.",
              "Desktop targets include Windows, Intel and Apple silicon macOS, and x86-64 and ARM64 Linux. The project also lists mobile, console and web targets, but their installation paths are separate. A supported architecture in the table does not mean that another platform’s binary can be copied over and launched."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "portable-engine",
            "title": "What changes beneath the game",
            "kind": "project",
            "paragraphs": [
              "The port replaces Windows-only systems with cross-platform equivalents for input, audio, configuration and rendering. Its renderer choices include modern SDL3 GPU backends and older OpenGL or software routes. These changes explain how an old Windows title can run on a different operating system without making the game a different adventure.",
              "For a player, the useful outcome is access through a local application appropriate to the device. For contributors, the same project offers source builds and extension work. The source-build instructions use CMake; ordinary users should begin with the guided installer."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "continuous-builds",
            "title": "Allow for changes between builds",
            "kind": "limitations",
            "paragraphs": [
              "The provided builds track current development rather than a frozen final release. The maintainers explicitly warn that occasional regressions are possible. If an update causes a problem, report the exact platform and build through the project’s issue route. Keep your original game copy separate from the downloaded program so you can follow a revised installation guide without losing the source data."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "isle-portable · project documentation",
            "url": "https://github.com/isledecomp/isle-portable"
          },
          {
            "id": "original",
            "label": "LEGO · Bits N’ Bricks, LEGO Island creator retrospective",
            "url": "https://www.lego.com/cdn/cs/set/assets/bltd399c039fb565168/bits_n_bricks_s01e04_lego_island_feature_and_transcript.pdf"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/isledecomp/isle-portable/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "An existing copy of LEGO Island.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/isledecomp/isle-portable"
        },
        "setup": {
          "answer": "Use the repository’s linked guided installer for your platform and supply your original data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/isledecomp/isle-portable"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/isledecomp/isle-portable"
    },
    {
      "id": "project:jacoders-openjk",
      "slug": "jacoders-openjk",
      "title": "Star Wars Jedi Knight: Jedi Academy / Jedi Outcast",
      "project": "OpenJK",
      "canonicalUrl": "https://playable.wtf/games/jacoders-openjk/",
      "originals": [
        {
          "id": "starwarsjediknightjediacademy",
          "name": "Star Wars Jedi Knight: Jedi Academy",
          "relationship": "port-of"
        },
        {
          "id": "starwarsjediknightiijedioutcast",
          "name": "Star Wars Jedi Knight II: Jedi Outcast",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "Action",
      "summary": "Maintained Jedi Academy and Jedi Outcast engines with distinct support limits.",
      "editorial": {
        "sections": [
          {
            "id": "the-games",
            "title": "Two different Jedi journeys",
            "kind": "background",
            "paragraphs": [
              "Jedi Academy puts you in the role of a student learning the Force, with a customizable character and lightsaber and a choice of missions. Jedi Outcast follows Kyle Katarn, combining weapons, Force powers and lightsaber combat in a separate campaign. Their related technology does not make them one combined story or one interchangeable data set.",
              "For a player choosing between them, Academy’s character and saber choices are part of the original game’s appeal; Outcast’s established protagonist and campaign are its own starting point. OpenJK maintains their engines rather than creating a new sequel."
            ],
            "sourceIds": [
              "academy",
              "outcast",
              "project"
            ]
          },
          {
            "id": "support",
            "title": "Academy and Outcast have different support levels",
            "kind": "project",
            "paragraphs": [
              "The project labels Jedi Academy single-player and multiplayer stable. Jedi Outcast single-player works but needs attention, and Outcast multiplayer is not supported here. This is the most important distinction before choosing a download or planning a session with friends.",
              "OpenJK aims to improve stability, performance and platform support while maintaining compatibility with existing games and mods. It explicitly avoids major feature additions and core gameplay rebalancing. Choose it as an engine-maintenance project, not as a new combat overhaul."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installation",
            "title": "Install into the appropriate game directory",
            "kind": "practical",
            "paragraphs": [
              "The main player guide starts with an owned Jedi Academy installation and places the downloaded OpenJK files inside GameData. The executable differs by platform. Linux can use the Windows game-data installation, while the Mac App Store edition has a separate documented app-bundle layout.",
              "Outcast uses its own data and the separate OpenJO build. Do not follow the Academy folder instructions with Outcast assets and expect the engine to identify them as the same game. Check the chosen build’s guidance before moving either installation."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "keeping-progress",
            "title": "Keep user files when changing the application",
            "kind": "practical",
            "paragraphs": [
              "For the documented macOS setup, saves, configuration and logs live in Application Support/OpenJK rather than inside the installed application. Preserve that user directory when replacing a build. If you add mods, keep their intended game and engine requirements in view: OpenJK’s compatibility goal does not erase the distinction between Academy, Outcast and their respective multiplayer implementations."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenJK · project documentation",
            "url": "https://raw.githubusercontent.com/JACoders/OpenJK/HEAD/README.md"
          },
          {
            "id": "academy",
            "label": "Jedi Academy · publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=6020&l=english"
          },
          {
            "id": "outcast",
            "label": "Jedi Outcast · publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=6030&l=english"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/JACoders/OpenJK/releases/tag/latest"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "An owned Jedi Academy installation supplies GameData for OpenJK. Jedi Outcast requires its own game data and the separate OpenJO build; the exact Outcast file set was not established in the reviewed player instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JACoders/OpenJK/HEAD/README.md"
        },
        "setup": {
          "answer": "Choose the OpenJK build for Jedi Academy or the separate OpenJO build for Outcast, and follow the original-data installation instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JACoders/OpenJK/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows, Linux and macOS builds are published, including Apple Silicon.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JACoders/OpenJK/HEAD/README.md"
        },
        "multiplayer": {
          "answer": "Jedi Academy multiplayer is described as stable. Jedi Outcast multiplayer is not supported by OpenJK.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JACoders/OpenJK/HEAD/README.md"
        },
        "issues": {
          "answer": "Jedi Outcast single-player works but needs attention, according to the project’s support table.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/JACoders/OpenJK/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/JACoders/OpenJK"
    },
    {
      "id": "project:jagged-alliance-2-web",
      "slug": "jagged-alliance-2-web",
      "title": "Jagged Alliance 2",
      "project": "Virtastic JA2-Web",
      "canonicalUrl": "https://playable.wtf/games/jagged-alliance-2-web/",
      "originals": [
        {
          "id": "jaggedalliance2",
          "name": "Jagged Alliance 2",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Strategy",
      "summary": "JA2 Gold’s tactical campaign through Stracciatella, using your own Data folder.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A mercenary team and a country to liberate",
            "kind": "background",
            "paragraphs": [
              "Jagged Alliance 2 combines squad tactics with the management of a mercenary campaign. You recruit characters to help liberate Arulco, then take those choices into tactical encounters. The strategic layer makes a battle part of a longer operation: who you hire and how you use the team matter beyond a single exchange of fire.",
              "The Gold product includes additional material, but an engine accepting files from that installation does not automatically support every included expansion. The browser build defines its scope separately."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "Stracciatella running on your computer",
            "kind": "project",
            "paragraphs": [
              "ja2-web uses JA2 Stracciatella 0.22.1, including tactical combat, the strategic map, laptop and sound. The engine runs in the browser on your own machine. Its tactical view can show more of a sector at the browser's resolution, while fixed-art screens retain their original presentation. Adding ?res=classic to the launch address forces the classic 640×480 view throughout."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Pick the Data folder from JA2 Gold",
            "kind": "practical",
            "paragraphs": [
              "Open it in desktop Chrome, Chromium, Edge or Brave and select your own Gold installation's Data folder. On Windows, copy that folder out of Program Files to Documents or Desktop if the browser refuses access. The folder is read locally rather than uploaded.",
              "The supported game is vanilla JA2. Wildfire data may be detected, but the documentation says it still loads as vanilla; expansion support should not be inferred from detection alone. Firefox, Safari and mobile are outside this build's supported browser route."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "saves",
            "title": "Progress is saved beside your selected data",
            "kind": "practical",
            "paragraphs": [
              "The build writes saves into a ja2-web-saves folder inside the directory you selected. These are real files you can back up, and they survive clearing browser data. Configuration and logs use browser storage instead. When moving machines, retain the saves folder as well as the game assets; copying only browser settings would miss the campaign."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Jagged Alliance 2 Gold · publisher description",
            "url": "https://store.steampowered.com/app/1620/"
          },
          {
            "id": "project",
            "label": "ja2-web · player setup and browser scope",
            "url": "https://github.com/Virtastic/ja2-web"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://ja2.virtastic.app/"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Choose the Data folder from your own Jagged Alliance 2 Gold installation. Wildfire and other expansions are not supported as expansions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/ja2-web/blob/main/README.md"
        },
        "setup": {
          "answer": "Choose Bring your own JA2 and select its Data folder. The local route reads files from disk. Cloud Locker is a separate optional sign-in and upload route.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://ja2.virtastic.app/"
        },
        "devices": {
          "answer": "Use desktop Chrome, Chromium, Edge or Brave. Firefox, Safari, mobile and touch are outside the supported browser path.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/ja2-web/blob/main/README.md"
        },
        "issues": {
          "answer": "On Windows, copy Data outside Program Files before using the folder picker. Use ?res=classic if you want 640×480 on every screen.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/ja2-web/blob/main/README.md"
        },
        "scope": {
          "answer": "Vanilla JA2 Gold through the Stracciatella engine: tactical combat, strategic map, laptop and sound. Wildfire data does not turn this into Wildfire support.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/ja2-web/blob/main/README.md"
        },
        "saves": {
          "answer": "The local-folder route writes real saves in ja2-web-saves inside your selected folder. Configuration and logs use browser IndexedDB.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/ja2-web/blob/main/README.md"
        }
      },
      "credits": [
        {
          "name": "Virtastic",
          "role": "port-author",
          "url": "https://github.com/Virtastic/ja2-web",
          "evidence": "https://github.com/Virtastic/ja2-web",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/Virtastic/ja2-web"
    },
    {
      "id": "project:jedi-academy-browser",
      "slug": "jedi-academy-browser",
      "title": "Star Wars Jedi Knight: Jedi Academy",
      "project": "OpenJK Web Client",
      "canonicalUrl": "https://playable.wtf/games/jedi-academy-browser/",
      "originals": [
        {
          "id": "starwarsjediknightjediacademy",
          "name": "Star Wars Jedi Knight: Jedi Academy",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser source port",
      "genre": "Action",
      "summary": "Single player and multiplayer with locally imported Jedi Academy assets.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Build a Jedi and choose a path",
            "kind": "background",
            "paragraphs": [
              "Jedi Academy puts you in the role of a new student learning the Force under Luke Skywalker. Character customization, lightsaber construction and a choice of missions give the adventure more room for personal preference than a fixed sequence of identical firefights. Progression introduces different saber arrangements, alongside weapons, vehicles and Force powers.",
              "That is the original game's design. Its retail multiplayer has several modes, including Siege and Power Duel; the exact public server exposed by this browser client is free-for-all."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "OpenJK in two browser runtimes",
            "kind": "project",
            "paragraphs": [
              "LK's client uses OpenJK through WebAssembly, with separate builds for single player and multiplayer. OpenJK itself aims to maintain the original games and improve stability and platform support without rebalancing their core gameplay. The browser wrapper adapts how you load and start that engine.",
              "Choose single player when you want the adventure and multiplayer when you want the hosted FFA server. The distinction is more than a menu filter: the site loads a different runtime for each path. This page covers the Jedi Academy client, not every game or modification supported by the wider OpenJK project."
            ],
            "sourceIds": [
              "project",
              "engine"
            ]
          },
          {
            "id": "assets",
            "title": "Import the complete base folder archives",
            "kind": "practical",
            "paragraphs": [
              "Select all .pk3 files from GameData/base in your own Jedi Academy installation. The host stores them on the current device and reuses them on later visits; they are loaded into the runtime when you start the game. Selecting the full set avoids treating a single archive as a complete installation.",
              "The site does not distribute those game assets. Keep the original installation available if you later use a different device or browser profile. The convenience here is reusing local files in a web client, rather than obtaining the commercial game from the launcher."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "LucasArts · Jedi Academy description",
            "url": "https://store.steampowered.com/api/appdetails?appids=6020&l=english"
          },
          {
            "id": "project",
            "label": "LK · OpenJK Web Client",
            "url": "https://jk.q3js.com/"
          },
          {
            "id": "engine",
            "label": "OpenJK · project goals",
            "url": "https://raw.githubusercontent.com/JACoders/OpenJK/master/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://jk.q3js.com"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Select all .pk3 files from GameData/base in your own Jedi Academy installation. The host keeps them locally on that device and reuses them across visits.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://jk.q3js.com"
        },
        "setup": {
          "answer": "Import the .pk3 files once, then select the single-player or multiplayer runtime.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://jk.q3js.com"
        },
        "multiplayer": {
          "answer": "A public FFA server is documented; single player uses a separate build.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://jk.q3js.com"
        },
        "scope": {
          "answer": "Single-player and multiplayer run in separate WebAssembly builds. Multiplayer offers the host’s public FFA server.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://jk.q3js.com"
        }
      },
      "credits": [],
      "sourceUrl": "https://jk.q3js.com"
    },
    {
      "id": "project:jedi-outcast-web",
      "slug": "jedi-outcast-web",
      "title": "Star Wars Jedi Knight II: Jedi Outcast",
      "project": "Virtastic JK2-Web",
      "canonicalUrl": "https://playable.wtf/games/jedi-outcast-web/",
      "originals": [
        {
          "id": "starwarsjediknightiijedioutcast",
          "name": "Star Wars Jedi Knight II: Jedi Outcast",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Action adventure",
      "summary": "Play the free Kejim Post demo, or bring your own files for Jedi Outcast’s campaign.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Kyle Katarn’s return to the Force",
            "kind": "background",
            "paragraphs": [
              "Jedi Outcast follows Kyle Katarn, an agent of the New Republic, through a Star Wars action adventure. The original game combines conventional weapons with a lightsaber and Force powers. Its appeal is that range of approaches to an encounter: the equipment and abilities give combat a different character from a shooter built entirely around firearms.",
              "The commercial release also includes multiplayer, but that is a separate part of the original game. This browser project's scope is the single-player adventure."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "A conservative port of Raven’s single-player code",
            "kind": "project",
            "paragraphs": [
              "Virtastic's jk2-web compiles Raven's source for WebAssembly and runs on your computer. The maintainers report the campaign working end to end, including skeletal characters, the saber and Force abilities. They keep their browser adaptations separate from the original source and do not base this port on OpenJK.",
              "There are two starting routes: the free official Kejim Post demo mission, or retail data from an owned installation. The demo is a useful way to check the engine before locating files for the full campaign."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Select the retail base files",
            "kind": "practical",
            "paragraphs": [
              "For the retail route, choose assets0.pk3, assets1.pk3, assets2.pk3 and assets5.pk3 from GameData/base. The browser reads them from disk. On Windows, copy GameData outside Program Files first if protected-folder access prevents selection.",
              "Use desktop Chrome, Chromium, Edge or Brave. The folder-picker route is not supported in Firefox or Safari, and mobile is outside the port's scope. The setup is for a keyboard-and-mouse desktop session rather than a touch adaptation."
            ],
            "sourceIds": [
              "project",
              "launcher"
            ]
          },
          {
            "id": "progress",
            "title": "The data folder and browser saves are separate",
            "kind": "practical",
            "paragraphs": [
              "Saves and settings persist in browser storage independently of the game data you selected. Keeping the PK3 archives therefore retains the assets needed to launch, but does not by itself back up a browser playthrough. The multiplayer source is not built, so owning the retail files does not enable online matches in this version."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "LucasArts · Jedi Knight II: Jedi Outcast",
            "url": "https://store.steampowered.com/app/6030/"
          },
          {
            "id": "project",
            "label": "jk2-web · single-player scope and setup",
            "url": "https://github.com/Virtastic/jk2-web"
          },
          {
            "id": "launcher",
            "label": "Virtastic · Jedi Outcast launcher",
            "url": "https://jk2.virtastic.app/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://jk2.virtastic.app/"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerOnline": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The official Kejim Post demo needs no owned copy. For the retail campaign, select assets0.pk3, assets1.pk3, assets2.pk3 and assets5.pk3 from your own GameData/base folder.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/jk2-web/blob/main/README.md"
        },
        "setup": {
          "answer": "Choose Start the demo or Choose .pk3 files. Retail archives are read locally. On Windows, copy GameData outside Program Files if folder access is blocked.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://jk2.virtastic.app/"
        },
        "devices": {
          "answer": "Desktop Chrome, Chromium, Edge or Brave is the documented path. Safari and Firefox do not support the folder access path; mobile is out of scope.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/jk2-web/blob/main/README.md"
        },
        "multiplayer": {
          "answer": "Single-player only. The multiplayer sources are present upstream but are not built into this browser port.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/jk2-web/blob/main/README.md"
        },
        "scope": {
          "answer": "The demo is the official Kejim Post mission. The creator reports an end-to-end retail campaign with your own files.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/jk2-web/blob/main/README.md"
        },
        "saves": {
          "answer": "Saves and settings persist in browser storage through IDBFS, independently of which data route you used.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/jk2-web/blob/main/README.md"
        }
      },
      "credits": [
        {
          "name": "Virtastic",
          "role": "port-author",
          "url": "https://github.com/Virtastic/jk2-web",
          "evidence": "https://github.com/Virtastic/jk2-web",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/Virtastic/jk2-web"
    },
    {
      "id": "project:k4zmu2a-spacecadetpinball",
      "slug": "k4zmu2a-spacecadetpinball",
      "title": "3D Pinball: Space Cadet",
      "project": "SpaceCadetPinball",
      "canonicalUrl": "https://playable.wtf/games/k4zmu2a-spacecadetpinball/",
      "originals": [
        {
          "id": "3dpinballspacecadet",
          "name": "3D Pinball: Space Cadet",
          "relationship": "associated-with"
        }
      ],
      "kind": "Reverse-engineered port",
      "genre": "Arcade",
      "summary": "The Windows pinball classic, rebuilt from reverse engineering.",
      "editorial": {
        "sections": [
          {
            "id": "which-table",
            "title": "The Space Cadet table from Windows",
            "kind": "project",
            "paragraphs": [
              "SpaceCadetPinball reconstructs 3D Pinball for Windows – Space Cadet, the game bundled with Windows, as a modern desktop program. The work uses the Windows XP executable and the 32-bit Full Tilt! Pinball version as reverse-engineering references. It is a dedicated recreation of Space Cadet rather than a general pinball-table player.",
              "That scope matters when choosing data files. The project accepts resources from the Windows and Full Tilt versions, but additional Full Tilt features remain on its plans list. The other Full Tilt tables, Dragon and Pirate, are possibilities rather than included games."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "presentation",
            "title": "A resizable desktop version",
            "kind": "project",
            "paragraphs": [
              "The completed improvements listed by the project include a resizable window, scaled graphics and a loader for higher-resolution sprites from CADET.DAT. Its cross-platform interface and audio use SDL2, SDL2_mixer and ImGui. You can therefore choose a current desktop build without relying on the old Windows application environment.",
              "This entry covers the upstream Windows, Linux and macOS project. The README separately credits community ports for browsers, handhelds, consoles and other devices. Those forks have their own packaging and setup; support for a device in that list should not be read as part of the upstream desktop executable."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "original-resources",
            "title": "The executable needs the original resources",
            "kind": "practical",
            "paragraphs": [
              "Place the compiled program in a folder containing your original game resources. They are not bundled in the source project. Preserve the resource filenames and folder contents when moving an installation; downloading an executable alone is not enough to supply the table’s artwork and sound.",
              "Linux users can use a distribution package or the linked Flatpak where available, which can simplify dependency management. Manual builds use CMake and SDL2 libraries. macOS build instructions distinguish Intel from Apple silicon and include a script that creates an application disk image."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "scope-limits",
            "title": "Choose it for this table",
            "kind": "limitations",
            "paragraphs": [
              "The project’s roadmap still separates completed desktop portability from future localization, Full Tilt-specific features and a possible data editor. Choose SpaceCadetPinball because you want the Space Cadet experience with modern window handling, rather than expecting a collection of tables or a finished table-authoring suite."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "SpaceCadetPinball · project documentation",
            "url": "https://github.com/k4zmu2a/SpaceCadetPinball"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/k4zmu2a/SpaceCadetPinball/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Original Space Cadet resources from a supported Windows or Full Tilt version.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/k4zmu2a/SpaceCadetPinball"
        },
        "setup": {
          "answer": "Place the application beside the original resource files as documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/k4zmu2a/SpaceCadetPinball"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/k4zmu2a/SpaceCadetPinball"
    },
    {
      "id": "project:klorfmorf-goemon64recomp",
      "slug": "klorfmorf-goemon64recomp",
      "title": "Mystical Ninja Starring Goemon",
      "project": "Goemon 64: Recompiled",
      "canonicalUrl": "https://playable.wtf/games/klorfmorf-goemon64recomp/",
      "originals": [
        {
          "id": "mysticalninjastarringgoemon",
          "name": "Mystical Ninja Starring Goemon",
          "relationship": "port-of"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Action adventure",
      "summary": "Goemon’s N64 adventure with native rendering, remappable input and modern display options.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "The first N64 Goemon adventure, specifically",
            "kind": "project",
            "paragraphs": [
              "Goemon 64: Recompiled brings Mystical Ninja Starring Goemon to native systems through N64Recomp and RT64. The supported game is the North American Nintendo 64 release. Goemon’s Great Adventure is a future goal, so this download is not a collection of both adventures.",
              "The launcher reads assets from your own supported ROM. It can convert accepted ROM byte-order formats automatically, but format conversion does not add support for another region or another game. You do not need to compile the engine when using a suitable release package."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "display-options",
            "title": "Choose smooth motion or the original cadence",
            "kind": "project",
            "paragraphs": [
              "The project offers higher display frame rates and an option to retain the original cadence. Its documentation says the frame-rate choice does not change gameplay speed. Widescreen and ultrawide presentation are supported, with an option to keep the HUD within a 16:9 area on a wider monitor.",
              "Some cutscenes reveal animation quirks at extreme aspect ratios. If the edges distract from a scene, a narrower presentation is a useful first adjustment. For stutter, the project recommends the in-game frame-rate limiter instead of an external graphics-driver limiter."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controls",
            "title": "Adjust the controller in the game’s menus",
            "kind": "practical",
            "paragraphs": [
              "Input mappings, audio and graphics can be changed through menus usable with a mouse, keyboard or controller. Stick deadzone is adjustable, which is useful when a modern controller’s stick response differs from the original N64 pad. The project also provides Linux and Steam Deck installation guidance.",
              "On PC, the renderer needs a supported modern graphics API and x86-64 CPUs need SSE4.1. The Mac requirements specify compatible Apple Silicon or newer Intel hardware and macOS 13 or later. Check the package and requirements together before starting."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "mods-and-storage",
            "title": "Keep optional changes and progress together",
            "kind": "practical",
            "paragraphs": [
              "Mods and texture packs can be installed through the mod menu or by dragging files onto the launcher before starting the game. They can then be enabled or disabled individually. Ray tracing and replacement models are listed as planned work, not a feature to expect from the base release.",
              "Portable mode stores saves, settings and mods beside the executable when portable.txt is present. That is a convenient way to keep an installation together; preserve the whole folder when moving it rather than only the program file."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Goemon 64: Recompiled · project documentation",
            "url": "https://raw.githubusercontent.com/klorfmorf/Goemon64Recomp/HEAD/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "development-release",
        "route": {
          "kind": "download",
          "url": "https://github.com/klorfmorf/Goemon64Recomp/releases/tag/v0.2.0-dev"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The North American N64 ROM of Mystical Ninja Starring Goemon. Supported ROM formats are converted automatically; other games and regions are not accepted.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/klorfmorf/Goemon64Recomp/HEAD/README.md"
        },
        "setup": {
          "answer": "Extract the platform release and select the supported ROM in the main menu.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/klorfmorf/Goemon64Recomp/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows, Linux and macOS builds are available. Graphics requirements include Direct3D 12, Vulkan 1.2 or Metal Argument Buffers Tier 2; macOS requires 13 or later.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/klorfmorf/Goemon64Recomp/HEAD/README.md"
        },
        "controls": {
          "answer": "Menus support mouse, keyboard and controller, with input mappings and stick deadzones configurable.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/klorfmorf/Goemon64Recomp/HEAD/README.md"
        },
        "issues": {
          "answer": "Goemon’s Great Adventure is planned, not supported. Very wide displays can expose cutscene animation quirks.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/klorfmorf/Goemon64Recomp/HEAD/README.md"
        },
        "saves": {
          "answer": "Portable mode uses portable.txt; otherwise saves use the platform directories listed in the README.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/klorfmorf/Goemon64Recomp/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/klorfmorf/Goemon64Recomp"
    },
    {
      "id": "project:kodyjking-smc64",
      "slug": "kodyjking-smc64",
      "title": "Halo CE × Super Mario 64",
      "project": "SMC64",
      "canonicalUrl": "https://playable.wtf/games/kodyjking-smc64/",
      "originals": [
        {
          "id": "halocombatevolved",
          "name": "Halo: Combat Evolved",
          "relationship": "associated-with"
        },
        {
          "id": "supermario64",
          "name": "Super Mario 64",
          "relationship": "associated-with"
        }
      ],
      "kind": "Mashup mod",
      "genre": "Shooter",
      "summary": "A LibSM64 crossover mod for the Steam MCC edition of Halo CE.",
      "editorial": {
        "sections": [
          {
            "id": "scope",
            "title": "A Mario mod inside MCC’s Halo CE",
            "kind": "project",
            "paragraphs": [
              "SMC64 integrates LibSM64 with Halo CE in the Steam version of Halo: The Master Chief Collection. The host is MCC, so this is a mod installed into an existing Windows game rather than a separate Halo executable. LibSM64 supplies a way to bring Mario’s movement and rendering into another engine; it does not import an entire Super Mario 64 campaign.",
              "The project’s creator demonstration is the useful introduction to the crossover. For installation, use the README shipped with the chosen release, because the repository’s main page largely describes developer tools and packaging."
            ],
            "sourceIds": [
              "project",
              "library"
            ]
          },
          {
            "id": "install",
            "title": "Prepare the maps and Mario data",
            "kind": "practical",
            "paragraphs": [
              "The packaged instructions place the release contents under the Halo The Master Chief Collection directory. They also require the matching maps package; back up existing Halo CE maps first if you want to restore them without downloading them again.",
              "Put your own SM64 ROM at MCC/Binaries/Win64/baserom.us.z64 within that installation. Start MCC without Easy Anti-Cheat, as the mod’s usage instructions require. The Spark loader then loads the mod DLLs at startup. These steps are for the packaged mod; the repository’s run_launcher.ps1 workflow instead assumes MCC is already running."
            ],
            "sourceIds": [
              "install",
              "project"
            ]
          },
          {
            "id": "restore",
            "title": "Keep a clear route back to the base game",
            "kind": "practical",
            "paragraphs": [
              "The included uninstall guide restores the replaced audio-loader DLL and removes Spark, with an optional removal of the mods directory. The Halo CE maps can be restored from your backup or through Steam’s file-integrity verification.",
              "Keeping that backup is particularly useful when trying updated map packages. It separates experimenting with SMC64 from maintaining a working base MCC installation, without assuming every later MCC update will use the same mod package."
            ],
            "sourceIds": [
              "install"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "SMC64 · project documentation",
            "url": "https://github.com/KodyJKing/smc64"
          },
          {
            "id": "install",
            "label": "SMC64 · packaged installation instructions",
            "url": "https://github.com/KodyJKing/smc64/blob/HEAD/smc64/shipfiles/README.md"
          },
          {
            "id": "library",
            "label": "libsm64 · character movement library",
            "url": "https://github.com/libsm64/libsm64"
          }
        ]
      },
      "families": [
        {
          "id": "mario",
          "title": "Mario platformers",
          "indexUrl": "https://playable.wtf/families/#family-mario",
          "guideUrl": "https://playable.wtf/guides/mario-platformer-versions/",
          "choices": [
            {
              "slug": "coop-deluxe-sm64coopdx",
              "label": "SM64 with friends",
              "reason": "Native online co-op synchronizes enemies and events, with public or private CoopNet rooms.",
              "canonicalUrl": "https://playable.wtf/games/coop-deluxe-sm64coopdx/"
            },
            {
              "slug": "super-mario-galaxy-galaxypad",
              "label": "Galaxy on iPhone or iPad",
              "reason": "Build a personal native app with touch and controller input; bring the supported USA Wii image.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-galaxy-galaxypad/"
            },
            {
              "slug": "super-mario-wonder-recomp",
              "label": "Follow an early Wonder build",
              "reason": "Source-build the Switch 1.0.0 project if you want to explore its experimental early-course progress.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-wonder-recomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/KodyJKing/smc64/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Use the Steam version of Halo: The Master Chief Collection with Halo CE. Follow the README inside the chosen release package for that version’s complete installation requirements.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/KodyJKing/smc64/HEAD/README.md"
        },
        "setup": {
          "answer": "Download a release package and follow its included README. The repository’s build and launcher scripts are developer tools; running the developer launcher requires MCC to be running.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/KodyJKing/smc64/HEAD/README.md"
        },
        "devices": {
          "answer": "The repository documents Windows tooling and Win64 packaging for the MCC mod.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/KodyJKing/smc64/HEAD/README.md"
        },
        "scope": {
          "answer": "SMC64 is a LibSM64 mod for Halo CE in MCC on Steam. It is not a standalone Halo or Super Mario 64 browser game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/KodyJKing/smc64/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/KodyJKing/smc64"
    },
    {
      "id": "project:koreanseats1-theft4",
      "slug": "koreanseats1-theft4",
      "title": "Grand Theft Auto IV",
      "project": "Theft4",
      "canonicalUrl": "https://playable.wtf/games/koreanseats1-theft4/",
      "originals": [
        {
          "id": "grandtheftautoiv",
          "name": "Grand Theft Auto IV",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Adventure",
      "summary": "A GTA IV port built on LibertyRecomp and ReXGlue.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "Liberty City through an iPhone or iPad app",
            "kind": "project",
            "paragraphs": [
              "Theft4 targets the Xbox 360 release of GTA IV on ARM64 iOS and iPadOS. It uses ahead-of-time compiled game code with a compatibility runtime, while its current renderer prepares frames directly for Metal. That is a different route from the existing PC game and does not require runtime JIT compilation.",
              "The unsigned IPA is installed through a signing and sideloading workflow. It is not the same as a TestFlight invitation or App Store download. The current game-data target is specific: USA retail title 545407F2, media 6AC07221, with the matching TU8 update. Follow that version check before transferring a large installation."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "settings",
            "title": "Balance city detail with device performance",
            "kind": "practical",
            "paragraphs": [
              "Graphics settings separate scene resolution from output scaling, and offer shadows, draw distance, model detail, reflection quality and sharpening. The Frame Speed preset shortens world distance and reduces some optional effects while retaining the selected resolution. Changes apply at the next game launch, so restart the game before comparing settings.",
              "Touch input provides a movement stick, swipe aiming and Xbox-style buttons. Physical controllers remain supported with touch controls enabled or disabled. Older GPUs without BC texture support may need a one-time conversion to ASTC; that preparation has progress and resume support, but its existence does not mean older devices perform like newer iPads."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "saves-and-limits",
            "title": "Export progress before experimenting",
            "kind": "practical",
            "paragraphs": [
              "Quit the game, reopen the launcher and use System → Export Saves to Files. Copy the whole dated export folder, which includes saved-game packages and profile data. Import Saves from Files validates a selected backup, saves the current progress before replacement and requires a restart afterward. Game installation files are not part of that backup.",
              "The project still lists freezes during long sessions and app switching, and does not promise a locked 30 fps across devices. Native Aspect Ratio and the optional mods can also increase rendering work or change play. Begin with ordinary settings and keep a save export before trying a more demanding configuration."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Theft4 · project documentation",
            "url": "https://github.com/KoreanSeats1/Theft4"
          }
        ]
      },
      "families": [
        {
          "id": "gta",
          "title": "Grand Theft Auto",
          "indexUrl": "https://playable.wtf/families/#family-gta",
          "guideUrl": "https://playable.wtf/guides/gta-game-versions/",
          "choices": [
            {
              "slug": "gta-iii-re3-web",
              "label": "GTA III in a desktop browser",
              "reason": "WASM Arcade documents re3-based play, keyboard/gamepad input and local save exports; launch includes advertising.",
              "canonicalUrl": "https://playable.wtf/games/gta-iii-re3-web/"
            },
            {
              "slug": "elmasas-lcs-recomp",
              "label": "Liberty City Stories",
              "reason": "A native route for the supported PSP US v1.05 edition, with configurable keyboard, mouse and controller input.",
              "canonicalUrl": "https://playable.wtf/games/elmasas-lcs-recomp/"
            },
            {
              "slug": "koreanseats1-theft4",
              "label": "GTA IV on Apple mobile",
              "reason": "An experimental signed iOS/iPadOS app using the exact Xbox 360 base and TU8, with a save-export workflow.",
              "canonicalUrl": "https://playable.wtf/games/koreanseats1-theft4/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/KoreanSeats1/Theft4/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported GTA IV game files.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/KoreanSeats1/Theft4"
        },
        "setup": {
          "answer": "Use the platform-specific setup in the repository and complete its local asset preparation.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/KoreanSeats1/Theft4"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/KoreanSeats1/Theft4"
    },
    {
      "id": "project:lego-island-browser",
      "slug": "lego-island-browser",
      "title": "LEGO Island",
      "project": "isle.pizza",
      "canonicalUrl": "https://playable.wtf/games/lego-island-browser/",
      "originals": [
        {
          "id": "legoisland",
          "name": "LEGO Island",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser source port",
      "genre": "Adventure",
      "summary": "The Emscripten frontend for the community’s portable LEGO Island engine.",
      "editorial": {
        "sections": [
          {
            "id": "the-island",
            "title": "A toy town to explore",
            "kind": "background",
            "paragraphs": [
              "The original LEGO Island is a small, explorable town whose residents, vehicles and activities are part of the attraction. You register at the Information Center, choose a character and head out to discover what the island offers. Building a vehicle is hands-on: select its parts, then change its paint and decals before taking it out.",
              "The original manual describes activities such as assembling a dune buggy at the Octan station and racing a water jet. That mixture of wandering, conversations, construction and driving gives the island a different rhythm from a game built entirely around successive racing events."
            ],
            "sourceIds": [
              "manual"
            ]
          },
          {
            "id": "this-version",
            "title": "The original game with browser conveniences",
            "kind": "project",
            "paragraphs": [
              "isle.pizza brings LEGO Island to the web through isle-portable, a portable reconstruction based on the original game's decompilation. Its current configuration offers language and version choices, widescreen display, resolution settings and control improvements. The goal remains the familiar island and its activities, rather than a new sequel.",
              "Game data streams as you explore. The creator describes an initial download of roughly 25 MB, with more arriving as needed. Configure Extras also offers Offline Play, which installs about 550 MB for a more complete local cache. These are different ways to obtain the same game's data, so a quick first visit need not begin with the full offline download."
            ],
            "sourceIds": [
              "readme",
              "engine"
            ]
          },
          {
            "id": "saving",
            "title": "Finish a visit at the Information Center",
            "kind": "practical",
            "paragraphs": [
              "To make sure progress is saved, return to the Information Center and leave through its exit door. Reaching the main menu locks in the save. Closing the tab attempts a save, but the project explicitly describes that as best effort; it is a less reliable ending to a session.",
              "The frontend also includes a save editor. Keep that separate from the normal in-game save routine: changing a slot's values is an editing operation, not a reason to skip returning to the main menu."
            ],
            "sourceIds": [
              "readme",
              "saves"
            ]
          },
          {
            "id": "controls",
            "title": "Choose controls before exploring",
            "kind": "practical",
            "paragraphs": [
              "The browser version supports keyboard, gamepad and touch input. Keyboard players can use arrows or WASD; touch settings offer a virtual gamepad, arrow keys or mouse-style input. If the introduction is silent, use the mute control to unlock audio. Lowering the configured resolution is the project's suggested first response to lag. Use a current browser with WebAssembly multithreading support."
            ],
            "sourceIds": [
              "readme",
              "controls"
            ]
          }
        ],
        "sources": [
          {
            "id": "manual",
            "label": "LEGO Island · original player manual",
            "url": "https://isle.pizza/pdf/comic.pdf"
          },
          {
            "id": "readme",
            "label": "isle.pizza · current player help",
            "url": "https://raw.githubusercontent.com/isledecomp/isle.pizza/master/src/lib/ReadMePage.svelte"
          },
          {
            "id": "engine",
            "label": "isle-portable · project goals",
            "url": "https://raw.githubusercontent.com/isledecomp/isle-portable/master/README.md"
          },
          {
            "id": "saves",
            "label": "isle.pizza · save editor",
            "url": "https://raw.githubusercontent.com/isledecomp/isle.pizza/master/src/lib/SaveEditorPage.svelte"
          },
          {
            "id": "controls",
            "label": "isle.pizza · control configuration",
            "url": "https://raw.githubusercontent.com/isledecomp/isle.pizza/master/src/lib/config/ControlsTab.svelte"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://isle.pizza/"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "setup": {
          "answer": "Choose Configure to adjust input, or Run Game to start. Read Me opens the project’s instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/isledecomp/isle.pizza/blob/master/src/lib/Controls.svelte"
        },
        "controls": {
          "answer": "Configure offers arrow-key navigation or an optional WASD layout. On touch devices, choose Virtual Gamepad, Virtual Arrow Keys or Virtual Mouse.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/isledecomp/isle.pizza/blob/master/src/lib/config/ControlsTab.svelte"
        },
        "saves": {
          "answer": "The frontend keeps save slots in the browser’s private file storage. After playing, open the save editor and choose a slot to inspect your player name, character and scores.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/isledecomp/isle.pizza/blob/master/src/lib/SaveEditorPage.svelte"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/isledecomp/isle.pizza"
    },
    {
      "id": "project:lethal-guitar-rigelengine",
      "slug": "lethal-guitar-rigelengine",
      "title": "Duke Nukem II",
      "project": "RigelEngine",
      "canonicalUrl": "https://playable.wtf/games/lethal-guitar-rigelengine/",
      "originals": [
        {
          "id": "dukenukemii",
          "name": "Duke Nukem II",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine recreation",
      "genre": "Platformer",
      "summary": "Duke Nukem II with widescreen presentation, quick saves and improved controller input.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Duke’s escape from an alien prison",
            "kind": "background",
            "paragraphs": [
              "Duke Nukem II begins with Duke abducted by aliens during a television interview. His captors intend to turn him into a zombie and take over the world; escaping their prison sets the adventure in motion. The game’s exaggerated action includes enemies, collectible score items and destructible objects. RigelEngine’s creator studied those behaviors frame by frame against the original, which helps explain the project’s focus on preserving the feel of the game rather than replacing it with a new campaign."
            ],
            "sourceIds": [
              "original",
              "development"
            ]
          },
          {
            "id": "this-version",
            "title": "Duke Nukem II with a more flexible presentation",
            "kind": "project",
            "paragraphs": [
              "RigelEngine recreates the DOS Duke Nukem II executable and reads the original game’s data. Its purpose is to preserve how the game plays while making it comfortable on modern systems. The developer reports support for the shareware episode and all four episodes of the registered game.",
              "Widescreen mode and smoother scrolling and movement are optional reasons to choose this version over running the original executable. Quick saving, improved controller input and extended mod support add conveniences without requiring you to replace the game’s original assets."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "first-launch",
            "title": "Point the engine at the episode set you own",
            "kind": "practical",
            "paragraphs": [
              "On first launch, RigelEngine opens a file browser for the Duke Nukem II installation. It remembers that path in its user profile. The essential archive is NUKEM2.CMP; the NUKEM2.F1 through F5 files provide the optional introduction movies. Keeping those movies alongside the archive gives a fuller presentation than copying only the minimum file.",
              "The shareware data is sufficient to try the supported shareware episode. A registered installation supplies the additional episodes. Existing saves, high scores and settings found in the chosen installation are imported into the engine’s profile on first use."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "platforms",
            "title": "Native packages and graphics requirements",
            "kind": "practical",
            "paragraphs": [
              "The project publishes native releases and documents Windows, Linux and macOS. It also provides separate Steam Deck and small-computer setup guidance. The engine is lightweight, but graphics support still matters: builds use OpenGL 3.0 or OpenGL ES 2.0, depending on how they were compiled.",
              "That distinction can matter more than the age of the game itself when using an older integrated GPU. Check the graphics requirements for the actual package before assuming a machine capable of the DOS version will necessarily run this renderer."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "current-direction",
            "title": "A mature native project, with a broken web route",
            "kind": "limitations",
            "paragraphs": [
              "The maintainer describes RigelEngine as being in maintenance mode: major problems may be fixed, but large new features are not planned. The former web version is explicitly marked as not working. Use the native release route on this page rather than treating old browser demonstrations as an available launch option."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "RigelEngine · project documentation",
            "url": "https://raw.githubusercontent.com/lethal-guitar/RigelEngine/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "Duke Nukem II · licensed store description",
            "url": "https://www.zoom-platform.com/product/duke-nukem-2"
          },
          {
            "id": "development",
            "label": "RigelEngine creator · original mechanics and reconstruction",
            "url": "https://lethalguitar.wordpress.com/2019/05/28/re-implementing-an-old-dos-game-in-c-17/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/lethal-guitar/RigelEngine/releases/tag/v0.9.1"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "NUKEM2.CMP from the shareware or registered game is required. NUKEM2.F1 through NUKEM2.F5 are optional intro movies.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/lethal-guitar/RigelEngine/HEAD/README.md"
        },
        "setup": {
          "answer": "Install a native release and choose the original Duke Nukem II folder in the first-run file browser.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/lethal-guitar/RigelEngine/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows, Linux and macOS are supported.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/lethal-guitar/RigelEngine/HEAD/README.md"
        },
        "controls": {
          "answer": "Improved game-controller support is a documented feature.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/lethal-guitar/RigelEngine/HEAD/README.md"
        },
        "issues": {
          "answer": "The README marks its former web version as currently broken. This listing therefore links native releases.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/lethal-guitar/RigelEngine/HEAD/README.md"
        },
        "scope": {
          "answer": "The creator reports all four registered episodes and the shareware episode supported.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/lethal-guitar/RigelEngine/HEAD/README.md"
        },
        "saves": {
          "answer": "Quick saving and first-run import of existing original saves and settings are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/lethal-guitar/RigelEngine/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/lethal-guitar/RigelEngine"
    },
    {
      "id": "project:little-big-adventure-browser",
      "slug": "little-big-adventure-browser",
      "title": "Little Big Adventure 1 & 2",
      "project": "LBA Remake",
      "canonicalUrl": "https://playable.wtf/games/little-big-adventure-browser/",
      "originals": [
        {
          "id": "littlebigadventure",
          "name": "Little Big Adventure",
          "relationship": "associated-with"
        },
        {
          "id": "littlebigadventure2",
          "name": "Little Big Adventure 2",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Adventure",
      "summary": "Explore Twinsen’s world in an unfinished browser reimplementation of Little Big Adventure.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Twinsen’s world rewards curiosity",
            "kind": "background",
            "paragraphs": [
              "Little Big Adventure 2 follows Twinsen as visitors from another planet disrupt life on Twinsun. The original adventure mixes exploration, conversations, puzzles and action across colorful islands and stranger places beyond them. Its appeal lies in learning how the world works and meeting its characters, as much as in getting past the next enemy.",
              "The commercial Classic edition has its own later updates. Those features are separate from this browser reimplementation, which is developed by LBALab and remains a work in progress."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "Explore the world before the adventure is complete",
            "kind": "project",
            "paragraphs": [
              "LBALab's LBA1 and LBA2 Remake rebuilds the engine with web technologies. The current README says you can walk around the original islands and buildings, with most graphics and some gameplay implemented. It also explicitly says the adventure cannot yet be completed.",
              "That makes this version useful for revisiting locations, examining the environment and following the engine's progress. It is not the right route if your immediate goal is to finish Twinsen's story from beginning to end. Planned HD, platform and modding work describes the project's direction rather than a checklist of features already delivered."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "demo",
            "title": "Hosted demo and local development are different routes",
            "kind": "practical",
            "paragraphs": [
              "The project FAQ describes permission for its hosted work-in-progress demo. Opening that demo is the visitor's route into the project. Building it locally instead requires assets from your own original game, since those are absent from the repository.",
              "Keep those two setups distinct when following instructions. The repository's import commands are for a development checkout, not an extra step every visitor must perform before trying the live demo."
            ],
            "sourceIds": [
              "faq",
              "project"
            ]
          },
          {
            "id": "editor",
            "title": "Use the editor to inspect, not to unlock a campaign",
            "kind": "practical",
            "paragraphs": [
              "Editor mode exposes scenes, content, variables and script debugging. It is useful if you want to understand how the reconstructed world is put together. It does not turn the unfinished adventure into a separate completed mode; return to the ordinary live demo for the player-facing exploration experience."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "2.21 · Little Big Adventure 2 description",
            "url": "https://store.steampowered.com/api/appdetails?appids=398000&l=english"
          },
          {
            "id": "project",
            "label": "LBALab · LBA Remake README",
            "url": "https://raw.githubusercontent.com/LBALab/lba2remake/HEAD/README.md"
          },
          {
            "id": "faq",
            "label": "LBALab · demo and original-game FAQ",
            "url": "https://raw.githubusercontent.com/LBALab/lba2remake/master/doc/FAQ.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://www.lba2remake.net"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The project’s FAQ offers the hosted work-in-progress demo with permission described by the creator. A local development build needs assets from your own original game; those assets are not in the repository.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/LBALab/lba2remake/blob/master/doc/FAQ.md"
        },
        "setup": {
          "answer": "Open the project’s live demo; use its linked editor mode only if you want development tools.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/LBALab/lba2remake"
        },
        "issues": {
          "answer": "Use the live demo for exploration. Editor mode is a development tool for scenes, variables and scripts, rather than a different completed campaign.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/LBALab/lba2remake/HEAD/README.md"
        },
        "scope": {
          "answer": "The project supports exploring the original islands and buildings with much of the graphics and some gameplay implemented. The creator explicitly says the adventure cannot yet be completed.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/LBALab/lba2remake/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/LBALab/lba2remake"
    },
    {
      "id": "project:littlebitua-downpourrecomp",
      "slug": "littlebitua-downpourrecomp",
      "title": "Silent Hill: Downpour",
      "project": "DownpourRecomp",
      "canonicalUrl": "https://playable.wtf/games/littlebitua-downpourrecomp/",
      "originals": [
        {
          "id": "silenthilldownpour",
          "name": "Silent Hill: Downpour",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Horror",
      "summary": "A Windows port with a first-run disc-image installer.",
      "editorial": {
        "sections": [
          {
            "id": "windows-version",
            "title": "Downpour with a PC control layer",
            "kind": "project",
            "paragraphs": [
              "DownpourRecomp converts Silent Hill: Downpour’s Xbox 360 code into a Windows application, with ReXGlue providing the console-facing runtime. Its release supplies that runtime rather than the game assets. This is the Downpour project, distinct from the author’s separate Deadly Premonition work.",
              "The player-facing additions include mouse look, keyboard and controller input, display settings and locally tracked achievements. F7 opens the achievement list. These unlocks stay on the machine; their presence does not imply an Xbox LIVE connection or synchronization with a console profile."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "mouse-behavior",
            "title": "Why mouse tuning matters here",
            "kind": "practical",
            "paragraphs": [
              "The current raw-input path maps mouse displacement directly to the game’s controller-style input. Raw Input Scale is the main speed adjustment; Stick Scale and Deadzone Compensation affect how movement reaches the stick model. The older smoothing and acceleration settings belong to the fallback mouse path, so changing them will not tune the default raw-input behavior.",
              "There is still a maximum turning speed imposed by the original stick input. Raising sensitivity can make it easier to reach that ceiling, but cannot remove it. Start with small adjustments instead of expecting this conversion to behave exactly like a shooter designed around unrestricted mouse aiming."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installation-and-updates",
            "title": "Use the current installer and compatibility notes",
            "kind": "practical",
            "paragraphs": [
              "The first-run installer can extract your own Downpour ISO and then handle the title-update step. Extraction is resumable, so an interrupted preparation need not mean starting over. Existing installations have an in-place update route intended to preserve saves, settings and shader caches.",
              "Version details matter: v1.1.7 removed the former AVX2 requirement but introduced a Direct3D startup problem on some Windows versions; v1.1.8 removes that unintended runtime dependency. Consult the current release notes for the actual package you install. A successful CPU compatibility change does not establish identical performance on every older machine."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "DownpourRecomp · project documentation",
            "url": "https://github.com/LittleBitUA/DownpourRecomp"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/LittleBitUA/DownpourRecomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Silent Hill: Downpour Xbox 360 disc image.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/LittleBitUA/DownpourRecomp"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/LittleBitUA/DownpourRecomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/LittleBitUA/DownpourRecomp"
    },
    {
      "id": "project:lostartefacts-trx",
      "slug": "lostartefacts-trx",
      "title": "Tomb Raider I–III",
      "project": "TRX Community Edition",
      "canonicalUrl": "https://playable.wtf/games/lostartefacts-trx/",
      "originals": [
        {
          "id": "tombraider",
          "name": "Tomb Raider",
          "relationship": "reimplementation-of"
        },
        {
          "id": "tombraiderii",
          "name": "Tomb Raider II",
          "relationship": "reimplementation-of"
        },
        {
          "id": "tombraideriii",
          "name": "Tomb Raider III",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine recreation",
      "genre": "Action adventure",
      "summary": "A combined native engine for the first three Tomb Raider games with configurable controls and rendering.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Exploration built around Lara’s movement",
            "kind": "background",
            "paragraphs": [
              "The first Tomb Raider sends Lara Croft after the Scion, with running, jumping, swimming and climbing central to the journey. Its spaces combine traversal, puzzles and combat, so observing the room and judging a route are as important as finding an enemy. That original approach provides the context for TRX’s work across the first three games."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "One engine, three distinct classics",
            "kind": "project",
            "paragraphs": [
              "TRX runs Tomb Raider I, II and III and compatible custom levels while respecting the distinct mechanics of each original engine. The creators report all three supported games playable from start to finish. Tomb Raider IV is still a development project and is not part of that claim.",
              "The port adds configurable presentation and conveniences: UI scaling, detailed level statistics, photo mode, draw-distance options and other rendering changes. Its showcase also includes an updated moveset and restored visual details. These are reasons to explore its options, not evidence that every screenshot represents the original unmodified game."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controls",
            "title": "Set up movement before the first difficult jump",
            "kind": "practical",
            "paragraphs": [
              "Keyboard and controller actions can be remapped in the Controls menu, with multiple layouts, two binding slots per action and shortcuts combining up to three keys. Controllers work without a separate input translation program. For a game so dependent on deliberate movement, choosing a comfortable layout before committing to a long level is worthwhile.",
              "Windows, Linux and macOS are supported. Use the installation guide for your operating system and supply the appropriate owned TR1, TR2 or TR3 files. The combined setup keeps games in separate game directories, rather than treating their assets as one interchangeable pool."
            ],
            "sourceIds": [
              "project",
              "install"
            ]
          },
          {
            "id": "visual-options",
            "title": "Modern presentation has defined limits",
            "kind": "limitations",
            "paragraphs": [
              "TRX’s enhancements do not mean it is an HD texture replacement. The README explicitly says HD texture-pack support is not currently planned. Choose the project for its engine, control and presentation work, and judge each optional change on its own. The supported TR1 PC demo is also a useful installation choice when you want to try the engine without treating it as the complete trilogy."
            ],
            "sourceIds": [
              "project",
              "install"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "TRX Community Edition · project documentation",
            "url": "https://raw.githubusercontent.com/LostArtefacts/TRX/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "TRX Community Edition · original game publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=224960&l=english"
          },
          {
            "id": "install",
            "label": "TRX · installation guide",
            "url": "https://raw.githubusercontent.com/LostArtefacts/TRX/HEAD/docs/trx/INSTALLING.md"
          }
        ]
      },
      "families": [
        {
          "id": "tomb-raider",
          "title": "Tomb Raider",
          "indexUrl": "https://playable.wtf/families/#family-tomb-raider",
          "guideUrl": "https://playable.wtf/guides/tomb-raider-versions/",
          "choices": [
            {
              "slug": "openlara",
              "label": "Try a browser demo",
              "reason": "OpenLara’s creator links a WebGL build with a demo level.",
              "canonicalUrl": "https://playable.wtf/games/openlara/"
            },
            {
              "slug": "lostartefacts-trx",
              "label": "Play your owned adventures",
              "reason": "TRX runs the first three games with configurable controls and presentation.",
              "canonicalUrl": "https://playable.wtf/games/lostartefacts-trx/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/LostArtefacts/TRX/releases/tag/trx-1.11.1"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "TR1, TR2 or TR3 files from an owned Steam, GOG or disc installation. The combined installer also offers a TR1 PC demo; each game has its own games/<game-id>/ directory.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/LostArtefacts/TRX/HEAD/docs/trx/INSTALLING.md"
        },
        "setup": {
          "answer": "Install the combined TRX release, select the games you own and import their original files into the combined layout.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/LostArtefacts/TRX/HEAD/docs/trx/INSTALLING.md"
        },
        "devices": {
          "answer": "Windows, Linux and macOS are supported.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/LostArtefacts/TRX/HEAD/README.md"
        },
        "controls": {
          "answer": "Keyboard and controller layouts are configurable, with two bindings per action.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/LostArtefacts/TRX/HEAD/README.md"
        },
        "issues": {
          "answer": "TR4 support is still in development and is not counted as a supported game here. Upstream discusses antivirus alerts; this guide has not assessed binary safety.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/LostArtefacts/TRX/HEAD/README.md"
        },
        "scope": {
          "answer": "The creators report TR1, TR2 and TR3 playable from beginning to end. No walkthrough was performed for this catalog.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/LostArtefacts/TRX/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/LostArtefacts/TRX"
    },
    {
      "id": "project:madxbio97-sf-pc-port",
      "slug": "madxbio97-sf-pc-port",
      "title": "Syphon Filter",
      "project": "Syphon Filter PC",
      "canonicalUrl": "https://playable.wtf/games/madxbio97-sf-pc-port/",
      "originals": [
        {
          "id": "syphonfilter",
          "name": "Syphon Filter",
          "relationship": "associated-with"
        }
      ],
      "kind": "Native port",
      "genre": "Shooter",
      "summary": "The PS1 game running with a native Windows host.",
      "editorial": {
        "sections": [
          {
            "id": "campaign",
            "title": "The original missions behind a new Windows interface",
            "kind": "project",
            "paragraphs": [
              "Syphon Filter PC pairs the original PlayStation gameplay execution with a native Windows host for graphics, sound, movies and input. The project documents the 20-mission campaign flow, checkpoint restore and persistent mission unlocks. That makes progression part of the runtime’s stated scope, while the release remains labeled a public test.",
              "The restored interface includes objectives, inventory, weapon information and a map with position and objective indicators. A separate Dossiers gallery sits in the launcher. These are useful orientation tools for returning to a mission, rather than a replacement for learning its route and objectives."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "presentation",
            "title": "Sharper scenes, familiar authored spaces",
            "kind": "project",
            "paragraphs": [
              "The renderer adds higher-resolution geometry, perspective correction, configurable filtering and optional particle effects. Its dynamic lighting builds on the original authored vertex colors: lights, gunfire, fire and explosions can illuminate nearby surfaces, with posed character shadows. These changes affect presentation while the original game program still drives the mission.",
              "Keyboard and mouse bindings are remappable, with retail-style gamepad controls as another choice. The launcher stages Graphics and Controls changes until Play. An optional Russian text pack changes text, while speech, music and cinematics still come from the selected USA image."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "disc-and-progress",
            "title": "Keep the CUE and its BIN files together",
            "kind": "practical",
            "paragraphs": [
              "This runtime requires Syphon Filter USA/NTSC-U revision 1.1, serial SCUS-94240. Select the CUE in the launcher, keep every referenced BIN beside it, and retain their filenames. The launcher remembers the image but does not copy it into the installation, so moving or deleting those files breaks that path.",
              "Saves and launcher settings live under LocalAppData/SyphonFilterPC rather than inside the release folder. Preserve that directory when moving between machines. Mission selection normally follows campaign progress; the documented developer cheat marker changes that behavior, so it is not necessary for a normal first playthrough."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Syphon Filter PC · project documentation",
            "url": "https://github.com/Madxbio97/SF-pc-port"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/Madxbio97/SF-pc-port/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own NTSC-U 1.1 Syphon Filter BIN/CUE image (SCUS-94240).",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Madxbio97/SF-pc-port"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Madxbio97/SF-pc-port"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Madxbio97/SF-pc-port"
    },
    {
      "id": "project:minecraft-eaglercraftx-web",
      "slug": "minecraft-eaglercraftx-web",
      "title": "Minecraft",
      "project": "EaglercraftX 1.8.8 · WASM Arcade",
      "canonicalUrl": "https://playable.wtf/games/minecraft-eaglercraftx-web/",
      "originals": [
        {
          "id": "minecraft",
          "name": "Minecraft",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser port",
      "genre": "Sandbox",
      "summary": "Java Edition 1.8.8 through EaglercraftX, with local worlds and keyboard controls.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A world to build or survive in",
            "kind": "background",
            "paragraphs": [
              "Minecraft is a sandbox built from blocks that you can explore, break and place. Creative mode emphasises building with available materials, while Survival makes gathering resources and dealing with the world part of the work. The same landscape can therefore be a construction project or a place to establish a foothold.",
              "That freedom is the attraction: you decide what deserves the next session, whether it is changing a building, exploring further or starting another world. The current official Minecraft releases have their own features and services; this older browser project represents a particular version."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "EaglercraftX and the 1.8.8 feature set",
            "kind": "project",
            "paragraphs": [
              "WASM Arcade hosts EaglercraftX for Minecraft 1.8.8, with Survival and Creative worlds. It runs locally through WebAssembly and WebGL 2. The host can select a compatibility build when its faster WebAssembly path is unavailable, so a browser may take a different startup route without changing the listed game version.",
              "Multiplayer uses outside community servers and relays. Those are separate services with their own availability; the archive says it does not maintain them. For the most self-contained starting point, create a single-player world first."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "playing",
            "title": "Keyboard play and world exports",
            "kind": "practical",
            "paragraphs": [
              "The documented route is desktop keyboard and mouse. WASD moves, Space jumps, Shift sneaks, E opens inventory and number keys select the hotbar. The page does not provide touch controls, so fitting the canvas onto a phone is not enough to make it a comfortable mobile game.",
              "Worlds live in this browser. Use the in-game world export before clearing site data or switching devices, and keep that exported copy somewhere you can find again. Your local build survives through its saved world data, not through signing into the hosting site's game page."
            ],
            "sourceIds": [
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Mojang · What is Minecraft?",
            "url": "https://www.minecraft.net/en-us/article/what-minecraft"
          },
          {
            "id": "host",
            "label": "WASM Arcade · Minecraft 1.8.8 launcher and help",
            "url": "https://wasmarcade.com/minecraft"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://wasmarcade.com/minecraft"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The host streams the browser build and stores worlds locally; its setup page does not require a local game-file import.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/minecraft"
        },
        "setup": {
          "answer": "Open Play Minecraft in a current browser. The host says its Play buttons also open an advertising sponsor tab.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/terms"
        },
        "devices": {
          "answer": "The host recommends desktop keyboard and mouse and explicitly says there are no on-screen touch controls. It lists WebGL 2 and a current browser.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/minecraft"
        },
        "controls": {
          "answer": "WASD moves, mouse looks, Space jumps, left/right mouse breaks or places blocks, E opens inventory and Esc releases the pointer. The host also lists gamepad mappings.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/minecraft"
        },
        "multiplayer": {
          "answer": "This host is configured for single-player. The port’s multiplayer/LAN options depend on third-party relay servers which the host does not operate or vouch for.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/minecraft"
        },
        "issues": {
          "answer": "Relay connectivity and controller mappings are creator-reported, not tested here. The 1.8.8 version omits later Minecraft features.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/minecraft"
        },
        "scope": {
          "answer": "Minecraft Java Edition 1.8.8 via EaglercraftX; not current-version Minecraft.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/minecraft"
        },
        "saves": {
          "answer": "Worlds remain in local browser storage. Use in-game world export before clearing site data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wasmarcade.com/minecraft"
        }
      },
      "credits": [
        {
          "name": "WASM Arcade",
          "role": "host",
          "url": "https://wasmarcade.com/minecraft",
          "evidence": "https://wasmarcade.com/minecraft",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://wasmarcade.com/minecraft"
    },
    {
      "id": "project:modern-warfare-2-iw4l",
      "slug": "modern-warfare-2-iw4l",
      "title": "Call of Duty: Modern Warfare 2 (2009)",
      "project": "IW4L",
      "canonicalUrl": "https://playable.wtf/games/modern-warfare-2-iw4l/",
      "originals": [
        {
          "id": "callofdutymodernwarfare22009",
          "name": "Call of Duty: Modern Warfare 2 (2009)",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Shooter",
      "summary": "A Rust/Bevy runtime that reads your MW2 maps and weapons.",
      "editorial": {
        "sections": [
          {
            "id": "play",
            "title": "Explore MW2 through a new runtime",
            "kind": "project",
            "paragraphs": [
              "IW4L loads maps, models, textures and weapons from an owned MW2 installation into a Rust engine built with Bevy. You can explore multiplayer maps, fight bots and record or replay demos. The appeal is both playable experimentation and the ability to inspect how movement and combat are implemented.",
              "It is not the same approach as recompiling the Xbox 360 executable. IW4L supplies its own runtime and simulation, so missing behavior and desyncs remain expected. Asset readers also cover other Call of Duty games, but being able to read their data is not a promise that every mode from those games is playable."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Keep the original installation intact",
            "kind": "practical",
            "paragraphs": [
              "Extract the Windows release to a writable folder. It looks for MW2 in Steam libraries and creates a shortcut pointing to the installation; a non-Steam location needs that shortcut supplied manually. IW4L reads the original files without patching them, while its caches, demos and logs go into iw4l-artifacts.",
              "A first local test can use the documented bot-match command. The game mode’s countdown normally holds movement until the match begins; the development force_match_start command skips that warmup. A frozen player at the beginning of a scripted test is therefore not necessarily a broken input mapping."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "customize",
            "title": "Experiment with classes, cameras and replays",
            "kind": "practical",
            "paragraphs": [
              "The run guide describes custom classes, weapon attachments, camouflage and killstreak selections, with a choice of first- or third-person camera. Aim can be hold-to-aim or a toggle. Those controls let you compare how familiar weapons and spaces behave in the new engine, rather than assuming every default exactly matches the retail client.",
              "Cheats are enabled by default for host experiments and can be disabled in game setup. Multiplayer peers must use the same build because the protocol changes between commits. Demo recording is useful for revisiting an experiment, but this developing runtime should not be treated as a finished replacement for all MW2 multiplayer behavior."
            ],
            "sourceIds": [
              "run",
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "IW4L · project documentation",
            "url": "https://github.com/vladtrc/iw4L"
          },
          {
            "id": "run",
            "label": "IW4L · run and controls guide",
            "url": "https://github.com/vladtrc/iw4L/blob/HEAD/docs/RUN.md"
          }
        ]
      },
      "families": [
        {
          "id": "call-of-duty",
          "title": "Call of Duty",
          "indexUrl": "https://playable.wtf/families/#family-call-of-duty",
          "guideUrl": "https://playable.wtf/guides/call-of-duty-browser-native-versions/",
          "choices": [
            {
              "slug": "black-ops-zombies",
              "label": "Choose BO1 Zombies rules",
              "reason": "Select Classic or Counter-Strike guns before a solo or lobby session.",
              "canonicalUrl": "https://playable.wtf/games/black-ops-zombies/"
            },
            {
              "slug": "nacht-der-untoten",
              "label": "Invite a small co-op group",
              "reason": "A separate desktop fan remake with a two-to-four-player invitation flow.",
              "comparisonException": "The creator launcher and compatibility help document solo/co-op invitations and input; match completion and multiplayer lifecycle are untested.",
              "canonicalUrl": "https://playable.wtf/games/nacht-der-untoten/"
            },
            {
              "slug": "modern-warfare-browser",
              "label": "Play the original COD4 campaign",
              "reason": "Import your own Steam files for the story and Mile High Club.",
              "canonicalUrl": "https://playable.wtf/games/modern-warfare-browser/"
            },
            {
              "slug": "paulcombal-mw2-recompiled",
              "label": "Use the 2009 console edition natively",
              "reason": "Choose the Windows/Linux controller route with matching owned Xbox 360 data.",
              "canonicalUrl": "https://playable.wtf/games/paulcombal-mw2-recompiled/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/vladtrc/iw4L/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own MW2 installation.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/vladtrc/iw4L"
        },
        "setup": {
          "answer": "Follow the original release or build guide and point IW4L at your installed copy.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/vladtrc/iw4L"
        },
        "issues": {
          "answer": "Missing behavior, bugs and desyncs are expected; network protocol changes between commits.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/vladtrc/iw4L"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/vladtrc/iw4L"
    },
    {
      "id": "project:modern-warfare-browser",
      "slug": "modern-warfare-browser",
      "title": "Call of Duty 4: Modern Warfare",
      "project": "KisakCOD Web",
      "canonicalUrl": "https://playable.wtf/games/modern-warfare-browser/",
      "originals": [
        {
          "id": "callofduty4modernwarfare",
          "name": "Call of Duty 4: Modern Warfare",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "The 2007 campaign in a browser, importing your Steam installation.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original 2007 campaign",
            "kind": "background",
            "paragraphs": [
              "Call of Duty 4: Modern Warfare follows U.S. Marine and British SAS perspectives through a military thriller. Its set pieces move between infantry combat, coordinated assaults and air support. The appeal is the change of pace: a carefully directed operation can give way to a much larger battlefield, with the story carrying you between them.",
              "This listing concerns the original 2007 game. Its commercial release also has a substantial multiplayer component, but that is separate from what the KisakCOD browser adaptation currently offers."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Campaign first, including Mile High Club",
            "kind": "project",
            "paragraphs": [
              "The KisakCOD Web README identifies the main story and Mile High Club as the playable scope. Multiplayer is a future plan, not an available mode to select after loading. Choose this project for its documented campaign route rather than for public servers, create-a-class progression or the retail game's online features.",
              "The maintainer describes the port as new and asks players to expect bugs. Treat that as a reason to keep the original installation available, particularly if you are looking for a dependable full campaign playthrough."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "files",
            "title": "Use the Steam installation, not a disc image",
            "kind": "practical",
            "paragraphs": [
              "The required input is the installation folder from your own Steam copy of the original COD4. The README explicitly rejects ISO files. On the hosted client, choose the game files and the parts to install, wait for copying, and then select Play. A disc-image workflow from a different browser port will not fit this launcher.",
              "The project also documents self-hosting, but that is a separate setup route. It needs server headers for the threaded runtime. Using the linked hosted client avoids having to configure that server yourself."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Activision · original Modern Warfare description",
            "url": "https://store.steampowered.com/api/appdetails?appids=7940&l=english"
          },
          {
            "id": "project",
            "label": "KisakCOD Web · README",
            "url": "https://raw.githubusercontent.com/slqntdevss/kisakcod-port/HEAD/README.md"
          }
        ]
      },
      "families": [
        {
          "id": "call-of-duty",
          "title": "Call of Duty",
          "indexUrl": "https://playable.wtf/families/#family-call-of-duty",
          "guideUrl": "https://playable.wtf/guides/call-of-duty-browser-native-versions/",
          "choices": [
            {
              "slug": "black-ops-zombies",
              "label": "Choose BO1 Zombies rules",
              "reason": "Select Classic or Counter-Strike guns before a solo or lobby session.",
              "canonicalUrl": "https://playable.wtf/games/black-ops-zombies/"
            },
            {
              "slug": "nacht-der-untoten",
              "label": "Invite a small co-op group",
              "reason": "A separate desktop fan remake with a two-to-four-player invitation flow.",
              "comparisonException": "The creator launcher and compatibility help document solo/co-op invitations and input; match completion and multiplayer lifecycle are untested.",
              "canonicalUrl": "https://playable.wtf/games/nacht-der-untoten/"
            },
            {
              "slug": "modern-warfare-browser",
              "label": "Play the original COD4 campaign",
              "reason": "Import your own Steam files for the story and Mile High Club.",
              "canonicalUrl": "https://playable.wtf/games/modern-warfare-browser/"
            },
            {
              "slug": "paulcombal-mw2-recompiled",
              "label": "Use the 2009 console edition natively",
              "reason": "Choose the Windows/Linux controller route with matching owned Xbox 360 data.",
              "canonicalUrl": "https://playable.wtf/games/paulcombal-mw2-recompiled/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://mw.slqnt.dev"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerOnline": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "Use the original 2007 Call of Duty 4 Steam installation folder. The creator explicitly rejects ISO inputs.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/slqntdevss/kisakcod-port/5e36599e9944ca192fdaba05bb44edd8c5156b30/README.md"
        },
        "setup": {
          "answer": "Open the hosted client, select the Steam folder and installation options, wait for copying, then choose Play.",
          "steps": [
            "Open mw.slqnt.dev.",
            "Select the original COD4 Steam folder and installation options.",
            "Wait for copying, then choose Play."
          ],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/slqntdevss/kisakcod-port/5e36599e9944ca192fdaba05bb44edd8c5156b30/README.md"
        },
        "multiplayer": {
          "answer": "Campaign only in the reviewed README; multiplayer is planned.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/slqntdevss/kisakcod-port/5e36599e9944ca192fdaba05bb44edd8c5156b30/README.md"
        },
        "issues": {
          "answer": "New port: expect bugs.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/slqntdevss/kisakcod-port/5e36599e9944ca192fdaba05bb44edd8c5156b30/README.md"
        },
        "scope": {
          "answer": "The documented route covers the main campaign and Mile High Club; the new port may contain bugs.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/slqntdevss/kisakcod-port/5e36599e9944ca192fdaba05bb44edd8c5156b30/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/slqntdevss/kisakcod-port"
    },
    {
      "id": "project:morrowind-openmw-web",
      "slug": "morrowind-openmw-web",
      "title": "The Elder Scrolls III: Morrowind",
      "project": "Virtastic OpenMW-Web",
      "canonicalUrl": "https://playable.wtf/games/morrowind-openmw-web/",
      "originals": [
        {
          "id": "theelderscrollsiiimorrowind",
          "name": "The Elder Scrolls III: Morrowind",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "RPG",
      "summary": "OpenMW in the browser; the current hosted world requires an invite and sign-in.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Choose a direction in Morrowind",
            "kind": "background",
            "paragraphs": [
              "The Elder Scrolls III: Morrowind is an open-ended role-playing game. You create a character, develop abilities through use and decide how closely to follow its central story. Exploring the world and building a character can become the point of a session in their own right.",
              "That openness makes this a game to settle into rather than judge from a single fight. The original publisher presents both following the main adventure and wandering independently as valid ways to play. OpenMW is a replacement engine for that game, not a new campaign."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "A browser engine with several data routes",
            "kind": "project",
            "paragraphs": [
              "Virtastic's openmw-web runs OpenMW locally in desktop Chrome or Chromium. Its project supports a local Data Files folder, a server with staged data and a signed-in route that uploads an owned copy. Those routes store saves differently: local-folder play writes files beside your data, signed-in play uses the server and the free example world uses browser storage.",
              "Availability depends on the server you open. The linked hosted service has an account-access gate; the repository also supplies a self-hosting route. An example world is a small engine demo, not the Morrowind campaign."
            ],
            "sourceIds": [
              "project",
              "host"
            ]
          },
          {
            "id": "setup",
            "title": "Keep the loose files with the archives",
            "kind": "practical",
            "paragraphs": [
              "Your Data Files folder needs Morrowind.esm and Morrowind.bsa, plus the accompanying Sound, Music and Video folders. Selecting only the archives can leave audio or introductory video missing. If Windows protects the installation inside Program Files, copy Data Files to an accessible personal folder first.",
              "Use current desktop Chrome or Edge with the required memory support; the documented baseline is version 133. Firefox, Safari and mobile are unsupported. Options → Video includes resolution scale, a useful first adjustment on lighter hardware."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "party",
            "title": "Treat party play as experimental",
            "kind": "limitations",
            "paragraphs": [
              "The project also documents experimental multiplayer for configured servers. A visitor joins a friend's world and advances that host's campaign, rather than entering one shared public world. Keep that distinction in mind when choosing between solo play and a party, and confirm that the server actually offers the experimental mode before planning a group session."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Bethesda · Morrowind",
            "url": "https://store.steampowered.com/app/22320/"
          },
          {
            "id": "project",
            "label": "openmw-web · data routes, browsers and multiplayer",
            "url": "https://github.com/Virtastic/openmw-web"
          },
          {
            "id": "host",
            "label": "Virtastic · hosted Morrowind launcher",
            "url": "https://morrowind.virtastic.app/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://morrowind.virtastic.app/"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "You need your own Morrowind Data Files, including Morrowind.esm and Morrowind.bsa. The current hosted service describes a one-time upload after sign-in; self-hosted local-folder mode can instead read from disk.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://morrowind.virtastic.app/"
        },
        "setup": {
          "answer": "New players need an invite code, then Google, Discord or Microsoft sign-in. The host links its Discord for invite information. After access, the host asks for your owned Data Files. No public anonymous launch was available in the reviewed flow.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://morrowind.virtastic.app/"
        },
        "devices": {
          "answer": "Desktop Chrome or Chromium with MEMORY64, including Chrome/Edge 133+, is required. Firefox, Safari and mobile are not supported.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/openmw-web/blob/main/README.md"
        },
        "controls": {
          "answer": "The project persists keybindings and settings in the browser. Options → Video includes resolution scaling for lighter hardware.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/openmw-web/blob/main/README.md"
        },
        "multiplayer": {
          "answer": "The project offers experimental hosted party worlds. Account/server setup is required; the repository describes solo and friends-based play, with rough edges remaining.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/openmw-web/blob/main/README.md"
        },
        "issues": {
          "answer": "The public host is invite-only. Its account/upload route should not be confused with the local-folder and free example-world options documented for other server configurations.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://morrowind.virtastic.app/"
        },
        "scope": {
          "answer": "An OpenMW engine port for your Morrowind data, with optional server and multiplayer components.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/openmw-web/blob/main/README.md"
        },
        "saves": {
          "answer": "Saves depend on the route: local-folder mode uses real files, signed-in play uses server saves, and the offline example uses browser storage.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Virtastic/openmw-web/blob/main/README.md"
        }
      },
      "credits": [
        {
          "name": "Virtastic",
          "role": "port-author",
          "url": "https://github.com/Virtastic/openmw-web",
          "evidence": "https://github.com/Virtastic/openmw-web",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/Virtastic/openmw-web"
    },
    {
      "id": "project:mstan-metroidprimehuntersrecomp",
      "slug": "mstan-metroidprimehuntersrecomp",
      "title": "Metroid Prime Hunters",
      "project": "MetroidPrimeHuntersRecomp",
      "canonicalUrl": "https://playable.wtf/games/mstan-metroidprimehuntersrecomp/",
      "originals": [
        {
          "id": "metroidprimehunters",
          "name": "Metroid Prime Hunters",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Shooter",
      "summary": "An early native DS recompilation with experimental networking.",
      "editorial": {
        "sections": [
          {
            "id": "play",
            "title": "A DS shooter with PC aiming",
            "kind": "project",
            "paragraphs": [
              "MetroidPrimeHuntersRecomp makes the USA revision-0 game a native desktop target, with Prime-style mouse and keyboard controls enabled by default. The core actions remain distinctive: switch between firing and scanning, select subweapons and use morph-ball movement. Translating those actions away from the original stylus layout is one of the port’s main attractions.",
              "WASD moves, the mouse aims, Space jumps and Left Ctrl enters morph ball. C changes to the scan visor; left and right mouse buttons handle firing and scan-fire. Number keys select subweapons, while Tab supplies a virtual stylus. Remappable gamepad bindings provide another route without removing touchscreen-style interaction entirely."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "scope",
            "title": "Campaign progress and experimental matches",
            "kind": "limitations",
            "paragraphs": [
              "The project remains a public alpha. Recent development covers all 66 campaign rooms and additional final-boss paths, but the maintainer explicitly distinguishes compiled room coverage from testing every encounter and action. Crashes, hangs, graphical errors and save problems are still possible.",
              "Wiimmfi testing has reached an actual match between separate players, yet connection stability and desyncs remain experimental. Local Multi-Card play has only been validated between two instances on one machine. Choose this for trying the evolving native controls and renderer, not for a guaranteed online session with friends."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Use the exact cartridge revision",
            "kind": "practical",
            "paragraphs": [
              "The required ROM is USA revision 0, game code AMHE, 64 MiB. Other revisions are rejected. Put your own dump beside the Windows executable or Linux AppImage and launch the package. The default FreeBIOS and generated-firmware route avoids requiring separate retail DS firmware dumps.",
              "Dynamic widescreen is the default, with fixed aspect choices available. Optional HD Rendering raises the 3D resolution while the 2D layers stay native. Start with default resolution, then increase it if your GPU has room. Keep save backups during alpha testing; a successful boot or smooth early area does not establish a whole campaign’s reliability."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "MetroidPrimeHuntersRecomp · project documentation",
            "url": "https://github.com/mstan/MetroidPrimeHuntersRecomp"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/mstan/MetroidPrimeHuntersRecomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Metroid Prime Hunters ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/mstan/MetroidPrimeHuntersRecomp"
        },
        "setup": {
          "answer": "Read the alpha release notes and use its ROM-import workflow.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/mstan/MetroidPrimeHuntersRecomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/mstan/MetroidPrimeHuntersRecomp"
    },
    {
      "id": "project:mush8",
      "slug": "mush8",
      "title": "Mario Kart 8 Deluxe",
      "project": "Mush8",
      "canonicalUrl": "https://playable.wtf/games/mush8/",
      "originals": [
        {
          "id": "mariokart8deluxe",
          "name": "Mario Kart 8 Deluxe",
          "relationship": "port-of"
        }
      ],
      "kind": "Native port",
      "genre": "Racing",
      "summary": "Build C22’s native Mario Kart 8 Deluxe port for iPhone, iPad and Apple Silicon Mac.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Kart racing with room for different skill levels",
            "kind": "background",
            "paragraphs": [
              "Mario Kart 8 Deluxe combines races through a varied set of courses with items that can change the contest between drivers. The original game offers 48 base courses and optional Smart Steering to help newer racers stay on track, while faster classes give experienced players a different challenge. Its Booster Course Pass is separate additional content.",
              "That is the original game’s design and content structure. Mush8 brings its own platform, input and networking support, so Nintendo’s published console services should not be assumed to work through this project."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "An Apple-platform source project",
            "kind": "project",
            "paragraphs": [
              "Mush8 runs locally built native applications on Apple Silicon Macs and supported iOS devices. It adapts the game’s system calls and graphics to the host rather than offering a browser launch. There is no prebuilt game download: setup uses your own base NSP, version 4.0.1 update and keys. Owned Booster Course Pass content and a firmware folder for fonts and Miis are optional.",
              "On a Mac, the Prepare step extracts data and processes shaders before play. iOS can import data directly or use the app’s Files location. The initial preparation work is distinct from starting a race, and the resulting commercial game data remains local."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "input-and-friends",
            "title": "Several ways to control a local race",
            "kind": "practical",
            "paragraphs": [
              "The documentation lists keyboard controls on Mac and support for Joy-Con, Switch Pro, Xbox and DualSense controllers. iOS shows touch controls when no controller is connected, with optional gyro input disabled by default. A phone can also act as a controller for a Mac or iPad on the same Wi-Fi network without carrying game data itself.",
              "Local network play supports joining with a Switch. Nearby Mush8 devices have a wireless mode, while internet sessions use a separate lan-play server. These routes are distinct from Nintendo’s official online service, which the project does not support."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "requirements",
            "title": "Build and memory requirements shape compatibility",
            "kind": "limitations",
            "paragraphs": [
              "The documented Mac build requires Apple Silicon, macOS 14 or newer and the specified Xcode toolchain. iOS requires version 26 or newer and at least 6 GB of memory, with 8 GB recommended. Signing and installation are part of the source-build process.",
              "Free Apple ID or IPA installations have a documented memory limit that differs from extended-memory builds. Amiibo is unsupported, and the hidden five-to-eight-player split-screen options are Switch 2-only behavior rather than working Mush8 modes. Check these limits before treating the port as a complete replacement for a console setup."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Mush8 · build, controls and compatibility documentation",
            "url": "https://github.com/c22dev/mush8/blob/1b2e9b875f3beb94802624f055e7a041a473ee3c/README.md"
          },
          {
            "id": "original",
            "label": "Mario Kart 8 Deluxe · Nintendo game introduction",
            "url": "https://mariokart8.nintendo.com/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/c22dev/mush8"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerOnline": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Mario Kart 8 Deluxe base game (.nsp), update 4.0.1 (.nsp) and prod.keys. The Booster Course Pass (.nsp) and a Firmware folder for fonts and Miis are optional. Game data is not included.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/c22dev/mush8/blob/1b2e9b875f3beb94802624f055e7a041a473ee3c/README.md"
        },
        "setup": {
          "answer": "Build from source on an Apple Silicon Mac with Xcode 26 or later and Rust. The project has no published binary release. The iOS build also needs Rust 1.98.1, the aarch64-apple-ios target and xcodegen, plus Apple ID signing or AltStore/SideStore for your locally built IPA.",
          "steps": [
            "Prepare your own base-game NSP, update 4.0.1 NSP and prod.keys. Keep optional Booster Course Pass and firmware files with them.",
            "Follow the repository’s build guide. Its build.sh helper prepares missing tools and asks for the Mac or iOS target; review its installation steps before running it.",
            "On Mac, open the locally built Mush8 app, choose your game-files folder and select Prepare to extract the game and compile shaders.",
            "For iPhone or iPad, build and sign/install the app through Xcode, or build an IPA for AltStore/SideStore. Import your files in the app or copy them into its Mush8 folder in Files."
          ],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/c22dev/mush8/blob/1b2e9b875f3beb94802624f055e7a041a473ee3c/README.md"
        },
        "devices": {
          "answer": "The project targets Apple Silicon Macs on macOS 14 or later, and iPhone/iPad on iOS/iPadOS 26 or later with at least 6 GB RAM (8 GB recommended by the creator). Building requires a Mac capable of running Xcode 26 or later. This is a native app, not a browser game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/c22dev/mush8/blob/1b2e9b875f3beb94802624f055e7a041a473ee3c/README.md"
        },
        "controls": {
          "answer": "The creator documents Switch Pro, Joy-Con, DualSense and Xbox controllers. Mac also supports keyboard input; iPhone and iPad show touch controls when no controller is connected. Gyro steering is optional. An iPhone can act as a touch controller for a Mac or iPad on the same Wi-Fi without game files on the controller phone.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/c22dev/mush8/blob/1b2e9b875f3beb94802624f055e7a041a473ee3c/README.md"
        },
        "multiplayer": {
          "answer": "The creator documents local controllers, LAN on the same network, internet play through lan-play.com servers, and nearby wireless Mush8 sessions. Switch players can join the documented LAN/server modes. Nintendo’s official online service is unavailable, and 5–8-player split screen is hidden.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/c22dev/mush8/blob/1b2e9b875f3beb94802624f055e7a041a473ee3c/README.md"
        },
        "issues": {
          "answer": "Free Apple ID signing and AltStore/SideStore builds use a smaller 5 GB memory layout because they lack the extended virtual addressing entitlement. Nintendo online play and amiibo are unavailable. The two WebM videos play as slideshows on iOS.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/c22dev/mush8/blob/1b2e9b875f3beb94802624f055e7a041a473ee3c/README.md"
        }
      },
      "credits": [
        {
          "name": "Constantin Clerc / C22",
          "role": "port-author",
          "url": "https://github.com/c22dev",
          "evidence": "https://github.com/c22dev/mush8/blob/1b2e9b875f3beb94802624f055e7a041a473ee3c/ios/project.yml",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/c22dev/mush8"
    },
    {
      "id": "project:nagyd-sdlpop",
      "slug": "nagyd-sdlpop",
      "title": "Prince of Persia",
      "project": "SDLPoP",
      "canonicalUrl": "https://playable.wtf/games/nagyd-sdlpop/",
      "originals": [
        {
          "id": "princeofpersia",
          "name": "Prince of Persia",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "Platformer",
      "summary": "A native Prince of Persia port derived from the DOS version, with gamepad support and quick saves.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Deliberate movement and sword fighting",
            "kind": "background",
            "paragraphs": [
              "Jordan Mechner’s original Prince of Persia is a side-scrolling adventure built around running, jumping and sword fighting. SDLPoP follows the DOS version, preserving a movement system in which a careful step and a running jump are different actions. The appeal is learning the timing and physical rules of each room rather than simply holding a direction and jumping continuously."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "DOS foundations with optional conveniences",
            "kind": "project",
            "paragraphs": [
              "SDLPoP is derived from disassembly of the DOS game, with added features including quick saves, replays, a pause menu and controller support. It is a native program with Windows, Linux and macOS instructions. Community ports to other systems are separate builds maintained by other people.",
              "Enhanced mode can enable bug fixes, and individual fixes can be configured. This matters for difficult custom levels that rely on original quirks: fixing a behavior may change the route a level designer expected you to take."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "movement",
            "title": "Learn the careful step and ledge grab",
            "kind": "practical",
            "paragraphs": [
              "Arrow keys move, jump, climb and crouch. Shift is especially important: it picks up items, makes a careful step when combined with a direction, and grabs a ledge while falling. During sword fights, Shift attacks and Up blocks. The pause menu allows keyboard remapping.",
              "A controller maps the same underlying actions rather than adding a different movement model. If its layout behaves unexpectedly, the project documents using an SDL controller database. Controller input can be detected while the game is running."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "saves-and-replays",
            "title": "Quick saves differ from the original save",
            "kind": "practical",
            "paragraphs": [
              "The classic Ctrl+G save records the level, remaining time and health, then resumes at that level’s beginning. SDLPoP’s F6 quicksave preserves the exact state, and F9 restores it. Choose the appropriate system depending on whether you want the original retry structure or to practice a particular jump.",
              "Replays record a run and its relevant settings. Custom-level saves and high scores stay with their mod, so keep the mod directory when moving an installation. This makes practice and experimentation easier without treating every altered level as part of the original campaign."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "SDLPoP · project documentation",
            "url": "https://raw.githubusercontent.com/NagyD/SDLPoP/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "Jordan Mechner · Prince of Persia",
            "url": "https://www.jordanmechner.com/en/games-movies/prince-of-persia/"
          }
        ]
      },
      "families": [
        {
          "id": "prince-of-persia",
          "title": "Prince of Persia",
          "indexUrl": "https://playable.wtf/families/#family-prince-of-persia",
          "guideUrl": "https://playable.wtf/guides/prince-of-persia-versions/",
          "choices": [
            {
              "slug": "oklemenz-princejs",
              "label": "Start in a browser",
              "reason": "PrinceJS documents keyboard, controller and touch input with progress carried in a URL.",
              "canonicalUrl": "https://playable.wtf/games/oklemenz-princejs/"
            },
            {
              "slug": "nagyd-sdlpop",
              "label": "Practice with native quicksaves",
              "reason": "SDLPoP adds exact-state saves and replays to a DOS-based native port.",
              "canonicalUrl": "https://playable.wtf/games/nagyd-sdlpop/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://www.popot.org/get_the_games.php?game=SDLPoP"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "setup": {
          "answer": "Use the compiled package linked by the project, or follow its platform build guide. Exact separately required game-data files are not established by the reviewed download page.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/NagyD/SDLPoP/HEAD/README.md"
        },
        "devices": {
          "answer": "Compiled Windows/Linux and macOS packages are linked from the project README.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.popot.org/get_the_games.php?game=SDLPoP"
        },
        "controls": {
          "answer": "Keyboard controls and hot-plugged gamepads are documented; some controllers need a mapping file.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/NagyD/SDLPoP/HEAD/README.md"
        },
        "saves": {
          "answer": "F6 quick-saves and F9 quick-loads in the documented controls.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/NagyD/SDLPoP/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/NagyD/SDLPoP"
    },
    {
      "id": "project:nathanialf-ico-pc",
      "slug": "nathanialf-ico-pc",
      "title": "ICO",
      "project": "ico-pc",
      "canonicalUrl": "https://playable.wtf/games/nathanialf-ico-pc/",
      "originals": [
        {
          "id": "ico",
          "name": "ICO",
          "relationship": "associated-with"
        }
      ],
      "kind": "Native port",
      "genre": "Adventure",
      "summary": "The PAL PS2 game brought to modern desktop and handheld targets.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "Keep ICO’s PAL presentation or adjust it",
            "kind": "project",
            "paragraphs": [
              "ico-pc runs the PAL PlayStation 2 game with optional sharper rendering, widescreen and other picture effects. Most visual extras start off, while the mouse camera starts enabled. The Original frame-rate choice is available if you want the console’s pacing rather than the port’s default freer presentation.",
              "The new Options menu includes blur and glow controls, input choices and an analogue-stick fix. The latter addresses a particular original behavior: ICO runs in only eight directions, which can make a fully pushed modern stick produce walking at other angles. Enabling the fix allows running in any direction."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "disc",
            "title": "The PAL disc is a strict requirement",
            "kind": "practical",
            "paragraphs": [
              "Use your own SCES-50760 PAL image. ISO, CHD and BIN/CUE inputs are accepted, but other regions and editions are not. First launch extracts about 1 GB of files; after that, the port uses its extracted copy instead of needing the disc image each time.",
              "Windows and Linux can also find an image named Ico_PAL beside the executable, with the appropriate extension. On Windows that means the x64 folder. iPhone setup differs: through LiveContainer, the image must be placed in ICO’s Documents folder with the documented name, because that build has no first-run image picker."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "platforms",
            "title": "Pick the package for your actual device",
            "kind": "practical",
            "paragraphs": [
              "Windows, Linux, Steam Deck, ARM64 Linux and Android have separate packages. Linux requires a recent distribution, and Android requires a 64-bit device with Android 10 or newer. Intel Macs, 32-bit systems and Windows 7/8 are unsupported. Apple Silicon Mac and iPhone packages exist, but the maintainer explicitly lacks Apple hardware for testing.",
              "On Steam Deck, run once in Desktop Mode to import the disc before adding the executable to Steam. Keep the game’s data directory when updating: it contains progress and settings, while the logs folder helps diagnose failures. For iPhone those files stay in the LiveContainer Documents folder; deleting the container is not a routine update step."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "ico-pc · project documentation",
            "url": "https://github.com/nathanialf/ico-pc"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/nathanialf/ico-pc/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported PAL ICO disc image.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/nathanialf/ico-pc"
        },
        "setup": {
          "answer": "Use the platform setup and let the program read the game from your disc image.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/nathanialf/ico-pc"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/nathanialf/ico-pc"
    },
    {
      "id": "project:nblood-nblood",
      "slug": "nblood-nblood",
      "title": "Blood",
      "project": "NBlood",
      "canonicalUrl": "https://playable.wtf/games/nblood-nblood/",
      "originals": [
        {
          "id": "blood",
          "name": "Blood",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "Shooter",
      "summary": "Blood recreated on EDuke32 technology with a documented original-data setup.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Horror built around an unusual arsenal",
            "kind": "background",
            "paragraphs": [
              "Blood pits Caleb against cultists and a collection of supernatural enemies. Its weapons help give it a different personality from a conventional military shooter: the original arsenal ranges from a pitchfork and flare gun to aerosol fire and a voodoo doll. Those tools sit alongside levels built around horror imagery and dark humor.",
              "The original game and Cryptic Passage provide the setting and content described here. Features advertised for the separate Blood: Fresh Supply remaster belong to that release, not automatically to NBlood."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Blood through EDuke32 technology",
            "kind": "project",
            "paragraphs": [
              "NBlood is a reverse-engineered Blood port built using EDuke32 technology. The repository also distributes PCExhumed and Rednukem, but those are different programs for different games. Their supported-game lists, configuration notes and limitations should not be read as Blood features.",
              "The NBlood instructions target Blood 1.21 data. Existing digital installations may be detected directly; a manual installation needs the matching resource archives, art tiles, sound and configuration files. The port download supplies the engine rather than a replacement for an owned copy."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "complete-presentation",
            "title": "Bring the soundtrack and movies with you",
            "kind": "practical",
            "paragraphs": [
              "Music and cutscenes need a little attention when moving an older installation. CD music can be supplied as numbered FLAC or OGG tracks, then enabled through the Redbook audio option. Without that optional setup, the CD soundtrack is not simply recreated from the game’s MIDI data.",
              "For movies, preserve the movie folder itself when copying it. The README gives a separate route for obtaining that folder from a GOG installation. These details are worthwhile if you want the transitions and soundtrack as well as the playable levels."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "expansion-and-settings",
            "title": "Keep expansion and settings files together",
            "kind": "practical",
            "paragraphs": [
              "Cryptic Passage has additional maps, art and its own INI file. Linux launches select it with the documented CRYPTIC.INI option. Do not assume the expansion is present just because the base game starts.",
              "When upgrading an older NBlood setup, rename settings.cfg to nblood_cvars.cfg to carry those settings forward. That small migration is more useful than rebuilding your preferred setup from scratch."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "NBlood · project documentation",
            "url": "https://raw.githubusercontent.com/NBlood/NBlood/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "NBlood · original game publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=1010750&l=english"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/NBlood/NBlood/releases/tag/r14388"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Blood 1.21 data: BLOOD.INI, BLOOD.RFF, GUI.RFF, SOUNDS.RFF, SURFACE.DAT, TILES000.ART through TILES017.ART and VOXEL.DAT. Cryptic Passage, demos, movies and CD music have additional optional files.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/NBlood/NBlood/HEAD/README.md"
        },
        "setup": {
          "answer": "Extract the NBlood package, use a detected Steam/GOG install or copy the listed data beside the executable, then launch NBlood.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/NBlood/NBlood/HEAD/README.md"
        },
        "devices": {
          "answer": "The checked release offers 32-bit and 64-bit Windows NBlood packages; the README also describes Linux use.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/NBlood/NBlood/HEAD/README.md"
        },
        "issues": {
          "answer": "Older settings.cfg files need renaming to nblood_cvars.cfg to retain settings. Other binaries in the same repository target different Build-engine games.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/NBlood/NBlood/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/NBlood/NBlood"
    },
    {
      "id": "project:novapowers0-bloodyroar2recomp",
      "slug": "novapowers0-bloodyroar2recomp",
      "title": "Bloody Roar II",
      "project": "Bloody Roar II Recompiled",
      "canonicalUrl": "https://playable.wtf/games/novapowers0-bloodyroar2recomp/",
      "originals": [
        {
          "id": "bloodyroarii",
          "name": "Bloody Roar II",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Fighting",
      "summary": "A PlayStation recompilation for Windows and Linux.",
      "editorial": {
        "sections": [
          {
            "id": "two-player-fighting-on-pc",
            "title": "Two-player fighting on PC",
            "kind": "project",
            "paragraphs": [
              "Bloody Roar II Recompiled brings the PlayStation 3D fighting game to Windows and Linux as a native executable built from translated MIPS code. The project documents two-player versus play and packages its launcher, OpenBIOS and optional mods together. Playing a release does not require Python or a compiler.",
              "One executable handles supported European and US discs by detecting the disc you mount. Japan/Asia support is included experimentally but is not officially supported. Choose the disc version first rather than looking for a separate region-specific application."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "disc-and-first-launch",
            "title": "Disc images and first launch",
            "kind": "practical",
            "paragraphs": [
              "Extract the release for your operating system and select an image from your own game copy when the launcher asks. The documented formats include BIN/CUE, ISO and CHD. Keep the release’s accompanying launcher files and assets together rather than moving the executable alone.",
              "OpenBIOS is bundled, so a retail PlayStation BIOS is optional. A compatible BIOS from your own hardware can be placed beside the executable if you prefer that route. The package does not include the retail disc data or a commercial BIOS. Supported disc identities are SLES-01722 for Europe and SCUS-94424 for the US."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "mods-that-change-different-things",
            "title": "Choosing visual and speed changes",
            "kind": "project",
            "paragraphs": [
              "Enhancements are off by default. The widescreen mod expands the 3D fight camera instead of merely stretching it, while menus and video remain in their original 4:3 presentation. PGXP aims to reduce polygon wobble and texture warping; the project says its effect needs at least 2× supersampling to be visible.",
              "Turbo and faster loading solve different problems. Turbo changes the game’s pacing, so a higher rate also makes gameplay faster. CD Speed and Fast Loading instead shorten waits without that intended speed-up of the fight. Unlock All is another optional change, bypassing progression for characters and extras, and is skipped during netplay."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "arranging-a-versus-session",
            "title": "Arranging a versus session",
            "kind": "practical",
            "paragraphs": [
              "The launcher offers Create and Join through Netplay, as well as LAN or direct-IP sessions. Both players should use the same release, region and operating system as specified in the current instructions. Matching the title alone is insufficient: the connection checks disc track layout and identity, so an EU disc cannot join a US-disc session.",
              "The host’s enabled mod plan is applied to guests when the session starts, rather than combining everyone’s offline selections. Agree on the setup beforehand, especially speed-changing options. The networking framework is described as rollback-capable, but sessions use delay synchronization by default; that is not a promise that every match will use rollback."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Bloody Roar II Recompiled · project documentation",
            "url": "https://github.com/novapowers0/BloodyRoar2Recomp"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/novapowers0/BloodyRoar2Recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Bloody Roar II disc image.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/novapowers0/BloodyRoar2Recomp"
        },
        "setup": {
          "answer": "Select the correct platform release and provide your disc when the launcher asks.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/novapowers0/BloodyRoar2Recomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/novapowers0/BloodyRoar2Recomp"
    },
    {
      "id": "project:obaidr1-hercules-recompiled",
      "slug": "obaidr1-hercules-recompiled",
      "title": "Disney’s Hercules",
      "project": "Hercules Recompiled",
      "canonicalUrl": "https://playable.wtf/games/obaidr1-hercules-recompiled/",
      "originals": [
        {
          "id": "disneyshercules",
          "name": "Disney’s Hercules",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Platformer",
      "summary": "The PlayStation action game recompiled for Windows and Linux.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "The PAL PlayStation game, with optional polish",
            "kind": "project",
            "paragraphs": [
              "Hercules Recompiled brings the PlayStation action game to Windows and Linux while retaining its game logic. It supports five PAL editions: English, French, German, Italian and Spanish. The launcher can go directly to a selected level, while the in-game menu switches between original and HD presentation, CRT effects and 4:3 or widescreen.",
              "The widescreen option draws additional scenery and characters at the sides rather than stretching the center. The animation cadence remains the PAL game’s 25 pictures per second. On a 60-Hz display that can look uneven; a 50- or 100-Hz display presents each picture for an equal interval. The port does not claim interpolated high-frame-rate animation."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "disc-and-graphics",
            "title": "Match the language to your disc",
            "kind": "practical",
            "paragraphs": [
              "Extract the package into its own folder and select the CUE file from your PAL CUE/BIN dump. The launcher language selects the matching disc edition, so an English disc is not a substitute for the requested German version. US and Japanese discs are unsupported.",
              "HD graphics are optional and separate from the main package. Current launcher versions fetch an available pack in the background after the first game; if one is unavailable for your disc, local generation can take hours and needs additional disk space. Original graphics remain usable while that work runs."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controls",
            "title": "Use save states and rewind deliberately",
            "kind": "practical",
            "paragraphs": [
              "The arrow keys move, while X, S, Z and A map to the PlayStation face buttons. Esc opens a menu that pauses play and includes key rebinding; a controller can open the same menu with Select plus Start. Choose a comfortable mapping there rather than translating every console prompt mentally.",
              "F7 opens twelve illustrated save-state slots, F8 rewinds and holding Tab fast-forwards. These shortcuts make returning to a tricky section more convenient, but they are separate actions with different effects: loading a state returns to the selected snapshot, while fast-forward simply speeds through the current sequence. The menu keeps graphical and input changes for later sessions."
            ],
            "sourceIds": [
              "controls"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Hercules Recompiled · project documentation",
            "url": "https://github.com/obaidr1/hercules-recompiled"
          },
          {
            "id": "controls",
            "label": "Hercules Recompiled · controls",
            "url": "https://github.com/obaidr1/hercules-recompiled/blob/HEAD/port/CONTROLS.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/obaidr1/hercules-recompiled/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported PAL Hercules disc.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/obaidr1/hercules-recompiled"
        },
        "setup": {
          "answer": "Use the launcher with your disc and choose the available language/presentation settings.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/obaidr1/hercules-recompiled"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/obaidr1/hercules-recompiled"
    },
    {
      "id": "project:oklemenz-princejs",
      "slug": "oklemenz-princejs",
      "title": "Prince of Persia",
      "project": "PrinceJS",
      "canonicalUrl": "https://playable.wtf/games/oklemenz-princejs/",
      "originals": [
        {
          "id": "princeofpersia",
          "name": "Prince of Persia",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Browser engine recreation",
      "genre": "Platformer",
      "summary": "Prince of Persia reimplemented in JavaScript with keyboard, gamepad and touch controls.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original Prince of Persia",
            "kind": "background",
            "paragraphs": [
              "Jordan Mechner’s original Prince of Persia is a side-scrolling game about running, jumping and sword fighting. Its animation began with filmed human movement, giving the prince a particular sense of weight and commitment. Mechner first made it for the Apple II; PrinceJS follows the later MS-DOS version.",
              "The appeal is in reading a room and executing the sequence it demands. A jump, a ledge grab and a sword exchange ask for different timing. It is a good fit for players who want a compact action puzzle rather than a platform game based only on constant forward speed."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "A browser adaptation with adjustable starting conditions",
            "kind": "project",
            "paragraphs": [
              "PrinceJS rebuilds the game in HTML5 and JavaScript. It includes keyboard, controller and touch input, plus links to converted custom level sets. The normal level range is 1–14; custom sets use other numbered routes. Conversions do not support special events, so a custom level is not necessarily identical to its original release."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "playing",
            "title": "Learn movement and sword actions together",
            "kind": "practical",
            "paragraphs": [
              "Use the arrow keys for movement, jumping, climbing and combat positioning. Shift handles actions including grabbing an edge and striking with the sword; Up blocks in combat, and Down sheathes the weapon. On a phone, use landscape and the documented touch regions: dragging between regions lets you chain a running jump into a grab."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "progress",
            "title": "Keep the URL to keep your starting state",
            "kind": "practical",
            "paragraphs": [
              "The address stores the level, maximum health, remaining time and guard strength. Bookmark that address to retain those settings. It is a level-and-settings handoff, not a promise to preserve every mid-room movement. You can also edit these parameters deliberately; lower guard strength offers a gentler way to learn sword timing without changing the basic controls."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Jordan Mechner · Prince of Persia",
            "url": "https://www.jordanmechner.com/en/games-movies/prince-of-persia/"
          },
          {
            "id": "project",
            "label": "PrinceJS · controls, options and custom levels",
            "url": "https://github.com/oklemenz/PrinceJS"
          }
        ]
      },
      "families": [
        {
          "id": "prince-of-persia",
          "title": "Prince of Persia",
          "indexUrl": "https://playable.wtf/families/#family-prince-of-persia",
          "guideUrl": "https://playable.wtf/guides/prince-of-persia-versions/",
          "choices": [
            {
              "slug": "oklemenz-princejs",
              "label": "Start in a browser",
              "reason": "PrinceJS documents keyboard, controller and touch input with progress carried in a URL.",
              "canonicalUrl": "https://playable.wtf/games/oklemenz-princejs/"
            },
            {
              "slug": "nagyd-sdlpop",
              "label": "Practice with native quicksaves",
              "reason": "SDLPoP adds exact-state saves and replays to a DOS-based native port.",
              "canonicalUrl": "https://playable.wtf/games/nagyd-sdlpop/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://princejs.com/"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The documented hosted route opens directly in a browser without an original-file import step.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md"
        },
        "setup": {
          "answer": "Open princejs.com. Use keyboard or controller on desktop, or the documented touch regions in landscape on mobile.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md"
        },
        "devices": {
          "answer": "Desktop and mobile browser use are documented; the mobile guide recommends landscape mode.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md"
        },
        "controls": {
          "answer": "Arrow keys move; Shift handles sword, potion and edge actions. The README also documents gamepad buttons and touch gestures.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md"
        },
        "issues": {
          "answer": "Converted custom levels do not support special events.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md"
        },
        "saves": {
          "answer": "Level, health, remaining time and difficulty are stored in URL parameters; preserve the URL to retain that state.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/oklemenz/PrinceJS/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/oklemenz/PrinceJS"
    },
    {
      "id": "project:open-annihilation-open-annihilation",
      "slug": "open-annihilation-open-annihilation",
      "title": "Total Annihilation",
      "project": "Open Annihilation",
      "canonicalUrl": "https://playable.wtf/games/open-annihilation-open-annihilation/",
      "originals": [
        {
          "id": "totalannihilation",
          "name": "Total Annihilation",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Strategy",
      "summary": "A replacement engine for Total Annihilation on modern desktop systems.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "War across land, sea and air",
            "kind": "background",
            "paragraphs": [
              "Total Annihilation is a real-time strategy game about the long war between the Arm and Core. Its armies mix walking robots, vehicles, aircraft, ships and fixed defenses on three-dimensional terrain. Different maps make those forces useful in different combinations: a water-heavy battlefield asks different questions from open land covered by long-range weapons.",
              "The original campaigns introduce larger arsenals through missions, while skirmishes and multiplayer emphasize building and directing an army. That is background on the retail game. Open Annihilation’s own single-player roadmap and supported data requirements determine how much of that design is currently available here."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "engine-scope",
            "title": "A modern home for Total Annihilation data",
            "kind": "project",
            "paragraphs": [
              "Open Annihilation is an engine for the original Total Annihilation, with current desktop builds and additional platform-specific installation routes. It uses your own installed game data with the 3.1 update. Total Annihilation: Kingdoms is a roadmap item, so owning Kingdoms does not provide a substitute set of supported files.",
              "The project’s scope also needs a distinction within Total Annihilation itself: completing the rest of the single-player game remains on its roadmap. Network play, mods and useful tools can be documented without turning that ongoing work into a blanket campaign-completion claim."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "mods-and-replays",
            "title": "Explore mods and revisit a battle",
            "kind": "project",
            "paragraphs": [
              "The in-game Library manages mods, map packs and languages, including updates and rollbacks. Mods describe changes to the standard game through a profile that the engine applies. This offers a practical way to explore a different ruleset while keeping track of which mod and maps a session uses.",
              "The Demo Recorder provides a way to revisit supported recorded games, but a replay still depends on its environment. The viewer requires the supported recorder format, an installed map and the same units, including mod content where applicable. A recording is not a self-contained bundle of the game it depicts."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installation-options",
            "title": "Full data, demo data and platform choices",
            "kind": "practical",
            "paragraphs": [
              "The README documents a free original demo-data route as well as the full game. Follow that section’s installer verification and extraction steps if exploring the engine before supplying a full installation. Neither route includes game content inside the engine download.",
              "Desktop installation guides cover macOS, Windows and Linux. iPhone and iPad have a separate build-on-your-Mac process, while the Steam Deck package is labeled experimental. Open the engine settings with Command-comma on macOS or Control-comma elsewhere; the in-game OA menu also leads to its settings and Library. Choose the guide for the actual device rather than assuming every platform has the same package or setup."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Open Annihilation · project documentation",
            "url": "https://github.com/open-annihilation/open-annihilation"
          },
          {
            "id": "original",
            "label": "Total Annihilation · publisher description on Steam",
            "url": "https://store.steampowered.com/app/298030/Total_Annihilation/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/open-annihilation/open-annihilation/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Total Annihilation installation with update 3.1.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/open-annihilation/open-annihilation"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/open-annihilation/open-annihilation"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/open-annihilation/open-annihilation"
    },
    {
      "id": "project:opencommunityedition-opence",
      "slug": "opencommunityedition-opence",
      "title": "Halo: Combat Evolved",
      "project": "OpenCE",
      "canonicalUrl": "https://playable.wtf/games/opencommunityedition-opence/",
      "originals": [
        {
          "id": "halocombatevolved",
          "name": "Halo: Combat Evolved",
          "relationship": "associated-with"
        }
      ],
      "kind": "Source port",
      "genre": "Shooter",
      "summary": "The Halo CE decompilation brought to modern native platforms.",
      "editorial": {
        "sections": [
          {
            "id": "xbox-halo-on-new-systems",
            "title": "The Xbox game on new systems",
            "kind": "project",
            "paragraphs": [
              "OpenCE brings the Xbox version of Halo: Combat Evolved to Windows, Linux, Android and the web through a native port of its decompilation. This is a different starting point from the original Windows release: the project retains Xbox campaign and split-screen foundations while adding desktop input, platform-specific rendering and new networking.",
              "Choose a release build for playing. Debug builds deliberately stop at failed assertions to help diagnose problems, so they are a poor choice for a normal campaign session. New builds arrive frequently; the release archive retains several earlier versions if an update introduces trouble."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "campaign-and-shared-screens",
            "title": "Campaign, controls and shared screens",
            "kind": "practical",
            "paragraphs": [
              "The campaign menu can continue a profile’s saved game or start a reached level at a chosen difficulty. Two people can also start the Xbox-style campaign in local split screen. That co-op session chooses a level and difficulty rather than continuing one person’s single-player save. A keyboard-and-mouse player can share a machine with a second player using a gamepad.",
              "On desktop, movement uses WASD and aiming uses the mouse. F performs a melee attack, right mouse or G throws a grenade, and E handles interactions, weapon pickups and vehicles. Actions can have two bindings. Network matches also support additional local players joining with controllers, which gives this port an unusual combination of desktop controls and shared-screen play."
            ],
            "sourceIds": [
              "platform"
            ]
          },
          {
            "id": "bring-your-xbox-disc",
            "title": "Importing a disc and choosing a platform",
            "kind": "practical",
            "paragraphs": [
              "Supply an image of your own Xbox disc as an ISO or XISO; OpenCE does not include the maps. The first-run importer extracts them beside the desktop executable, into Android’s app storage, or into the website’s browser storage. The browser import is local and does not upload the image. Clearing that site’s storage removes the imported browser data.",
              "Desktop builds use OpenGL 4.5, Android uses OpenGL ES 3 on arm64, and the web build requires WebGL 2 in a supported desktop browser. These are separate launch paths. A successful native installation does not establish that the same machine’s browser configuration will run the web version."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "networking-and-current-limits",
            "title": "Networking and current limits",
            "kind": "limitations",
            "paragraphs": [
              "The project documents system-link games, internet invites and native/browser connections using its new networking. Its menus and networking are still changing, however. The desktop documentation identifies PC-style menu screens whose lists or settings are not yet connected; the Xbox menu option is the fallback for starting every game type.",
              "Save compatibility needs particular care: the documentation says saved games from older port builds do not work with newer ones. Keep a separate copy before updating if preserving a campaign matters. Treat the current release’s multiplayer instructions and platform notes as the starting point for arranging a session, rather than assuming compatibility with another Halo port."
            ],
            "sourceIds": [
              "project",
              "platform"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenCE · project documentation",
            "url": "https://github.com/OpenCommunityEdition/OpenCE"
          },
          {
            "id": "platform",
            "label": "OpenCE · desktop controls, campaign and limitations",
            "url": "https://github.com/OpenCommunityEdition/OpenCE/blob/HEAD/port/linux/README.md"
          }
        ]
      },
      "families": [
        {
          "id": "halo",
          "title": "Halo: Combat Evolved",
          "indexUrl": "https://playable.wtf/families/#family-halo",
          "guideUrl": "https://playable.wtf/guides/halo-ce-browser-versions/",
          "choices": [
            {
              "slug": "halo-combat-evolved",
              "label": "Browser with a mouse",
              "reason": "Direct XISO import, desktop bindings and private map-and-mode invite rooms.",
              "canonicalUrl": "https://playable.wtf/games/halo-combat-evolved/"
            },
            {
              "slug": "halo-ce-mobile",
              "label": "Phone controls",
              "reason": "Editable touch layouts, home-screen installation and per-copy save export.",
              "canonicalUrl": "https://playable.wtf/games/halo-ce-mobile/"
            },
            {
              "slug": "opencommunityedition-opence",
              "label": "Native desktop play",
              "reason": "Windows and Linux releases with disc import and documented local split-screen campaign.",
              "canonicalUrl": "https://playable.wtf/games/opencommunityedition-opence/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/OpenCommunityEdition/OpenCE/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Halo: Combat Evolved Xbox disc image (.iso or .xiso).",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/OpenCommunityEdition/OpenCE"
        },
        "setup": {
          "answer": "Follow OpenCE’s download and disc-import instructions for your platform.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/OpenCommunityEdition/OpenCE"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/OpenCommunityEdition/OpenCE"
    },
    {
      "id": "project:openlara",
      "slug": "openlara",
      "title": "Tomb Raider",
      "project": "OpenLara",
      "canonicalUrl": "https://playable.wtf/games/openlara/",
      "originals": [
        {
          "id": "tombraider",
          "name": "Tomb Raider",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser engine reimplementation",
      "genre": "Adventure",
      "summary": "Classic Tomb Raider exploration, rebuilt for a WebGL tab.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Reading the room is part of Tomb Raider",
            "kind": "background",
            "paragraphs": [
              "The original Tomb Raider follows Lara Croft in a search for the pieces of the Scion. Its exploration mixes running, jumping, swimming and climbing with puzzles and combat. Getting through a room is often about understanding its shape and finding a route, which makes the spaces themselves as important as the enemies within them.",
              "That background explains why a single Tomb Raider level can be a useful engine demonstration: it gives you a place to try movement and explore a three-dimensional environment without implying that an entire campaign is included."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "demo",
            "title": "A WebGL demonstration of OpenLara",
            "kind": "project",
            "paragraphs": [
              "OpenLara is an open-source engine for classic Tomb Raider. The project's README links a WebGL build with a demo level and separately provides standalone releases. The browser launch is therefore a convenient way to try the engine; the desktop project and the hosted demonstration are distinct ways to use it.",
              "Screenshots and work across the wider engine project should not be read as a list of levels supplied by this browser link. The specific browser offer described by the README is the included demo level. Use the project's own release documentation when considering a standalone version or further game data."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "saves",
            "title": "Browser save slots stay with the profile",
            "kind": "practical",
            "paragraphs": [
              "The web engine reads and writes save slots through IndexedDB, the browser's local site storage. Keep using the same browser profile if you want to return to those slots. Clearing the site's storage removes the local records; opening the same URL on another computer does not by itself transfer them. This is different from keeping a save file in the standalone game's directory."
            ],
            "sourceIds": [
              "storage"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Tomb Raider · original publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=224960&l=english"
          },
          {
            "id": "project",
            "label": "OpenLara · README and WebGL demo",
            "url": "https://raw.githubusercontent.com/XProger/OpenLara/HEAD/README.md"
          },
          {
            "id": "storage",
            "label": "OpenLara · web save implementation",
            "url": "https://raw.githubusercontent.com/XProger/OpenLara/HEAD/src/platform/web/main.cpp"
          }
        ]
      },
      "families": [
        {
          "id": "tomb-raider",
          "title": "Tomb Raider",
          "indexUrl": "https://playable.wtf/families/#family-tomb-raider",
          "guideUrl": "https://playable.wtf/guides/tomb-raider-versions/",
          "choices": [
            {
              "slug": "openlara",
              "label": "Try a browser demo",
              "reason": "OpenLara’s creator links a WebGL build with a demo level.",
              "canonicalUrl": "https://playable.wtf/games/openlara/"
            },
            {
              "slug": "lostartefacts-trx",
              "label": "Play your owned adventures",
              "reason": "TRX runs the first three games with configurable controls and presentation.",
              "canonicalUrl": "https://playable.wtf/games/lostartefacts-trx/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://xproger.info/projects/OpenLara/"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The linked WebGL build includes a demo level. Requirements for additional levels are not confirmed here.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/XProger/OpenLara"
        },
        "setup": {
          "answer": "Open the creator’s WebGL build from the project page; the demo level is included.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/XProger/OpenLara"
        },
        "devices": {
          "answer": "A WebGL-capable browser is needed. Mobile support is not confirmed.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/XProger/OpenLara"
        },
        "saves": {
          "answer": "The web engine stores save slots in IndexedDB in the current browser profile. Clearing this site’s storage removes those local slots.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/XProger/OpenLara/HEAD/src/platform/web/main.cpp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/XProger/OpenLara"
    },
    {
      "id": "project:openmw-openmw",
      "slug": "openmw-openmw",
      "title": "The Elder Scrolls III: Morrowind",
      "project": "OpenMW",
      "canonicalUrl": "https://playable.wtf/games/openmw-openmw/",
      "originals": [
        {
          "id": "theelderscrollsiiimorrowind",
          "name": "The Elder Scrolls III: Morrowind",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "RPG",
      "summary": "Morrowind on an open-source replacement engine.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "An RPG built around choosing your own route",
            "kind": "background",
            "paragraphs": [
              "Morrowind lets you create a character and decide how closely to follow its main story. You can investigate the blight threatening the land, explore unfamiliar places or develop your character through the actions you take. Tribunal adds Mournhold and its surrounding mysteries; Bloodmoon moves the adventure to the colder island of Solstheim.",
              "That open-ended structure makes the choice of engine and mods consequential for a long campaign. OpenMW supplies an alternative foundation for playing your owned game, while Bethesda’s world, quests and expansion assets remain the content you install."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "engine-scope",
            "title": "What OpenMW replaces",
            "kind": "project",
            "paragraphs": [
              "OpenMW is a replacement game engine, not merely a widescreen patch for the original executable. Its documentation describes the main quests of Morrowind, Tribunal and Bloodmoon as completable, while acknowledging rare side-quest issues. It also includes OpenMW-CS, a replacement for the Construction Set used to author content.",
              "The current project documentation supports 64-bit Windows, macOS and Linux. Its graphics and interface improvements live in this engine, so use OpenMW’s settings and documentation when configuring a playthrough rather than applying instructions intended only for the original Windows program."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installation",
            "title": "Point the launcher at the actual game data",
            "kind": "practical",
            "paragraphs": [
              "The installation wizard can use a retail disc or an existing Morrowind installation. For an existing copy, locate Morrowind.esm, import Morrowind.ini when prompted, and enable the master file in the launcher’s Data Files tab. The guide also explains extracting GOG installers on Linux or macOS.",
              "If both expansions are installed, Bloodmoon.esm belongs below Tribunal.esm in the data-file order. Getting the base game and expansion order working first gives you a dependable starting point before adding a larger mod list."
            ],
            "sourceIds": [
              "install"
            ]
          },
          {
            "id": "mod-compatibility",
            "title": "Check mods against this engine",
            "kind": "limitations",
            "paragraphs": [
              "A mod made for Morrowind does not automatically work in OpenMW. The replacement engine checks scripts more strictly, and some older mods depend on original engine bugs or unusual behavior. The project handles these cases individually: sometimes OpenMW adds compatibility, and sometimes the mod needs a change.",
              "Use OpenMW’s mod-status resources for the particular mods you want. For a new campaign, confirm your essential content before investing in a character rather than assuming a long list designed for another engine will transfer unchanged."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenMW · project documentation",
            "url": "https://github.com/OpenMW/openmw"
          },
          {
            "id": "original",
            "label": "Bethesda · Morrowind Game of the Year Edition",
            "url": "https://store.steampowered.com/app/22320/The_Elder_Scrolls_III_Morrowind_Game_of_the_Year_Edition/"
          },
          {
            "id": "install",
            "label": "OpenMW · installing game files",
            "url": "https://openmw.readthedocs.io/en/latest/manuals/installation/install-game-files.html"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/OpenMW/openmw/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Morrowind installation.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/OpenMW/openmw"
        },
        "setup": {
          "answer": "Install OpenMW and follow its wizard to select the original game data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/OpenMW/openmw"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/OpenMW/openmw"
    },
    {
      "id": "project:openra-openra",
      "slug": "openra-openra",
      "title": "Command & Conquer / Red Alert / Dune 2000",
      "project": "OpenRA",
      "canonicalUrl": "https://playable.wtf/games/openra-openra/",
      "originals": [
        {
          "id": "commandconquer",
          "name": "Command & Conquer",
          "relationship": "reimplementation-of"
        },
        {
          "id": "commandconquerredalert",
          "name": "Command & Conquer: Red Alert",
          "relationship": "reimplementation-of"
        },
        {
          "id": "dune2000",
          "name": "Dune 2000",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine recreation",
      "genre": "Strategy",
      "summary": "Classic Westwood real-time strategy games reimagined in a modern native engine.",
      "editorial": {
        "sections": [
          {
            "id": "three-games",
            "title": "Three different strategy settings",
            "kind": "background",
            "paragraphs": [
              "OpenRA brings together three Westwood settings. Tiberian Dawn centers on a conflict around the dangerous resource Tiberium; Red Alert offers an alternate-history struggle across land, sea and air; Dune 2000 takes competing houses to the spice fields of Arrakis. The shared real-time strategy format makes them related, but their armies and environments give each a different character."
            ],
            "sourceIds": [
              "about"
            ]
          },
          {
            "id": "modern-rules",
            "title": "Choose it for revised rules and modern controls",
            "kind": "project",
            "paragraphs": [
              "These are OpenRA’s interpretations of the games, with their own balance and interface decisions. They should not be treated as exact substitutes for the original executables. The project adds production queues, hotkeys, attack-move orders, unit stances and fog of war, and offers both classic left-click and right-click control schemes.",
              "Replays and an observer interface also make it useful for following matches and learning from them. Tiberian Dawn emphasizes brisk play with multiple production queues, while the Red Alert mod offers a wide range of tactical unit combinations. The included Dune 2000 mod aims closer to the original experience."
            ],
            "sourceIds": [
              "about"
            ]
          },
          {
            "id": "first-match",
            "title": "Install the release that matches your opponents",
            "kind": "practical",
            "paragraphs": [
              "Choose the native package for Windows, macOS or Linux, then open the mod you want to play. Its first-run process downloads or copies the relevant original assets. That asset step is separate from installing the open-source engine; the engine’s license does not turn the original artwork and sound into engine code.",
              "For ordinary online matches, the project recommends the release channel. Playtests are separate versions, so coordinate with friends before installing a test build. OpenRA’s download page also distinguishes the supported packages from community packaging, which is useful when troubleshooting platform-specific installation problems."
            ],
            "sourceIds": [
              "download"
            ]
          },
          {
            "id": "beyond-the-package",
            "title": "Community content is a separate choice",
            "kind": "limitations",
            "paragraphs": [
              "The repository links mapping tools, a Mod SDK and the community resource center. Custom maps can alter rules, so choosing a map can also mean choosing a different style of match. Tiberian Sun remains a separate development effort rather than a fourth finished game bundled into this download. Install additional projects according to their own instructions and keep their scope separate from the three official mods."
            ],
            "sourceIds": [
              "project",
              "about"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenRA · README",
            "url": "https://raw.githubusercontent.com/OpenRA/OpenRA/HEAD/README.md"
          },
          {
            "id": "about",
            "label": "OpenRA · games and engine features",
            "url": "https://www.openra.net/about/"
          },
          {
            "id": "download",
            "label": "OpenRA · platform and release guidance",
            "url": "https://www.openra.net/download/"
          }
        ]
      },
      "families": [
        {
          "id": "command-and-conquer",
          "title": "Command & Conquer",
          "indexUrl": "https://playable.wtf/families/#family-command-and-conquer",
          "guideUrl": "https://playable.wtf/guides/command-and-conquer-versions/",
          "choices": [
            {
              "slug": "red-alert-2-browser",
              "label": "Red Alert 2 in a browser",
              "reason": "Chrono Divide offers browser multiplayer with classic or modern command controls.",
              "canonicalUrl": "https://playable.wtf/games/red-alert-2-browser/"
            },
            {
              "slug": "generals-zero-hour-browser",
              "label": "Use your Zero Hour installation",
              "reason": "GeneralsX Web reads your installed game through a WebGPU browser.",
              "canonicalUrl": "https://playable.wtf/games/generals-zero-hour-browser/"
            },
            {
              "slug": "openra-openra",
              "label": "Install revised classic RTS games",
              "reason": "OpenRA provides its own Tiberian Dawn, Red Alert and Dune 2000 rulesets.",
              "canonicalUrl": "https://playable.wtf/games/openra-openra/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/OpenRA/OpenRA/releases/tag/release-20250330"
        }
      },
      "fileRequirement": "optional",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The mods require original-game assets. OpenRA prompts you to download or copy the relevant assets on first launch; the engine license does not cover those game files.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.openra.net/download/"
        },
        "setup": {
          "answer": "Install a release for your operating system, select Red Alert, Tiberian Dawn or Dune 2000, and complete the mod-specific asset setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.openra.net/download/"
        },
        "devices": {
          "answer": "Windows, macOS and Linux packages are available.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.openra.net/download/"
        },
        "multiplayer": {
          "answer": "The release channel is recommended by the project for online multiplayer; playtests use a separate version.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://www.openra.net/download/"
        },
        "issues": {
          "answer": "These are reimagined rulesets, not exact reproductions of the original games.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/OpenRA/OpenRA/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/OpenRA/OpenRA"
    },
    {
      "id": "project:openrct2",
      "slug": "openrct2",
      "title": "RollerCoaster Tycoon 2",
      "project": "OpenRCT2",
      "canonicalUrl": "https://playable.wtf/games/openrct2/",
      "originals": [
        {
          "id": "rollercoastertycoon2",
          "name": "RollerCoaster Tycoon 2",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Simulation",
      "summary": "A deeper route back to RollerCoaster Tycoon 2.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Build a park people want to visit",
            "kind": "background",
            "paragraphs": [
              "RollerCoaster Tycoon 2 combines construction with the less glamorous decisions that keep an amusement park running. Rides attract guests, but shops, facilities, staff and finances determine whether the park can support them. A successful design has to make money and keep visitors happy, so a spectacular coaster is only one part of the puzzle.",
              "Scenarios supply objectives and deadlines; sandbox play leaves more room to build freely, including optional removal of financial restrictions. That contrast makes the game appealing both as a management challenge and as a place to spend an evening arranging paths, scenery and rides."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "why-openrct2",
            "title": "More room to build, alone or together",
            "kind": "project",
            "paragraphs": [
              "OpenRCT2 reimplements the original engine and expands it with modern platform support, interface improvements, additional editing tools and higher limits. Its documented changes include guest and staff AI improvements and cooperative multiplayer. Players returning to an old park gain more than a different way to start the executable.",
              "The project also brings back selected mechanics from the first RollerCoaster Tycoon, including its mountain tool and certain coaster and objective behavior. If you own the first game and its expansions, OpenRCT2 can use their files for original scenarios. Those optional imports are separate from the RCT2 data required for the main installation."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installation",
            "title": "Choose a release and connect your game files",
            "kind": "practical",
            "paragraphs": [
              "Use the project’s platform download or launcher, then follow the installation guide for your original game data. The engine download and the graphics and music it needs are separate; keep your supported RCT2 or RCT Classic installation available during setup. A launcher is offered for Windows, macOS and Linux, while Linux users also have a documented Flatpak route.",
              "The download site distinguishes releases from development builds. Pick deliberately, particularly when arranging a shared park with friends, and follow the matching project documentation rather than assuming every build has identical behavior. This is an installed game with its own update path."
            ],
            "sourceIds": [
              "project",
              "install"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenRCT2 · gameplay and features",
            "url": "https://github.com/OpenRCT2/OpenRCT2/blob/develop/readme.md"
          },
          {
            "id": "install",
            "label": "OpenRCT2 · Windows installation",
            "url": "https://raw.githubusercontent.com/OpenRCT2/docs/HEAD/installing/installing-on-windows.rst"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://openrct2.io/"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Requires original RollerCoaster Tycoon 2 or RCT Classic graphic and music files.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://docs.openrct2.io/en/latest/installing/installing-on-windows.html"
        },
        "setup": {
          "answer": "Install OpenRCT2, then point it to your RCT2 or RCT Classic installation if it is not found automatically.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://docs.openrct2.io/en/latest/installing/installing-on-windows.html"
        },
        "devices": {
          "answer": "Downloadable desktop project. See the project’s installation pages for supported systems.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://docs.openrct2.io/en/latest/installing/index.html"
        },
        "multiplayer": {
          "answer": "Project documentation refers to online servers; multiplayer setup differs from local play.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://docs.openrct2.io/en/latest/installing/installing-on-windows.html"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/OpenRCT2/OpenRCT2"
    },
    {
      "id": "project:openttd-online-web",
      "slug": "openttd-online-web",
      "title": "Transport Tycoon Deluxe",
      "project": "OpenTTD Online",
      "canonicalUrl": "https://playable.wtf/games/openttd-online-web/",
      "originals": [
        {
          "id": "transporttycoondeluxe",
          "name": "Transport Tycoon Deluxe",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser engine remake",
      "genre": "Simulation",
      "summary": "Build railways and transport networks with OpenTTD’s free assets and browser save transfers.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Turn a landscape into a transport network",
            "kind": "background",
            "paragraphs": [
              "OpenTTD is an open-source reimplementation of Transport Tycoon Deluxe. You build roads, railways, docks and airports to connect towns and industries. The interesting problem is not simply buying a vehicle: it is making the route, stations and orders work together, then expanding without making the network harder to operate.",
              "The official tutorial starts with buses before moving to trains and aircraft. That progression is useful for a first visit because the basic sequence—build the infrastructure, buy a vehicle and give it orders—carries into larger transport systems."
            ],
            "sourceIds": [
              "project",
              "tutorial"
            ]
          },
          {
            "id": "this-version",
            "title": "Free assets and a browser save bridge",
            "kind": "project",
            "paragraphs": [
              "This web build includes OpenGFX, OpenSFX and OpenMSX, so it does not require original Transport Tycoon data to begin. The host identifies the game as OpenTTD 15.3 and supports save import and export between browser and desktop play.",
              "Online Content connects to OpenTTD's add-on service for items such as graphics, AIs and scenarios. That label describes downloadable content; it should not be read as a promise that this browser build offers multiplayer sessions. The host also links a separate iOS test build, which has its own experimental status."
            ],
            "sourceIds": [
              "project",
              "host"
            ]
          },
          {
            "id": "first-route",
            "title": "Start with a small route you can inspect",
            "kind": "practical",
            "paragraphs": [
              "Pause a new map and look for a simple opportunity. A bus route needs stops, a depot, a purchased bus and orders telling it which stops to visit. Build those pieces before unpausing, then watch the first journey. Seeing a vehicle complete its orders is a better foundation than laying out a huge network immediately.",
              "Hover over toolbar buttons for their tooltips. Some menus open by holding the mouse button, moving to an option and releasing; knowing that interaction makes the dense interface easier to explore. Keep a starter save before experimenting with a larger network or add-ons, and export it if you want a copy outside browser storage."
            ],
            "sourceIds": [
              "tutorial",
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenTTD Online · project and free asset packs",
            "url": "https://github.com/swords02/openttd-online"
          },
          {
            "id": "host",
            "label": "OpenTTD Online · browser features and tutorial",
            "url": "https://openttdonline.com/"
          },
          {
            "id": "tutorial",
            "label": "OpenTTD · official beginner tutorial",
            "url": "https://wiki.openttd.org/en/Manual/Tutorial/"
          }
        ]
      },
      "families": [
        {
          "id": "openttd",
          "title": "Transport Tycoon / OpenTTD",
          "indexUrl": "https://playable.wtf/families/#family-openttd",
          "guideUrl": "https://playable.wtf/guides/openttd-browser-native/",
          "choices": [
            {
              "slug": "openttd-online-web",
              "label": "Build in a browser",
              "reason": "Owen Gerke’s host bundles free assets and provides save import and export.",
              "canonicalUrl": "https://playable.wtf/games/openttd-online-web/"
            },
            {
              "slug": "openttd-openttd",
              "label": "Install native OpenTTD",
              "reason": "The upstream desktop application offers local files and documented multiplayer.",
              "canonicalUrl": "https://playable.wtf/games/openttd-openttd/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://openttdonline.com/play/"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The browser build includes the free OpenGFX, OpenSFX and OpenMSX packs, so original Transport Tycoon Deluxe files are not required.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/swords02/openttd-online/blob/main/README.md"
        },
        "setup": {
          "answer": "Open Launch Game, wait for the engine and resources, then start a new game or import a save/scenario.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://openttdonline.com/"
        },
        "devices": {
          "answer": "The project targets modern browsers and links a separate iOS test build. Treat iOS as a test route, not the same desktop compatibility claim.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://openttdonline.com/"
        },
        "controls": {
          "answer": "Use the mouse or trackpad to build routes and assign orders. The tutorial describes wheel/trackpad zoom and pausing while planning.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://openttdonline.com/"
        },
        "scope": {
          "answer": "OpenTTD 15.3 with browser save transfers and Online Content support for AIs, graphics and scenarios.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://openttdonline.com/"
        },
        "saves": {
          "answer": "The browser toolbar imports and exports saves, scenarios and heightmaps. Keep an exported backup when moving between devices or clearing site data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://openttdonline.com/play/"
        }
      },
      "credits": [
        {
          "name": "Owen Gerke / Overgrown Studio",
          "role": "port-author",
          "url": "https://github.com/swords02/openttd-online",
          "evidence": "https://github.com/swords02/openttd-online",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/swords02/openttd-online"
    },
    {
      "id": "project:openttd-openttd",
      "slug": "openttd-openttd",
      "title": "Transport Tycoon Deluxe",
      "project": "OpenTTD",
      "canonicalUrl": "https://playable.wtf/games/openttd-openttd/",
      "originals": [
        {
          "id": "transporttycoondeluxe",
          "name": "Transport Tycoon Deluxe",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Simulation",
      "summary": "A transport-management recreation with replacement base assets.",
      "editorial": {
        "sections": [
          {
            "id": "building-networks",
            "title": "Build a transport network that earns its keep",
            "kind": "project",
            "paragraphs": [
              "OpenTTD puts you in charge of a transport company connecting towns and industries by road, rail, air and water. Choosing a promising route is only the beginning: the vehicles, stations and infrastructure have to work together as the network grows. The appeal is watching a small connection develop into a coordinated system.",
              "Based on Transport Tycoon Deluxe, OpenTTD extends that foundation with larger maps, multiplayer and more capable building tools. Autorail, longer trains and improved pathfinding support more elaborate railway layouts. The official manual is useful both for learning the interface and understanding why a seemingly sensible route is not behaving as expected."
            ],
            "sourceIds": [
              "manual"
            ]
          },
          {
            "id": "free-assets",
            "title": "You can start without an original TTD disc",
            "kind": "practical",
            "paragraphs": [
              "OpenTTD supports free replacement assets: OpenGFX for graphics, OpenSFX for sound effects and OpenMSX for music. Some installers fetch them during setup; other packages require following the asset-installation instructions. These sets make a complete starting point without importing Transport Tycoon Deluxe data.",
              "If you own the original game and prefer its appearance or soundtrack, you can instead supply the documented data files in the baseset folder. Graphics, effects and music are separate choices, so a missing music set is not the same problem as missing base graphics."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "desktop-or-browser",
            "title": "Why choose the native application?",
            "kind": "project",
            "paragraphs": [
              "This entry is the upstream desktop game, with maintained Windows, macOS and Linux builds. It keeps the normal application workflow for local files, configuration and add-on content. Independently hosted browser versions have their own storage and download interfaces; their browser export steps do not describe this native installation.",
              "OpenTTD supports cooperative and competitive multiplayer. The main menu’s Check Online Content route provides many kinds of add-ons, letting you find content from within the application. Social-platform integration uses optional plugins, so it is a separate setup choice rather than a prerequisite for building a company."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "long-running-games",
            "title": "Keep a stable base for a long game",
            "kind": "practical",
            "paragraphs": [
              "The project recommends stable releases for most players because they receive more testing than nightlies. Development builds expose newer features but may be less reliable. This distinction matters when you plan to keep expanding the same transport network.",
              "OpenTTD’s documented compatibility policy is that newer revisions load older, uncorrupted savegames. Keep copies of your saves and the content they use when moving installations. The project’s directory guide identifies where game data and add-ons belong, which is more reliable than assuming everything sits beside the executable."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenTTD · project documentation",
            "url": "https://github.com/OpenTTD/OpenTTD"
          },
          {
            "id": "manual",
            "label": "OpenTTD · gameplay manual",
            "url": "https://wiki.openttd.org/en/Manual/Main%20Page"
          }
        ]
      },
      "families": [
        {
          "id": "openttd",
          "title": "Transport Tycoon / OpenTTD",
          "indexUrl": "https://playable.wtf/families/#family-openttd",
          "guideUrl": "https://playable.wtf/guides/openttd-browser-native/",
          "choices": [
            {
              "slug": "openttd-online-web",
              "label": "Build in a browser",
              "reason": "Owen Gerke’s host bundles free assets and provides save import and export.",
              "canonicalUrl": "https://playable.wtf/games/openttd-online-web/"
            },
            {
              "slug": "openttd-openttd",
              "label": "Install native OpenTTD",
              "reason": "The upstream desktop application offers local files and documented multiplayer.",
              "canonicalUrl": "https://playable.wtf/games/openttd-openttd/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/OpenTTD/OpenTTD/releases"
        }
      },
      "fileRequirement": "optional",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Use OpenGFX graphics, OpenSFX sounds and OpenMSX music, or original Transport Tycoon Deluxe data. The Windows installer can fetch the replacement sets.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/OpenTTD/OpenTTD/d7563096c6c7da8e4e5194373df36e620dc66423/README.md"
        },
        "setup": {
          "answer": "Install OpenTTD from its official site and choose the base sets during setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/OpenTTD/OpenTTD/d7563096c6c7da8e4e5194373df36e620dc66423/README.md"
        },
        "devices": {
          "answer": "The README lists Linux, macOS and Windows as maintained platforms; other platforms are not actively maintained or tested by the project.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/OpenTTD/OpenTTD/d7563096c6c7da8e4e5194373df36e620dc66423/README.md"
        },
        "multiplayer": {
          "answer": "The project documents cooperative and competitive multiplayer; this catalog has not tested a session.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/OpenTTD/OpenTTD/d7563096c6c7da8e4e5194373df36e620dc66423/README.md"
        }
      },
      "credits": [
        {
          "name": "Chris Sawyer",
          "role": "original-developer",
          "url": "https://raw.githubusercontent.com/OpenTTD/OpenTTD/d7563096c6c7da8e4e5194373df36e620dc66423/README.md",
          "basis": "creator-reported",
          "evidence": "https://raw.githubusercontent.com/OpenTTD/OpenTTD/d7563096c6c7da8e4e5194373df36e620dc66423/README.md",
          "originalGameId": "transporttycoondeluxe"
        }
      ],
      "sourceUrl": "https://github.com/OpenTTD/OpenTTD"
    },
    {
      "id": "project:opentyrian-opentyrian",
      "slug": "opentyrian-opentyrian",
      "title": "Tyrian",
      "project": "OpenTyrian",
      "canonicalUrl": "https://playable.wtf/games/opentyrian-opentyrian/",
      "originals": [
        {
          "id": "tyrian",
          "name": "Tyrian",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "Shooter",
      "summary": "Tyrian on modern desktops, with freeware game data included in the current release packages.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Vertical shooting with several ways to play",
            "kind": "background",
            "paragraphs": [
              "Tyrian is a vertically scrolling arcade shooter starring fighter pilot Trent Hawkins in a distant-future fight against MicroSol. The game offers a story mode as well as one- and two-player arcade modes. That choice lets you approach it as a continuing adventure or a more immediate arcade session.",
              "OpenTyrian carries that game into a native modern application. It is a port of the DOS Tyrian, using the freeware Tyrian 2.1 data, rather than a newly designed sequel or a browser wrapper."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "ready-to-run",
            "title": "Release packages include the game data",
            "kind": "project",
            "paragraphs": [
              "The current release archives for Windows, macOS and Linux include the files needed to run Tyrian 2.1. Choose the package for your platform, extract it and launch the executable or application. This makes the release package simpler than a source build, which still needs the separately supplied data.",
              "For a source-built installation, the engine searches several data locations in order. An explicit data-directory option takes priority, followed by the data folder beside the executable and the configured system location. Lowercase filenames matter for that manual arrangement."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "two-pilots",
            "title": "Network play is arranged directly",
            "kind": "practical",
            "paragraphs": [
              "Two-player network sessions do not use a built-in public lobby. Both players start the documented command-line network mode, providing the other computer’s address and choosing player one or player two. Coordinate those choices before launching so that each person controls the intended ship.",
              "The project uses UDP and includes hole punching, so its documentation says manual port opening is usually unnecessary. A source build needs SDL2_net for network play; that feature is enabled when the library is available during compilation."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "saving",
            "title": "Preserve the configuration directory",
            "kind": "practical",
            "paragraphs": [
              "Saved games and configuration normally live in the OpenTyrian application-data directory on Windows or the opentyrian configuration directory on macOS and Linux. They are separate from the bundled game data. On Windows and Linux, an opentyrian.cfg beside the executable instead selects a local configuration and save location. Remember that difference when moving a portable copy or replacing an old release archive."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenTyrian · project documentation",
            "url": "https://raw.githubusercontent.com/opentyrian/opentyrian/HEAD/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/opentyrian/opentyrian/releases/tag/v2.1.20260913"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "Current release builds include the freeware Tyrian 2.1 data. Source builds need those data files separately.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/opentyrian/opentyrian/HEAD/README.md"
        },
        "setup": {
          "answer": "Download the matching Windows, macOS or Linux release, extract it and run the platform application.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/opentyrian/opentyrian/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows, macOS and Linux packages are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/opentyrian/opentyrian/HEAD/README.md"
        },
        "controls": {
          "answer": "Joystick/gamepad input is supported alongside the game’s other controls.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/opentyrian/opentyrian/HEAD/README.md"
        },
        "multiplayer": {
          "answer": "One- and two-player arcade modes and network multiplayer are documented. Network sessions are started manually by both players; there is no arena service.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/opentyrian/opentyrian/HEAD/README.md"
        },
        "saves": {
          "answer": "Saves and settings use the platform-specific OpenTyrian configuration directory; a local configuration file can enable portable storage on Windows/Linux.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/opentyrian/opentyrian/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/opentyrian/opentyrian"
    },
    {
      "id": "project:openxcom-openxcom",
      "slug": "openxcom-openxcom",
      "title": "X-COM: UFO Defense / Terror from the Deep",
      "project": "OpenXcom",
      "canonicalUrl": "https://playable.wtf/games/openxcom-openxcom/",
      "originals": [
        {
          "id": "xcomufodefense",
          "name": "X-COM: UFO Defense",
          "relationship": "reimplementation-of"
        },
        {
          "id": "xcomterrorfromthedeep",
          "name": "X-COM: Terror from the Deep",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine recreation",
      "genre": "Strategy",
      "summary": "A replacement engine for the original X-COM tactical strategy games.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A campaign fought on two scales",
            "kind": "background",
            "paragraphs": [
              "In the original UFO Defense, defeating an alien squad is only part of your job. You also direct the organization that intercepts UFOs, researches recovered equipment and manufactures better weapons. Ground missions feed that strategic layer: bringing alien technology home creates opportunities that simply surviving a firefight does not.",
              "That connection is the attraction for a player who likes decisions to matter beyond one battle. Spending resources and recovering useful material shape the tools available to your next squad. OpenXcom covers both UFO Defense and its separate sequel, Terror from the Deep; each needs its own original resources."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "The original OpenXcom project",
            "kind": "project",
            "paragraphs": [
              "OpenXcom replaces the engine while reading the original games’ artwork and other resources. The source-build route here uses the original OpenXcom repository. OpenXcom Extended is a separate project, so a feature advertised for Extended should not be assumed to exist in this engine.",
              "Customization is a substantial part of OpenXcom. Standard mods accompany the engine, and additional mods live in the user directory and are enabled through Options → Mods. Begin with an unmodified installation before adding a ruleset: the project specifically warns against using already altered XcomUtil data as the base."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "organizing-a-campaign",
            "title": "Keep game data and campaign files distinct",
            "kind": "practical",
            "paragraphs": [
              "The engine separates original data, configuration and user files. UFO and TFTD resources belong in their corresponding data subdirectories, while the user directory holds saves, screenshots and installed mods. Keeping track of that user directory makes it easier to preserve a campaign when moving or rebuilding the engine.",
              "Windows, macOS and Linux use different default locations, and command-line options can select explicit data, user and configuration folders. The README also explains a common mod-installation problem: an extra directory level inside an archive can hide its rules and terrain from the engine. Check the documented directory layout if an installed mod does not appear."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "OpenXcom · README",
            "url": "https://raw.githubusercontent.com/OpenXcom/OpenXcom/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "X-COM: UFO Defense · publisher description",
            "url": "https://store.steampowered.com/app/7760/XCOM_UFO_Defense/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "source-build",
        "status": "source-work",
        "route": {
          "kind": "project",
          "url": "https://github.com/OpenXcom/OpenXcom"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Unmodified resources from UFO: Enemy Unknown (X-COM: UFO Defense) or X-COM: Terror from the Deep. Modded XcomUtil installations are not suitable base data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/OpenXcom/OpenXcom/HEAD/README.md"
        },
        "setup": {
          "answer": "Build the OpenXcom engine using its platform instructions, then copy the UFO or TFTD resource folders into the matching data subdirectory.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/OpenXcom/OpenXcom/HEAD/README.md"
        },
        "devices": {
          "answer": "The source documents Windows, macOS and Linux builds.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/OpenXcom/OpenXcom/HEAD/README.md"
        },
        "issues": {
          "answer": "The current website points downloads to OpenXcom Extended, a separate project. This entry preserves the original OpenXcom repository and is classified as source/build.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://openxcom.org/downloads-milestones/"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/OpenXcom/OpenXcom"
    },
    {
      "id": "project:paulcombal-mw2-recompiled",
      "slug": "paulcombal-mw2-recompiled",
      "title": "Call of Duty: Modern Warfare 2 (2009)",
      "project": "MW2 Recompiled",
      "canonicalUrl": "https://playable.wtf/games/paulcombal-mw2-recompiled/",
      "originals": [
        {
          "id": "callofdutymodernwarfare22009",
          "name": "Call of Duty: Modern Warfare 2 (2009)",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Shooter",
      "summary": "The Xbox 360 game’s executables translated for native PC play.",
      "editorial": {
        "sections": [
          {
            "id": "scope",
            "title": "The Xbox campaign and private matches",
            "kind": "project",
            "paragraphs": [
              "MW2 Recompiled targets the 2009 Xbox 360 game, with campaign and multiplayer. Choose its Steam package for friend invitations or the LAN package for a shared network. Public matchmaking and ranked playlists are unavailable; Special Ops remains untested. This is a way to revisit the console release with people you know, rather than enter a replacement public matchmaking service.",
              "The original networking code retains known vulnerabilities. The maintainer recommends trusted peers only: Steam lobbies filter non-members, while the LAN build is reachable by other devices on that network."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Prepare a controller and the supported disc",
            "kind": "practical",
            "paragraphs": [
              "Use a USA/Europe Xbox 360 disc image for version 1.0.557, a 64-bit Windows or Linux machine, a Vulkan 1.2 GPU and 8 GB of disk space. A controller is needed for gameplay; keyboard support covers menus.",
              "The launcher’s Install Game action imports the disc and applies title update 6. Saves remain in saves/ beside the executables. For multiplayer, every participant should run the same build."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "graphics",
            "title": "Tune the image before raising the frame limit",
            "kind": "practical",
            "paragraphs": [
              "The launcher stores resolution, frame-limit and field-of-view choices in .env beside the program. The underlying settings reference explains that higher resolution multiplies both dimensions of the image: moving from 720p to 1440p or 4K therefore increases the rendering workload substantially. Begin with the lower setting if frame pacing is uneven.",
              "The field-of-view value uses the game’s 4:3 convention, so its numeric value is not the horizontal angle of a widescreen picture. It also affects aiming views. The frame limiter rounds timing to whole milliseconds, meaning selected high refresh values can produce a slightly different cap. These are useful reasons to change one setting at a time instead of assuming the highest numbers give the best result."
            ],
            "sourceIds": [
              "settings"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "MW2 Recompiled · project documentation",
            "url": "https://github.com/PaulCombal/mw2-recompiled"
          },
          {
            "id": "settings",
            "label": "MW2 Recompiled · settings reference",
            "url": "https://github.com/PaulCombal/mw2-recompiled/blob/HEAD/docs/switches.md"
          }
        ]
      },
      "families": [
        {
          "id": "call-of-duty",
          "title": "Call of Duty",
          "indexUrl": "https://playable.wtf/families/#family-call-of-duty",
          "guideUrl": "https://playable.wtf/guides/call-of-duty-browser-native-versions/",
          "choices": [
            {
              "slug": "black-ops-zombies",
              "label": "Choose BO1 Zombies rules",
              "reason": "Select Classic or Counter-Strike guns before a solo or lobby session.",
              "canonicalUrl": "https://playable.wtf/games/black-ops-zombies/"
            },
            {
              "slug": "nacht-der-untoten",
              "label": "Invite a small co-op group",
              "reason": "A separate desktop fan remake with a two-to-four-player invitation flow.",
              "comparisonException": "The creator launcher and compatibility help document solo/co-op invitations and input; match completion and multiplayer lifecycle are untested.",
              "canonicalUrl": "https://playable.wtf/games/nacht-der-untoten/"
            },
            {
              "slug": "modern-warfare-browser",
              "label": "Play the original COD4 campaign",
              "reason": "Import your own Steam files for the story and Mile High Club.",
              "canonicalUrl": "https://playable.wtf/games/modern-warfare-browser/"
            },
            {
              "slug": "paulcombal-mw2-recompiled",
              "label": "Use the 2009 console edition natively",
              "reason": "Choose the Windows/Linux controller route with matching owned Xbox 360 data.",
              "canonicalUrl": "https://playable.wtf/games/paulcombal-mw2-recompiled/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/PaulCombal/mw2-recompiled/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Modern Warfare 2 Xbox 360 disc.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/PaulCombal/mw2-recompiled"
        },
        "setup": {
          "answer": "Choose the appropriate release and follow disc extraction and title-update setup in the README.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/PaulCombal/mw2-recompiled"
        },
        "issues": {
          "answer": "The maintainer warns of known vulnerabilities in the original networking code and recommends playing only with trusted peers.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/PaulCombal/mw2-recompiled"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/PaulCombal/mw2-recompiled"
    },
    {
      "id": "project:pes-6-web",
      "slug": "pes-6-web",
      "title": "Pro Evolution Soccer 6",
      "project": "OptiJuegos PSP browser build",
      "canonicalUrl": "https://playable.wtf/games/pes-6-web/",
      "originals": [
        {
          "id": "proevolutionsoccer6",
          "name": "Pro Evolution Soccer 6",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser recompilation",
      "genre": "Sports",
      "summary": "PES 6’s PSP edition, with browser saves, controller mapping and an online lobby.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The PSP edition of PES 6",
            "kind": "background",
            "paragraphs": [
              "This is the PSP version of Pro Evolution Soccer 6. Its portable-console controls and saved-data format matter when choosing a controller or bringing in an option file; the PC and PlayStation 2 editions are different starting points."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "this-version",
            "title": "Commentary choices and online rooms",
            "kind": "project",
            "paragraphs": [
              "The launcher offers original Spanish commentary, Mariano Closs commentary, or a lighter option without commentary. It also adds online room controls around the game's Inalámbrico menu: create a player name there, then choose a room on the page. Private rooms can be shared by link.",
              "The host's Liga MX 2007 update adds a separate team-selection tab for 18 Mexican clubs. That changes the available roster; it is distinct from choosing a commentary voice. Try the lighter no-commentary launch first if loading is the immediate obstacle, then choose the audio presentation you prefer."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "setup",
            "title": "Map your controller and protect your option file",
            "kind": "practical",
            "paragraphs": [
              "Open Controles to assign keyboard or gamepad buttons. If a connected pad is missing, press a button while the page has focus. Touch controls can appear automatically on a touchscreen.",
              "Partidas imports a ZIP or PSP/SAVEDATA folder and exports a backup through Descargar todo. Reload after importing if the game is already running. These files stay in this browser. Start with the original 30 FPS setting; the 60 FPS option is experimental. The optional full-data preload is about 300 MB, so leave it off if you prefer loading as you play."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "performance",
            "title": "Adjust one setting at a time",
            "kind": "limitations",
            "paragraphs": [
              "The page offers graphics and frame-rate choices but still describes mobile performance work as ongoing. Begin with the original frame rate, check a match, and only then raise demanding options. A working touch layout does not establish that every phone can sustain the same match speed."
            ],
            "sourceIds": [
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "host",
            "label": "PES 6 Web Online · launcher, controls and help",
            "url": "https://pes6.optijuegos.net/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://pes6.optijuegos.net/"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The launcher streams its resources automatically. Its optional full-game preload is described as roughly 300 MB; no local game-file import is required by the reviewed start flow.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pes6.optijuegos.net/"
        },
        "setup": {
          "answer": "Use one of the three Jugar buttons inside the game panel: original Spanish commentary, Mariano Closs commentary, or the lighter no-commentary option. Advertising around the panel is separate from the game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pes6.optijuegos.net/"
        },
        "devices": {
          "answer": "The page provides automatic touch controls and graphics settings, but its update notes say mobile frame-rate improvements are still in progress.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pes6.optijuegos.net/"
        },
        "controls": {
          "answer": "The reviewed default keyboard map uses arrows for the D-pad, X for Cross/confirm, D for Circle, A for Square, W for Triangle and Space for Start. The Controls panel can remap keyboard and gamepad buttons.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pes6.optijuegos.net/"
        },
        "multiplayer": {
          "answer": "The Online panel offers room creation and joining with WebRTC connection settings and a relay. Successful peer-to-peer play has not been tested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pes6.optijuegos.net/"
        },
        "issues": {
          "answer": "Mobile performance remains a work in progress. The game’s own Jugar controls do not require a browser extension; avoid confusing them with adjacent advertising.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pes6.optijuegos.net/"
        },
        "scope": {
          "answer": "The project labels the game as the PSP edition, with commentary choices and a Liga MX 2007 update.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pes6.optijuegos.net/"
        },
        "saves": {
          "answer": "The Partidas panel manages saves. Settings and game data are stored in this browser; clearing site data can remove local progress.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pes6.optijuegos.net/"
        }
      },
      "credits": [
        {
          "name": "OptiJuegos",
          "role": "host",
          "url": "https://pes6.optijuegos.net/",
          "evidence": "https://pes6.optijuegos.net/",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://pes6.optijuegos.net/"
    },
    {
      "id": "project:pokemon-emerald-wasm",
      "slug": "pokemon-emerald-wasm",
      "title": "Pokémon Emerald",
      "project": "pokeemerald-wasm",
      "canonicalUrl": "https://playable.wtf/games/pokemon-emerald-wasm/",
      "originals": [
        {
          "id": "pokemonemerald",
          "name": "Pokémon Emerald",
          "relationship": "associated-with"
        }
      ],
      "kind": "WebAssembly port source",
      "genre": "RPG",
      "summary": "Pokémon Emerald decompilation compiled for browser and native frontends.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "Returning to Hoenn and the Battle Frontier",
            "kind": "background",
            "paragraphs": [
              "Pokémon Emerald expands the Hoenn adventure from Ruby and Sapphire, with Teams Magma and Aqua and the clash between Groudon and Kyogre driving the story. Exploration leads into battles, while the Battle Frontier adds seven different Frontier Brain challenges for players who want more demanding tests of their Pokémon choices.",
              "That combination gives the original game two appealing rhythms: discovering what lies beyond the next town or route, and refining an approach to a difficult battle. Emerald’s original cable and wireless features belong to the GBA release; they are not evidence that this WebAssembly frontend supports trading or linked battles."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "frontends",
            "title": "One Emerald codebase, several frontends",
            "kind": "project",
            "paragraphs": [
              "pokeemerald-wasm compiles pret’s Pokémon Emerald decompilation to WebAssembly and supplies a browser interface around it. Its purpose is to run the reconstructed game code through a new frontend, rather than present a different Pokémon adventure. The separate pokeemerald-3d project builds a 3D renderer from this work; those visual changes should not be assumed for this version.",
              "This catalog entry points to the source project. The repository also provides a directly compiled Raylib frontend for Apple Silicon macOS and Linux. That native program uses the port’s rendering and hardware implementations without a WebAssembly module or runtime, so its build requirements and save location differ from the browser frontend."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "browser-controls",
            "title": "The browser interface and your save",
            "kind": "practical",
            "paragraphs": [
              "The browser interface presents a directional pad and action buttons as well as keyboard controls: arrows move, Z and X stand in for the GBA’s A and B, Enter is Start and Shift is Select. These mappings give a desktop player a clear way into the original button-based interface without assuming that a controller is required.",
              "Flash saves are stored locally by the frontend. Download .sav exports a copy, while Upload .sav imports a file containing a valid Emerald save slot. Keep an exported save when moving between installations or clearing browser data; an in-browser save and a separately downloaded backup serve different purposes."
            ],
            "sourceIds": [
              "frontend",
              "save"
            ]
          },
          {
            "id": "native-route",
            "title": "Choosing a source-build target",
            "kind": "practical",
            "paragraphs": [
              "For the Raylib build, the documented prerequisites include Clang, Python 3, Raylib discoverable through pkg-config, and shared asset-build dependencies. Its save is written next to the native build output as pokeemerald-native.sav. Follow the repository instructions for the selected target instead of expecting the browser controls or storage location to apply unchanged.",
              "There is also an experimental framebuffer frontend intended for a jailbroken Kindle Scribe, with grayscale output and a separate cross-compilation workflow. It is a specialist target, not evidence that ordinary e-readers or phones can install the desktop build."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "pokeemerald-wasm · frontend documentation",
            "url": "https://github.com/tripplyons/pokeemerald-wasm"
          },
          {
            "id": "frontend",
            "label": "Browser frontend · control layout",
            "url": "https://github.com/tripplyons/pokeemerald-wasm/blob/master/web/index.html"
          },
          {
            "id": "save",
            "label": "Browser frontend · flash-save handling",
            "url": "https://github.com/tripplyons/pokeemerald-wasm/blob/master/web/app.js"
          },
          {
            "id": "original",
            "label": "Nintendo · Pokémon Emerald Version",
            "url": "https://www.nintendo.com/en-gb/Games/Game-Boy-Advance/Pokemon-Emerald-267112.html"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/tripplyons/pokeemerald-wasm"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "setup": {
          "answer": "Follow the repository’s build documentation for the browser or native frontend; no public Play link is assumed.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/tripplyons/pokeemerald-wasm"
        },
        "devices": {
          "answer": "The native Raylib frontend supports Apple Silicon macOS and Linux. These native targets are separate from the browser build.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/tripplyons/pokeemerald-wasm"
        },
        "controls": {
          "answer": "The browser frontend uses arrows to move, Z for A, X for B, Enter for Start and Shift for Select. It also renders an on-screen directional pad and action buttons.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/tripplyons/pokeemerald-wasm/blob/master/web/index.html"
        },
        "scope": {
          "answer": "The WebAssembly frontend builds on pret/pokeemerald. pokeemerald-3d is a separate renderer project, not the same frontend.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/tripplyons/pokeemerald-wasm"
        },
        "saves": {
          "answer": "The browser frontend stores flash saves locally and provides Download .sav and Upload .sav. Imports must contain a valid Emerald save slot.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/tripplyons/pokeemerald-wasm/blob/master/web/app.js"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/tripplyons/pokeemerald-wasm"
    },
    {
      "id": "project:portingpete-the-darkness-recomp",
      "slug": "portingpete-the-darkness-recomp",
      "title": "The Darkness",
      "project": "The Darkness Recomp",
      "canonicalUrl": "https://playable.wtf/games/portingpete-the-darkness-recomp/",
      "originals": [
        {
          "id": "thedarkness",
          "name": "The Darkness",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Shooter",
      "summary": "The Xbox 360 shooter translated to a native Windows build.",
      "editorial": {
        "sections": [
          {
            "id": "pc-features",
            "title": "A dedicated Windows version of the Xbox 360 game",
            "kind": "project",
            "paragraphs": [
              "The Darkness Recomp translates this specific game into a Windows executable and uses a Direct3D 11 renderer. Its documented player features include mouse look, controller support, keyboard remapping, audio, saves and adjustable display settings. It is a dedicated port: replacing its files with another Xbox 360 game does not turn it into a general console runtime.",
              "The port adds practical PC menu controls, including mouse selection, subtitle scaling and separate dialogue-choice bindings. Adjusting those dialogue controls independently of weapon switching is useful when the same mouse wheel or keys need different meanings during conversations and combat."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "starting",
            "title": "Use the release route for a first session",
            "kind": "practical",
            "paragraphs": [
              "Extract the Windows release and put your complete supported game dump in its Darkness folder, including default.xex, Content, System and the other original files. Launch.cmd starts the installed game with sound; LaunchWithSettings.cmd offers settings before play. The release does not require a compiler or a separate audio build.",
              "An ISO alone is not the documented input. The runtime expects the extracted matching files and decodes the original executable at startup. Older instructions involving prepared decrypted executables are no longer the current route, and arbitrary title updates need their own supported translation."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "settings-and-progress",
            "title": "Keep the controls and progression predictable",
            "kind": "practical",
            "paragraphs": [
              "F1 shows controls, F2 toggles mouse capture and Escape releases it. The game’s Video Quality menu and settings launcher share saved graphics options. Subtitle size can be adjusted during play, while language changes take effect after restarting.",
              "The original achievement list is available under Extra Content, with local unlocks stored between sessions; Xbox LIVE synchronization is unavailable. Developer tools can change missions and Darkness abilities and may autosave, so they are separate from ordinary settings. The commit-update launcher also requires development tools and extra disk space; installing a newer release ZIP is the simpler update route for an existing player."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "The Darkness Recomp · project documentation",
            "url": "https://github.com/portingpete/The-Darkness-Recomp"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/portingpete/The-Darkness-Recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own extracted Xbox 360 game dump.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/portingpete/The-Darkness-Recomp"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/portingpete/The-Darkness-Recomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/portingpete/The-Darkness-Recomp"
    },
    {
      "id": "project:puckhead73-nhl-legacy-recomp",
      "slug": "puckhead73-nhl-legacy-recomp",
      "title": "NHL: Legacy Edition",
      "project": "NHL Legacy Recomp",
      "canonicalUrl": "https://playable.wtf/games/puckhead73-nhl-legacy-recomp/",
      "originals": [
        {
          "id": "nhllegacyedition",
          "name": "NHL: Legacy Edition",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Sports",
      "summary": "Xbox 360 hockey translated into a native Windows application.",
      "editorial": {
        "sections": [
          {
            "id": "the-port",
            "title": "A new PC runtime for the Xbox 360 edition",
            "kind": "project",
            "paragraphs": [
              "NHL Legacy Recomp translates the Xbox 360 game’s code into a Windows application through ReXGlue. The original game content comes from your own copy; the project supplies the host runtime and a modern Vulkan renderer. It is aimed at bringing that particular edition to PC, rather than supplying a new roster or a different NHL game.",
              "The renderer offers FSR upscaling, CAS sharpening, optional supersampling and a live color-grading pass. Its overlay exposes performance information, display modes and monitor selection. These are useful presentation controls, but a long options list should not be mistaken for a guaranteed frame rate on every GPU."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "prepare-data",
            "title": "Check the dump before assembling the install",
            "kind": "practical",
            "paragraphs": [
              "The builder accepts either a disc ISO or an extracted folder containing default.xex, and it can verify the dump before doing the full installation. That preliminary check matters because the recompilation targets one vanilla image: a different region, modified executable or applied title update can fail the hash validation.",
              "After installation, launch nhllegacy.exe from the output directory. Keep the release components together; its bundled FFmpeg handles the original VP6 movies. The builder also unpacks archives into loose files, making the installation useful to people who want to inspect or replace assets from their own copy."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "requirements",
            "title": "Windows first, Proton as a separate route",
            "kind": "practical",
            "paragraphs": [
              "The documented Windows requirements are 64-bit Windows 10 or 11, a Vulkan GPU, the x64 Visual C++ runtime and roughly 10 GB of free space. The project separately documents running the Windows build through Steam and Proton 11 on Linux and Steam Deck.",
              "Follow that Linux guide for a handheld setup instead of treating the Windows release as a native Linux package. The distinction is especially helpful when deciding whether to transfer an existing prepared installation or build one from the release and your ISO."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "NHL Legacy Recomp · project documentation",
            "url": "https://github.com/puckhead73/nhl-legacy-recomp"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/puckhead73/nhl-legacy-recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own NHL Legacy Xbox 360 disc image or extracted game dump.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/puckhead73/nhl-legacy-recomp"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/puckhead73/nhl-legacy-recomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/puckhead73/nhl-legacy-recomp"
    },
    {
      "id": "project:quake-3-browser",
      "slug": "quake-3-browser",
      "title": "Quake III Arena",
      "project": "Q3JS",
      "canonicalUrl": "https://playable.wtf/games/quake-3-browser/",
      "originals": [
        {
          "id": "quakeiiiarena",
          "name": "Quake III Arena",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "Arena multiplayer through LK’s Quake III browser client.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "An arena shooter built for repeated matches",
            "kind": "background",
            "paragraphs": [
              "Quake III Arena concentrates on fighting other combatants in compact science-fiction and gothic arenas. Weapons and power-ups are central to that contest, so learning where to move can matter as much as keeping your aim on an opponent. It suits a session built around repeated rounds and improving your route through a map, rather than following a story campaign.",
              "The commercial package includes a broader set of arenas and the Team Arena expansion. Those retail-package features should not be confused with the demo-data browser route offered here."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Q3JS and its demo-data client",
            "kind": "project",
            "paragraphs": [
              "Q3JS uses an ioquake3 WebAssembly build and the officially released demo data. The launch path is multiplayer: choose a live server, enter a player name and join. That keeps the immediate decision focused on where to play rather than on importing a retail installation.",
              "The separate server-hosting instructions are for operators. Their retail-data requirements do not turn the hosted player client into a full retail Quake III installation. Use the server list as the starting point for this version."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "touch",
            "title": "How the phone layout changes the session",
            "kind": "practical",
            "paragraphs": [
              "On compatible phones and tablets, Q3JS automatically presents touch controls. Movement belongs to the left joystick; the right side handles aiming, firing, jumping, crouching and weapon changes. Scores and menu controls are included, so you can check the match without looking for desktop keys.",
              "Rotate to landscape before settling into play. Fullscreen is available only where the browser supports it. The split between movement and aiming means both thumbs are busy, so it is worth learning the jump and weapon buttons before trying to follow a fast opponent around an unfamiliar arena."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "id Software · Quake III Arena description",
            "url": "https://store.steampowered.com/api/appdetails?appids=2200&l=english"
          },
          {
            "id": "project",
            "label": "Q3JS · browser and phone guide",
            "url": "https://q3js.com/play-quake-3-on-your-phone"
          }
        ]
      },
      "families": [
        {
          "id": "quake",
          "title": "Quake",
          "indexUrl": "https://playable.wtf/families/#family-quake",
          "guideUrl": "https://playable.wtf/guides/quake-browser-native-versions/",
          "choices": [
            {
              "slug": "netquake-browser",
              "label": "Start with the campaign",
              "reason": "Try the first episode, then add your registered PAK for more content.",
              "comparisonException": "The creator FAQ documents shareware, registered PAK imports and storage; campaign completion and touch play are untested.",
              "canonicalUrl": "https://playable.wtf/games/netquake-browser/"
            },
            {
              "slug": "quakeworld-browser",
              "label": "Join first-Quake multiplayer",
              "reason": "Pieter’s FTE host offers the QuakeWorld route for up to eight players.",
              "canonicalUrl": "https://playable.wtf/games/quakeworld-browser/"
            },
            {
              "slug": "quake-2-browser",
              "label": "Play Quake II multiplayer",
              "reason": "A separate FTE session for the later game, also advertised for eight players.",
              "comparisonException": "The exact FTE host documents Quake II multiplayer and an eight-player limit; controls, session lifecycle and saving remain limited.",
              "canonicalUrl": "https://playable.wtf/games/quake-2-browser/"
            },
            {
              "slug": "quake-3-browser",
              "label": "Choose an arena or phone match",
              "reason": "Q3JS combines a server list with documented touch controls and demo data.",
              "canonicalUrl": "https://playable.wtf/games/quake-3-browser/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://q3js.com"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "The hosted Q3JS client supplies the officially released demo data. Its separate server-hosting guide asks server operators for retail pak files; that is not the hosted player setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://q3js.com/play-quake-3-on-your-phone"
        },
        "setup": {
          "answer": "Open the server browser and choose Play now or an available server.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://q3js.com"
        },
        "devices": {
          "answer": "Q3JS automatically enables touch controls on compatible phones and tablets. Rotate to landscape after choosing a server; fullscreen depends on browser support.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://q3js.com/play-quake-3-on-your-phone"
        },
        "controls": {
          "answer": "On touch screens, the left joystick moves and the right side provides drag-to-look aiming, fire, jump, crouch and weapon switching. Scores and menu buttons are included.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://q3js.com/play-quake-3-on-your-phone"
        },
        "multiplayer": {
          "answer": "The creator explicitly offers multiplayer server selection.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://q3js.com"
        },
        "scope": {
          "answer": "This route joins Quake III Arena multiplayer servers through Q3JS using demo data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://q3js.com/play-quake-3-on-your-phone"
        }
      },
      "credits": [],
      "sourceUrl": "https://q3js.com"
    },
    {
      "id": "project:quakeworld-browser",
      "slug": "quakeworld-browser",
      "title": "Quake",
      "project": "FTE QuakeWorld Web",
      "canonicalUrl": "https://playable.wtf/games/quakeworld-browser/",
      "originals": [
        {
          "id": "quake",
          "name": "Quake",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "Join up to eight players in Pieter’s FTE QuakeWorld browser client.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The first Quake multiplayer world",
            "kind": "background",
            "paragraphs": [
              "The original Quake combines military spaces with a much stranger world of gothic castles, lava and monsters. Its Ranger travels through hostile dimensions, a dark fantasy identity quite different from Quake II's Strogg war. That is the game's background; the QuakeWorld browser host is a route into multiplayer rather than a tour of the original campaign.",
              "The modern commercial Quake release packages enhanced graphics and additional content alongside the original game. A browser QuakeWorld session should not be treated as that entire package simply because both use the Quake name."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Multiplayer with client-side prediction",
            "kind": "project",
            "paragraphs": [
              "Pieter's QuakeWorld page offers multiplayer for up to eight players through the FTE engine, without installing a desktop client. The launcher asks for a player name and provides a Play button. This is the network-focused QuakeWorld route, separate from the host's DOS Quake link.",
              "The host highlights client-side prediction and low-latency play. Prediction lets the client respond to your movement before every server reply arrives, which is useful in a game where movement timing matters. It does not remove the effects of a slow connection or guarantee the same response on every device."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "starting",
            "title": "Choose the session that matches the game",
            "kind": "practical",
            "paragraphs": [
              "Set your player name before launching. Use this project when you want the original Quake multiplayer environment; choose the separate Quake II page for the later game's setting. The eight-player description belongs to this hosted service, rather than to all QuakeWorld servers. The creator describes the site as an unofficial, non-commercial preservation project."
            ],
            "sourceIds": [
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "host",
            "label": "Pieter · QuakeWorld multiplayer launcher",
            "url": "https://q1.pieter.com/"
          },
          {
            "id": "original",
            "label": "id Software · Quake publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=2310&l=english"
          }
        ]
      },
      "families": [
        {
          "id": "quake",
          "title": "Quake",
          "indexUrl": "https://playable.wtf/families/#family-quake",
          "guideUrl": "https://playable.wtf/guides/quake-browser-native-versions/",
          "choices": [
            {
              "slug": "netquake-browser",
              "label": "Start with the campaign",
              "reason": "Try the first episode, then add your registered PAK for more content.",
              "comparisonException": "The creator FAQ documents shareware, registered PAK imports and storage; campaign completion and touch play are untested.",
              "canonicalUrl": "https://playable.wtf/games/netquake-browser/"
            },
            {
              "slug": "quakeworld-browser",
              "label": "Join first-Quake multiplayer",
              "reason": "Pieter’s FTE host offers the QuakeWorld route for up to eight players.",
              "canonicalUrl": "https://playable.wtf/games/quakeworld-browser/"
            },
            {
              "slug": "quake-2-browser",
              "label": "Play Quake II multiplayer",
              "reason": "A separate FTE session for the later game, also advertised for eight players.",
              "comparisonException": "The exact FTE host documents Quake II multiplayer and an eight-player limit; controls, session lifecycle and saving remain limited.",
              "canonicalUrl": "https://playable.wtf/games/quake-2-browser/"
            },
            {
              "slug": "quake-3-browser",
              "label": "Choose an arena or phone match",
              "reason": "Q3JS combines a server list with documented touch controls and demo data.",
              "canonicalUrl": "https://playable.wtf/games/quake-3-browser/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://q1.pieter.com"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "setup": {
          "answer": "Enter a player name on the host’s start screen, then select Play.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://q1.pieter.com"
        },
        "multiplayer": {
          "answer": "The host advertises up to eight players with QuakeWorld’s client-side prediction.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://q1.pieter.com"
        },
        "scope": {
          "answer": "This host offers QuakeWorld multiplayer using FTE, with up to eight players.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://q1.pieter.com"
        }
      },
      "credits": [],
      "sourceUrl": "https://q1.pieter.com"
    },
    {
      "id": "project:rainchus-donkey-kong-64-recompiled",
      "slug": "rainchus-donkey-kong-64-recompiled",
      "title": "Donkey Kong 64",
      "project": "DK64 Recompiled",
      "canonicalUrl": "https://playable.wtf/games/rainchus-donkey-kong-64-recompiled/",
      "originals": [
        {
          "id": "donkeykong64",
          "name": "Donkey Kong 64",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Platformer",
      "summary": "Donkey Kong 64 with RT64 rendering and modern options.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "The original collection adventure",
            "kind": "background",
            "paragraphs": [
              "Donkey Kong 64 takes the series into a 3D adventure about rescuing the Kong family and reclaiming Golden Bananas from King K. Rool. Donkey Kong, Diddy, Tiny, Lanky and Chunky bring different abilities to the journey, with tools such as Tiny’s Ponytail Twirl and Chunky’s Pineapple Launcher. The variety comes from using those different characters while working through the larger collection quest.",
              "This background describes the original Nintendo 64 game. It should not be confused with a promise that a particular new mod, language or control feature is already supported by the recompilation."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "native-dk64",
            "title": "Donkey Kong 64 through RT64",
            "kind": "project",
            "paragraphs": [
              "DK64 Recompiled translates Donkey Kong 64 into a native application and uses RT64 to present the original N64 graphics with modern display options. The project focuses on retaining the game’s effects while allowing higher frame rates and wide aspect ratios. It does not include the game assets.",
              "Its frame-rate setting can follow the monitor or remain at the original rate, without changing gameplay speed. On an ultrawide display you can keep the HUD within a centered 16:9 area. Very wide cutscenes may expose animation quirks at the sides, so the widest possible view is not necessarily the best framing for every scene."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "rom-and-input",
            "title": "Use the supported US game",
            "kind": "practical",
            "paragraphs": [
              "The accepted base is the US N64 ROM. Other byte-order formats can be converted automatically if the actual game revision is correct, but this is not a general emulator that accepts arbitrary ROMs. The README treats modded-ROM and additional-language support as future project work.",
              "Input mappings, graphics, sound and gameplay settings are available through a menu usable with mouse, keyboard or controller. Stick deadzones and aiming-axis inversion can be adjusted. Those settings are worth checking before a long session if the view or aiming does not respond as you expect."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "desktop-and-deck",
            "title": "Getting a local installation ready",
            "kind": "practical",
            "paragraphs": [
              "Prebuilt releases are available, so a source build is not required to begin. The documented renderer requirements are Direct3D 12 Shader Model 6 or Vulkan 1.2, with an AVX-capable CPU. Update graphics drivers before investigating a startup crash.",
              "On Steam Deck, the documented route adds the extracted Linux executable to Steam from Desktop Mode, then configures controls in Gaming Mode. Windows saves are stored under the local application-data DK64Recompiled folder; Linux uses ~/.config/DK64Recompiled/saves. Retain that folder when moving a playthrough."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "linux-limits",
            "title": "Linux compatibility is not uniform",
            "kind": "limitations",
            "paragraphs": [
              "The project flags Intel GPUs on Linux as a possible problem, and the prebuilt Linux binary may not work on every distribution. Its suggested alternatives include Steam Linux Runtime, Gamescope, a local build or the Windows build under Proton. These are troubleshooting routes, not interchangeable guarantees.",
              "Overlays and external frame limiters may also interfere with rendering. Use the application’s own frame-rate slider first when isolating stutter, and keep optional overlays out of the initial comparison."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "DK64 Recompiled · project documentation",
            "url": "https://github.com/Rainchus/Donkey-Kong-64-Recompiled"
          },
          {
            "id": "original",
            "label": "Nintendo · Donkey Kong 64",
            "url": "https://www.nintendo.com/en-gb/Games/Nintendo-64/Donkey-Kong-64-269459.html"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/Rainchus/Donkey-Kong-64-Recompiled/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Donkey Kong 64 ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Rainchus/Donkey-Kong-64-Recompiled"
        },
        "setup": {
          "answer": "Check the supported ROM and GPU requirements, then use the current release.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Rainchus/Donkey-Kong-64-Recompiled"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Rainchus/Donkey-Kong-64-Recompiled"
    },
    {
      "id": "project:red-alert-2-browser",
      "slug": "red-alert-2-browser",
      "title": "Command & Conquer: Red Alert 2",
      "project": "Chrono Divide",
      "canonicalUrl": "https://playable.wtf/games/red-alert-2-browser/",
      "originals": [
        {
          "id": "commandconquerredalert2",
          "name": "Command & Conquer: Red Alert 2",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Strategy",
      "summary": "Red Alert 2 multiplayer rebuilt with web technologies.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Command an army, not a single character",
            "kind": "background",
            "paragraphs": [
              "Red Alert 2's real-time strategy format puts the wider battlefield in your hands: buildings, an economy and groups of units all compete for your attention. A match asks you to make decisions while the opponent is acting too. The attraction is that a familiar map can produce a different contest as each side changes its timing and approach.",
              "Chrono Divide's goal is the original vanilla Red Alert 2 engine. Its base-game focus is worth distinguishing from a promise to include every expansion, campaign or modification associated with the wider Command & Conquer series."
            ],
            "sourceIds": [
              "project",
              "updates"
            ]
          },
          {
            "id": "this-version",
            "title": "A replacement client with modern conveniences",
            "kind": "project",
            "paragraphs": [
              "Chrono Divide reimplements the game using web technologies, so the client starts without a separate browser plugin. The project describes working multiplayer and the original maps, while retaining beta status and an ongoing goal of engine feature parity.",
              "The client adds a choice between classic left-click commands and modern right-click commands, plus match replays. That makes the control setting worth checking first: use the scheme you expect before a busy match makes a mistaken command costly."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "online",
            "title": "Find the right region and party",
            "kind": "practical",
            "paragraphs": [
              "Recent client updates document a global account system, regional nicknames and party invitations from the Quick Match lobby. The region and nickname screens therefore serve different jobs: your account identifies you across regions, while a nickname belongs to the region in which you play.",
              "The client-server connection model avoids the manual port-forwarding setup of older peer-to-peer arrangements. Use Play Beta on the official site and follow the current client's setup prompts; the website's development changelog is the useful place to check changes to lobbies and matchmaking."
            ],
            "sourceIds": [
              "project",
              "updates"
            ]
          },
          {
            "id": "devices",
            "title": "Allow room for the battlefield",
            "kind": "limitations",
            "paragraphs": [
              "The creator lists mobile and tablet access, but also publishes a minimum 1024×768 display and recommends current 64-bit browsers. A larger screen makes the battlefield and command interface easier to read together. For performance, the project's requirements advise choosing another supported browser over Firefox."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Chrono Divide · features and requirements",
            "url": "https://chronodivide.com/"
          },
          {
            "id": "updates",
            "label": "Chrono Divide · client patch notes",
            "url": "https://chronodivide.com/patch-notes.html"
          }
        ]
      },
      "families": [
        {
          "id": "command-and-conquer",
          "title": "Command & Conquer",
          "indexUrl": "https://playable.wtf/families/#family-command-and-conquer",
          "guideUrl": "https://playable.wtf/guides/command-and-conquer-versions/",
          "choices": [
            {
              "slug": "red-alert-2-browser",
              "label": "Red Alert 2 in a browser",
              "reason": "Chrono Divide offers browser multiplayer with classic or modern command controls.",
              "canonicalUrl": "https://playable.wtf/games/red-alert-2-browser/"
            },
            {
              "slug": "generals-zero-hour-browser",
              "label": "Use your Zero Hour installation",
              "reason": "GeneralsX Web reads your installed game through a WebGPU browser.",
              "canonicalUrl": "https://playable.wtf/games/generals-zero-hour-browser/"
            },
            {
              "slug": "openra-openra",
              "label": "Install revised classic RTS games",
              "reason": "OpenRA provides its own Tiberian Dawn, Red Alert and Dune 2000 rulesets.",
              "canonicalUrl": "https://playable.wtf/games/openra-openra/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://chronodivide.com"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "setup": {
          "answer": "Use Play Beta on the official Chrono Divide site and follow its client setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://chronodivide.com"
        },
        "devices": {
          "answer": "The creator lists current Chrome, Edge, Safari and Firefox plus phone/tablet support. A 64-bit operating system and browser, 4 GB RAM and at least a 1024×768 display are the published minimums.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://chronodivide.com"
        },
        "controls": {
          "answer": "Choose classic left-click commands or modern right-click commands in the client’s control options.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://chronodivide.com"
        },
        "multiplayer": {
          "answer": "The official page documents working multiplayer using a client-server model.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://chronodivide.com"
        },
        "issues": {
          "answer": "The creator recommends avoiding Firefox for better performance.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://chronodivide.com"
        }
      },
      "credits": [],
      "sourceUrl": "https://chronodivide.com"
    },
    {
      "id": "project:retro64-minecraft",
      "slug": "retro64-minecraft",
      "title": "Super Mario 64 × Minecraft",
      "project": "Retro64",
      "canonicalUrl": "https://playable.wtf/games/retro64-minecraft/",
      "originals": [
        {
          "id": "supermario64",
          "name": "Super Mario 64",
          "relationship": "includes-mechanics-from"
        },
        {
          "id": "minecraft",
          "name": "Minecraft",
          "relationship": "mod-for"
        }
      ],
      "kind": "Mashup mod",
      "genre": "Sandbox",
      "summary": "Mario’s movement transplanted into Minecraft through a native library and mod.",
      "editorial": {
        "sections": [
          {
            "id": "mario-in-minecraft",
            "title": "Mario’s movement inside a Minecraft world",
            "kind": "project",
            "paragraphs": [
              "Retro64 takes Mario’s movement into Minecraft rather than presenting a standalone Super Mario 64 campaign. The project documents the full moveset, including the backwards long jump, alongside attacks, swimming and travel between dimensions. The appeal is the encounter between that expressive movement and Minecraft’s spaces, not a claim that Peach’s Castle or the original course sequence is included.",
              "The crossover also changes how familiar systems meet: Mario can take damage and heal through experience or water. An optional first-person mode changes the viewpoint for some interactions. These are concrete ways the mod differs from simply launching Super Mario 64 beside Minecraft."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "caps",
            "title": "The elytra becomes a Wing Cap",
            "kind": "project",
            "paragraphs": [
              "The documented cap feature is the Wing Cap, accessed by equipping an elytra. Other caps are not implemented in the README’s status list. That is a useful boundary when planning a world or expecting the original game’s full set of power-ups.",
              "Treat the movement and Minecraft integration as the project’s core attraction. A list of Mario actions does not imply that every Super Mario 64 collectible, enemy or level has been recreated in the host game."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "mod-components",
            "title": "Installation has more than one component",
            "kind": "practical",
            "paragraphs": [
              "This repository is the Minecraft side of the mod. It also needs a native library and an executable for audio support; obtaining only the Java mod source is not a complete installation. The creator links an installation video for the assembled setup.",
              "For contributors, the source build uses a JDK above version 17 and the Gradle wrapper, producing a mod JAR. That build output is still one part of the larger setup. Follow the creator’s installation route for the intended Minecraft environment rather than treating a successful Java build as evidence that the native and audio components are already present."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Retro64 · project documentation",
            "url": "https://github.com/Retro64Mod/Retro64Mod"
          }
        ]
      },
      "families": [
        {
          "id": "mario",
          "title": "Mario platformers",
          "indexUrl": "https://playable.wtf/families/#family-mario",
          "guideUrl": "https://playable.wtf/guides/mario-platformer-versions/",
          "choices": [
            {
              "slug": "coop-deluxe-sm64coopdx",
              "label": "SM64 with friends",
              "reason": "Native online co-op synchronizes enemies and events, with public or private CoopNet rooms.",
              "canonicalUrl": "https://playable.wtf/games/coop-deluxe-sm64coopdx/"
            },
            {
              "slug": "super-mario-galaxy-galaxypad",
              "label": "Galaxy on iPhone or iPad",
              "reason": "Build a personal native app with touch and controller input; bring the supported USA Wii image.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-galaxy-galaxypad/"
            },
            {
              "slug": "super-mario-wonder-recomp",
              "label": "Follow an early Wonder build",
              "reason": "Source-build the Switch 1.0.0 project if you want to explore its experimental early-course progress.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-wonder-recomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "unknown",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/Retro64Mod/Retro64Mod"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "setup": {
          "answer": "Follow the repository’s installation guide and required companion components.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Retro64Mod/Retro64Mod"
        },
        "issues": {
          "answer": "The README calls the code unfinished; detailed game-data requirements were not established in the reviewed text.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Retro64Mod/Retro64Mod"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Retro64Mod/Retro64Mod"
    },
    {
      "id": "project:return-to-castle-wolfenstein-browser",
      "slug": "return-to-castle-wolfenstein-browser",
      "title": "Return to Castle Wolfenstein",
      "project": "Pieter’s web build",
      "canonicalUrl": "https://playable.wtf/games/return-to-castle-wolfenstein-browser/",
      "originals": [
        {
          "id": "returntocastlewolfenstein",
          "name": "Return to Castle Wolfenstein",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "Play the mp_beach multiplayer map through Pieter’s iortcw browser build.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Wolfenstein as a team objective game",
            "kind": "background",
            "paragraphs": [
              "Return to Castle Wolfenstein's original release combines an action-horror campaign with a separate multiplayer game. The campaign follows B.J. Blazkowicz into a mixture of wartime installations and supernatural threats. Multiplayer instead places Axis and Allied teams against one another around objectives.",
              "That distinction matters here: a page bearing the Return to Castle Wolfenstein name does not necessarily offer the campaign. The browser host describes its playable destination as multiplayer on mp_beach, so team play is the reason to open this build."
            ],
            "sourceIds": [
              "original",
              "host"
            ]
          },
          {
            "id": "this-version",
            "title": "The mp_beach browser build",
            "kind": "project",
            "paragraphs": [
              "Pieter's version runs iortcw through Wwasm and identifies mp_beach as its multiplayer map. It is an unofficial browser adaptation, with the familiar player-name field and Play entry point. The stated scope is specific enough to plan a session around that map rather than expecting a complete server browser full of every community level.",
              "The first visit downloads roughly 380 MB of game data. The host says that data is cached, so allow the initial transfer to finish before judging how quickly later visits start. A browser cache is local to the device and browser profile that received it."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "starting",
            "title": "Allow time for the first download",
            "kind": "practical",
            "paragraphs": [
              "Use a desktop browser; the host recommends Chrome. Enter your player name, select Play and leave room for the initial data load. This route is most useful when you want to reach the hosted multiplayer game without setting up a native client. For the single-player story or a different map collection, choose a release or project that explicitly includes it."
            ],
            "sourceIds": [
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "host",
            "label": "Pieter · Return to Castle Wolfenstein launcher",
            "url": "https://rtcw.pieter.com/"
          },
          {
            "id": "original",
            "label": "Bethesda · Return to Castle Wolfenstein description",
            "url": "https://store.steampowered.com/api/appdetails?appids=9010&l=english"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://rtcw.pieter.com"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "setup": {
          "answer": "Enter a player name, select Play and allow the first game-data download to finish.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rtcw.pieter.com"
        },
        "devices": {
          "answer": "The host recommends a desktop computer and Chrome.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rtcw.pieter.com"
        },
        "multiplayer": {
          "answer": "Join the host’s Return to Castle Wolfenstein multiplayer session using the player-name field and Play button.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rtcw.pieter.com"
        },
        "issues": {
          "answer": "The first load downloads about 380 MB of game data, which the host says is cached for later visits.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rtcw.pieter.com"
        },
        "scope": {
          "answer": "The hosted multiplayer route advertises the mp_beach map. It is a multiplayer client, rather than a route into the single-player campaign.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://rtcw.pieter.com"
        }
      },
      "credits": [],
      "sourceUrl": "https://rtcw.pieter.com"
    },
    {
      "id": "project:rsdkmodding-sonic-mania-decompilation",
      "slug": "rsdkmodding-sonic-mania-decompilation",
      "title": "Sonic Mania",
      "project": "RSDK Sonic Mania",
      "canonicalUrl": "https://playable.wtf/games/rsdkmodding-sonic-mania-decompilation/",
      "originals": [
        {
          "id": "sonicmania",
          "name": "Sonic Mania",
          "relationship": "associated-with"
        }
      ],
      "kind": "Decompilation-based port",
      "genre": "Platformer",
      "summary": "A buildable Sonic Mania decompilation requiring official assets.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Different ways through a 2D Sonic stage",
            "kind": "background",
            "paragraphs": [
              "Sonic Mania revisits classic zones with new layouts and bosses. Sonic’s speed, Tails’ flight and Knuckles’ strength give the characters different approaches to the same platforming spaces. The original also includes Competition and Co-Op modes. Those are features of the published game; this project is an alternative way to build its code and engine around your purchased assets."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "what-you-build",
            "title": "Game code, Retro Engine and mods",
            "kind": "project",
            "paragraphs": [
              "RSDKModding’s decompilation adds a built-in mod loader and supports building several released Mania revisions, including the initial console version, initial PC version and the Plus update. It can target RSDKv5U as well as the standalone RSDKv5 engine. The revision you build therefore matters when following mod or compatibility instructions.",
              "The repository can build Mania together with the Retro Engine dependency. Building only the Mania component is also possible, but that is a more specific development choice. For a first setup, follow the complete documented build path rather than treating one output file as a self-contained game."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "assets-and-saves",
            "title": "Bring supported assets and keep your save",
            "kind": "practical",
            "paragraphs": [
              "You must supply assets from an official supported release. The Netflix Games edition is explicitly excluded, even though it carries the same game name. The project’s Plus build options also do not replace the requirement to own the relevant content.",
              "The README allows saved data from the official PC versions to be copied into the decompilation’s folder. That gives existing PC players a route to continue progress. Keep an original backup before changing installations so you retain the source save as well as the working copy."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "build-and-limits",
            "title": "Know the build-specific requirements",
            "kind": "limitations",
            "paragraphs": [
              "Clone the repository recursively: GitHub’s source ZIP omits required submodules. Windows, Linux, Switch and Android each have their own dependency or build guidance. The Android route follows the Retro Engine’s documentation, and touch controls are supplied through a separate example mod rather than Netflix-edition support.",
              "OpenGL builds need the documented shader mod for videos and filters. If those are missing, follow the GLShaders instructions before assuming your game data is broken. The maintainers also aim to preserve original behavior, so bugs inherited from official releases are not automatically candidates for fixes."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "RSDK Sonic Mania · project documentation",
            "url": "https://github.com/RSDKModding/Sonic-Mania-Decompilation"
          },
          {
            "id": "original",
            "label": "SEGA · Sonic Mania on Steam",
            "url": "https://store.steampowered.com/app/584400/Sonic_Mania/"
          }
        ]
      },
      "families": [
        {
          "id": "sonic",
          "title": "Sonic games",
          "indexUrl": "https://playable.wtf/families/#family-sonic",
          "guideUrl": "https://playable.wtf/guides/sonic-game-versions/",
          "choices": [
            {
              "slug": "sonic-3-air-web",
              "label": "Sonic 3 in a web app",
              "reason": "The official A.I.R. web beta imports a compatible ROM and offers save-file exports.",
              "canonicalUrl": "https://playable.wtf/games/sonic-3-air-web/"
            },
            {
              "slug": "hedge-dev-unleashedrecomp",
              "label": "Unleashed on a computer",
              "reason": "Use the native Windows/Linux installer with your supported Xbox 360 game and title update.",
              "canonicalUrl": "https://playable.wtf/games/hedge-dev-unleashedrecomp/"
            },
            {
              "slug": "sansnope-unleashedrecomp-android",
              "label": "Unleashed with Android touch",
              "reason": "This experimental fork adds editable touch controls and its own in-app file importer.",
              "canonicalUrl": "https://playable.wtf/games/sansnope-unleashedrecomp-android/"
            },
            {
              "slug": "rsdkmodding-sonic-mania-decompilation",
              "label": "Mania and native mods",
              "reason": "Use supported Mania or Plus assets with the RSDK project’s built-in mod loader.",
              "canonicalUrl": "https://playable.wtf/games/rsdkmodding-sonic-mania-decompilation/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/RSDKModding/Sonic-Mania-Decompilation/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Assets from a supported official Sonic Mania or Sonic Mania Plus release.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/RSDKModding/Sonic-Mania-Decompilation"
        },
        "setup": {
          "answer": "Follow the repository’s RSDK and build instructions before placing the original assets.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/RSDKModding/Sonic-Mania-Decompilation"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/RSDKModding/Sonic-Mania-Decompilation"
    },
    {
      "id": "project:sal063-ac6-recomp",
      "slug": "sal063-ac6-recomp",
      "title": "Ace Combat 6: Fires of Liberation",
      "project": "AC6Recomp",
      "canonicalUrl": "https://playable.wtf/games/sal063-ac6-recomp/",
      "originals": [
        {
          "id": "acecombat6firesofliberation",
          "name": "Ace Combat 6: Fires of Liberation",
          "relationship": "port-of"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Flight",
      "summary": "A work-in-progress Windows recompilation of Ace Combat 6.",
      "editorial": {
        "sections": [
          {
            "id": "flying",
            "title": "Flying involves more than pointing at a target",
            "kind": "project",
            "paragraphs": [
              "AC6Recomp brings Ace Combat 6’s aircraft controls to a native Windows executable. The documented controls combine steering, acceleration and braking with target selection, gun and missile fire, radar and wingman commands. Mouse steering leaves the keyboard available for those actions; holding Left Alt changes the mouse to camera control so looking around does not steer the aircraft.",
              "Controllers work immediately, while keyboard and mouse input must be enabled in the configuration. The bindings can be remapped and reload while the game runs. That makes the control scheme a meaningful part of setup, especially if you want to separate looking, rolling and weapon selection."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "presentation",
            "title": "Sharper terrain with a demanding graphics backend",
            "kind": "project",
            "paragraphs": [
              "The project can run gameplay up to 60 FPS with a corrected flight model, exposes higher-resolution terrain and supports internal resolution scaling. Optional ultrawide expands missions and in-engine cinematics; the hangar and menus stay at 16:9. Cinematics were staged for the original framing, so a wider view can expose scene edges.",
              "The game code is recompiled, but rendering still uses the RexGlue/Xenia graphics backend. Higher resolution and frame-rate targets can therefore remain expensive. These options are targets to tune for your machine, not a promise that meeting the minimum requirements delivers 60 FPS."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "game-data",
            "title": "Use the supported region and hardware",
            "kind": "practical",
            "paragraphs": [
              "The documented platform is 64-bit Windows 10 or 11 with an AVX2-capable CPU and Direct3D 12 graphics. Supply your own US game image beside the executable, or an assets folder of extracted files. European and Japanese game data are not supported; the Japanese language option does not change that restriction. Extracted DLC has its own dlc directory."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "settings-and-limits",
            "title": "Start with conservative settings",
            "kind": "limitations",
            "paragraphs": [
              "The build reaches gameplay but remains experimental, with possible crashes, bugs and missing functionality. F4 opens its settings overlay, F3 toggles the frame-rate display and F11 changes fullscreen mode. When editing ac6recomp.toml manually, use forward slashes in file paths: a malformed backslash escape can invalidate the configuration and reset the settings to defaults."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "AC6Recomp · project documentation",
            "url": "https://raw.githubusercontent.com/sal063/AC6_recomp/HEAD/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "beta",
        "route": {
          "kind": "download",
          "url": "https://github.com/sal063/AC6_recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "An owned US-region Ace Combat 6 ISO, or its extracted files in assets/ next to ac6recomp.exe. European and Japanese editions are not supported.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/sal063/AC6_recomp/HEAD/README.md"
        },
        "setup": {
          "answer": "Extract the release, place the supported ISO or assets directory beside ac6recomp.exe, and follow the project’s first-run instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/sal063/AC6_recomp/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows 10/11 64-bit, an AVX2 CPU and a Direct3D 12-capable GPU are required.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/sal063/AC6_recomp/HEAD/README.md"
        },
        "controls": {
          "answer": "Controllers work by default. Keyboard and mouse controls require enabling ac6_kbm_enabled in the configuration.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/sal063/AC6_recomp/HEAD/README.md"
        },
        "issues": {
          "answer": "The project can boot and reach gameplay according to its creator, but remains work in progress with bugs, crashes and missing functionality.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/sal063/AC6_recomp/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/sal063/AC6_recomp"
    },
    {
      "id": "project:sansnope-unleashedrecomp-android",
      "slug": "sansnope-unleashedrecomp-android",
      "title": "Sonic Unleashed",
      "project": "Unleashed for Android",
      "canonicalUrl": "https://playable.wtf/games/sansnope-unleashedrecomp-android/",
      "originals": [
        {
          "id": "sonicunleashed",
          "name": "Sonic Unleashed",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Platformer",
      "summary": "An experimental Android adaptation with touch and gamepad controls.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "The original game’s changing pace",
            "kind": "background",
            "paragraphs": [
              "Sonic Unleashed contrasts a speedy daytime Sonic with a powerful nighttime transformation. The Android project targets that Xbox 360 adventure, so touch layout and camera choices need to suit both sides of the game. It is worth adjusting the controls for a comfortable longer session rather than judging the layout only from the launcher or opening screen."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "unleashed-on-a-phone",
            "title": "The Android adaptation",
            "kind": "project",
            "paragraphs": [
              "This is an unofficial Android adaptation of Unleashed Recompiled, bringing the Xbox 360 version of Sonic Unleashed to supported arm64 phones and handhelds. It adds a mobile installer, touch layout editor, controller support and mod management around the recompilation. It is a separate experimental community port, so desktop compatibility and performance do not automatically carry across.",
              "The creator describes support for the full game, including normal gameplay, while warning that stability varies by phone, Android version and GPU driver. Keep separate copies of saves and original game files when trying new releases or changing storage."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "install-without-a-desktop",
            "title": "Installing without a desktop computer",
            "kind": "practical",
            "paragraphs": [
              "You need Android 10 or newer, several gigabytes of storage and files from your own Xbox 360 copy. The app accepts a ZIP or extracted game folder and can also stage base-game, title-update and optional DLC packages for verification. A missing patched executable can be generated on the phone; a prior desktop installation is not required.",
              "DLC can be added later without importing the whole base game again. Internal storage or a mounted SD card can hold the installation. Close and reopen the app before switching storage after a session, and leave the selected card mounted when you play. The copy operation checks the transferred files and preserves the originals."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "touch-or-controller",
            "title": "Touch layouts and physical controls",
            "kind": "practical",
            "paragraphs": [
              "The on-screen layout changes with the game: a directional pad appears for menus and results, while cutscenes reduce the overlay to a skip control. Camera movement uses a swipe on the free right side of the screen or an optional virtual right stick. The launcher’s layout editor lets you reposition and resize individual buttons, which is useful when a phone’s default spacing does not suit your grip.",
              "Bluetooth and USB controllers supported by SDL are another route. Physical input hides the touch overlay; touching the screen restores it. Mods are installed and ordered in the included manager, but desktop mods that require Windows DLLs or desktop-only code do not work here."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "device-limits-and-steady-play",
            "title": "Device limits and steadier play",
            "kind": "limitations",
            "paragraphs": [
              "Android version alone is not enough to judge compatibility. Development focuses on selected Qualcomm Adreno GPUs. Recent Mali devices with Vulkan 1.3 have experimental support through the system driver, while older Bifrost-generation Mali hardware is unsupported. PowerVR and Samsung Xclipse remain untested in the project’s device notes.",
              "Start with the supplied defaults: half-resolution rendering, no anti-aliasing and motion blur off. If a session runs hot or cannot sustain its target, lower resolution or texture quality and try a 30 fps cap before adding visual mods. Driver changes can affect both correctness and speed, so keep the bundled configuration as a reference point rather than expecting a universal phone-performance setting."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Unleashed for Android · project documentation",
            "url": "https://github.com/SansNope/UnleashedRecomp-Android"
          },
          {
            "id": "original",
            "label": "SEGA · Sonic Unleashed on Xbox",
            "url": "https://www.xbox.com/en-US/games/store/sonic-unleashed/c098fgnmts8f"
          }
        ]
      },
      "families": [
        {
          "id": "sonic",
          "title": "Sonic games",
          "indexUrl": "https://playable.wtf/families/#family-sonic",
          "guideUrl": "https://playable.wtf/guides/sonic-game-versions/",
          "choices": [
            {
              "slug": "sonic-3-air-web",
              "label": "Sonic 3 in a web app",
              "reason": "The official A.I.R. web beta imports a compatible ROM and offers save-file exports.",
              "canonicalUrl": "https://playable.wtf/games/sonic-3-air-web/"
            },
            {
              "slug": "hedge-dev-unleashedrecomp",
              "label": "Unleashed on a computer",
              "reason": "Use the native Windows/Linux installer with your supported Xbox 360 game and title update.",
              "canonicalUrl": "https://playable.wtf/games/hedge-dev-unleashedrecomp/"
            },
            {
              "slug": "sansnope-unleashedrecomp-android",
              "label": "Unleashed with Android touch",
              "reason": "This experimental fork adds editable touch controls and its own in-app file importer.",
              "canonicalUrl": "https://playable.wtf/games/sansnope-unleashedrecomp-android/"
            },
            {
              "slug": "rsdkmodding-sonic-mania-decompilation",
              "label": "Mania and native mods",
              "reason": "Use supported Mania or Plus assets with the RSDK project’s built-in mod loader.",
              "canonicalUrl": "https://playable.wtf/games/rsdkmodding-sonic-mania-decompilation/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/SansNope/UnleashedRecomp-Android/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Xbox 360 Sonic Unleashed files.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/SansNope/UnleashedRecomp-Android"
        },
        "setup": {
          "answer": "Read the Android device requirements and follow the in-app folder or archive import.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/SansNope/UnleashedRecomp-Android"
        },
        "devices": {
          "answer": "Experimental Android port. Device and GPU compatibility vary.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/SansNope/UnleashedRecomp-Android"
        },
        "controls": {
          "answer": "Touch controls and gamepad support are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/SansNope/UnleashedRecomp-Android"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/SansNope/UnleashedRecomp-Android"
    },
    {
      "id": "project:sciaschi-cbfd-recompiled",
      "slug": "sciaschi-cbfd-recompiled",
      "title": "Conker’s Bad Fur Day",
      "project": "Conker Recompiled",
      "canonicalUrl": "https://playable.wtf/games/sciaschi-cbfd-recompiled/",
      "originals": [
        {
          "id": "conkersbadfurday",
          "name": "Conker's Bad Fur Day",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Platformer",
      "summary": "The N64 game rebuilt around N64ModernRuntime and RT64.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original game: a very strange day out",
            "kind": "background",
            "paragraphs": [
              "Conker’s Bad Fur Day follows a hungover squirrel into an adventure whose cartoon animals come with adult humour. Running, climbing, swimming and a tail-assisted jump form the basic movement, but the situations keep changing: you can end up guiding a bouncing pitchfork, dodging obstacles on a jet board or aiming a shotgun at zombies.",
              "Watch for the lightbulb above Conker’s head. It signals a context-sensitive action, often at a pad marked B, so the same button can do something different when the scene calls for it. That mix of ordinary platforming and specific comic set pieces explains why camera and aiming improvements are useful here. The port’s modern input options are described separately below."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "The N64 game with a more flexible camera",
            "kind": "project",
            "paragraphs": [
              "Conker Recompiled targets the US Nintendo 64 game. Its most practical changes are a free camera on the right stick or mouse, mouse and gyro aiming, adjustable field of view, and remappable controls. These are useful reasons to choose this port if the original controller layout is a barrier. Optional aiming aids include a reticle and lock-on settings.",
              "RT64 supplies higher resolutions, anti-aliasing and widescreen across play, menus and split screen. High frame-rate presentation interpolates Conker, his shadow and the camera between the game’s frames. You can retain 4:3 cutscenes independently, and the original music, effects and voices are supported."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Bring the right ROM and select your controls",
            "kind": "practical",
            "paragraphs": [
              "Extract the release for Windows, Linux or Apple Silicon macOS, then use Load ROM and select your own US copy. The launcher remembers it for subsequent starts. European ROMs are not supported. Asset-only ROM hacks, including certain translations and uncensoring patches, can work, but changes to the original code are refused.",
              "WASD moves by default; Space supplies the N64 A button, Left Shift B, Q Z and Enter Start. The Controls page lets you change those bindings. Controllers and N64 adapters have their own mapping support, and each controller gets a separate player in multiplayer. Configure the camera and aiming together, because those options determine how a modern pad feels."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "saves-and-mods",
            "title": "Keep regular saves alongside save states",
            "kind": "practical",
            "paragraphs": [
              "The game’s EEPROM saves remain separate from save states. F5 saves a state, F7 restores it and F6 changes between nine slots, making the two systems useful for different purposes. Normal saves, settings and the stored ROM live in the platform’s ConkerRecompiled user-data folder; an empty portable.txt beside the executable switches to a portable arrangement.",
              "The supplied mod set offers intro skipping, broader cutscene skipping and optional cheats. Texture packs are also supported. The maintainer reports an end-to-end playthrough, while separately noting that macOS has not been confirmed through to the end and Intel Macs have not been tried. Widescreen also crops the top and bottom of the pause menu’s blurred background."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Conker Recompiled · project documentation",
            "url": "https://github.com/sciaschi/CBFD-Recompiled"
          },
          {
            "id": "original",
            "label": "Rare · original Conker instruction booklet, pages 4–15",
            "url": "https://s3.amazonaws.com/szmanuals/5ac4ad112b1e841c7fdd25e0db96bb95"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/sciaschi/CBFD-Recompiled/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own US Conker’s Bad Fur Day ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/sciaschi/CBFD-Recompiled"
        },
        "setup": {
          "answer": "Unpack a release, run ConkerRecomp and select the supported US ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/sciaschi/CBFD-Recompiled"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/sciaschi/CBFD-Recompiled"
    },
    {
      "id": "project:shadow-of-the-colossus-2018-pc",
      "slug": "shadow-of-the-colossus-2018-pc",
      "title": "Shadow of the Colossus (2018)",
      "project": "ShadowOfTheColossus-PC",
      "canonicalUrl": "https://playable.wtf/games/shadow-of-the-colossus-2018-pc/",
      "originals": [
        {
          "id": "shadowofthecolossus2018",
          "name": "Shadow of the Colossus (2018)",
          "relationship": "associated-with"
        }
      ],
      "kind": "Native compatibility port",
      "genre": "Action adventure",
      "summary": "A Windows/Vulkan runtime for Bluepoint’s PS4 remake, requiring your own game and console audio files.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A journey built around enormous encounters",
            "kind": "background",
            "paragraphs": [
              "Shadow of the Colossus sends a solitary traveler across an ancient landscape to seek creatures connected to the power to revive a loved one. A sword and bow are the basic tools, but each enormous opponent presents a different problem to understand. The journey between encounters and the contrast between a small human figure and a vast creature are central to its appeal.",
              "This project targets Bluepoint and Japan Studio’s 2018 PS4 remake. That distinction matters when supplying game data or comparing imagery: the original PS2 release is not the input for this runtime."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "runtime-and-image",
            "title": "Output resolution is not internal resolution",
            "kind": "project",
            "paragraphs": [
              "The runtime executes the PS4 game’s own x86-64 code and translates graphics to Vulkan on Windows. Its launcher adds keyboard remapping, mouse camera controls and gamepad support, plus save import from an existing shadPS4 setup.",
              "The up-to-4K output setting uses FSR 1 and sharpening from internal 1080p rendering. Treat that as upscaled output rather than native 4K. The 60 FPS and filtering patches are tied to the supported EU 1.01 revision, so display options and executable compatibility should be checked together."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "files-and-audio",
            "title": "The audio modules are a separate requirement",
            "kind": "practical",
            "paragraphs": [
              "Use your own CUSA08809 game dump and the two required sound modules from your console: libSceNgs2.sprx and libSceUlt.sprx. The launcher can locate existing local files and offers save import, but the release includes none of those Sony files. Without the sound modules the game runs silently.",
              "Expect shader rebuilding after updates and demanding memory use in large areas. Version 0.57’s AMD color fix was not yet validated on AMD hardware in the creator’s notes, so do not read its presence in a changelog as a solved problem on every card. Preserve saves before changing the runtime or importing another installation."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "PlayStation · Shadow of the Colossus",
            "url": "https://www.playstation.com/en-us/games/shadow-of-the-colossus/"
          },
          {
            "id": "project",
            "label": "ShadowOfTheColossus-PC · requirements and limits",
            "url": "https://github.com/AjncSystem/ShadowOfTheColossus-PC"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "beta",
        "route": {
          "kind": "download",
          "url": "https://github.com/AjncSystem/ShadowOfTheColossus-PC/releases/tag/v0.57"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own CUSA08809 PS4 game dump, preferably EU version 1.01. Audio also needs your own decrypted libSceNgs2.sprx and libSceUlt.sprx console modules; those files are not included.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/AjncSystem/ShadowOfTheColossus-PC/HEAD/README.md"
        },
        "setup": {
          "answer": "Extract SotC-PC.zip from the project release. In the launcher, select your CUSA08809 game folder and your own required audio modules, then configure the display and controls. The game runs silently without the audio modules.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/AjncSystem/ShadowOfTheColossus-PC/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows 10/11 64-bit with a Vulkan 1.3 GPU and a recent driver. The project documents NVIDIA, AMD and Intel paths; no mobile or browser build is verified.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/AjncSystem/ShadowOfTheColossus-PC/HEAD/README.md"
        },
        "controls": {
          "answer": "Keyboard, controller and mouse camera input are documented together. The launcher provides key remapping and display settings.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/AjncSystem/ShadowOfTheColossus-PC/HEAD/README.md"
        },
        "issues": {
          "answer": "v0.57 changes the AMD shader path, but its release notes explicitly say that fix had not yet been tested on an AMD card. The shader cache rebuilds at first start. The 4K output option upscales internal 1080p with FSR 1 and RCAS.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/AjncSystem/ShadowOfTheColossus-PC/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/AjncSystem/ShadowOfTheColossus-PC"
    },
    {
      "id": "project:shipa-2-xerenge",
      "slug": "shipa-2-xerenge",
      "title": "Burnout Revenge",
      "project": "Xerenge",
      "canonicalUrl": "https://playable.wtf/games/shipa-2-xerenge/",
      "originals": [
        {
          "id": "burnoutrevenge",
          "name": "Burnout Revenge",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Racing",
      "summary": "The Xbox 360 racer rebuilt locally from a supported disc.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "Racing and Crash mode from the Xbox 360 release",
            "kind": "project",
            "paragraphs": [
              "Xerenge brings the retail Xbox 360 version of Burnout Revenge to a native program. The maintainer describes working races, Crash mode, replays, saves, videos and the licensed soundtrack. Its default timing preserves the console rhythm: races run against a 60-Hz clock and Crash mode uses 30 fps. A fast monitor does not automatically make the game run faster.",
              "The default plume renderer draws at the window’s resolution, while an alternative Xenos backend provides a comparison when graphics differ. Occasional black flashes and brief texture errors remain. Frame interpolation is unfinished, so unlocking the frame rate is a separate choice from obtaining smoothly interpolated motion."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "disc-setup",
            "title": "The disc region matters",
            "kind": "practical",
            "paragraphs": [
              "Use a supported European or US retail Xbox 360 image. These editions require different generated builds: the European version selects among its regional languages and videos, while the US release supplies American English and its own videos. Mixing a build and the other region’s files can fail immediately, even though both discs are supported.",
              "The installer checks the image, extracts it, downloads the open-source tools and builds locally. It needs development prerequisites as well as a working graphics driver; it is not simply an archive containing a finished game and its assets. The prerequisite checker is worth running before starting a long build."
            ],
            "sourceIds": [
              "setup"
            ]
          },
          {
            "id": "presentation",
            "title": "Keep useful visual settings within reach",
            "kind": "practical",
            "paragraphs": [
              "The installer’s bloom, motion-blur and renderer choices are stored in xerenge.conf and can be changed for later launches. Turning bloom off can leave the sky grey and the picture dull, because the game’s lighting relies on that pass. A flatter image is therefore not necessarily a broken disc.",
              "On macOS the project uses plume; the alternative renderer can produce a black window. Apple Silicon has been tried on a specific machine, while Intel Mac support is a build target without a corresponding hardware play claim. Linux currently runs through X11. Match the platform instructions to your machine before selecting an installer."
            ],
            "sourceIds": [
              "setup",
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Xerenge · project documentation",
            "url": "https://github.com/shipa-2/Xerenge"
          },
          {
            "id": "setup",
            "label": "Xerenge · disc and platform setup",
            "url": "https://github.com/shipa-2/Xerenge/blob/HEAD/SETUP.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/shipa-2/Xerenge/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported European or US retail Xbox 360 disc image.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/shipa-2/Xerenge"
        },
        "setup": {
          "answer": "Follow the local build/launcher workflow so extraction and translation use your own disc.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/shipa-2/Xerenge"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/shipa-2/Xerenge"
    },
    {
      "id": "project:shmargus-gsrecomp",
      "slug": "shmargus-gsrecomp",
      "title": "Golden Sun",
      "project": "GSRecomp",
      "canonicalUrl": "https://playable.wtf/games/shmargus-gsrecomp/",
      "originals": [
        {
          "id": "goldensun",
          "name": "Golden Sun",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "RPG",
      "summary": "A GBA recompilation in public testing for Windows and Linux.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "A wider Golden Sun with adjustable pacing",
            "kind": "project",
            "paragraphs": [
              "GSRecomp’s collection launcher now handles both Golden Sun and The Lost Age, using a separate supported ROM for each. This listing’s original Golden Sun is called The Broken Seal in that launcher. Its expanded view covers fields, the world map and battles, with optional color profiles and screen filters for choosing between a sharper monitor image and a more handheld-like appearance.",
              "The port also changes how a session can be paced. Walking speed, encounter rate and battle speed are adjustable, while an optional Hard Mode strengthens enemies and is remembered per save. These are port additions, not requirements for playing the original adventure. If you want familiar balance first, leave them unchanged."
            ],
            "sourceIds": [
              "game"
            ]
          },
          {
            "id": "setup",
            "title": "Let the launcher prepare your cartridge",
            "kind": "practical",
            "paragraphs": [
              "Select The Broken Seal, provide your USA/Europe Golden Sun ROM and let the launcher check it. The game code is built locally on the first run and after updates. The player package includes a compiler, while Linux still needs system SDL2 and OpenGL. No GBA BIOS is needed to play.",
              "Keep the ROMs and Saves folders when moving the installation. The latter holds both battery saves and save states. An incompatible imported emulator save is reported by the launcher, so do not assume every file bearing a save extension can be dropped in unchanged. F1 opens settings, including rebindable controls and hotkeys."
            ],
            "sourceIds": [
              "game"
            ]
          },
          {
            "id": "limits",
            "title": "Treat widescreen and public testing separately",
            "kind": "limitations",
            "paragraphs": [
              "The maintainer describes a path through to the ending credits, but the release remains a public-testing build. A few major spell effects still stop at the old screen edge, rare pink flashes can occur and the Mars Star has a known visual problem. Those are specific limits of the new rendering rather than reasons to expect every effect to fill the wider view.",
              "A rare post-Psynergy data-unpacking crash is caught and recovered from, but its underlying cause remains unresolved. The opening storm and battles also have crash reports. For a long RPG session, regular saves matter more than the availability of fast-forward or cheats."
            ],
            "sourceIds": [
              "game"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "GSRecomp · project documentation",
            "url": "https://github.com/Shmargus/GSRecomp"
          },
          {
            "id": "game",
            "label": "GSRecomp · The Broken Seal player guide",
            "url": "https://github.com/Shmargus/GSRecomp/blob/HEAD/The%20Broken%20Seal/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/Shmargus/GSRecomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported USA/Europe Golden Sun ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Shmargus/GSRecomp"
        },
        "setup": {
          "answer": "Use the pre-release launcher, which verifies the ROM before generating the local game code.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Shmargus/GSRecomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Shmargus/GSRecomp"
    },
    {
      "id": "project:sinan-karakaya-dq8-recompiled",
      "slug": "sinan-karakaya-dq8-recompiled",
      "title": "Dragon Quest VIII",
      "project": "DQ8Recomp",
      "canonicalUrl": "https://playable.wtf/games/sinan-karakaya-dq8-recompiled/",
      "originals": [
        {
          "id": "dragonquestviii",
          "name": "Dragon Quest VIII",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "RPG",
      "summary": "An experimental PS2 port that has reached field gameplay.",
      "editorial": {
        "sections": [
          {
            "id": "scope",
            "title": "A development build that reaches the field",
            "kind": "project",
            "paragraphs": [
              "DQ8Recomp is an experimental native project for the North American PlayStation 2 edition of Dragon Quest VIII. It can boot, load saves and reach field gameplay with sound from the original drivers. Sustained performance and full-game compatibility are still unfinished, so this is a project to explore or help test rather than a finished route for a long playthrough.",
              "The distinction between a launcher release and a finished game matters here. The downloadable bundles automate local preparation, but the game executable is generated from your disc on your machine. A default developer CMake build produces a stub, not Dragon Quest VIII."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "What the launcher actually builds",
            "kind": "practical",
            "paragraphs": [
              "The supported input is an ISO of SLUS-21207, the North American release. PAL configuration is incomplete. Choose a launcher bundle for your actual operating system and CPU, unpack it fully, then provide the image. The launcher checks the disc, extracts its files, translates the code and compiles the result before offering Play.",
              "Allow around 8 GB of free space and time for that initial build. The packages carry the build tools and libraries but still need a system C++ compiler, which the launcher can help install through the platform’s normal tooling. Having a launcher window open is therefore only the start of setup."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "progress",
            "title": "Keep your files separate from the launcher",
            "kind": "practical",
            "paragraphs": [
              "Game data and saves normally live in a DQ8Recomp folder in your home directory. The launcher lets you choose another location before building. A newer launcher keeps that data and rebuilds changed work rather than requiring a new save directory for every download.",
              "F1 opens controls, display and sound options in the running game. The project’s Running and Project Status guides are the useful next references when evaluating progress. Expect incomplete compatibility even if a particular save loads successfully; that milestone does not establish every battle, cutscene or later area."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "DQ8Recomp · project documentation",
            "url": "https://github.com/Sinan-Karakaya/DQ8-Recompiled"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "unknown",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/Sinan-Karakaya/DQ8-Recompiled"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own North American PS2 disc image (SLUS_212.07).",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Sinan-Karakaya/DQ8-Recompiled"
        },
        "setup": {
          "answer": "Use the development documentation; this is not presented as a finished downloadable game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Sinan-Karakaya/DQ8-Recompiled"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Sinan-Karakaya/DQ8-Recompiled"
    },
    {
      "id": "project:sirhalo23-ridgeracer6-recompilation",
      "slug": "sirhalo23-ridgeracer6-recompilation",
      "title": "Ridge Racer 6",
      "project": "Ridge Racer 6 Recomp",
      "canonicalUrl": "https://playable.wtf/games/sirhalo23-ridgeracer6-recompilation/",
      "originals": [
        {
          "id": "ridgeracer6",
          "name": "Ridge Racer 6",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Racing",
      "summary": "An early native Windows release of the Xbox 360 racer.",
      "editorial": {
        "sections": [
          {
            "id": "this-edition",
            "title": "The Xbox 360 racer with a Windows front end",
            "kind": "project",
            "paragraphs": [
              "Ridge Racer 6 Recomp brings the Xbox 360 program to Windows through ahead-of-time translation and a ReXGlue runtime. Tracks, cars, music and video come from your own USA disc. The project remains an early test release, so its native executable should not be taken as a guarantee of finished compatibility.",
              "The most immediate changes concern the view from the car: higher internal resolution, optional anti-aliasing and texture filtering, plus ultrawide output. The race HUD can remain within a 16:9 area or move toward the screen edges. Those choices let you keep familiar instrument placement even when widening the view."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "first-race",
            "title": "Let the launcher prepare the disc once",
            "kind": "practical",
            "paragraphs": [
              "Extract the Windows package into a writable folder, open RR6 Launcher and choose your disc ISO. The launcher checks the game and extracts roughly 6 GB of files. After that preparation it uses the extracted files rather than needing the image on every start. Its banner is also taken from your own opening movie rather than included as game artwork.",
              "Choose the display and input settings in the launcher. Xbox and PlayStation controllers are documented through SDL, and keyboard keys are remappable. Saves are kept in Documents/rr6_recomp, which is the useful folder to preserve when moving the application or trying another release."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "platform-limits",
            "title": "Treat the Linux test as a separate choice",
            "kind": "limitations",
            "paragraphs": [
              "The project also publishes an experimental Linux test build using Vulkan. Its README records a black-track rendering problem in an early Steam Deck test and later fixes with limited hardware validation. That history makes the experimental label meaningful; the Linux package is not interchangeable with a mature, proven Deck release.",
              "On Deck, the documented route launches through Steam so its buttons are exposed as a controller. Follow the package-specific instructions and current known issues rather than transferring Windows assumptions to the handheld. The original USA disc requirement applies to both routes."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Ridge Racer 6 Recomp · project documentation",
            "url": "https://github.com/Sirhalo23/RidgeRacer6-Recompilation"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/Sirhalo23/RidgeRacer6-Recompilation/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own USA Xbox 360 Ridge Racer 6 disc (title ID 4E4D07D3).",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Sirhalo23/RidgeRacer6-Recompilation"
        },
        "setup": {
          "answer": "Follow the current original-project release and setup guide; supply the supported game files when requested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Sirhalo23/RidgeRacer6-Recompilation"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Sirhalo23/RidgeRacer6-Recompilation"
    },
    {
      "id": "project:skate-3-browser",
      "slug": "skate-3-browser",
      "title": "Skate 3",
      "project": "aaddpp fan game",
      "canonicalUrl": "https://playable.wtf/games/skate-3-browser/",
      "originals": [
        {
          "id": "skate3",
          "name": "Skate 3",
          "relationship": "associated-with"
        }
      ],
      "kind": "Fan recreation",
      "genre": "Sports",
      "summary": "A separate browser fan game that streams data from your converted copy.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Skating through stick movements",
            "kind": "background",
            "paragraphs": [
              "The original Skate 3 takes place in Port Carverton, where districts, plazas and skateparks provide places to find a line and refine a trick. Its broader career centers on building a skate team and brand, with Skate.School offering a place to practice the stick-based controls before heading into the city.",
              "Those are features of the original commercial game. The browser fan build's control layout puts steering on one stick and Flick It movements on the other, with world selection and player settings in its own frontend. Its menus should not be read as a promise that the whole original career has been reproduced."
            ],
            "sourceIds": [
              "original",
              "frontend"
            ]
          },
          {
            "id": "this-version",
            "title": "A fan build using your converted copy",
            "kind": "project",
            "paragraphs": [
              "The aaddpp host streams game data from your own copy of Skate 3 after it has been converted for this fan project. That preparation is separate from choosing controls or a world: a raw ISO is not the documented input, and the public launcher provides no disc-to-data conversion walkthrough.",
              "For already prepared data, the frontend documents SERVE.bat on the computer holding it and an ONLINE → Game Server panel for that server’s address or a compatible hosted game-data ZIP. The connection steps below apply after conversion. If you only have a disc image, you still need this project’s conversion tools and instructions before those steps can help."
            ],
            "sourceIds": [
              "project",
              "frontend"
            ]
          },
          {
            "id": "controls",
            "title": "Gamepad or keyboard right stick",
            "kind": "practical",
            "paragraphs": [
              "The keyboard layout substitutes keys for both sticks, including the right-stick Flick It movements. A gamepad keeps steering and tricks on separate sticks. Open PLAYER → Controls to compare the full mappings before practicing a line; Esc returns you to the pause menu."
            ],
            "sourceIds": [
              "frontend"
            ]
          },
          {
            "id": "performance",
            "title": "Start with a supported graphics path",
            "kind": "limitations",
            "paragraphs": [
              "WebGPU is a startup requirement, so lowering graphics quality cannot repair a browser that lacks it. The launcher points to current Chrome, Edge or Brave. Once that requirement is met, Lite Mode trades texture detail and shadows for lower memory use.",
              "Keep the downloaded data while experimenting with control or graphics preferences. Clearing the cache makes the next session fetch maps and game data again; the separate settings reset is for saved options."
            ],
            "sourceIds": [
              "frontend",
              "runtime"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "EA · Skate 3 game features",
            "url": "https://www.ea.com/games/skate/skate-3"
          },
          {
            "id": "project",
            "label": "aaddpp · Skate browser launcher",
            "url": "https://skate.aaddpp.lol/"
          },
          {
            "id": "frontend",
            "label": "aaddpp · controls and frontend source",
            "url": "https://skate.aaddpp.lol/frontend.js?v=335e6b4e7f6b"
          },
          {
            "id": "runtime",
            "label": "aaddpp · browser runtime requirements",
            "url": "https://skate.aaddpp.lol/main.js?v=335e6b4e7f6b"
          }
        ]
      },
      "families": [
        {
          "id": "skate",
          "title": "Skate",
          "indexUrl": "https://playable.wtf/families/#family-skate",
          "guideUrl": "https://playable.wtf/guides/skate-browser-vs-native-ports/",
          "choices": [
            {
              "slug": "skate-3-native",
              "label": "Desktop disc installer",
              "reason": "A release-based ISO installer and controller input; Windows is the maintainer’s most-tested platform.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-native/"
            },
            {
              "slug": "skate-3-browser",
              "label": "Prepared-data browser experiment",
              "reason": "Connect a compatible converted copy through Game Server; the public launcher supplies no converter.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-browser/"
            },
            {
              "slug": "andrewnakas-skate3-android",
              "label": "Android installation",
              "reason": "The native app can extract your own disc image and Title Update 3 on the phone.",
              "canonicalUrl": "https://playable.wtf/games/andrewnakas-skate3-android/"
            },
            {
              "slug": "skate-3-rust-engine",
              "label": "Skating rewrite",
              "reason": "A gamepad-led Windows experiment for tricks and maps, with unfinished original-game parity.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-rust-engine/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://skate.aaddpp.lol"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "files": {
          "answer": "Use your own converted copy of Skate 3, prepared for this fan project, served from the computer holding that data or supplied as a compatible hosted game-data ZIP. A raw disc image is not the documented input. The public launcher does not include a disc-to-data conversion walkthrough.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://skate.aaddpp.lol/frontend.js?v=335e6b4e7f6b"
        },
        "setup": {
          "answer": "With this project’s converted data already prepared, run SERVE.bat on the computer holding it and open the address it prints. In ONLINE → Game Server, enter that server address or a compatible hosted game-data ZIP URL, choose Use this server, then Re-check. These steps connect prepared data; they do not convert an ISO.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://skate.aaddpp.lol/frontend.js?v=335e6b4e7f6b"
        },
        "devices": {
          "answer": "The launcher requires WebGPU and recommends current Chrome, Edge or Brave when it is unavailable. Use the HTTPS host; browser graphics support and memory still limit which devices can run it.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://skate.aaddpp.lol/main.js?v=335e6b4e7f6b"
        },
        "controls": {
          "answer": "Use a gamepad’s right stick for Flick It tricks and A/Cross to push. Without a controller, WASD acts as the left stick, arrows as the right stick and Space as A. Esc pauses; PLAYER → Controls shows the full mapping.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://skate.aaddpp.lol/frontend.js?v=335e6b4e7f6b"
        },
        "multiplayer": {
          "answer": "Everyone opens the same host and chooses the same world. In the pause menu’s ONLINE section, host a session, find a session on that server or join with the host’s code.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://skate.aaddpp.lol/frontend.js?v=335e6b4e7f6b"
        },
        "issues": {
          "answer": "Lite Mode lowers texture detail and removes shadows to reduce memory use. Saved Downloads removes cached maps and game data so they download again; Delete Local Settings clears saved options.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://skate.aaddpp.lol/frontend.js?v=335e6b4e7f6b"
        }
      },
      "credits": [],
      "sourceUrl": "https://skate.aaddpp.lol"
    },
    {
      "id": "project:skate-3-native",
      "slug": "skate-3-native",
      "title": "Skate 3",
      "project": "Skate3Recomp",
      "canonicalUrl": "https://playable.wtf/games/skate-3-native/",
      "originals": [
        {
          "id": "skate3",
          "name": "Skate 3",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Sports",
      "summary": "The Xbox 360 skating game rebuilt for Windows, Linux and macOS.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original game: make a spot your own",
            "kind": "background",
            "paragraphs": [
              "Skate 3 places its skating challenges in Port Carverton, with activities such as Own the Lot and Hall of Meat alongside tools for making your own moments. Skate.School introduces the moves, the object dropper changes a spot’s possibilities, and the Replay Editor lets you revisit a trick after landing it. That combination rewards practicing a line as much as simply moving on to the next challenge."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "native-skating",
            "title": "Skate 3 as a desktop game",
            "kind": "project",
            "paragraphs": [
              "Skate3Recomp brings the Xbox 360 version of Skate 3 to a local application on Windows, Linux and macOS. Its native renderer handles the skating world as well as menus, the HUD, replays, photos and the skater and park editors. That makes this a different starting point from a hosted browser build: installation, graphics settings and saved progress belong to the application on your computer.",
              "The renderer introduced in version 2.0 draws through Direct3D 12 or Vulkan. Optional visual settings include antialiasing, longer draw distances, lighting enhancements and ultrawide output. Ultrawide expands the view of the world while keeping menus centered; it also increases the amount your GPU has to draw."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controller-and-camera",
            "title": "Choose the input that suits skating",
            "kind": "practical",
            "paragraphs": [
              "An Xbox controller is the maintainer’s preferred input. PlayStation, Switch and generic controllers use the SDL backend; Linux and macOS already use it by default, while Windows offers a backend selection. This matters for a game built around two analog sticks: the keyboard option maps movement to WASD and the right stick to mouse movement rather than turning the game into a conventional keyboard sports title.",
              "Open settings with Escape or RB + Start. Keyboard input must first be enabled, so connect your controller before expecting the keyboard to operate the game. The documentation lists the complete keyboard mapping for players who want to try it."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "install-and-keep-progress",
            "title": "Install once, keep your progress together",
            "kind": "practical",
            "paragraphs": [
              "The release installer extracts files from your own Xbox 360 ISO. DLC is separate: supported package files must come from your own purchased content and go in a documented dlc folder. The application download does not include the retail game.",
              "A saves folder beside the executable moves saved-game storage there, but existing progress must be copied manually. An empty portable.txt instead keeps all user data alongside the program. On macOS, keep the app and its containing folder together because the game stores its data there."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "renderer-limits",
            "title": "When the picture looks wrong",
            "kind": "limitations",
            "paragraphs": [
              "The native renderer remains early. The maintainer lists skater-customization problems, incomplete Hall of Meat bone highlights and visual differences in park editing, alongside occasional streaming flicker. F5 switches between native and emulated rendering, giving you a useful comparison when a scene breaks. Windows receives the most testing; the macOS ARM build is explicitly experimental."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Skate3Recomp · project documentation",
            "url": "https://github.com/mchughalex/skate3recomp"
          },
          {
            "id": "original",
            "label": "Electronic Arts · Skate 3 gameplay introduction",
            "url": "https://news.ea.com/press-releases/press-releases-details/2010/SKATE-3-Demo-Drops-in-on-Xbox-Live-Marketplace-and-PlayStation-Network/default.aspx"
          }
        ]
      },
      "families": [
        {
          "id": "skate",
          "title": "Skate",
          "indexUrl": "https://playable.wtf/families/#family-skate",
          "guideUrl": "https://playable.wtf/guides/skate-browser-vs-native-ports/",
          "choices": [
            {
              "slug": "skate-3-native",
              "label": "Desktop disc installer",
              "reason": "A release-based ISO installer and controller input; Windows is the maintainer’s most-tested platform.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-native/"
            },
            {
              "slug": "skate-3-browser",
              "label": "Prepared-data browser experiment",
              "reason": "Connect a compatible converted copy through Game Server; the public launcher supplies no converter.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-browser/"
            },
            {
              "slug": "andrewnakas-skate3-android",
              "label": "Android installation",
              "reason": "The native app can extract your own disc image and Title Update 3 on the phone.",
              "canonicalUrl": "https://playable.wtf/games/andrewnakas-skate3-android/"
            },
            {
              "slug": "skate-3-rust-engine",
              "label": "Skating rewrite",
              "reason": "A gamepad-led Windows experiment for tricks and maps, with unfinished original-game parity.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-rust-engine/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/mchughalex/skate3recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Files from your own Xbox 360 copy of Skate 3 are required.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/mchughalex/skate3recomp"
        },
        "setup": {
          "answer": "Read the platform-specific instructions, obtain a release from the project, and use its installer with your game files.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/mchughalex/skate3recomp"
        },
        "devices": {
          "answer": "Windows, Linux and macOS are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/mchughalex/skate3recomp"
        },
        "controls": {
          "answer": "Xbox controls are the main input method. PlayStation, Switch and generic controllers use the SDL backend; keyboard input can be enabled in settings. Escape or RB + Start opens settings.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/mchughalex/skate3recomp#readme"
        },
        "issues": {
          "answer": "The native renderer is still early; check current release notes before upgrading.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/mchughalex/skate3recomp"
        },
        "saves": {
          "answer": "Windows saves default to %APPDATA%\\skate3. A saves folder beside the executable switches saved games there; existing saves must be copied manually. portable.txt makes all user data portable. On macOS, keep the app’s containing folder together with its saves and settings.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/mchughalex/skate3recomp#readme"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/mchughalex/skate3recomp"
    },
    {
      "id": "project:skate-3-rust-engine",
      "slug": "skate-3-rust-engine",
      "title": "Skate 3",
      "project": "Skate 3 Rust Engine",
      "canonicalUrl": "https://playable.wtf/games/skate-3-rust-engine/",
      "originals": [
        {
          "id": "skate3",
          "name": "Skate 3",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Sports",
      "summary": "A Rust/Bevy skating engine built on years of reverse-engineering work.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "Why Skate’s spaces invite another attempt",
            "kind": "background",
            "paragraphs": [
              "Skate 3’s Port Carverton is built around districts, plazas and skateparks that encourage finding and refining a line. The original game adds darkslides and underflips, while Skate.School provides a place to practice stick skills. Its retail team and career systems describe the original game; this Rust engine currently focuses on skating and exploration."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "skating-sandbox",
            "title": "A skating sandbox built from research",
            "kind": "project",
            "paragraphs": [
              "This project rebuilds Skate 3 systems in Rust and Bevy, using reverse-engineering work on the original game rather than simply wrapping the Xbox 360 executable. Its current focus is tangible skating: riding, tricks, grinds, getting off the board, difficulty settings and moving between maps. That makes it an interesting way to explore familiar spaces, but working tricks are not a promise that every movement or game system matches Skate 3.",
              "The lineage matters when choosing between Skate projects. Dumbad’s work on file formats, animation, collision, challenges and custom maps underpins this engine; Chasm’s renderer work also forms part of that history. This entry is the Rust rewrite, with its own behavior and development path."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "maps-and-assets",
            "title": "Bring the maps, then start at University",
            "kind": "practical",
            "paragraphs": [
              "The experimental Windows package can prepare your own Xbox 360 ISO or an extracted game folder containing default.xex beside its data directory. Setup converts the skater, animations and disc maps, exports the original scoring and session-marker HUD assets, and opens University. The initial conversion takes time, and ISO extraction needs internet access. Original game assets are not included.",
              "Converted content stays beside that installation’s executable. If you unpack another copy elsewhere, it performs its own setup; updating in place refreshes changed asset groups. This distinction helps avoid repeatedly converting the same collection into separate installations."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controls-and-builds",
            "title": "Gamepad first, with room to experiment",
            "kind": "practical",
            "paragraphs": [
              "Use an SDL3-compatible controller for skating. Escape opens the graphics, difficulty and map settings, and maps can change without restarting. The project also supports .skate maps; its included format demonstration is procedural content, separate from the original disc maps.",
              "A source build follows the Windows Rust MSVC and LLVM workflow, using BUILD.bat and PLAY.bat. The prepared release follows its own asset wizard instead. Choose the route that fits your interest: playing with the experimental engine or modifying it. Original-game parity remains unfinished, and custom animation support does not mean custom animation clips are bundled."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Skate 3 Rust Engine · project documentation",
            "url": "https://github.com/SK8-ENGINE/skate-3-rust-engine"
          },
          {
            "id": "original",
            "label": "EA · Skate 3",
            "url": "https://www.ea.com/games/skate/skate-3"
          }
        ]
      },
      "families": [
        {
          "id": "skate",
          "title": "Skate",
          "indexUrl": "https://playable.wtf/families/#family-skate",
          "guideUrl": "https://playable.wtf/guides/skate-browser-vs-native-ports/",
          "choices": [
            {
              "slug": "skate-3-native",
              "label": "Desktop disc installer",
              "reason": "A release-based ISO installer and controller input; Windows is the maintainer’s most-tested platform.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-native/"
            },
            {
              "slug": "skate-3-browser",
              "label": "Prepared-data browser experiment",
              "reason": "Connect a compatible converted copy through Game Server; the public launcher supplies no converter.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-browser/"
            },
            {
              "slug": "andrewnakas-skate3-android",
              "label": "Android installation",
              "reason": "The native app can extract your own disc image and Title Update 3 on the phone.",
              "canonicalUrl": "https://playable.wtf/games/andrewnakas-skate3-android/"
            },
            {
              "slug": "skate-3-rust-engine",
              "label": "Skating rewrite",
              "reason": "A gamepad-led Windows experiment for tricks and maps, with unfinished original-game parity.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-rust-engine/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "unknown",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/SK8-ENGINE/skate-3-rust-engine"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Supply your own Skate 3 Xbox 360 ISO, or default.xex with the extracted data folder alongside it. Original assets are not included.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SK8-ENGINE/skate-3-rust-engine/HEAD/README.md"
        },
        "setup": {
          "answer": "For a source build, use Windows with the Rust MSVC toolchain and LLVM; BUILD.bat builds and PLAY.bat starts the selected map. The repository also links an experimental Windows package with its own asset setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SK8-ENGINE/skate-3-rust-engine/HEAD/README.md"
        },
        "devices": {
          "answer": "The documented build toolchain targets Windows.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SK8-ENGINE/skate-3-rust-engine/HEAD/README.md"
        },
        "controls": {
          "answer": "Gameplay requires an SDL3-compatible gamepad. Escape opens graphics, difficulty and map settings.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SK8-ENGINE/skate-3-rust-engine/HEAD/README.md"
        },
        "issues": {
          "answer": "The first asset conversion can take time and ISO extraction needs internet access. Converted assets remain in the data folder beside the executable; a separately extracted installation runs its own setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SK8-ENGINE/skate-3-rust-engine/HEAD/README.md"
        },
        "scope": {
          "answer": "The project implements skating, tricks and map exploration, but remains a work in progress without full behavioral parity with Skate 3.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SK8-ENGINE/skate-3-rust-engine/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/SK8-ENGINE/skate-3-rust-engine"
    },
    {
      "id": "project:skate-rust-browser",
      "slug": "skate-rust-browser",
      "title": "Skate × Rust",
      "project": "Global Terror browser host",
      "canonicalUrl": "https://playable.wtf/games/skate-rust-browser/",
      "originals": [
        {
          "id": "skate3",
          "name": "Skate 3",
          "relationship": "associated-with"
        },
        {
          "id": "callofdutymodernwarfare22009",
          "name": "Call of Duty: Modern Warfare 2 (2009)",
          "relationship": "associated-with"
        }
      ],
      "kind": "Mashup / fan recreation",
      "genre": "Sports",
      "summary": "Skating and gun modes on Rust, behind the host’s account sign-in.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "A skate and shooter experiment on Rust",
            "kind": "project",
            "paragraphs": [
              "This host combines skateboard movement and a first-person gun mode on Rust. Its launcher describes a private session with a current loadout and bots. The interesting distinction is the change of movement system: pushing and steering a board, walking relative to the camera, and aiming a weapon each use a different arrangement of controls."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "controls",
            "title": "Read the controls for the mode you are in",
            "kind": "practical",
            "paragraphs": [
              "On the board, W pushes, A/D steer and S brakes. Hold Space and release it to attempt an ollie; the arrow keys form the trick stick, Q/E grab and F toggles the board. G switches to gun mode, where WASD moves, the mouse aims and fires, and right-click aims down sights.",
              "Several keys change jobs between modes. R resets to the tower in the skate controls but reloads in gun mode; F changes from the board toggle to a grenade. Use M for the menu or pause before learning another mode. Dragging the view, scrolling to zoom and pressing C to reset the camera help recover your bearings."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "limits",
            "title": "An experimental session with an account gate",
            "kind": "limitations",
            "paragraphs": [
              "The mobile preset is marked experimental, and the creator says trick outcomes still need testing. Treat it as an experiment to explore, rather than a documented replacement for either commercial game. The current join flow also requires sign-in before access to the session."
            ],
            "sourceIds": [
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "host",
            "label": "Skate × Rust · full host and controls",
            "url": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html"
          }
        ]
      },
      "families": [
        {
          "id": "skate",
          "title": "Skate",
          "indexUrl": "https://playable.wtf/families/#family-skate",
          "guideUrl": "https://playable.wtf/guides/skate-browser-vs-native-ports/",
          "choices": [
            {
              "slug": "skate-3-native",
              "label": "Desktop disc installer",
              "reason": "A release-based ISO installer and controller input; Windows is the maintainer’s most-tested platform.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-native/"
            },
            {
              "slug": "skate-3-browser",
              "label": "Prepared-data browser experiment",
              "reason": "Connect a compatible converted copy through Game Server; the public launcher supplies no converter.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-browser/"
            },
            {
              "slug": "andrewnakas-skate3-android",
              "label": "Android installation",
              "reason": "The native app can extract your own disc image and Title Update 3 on the phone.",
              "canonicalUrl": "https://playable.wtf/games/andrewnakas-skate3-android/"
            },
            {
              "slug": "skate-3-rust-engine",
              "label": "Skating rewrite",
              "reason": "A gamepad-led Windows experiment for tricks and maps, with unfinished original-game parity.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-rust-engine/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "setup": {
          "answer": "Open the host’s Games panel or this launcher. The current Join to play control opens Shopify account sign-in; no account was created during review.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html"
        },
        "devices": {
          "answer": "The launcher source offers an experimental mobile preset. Mobile gameplay was not tested.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html"
        },
        "controls": {
          "answer": "The host lists W to push, A/D to steer, S to brake, Space to ollie and G for gun mode. Gun mode uses WASD and mouse; M opens the menu.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html"
        },
        "multiplayer": {
          "answer": "The launcher describes a private session with bots. Human multiplayer support was not established.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html"
        },
        "issues": {
          "answer": "Account sign-in currently gates loading. The host says trick outcomes still need testing; no session was started.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html"
        },
        "scope": {
          "answer": "A skating/shooter mashup on Rust. Full Skate 3 missions or the Modern Warfare 2 campaign are not established.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html"
        }
      },
      "credits": [
        {
          "name": "Global Terror",
          "role": "host",
          "url": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html",
          "evidence": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://global-terror-skate-rust.fvc3less.workers.dev/full.html"
    },
    {
      "id": "project:snesrev-zelda3",
      "slug": "snesrev-zelda3",
      "title": "The Legend of Zelda: A Link to the Past",
      "project": "zelda3",
      "canonicalUrl": "https://playable.wtf/games/snesrev-zelda3/",
      "originals": [
        {
          "id": "thelegendofzeldaalinktothepast",
          "name": "The Legend of Zelda: A Link to the Past",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Adventure",
      "summary": "A C reimplementation of A Link to the Past.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "The original dungeon adventure",
            "kind": "background",
            "paragraphs": [
              "A Link to the Past is the Super Nintendo adventure in which Link sets out to rescue Zelda and stop Ganon’s return. Dungeons and the items found along the journey are central to its appeal: the Hookshot, Pegasus Boots and Master Sword expand what Link can do as the adventure develops. It suits players who enjoy learning how a space works, solving its obstacles and returning with a more capable hero.",
              "Zelda3 reconstructs this game. Its widescreen settings, snapshots and debugging tools are additions around that original adventure, so you can choose how much convenience to introduce into a playthrough."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "reimplementation",
            "title": "A Link to the Past rebuilt in C",
            "kind": "project",
            "paragraphs": [
              "Zelda3 is a reverse-engineered implementation of The Legend of Zelda: A Link to the Past. The maintainer describes the original adventure as playable from beginning to end. It uses assets extracted from your ROM, then runs the reconstructed game code with rendering and audio components derived from LakeSnes.",
              "This project has an unusually close connection between play and verification. It can run the original machine code alongside the new implementation and compare their memory state after each frame. That mode is useful for development; it is not a requirement for an ordinary session once the game assets have been extracted."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "optional-enhancements",
            "title": "Small conveniences and presentation options",
            "kind": "project",
            "paragraphs": [
              "Options go beyond the original SNES display: basic widescreen, shaders, a higher-resolution Mode 7 map and MSU-1 audio support are documented. Item switching and a set of bug fixes also change the experience around the original adventure. Configure the features you want in zelda3.ini rather than assuming every screenshot reflects the default settings.",
              "Snapshots preserve both state and controller-input history. That makes it possible to replay a saved sequence, including at accelerated speed. For someone interested in practicing or comparing behavior, these tools are a distinct reason to explore Zelda3 rather than a simple executable wrapper."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "building-first",
            "title": "Expect a source-build setup",
            "kind": "practical",
            "paragraphs": [
              "The README currently asks players to build it themselves. Its Windows path uses a US ROM named zelda3.sfc, Python, TCC and SDL2. The extraction step creates zelda3_assets.dat; after extraction, the ROM is no longer needed for ordinary play. Other platforms and compilers have separate build instructions.",
              "Keep the generated data file with the application and configuration. Downloading the source archive alone does not supply the game, and the README’s self-build instructions should be followed before expecting a playable program."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "keyboard-and-snapshots",
            "title": "Learn the extra keys before experimenting",
            "kind": "practical",
            "paragraphs": [
              "Arrow keys move, Enter maps to Start, and the default action mapping uses X, Z, S and A for the SNES face buttons. These bindings can be changed in zelda3.ini. Alt + Enter toggles fullscreen.",
              "The additional shortcuts include cheats and debugging actions as well as ordinary play controls. F1–F10 load snapshots, Shift plus those keys saves them, and Ctrl plus those keys replays input. W fills health and magic, while Tab enables turbo. Familiarize yourself with this layer so a stray shortcut does not alter a run you wanted to play normally."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "zelda3 · project documentation",
            "url": "https://github.com/snesrev/zelda3"
          },
          {
            "id": "original",
            "label": "Nintendo · The Legend of Zelda: A Link to the Past",
            "url": "https://www.nintendo.com/en-gb/Games/Super-Nintendo/The-Legend-of-Zelda-A-Link-to-the-Past-841179.html"
          }
        ]
      },
      "families": [
        {
          "id": "zelda",
          "title": "Zelda adventures",
          "indexUrl": "https://playable.wtf/families/#family-zelda",
          "guideUrl": "https://playable.wtf/guides/zelda-game-versions/",
          "choices": [
            {
              "slug": "harbourmasters-shipwright",
              "label": "Ocarina of Time",
              "reason": "Ship of Harkinian offers native packages with ROM validation and configurable controls.",
              "canonicalUrl": "https://playable.wtf/games/harbourmasters-shipwright/"
            },
            {
              "slug": "zelda64recomp-zelda64recomp",
              "label": "Majora’s Mask",
              "reason": "Zelda64Recomp imports the North American ROM and adds optional dual-stick camera and autosave.",
              "canonicalUrl": "https://playable.wtf/games/zelda64recomp-zelda64recomp/"
            },
            {
              "slug": "zelda-links-awakening-2019-lasrecomp",
              "label": "The Switch Link’s Awakening",
              "reason": "LAS Recomp offers vanilla or randomizer play from your own version 1.0.0 files, with beta limitations.",
              "canonicalUrl": "https://playable.wtf/games/zelda-links-awakening-2019-lasrecomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/snesrev/zelda3/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own ROM for the resource-extraction step.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/snesrev/zelda3"
        },
        "setup": {
          "answer": "Extract the game resources using the README instructions, then run the built application.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/snesrev/zelda3"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/snesrev/zelda3"
    },
    {
      "id": "project:solarcookies-tip-recomp",
      "slug": "solarcookies-tip-recomp",
      "title": "Viva Piñata: Trouble in Paradise",
      "project": "ReTiP",
      "canonicalUrl": "https://playable.wtf/games/solarcookies-tip-recomp/",
      "originals": [
        {
          "id": "vivapinatatroubleinparadise",
          "name": "Viva Piñata: Trouble in Paradise",
          "relationship": "port-of"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Simulation",
      "summary": "A native Viva Piñata recompilation with configurable rendering and mod support.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A garden built around unusual residents",
            "kind": "background",
            "paragraphs": [
              "Viva Piñata: Trouble in Paradise returns to Piñata Island after Professor Pester’s latest scheme. The original game sends you into desert and icy environments to trap species, then train and dress the piñatas before sending them to parties. ReTiP’s garden-space, shovel and camera changes focus on making that world easier to customize. The original Xbox release’s services and console capabilities should be considered separately from this unofficial project."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "A port organized around mods and presentation",
            "kind": "project",
            "paragraphs": [
              "ReTiP recompiles the game and adds its own graphics and modification layer. Its documentation describes a native renderer from version 1.13.0 onward, adjustable aspect ratio, optional frame-rate limits and VSync, and four visual-quality presets. Individual shadows, ambient occlusion and post-processing effects can be disabled to reduce graphics demands.",
              "F4 opens the configuration menu. F5 manages mods, with a built-in Thunderstore browser for user-made additions. Texture, audio, data and Lua-script packages are supported categories, so changing the look or behavior of the garden is a central reason to choose this project."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "installation",
            "title": "The download still needs your game disc",
            "kind": "practical",
            "paragraphs": [
              "First launch asks for an ISO from your own retail Trouble in Paradise disc and extracts it locally. Budget 15 GB of storage. The stated memory requirement is 6 GB, with 16 GB recommended; the input requirements call for a controller or a mouse with forward and back buttons.",
              "The GitHub and GameJolt downloads use the same build. Using the GameJolt launcher adds that service’s achievement integration; it is not a return of the original Xbox LIVE achievement service. Choose the distribution route for that practical difference, rather than assuming they contain different games."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "garden-limits",
            "title": "Extra garden space is still partial",
            "kind": "limitations",
            "paragraphs": [
              "The included garden-space modification is enabled by default but remains incomplete. The developer specifically identifies store items as working with it, so it should not be read as an unrestricted expansion of every garden system. Windows and Linux paths are documented. The README gives conflicting statements about macOS availability, making the platform-specific release instructions essential before planning a Mac installation."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "ReTiP · project documentation",
            "url": "https://raw.githubusercontent.com/SolarCookies/TiP-Recomp/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "Viva Piñata: Trouble in Paradise · publisher description",
            "url": "https://www.xbox.com/en-US/games/store/viva-pinata-tip/bs1nptpjgd4g"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/SolarCookies/TiP-Recomp/releases/tag/1.13.0"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "An owned retail Viva Piñata: Trouble in Paradise disc ISO; the first-run importer asks for it.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SolarCookies/TiP-Recomp/HEAD/README.md"
        },
        "setup": {
          "answer": "Download the project release and select your legitimate disc ISO when prompted. Configure optional features through the documented menus.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SolarCookies/TiP-Recomp/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows and Linux packages were observed. The README gives conflicting macOS wording, so no macOS release claim is made here.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SolarCookies/TiP-Recomp/HEAD/README.md"
        },
        "controls": {
          "answer": "The project documents a controller or a gaming mouse with forward/back buttons.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SolarCookies/TiP-Recomp/HEAD/README.md"
        },
        "issues": {
          "answer": "Some enhancements, including expanded garden space, are described as partial. Performance claims are the creator’s, not measurements from this catalog.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/SolarCookies/TiP-Recomp/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/SolarCookies/TiP-Recomp"
    },
    {
      "id": "project:sonic-3-air-web",
      "slug": "sonic-3-air-web",
      "title": "Sonic 3 & Knuckles",
      "project": "Sonic 3 A.I.R. · official web beta",
      "canonicalUrl": "https://playable.wtf/games/sonic-3-air-web/",
      "originals": [
        {
          "id": "sonic3knuckles",
          "name": "Sonic 3 & Knuckles",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser engine remake",
      "genre": "Platformer",
      "summary": "Sonic 3 A.I.R.’s widescreen remaster, with an official iOS and web beta.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Sonic 3 & Knuckles with room to see ahead",
            "kind": "background",
            "paragraphs": [
              "Sonic 3 A.I.R. is a fan-made widescreen remaster of Sonic 3 & Knuckles. It starts from that combined game rather than offering a new Sonic campaign. The broader view is part of its appeal: a familiar side-scrolling game is presented with more horizontal space, while the original ROM supplies the content."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "A separate iOS and web beta",
            "kind": "project",
            "paragraphs": [
              "Sappharad's port brings A.I.R. to iOS and WebAssembly browsers. It is explicitly a beta with less functionality than a native app. On iOS 13 or later, the documented installation uses Safari's Add to Home Screen; other devices can use the web-browser link.",
              "After the initial download, select Sonic_Knuckles_wSonic3.bin. The port copies it into its data folder for later launches. The main A.I.R. site explains that the formerly supported Steam purchase is no longer sold; having an old purchase and buying a new copy today are different situations. Follow its current ROM guidance rather than an outdated store instruction."
            ],
            "sourceIds": [
              "install",
              "original"
            ]
          },
          {
            "id": "files",
            "title": "Move saves and mods through the file manager",
            "kind": "practical",
            "paragraphs": [
              "Options includes a basic file manager. It can import a PC save, download a backup or accept mods packaged as ZIPs. Ordinary files move one at a time, so a desktop folder-copy guide does not describe this interface.",
              "The remastered soundtrack is optional and adds over 100 MB to a game whose content must fit in memory. Start without it on a constrained device. If installing additional data introduces stutter, the extra memory requirement is a relevant difference from native A.I.R."
            ],
            "sourceIds": [
              "install"
            ]
          },
          {
            "id": "limits",
            "title": "Keep the supported renderer and finish the first download",
            "kind": "limitations",
            "paragraphs": [
              "The port's issue list warns that switching to the software renderer can lock the game. Leave that renderer option alone even if a native troubleshooting guide suggests it. Keep the device awake during the initial download too; if sleep interrupts it, close and relaunch to retry. These are specific limitations of this web and iOS port."
            ],
            "sourceIds": [
              "issues"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Sonic 3 A.I.R. · project and ROM requirements",
            "url": "https://sonic3air.org/"
          },
          {
            "id": "install",
            "label": "Sonic 3 A.I.R. web beta · installation and file manager",
            "url": "https://projects.sappharad.com/s3air_ios/20260328_beta/"
          },
          {
            "id": "issues",
            "label": "Sonic 3 A.I.R. web · known issues",
            "url": "https://projects.sappharad.com/s3air_ios/todoList.html"
          }
        ]
      },
      "families": [
        {
          "id": "sonic",
          "title": "Sonic games",
          "indexUrl": "https://playable.wtf/families/#family-sonic",
          "guideUrl": "https://playable.wtf/guides/sonic-game-versions/",
          "choices": [
            {
              "slug": "sonic-3-air-web",
              "label": "Sonic 3 in a web app",
              "reason": "The official A.I.R. web beta imports a compatible ROM and offers save-file exports.",
              "canonicalUrl": "https://playable.wtf/games/sonic-3-air-web/"
            },
            {
              "slug": "hedge-dev-unleashedrecomp",
              "label": "Unleashed on a computer",
              "reason": "Use the native Windows/Linux installer with your supported Xbox 360 game and title update.",
              "canonicalUrl": "https://playable.wtf/games/hedge-dev-unleashedrecomp/"
            },
            {
              "slug": "sansnope-unleashedrecomp-android",
              "label": "Unleashed with Android touch",
              "reason": "This experimental fork adds editable touch controls and its own in-app file importer.",
              "canonicalUrl": "https://playable.wtf/games/sansnope-unleashedrecomp-android/"
            },
            {
              "slug": "rsdkmodding-sonic-mania-decompilation",
              "label": "Mania and native mods",
              "reason": "Use supported Mania or Plus assets with the RSDK project’s built-in mod loader.",
              "canonicalUrl": "https://playable.wtf/games/rsdkmodding-sonic-mania-decompilation/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "beta",
        "route": {
          "kind": "play",
          "url": "https://projects.sappharad.com/s3air_ios/20260328_beta/sonic3air_web.html"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Supply your own compatible Sonic_Knuckles_wSonic3.bin. The former Steam edition is no longer sold; the official Sonic 3 A.I.R. site links information about other compatible sources.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://sonic3air.org/"
        },
        "setup": {
          "answer": "Open the web build, keep the first download awake, and select your ROM when prompted. On iOS 13 or newer, the install guide also offers Safari → Share → Add to Home Screen.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://projects.sappharad.com/s3air_ios/20260328_beta/"
        },
        "devices": {
          "answer": "The beta supports WebAssembly-capable browsers and an iOS 13+ home-screen installation path. It has web-specific stability limits.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://projects.sappharad.com/s3air_ios/20260328_beta/"
        },
        "issues": {
          "answer": "Do not switch to the software renderer: the web issues page says it can lock the game. Keep the device awake during the first download. Extra soundtrack data can cause stuttering or startup failures on low-memory devices.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://projects.sappharad.com/s3air_ios/todoList.html"
        },
        "scope": {
          "answer": "A fan-made widescreen remaster of Sonic 3 & Knuckles. The web edition is a beta separate from native releases.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://sonic3air.org/"
        },
        "saves": {
          "answer": "The in-game Options file manager imports and exports saves and accepts ZIP mods. The selected ROM is copied into the game’s local save-data area.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://projects.sappharad.com/s3air_ios/20260328_beta/"
        }
      },
      "credits": [
        {
          "name": "Sappharad",
          "role": "port-author",
          "url": "https://projects.sappharad.com/s3air_ios/",
          "evidence": "https://projects.sappharad.com/s3air_ios/",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://projects.sappharad.com/s3air_ios/"
    },
    {
      "id": "project:sonicnext-dev-marathonrecomp",
      "slug": "sonicnext-dev-marathonrecomp",
      "title": "Sonic the Hedgehog (2006)",
      "project": "Marathon Recompiled",
      "canonicalUrl": "https://playable.wtf/games/sonicnext-dev-marathonrecomp/",
      "originals": [
        {
          "id": "sonicthehedgehog2006",
          "name": "Sonic the Hedgehog (2006)",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Platformer",
      "summary": "An in-development Sonic ’06 port for desktop platforms.",
      "editorial": {
        "sections": [
          {
            "id": "development-status",
            "title": "A Sonic 2006 project to follow",
            "kind": "limitations",
            "paragraphs": [
              "Marathon Recompiled targets the Xbox 360 version of Sonic the Hedgehog (2006), but the maintainers currently label it active development and explicitly say it is not intended for public use. Support is deferred until an official release. Treat this listing as a project reference for following that work, rather than a ready-to-play recommendation.",
              "The repository describes Windows, Linux and macOS targets. It translates the Xbox 360 program and shaders using XenonRecomp and XenosRecomp; those tools provide the route to native execution, not an indication that every planned player feature is ready."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "preserving-behavior",
            "title": "The aim is to preserve the original behavior",
            "kind": "project",
            "paragraphs": [
              "Marathon’s policy intentionally retains bugs that occur on the original hardware, apart from a few identified exceptions. That makes its goal different from a fan remake designed to overhaul Sonic 2006’s game rules or level design. A familiar quirk may be faithful behavior rather than a regression in the port.",
              "The project asks bug reports to distinguish new failures from those original behaviors. For players waiting on the project, that policy is a useful expectation: a native version is not a promise to replace the underlying game with a redesigned one."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "files-and-platforms",
            "title": "What a future installation depends on",
            "kind": "practical",
            "paragraphs": [
              "The source project requires your own Xbox 360 game files. PlayStation 3 data is incompatible because its formats require different game code. The current installer documentation also requires unmodified files and matching regions for discs and title updates. A compressed archive is not the same input as an extracted game folder.",
              "The README describes controller-first input and editable keyboard mappings, plus separate save/configuration locations for each desktop platform. These details are development documentation, not a supported consumer setup guide yet. There is no official standalone website; the maintainers identify the repository and its Releases page as their distribution channel. Keep that source distinction when following progress."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Marathon Recompiled · project documentation",
            "url": "https://github.com/sonicnext-dev/MarathonRecomp"
          }
        ]
      },
      "families": [
        {
          "id": "sonic",
          "title": "Sonic games",
          "indexUrl": "https://playable.wtf/families/#family-sonic",
          "guideUrl": "https://playable.wtf/guides/sonic-game-versions/",
          "choices": [
            {
              "slug": "sonic-3-air-web",
              "label": "Sonic 3 in a web app",
              "reason": "The official A.I.R. web beta imports a compatible ROM and offers save-file exports.",
              "canonicalUrl": "https://playable.wtf/games/sonic-3-air-web/"
            },
            {
              "slug": "hedge-dev-unleashedrecomp",
              "label": "Unleashed on a computer",
              "reason": "Use the native Windows/Linux installer with your supported Xbox 360 game and title update.",
              "canonicalUrl": "https://playable.wtf/games/hedge-dev-unleashedrecomp/"
            },
            {
              "slug": "sansnope-unleashedrecomp-android",
              "label": "Unleashed with Android touch",
              "reason": "This experimental fork adds editable touch controls and its own in-app file importer.",
              "canonicalUrl": "https://playable.wtf/games/sansnope-unleashedrecomp-android/"
            },
            {
              "slug": "rsdkmodding-sonic-mania-decompilation",
              "label": "Mania and native mods",
              "reason": "Use supported Mania or Plus assets with the RSDK project’s built-in mod loader.",
              "canonicalUrl": "https://playable.wtf/games/rsdkmodding-sonic-mania-decompilation/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "unknown",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/sonicnext-dev/MarathonRecomp"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Files from your own Xbox 360 copy of Sonic the Hedgehog (2006).",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/sonicnext-dev/MarathonRecomp"
        },
        "setup": {
          "answer": "Follow development progress in the original repository; there is no supported public play workflow yet.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/sonicnext-dev/MarathonRecomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/sonicnext-dev/MarathonRecomp"
    },
    {
      "id": "project:space-cadet-pinball-web",
      "slug": "space-cadet-pinball-web",
      "title": "3D Pinball: Space Cadet",
      "project": "alula · Emscripten port",
      "canonicalUrl": "https://playable.wtf/games/space-cadet-pinball-web/",
      "originals": [
        {
          "id": "3dpinballspacecadet",
          "name": "3D Pinball: Space Cadet",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Arcade",
      "summary": "The familiar Space Cadet table in alula’s browser port.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The Windows pinball table",
            "kind": "background",
            "paragraphs": [
              "Space Cadet is the pinball game bundled with older versions of Windows. It is a single table built around launching a ball, timing the flippers and using the table's targets, ramps and bumpers to score. Its mission and rank systems give you objectives within that repeated attempt to keep the ball in play.",
              "The attraction is immediate control with room to improve. A first attempt can be about keeping the ball alive; later attempts can pay more attention to the lit targets and mission messages. The table stays familiar while the path of each ball changes."
            ],
            "sourceIds": [
              "project",
              "rules"
            ]
          },
          {
            "id": "this-version",
            "title": "A browser fork of the reconstructed game",
            "kind": "project",
            "paragraphs": [
              "Alula's browser build comes from the SpaceCadetPinball reverse-engineering project. The repository reconstructs the Windows and Full Tilt Space Cadet executables into C++ and uses SDL for the platform layer. This is a port of that table, rather than a new pinball game with a similar space theme.",
              "The project's ability to read Space Cadet data from Full Tilt does not mean it contains every Full Tilt table. Its README lists the other two tables as possible future work. The browser host loads its resources directly; the repository's instruction to place data beside a compiled executable concerns the separate native route."
            ],
            "sourceIds": [
              "project",
              "host"
            ]
          },
          {
            "id": "controls",
            "title": "Learn flippers before nudging",
            "kind": "practical",
            "paragraphs": [
              "The source defaults are Z for the left flipper, slash for the right flipper and Space for the plunger. Use those three first so that launching and returning the ball become separate, deliberate actions.",
              "Nudges have their own bindings: X from the left, period from the right and Up from below. They are not replacements for the flippers. The options code also exposes player count, sound, music and display settings; check the in-game menus when adapting the layout to your keyboard rather than assuming browser-wide shortcuts control the table."
            ],
            "sourceIds": [
              "controls"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "SpaceCadetPinball · reconstructed engine README",
            "url": "https://github.com/alula/SpaceCadetPinball"
          },
          {
            "id": "host",
            "label": "Space Cadet Pinball · hosted browser build",
            "url": "https://pinball.alula.me/"
          },
          {
            "id": "controls",
            "label": "SpaceCadetPinball · default controls and options",
            "url": "https://raw.githubusercontent.com/alula/SpaceCadetPinball/HEAD/SpaceCadetPinball/options.cpp"
          },
          {
            "id": "rules",
            "label": "SpaceCadetPinball · table missions and scoring",
            "url": "https://raw.githubusercontent.com/alula/SpaceCadetPinball/HEAD/SpaceCadetPinball/control.cpp"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://pinball.alula.me/"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The hosted page loads its resources without an owned-file import step.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pinball.alula.me/"
        },
        "setup": {
          "answer": "Open the hosted page and wait for its download to finish. Use the game’s menu to begin a table session.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://pinball.alula.me/"
        },
        "controls": {
          "answer": "The port’s default keys are Z for the left flipper, / for the right flipper and Space for the plunger. X, . and Up nudge the table from the left, right and bottom.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/alula/SpaceCadetPinball/HEAD/SpaceCadetPinball/options.cpp"
        },
        "scope": {
          "answer": "This browser build contains the Space Cadet table from 3D Pinball for Windows.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/alula/SpaceCadetPinball/blob/master/README.md"
        }
      },
      "credits": [
        {
          "name": "alula",
          "role": "port-author",
          "url": "https://github.com/alula/SpaceCadetPinball",
          "evidence": "https://github.com/alula/SpaceCadetPinball",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/alula/SpaceCadetPinball"
    },
    {
      "id": "project:speedbreakerproject-speedbreaker",
      "slug": "speedbreakerproject-speedbreaker",
      "title": "Need for Speed: Most Wanted (2005)",
      "project": "SpeedBreaker",
      "canonicalUrl": "https://playable.wtf/games/speedbreakerproject-speedbreaker/",
      "originals": [
        {
          "id": "needforspeedmostwanted2005",
          "name": "Need for Speed: Most Wanted (2005)",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Racing",
      "summary": "The Xbox 360 racing game rebuilt for SteamOS, Linux and Apple platforms.",
      "editorial": {
        "sections": [
          {
            "id": "the-xbox-360-racer",
            "title": "The Xbox 360 version of Most Wanted",
            "kind": "project",
            "paragraphs": [
              "SpeedBreaker recompiles the Xbox 360 version of Need for Speed: Most Wanted (2005) into a native application. Its current play routes focus on Steam Deck and other Linux systems, Apple silicon Macs, and an experimental iPhone/iPad build. The Windows PC edition, including Black Edition, cannot supply its game data. Windows and Android ports are listed as future work.",
              "The project keeps the game’s own 60 fps ceiling while offering higher-resolution rendering and wider views. Ultrawide displays reveal more to the sides, and taller displays can reveal extra vertical space; the HUD and rear-view mirror retain their proportions. Those changes are presentation options for this Xbox 360 conversion, not a new game edition."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "prepare-the-right-disc",
            "title": "Preparing the right disc and a new career",
            "kind": "practical",
            "paragraphs": [
              "The installer requires your own USA English Xbox 360 disc backup, supplied as an ISO, trimmed XISO or extracted folder. It verifies the required files and needs roughly 7.2 GB for the installed game. No title update is used. Other regions, Games on Demand packages and the original PC release are not accepted substitutes.",
              "Choose the installation location during setup, particularly if using removable storage. Saves and settings are stored separately from the installed game, but deleting the application’s data folder still deletes your progress. Existing Xbox 360 saves cannot be imported, so expect to begin a new career in SpeedBreaker."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controls-and-display-pacing",
            "title": "Controls and display pacing",
            "kind": "practical",
            "paragraphs": [
              "Gamepads support rumble and reconnection, and keyboard controls can be remapped. F1 or Back + Start opens SpeedBreaker’s settings. The experimental iOS build has touch controls for its own interface only: driving needs a controller or keyboard. A three-finger tap opens settings; it does not provide an on-screen steering layout.",
              "On a Steam Deck OLED, use a 60 Hz display mode instead of 90 Hz to avoid the documented pacing problem. The Linux launcher runs natively, with Proton disabled for its Steam shortcut. Start at the default internal resolution, then raise it if racing stays smooth. A 30 fps option retains full game speed, while Auto can reduce the frame rate when heat or performance makes 60 unstable."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "platforms-and-current-limits",
            "title": "Platforms and current limits",
            "kind": "limitations",
            "paragraphs": [
              "Linux requires an x86-64 processor with AVX2 and Vulkan 1.2 graphics. The Mac build requires Apple silicon and macOS 15 or later; it does not support Intel Macs. iPhone and iPad support is experimental, with a narrower tested device range and separate installation requirements.",
              "The game remains capped at 60 fps, so a faster screen does not unlock a higher simulation rate. Keep the port’s settings and game brightness settings distinct when adjusting the image: the Xbox 360 display-gamma option changes the console-style output, while the original brightness control still affects the game. Updates and optional settings do not remove the need for the supported disc data."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "SpeedBreaker · project documentation",
            "url": "https://github.com/SpeedBreakerProject/speedbreaker"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/SpeedBreakerProject/speedbreaker/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported Xbox 360 game copy.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/SpeedBreakerProject/speedbreaker"
        },
        "setup": {
          "answer": "Use the project’s platform instructions; the iOS package requires its documented sideload/build workflow.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/SpeedBreakerProject/speedbreaker"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/SpeedBreakerProject/speedbreaker"
    },
    {
      "id": "project:spelunky-classic-html5",
      "slug": "spelunky-classic-html5",
      "title": "Spelunky Classic",
      "project": "Darius Kazemi HTML5 port",
      "canonicalUrl": "https://playable.wtf/games/spelunky-classic-html5/",
      "originals": [
        {
          "id": "spelunkyclassic",
          "name": "Spelunky Classic",
          "relationship": "port-of"
        }
      ],
      "kind": "HTML5 port",
      "genre": "Platformer",
      "summary": "Derek Yu’s freeware Spelunky Classic, ported from GameMaker to HTML5 by Darius Kazemi.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A different cave on every attempt",
            "kind": "background",
            "paragraphs": [
              "Spelunky Classic combines platforming with a cave that changes its layout each time you play. You are hunting treasure while trying to survive and travel deeper. The changing route makes observation valuable: knowing how to handle a situation is more useful than memorising the exact placement of every obstacle.",
              "This is the original freeware game released in 2009. It is separate from the later HD reboot. Choose it for the compact original interpretation of that treasure-hunting loop, and expect each failed attempt to become knowledge for a different cave on the next run."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "Darius Kazemi’s HTML5 conversion",
            "kind": "project",
            "paragraphs": [
              "Darius Kazemi ported the GameMaker version to HTML5 using GameMaker: Studio, with additional fixes and polish from YoYo Games. The hosted page names Derek Yu as the original creator and Kazemi as the porter. This lineage matters: the browser game derives from Spelunky Classic, rather than being a lookalike built around its name.",
              "Kazemi’s development article describes early problems with sound, saving, effects and collisions. Its later update credits YoYo Games with sound, saving and performance fixes. The early prototype notes should therefore not be treated as a current list of everything this hosted build lacks."
            ],
            "sourceIds": [
              "host",
              "article"
            ]
          },
          {
            "id": "playing",
            "title": "Start with the small keyboard layout",
            "kind": "practical",
            "paragraphs": [
              "The page’s controls are deliberately brief: arrow keys for movement and Z, X and C for actions. Check the game’s own prompts as you begin, and get comfortable with those actions before pushing deeper. The layout favours a keyboard; the host does not provide a separate touch-control guide.",
              "The original game is designed around repeated attempts, so a first run is a chance to learn how its world behaves. You can try the browser conversion without setting up the Windows freeware release; the original site remains the place to find that separate download and its source."
            ],
            "sourceIds": [
              "host",
              "original"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Mossmouth · Spelunky Classic",
            "url": "https://spelunkyworld.com/original.html"
          },
          {
            "id": "host",
            "label": "Darius Kazemi · Spelunky HTML5",
            "url": "https://tinysubversions.com/game/spelunky/"
          },
          {
            "id": "article",
            "label": "Darius Kazemi · port development and update",
            "url": "https://tinysubversions.com/2012/07/spelunky-html5/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://tinysubversions.com/game/spelunky/"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The creator hosts an HTML5 port of freeware Spelunky Classic with no local game-file import on its launch page. This is separate from the paid HD remake and Spelunky 2.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://tinysubversions.com/game/spelunky/"
        },
        "setup": {
          "answer": "Open the creator’s page, allow the embedded HTML5 game to load, and focus its game area for keyboard input.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://tinysubversions.com/game/spelunky/"
        },
        "controls": {
          "answer": "Use the arrow keys to move and Z, X and C for actions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://tinysubversions.com/game/spelunky/"
        },
        "issues": {
          "answer": "This is an older HTML5 port. Present-day browser, mobile and controller compatibility has not been established by a gameplay test; historical comment-thread claims are not treated as current support.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://tinysubversions.com/2012/07/spelunky-html5/"
        },
        "scope": {
          "answer": "Darius Kazemi’s HTML5 port is based on Derek Yu’s original Spelunky Classic, converted from GameMaker 8.1 through GameMaker: Studio.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://tinysubversions.com/game/spelunky/"
        }
      },
      "credits": [
        {
          "name": "Derek Yu",
          "role": "original-developer",
          "originalGameId": "spelunkyclassic",
          "url": "https://spelunkyworld.com/original.html",
          "evidence": "https://tinysubversions.com/game/spelunky/",
          "basis": "creator-reported"
        },
        {
          "name": "Darius Kazemi",
          "role": "port-author",
          "url": "https://tinysubversions.com/game/spelunky/",
          "evidence": "https://tinysubversions.com/game/spelunky/",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://tinysubversions.com/game/spelunky/"
    },
    {
      "id": "project:squaresweets-ultrakilldoom",
      "slug": "squaresweets-ultrakilldoom",
      "title": "ULTRAKILL × Doom",
      "project": "UltraDoom",
      "canonicalUrl": "https://playable.wtf/games/squaresweets-ultrakilldoom/",
      "originals": [
        {
          "id": "ultrakill",
          "name": "ULTRAKILL",
          "relationship": "associated-with"
        },
        {
          "id": "doom",
          "name": "Doom",
          "relationship": "associated-with"
        }
      ],
      "kind": "Mashup mod",
      "genre": "Shooter",
      "summary": "Doom runs on ULTRAKILL’s shop terminals.",
      "editorial": {
        "sections": [
          {
            "id": "play",
            "title": "A game inside the shop terminal",
            "kind": "project",
            "paragraphs": [
              "UltraDoom puts Doom in ULTRAKILL’s shop terminals. Open or close it with the smile icon at the upper left of the terminal screen. This is a game-within-a-game interaction: you remain in ULTRAKILL’s space while a Doom session occupies the terminal display.",
              "The mouse deliberately does not control Doom, allowing you to look away from the screen and walk away. The creator describes each terminal as having its own Doom instance, so the novelty is visiting those screens rather than replacing ULTRAKILL’s weapons, enemies or campaign with Doom content."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Build the terminal’s data folder",
            "kind": "practical",
            "paragraphs": [
              "Install BepInEx before the plugin, then place the UltraDoom DLL in its plugins folder. The plugins/doom subfolder holds your legitimately sourced DOOM.WAD and the documented RLNDGM.SF2 soundfont. The optional ultradoom.wad adds texture swaps; the creator also allows the Doom shareware version for players without the full game.",
              "Filenames and placement matter because the plugin expects that layout. Audio and the Doom data are separate inputs, so a working plugin loader does not mean both have been supplied correctly."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "limits",
            "title": "A small experimental crossover",
            "kind": "limitations",
            "paragraphs": [
              "The creator describes the plugin as a quick project made for a video. Its documentation does not present it as a polished replacement for a standalone Doom port. Choose it for the terminal interaction, and keep ordinary Doom play separate when you need a fully documented controls or save workflow."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "UltraDoom · project documentation",
            "url": "https://github.com/Squaresweets/UltrakillDoom"
          }
        ]
      },
      "families": [
        {
          "id": "doom",
          "title": "Doom",
          "indexUrl": "https://playable.wtf/families/#family-doom",
          "guideUrl": "https://playable.wtf/guides/doom-quake-browser-versions/",
          "choices": [
            {
              "slug": "wad-commander-v1",
              "label": "Classic Doom in a browser",
              "reason": "Choose owned WADs, shareware or Freedoom, with a documented touch layout.",
              "canonicalUrl": "https://playable.wtf/games/wad-commander-v1/"
            },
            {
              "slug": "chocolate-doom-chocolate-doom",
              "label": "Keep the original DOS behavior",
              "reason": "A native port for compatible classic content, old demos and saves.",
              "canonicalUrl": "https://playable.wtf/games/chocolate-doom-chocolate-doom/"
            },
            {
              "slug": "doom-3-browser",
              "label": "Try the Doom 3 demo",
              "reason": "A desktop browser route into the later game without a retail-data setup.",
              "canonicalUrl": "https://playable.wtf/games/doom-3-browser/"
            },
            {
              "slug": "dhewm-dhewm3",
              "label": "Play owned original Doom 3",
              "reason": "Use original 1.3.1 data in a native port; BFG Edition files do not fit.",
              "canonicalUrl": "https://playable.wtf/games/dhewm-dhewm3/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/Squaresweets/UltrakillDoom/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "ULTRAKILL, a legitimate Doom WAD or shareware version, and the documented soundfont.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Squaresweets/UltrakillDoom"
        },
        "setup": {
          "answer": "Install BepInEx, then follow the plugin and doom-folder layout in the README.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Squaresweets/UltrakillDoom"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Squaresweets/UltrakillDoom"
    },
    {
      "id": "project:stunts-hd-browser",
      "slug": "stunts-hd-browser",
      "title": "Stunts (4D Sports Driving)",
      "project": "Stunts HD browser build",
      "canonicalUrl": "https://playable.wtf/games/stunts-hd-browser/",
      "originals": [
        {
          "id": "stunts4dsportsdriving",
          "name": "Stunts (4D Sports Driving)",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser code translation",
      "genre": "Racing",
      "summary": "Stunts 1.1 translated from your own copy, with an HD browser renderer and the original driving physics.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Race a course, then design the next one",
            "kind": "background",
            "paragraphs": [
              "Stunts is a 1990 DOS driving game that pairs racing with a track editor. You can drive against its opponents, watch a replay and return to the editor to make another course. The appeal is that loop between designing a challenge and trying to drive it: the track is something you can change, not merely a fixed backdrop for choosing a car."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "Original handling, a new view of the track",
            "kind": "project",
            "paragraphs": [
              "Stunts HD keeps the driving behaviour of Stunts 1.1 while changing how the scene is drawn. Your copy’s executable is translated locally, and the original game still supplies the handling, opponents, crashes and replay logic. The HD renderer reconstructs that scene at the display’s resolution, with widescreen presentation and interpolation between the original frames.",
              "This distinction matters if you are returning for the physics. The project is not a new driving game with cars that merely look like Stunts. Its visual upgrade sits around the old simulation. Press H to compare the HD view with the original picture, or change camera to see a difficult section from another angle."
            ],
            "sourceIds": [
              "implementation"
            ]
          },
          {
            "id": "racing",
            "title": "Race, replay and build another attempt",
            "kind": "project",
            "paragraphs": [
              "The creator documents races against the original opponents, replay playback, the track editor, custom .TRK courses and add-on cars. A ghost car gives repeated laps a reference point; the camera choices include in-car, high, chase and TV views. These tools make the project useful both for returning to a familiar course and for experimenting with one you have built yourself."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Use the complete Stunts 1.1 installation",
            "kind": "practical",
            "paragraphs": [
              "Bring the complete game folder or a ZIP of it and open the browser version in Chrome, Edge or Firefox. The files are processed on your own computer. The accepted release is specifically Stunts 1.1: another edition sold as 4D Sports Driving is not an interchangeable input.",
              "Arrow keys handle acceleration, braking and steering; A and Z change gears with a manual gearbox. Gamepad steering and trigger input are also documented. R restarts a run, while Escape opens the race menu for replay and other actions. Export custom tracks when you want to share or retain a separate copy."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "limits",
            "title": "Large track collections need some restraint",
            "kind": "limitations",
            "paragraphs": [
              "The original game’s track listing has a size limit. Stunts HD caps wildcard results at 127 names to avoid an overflow, so a huge track pack may not appear as one unlimited library. Keep a manageable selection when browsing custom courses. The project also offers native packages, but its Steam Deck instructions require Desktop Mode rather than Game Mode."
            ],
            "sourceIds": [
              "implementation",
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Stunts HD · features and controls",
            "url": "https://github.com/mr-finster/stunts-hd"
          },
          {
            "id": "implementation",
            "label": "Stunts HD · how the renderer and translation work",
            "url": "https://raw.githubusercontent.com/mr-finster/stunts-hd/HEAD/docs/HOW-IT-WAS-MADE.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://stunts-recomp.pages.dev/"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Supply your own complete Stunts 1.1 folder or a ZIP containing it. Other releases, including other 4D Sports Driving versions, are not supported. The creator says files stay on your computer.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/mr-finster/stunts-hd/HEAD/README.md"
        },
        "setup": {
          "answer": "Open the browser build in Chrome, Edge or Firefox, select the complete Stunts 1.1 folder or ZIP, and let the project translate the executable locally before starting.",
          "steps": [
            "Select your complete Stunts 1.1 folder or ZIP.",
            "Wait for local validation and translation.",
            "Start a race; use the arrow keys or documented gamepad controls."
          ],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/mr-finster/stunts-hd/HEAD/README.md"
        },
        "devices": {
          "answer": "The browser instructions specify Chrome, Edge or Firefox.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/mr-finster/stunts-hd/HEAD/README.md"
        },
        "controls": {
          "answer": "Arrow keys accelerate, brake and steer; A/Z change manual gears, C changes camera, H switches HD/original rendering, R restarts and Escape opens the race menu. Gamepad sticks or D-pad steer and triggers drive.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/mr-finster/stunts-hd/HEAD/README.md"
        },
        "issues": {
          "answer": "Only Stunts 1.1 is supported. The project translates the original executable and supplies emulated PC services; it is not a replacement game with independently reproduced physics.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/mr-finster/stunts-hd/HEAD/README.md"
        },
        "scope": {
          "answer": "The creator documents racing, opponents, replays, the track editor, custom .TRK tracks and add-on cars.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/mr-finster/stunts-hd/HEAD/README.md"
        },
        "saves": {
          "answer": "The project offers track Import/Export for sharing custom tracks. Keep exported .TRK files when moving your track collection.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/mr-finster/stunts-hd/HEAD/README.md"
        }
      },
      "credits": [
        {
          "name": "Distinctive Software",
          "role": "original-developer",
          "originalGameId": "stunts4dsportsdriving",
          "url": "https://github.com/mr-finster/stunts-hd",
          "evidence": "https://raw.githubusercontent.com/mr-finster/stunts-hd/HEAD/README.md",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/mr-finster/stunts-hd"
    },
    {
      "id": "project:super-mario-galaxy-galaxypad",
      "slug": "super-mario-galaxy-galaxypad",
      "title": "Super Mario Galaxy",
      "project": "GalaxyPad",
      "canonicalUrl": "https://playable.wtf/games/super-mario-galaxy-galaxypad/",
      "originals": [
        {
          "id": "supermariogalaxy",
          "name": "Super Mario Galaxy",
          "relationship": "associated-with"
        }
      ],
      "kind": "Decompilation-based port",
      "genre": "Platformer",
      "summary": "An experimental native iPhone/iPad build based on MacioGalaxy and Petari, with touch and controller input.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Small planets and a universe of Power Stars",
            "kind": "background",
            "paragraphs": [
              "Super Mario Galaxy takes Mario’s rescue of Peach into space, with Rosalina’s Observatory and the search for stolen Power Stars giving the adventure its structure. Its planet-hopping premise makes movement and orientation part of the attraction: a new destination can change how you think about a familiar jump.",
              "GalaxyPad concerns the first Galaxy’s Wii game data. Nintendo’s later two-game Switch collection is useful background on the adventures, but its second game and newer collection features are not included by this project."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "current-engine",
            "title": "Know which GalaxyPad engine you are using",
            "kind": "project",
            "paragraphs": [
              "The current iPhone and iPad route uses the New engine, built from MacioGalaxy and Petari’s reconstructed source and compiled for ARM64 with Metal rendering. The deprecated Old engine used a different recompilation and compatibility path. Old performance notes and setup instructions therefore do not automatically describe the current phone build.",
              "The project supplies touch controls, editable layouts, controller mapping and gyro cursor support. Full-game completion remains unverified by the creator, so the experimental label is meaningful even when individual scenes run smoothly."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "pointer-and-import",
            "title": "Prepare both the game data and the pointer controls",
            "kind": "practical",
            "paragraphs": [
              "Build the phone app with PadMint on an Apple Silicon Mac using full Xcode, then import your own supported USA RMGE01 revision 0 WBFS through Game Data & Saves. The importer requires substantial free device space; ISO, split WBFS and other revisions are not interchangeable supported inputs. There is no public prebuilt IPA.",
              "Movement and pointer aiming are separate. For a Pull Star, aim until the hand appears and hold A; the default right-shoulder mapping also supplies A so your thumb can remain on the aiming stick. Install updates over the same app with the same signing identity, and back up saves before changing that identity or uninstalling."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Nintendo · the Super Mario Galaxy adventures",
            "url": "https://www.nintendo.com/us/store/products/super-mario-galaxy-plus-super-mario-galaxy-2-switch/"
          },
          {
            "id": "project",
            "label": "GalaxyPad · current engine and player guide",
            "url": "https://github.com/chrissotraidis/galaxypad"
          }
        ]
      },
      "families": [
        {
          "id": "mario",
          "title": "Mario platformers",
          "indexUrl": "https://playable.wtf/families/#family-mario",
          "guideUrl": "https://playable.wtf/guides/mario-platformer-versions/",
          "choices": [
            {
              "slug": "coop-deluxe-sm64coopdx",
              "label": "SM64 with friends",
              "reason": "Native online co-op synchronizes enemies and events, with public or private CoopNet rooms.",
              "canonicalUrl": "https://playable.wtf/games/coop-deluxe-sm64coopdx/"
            },
            {
              "slug": "super-mario-galaxy-galaxypad",
              "label": "Galaxy on iPhone or iPad",
              "reason": "Build a personal native app with touch and controller input; bring the supported USA Wii image.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-galaxy-galaxypad/"
            },
            {
              "slug": "super-mario-wonder-recomp",
              "label": "Follow an early Wonder build",
              "reason": "Source-build the Switch 1.0.0 project if you want to explore its experimental early-course progress.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-wonder-recomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "source-build",
        "status": "experimental",
        "route": {
          "kind": "project",
          "url": "https://github.com/chrissotraidis/galaxypad"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Super Mario Galaxy USA RMGE01 revision 0 WBFS image. Other regions and revisions are not automatically compatible. No game image, assets, saves or keys are included.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/chrissotraidis/galaxypad/HEAD/README.md"
        },
        "setup": {
          "answer": "On an Apple silicon Mac, install Xcode 26+ with its iOS platform and use PadMint 0.5.2+. Build and sideload the resulting IPA, then import your supported WBFS in Game Data & Saves. The README asks for about 20 GB free for building and at least 9 GiB on the device for import.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/chrissotraidis/galaxypad/HEAD/README.md"
        },
        "devices": {
          "answer": "The maintained build targets iPhone and iPad; iOS/iPadOS 16+ is the configured deployment target, not a guarantee that every device was tested. The Mac app is a development route. No browser build or prebuilt IPA is provided.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/chrissotraidis/galaxypad/HEAD/README.md"
        },
        "controls": {
          "answer": "Touch controls, editable layouts, controller mappings and a gyro cursor are documented. The New engine steers Star Ball and Ray rides with the main stick.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/chrissotraidis/galaxypad/HEAD/README.md"
        },
        "issues": {
          "answer": "Experimental release; full-game completion is not verified by the maintainer. v0.2.1 changes menu responsiveness and pauses gameplay/audio while menus are open. Reported frame rates apply to the creator’s specific devices.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/chrissotraidis/galaxypad/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/chrissotraidis/galaxypad"
    },
    {
      "id": "project:super-mario-wonder-recomp",
      "slug": "super-mario-wonder-recomp",
      "title": "Super Mario Bros. Wonder",
      "project": "Super Mario Wonder Recomp",
      "canonicalUrl": "https://playable.wtf/games/super-mario-wonder-recomp/",
      "originals": [
        {
          "id": "supermariobroswonder",
          "name": "Super Mario Bros. Wonder",
          "relationship": "port-of"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Platformer",
      "summary": "Build an experimental native Wonder port from your own Switch 1.0.0 copy.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Platforming that changes around you",
            "kind": "background",
            "paragraphs": [
              "Super Mario Bros. Wonder takes Mario’s side-scrolling platforming to the Flower Kingdom. Wonder Flowers transform the course around the player, while badges add abilities that change how a level can be approached. New power-ups include an elephant form, bubbles that can defeat enemies or become stepping stones, and a drill for moving through ground or ceilings.",
              "Those are features of Nintendo’s original game. They explain the appeal of the project’s target, but they do not establish how much of the full adventure this experimental recompilation has verified."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "current-scope",
            "title": "An early native port reaching course 1-1",
            "kind": "project",
            "paragraphs": [
              "The project statically recompiles the game for native platforms. Its documented progress reaches the title screen, file and player selection, character selection, the opening world map and course 1-1. That is a useful playable milestone, not evidence of a completed campaign or every original mode.",
              "Its performance notes also separate headless tests from visible play. Menu and course tests can run at 60 FPS without display rendering, while windowed gameplay has documented stretches around 35–40 FPS and visual glitches. A headless test result is not a promise of smooth play on your screen."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "building",
            "title": "Your own version 1.0.0 files are required",
            "kind": "practical",
            "paragraphs": [
              "There is no ready-to-play release binary. The source workflow needs an owned version 1.0.0 game dump, including the main and SDK executable files and RomFS data, plus your own required keys and firmware resources. The preparation process translates code and shaders and builds the local runtime; the source repository does not supply the commercial game.",
              "Apple Silicon macOS and Windows with Vulkan 1.3 are documented targets. Android also requires ARM64 and Vulkan 1.3, with the Galaxy S23 documented as a tested device. Linux x86-64 with Vulkan 1.3 is also documented; on a Wayland desktop its window uses XWayland."
            ],
            "sourceIds": [
              "project",
              "platform-update"
            ]
          },
          {
            "id": "android-controls",
            "title": "Touch controls are part of the experimental Android path",
            "kind": "limitations",
            "paragraphs": [
              "The Android interface provides a floating movement stick, A for jumping and Y for dashing; moving the stick fully also activates dash. Bluetooth or USB controllers can hide the touch overlay. Android remains experimental, with documented rendering bugs and performance work still in progress."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Super Mario Wonder Recomp · project documentation",
            "url": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/9ecad0cef164008a474b5ff0fa50e6ef55edba60/README.md"
          },
          {
            "id": "original",
            "label": "Super Mario Bros. Wonder · Nintendo game introduction",
            "url": "https://supermariobroswonder.nintendo.com/"
          },
          {
            "id": "platform-update",
            "label": "Wonder Recomp · Linux target and current limitations",
            "url": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/7c2531d9bdce94506bad9bf53d8a9848b240f111/README.md"
          }
        ]
      },
      "families": [
        {
          "id": "mario",
          "title": "Mario platformers",
          "indexUrl": "https://playable.wtf/families/#family-mario",
          "guideUrl": "https://playable.wtf/guides/mario-platformer-versions/",
          "choices": [
            {
              "slug": "coop-deluxe-sm64coopdx",
              "label": "SM64 with friends",
              "reason": "Native online co-op synchronizes enemies and events, with public or private CoopNet rooms.",
              "canonicalUrl": "https://playable.wtf/games/coop-deluxe-sm64coopdx/"
            },
            {
              "slug": "super-mario-galaxy-galaxypad",
              "label": "Galaxy on iPhone or iPad",
              "reason": "Build a personal native app with touch and controller input; bring the supported USA Wii image.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-galaxy-galaxypad/"
            },
            {
              "slug": "super-mario-wonder-recomp",
              "label": "Follow an early Wonder build",
              "reason": "Source-build the Switch 1.0.0 project if you want to explore its experimental early-course progress.",
              "canonicalUrl": "https://playable.wtf/games/super-mario-wonder-recomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "source-build",
        "status": "in-development",
        "route": {
          "kind": "project",
          "url": "https://github.com/BelmanteGu/SuperMarioWonderRecomp"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "experimental",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own legally dumped Nintendo Switch copy of Super Mario Bros. Wonder 1.0.0 (title ID 010015100B514000), plus your own keys and firmware. Extract the base game’s ExeFS, including main and sdk, and RomFS. Game data and generated builds are not included.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/9ecad0cef164008a474b5ff0fa50e6ef55edba60/README.md"
        },
        "setup": {
          "answer": "Build from source using the repository guide; no ready-made release is published. macOS uses Xcode command line tools, CMake/Ninja, SDL3, Vulkan/MoltenVK and Python. Windows uses Visual Studio Build Tools/clang and the Vulkan SDK. Android builds use the Android SDK and NDK 28.2 on macOS or Linux.",
          "steps": [
            "Prepare your own Wonder 1.0.0 ExeFS and RomFS with your own keys and firmware, following the repository’s extraction requirements.",
            "Recompile main and sdk, translate the shaders and build the local button font as described in the build guide.",
            "Compile for your target platform. For Android, build the private APK and roughly 4 GB data zip, then install both and grant the documented all-files access.",
            "Keep generated game code, APKs and data packs private; the project says not to redistribute them."
          ],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/9ecad0cef164008a474b5ff0fa50e6ef55edba60/README.md"
        },
        "devices": {
          "answer": "The creator reports native builds on Apple Silicon macOS, Windows 10/11 x86-64 with Vulkan 1.3 (RTX 3050 and Intel GPUs), and arm64 Android with Vulkan 1.3 (Galaxy S23 / Snapdragon 8 Gen 2). Android remains experimental with rendering and performance issues. Linux x86-64 with Vulkan 1.3 is now a documented target, using XWayland on Wayland desktops. There is no browser version.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/7c2531d9bdce94506bad9bf53d8a9848b240f111/README.md"
        },
        "controls": {
          "answer": "Keyboard and SDL gamepad input are documented for the desktop build. Android offers an on-screen stick and buttons, including A to jump and Y to dash, plus Bluetooth or USB controllers; touch controls hide while a controller is in use.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/9ecad0cef164008a474b5ff0fa50e6ef55edba60/README.md"
        },
        "issues": {
          "answer": "Expect rendering glitches and uneven performance. The creator lists a Windows crash after character selection, Android rendering work and a simulation that speeds up above 60 fps. Headless frame-rate figures are not a promise for normal play.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/7c2531d9bdce94506bad9bf53d8a9848b240f111/README.md"
        },
        "scope": {
          "answer": "The creator reports working title and selection screens, the opening, world map and course 1-1. This is an in-development port; a complete retail-game playthrough is not confirmed.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/9ecad0cef164008a474b5ff0fa50e6ef55edba60/README.md"
        }
      },
      "credits": [
        {
          "name": "Projeto Belmante / BelmanteGu",
          "role": "port-author",
          "url": "https://www.youtube.com/@belmante",
          "evidence": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/9ecad0cef164008a474b5ff0fa50e6ef55edba60/README.md",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/BelmanteGu/SuperMarioWonderRecomp"
    },
    {
      "id": "project:supermedo-bloodborne-pc",
      "slug": "supermedo-bloodborne-pc",
      "title": "Bloodborne",
      "project": "Bloodborne for Windows",
      "canonicalUrl": "https://playable.wtf/games/supermedo-bloodborne-pc/",
      "originals": [
        {
          "id": "bloodborne",
          "name": "Bloodborne",
          "relationship": "associated-with"
        }
      ],
      "kind": "Native compatibility port",
      "genre": "Action",
      "summary": "A Windows runtime for the original PS4 game and its Vulkan graphics path.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original hunt through Yharnam",
            "kind": "background",
            "paragraphs": [
              "Bloodborne is an action RPG built around exploring a hostile gothic city and responding quickly to aggressive enemies. Its weapons include firearms and close-range weapons such as the saw cleaver, while the Chalice Dungeons provide another network of underground challenges. The draw is learning how to survive encounters while uncovering the world around them. This describes the PlayStation game; the Windows project has its own technical and online limitations."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "windows-port",
            "title": "What this Windows project supplies",
            "kind": "project",
            "paragraphs": [
              "Supermedo’s version runs the original PS4 x86-64 code natively and translates graphics to Vulkan. Its launcher gathers resolution, frame cap, effects, controls and mod settings in one place. It builds on bbport and shadPS4 work, and remains an unofficial compatibility project rather than a Sony PC release.",
              "Graphics choices include native-resolution antialiasing and supported upscaling options, while control settings offer remappable keyboard/mouse input alongside a controller. Insert or L3 + R3 opens the in-game settings. The launcher can apply mods and third-party patches without changing the source game files."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "version-and-dlc",
            "title": "Your dump and update version matter",
            "kind": "practical",
            "paragraphs": [
              "Supply your own decrypted CUSA03173 dump and select the folder containing eboot.bin. Version 1.09 is required for the documented community frame-rate, resolution and effects patches; other game versions run at 30 frames per second. The download supplies the compatibility program, not Bloodborne’s assets.",
              "The Old Hunters depends on your own game and add-on data. The documented Game of the Year dump already includes it, while a base-game dump uses a separately selected DLC folder. Follow that distinction instead of assuming that an effects or frame-rate patch adds expansion ownership."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "online-and-hardware",
            "title": "Online play and performance need care",
            "kind": "limitations",
            "paragraphs": [
              "Online functionality is a beta using community services. Players need version 1.09 and the same co-op server; the README describes messages, bloodstains, ghosts and bell summons while explicitly disabling a different community co-op pool until compatible. This is separate from the original PlayStation online service.",
              "Windows 10/11, AVX-capable hardware and Vulkan 1.3 are required. Some AMD cards can still crash when loading the world, and older supported Intel processors use best-effort instruction translation. Keep the frame cap at 120 or lower as advised by the maintainer; higher timing has not been checked throughout the game."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Bloodborne for Windows · project documentation",
            "url": "https://github.com/Supermedo/bloodborne_pc"
          },
          {
            "id": "original",
            "label": "PlayStation · Bloodborne",
            "url": "https://www.playstation.com/en-us/games/bloodborne/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/Supermedo/bloodborne_pc/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own decrypted Bloodborne game dump.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Supermedo/bloodborne_pc"
        },
        "setup": {
          "answer": "Read the current release requirements, start the project launcher and select the game folder.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Supermedo/bloodborne_pc"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Supermedo/bloodborne_pc"
    },
    {
      "id": "project:thatguymcd-dkr-r",
      "slug": "thatguymcd-dkr-r",
      "title": "Diddy Kong Racing",
      "project": "DKR-R",
      "canonicalUrl": "https://playable.wtf/games/thatguymcd-dkr-r/",
      "originals": [
        {
          "id": "diddykongracing",
          "name": "Diddy Kong Racing",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Racing",
      "summary": "Diddy Kong Racing with a native runtime and custom-track tools.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original game: races that open an island",
            "kind": "background",
            "paragraphs": [
              "Diddy Kong Racing gives its races an adventure structure. Winning earns balloons that open new courses around Timber’s Island, and clearing a zone leads to a race against its boss. Between events, Taj can change your vehicle so you can reach places a car cannot. The island gives each win a purpose beyond finishing a standalone cup.",
              "Cars, hovercraft and aircraft ask for different handling, while the racers themselves favour acceleration, top speed or a balance of both. A boss can also turn the course into an obstacle challenge: the dragon leaves fire in the aircraft’s path, while the giant octopus scatters bombs. That variety is the original game’s foundation; DKR-R adds the optional presentation, mods and online systems below."
            ],
            "sourceIds": [
              "original",
              "original-racing"
            ]
          },
          {
            "id": "this-version",
            "title": "Race with the original game or reshape it",
            "kind": "project",
            "paragraphs": [
              "DKR-R pairs the original Diddy Kong Racing tracks and characters with optional modern presentation and a growing mod system. Custom tracks appear below the original worlds in Track Select, while custom characters join the animated character-selection stage. This makes it possible to keep familiar races close at hand and explore additions without replacing the original game.",
              "The Accurate preset keeps a 4:3 view and 30-fps presentation. Modern opens up widescreen and higher presentation rates, with optional water effects and camera adjustments. Interpolation smooths the displayed image without accelerating race timers, physics or the original audio clock. The Modern camera is an offline option; experimental hardware reflections can be demanding."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "race-with-friends",
            "title": "Set up a compatible lobby",
            "kind": "practical",
            "paragraphs": [
              "The project documents online races for two to four people and two-player Adventure. Open DKR-R Online to host or join with a five-character lobby code. Everyone needs a compatible complete build and the same original ROM revision. The current 1.0.7 packages must not be mixed with 1.0.6; connection checks also compare the prepared mods.",
              "The host selects the online tracks and characters. Joining players review required downloads, and only missing mod content is transferred; no ROM is shared. Their offline mod choices and personal saves are kept separate. Quick Join does not require an account or manual port forwarding, although restrictive networks can still prevent a connection. Rollback remains experimental."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "first-launch",
            "title": "Start with a complete package",
            "kind": "practical",
            "paragraphs": [
              "Use a supported US 1.0 or US Rev A/1.1 ROM and add it in the launcher’s Play page. Keep the complete release together: on Windows, DKR-R.exe is the entry point, while the runtime helpers remain in their supplied folders. Begin with Play Offline before adding optional textures, tracks or online settings.",
              "Save Manager separates Offline, Online, Modded and Recovery saves. Back them up before updating. Portable mode takes effect on the next launch and does not move old saves automatically. Windows and Linux packages are available, with Android and Steam Deck packages also listed; the project still cautions that ARM, Android and Deck device coverage is incomplete. Apple source support does not mean an Apple binary is included in this release."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "DKR-R · project documentation",
            "url": "https://github.com/ThatGuyMcd/DKR-R"
          },
          {
            "id": "original",
            "label": "Nintendo · original Diddy Kong Racing overview",
            "url": "https://www.nintendo.co.jp/n01/n64/software/nus_p_ndyj/index.html"
          },
          {
            "id": "original-racing",
            "label": "Nintendo · original courses and boss races",
            "url": "https://www.nintendo.co.jp/n01/n64/software/nus_p_ndyj/page2.html"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/ThatGuyMcd/DKR-R/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own US 1.0 or US Rev A/1.1 Diddy Kong Racing ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/ThatGuyMcd/DKR-R"
        },
        "setup": {
          "answer": "Use the current DKR-R release and select a supported ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/ThatGuyMcd/DKR-R"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/ThatGuyMcd/DKR-R"
    },
    {
      "id": "project:the-schwilliam-skategm",
      "slug": "the-schwilliam-skategm",
      "title": "Garry’s Mod × Skate 3",
      "project": "SkateGM",
      "canonicalUrl": "https://playable.wtf/games/the-schwilliam-skategm/",
      "originals": [
        {
          "id": "garrysmod",
          "name": "Garry's Mod",
          "relationship": "associated-with"
        },
        {
          "id": "skate3",
          "name": "Skate 3",
          "relationship": "associated-with"
        }
      ],
      "kind": "Mashup mod",
      "genre": "Sports",
      "summary": "Skate 3 board physics, tricks and scoring on Garry’s Mod maps.",
      "editorial": {
        "sections": [
          {
            "id": "play",
            "title": "Make Garry’s Mod maps into skate spots",
            "kind": "project",
            "paragraphs": [
              "SkateGM brings Skate 3’s board physics, tricks and scoring into Garry’s Mod. The attraction is choosing your own environment, setting a marker and trying a line with friends, then changing the space with the park editor. It includes a dedicated skating gamemode and a toggle for entering Skater mode inside other gamemodes.",
              "Its minigames give that sandbox a purpose. Own the Spot rewards the best scoring turn, S.K.A.T.E. asks everyone to repeat a set trick, and Trick Bingo turns a shared card into a set of landing challenges. Hold the Line is cooperative: each skater inherits the previous player’s position and speed, and a bail ends the group’s run. These are SkateGM activities rather than a claim that the original career is reproduced."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Install the addon and the local engine",
            "kind": "practical",
            "paragraphs": [
              "Use Windows and Garry’s Mod’s x86-64 branch. Subscribe to the Workshop addon, close Garry’s Mod and run the separate installer with your own Xbox 360 Skate 3 ISO or extracted default.xex folder. It converts local game data and adds the native engine module, which the Workshop cannot carry.",
              "Optional map generation builds Skate 3 locations from your disc and takes additional time. It is off by default. Port Carverton, smaller segments and parks can then appear in Garry’s Mod’s map list; a separate Skate 2 disc is needed for the additional New San Vanelona option."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controls",
            "title": "Use markers to practice a line",
            "kind": "practical",
            "paragraphs": [
              "A controller is recommended. Hold LB and use D-pad down to place a marker, then hold the return combination to go back. LB plus D-pad left opens minigames, LB plus B opens the park editor and LB plus RB opens replays. On a keyboard, arrow keys perform Flick-It inputs and R respawns.",
              "If a controller fails, the creator recommends disabling Steam Input for Garry’s Mod. Every friend who wants to skate needs the addon and installer locally. In the dedicated gamemode, players without a functioning setup become spectators, so complete each person’s installation before organizing a session."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "SkateGM · project documentation",
            "url": "https://github.com/the-schwilliam/SkateGM"
          }
        ]
      },
      "families": [
        {
          "id": "skate",
          "title": "Skate",
          "indexUrl": "https://playable.wtf/families/#family-skate",
          "guideUrl": "https://playable.wtf/guides/skate-browser-vs-native-ports/",
          "choices": [
            {
              "slug": "skate-3-native",
              "label": "Desktop disc installer",
              "reason": "A release-based ISO installer and controller input; Windows is the maintainer’s most-tested platform.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-native/"
            },
            {
              "slug": "skate-3-browser",
              "label": "Prepared-data browser experiment",
              "reason": "Connect a compatible converted copy through Game Server; the public launcher supplies no converter.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-browser/"
            },
            {
              "slug": "andrewnakas-skate3-android",
              "label": "Android installation",
              "reason": "The native app can extract your own disc image and Title Update 3 on the phone.",
              "canonicalUrl": "https://playable.wtf/games/andrewnakas-skate3-android/"
            },
            {
              "slug": "skate-3-rust-engine",
              "label": "Skating rewrite",
              "reason": "A gamepad-led Windows experiment for tricks and maps, with unfinished original-game parity.",
              "canonicalUrl": "https://playable.wtf/games/skate-3-rust-engine/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "experimental",
        "route": {
          "kind": "setup",
          "url": "https://github.com/the-schwilliam/SkateGM/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Garry’s Mod’s x86-64 branch and your own Xbox 360 Skate 3 disc image or extracted default.xex folder.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/the-schwilliam/SkateGM"
        },
        "setup": {
          "answer": "Follow the original installer tutorial and point it at your own game data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/the-schwilliam/SkateGM"
        },
        "controls": {
          "answer": "Keyboard works; the creator recommends a controller.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/the-schwilliam/SkateGM"
        },
        "multiplayer": {
          "answer": "The project documents skating with friends in Garry’s Mod.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/the-schwilliam/SkateGM"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/the-schwilliam/SkateGM"
    },
    {
      "id": "project:touhou-8-web",
      "slug": "touhou-8-web",
      "title": "Touhou 8: Imperishable Night",
      "project": "TH08 Web",
      "canonicalUrl": "https://playable.wtf/games/touhou-8-web/",
      "originals": [
        {
          "id": "touhou8imperishablenight",
          "name": "Touhou 8: Imperishable Night",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "Imperishable Night with keyboard controls, local replays and your own two DAT files.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Focused movement through a bullet pattern",
            "kind": "background",
            "paragraphs": [
              "Imperishable Night is a Touhou bullet-hell shooter. Movement, shooting and bombs share a small keyboard layout, with a focus button that also reveals the hitbox. Learning the difference between ordinary movement and focused movement is a useful first step: the visible character and the small point you must protect are different things."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "The Japanese 1.00d game, compiled for the web",
            "kind": "project",
            "paragraphs": [
              "TH08 Web uses reconstructed C++ code for the original Japanese 1.00d release. It is a source-built browser port with its own file, input and audio integration. The maintainers report title-to-ending play and exercised practice, replay and result screens; their documentation also distinguishes those completed routes from further endurance work on the newer Firefox renderer."
            ],
            "sourceIds": [
              "project",
              "porting"
            ]
          },
          {
            "id": "setup",
            "title": "Two local files, selected each session",
            "kind": "practical",
            "paragraphs": [
              "Bring th08.dat and thbgm.dat from your own installation. The game data enters session memory, while music is read from the selected file as needed. Neither archive is uploaded or stored in the site's persistent storage, so keep both accessible for the next launch.",
              "Use current desktop Chrome for the recommended route. Firefox has a dedicated rendering build; Safari and mobile remain unverified. The launcher's checks can identify missing graphics or shared-memory support before starting. These are browser requirements, not a prompt to upload the files elsewhere."
            ],
            "sourceIds": [
              "project",
              "launcher"
            ]
          },
          {
            "id": "replays",
            "title": "Finish the replay save flow",
            "kind": "practical",
            "paragraphs": [
              "Arrows move, Z shoots or confirms, X bombs or cancels, Shift focuses and Escape pauses. After a run, select a replay slot and confirm End on the name-entry screen; then look under Replay at the title screen. Merely reaching the name screen does not finish that save flow.",
              "Scores, settings and replays are stored separately from the retail DAT files in this browser profile. They can survive an ordinary reload, but clearing the site's data removes them. Keep that distinction in mind when troubleshooting: reselecting the two game files does not restore a cleared replay collection."
            ],
            "sourceIds": [
              "project",
              "launcher"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "TH08 Web · player setup, controls and tested routes",
            "url": "https://github.com/N0zoM1z0/th08-web"
          },
          {
            "id": "porting",
            "label": "TH08 Web · porting and browser persistence design",
            "url": "https://raw.githubusercontent.com/N0zoM1z0/th08-web/HEAD/docs/WEB_PORTING.md"
          },
          {
            "id": "launcher",
            "label": "TH08 Web · local-file launcher",
            "url": "https://th08-web.pages.dev/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://th08-web.pages.dev/th08-web"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Select th08.dat and thbgm.dat from your own Japanese TH08 version 1.00d installation. The game archive stays in session memory; music is read from the selected file. Neither DAT file is uploaded or saved in browser persistence.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/N0zoM1z0/th08-web/blob/main/README.md"
        },
        "setup": {
          "answer": "Choose Game data and Background music data, then Start TH08. Click the canvas if keyboard input is not focused.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://th08-web.pages.dev/th08-web"
        },
        "devices": {
          "answer": "Current desktop Chrome is recommended. Firefox has a separate presentation path. Safari and mobile remain unverified; the build requires WebAssembly threads, SharedArrayBuffer and WebGL 2.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/N0zoM1z0/th08-web/blob/main/README.md"
        },
        "controls": {
          "answer": "Arrow keys move, Z shoots or confirms, X bombs or cancels, Shift focuses movement, and Esc pauses.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/N0zoM1z0/th08-web/blob/main/README.md"
        },
        "issues": {
          "answer": "Long-route endurance and memory-ceiling work remain for the newer Firefox presentation build.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/N0zoM1z0/th08-web/blob/main/README.md"
        },
        "scope": {
          "answer": "The creator reports title-to-ending routes, practice, Music Room and replay recording/playback for the Japanese 1.00d game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/N0zoM1z0/th08-web/blob/main/README.md"
        },
        "saves": {
          "answer": "Settings, scores and replays persist in IndexedDB. Clearing site data removes them; the two retail DAT files must be selected for a new session.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/N0zoM1z0/th08-web/blob/main/README.md"
        }
      },
      "credits": [
        {
          "name": "N0zoM1z0",
          "role": "port-author",
          "url": "https://github.com/N0zoM1z0/th08-web",
          "evidence": "https://github.com/N0zoM1z0/th08-web",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/N0zoM1z0/th08-web"
    },
    {
      "id": "project:twilitrealm-dusklight",
      "slug": "twilitrealm-dusklight",
      "title": "The Legend of Zelda: Twilight Princess",
      "project": "Dusklight",
      "canonicalUrl": "https://playable.wtf/games/twilitrealm-dusklight/",
      "originals": [
        {
          "id": "thelegendofzeldatwilightprincess",
          "name": "The Legend of Zelda: Twilight Princess",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Adventure",
      "summary": "Twilight Princess with native rendering and customization.",
      "editorial": {
        "sections": [
          {
            "id": "the-original-game",
            "title": "The original adventure’s puzzle rhythm",
            "kind": "background",
            "paragraphs": [
              "Twilight Princess combines action with dungeons and an overworld built for exploration. Its designers describe puzzles that build on what the player has already learned, then ask for an extra step of reasoning. A useful way to approach the adventure is to notice how an object reacts, remember that behavior and try it in a new situation.",
              "New items also give old places a second purpose: returning to an earlier area can reveal a route or treasure you could not reach before. That cycle of discovery and return is part of the original game’s appeal. Dusklight’s engine and platform changes sit around that adventure; they do not turn it into a newly designed campaign."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "dusklight-approach",
            "title": "Twilight Princess with a native engine",
            "kind": "project",
            "paragraphs": [
              "Dusklight rebuilds Twilight Princess through reverse engineering, aiming to preserve the original while adding settings and customization tools. It draws on the Twilight Princess decompilation and uses the Aurora framework. Your disc supplies the game’s assets; the application provides the replacement engine.",
              "A key version difference is easy to miss: the underlying decompilation currently matches the GameCube version. Even when you import a supported Wii disc, Dusklight presents the GameCube HUD and other GameCube-specific behavior. Choose it with that presentation in mind rather than expecting the Wii interface simply because the source disc is a Wii release."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "disc-import",
            "title": "Which copy can you bring?",
            "kind": "practical",
            "paragraphs": [
              "The project supports commercial Twilight Princess discs except the Korean Wii release. Dump your own disc and retain that source copy for setup. The documentation also permits converting an ISO to RVZ to reduce storage use; that is a container change for your disc data, not a replacement game download.",
              "Dusklight does not include copyrighted assets. Start with the linked official installation guide and the build for your processor and operating system. The official project website is twilitrealm.dev, which is also the reference point for its download links."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "platform-route",
            "title": "A different install path on each platform",
            "kind": "practical",
            "paragraphs": [
              "Windows offers x86-64 and ARM64 packages, and macOS separates Intel from Apple silicon downloads. Linux uses an AppImage that may need permission to run; the guide identifies the x86-64 package for Steam Deck. Picking the correct architecture comes before importing your disc.",
              "The same official guide includes Android ARM64 APK installation and a separate iPhone/iPad sideloading guide. Those are native app routes rather than browser play. Follow the platform-specific instructions instead of transferring the desktop executable to a phone."
            ],
            "sourceIds": [
              "install"
            ]
          },
          {
            "id": "graphics-limits",
            "title": "Older hardware needs a closer look",
            "kind": "limitations",
            "paragraphs": [
              "For the intended rendering path, the project asks for Direct3D 12, Vulkan 1.1 or newer, or Metal. Direct3D 11 and Android OpenGL ES are best-effort alternatives for older devices, with reduced accuracy or performance. The presence of a fallback API does not make every older device a good fit; graphics drivers, the operating system and the selected backend all affect the result."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Dusklight · project documentation",
            "url": "https://github.com/TwilitRealm/dusklight"
          },
          {
            "id": "install",
            "label": "Dusklight · official installation guide",
            "url": "https://twilitrealm.dev/install/"
          },
          {
            "id": "original",
            "label": "Nintendo · Twilight Princess developer interview",
            "url": "https://iwataasks.nintendo.com/interviews/wii/twilight_princess/0/0/"
          }
        ]
      },
      "families": [
        {
          "id": "zelda",
          "title": "Zelda adventures",
          "indexUrl": "https://playable.wtf/families/#family-zelda",
          "guideUrl": "https://playable.wtf/guides/zelda-game-versions/",
          "choices": [
            {
              "slug": "harbourmasters-shipwright",
              "label": "Ocarina of Time",
              "reason": "Ship of Harkinian offers native packages with ROM validation and configurable controls.",
              "canonicalUrl": "https://playable.wtf/games/harbourmasters-shipwright/"
            },
            {
              "slug": "zelda64recomp-zelda64recomp",
              "label": "Majora’s Mask",
              "reason": "Zelda64Recomp imports the North American ROM and adds optional dual-stick camera and autosave.",
              "canonicalUrl": "https://playable.wtf/games/zelda64recomp-zelda64recomp/"
            },
            {
              "slug": "zelda-links-awakening-2019-lasrecomp",
              "label": "The Switch Link’s Awakening",
              "reason": "LAS Recomp offers vanilla or randomizer play from your own version 1.0.0 files, with beta limitations.",
              "canonicalUrl": "https://playable.wtf/games/zelda-links-awakening-2019-lasrecomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/TwilitRealm/dusklight/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Twilight Princess disc dump.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/TwilitRealm/dusklight"
        },
        "setup": {
          "answer": "Read the official twilitrealm.dev setup; supply your dump and check the supported graphics backend.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/TwilitRealm/dusklight"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/TwilitRealm/dusklight"
    },
    {
      "id": "project:tx00100xt-serioussamclassic",
      "slug": "tx00100xt-serioussamclassic",
      "title": "Serious Sam: The First / Second Encounter",
      "project": "SeriousSamClassic",
      "canonicalUrl": "https://playable.wtf/games/tx00100xt-serioussamclassic/",
      "originals": [
        {
          "id": "serioussamthefirstencounter",
          "name": "Serious Sam: The First Encounter",
          "relationship": "port-of"
        },
        {
          "id": "serioussamthesecondencounter",
          "name": "Serious Sam: The Second Encounter",
          "relationship": "port-of"
        }
      ],
      "kind": "Source port",
      "genre": "Shooter",
      "summary": "Modern builds of the classic Serious Sam engine for both original encounters.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Crowd control on a very large scale",
            "kind": "background",
            "paragraphs": [
              "The classic Serious Sam games put arcade shooting and overwhelming enemy encounters at the center of play. The First Encounter takes Sam through ancient Egypt against Mental’s forces, with charging monsters, explosive attackers and a large arsenal. Reading the crowd and choosing a weapon for the immediate threat are part of its appeal.",
              "This is the original Classic branch of the series. The existence of HD editions, Revolution and later Serious Sam games does not make their content or technology part of this source port."
            ],
            "sourceIds": [
              "original",
              "project"
            ]
          },
          {
            "id": "this-version",
            "title": "The two encounters remain separate games",
            "kind": "project",
            "paragraphs": [
              "SeriousSamClassic maintains Serious Engine 1.10 for The First Encounter and The Second Encounter. The repository includes the game engine, tools and a dedicated server, with platform-specific packages and build instructions. It also supports a separate XPLUS modification that changes models, textures, effects and weapons.",
              "XPLUS is an optional fan modification, not the baseline appearance of the classic campaigns. The repository additionally points to a Vulkan variant in some platform packaging; choose the instructions corresponding to the package you actually install."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "game-data",
            "title": "Copy the matching encounter’s resources",
            "kind": "practical",
            "paragraphs": [
              "Keep First Encounter and Second Encounter data separate. The project’s manual layout uses SamTFE and SamTSE, each with its own archives and supporting directories. The detailed running instructions include Help and, for the First Encounter layout, Levels alongside the GRO archives.",
              "Flatpak, Snap and AppImage packages look in different user-data locations. Follow that package’s first-run prompt or documented path instead of mixing instructions for a source checkout with a sandboxed package. An installation that cannot find data is not necessarily missing the executable."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "build-choice",
            "title": "Use a playing build and the intended content",
            "kind": "practical",
            "paragraphs": [
              "For source builds, the maintainers recommend Release or RelWithDebInfo for playing. Debug builds can stop on internal assertions that are not intended as a normal player experience. The repository also documents demo builds using official demo resources; those offer demo content, while full campaigns still need the matching Classic game files. This distinction keeps a successful demo launch from becoming a mistaken claim that every retail level is installed."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "SeriousSamClassic · project documentation",
            "url": "https://raw.githubusercontent.com/tx00100xt/SeriousSamClassic/HEAD/README.md"
          },
          {
            "id": "original",
            "label": "SeriousSamClassic · original game publisher description",
            "url": "https://store.steampowered.com/api/appdetails?appids=41050&l=english"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/tx00100xt/SeriousSamClassic/releases/tag/1.10.7"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Original .gro game archives from the corresponding Classic First Encounter or Classic Second Encounter installation; keep each game in its own data directory.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/tx00100xt/SeriousSamClassic/HEAD/README.md"
        },
        "setup": {
          "answer": "Choose a release package or compile the engine, then point the matching SamTFE or SamTSE runtime at its original game data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/tx00100xt/SeriousSamClassic/HEAD/README.md"
        },
        "devices": {
          "answer": "The project documents Windows, Linux, BSD and macOS workflows with platform-specific packages and dependencies.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/tx00100xt/SeriousSamClassic/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/tx00100xt/SeriousSamClassic"
    },
    {
      "id": "project:uncharted-nathan-drake-collection-pc",
      "slug": "uncharted-nathan-drake-collection-pc",
      "title": "Uncharted: The Nathan Drake Collection",
      "project": "The Nathan Drake Collection PC port",
      "canonicalUrl": "https://playable.wtf/games/uncharted-nathan-drake-collection-pc/",
      "originals": [
        {
          "id": "uncharteddrakesfortune",
          "name": "Uncharted: Drake's Fortune",
          "relationship": "associated-with"
        },
        {
          "id": "uncharted2amongthieves",
          "name": "Uncharted 2: Among Thieves",
          "relationship": "associated-with"
        },
        {
          "id": "uncharted3drakesdeception",
          "name": "Uncharted 3: Drake's Deception",
          "relationship": "associated-with"
        }
      ],
      "kind": "Native compatibility port",
      "genre": "Action adventure",
      "summary": "A Windows runtime for all three games in the PS4 Collection, using your own CUSA02344 dump.",
      "editorial": {
        "sections": [
          {
            "id": "three-adventures",
            "title": "Three treasure-hunting stories, in order",
            "kind": "background",
            "paragraphs": [
              "The Nathan Drake Collection brings together the single-player campaigns of Drake’s Fortune, Among Thieves and Drake’s Deception. Nathan’s travels, friendships and pursuit of treasure connect the three adventures. It is a useful way to follow the earlier arc of the character rather than beginning with a later Uncharted story.",
              "The PS4 Collection is specifically a campaign collection. The original games’ multiplayer modes are not part of that package, so the presence of three titles should not suggest three online multiplayer releases."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "pc-version",
            "title": "Choose settings for each campaign",
            "kind": "project",
            "paragraphs": [
              "BilalReloaded’s runtime executes the Collection’s original x86-64 programs on Windows with replacement PS4 services and a Vulkan renderer. Its launcher keeps settings separately for each game. That matters because the three campaigns have different rendering costs and do not share identical compatibility results.",
              "Drake’s Fortune has a documented native rendering ceiling of 2880×1620, with 4K output achieved through upscaling. Uncharted 2 can become CPU-limited in heavy scenes, while Uncharted 3 has had less play testing. The experimental 120 FPS option is not a guarantee, and still higher rates are deliberately omitted because they break movement."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "first-session",
            "title": "Start with one queued frame and a warmed cache",
            "kind": "practical",
            "paragraphs": [
              "Choose your own CUSA02344 dump in the launcher, with eboot.bin and sce_sys in the expected folder. The project recommends update 1.02 in an adjacent folder ending in -patch. Pick a campaign and preset, then allow the first launch to prepare files and compile shaders.",
              "Keep Frames queued at one. The README describes both visual errors and crashes with two queued frames, particularly in Uncharted 2. Keyboard, mouse and gamepad bindings can be changed per game, while Insert or R3 plus L2 opens the runtime menu. Saves and settings remain in the installation’s analysis folder, so preserve it when moving or updating the package."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "PlayStation · The Nathan Drake Collection",
            "url": "https://www.playstation.com/en-us/games/uncharted-the-nathan-drake-collection/"
          },
          {
            "id": "project",
            "label": "The Nathan Drake Collection PC port · player guide",
            "url": "https://github.com/bc160201983/Uncharted-The-Nathan-Drake-Collection-PC-port"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "beta",
        "route": {
          "kind": "download",
          "url": "https://github.com/bc160201983/Uncharted-The-Nathan-Drake-Collection-PC-port/releases/tag/v0.1.1"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own PS4 CUSA02344 Collection dump, including eboot.bin and sce_sys. Update 1.02 is recommended; game content is not included.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/bc160201983/Uncharted-The-Nathan-Drake-Collection-PC-port/HEAD/README.md"
        },
        "setup": {
          "answer": "Download Uncharted-windows.zip from the reviewed release, extract it and select your game folder in Uncharted Launcher.exe. Put your own update beside the game folder with a -patch suffix. Select a campaign and preset; first launch prepares files and shaders.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/bc160201983/Uncharted-The-Nathan-Drake-Collection-PC-port/HEAD/README.md"
        },
        "devices": {
          "answer": "Windows 10/11 64-bit with Vulkan 1.3 and a current GPU driver. The project recommends 16 GB RAM and a four-core CPU or better. No browser or Xbox build is verified for this repository.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/bc160201983/Uncharted-The-Nathan-Drake-Collection-PC-port/HEAD/README.md"
        },
        "controls": {
          "answer": "Remappable keyboard and mouse controls, including WASD movement and mouse aiming, plus DualSense, DualShock 4 and Xbox controllers. Insert or R3 + L2 opens the runtime menu.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/bc160201983/Uncharted-The-Nathan-Drake-Collection-PC-port/HEAD/README.md"
        },
        "issues": {
          "answer": "Uncharted 2 can hitch in demanding scenes; experimental multithreaded rendering with two queued frames can crash. Uncharted 3 has less creator play testing. Resolution and frame-rate options do not guarantee those results on every device.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/bc160201983/Uncharted-The-Nathan-Drake-Collection-PC-port/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/bc160201983/Uncharted-The-Nathan-Drake-Collection-PC-port"
    },
    {
      "id": "project:underdecoded-gen2recomped",
      "slug": "underdecoded-gen2recomped",
      "title": "Pokémon Gold / Silver / Crystal",
      "project": "Gen2Recomped",
      "canonicalUrl": "https://playable.wtf/games/underdecoded-gen2recomped/",
      "originals": [
        {
          "id": "pokemongold",
          "name": "Pokémon Gold",
          "relationship": "reimplementation-of"
        },
        {
          "id": "pokemonsilver",
          "name": "Pokémon Silver",
          "relationship": "reimplementation-of"
        },
        {
          "id": "pokemoncrystal",
          "name": "Pokémon Crystal",
          "relationship": "reimplementation-of"
        },
        {
          "id": "pokemonred",
          "name": "Pokémon Red",
          "relationship": "reimplementation-of"
        },
        {
          "id": "pokemonblue",
          "name": "Pokémon Blue",
          "relationship": "reimplementation-of"
        },
        {
          "id": "pokemonyellow",
          "name": "Pokémon Yellow",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine recreation",
      "genre": "RPG",
      "summary": "A LÖVE engine recreation that imports supported Generation I and II cartridge data.",
      "editorial": {
        "sections": [
          {
            "id": "generation-two",
            "title": "Johto systems built on a first-generation foundation",
            "kind": "project",
            "paragraphs": [
              "Gen2Recomped recreates Gold, Silver and Crystal using a hand-written Lua engine. Its documented additions include Johto and Kanto, a day/night cycle, breeding and the Day-Care, the Pokégear, shiny Pokémon and held items. Those systems give the journey more to manage than simply moving between battles: time, team-building and the items carried by your Pokémon become part of planning.",
              "Red, Blue and Yellow remain available through the upstream Gen1Recomp foundation. Despite the name, this project is not a static translation of the original machine code and does not emulate the Game Boy. It reads an owned ROM to build the data used by its own engine."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "import",
            "title": "Import the exact version you own",
            "kind": "practical",
            "paragraphs": [
              "The importer checks canonical US ROM hashes before creating local data. Gold and Silver have their own accepted images, while Crystal supports the listed revision 0 and revision 1 dumps. A different region or modified ROM is not interchangeable with those inputs. The desktop app accepts a selected file or a file dropped onto its window.",
              "Each game keeps separate imported data and saves, allowing several versions to sit side by side. The original ROM is not copied into the generated cache, and later launches use that cache without repeating the import. Preserve the relevant user-data directory when updating or moving a continuing game."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "controls",
            "title": "Modern display choices around familiar buttons",
            "kind": "practical",
            "paragraphs": [
              "Keyboard and controller inputs map to the original directional pad, A, B, Start and Select buttons. OPTIONS → CONTROLS provides rebinding. The engine also exposes zoom, color and presentation effects, alongside quick-save and quick-load shortcuts. Its performance presets adjust presentation work while preserving fixed-step game logic.",
              "The Generation I games offer faithful and modern_clean rulesets; those choices should not be confused with Gold and Silver’s separate Generation II rules. Decide which behavior you want before assuming every version follows one universal set of changes."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "platforms",
            "title": "Choose the package for the actual device",
            "kind": "limitations",
            "paragraphs": [
              "The release table includes desktop, mobile and homebrew-device packages, each with its own installation route. A retail Xbox cannot install the Developer Mode package, and console imports use scanned folders rather than a desktop file picker. On Windows, the ordinary ZIP offers the same game without the separate certificate-installation process required by the MSIX package."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Gen2Recomped · project documentation",
            "url": "https://raw.githubusercontent.com/UNDERdecoded/Gen2Recomped/HEAD/README.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/UNDERdecoded/Gen2Recomped/releases/tag/v0.8.27"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Canonical US Gold, Silver, Crystal Rev 0/1, Red, Blue or Yellow ROMs, matched by SHA-1 during import. The packages contain neither ROMs nor extracted game data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/UNDERdecoded/Gen2Recomped/HEAD/README.md"
        },
        "setup": {
          "answer": "Choose a platform package, open it and select or drop a supported .gb/.gbc file. The importer builds a private cache for later launches.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/UNDERdecoded/Gen2Recomped/HEAD/README.md"
        },
        "devices": {
          "answer": "Desktop, Android and iOS packages are documented, with separate handheld/console workflows. Availability differs by release asset.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/UNDERdecoded/Gen2Recomped/HEAD/README.md"
        },
        "controls": {
          "answer": "Keyboard and controller mappings are configurable in Options → Controls.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/UNDERdecoded/Gen2Recomped/HEAD/README.md"
        },
        "issues": {
          "answer": "This is handwritten Lua recreation, not static recompilation despite its name. Upstream reports antivirus alerts; this catalog has not validated those files or the claimed false-positive explanation.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/UNDERdecoded/Gen2Recomped/HEAD/README.md"
        },
        "saves": {
          "answer": "F1 saves and F2 loads; imported data is cached separately from the original ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/UNDERdecoded/Gen2Recomped/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/UNDERdecoded/Gen2Recomped"
    },
    {
      "id": "project:urban-terror-browser",
      "slug": "urban-terror-browser",
      "title": "Urban Terror",
      "project": "Pieter’s ioUrbanTerror build",
      "canonicalUrl": "https://playable.wtf/games/urban-terror-browser/",
      "originals": [
        {
          "id": "urbanterror",
          "name": "Urban Terror",
          "relationship": "associated-with"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "Join Urban Terror multiplayer on maps including Casa, Turnpike, Abbey and Uptown.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "Urban Terror through ioUrbanTerror",
            "kind": "project",
            "paragraphs": [
              "Pieter's browser adaptation runs Urban Terror through ioUrbanTerror compiled to WebAssembly. The host credits FrozenSand for the original game and presents its own browser service as an unofficial, non-commercial project. It is a multiplayer entry point: enter a player name, then use Play to start.",
              "The launch page names Casa, Turnpike, Abbey and Uptown among its maps. That gives this host a broader stated selection than a browser demonstration built around a single arena. These are the maps the service advertises, rather than a promise that every Urban Terror community map is included."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "first-visit",
            "title": "Plan for the first data load",
            "kind": "practical",
            "paragraphs": [
              "The first visit downloads game data and caches it for subsequent sessions. Keep that initial transfer in mind if you are opening the game just before meeting other players. Later startup depends on the cache still being available in the same browser profile.",
              "The host recommends desktop Chrome. That is the clearest supported starting point for this particular browser build; the launch page does not present a touch-control setup. Give the game time to load after choosing your name, then use its own menus for the available session choices."
            ],
            "sourceIds": [
              "host"
            ]
          }
        ],
        "sources": [
          {
            "id": "host",
            "label": "Pieter · Urban Terror browser launcher",
            "url": "https://ut.pieter.com/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://ut.pieter.com"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        }
      },
      "facts": {
        "setup": {
          "answer": "Enter a player name and select Play, then wait for the initial game-data download.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://ut.pieter.com"
        },
        "devices": {
          "answer": "The host recommends a desktop computer and Chrome.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://ut.pieter.com"
        },
        "multiplayer": {
          "answer": "This browser route is an online Urban Terror multiplayer client.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://ut.pieter.com"
        },
        "issues": {
          "answer": "Game data downloads on the first launch and is cached afterward, according to the host.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://ut.pieter.com"
        },
        "scope": {
          "answer": "The host lists Casa, Turnpike, Abbey and Uptown among its multiplayer maps.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://ut.pieter.com"
        }
      },
      "credits": [],
      "sourceUrl": "https://ut.pieter.com"
    },
    {
      "id": "project:vcmi-vcmi",
      "slug": "vcmi-vcmi",
      "title": "Heroes of Might and Magic III",
      "project": "VCMI",
      "canonicalUrl": "https://playable.wtf/games/vcmi-vcmi/",
      "originals": [
        {
          "id": "heroesofmightandmagiciii",
          "name": "Heroes of Might and Magic III",
          "relationship": "reimplementation-of"
        }
      ],
      "kind": "Engine recreation",
      "genre": "Strategy",
      "summary": "A native Heroes III engine recreation with a launcher, map editor and mod support.",
      "editorial": {
        "sections": [
          {
            "id": "engine",
            "title": "A Heroes III engine with room for extensions",
            "kind": "project",
            "paragraphs": [
              "VCMI recreates the Heroes of Might and Magic III engine and gives it an expandable platform for maps, campaigns and mods. Its launcher organizes the installation, and the project includes a map editor and documented mod formats. The original game data still supplies the familiar assets; VCMI is the engine around them, not a free replacement for buying the game.",
              "The interface work includes larger information displays, creature ability descriptions and touch-oriented elements. That makes it interesting both for returning desktop players and for people using one of the separately documented mobile builds. Follow the platform guide that matches the device rather than assuming desktop installation steps transfer directly to a phone."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "data-import",
            "title": "Import Complete or Shadow of Death data",
            "kind": "practical",
            "paragraphs": [
              "The Windows launcher accepts a supported Heroes III installation or the GOG offline backup installer. For the latter, keep both the EXE and matching BIN file; selecting only a downloaded executable without its data partner is not the complete input. The launcher can extract the required files itself.",
              "If an existing Complete or Shadow of Death installation is not detected, the Windows guide identifies Data, Maps and Mp3 as the directories to copy into the VCMI user-data folder before scanning again. Recommended mods can be chosen after the basic data import, so establish the base installation before adding more variables."
            ],
            "sourceIds": [
              "install"
            ]
          },
          {
            "id": "long-games",
            "title": "Finish a campaign before changing major versions",
            "kind": "limitations",
            "paragraphs": [
              "Heroes games can represent many evenings of progress, and VCMI’s update warning matters: saves from a different major version are usually incompatible. Preserve the working version and its data, or finish an ongoing game before making a major upgrade. Daily builds are available for testing but are not guaranteed stable.",
              "On Windows, imported data, mods, saves and settings normally live under Documents/My Games/vcmi. Advanced directory overrides require restarting the application and moving existing data where appropriate. Reinstalling the program and relocating its user data are separate operations; keep the latter intact when maintaining a long-running game."
            ],
            "sourceIds": [
              "project",
              "install"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "VCMI · project and version guidance",
            "url": "https://github.com/vcmi/vcmi/blob/develop/docs/Readme.md"
          },
          {
            "id": "install",
            "label": "VCMI · Windows installation and data locations",
            "url": "https://github.com/vcmi/vcmi/blob/develop/docs/players/Installation_Windows.md"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "released",
        "route": {
          "kind": "download",
          "url": "https://github.com/vcmi/vcmi/releases/tag/1.7.5"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Heroes III Complete or Shadow of Death data is required. The Windows guide accepts the GOG offline installer pair (.exe and .bin), or Data, Maps and Mp3 from an existing installation.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/vcmi/vcmi/HEAD/docs/players/Installation_Windows.md"
        },
        "setup": {
          "answer": "Install VCMI, open its launcher, and import the supported GOG installer or scan the original game directories.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/vcmi/vcmi/HEAD/docs/players/Installation_Windows.md"
        },
        "devices": {
          "answer": "The project publishes Windows, macOS, Linux, Android and iOS packages.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/vcmi/vcmi"
        },
        "issues": {
          "answer": "Saves from different major VCMI versions are usually incompatible; finish or preserve ongoing games before upgrading.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/vcmi/vcmi"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/vcmi/vcmi"
    },
    {
      "id": "project:vyanhursky-defjamffny-recomp",
      "slug": "vyanhursky-defjamffny-recomp",
      "title": "Def Jam: Fight for NY",
      "project": "DefJamFFNY Recomp",
      "canonicalUrl": "https://playable.wtf/games/vyanhursky-defjamffny-recomp/",
      "originals": [
        {
          "id": "defjamfightforny",
          "name": "Def Jam: Fight for NY",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Fighting",
      "summary": "The Xbox fighter brought to Windows, macOS and Linux.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original game: the venue is part of the fight",
            "kind": "background",
            "paragraphs": [
              "Fight for NY blends wrestling, fighting-game attacks and beat-’em-up spectacle in crowded underground venues. Position matters because walls, objects and spectators become part of your attack: push an opponent into the crowd and onlookers can intervene, or find an improvised weapon around the arena. Learning the surroundings gives you more choices than trading blows in the centre.",
              "Its original Story mode follows a fighter you create through a struggle between D-Mob and Crow. Character customization and the succession of fight clubs give the solo game a different rhythm from a quick match with friends. This is the original game’s premise; the recompilation’s tested Story coverage is described below."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "An Xbox fight night on modern hardware",
            "kind": "project",
            "paragraphs": [
              "DefJamFFNY Recomp brings the original Xbox version to Windows, Apple Silicon Macs and Linux, including a native Linux build for Steam Deck. Its appeal is a sharper, more adjustable presentation of the existing fights, rather than a replacement roster or a new fighting system. The maintainer describes working menus and fights, plus tested Story routes through the introduction, character creator, crib and gym; that is a narrower claim than every possible Story route being finished.",
              "Local matches support up to four players, using gamepads and a keyboard player. There is no network multiplayer. For a room of friends, that makes controller setup and the local screen the relevant preparation, rather than accounts or a server browser."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "presentation",
            "title": "Choose fidelity or a wider arena",
            "kind": "project",
            "paragraphs": [
              "Original 4:3 framing remains available alongside beta 16:9 and 16:10 widescreen. The wider view reveals more of the venue while keeping fighters and interface elements in proportion. Internal resolution can be raised from 1× to 4×, and setup can generate optional HD textures from your own dump. Higher settings increase the work for your machine; the project targets 60-fps play rather than promising a fixed result on every device.",
              "Texture packs are a released feature. New fighters, stages and broader gameplay modifications are still proposals, so this is best chosen for playing and visually customizing the existing Xbox game."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "setup",
            "title": "Prepare your dump and input",
            "kind": "practical",
            "paragraphs": [
              "Choose the installer for your platform and supply a supported USA Xbox dump. PS2 and GameCube copies are not interchangeable. Setup validates the files and builds locally, with separate installation and data folders; HD generation adds time and disk use. Profiles, settings and generated textures stay in the data folder through repairs and updates.",
              "Configure controls in the launcher before starting a fight. Gamepad remapping, hot-plugging and rumble are supported, and keyboard or mouse buttons can be bound to actions. F1 opens the settings overlay during play, but the overlay does not pause the fight. Steam Deck audio distortion and Story tutorial performance remain known problem areas, so check the current issue notes before committing to a longer session."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "DefJamFFNY Recomp · project documentation",
            "url": "https://github.com/vyanhursky/DefJamFFNY-recomp"
          },
          {
            "id": "original",
            "label": "Josh Holmes · original game designer diary",
            "url": "https://www.gamespot.com/articles/def-jam-fight-for-ny-designer-diary-1/1100-6107602/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/vyanhursky/DefJamFFNY-recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own supported USA Xbox dump.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/vyanhursky/DefJamFFNY-recomp"
        },
        "setup": {
          "answer": "Use the setup workflow that validates your dump and builds the required local data.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/vyanhursky/DefJamFFNY-recomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/vyanhursky/DefJamFFNY-recomp"
    },
    {
      "id": "project:wad-commander-v1",
      "slug": "wad-commander-v1",
      "title": "Doom / Doom II / Freedoom",
      "project": "WAD Commander v1",
      "canonicalUrl": "https://playable.wtf/games/wad-commander-v1/",
      "originals": [
        {
          "id": "doom",
          "name": "Doom",
          "relationship": "port-of"
        },
        {
          "id": "doomii",
          "name": "Doom II",
          "relationship": "port-of"
        },
        {
          "id": "freedoomphase1",
          "name": "Freedoom: Phase 1",
          "relationship": "port-of"
        },
        {
          "id": "freedoomphase2",
          "name": "Freedoom: Phase 2",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source port",
      "genre": "Shooter",
      "summary": "Load owned Doom WADs, or start with Doom shareware and Freedoom in the live v1 browser client.",
      "editorial": {
        "sections": [
          {
            "id": "games",
            "title": "Doom data and a free alternative",
            "kind": "background",
            "paragraphs": [
              "Doom and Doom II separate their engine from the WAD files that contain levels, graphics, music and other game content. That separation is why a launcher can offer several adventures without becoming a different engine each time. A base IWAD supplies the game; a patch WAD changes or extends it.",
              "Freedoom provides an alternative set of freely licensed content for Doom-compatible engines, with its own artwork and levels. It is not the retail Doom campaign. Choosing it lets you begin with a complete free content set, while an owned Doom IWAD is the appropriate basis for additions that depend on that game's assets."
            ],
            "sourceIds": [
              "help",
              "freedoom"
            ]
          },
          {
            "id": "this-version",
            "title": "A launcher for vanilla-compatible WADs",
            "kind": "project",
            "paragraphs": [
              "WAD Commander v1 offers Doom shareware and Freedoom choices, plus a way to bring your own WADs and DeHackEd patches. Its stated scope is Doom, Doom II, their expansions and community content compatible with the vanilla games. A mod requiring another engine's extensions is a different requirement; a .wad filename alone does not establish compatibility."
            ],
            "sourceIds": [
              "help"
            ]
          },
          {
            "id": "playing",
            "title": "Input changes between desktop and touch",
            "kind": "practical",
            "paragraphs": [
              "On desktop, start with the original game's key layout and use fullscreen for mouse control. The help also supports controllers recognised by the browser and operating system. On touchscreens, the play area handles movement and side buttons provide actions: hold Use to strafe, but double-tap it to operate a door or switch. That distinction is easy to miss when starting on a phone."
            ],
            "sourceIds": [
              "help"
            ]
          },
          {
            "id": "saves",
            "title": "Return with the same set of files",
            "kind": "practical",
            "paragraphs": [
              "The launcher retains recent files and associates saves with the selected WAD and patch combination. Reopen the same combination, in the same order, when continuing. This entry is specifically the v1 host; features advertised by a later WAD Commander release do not automatically apply here."
            ],
            "sourceIds": [
              "help"
            ]
          }
        ],
        "sources": [
          {
            "id": "help",
            "label": "WAD Commander v1 · built-in help and save handling",
            "url": "https://v1.wadcmd.com/src.f5a9bab8.js"
          },
          {
            "id": "freedoom",
            "label": "Freedoom · project purpose and content",
            "url": "https://freedoom.github.io/"
          }
        ]
      },
      "families": [
        {
          "id": "doom",
          "title": "Doom",
          "indexUrl": "https://playable.wtf/families/#family-doom",
          "guideUrl": "https://playable.wtf/guides/doom-quake-browser-versions/",
          "choices": [
            {
              "slug": "wad-commander-v1",
              "label": "Classic Doom in a browser",
              "reason": "Choose owned WADs, shareware or Freedoom, with a documented touch layout.",
              "canonicalUrl": "https://playable.wtf/games/wad-commander-v1/"
            },
            {
              "slug": "chocolate-doom-chocolate-doom",
              "label": "Keep the original DOS behavior",
              "reason": "A native port for compatible classic content, old demos and saves.",
              "canonicalUrl": "https://playable.wtf/games/chocolate-doom-chocolate-doom/"
            },
            {
              "slug": "doom-3-browser",
              "label": "Try the Doom 3 demo",
              "reason": "A desktop browser route into the later game without a retail-data setup.",
              "canonicalUrl": "https://playable.wtf/games/doom-3-browser/"
            },
            {
              "slug": "dhewm-dhewm3",
              "label": "Play owned original Doom 3",
              "reason": "Use original 1.3.1 data in a native port; BFG Edition files do not fit.",
              "canonicalUrl": "https://playable.wtf/games/dhewm-dhewm3/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://v1.wadcmd.com/"
        }
      },
      "fileRequirement": "demo-or-own-files",
      "capabilities": {
        "mobile": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The v1 welcome screen offers Doom shareware and Freedoom Phase 1 or Phase 2. Full Doom/Doom II and most community PWADs require a compatible retail IWAD from a copy you own; the shareware option does not unlock the full retail game.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://v1.wadcmd.com/src.f5a9bab8.js"
        },
        "setup": {
          "answer": "Use a built-in shareware/Freedoom link or upload compatible .wad/.deh files, select the files you want to load, then launch the engine.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://v1.wadcmd.com/src.f5a9bab8.js"
        },
        "devices": {
          "answer": "The v1 FAQ states support for modern Chrome, Firefox, Safari and Edge on desktop and mobile.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://v1.wadcmd.com/src.f5a9bab8.js"
        },
        "controls": {
          "answer": "On desktop, use the original game’s key layout; fullscreen enables mouse control. The v1 help also supports controllers recognised by the browser and operating system. Touch devices use the play area for movement and side buttons for actions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://v1.wadcmd.com/src.f5a9bab8.js"
        },
        "issues": {
          "answer": "The current main-domain page advertises v2 for November 2, 2026. Its expanded game list, multiplayer and other future features are not applied to the live v1 record.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://wadcmd.com/"
        },
        "scope": {
          "answer": "The v1 FAQ supports Doom, Doom II and vanilla-compatible community WADs. Heretic and Hexen are described as future plans, not supported games.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://v1.wadcmd.com/src.f5a9bab8.js"
        },
        "saves": {
          "answer": "The v1 client stores game saves in IndexedDB and associates them with the selected game files. Load the same WAD/patch files in the same order to recover that save set. Clearing site data removes those browser saves.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://v1.wadcmd.com/src.f5a9bab8.js"
        }
      },
      "credits": [],
      "sourceUrl": "https://v1.wadcmd.com/"
    },
    {
      "id": "project:weltendaemmerung-browser",
      "slug": "weltendaemmerung-browser",
      "title": "Weltendämmerung",
      "project": "Weltendämmerung web port",
      "canonicalUrl": "https://playable.wtf/games/weltendaemmerung-browser/",
      "originals": [
        {
          "id": "weltendammerung",
          "name": "Weltendämmerung",
          "relationship": "associated-with"
        }
      ],
      "kind": "Engine reimplementation",
      "genre": "Strategy",
      "summary": "A C64 strategy game reconstructed in TypeScript from reverse-engineering notes.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Two armies with different goals",
            "kind": "background",
            "paragraphs": [
              "Weltendämmerung is Dirk Maier’s fantasy strategy game for the Commodore 64. Two commanders lead asymmetric armies over an 80-by-40-tile map. The web project reconstructs the game from its original program and documented rules, making an obscure strategy design available through a mouse-driven browser interface and an English manual.",
              "It is a game about positioning within a fixed conflict. You are moving an existing army through terrain, arranging attacks and controlling gates. The different armies and separate phases make choosing when to advance as important as choosing where."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "turns",
            "title": "Read the phase before issuing an order",
            "kind": "practical",
            "paragraphs": [
              "Each round divides play into movement, attack and fortification. MOV lets units move orthogonally using terrain-dependent movement points; ATK allows one attack per unit, including diagonal targets in range. FOR changes gates at their fixed map positions. An order that makes sense in one phase may be unavailable in the next.",
              "Select with a click, deselect with a right-click and scroll with the arrow keys. End Turn advances the phase; the browser also binds Space to that action. Check the highlighted phase and selected unit statistics before advancing, especially while learning what each unit can reach."
            ],
            "sourceIds": [
              "manual",
              "controls"
            ]
          },
          {
            "id": "strategy",
            "title": "Survival and pursuit lead to different plans",
            "kind": "project",
            "paragraphs": [
              "Eldoin wins by keeping his commander alive until turn 15 or destroying all Dailor units. Dailor must kill that commander before the deadline. The defender can use gates and blocked terrain to delay an approach; the attacker needs to turn a numerical advantage into progress before time runs out.",
              "Flying units cross terrain cheaply, while warships are confined to rivers. Siege destruction of a gate is permanent at that location. These exceptions give individual units specific jobs and make the manual worth keeping open for a first game."
            ],
            "sourceIds": [
              "manual"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Weltendämmerung · reconstruction project",
            "url": "https://github.com/s-macke/weltendaemmerung"
          },
          {
            "id": "manual",
            "label": "Weltendämmerung · English manual",
            "url": "https://raw.githubusercontent.com/s-macke/weltendaemmerung/HEAD/manual/manual.md"
          },
          {
            "id": "controls",
            "label": "Weltendämmerung · browser controls",
            "url": "https://raw.githubusercontent.com/s-macke/weltendaemmerung/HEAD/web/src/screens/game/index.ts"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://s-macke.github.io/weltendaemmerung/"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "setup": {
          "answer": "Open the web port and use the linked English manual for movement, attack and fortification phases.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/s-macke/weltendaemmerung"
        },
        "controls": {
          "answer": "Use the mouse to select units and map actions. The End Turn button advances the turn phase; Space is its keyboard shortcut.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/s-macke/weltendaemmerung/HEAD/web/src/screens/game/index.ts"
        },
        "multiplayer": {
          "answer": "Two opposing commanders take turns; online play is not established.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/s-macke/weltendaemmerung"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/s-macke/weltendaemmerung"
    },
    {
      "id": "project:wipeout-rewrite-browser",
      "slug": "wipeout-rewrite-browser",
      "title": "wipEout",
      "project": "PhobosLab wipEout Rewrite",
      "canonicalUrl": "https://playable.wtf/games/wipeout-rewrite-browser/",
      "originals": [
        {
          "id": "wipeout",
          "name": "wipEout",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser source rewrite",
      "genre": "Racing",
      "summary": "The 1995 anti-gravity racer rewritten for WASM and WebGL, with full and smaller hosted downloads.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Speed, weapons and two airbrakes",
            "kind": "background",
            "paragraphs": [
              "The original 1995 wipEout is a racing game about steering an armed craft at speed, with separate left and right airbrakes as well as thrust. The handling asks for more than holding the accelerator: controlling the craft through a bend and deciding when to use a weapon are part of the challenge."
            ],
            "sourceIds": [
              "article",
              "host"
            ]
          },
          {
            "id": "this-version",
            "title": "The 1995 racer, extensively rewritten",
            "kind": "project",
            "paragraphs": [
              "PhobosLab's wipEout Rewrite revisits the original PlayStation-era game with a new renderer, menus and platform layer. It retains the original game's data and racing structure while replacing substantial parts of the program around them.",
              "The author also changed the physics calculations to accommodate variable frame times. Although the aim was to retain the feel, the development account acknowledges that behaviour can differ from the original. This is a substantial rewrite, not a claim of a perfectly identical PlayStation simulation."
            ],
            "sourceIds": [
              "project",
              "article",
              "host"
            ]
          },
          {
            "id": "download",
            "title": "Choose the music before the download",
            "kind": "practical",
            "paragraphs": [
              "The launcher has Full and Minimal downloads. Full includes the introduction and music and is listed at roughly 144 MB; Minimal omits those audiovisual extras and is listed around 11 MB. Choose based on the connection and the experience you want, rather than assuming the smaller option is a different race mode.",
              "Use the arrows to steer, X for thrust, Z to fire and C/V for the two airbrakes. A changes the view. The launcher displays those bindings beside its fullscreen control, so you can check them before the race rather than searching through a generic browser-game guide."
            ],
            "sourceIds": [
              "host"
            ]
          },
          {
            "id": "limits",
            "title": "A few original effects remain unfinished",
            "kind": "limitations",
            "paragraphs": [
              "The repository still labels the rewrite as work in progress. It lists missing game-end animations and environmental audio reverb, and notes collision issues at track junctions. These are concrete reasons to expect rough edges even when normal racing works.",
              "Controller support also depends on the build: the README assigns it to the SDL2 backend, while its WebAssembly instructions use Sokol. The keyboard controls shown on the hosted page are therefore the supported starting point here; native package capabilities should not be assumed for the web build."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "wipEout Rewrite · build and limitation notes",
            "url": "https://github.com/phoboslab/wipeout-rewrite"
          },
          {
            "id": "article",
            "label": "PhobosLab · Rewriting wipEout",
            "url": "https://phoboslab.org/log/2023/08/rewriting-wipeout"
          },
          {
            "id": "host",
            "label": "wipEout · hosted controls and download choices",
            "url": "https://phoboslab.org/wipegame/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "experimental",
        "route": {
          "kind": "play",
          "url": "https://phoboslab.org/wipegame/"
        }
      },
      "fileRequirement": "none",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unsupported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "The creator-hosted browser page offers a roughly 144 MB full download or an 11 MB minimal download without intro and music; it does not request a local game-file import. Building the source yourself requires separate game assets.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://phoboslab.org/wipegame/"
        },
        "setup": {
          "answer": "Choose the full or minimal browser download, wait for it to load, and use the displayed keyboard controls. The minimal option omits the intro and music rather than being a claim of a retail demo.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://phoboslab.org/wipegame/"
        },
        "devices": {
          "answer": "The creator provides a WASM/WebGL browser build. Exact browser-version and mobile compatibility are not established by the reviewed documentation.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/phoboslab/wipeout-rewrite/master/README.md"
        },
        "controls": {
          "answer": "The launch page shows arrow-key steering, X for thrust, Z to shoot, C/V for air brakes and A to change view. The documented Sokol WebAssembly backend does not support game controllers.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/phoboslab/wipeout-rewrite/master/README.md"
        },
        "issues": {
          "answer": "The project remains work in progress. The README lists missing game-end animations and audio reverb behavior. Hosted files and source availability are not a rights-holder endorsement or an independent compatibility test.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/phoboslab/wipeout-rewrite/master/README.md"
        },
        "scope": {
          "answer": "This project targets the 1995 wipEout game; it is not Wipeout XL/2097 or a later commercial remaster.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://phoboslab.org/log/2023/08/rewriting-wipeout"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/phoboslab/wipeout-rewrite"
    },
    {
      "id": "project:wwf-no-mercy-quest",
      "slug": "wwf-no-mercy-quest",
      "title": "WWF No Mercy",
      "project": "No Mercy for Meta Quest 3",
      "canonicalUrl": "https://playable.wtf/games/wwf-no-mercy-quest/",
      "originals": [
        {
          "id": "wwfnomercy",
          "name": "WWF No Mercy",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Sports",
      "summary": "The N64 wrestling game adapted for standalone Meta Quest 3.",
      "editorial": {
        "sections": [
          {
            "id": "quest-version",
            "title": "The N64 ring in a standalone headset",
            "kind": "project",
            "paragraphs": [
              "This Quest adaptation builds on No Mercy Recompiled, N64Recomp and RT64 to run WWF No Mercy on Meta Quest 3. Its defining difference from a desktop build is the immersive headset view and a mapping of wrestling actions to the Quest controllers. It remains a game controlled through buttons and sticks; the project’s instructions do not describe replacing grapples with tracked real-world wrestling motions.",
              "The creator targets a 60 FPS presentation, with intermittent screen stretching and camera snapping listed as known bugs. Those camera issues are particularly relevant to a headset experience, so they belong in the decision to try this early adaptation."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "first-match",
            "title": "Learn the controller mapping before entering the ring",
            "kind": "practical",
            "paragraphs": [
              "The left stick moves the wrestler and the right stick taunts. A grapples, B strikes, X changes the focused opponent and Y handles actions such as flipping a downed wrestler or picking up a weapon. Left trigger blocks; right trigger enters or leaves the ring and requires a full pull.",
              "Left grip evades and becomes the pin action when you are at the opponent’s head. Right grip runs. Clicking either stick switches that wrestler between player and CPU control, while the left menu button pauses and the Meta button recenters the view. Those less obvious bindings are worth learning before an active match."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "install-and-rom",
            "title": "Select the correct revision in the app",
            "kind": "practical",
            "paragraphs": [
              "Install the project’s APK using its Quest installation instructions, then select your own North American version 1.0 ROM from the main menu. The application loads assets from that copy; a separate extraction process or source build is not required for the documented package.",
              "Meta Quest 3 is the stated hardware target. This release should not be treated as a browser game or as proof of support for every headset, ROM region or revision. Keep the desktop No Mercy project and this hardware adaptation distinct when choosing a download."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "No Mercy for Meta Quest 3 · project documentation",
            "url": "https://github.com/VistaLargaGames/WWF-No-Mercy-Quest-3-Standalone-"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/VistaLargaGames/WWF-No-Mercy-Quest-3-Standalone-/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own North American version 1.0 WWF No Mercy ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/VistaLargaGames/WWF-No-Mercy-Quest-3-Standalone-"
        },
        "setup": {
          "answer": "Follow the original project’s Quest APK installation instructions, then select your ROM in its menu.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/VistaLargaGames/WWF-No-Mercy-Quest-3-Standalone-"
        },
        "devices": {
          "answer": "Meta Quest 3 is the documented target.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/VistaLargaGames/WWF-No-Mercy-Quest-3-Standalone-"
        },
        "controls": {
          "answer": "Left stick moves; A grapples, B strikes, and the right stick taunts. Full Quest mappings are in the README.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/VistaLargaGames/WWF-No-Mercy-Quest-3-Standalone-"
        },
        "issues": {
          "answer": "The creator lists intermittent screen stretching and camera snapping.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/VistaLargaGames/WWF-No-Mercy-Quest-3-Standalone-"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/VistaLargaGames/WWF-No-Mercy-Quest-3-Standalone-"
    },
    {
      "id": "project:xcom-ufo-defense-web",
      "slug": "xcom-ufo-defense-web",
      "title": "X-COM: UFO Defense",
      "project": "OpenXcomWASM",
      "canonicalUrl": "https://playable.wtf/games/xcom-ufo-defense-web/",
      "originals": [
        {
          "id": "xcomufodefense",
          "name": "X-COM: UFO Defense",
          "relationship": "port-of"
        }
      ],
      "kind": "Browser engine remake",
      "genre": "Strategy",
      "summary": "OpenXcom’s alien-defense campaign with local game files, persistent saves and offline caching.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "Global defence and close tactical decisions",
            "kind": "background",
            "paragraphs": [
              "X-COM: UFO Defense combines the management of an anti-alien organisation with tactical missions at landing and crash sites. Researching alien technology and manufacturing equipment connects those missions to the larger defence effort. A recovered item or successful operation can change what your organisation can field next.",
              "The appeal is the relationship between those scales. You are not simply winning a sequence of unrelated fights: the broader campaign gives the tactical decisions a continuing purpose. This entry concerns the original UFO Defense data set."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "this-version",
            "title": "OpenXcom in a browser, with offline caching",
            "kind": "project",
            "paragraphs": [
              "OpenXcomWASM compiles the OpenXcom engine for the web. It stores imported game data and saves locally and caches its static files for offline play after the first visit. The creator documents periodic save synchronisation to browser storage, along with export and import for transferring progress.",
              "The game data is separate from the engine. Supply the UFO folder from your own copy; look for subfolders such as GEODATA, GEOGRAPH, MAPS and SOUND. Selecting that actual data directory is more useful than selecting a store launcher or shortcut."
            ],
            "sourceIds": [
              "project",
              "launcher"
            ]
          },
          {
            "id": "saves",
            "title": "Export before importing or resetting",
            "kind": "practical",
            "paragraphs": [
              "The gear menu can export saves and import ZIP archives or individual .sav files. An imported save overwrites an existing one with the same name, so export your current set first if you want to preserve it. You can also restore a backup before starting the engine.",
              "Reset All Data removes both the imported game files and the saved campaign. It is a fresh-install action, not merely a graphics reset. Keep an external save archive and the original game installation before using it."
            ],
            "sourceIds": [
              "launcher"
            ]
          },
          {
            "id": "playing",
            "title": "Give the desktop interface room",
            "kind": "practical",
            "paragraphs": [
              "The host supports current desktop browsers and recommends a mouse. This is OpenXcom's existing interface rather than a redesigned touchscreen campaign map, so a desktop is the clearer starting point for learning its controls. Once the files have been cached, offline access is useful, but browser storage still needs to remain intact."
            ],
            "sourceIds": [
              "host",
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "2K · X-COM: UFO Defense",
            "url": "https://store.steampowered.com/app/7760/"
          },
          {
            "id": "project",
            "label": "OpenXcomWASM · engine and storage documentation",
            "url": "https://github.com/mrmrcoleman/OpenXcomWASM"
          },
          {
            "id": "launcher",
            "label": "OpenXcomWASM · file and save manager",
            "url": "https://playxcom.online/play.html"
          },
          {
            "id": "host",
            "label": "OpenXcomWASM · browser guidance",
            "url": "https://playxcom.online/"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "browser",
        "delivery": "browser-launch",
        "status": "released",
        "route": {
          "kind": "play",
          "url": "https://playxcom.online/play.html"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "limited",
          "basis": "creator-reported",
          "fact": "devices"
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Provide the UFO/XCOM data folder from your own X-COM: UFO Defense copy, containing folders such as GEODATA, GEOGRAPH, MAPS and SOUND.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://playxcom.online/play.html"
        },
        "setup": {
          "answer": "Drop or choose the game-data folder and select Install Game Data. The import stores files in the browser; no server upload is required.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://playxcom.online/play.html"
        },
        "devices": {
          "answer": "The host lists Chrome, Firefox, Edge and Safari. It recommends a desktop or laptop because X-COM expects mouse input; mobile is limited by that interface.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://playxcom.online/"
        },
        "controls": {
          "answer": "The original interface is mouse-oriented. The gear menu manages saved data and backup imports/exports.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://playxcom.online/"
        },
        "issues": {
          "answer": "Clearing browser site data removes the stored game files and saves. Export backups first.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://playxcom.online/"
        },
        "scope": {
          "answer": "Play X-COM: UFO Defense through OpenXcom. The hosted setup covers this game; Terror from the Deep is not included in this listing.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://playxcom.online/"
        },
        "saves": {
          "answer": "Saves persist in IndexedDB. Use the gear menu to export backups or import a ZIP or individual .sav files; importing a matching filename overwrites that save. Export before resetting all data, which removes both installed game assets and saves.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://playxcom.online/play.html"
        }
      },
      "credits": [
        {
          "name": "mrmrcoleman",
          "role": "port-author",
          "url": "https://github.com/mrmrcoleman/OpenXcomWASM",
          "evidence": "https://github.com/mrmrcoleman/OpenXcomWASM",
          "basis": "creator-reported"
        }
      ],
      "sourceUrl": "https://github.com/mrmrcoleman/OpenXcomWASM"
    },
    {
      "id": "project:ysrdevs-goldeneye-metal",
      "slug": "ysrdevs-goldeneye-metal",
      "title": "GoldenEye 007",
      "project": "GoldenEye Metal",
      "canonicalUrl": "https://playable.wtf/games/ysrdevs-goldeneye-metal/",
      "originals": [
        {
          "id": "goldeneye007",
          "name": "GoldenEye 007",
          "relationship": "associated-with"
        }
      ],
      "kind": "Native port",
      "genre": "Shooter",
      "summary": "GoldenEye on Apple silicon with Metal rendering and local split-screen.",
      "editorial": {
        "sections": [
          {
            "id": "this-version",
            "title": "GoldenEye’s campaign and couch multiplayer on Mac",
            "kind": "project",
            "paragraphs": [
              "GoldenEye Metal offers campaign play and two- to four-player local split-screen on Apple Silicon Macs. A key attraction is switching between the original and remastered graphics during play: F changes the view without choosing a separate game in the launcher. Keyboard and mouse can remain active alongside connected gamepads.",
              "The port uses a compatible Xbox-format game backup, rather than taking an N64 ROM. Its first-run importer accepts the supported backup archive, the contained LIVE/STFS package or an extracted folder with default.xex and the associated assets. It checks the revision before copying the data. Bring a backup you are legally authorized to use; the app does not supply it."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "input",
            "title": "Choose a layout for each player",
            "kind": "practical",
            "paragraphs": [
              "On the keyboard, WASD moves and the mouse aims; left click fires, right click aims, Space confirms and Shift goes back. Escape releases the cursor and opens host settings. The Controls page offers Modern, Classic and Southpaw layouts as well as individual remapping.",
              "USB and Bluetooth controllers include Xbox, DualShock 4 and DualSense support. Stable player ports are useful when setting up a local match: configure who occupies each slot before starting. The project describes local split-screen, so this page’s multiplayer option should not be read as a promise of online matchmaking."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "display-and-saves",
            "title": "Understand scaling and keep a save backup",
            "kind": "practical",
            "paragraphs": [
              "The release requires Apple Silicon and macOS 14 or later. Metal renders internally at 1280×720; Sharp, bilinear and MetalFX Spatial options scale that image to the display rather than increasing the internal resolution. Performance varies by Mac and mission, even when output scaling makes the picture look cleaner on a Retina screen.",
              "Manage Saves can export a portable .gesave backup, restore one or reset local progress. Restore and reset retain the previous data for immediate undo. After a session that fails to close cleanly, the launcher can start once in Safe Mode. Broader mission and hardware compatibility are still being refined."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "GoldenEye Metal · project documentation",
            "url": "https://github.com/ysrdevs/goldeneye-metal"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/ysrdevs/goldeneye-metal/releases"
        }
      },
      "fileRequirement": "unknown",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "multiplayer"
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "setup": {
          "answer": "Follow the macOS release’s launcher and data-import instructions.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/ysrdevs/goldeneye-metal"
        },
        "devices": {
          "answer": "Native Apple silicon Mac with Metal.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/ysrdevs/goldeneye-metal"
        },
        "controls": {
          "answer": "Keyboard/mouse and modern controllers are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/ysrdevs/goldeneye-metal"
        },
        "multiplayer": {
          "answer": "Up to four local split-screen players are documented.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/ysrdevs/goldeneye-metal"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/ysrdevs/goldeneye-metal"
    },
    {
      "id": "project:zelda-links-awakening-2019-lasrecomp",
      "slug": "zelda-links-awakening-2019-lasrecomp",
      "title": "The Legend of Zelda: Link’s Awakening (2019)",
      "project": "LAS Recomp",
      "canonicalUrl": "https://playable.wtf/games/zelda-links-awakening-2019-lasrecomp/",
      "originals": [
        {
          "id": "thelegendofzeldalinksawakening2019",
          "name": "The Legend of Zelda: Link's Awakening (2019)",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Action adventure",
      "summary": "Native Windows, Mac and Linux builds of the Switch remake, with ultrawide and randomizer options.",
      "editorial": {
        "sections": [
          {
            "id": "koholint",
            "title": "A compact island full of interlocking puzzles",
            "kind": "background",
            "paragraphs": [
              "Link’s Awakening places Link on Koholint Island, away from Hyrule, with the mystery of the Wind Fish at the center of the journey. Exploring the island and its trap-filled dungeons means learning how items, routes and characters fit together. The Switch remake gives that adventure a new visual presentation and rearranged music while retaining its strange setting.",
              "This is the 2019 remake, not the original Game Boy version or a browser conversion of it. That identity determines both the required game files and the visual world you can expect."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "vanilla-or-shuffle",
            "title": "Return to the story or reshuffle the route",
            "kind": "project",
            "paragraphs": [
              "LAS Recomp offers vanilla play and an integrated randomizer. Seeds can rearrange items, trade-quest rewards, entrances and other selected elements, with separate saves for each seed. Those options change the problem of finding a route through a familiar island, making them a different choice from an ordinary first playthrough.",
              "Room-shuffle modes are especially experimental, and the creator warns that seeds can be unsolvable. Begin with vanilla or a restrained set of randomizer options if you want a clearer progression path. A seed identifier makes a setup reproducible; it does not certify that every generated world is completable."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "desktop-setup",
            "title": "Prepare the exact game version and familiar controls",
            "kind": "practical",
            "paragraphs": [
              "The desktop packages require your own extracted Switch v1.0.0 files and perform game-code setup locally. No game assets or Nintendo fonts are bundled. Replacement fonts are available by default, with optional originals supplied from your own hardware.",
              "Keyboard and controller controls are remappable, and F1 or Minus plus Plus opens the overlay. Keep a keyboard or mouse available because the README lists a controller problem on the start screen. Wider aspect ratios reveal more of the island but still have known lighting and shadow problems; the original 16:9 framing remains an option. The ARM Linux build is experimental, separate from the established desktop targets."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "original",
            "label": "Nintendo · Link’s Awakening on Switch",
            "url": "https://www.nintendo.com/us/store/products/the-legend-of-zelda-links-awakening-switch/"
          },
          {
            "id": "project",
            "label": "LAS Recomp · features, setup and known issues",
            "url": "https://github.com/peiikai/LASRecomp"
          }
        ]
      },
      "families": [
        {
          "id": "zelda",
          "title": "Zelda adventures",
          "indexUrl": "https://playable.wtf/families/#family-zelda",
          "guideUrl": "https://playable.wtf/guides/zelda-game-versions/",
          "choices": [
            {
              "slug": "harbourmasters-shipwright",
              "label": "Ocarina of Time",
              "reason": "Ship of Harkinian offers native packages with ROM validation and configurable controls.",
              "canonicalUrl": "https://playable.wtf/games/harbourmasters-shipwright/"
            },
            {
              "slug": "zelda64recomp-zelda64recomp",
              "label": "Majora’s Mask",
              "reason": "Zelda64Recomp imports the North American ROM and adds optional dual-stick camera and autosave.",
              "canonicalUrl": "https://playable.wtf/games/zelda64recomp-zelda64recomp/"
            },
            {
              "slug": "zelda-links-awakening-2019-lasrecomp",
              "label": "The Switch Link’s Awakening",
              "reason": "LAS Recomp offers vanilla or randomizer play from your own version 1.0.0 files, with beta limitations.",
              "canonicalUrl": "https://playable.wtf/games/zelda-links-awakening-2019-lasrecomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-download",
        "status": "beta",
        "route": {
          "kind": "download",
          "url": "https://github.com/peiikai/LASRecomp/releases/tag/beta_4"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "supported",
          "basis": "creator-reported",
          "fact": "controls"
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own extracted Link’s Awakening Nintendo Switch game files, version 1.0.0. No game code, artwork, assets or Nintendo fonts are included. Optional original fonts must also come from your own hardware.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/peiikai/LASRecomp/HEAD/README.md"
        },
        "setup": {
          "answer": "Choose the package for your operating system from the beta_4 release, open the app and select your extracted v1.0.0 game folder. First launch performs local setup and recompilation. Use vanilla mode or configure a randomizer seed after setup.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/peiikai/LASRecomp/HEAD/README.md"
        },
        "devices": {
          "answer": "Apple silicon Mac with macOS 15+ and Metal; Windows 10+ x86-64 with AVX2 and Vulkan 1.3; Linux x86-64 with AVX2 and Vulkan 1.3. The Linux ARM64 package is experimental and was not tested on real hardware by the creator.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/peiikai/LASRecomp/HEAD/README.md"
        },
        "controls": {
          "answer": "Remappable keyboard and controller controls are documented. F1 or Minus + Plus opens the in-game overlay. The README still lists a start-screen controller issue; some setup may need keyboard or mouse.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/peiikai/LASRecomp/HEAD/README.md"
        },
        "issues": {
          "answer": "Beta software with known crashes, lighting and ultrawide rendering issues. Randomizer seeds can be unsolvable, especially with experimental room shuffle. Beta 4 also lists a bomb-refill labeling issue. Read release-specific fixes alongside the README rather than assuming every older issue remains.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://raw.githubusercontent.com/peiikai/LASRecomp/HEAD/README.md"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/peiikai/LASRecomp"
    },
    {
      "id": "project:zelda64recomp-zelda64recomp",
      "slug": "zelda64recomp-zelda64recomp",
      "title": "The Legend of Zelda: Majora’s Mask",
      "project": "Zelda64Recomp",
      "canonicalUrl": "https://playable.wtf/games/zelda64recomp-zelda64recomp/",
      "originals": [
        {
          "id": "thelegendofzeldamajorasmask",
          "name": "The Legend of Zelda: Majora's Mask",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "Adventure",
      "summary": "Majora’s Mask with RT64 rendering and a mod loader.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "The original game: learn a repeating world",
            "kind": "background",
            "paragraphs": [
              "Majora’s Mask sends Link through the same three days and nights repeatedly. Instead of treating time as scenery, the adventure makes it the structure for exploration and encounters with its characters. Learning the world across those repetitions gives the quest its distinctive rhythm. Masks add another layer to Link’s identity, including transformations such as the Goron form."
            ],
            "sourceIds": [
              "original",
              "masks"
            ]
          },
          {
            "id": "which-zelda",
            "title": "Majora’s Mask, with a modern presentation",
            "kind": "project",
            "paragraphs": [
              "Zelda64Recomp currently targets the North American N64 release of Majora’s Mask. Ocarina of Time is planned work, not a second game you can select today. The application loads assets from your own ROM, so you can start from a release download without compiling the program or extracting those assets in a separate tool.",
              "Its RT64 renderer supports higher frame rates and wide aspect ratios while retaining the original N64 effects. The frame-rate setting changes presentation rather than gameplay speed. For an experience closer to the console, you can keep the original frame rate; for a wide monitor, the HUD can remain within a centered 16:9 area."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "camera-and-aim",
            "title": "Camera and aiming choices",
            "kind": "practical",
            "paragraphs": [
              "The optional dual-analog mode puts camera control on the right stick. C-button mappings can remain there for playing the ocarina, but the project asks you to map those buttons elsewhere as well. That distinction keeps the camera option from consuming item controls you still need.",
              "Supported motion-sensing controllers can aim first-person items such as the bow with gyro input. Controller-mapping software may intercept those sensors, so the project recommends trying native controller support first. Steam Deck uses a separate route: configure its gyro as mouse input in Steam’s controller settings."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "progress-and-mods",
            "title": "Autosaves and changes you can choose",
            "kind": "practical",
            "paragraphs": [
              "Autosaving is designed around Majora’s Mask’s existing save system: the automatic save replaces the prior autosave or owl save. You can disable it if you prefer the original behavior. The project documents separate save directories for Windows, Linux and macOS, plus a portable.txt option that keeps saves, settings and mods beside the executable.",
              "The built-in mod menu accepts manually downloaded mods and texture packs. Drag a mod onto the window before starting the game or use Install Mods, then enable and configure it there. The listed randomizer is an optional mod, not the default adventure. Thunderstore’s separate mod manager is not supported."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "hardware-and-limits",
            "title": "Check the renderer requirements",
            "kind": "limitations",
            "paragraphs": [
              "The GPU must meet the documented Direct3D 12, Vulkan 1.2 or Metal requirements; x86-64 CPUs also need SSE4.1. Update graphics drivers before troubleshooting a startup crash. External frame-rate limiters and overlays can disrupt rendering, and very wide cutscenes may reveal animation quirks at the edges. The in-game frame-rate control is the appropriate first adjustment when investigating stutter."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "Zelda64Recomp · project documentation",
            "url": "https://github.com/Zelda64Recomp/Zelda64Recomp"
          },
          {
            "id": "original",
            "label": "Nintendo · Majora’s Mask",
            "url": "https://www.nintendo.com/en-gb/Games/Nintendo-64/The-Legend-of-Zelda-Majora-s-Mask-269525.html"
          },
          {
            "id": "masks",
            "label": "Nintendo · Link and the Goron Mask",
            "url": "https://www.nintendo.com/us/amiibo/detail/link-majoras-mask-amiibo-the-legend-of-zelda-series/"
          }
        ]
      },
      "families": [
        {
          "id": "zelda",
          "title": "Zelda adventures",
          "indexUrl": "https://playable.wtf/families/#family-zelda",
          "guideUrl": "https://playable.wtf/guides/zelda-game-versions/",
          "choices": [
            {
              "slug": "harbourmasters-shipwright",
              "label": "Ocarina of Time",
              "reason": "Ship of Harkinian offers native packages with ROM validation and configurable controls.",
              "canonicalUrl": "https://playable.wtf/games/harbourmasters-shipwright/"
            },
            {
              "slug": "zelda64recomp-zelda64recomp",
              "label": "Majora’s Mask",
              "reason": "Zelda64Recomp imports the North American ROM and adds optional dual-stick camera and autosave.",
              "canonicalUrl": "https://playable.wtf/games/zelda64recomp-zelda64recomp/"
            },
            {
              "slug": "zelda-links-awakening-2019-lasrecomp",
              "label": "The Switch Link’s Awakening",
              "reason": "LAS Recomp offers vanilla or randomizer play from your own version 1.0.0 files, with beta limitations.",
              "canonicalUrl": "https://playable.wtf/games/zelda-links-awakening-2019-lasrecomp/"
            }
          ]
        }
      ],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/Zelda64Recomp/Zelda64Recomp/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own North American Majora’s Mask ROM.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Zelda64Recomp/Zelda64Recomp"
        },
        "setup": {
          "answer": "Open the release and choose the ROM in the main menu; no separate asset extraction is required.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/Zelda64Recomp/Zelda64Recomp"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/Zelda64Recomp/Zelda64Recomp"
    },
    {
      "id": "project:zolaware-reblue",
      "slug": "zolaware-reblue",
      "title": "Blue Dragon",
      "project": "re:Blue",
      "canonicalUrl": "https://playable.wtf/games/zolaware-reblue/",
      "originals": [
        {
          "id": "bluedragon",
          "name": "Blue Dragon",
          "relationship": "associated-with"
        }
      ],
      "kind": "Static recompilation",
      "genre": "RPG",
      "summary": "Blue Dragon’s Xbox 360 program rebuilt for native execution.",
      "editorial": {
        "sections": [
          {
            "id": "the-game",
            "title": "A party whose shadows fight alongside them",
            "kind": "background",
            "paragraphs": [
              "Blue Dragon follows five young characters with the power to control shadow creatures that mirror their actions. The Xbox 360 RPG combines that premise with character designs by Akira Toriyama and music by Nobuo Uematsu. re:Blue brings the game to a native application while adding optional navigation, display and input conveniences around the original adventure."
            ],
            "sourceIds": [
              "original"
            ]
          },
          {
            "id": "adventure-options",
            "title": "Choose how much help exploration gives you",
            "kind": "project",
            "paragraphs": [
              "re:Blue’s additions include saving from the camp menu away from the original save points and a fuller area map with zoom, floor switching and a legend. Optional markers show remaining hidden items, chests and barriers, with counts that also reach the field compass. Those options can make a completion-focused run easier to navigate; leave them off if you prefer discovering things without the extra guidance.",
              "The application also provides a mod manager, separate interface and voice-language settings, and direct mouse interaction with menus. Keyboard bindings and controller prompts can be adjusted, while field of view and HUD fading let you tune how much of the screen the interface occupies."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "three-discs",
            "title": "Prepare all three discs before setup",
            "kind": "practical",
            "paragraphs": [
              "The installer needs all three disc images from your own Global US/EU release of Blue Dragon. Asia/Japan support is still listed as future work. The wizard verifies each disc, asks for an installation location and extracts the files before the first session.",
              "The program copies itself into the chosen installation folder and restarts there. Saves and settings then live under profiles/default, separate from the game subfolder and mods directory. Additional named profiles can keep different saves, settings, achievements and DLC toggles apart."
            ],
            "sourceIds": [
              "project"
            ]
          },
          {
            "id": "platforms-and-updates",
            "title": "Match the build to the machine",
            "kind": "practical",
            "paragraphs": [
              "The documented targets include Windows x86-64, Linux AMD64/ARM64 and Apple silicon macOS, with other graphics or architecture choices available through source builds. The minimum guidance calls for 8 GB RAM and about 15 GB of storage; higher resolution and antialiasing increase graphics-memory needs.",
              "To update, copy the newer build over the installation without deleting profiles or mods. The repair option reopens the installer to restore missing files, avoiding an unnecessary full setup. DLC and mods remain separate additions: the built-in manager can install a mod folder or ZIP, while official DLC still comes from your own content."
            ],
            "sourceIds": [
              "project"
            ]
          }
        ],
        "sources": [
          {
            "id": "project",
            "label": "re:Blue · project documentation",
            "url": "https://github.com/zolaware/reblue"
          },
          {
            "id": "original",
            "label": "Microsoft · Blue Dragon",
            "url": "https://www.xbox.com/en-US/games/store/blue-dragon/c2hgk9j5367f"
          }
        ]
      },
      "families": [],
      "availability": {
        "runtime": "native",
        "delivery": "native-setup",
        "status": "released",
        "route": {
          "kind": "setup",
          "url": "https://github.com/zolaware/reblue/releases"
        }
      },
      "fileRequirement": "own-files",
      "capabilities": {
        "mobile": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "controller": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayer": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerLocal": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        },
        "multiplayerOnline": {
          "state": "unknown",
          "basis": "unknown",
          "fact": null
        }
      },
      "facts": {
        "files": {
          "answer": "Your own Global (US/EU) Blue Dragon disc images.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/zolaware/reblue"
        },
        "setup": {
          "answer": "Follow the current release’s disc-import workflow and region checks.",
          "steps": [],
          "basis": "creator-reported",
          "sourceUrl": "https://github.com/zolaware/reblue"
        }
      },
      "credits": [],
      "sourceUrl": "https://github.com/zolaware/reblue"
    }
  ],
  "guides": [
    {
      "id": "guide:halo-ce-browser-versions",
      "title": "Halo CE in your browser: which version should you choose?",
      "canonicalUrl": "https://playable.wtf/guides/halo-ce-browser-versions/",
      "description": "Choose a Halo CE browser host or native OpenCE release by desktop input, touch controls, Xbox disc edition, campaign, multiplayer and save handling.",
      "created": "2026-10-16",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "Mitchell Hynes · web build and controls",
          "url": "https://mitchellhynes.com/halo/halo.html"
        },
        {
          "label": "HCEMobile · game data and features",
          "url": "https://hcemobile.com/"
        },
        {
          "label": "HCEMobile · getting started",
          "url": "https://hcemobile.com/guide/"
        },
        {
          "label": "OpenCE · releases and disc import",
          "url": "https://github.com/OpenCommunityEdition/OpenCE#readme"
        },
        {
          "label": "OpenCE · local campaign and desktop controls",
          "url": "https://github.com/OpenCommunityEdition/OpenCE/blob/HEAD/port/linux/README.md"
        },
        {
          "label": "Halo decompilation · exact development target",
          "url": "https://github.com/punpckhdq/halo"
        }
      ]
    },
    {
      "id": "guide:diablo-browser-demo-game-files",
      "title": "Diablo browser versions: choose a demo, retail game or Hellfire",
      "canonicalUrl": "https://playable.wtf/guides/diablo-browser-demo-game-files/",
      "description": "Compare d07RiV DiabloWeb, JohnImril Diablo Web and native DevilutionX by demo content, mouse or controller input, retail MPQs, saves and Hellfire.",
      "created": "2026-10-16",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "d07RiV · DiabloWeb README",
          "url": "https://github.com/d07RiV/diabloweb#readme"
        },
        {
          "label": "JohnImril · playing and saving",
          "url": "https://github.com/JohnImril/diablo_web#playing-and-saving"
        },
        {
          "label": "DevilutionX · installation and Hellfire files",
          "url": "https://github.com/diasurgical/DevilutionX#how-to-install"
        },
        {
          "label": "DiabloWeb engine · two-floor shareware boundary",
          "url": "https://github.com/d07RiV/devilution/blob/a702a42b2f87880abfcaa2654b5ef701cf0b684f/Source/player.cpp#L1973-L1984"
        },
        {
          "label": "DiabloWeb engine · shareware classes",
          "url": "https://github.com/d07RiV/devilution/blob/a702a42b2f87880abfcaa2654b5ef701cf0b684f/Source/ui/workflow.cpp#L78-L90"
        },
        {
          "label": "DevilutionX · controller scheme",
          "url": "https://github.com/diasurgical/DevilutionX/wiki/Game-Controller-Scheme"
        },
        {
          "label": "DevilutionX · platform installation",
          "url": "https://github.com/diasurgical/DevilutionX/blob/master/docs/installing.md"
        },
        {
          "label": "Diablo II: Resurrected Mobile · separate game requirements",
          "url": "https://github.com/jhaizhou-ops/d2r-mobile"
        }
      ]
    },
    {
      "id": "guide:skate-browser-vs-native-ports",
      "title": "Skate 3 versions: browser fan game, native ports or Rust rewrite?",
      "canonicalUrl": "https://playable.wtf/guides/skate-browser-vs-native-ports/",
      "description": "Choose a Skate 3 project by disc preparation, desktop or phone installation, controller input, career expectations, renderer limits and save handling.",
      "created": "2026-10-16",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "aaddpp · browser fan game",
          "url": "https://skate.aaddpp.lol/"
        },
        {
          "label": "Skate3Recomp · installation and limitations",
          "url": "https://github.com/mchughalex/skate3recomp#readme"
        },
        {
          "label": "Skate 3 Android · game data setup",
          "url": "https://github.com/andrewnakas/skate3-android#getting-the-game-onto-the-phone"
        },
        {
          "label": "Skate 3 iOS · supplying the game",
          "url": "https://github.com/andrewnakas/skate3-ios-setup#supplying-the-game"
        },
        {
          "label": "SK8-ENGINE · current Rust setup",
          "url": "https://github.com/SK8-ENGINE/skate-3-rust-engine#readme"
        },
        {
          "label": "aaddpp · prepared-data connection instructions",
          "url": "https://skate.aaddpp.lol/frontend.js?v=335e6b4e7f6b"
        },
        {
          "label": "SkateGM · Garry’s Mod requirements",
          "url": "https://github.com/The-Schwilliam/SkateGM"
        }
      ]
    },
    {
      "id": "guide:counter-strike-16-browser-setup",
      "title": "Counter-Strike in a browser: 1.6 matches, bunnyhop or surf?",
      "canonicalUrl": "https://playable.wtf/guides/counter-strike-16-browser-setup/",
      "description": "Choose CSJS or WebXash for Counter-Strike 1.6, or bunnyhop.lol and Surfd for movement: setup, desktop controls, phone limits, voice and records.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "CSJS · server browser and current client defaults",
          "url": "https://csjs.live/"
        },
        {
          "label": "CSJS · mobile controls",
          "url": "https://csjs.live/play-counter-strike-on-your-phone"
        },
        {
          "label": "CSJS · voice chat",
          "url": "https://csjs.live/counter-strike-voice-chat"
        },
        {
          "label": "CSJS · server hosting",
          "url": "https://csjs.live/host-a-server"
        },
        {
          "label": "WebXash · files and multiplayer",
          "url": "https://github.com/x8BitRain/webXash#readme"
        },
        {
          "label": "bunnyhop.lol · controls and movement styles",
          "url": "https://bunnyhop.lol/about"
        },
        {
          "label": "Surfd · surfing and practice",
          "url": "https://surfd.net/"
        },
        {
          "label": "Surfd · record storage",
          "url": "https://surfd.net/privacy.html"
        }
      ]
    },
    {
      "id": "guide:browser-game-saves-backups",
      "title": "Back up browser game saves and check the restored game",
      "canonicalUrl": "https://playable.wtf/guides/browser-game-saves-backups/",
      "description": "Export and reload Diablo characters and OpenTTD maps, restore WebXash saves, and preserve PrinceJS level links before changing browser profiles.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "MDN · browser storage and eviction",
          "url": "https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria"
        },
        {
          "label": "d07RiV · DiabloWeb client and save tools",
          "url": "https://d07riv.github.io/diabloweb/"
        },
        {
          "label": "JohnImril · save import and export",
          "url": "https://github.com/JohnImril/diablo_web#playing-and-saving"
        },
        {
          "label": "WebXash · save manager",
          "url": "https://github.com/x8BitRain/webXash#save-manager"
        },
        {
          "label": "PrinceJS · progress in URL parameters",
          "url": "https://github.com/oklemenz/PrinceJS#options"
        },
        {
          "label": "OpenTTD Online · project and assets",
          "url": "https://github.com/swords02/openttd-online"
        },
        {
          "label": "OpenTTD Online · browser host and save tools",
          "url": "https://openttdonline.com/play/"
        }
      ]
    },
    {
      "id": "guide:browser-game-controller-setup",
      "title": "How to use a controller with a browser game",
      "canonicalUrl": "https://playable.wtf/guides/browser-game-controller-setup/",
      "description": "Connect and activate a gamepad, choose a project with documented support, and check Halo CE and PrinceJS mappings before playing.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "MDN · using the Gamepad API",
          "url": "https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API"
        },
        {
          "label": "HCEMobile · controls",
          "url": "https://hcemobile.com/guide/"
        },
        {
          "label": "PrinceJS · controller mappings",
          "url": "https://github.com/oklemenz/PrinceJS#play-online"
        },
        {
          "label": "Stunts HD · controls",
          "url": "https://github.com/mr-finster/stunts-hd#controls"
        }
      ]
    },
    {
      "id": "guide:mobile-browser-games-setup",
      "title": "Browser games on a phone: touch controls, files and saves",
      "canonicalUrl": "https://playable.wtf/guides/mobile-browser-games-setup/",
      "description": "Choose a browser project with touch controls, prepare owned files and storage, and understand HCEMobile, CSJS, PrinceJS and Diablo limitations.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "HCEMobile · phone setup and problems",
          "url": "https://hcemobile.com/guide/"
        },
        {
          "label": "CSJS · phone play",
          "url": "https://csjs.live/play-counter-strike-on-your-phone"
        },
        {
          "label": "PrinceJS · mobile gestures",
          "url": "https://github.com/oklemenz/PrinceJS#play-mobile"
        },
        {
          "label": "Diablo Web · touch limitations",
          "url": "https://github.com/JohnImril/diablo_web#playing-and-saving"
        },
        {
          "label": "Arxwasm · lack of touch input",
          "url": "https://github.com/gabrielcuvillier/arxwasm#port-status"
        }
      ]
    },
    {
      "id": "guide:ports-decompilations-emulators-explained",
      "title": "Port, recompilation, decompilation or emulator: what can you actually play?",
      "canonicalUrl": "https://playable.wtf/guides/ports-decompilations-emulators-explained/",
      "description": "Understand browser ports, native recompilations, decompilation source, emulators, recreations and mashups, with real catalog examples and file requirements.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "Emscripten · porting code to the web",
          "url": "https://emscripten.org/docs/porting/guidelines/portability_guidelines.html"
        },
        {
          "label": "Halo CE · decompilation target and build",
          "url": "https://github.com/punpckhdq/halo#readme"
        },
        {
          "label": "Stunts HD · recompilation and runtime",
          "url": "https://github.com/mr-finster/stunts-hd#readme"
        },
        {
          "label": "LBA Remake · reimplementation goals",
          "url": "https://github.com/LBALab/lba2remake#readme"
        },
        {
          "label": "SMC64 · MCC mod identity",
          "url": "https://github.com/KodyJKing/smc64#readme"
        }
      ]
    },
    {
      "id": "guide:mush8-mario-kart-8-deluxe-apple",
      "title": "Mush8 brings Mario Kart 8 Deluxe to Apple devices: what setup involves",
      "canonicalUrl": "https://playable.wtf/guides/mush8-mario-kart-8-deluxe-apple/",
      "description": "Understand Mush8’s native Apple build, Mario Kart 8 Deluxe base and 4.0.1 update files, iOS signing, controller options and LAN-play limits.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "C22 · Mush8 requirements and features",
          "url": "https://github.com/c22dev/mush8#readme"
        },
        {
          "label": "Mush8 · build assistant and diagnostics",
          "url": "https://github.com/c22dev/mush8/blob/HEAD/build.sh"
        }
      ]
    },
    {
      "id": "guide:doom-quake-browser-versions",
      "title": "Doom in a browser or native port: WADs, demos and Doom 3",
      "canonicalUrl": "https://playable.wtf/guides/doom-quake-browser-versions/",
      "description": "Choose WAD Commander, Chocolate Doom, Silent Space Marine or a Doom 3 port by files, controls, multiplayer and save needs.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "WAD Commander v1 · launcher and help",
          "url": "https://v1.wadcmd.com/"
        },
        {
          "label": "doom.wasm · browser example and limits",
          "url": "https://github.com/jacobenget/doom.wasm"
        },
        {
          "label": "Cloudflare · Silent Space Marine multiplayer",
          "url": "https://blog.cloudflare.com/doom-multiplayer-workers/"
        },
        {
          "label": "Chocolate Doom · project and compatibility",
          "url": "https://github.com/chocolate-doom/chocolate-doom"
        },
        {
          "label": "D3Wasm · demo requirements and controls",
          "url": "https://www.continuation-labs.com/projects/d3wasm/"
        },
        {
          "label": "dhewm3 · original-game installation",
          "url": "https://dhewm3.org/#how-to-install"
        }
      ]
    },
    {
      "id": "guide:quake-browser-native-versions",
      "title": "Quake browser versions: campaign, QuakeWorld or Quake III?",
      "canonicalUrl": "https://playable.wtf/guides/quake-browser-native-versions/",
      "description": "Compare NetQuake, FTE QuakeWorld, Pieter’s Quake II and Q3JS, with shareware limits, owned PAKs, touch controls and native fallbacks.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "NetQuake · files, packages and rooms",
          "url": "https://www.netquake.io/faq"
        },
        {
          "label": "Pieter · QuakeWorld launcher",
          "url": "https://q1.pieter.com/"
        },
        {
          "label": "Pieter · Quake II launcher",
          "url": "https://q2.pieter.com/"
        },
        {
          "label": "Q3JS · server browser",
          "url": "https://q3js.com/"
        },
        {
          "label": "Q3JS · phone controls",
          "url": "https://q3js.com/play-quake-3-on-your-phone"
        },
        {
          "label": "id Software · enhanced Quake II",
          "url": "https://store.steampowered.com/app/2320/Quake_II/"
        }
      ]
    },
    {
      "id": "guide:half-life-browser-versions",
      "title": "Half-Life in a browser: choose WebXash or Pixelsuft",
      "canonicalUrl": "https://playable.wtf/guides/half-life-browser-versions/",
      "description": "Choose a Half-Life browser frontend, prepare your owned game folders or ZIP, keep saves and understand mod, phone and multiplayer limits.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "WebXash · files, mods, saves and servers",
          "url": "https://github.com/x8BitRain/webXash"
        },
        {
          "label": "Pixelsuft · em-xash project",
          "url": "https://github.com/Pixelsuft/hl"
        },
        {
          "label": "Pixelsuft · data and filesystem launcher",
          "url": "https://pixelsuft.github.io/hl/xash.html"
        },
        {
          "label": "Xash3D FWGS · incompatible mods",
          "url": "https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/not-supported-mod-list-and-reasons-why.md"
        },
        {
          "label": "Valve · Half-Life",
          "url": "https://store.steampowered.com/app/70/HalfLife/"
        }
      ]
    },
    {
      "id": "guide:call-of-duty-browser-native-versions",
      "title": "Call of Duty browser and native versions: Zombies or campaign?",
      "canonicalUrl": "https://playable.wtf/guides/call-of-duty-browser-native-versions/",
      "description": "Separate BO1 Zombies, the Nacht fan remake, COD4 Web, COD3 and MW2 native ports by edition, files, controls, modes and development limits.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "vel.gg · BO1 Zombies setup",
          "url": "https://vel.gg/bo1z"
        },
        {
          "label": "vel.gg · Classic and Counter-Strike controls",
          "url": "https://vel.gg/bo1z/gamepad.js"
        },
        {
          "label": "Nacht fan remake · solo/co-op launcher",
          "url": "https://zombies.bitcoinsapi.com/"
        },
        {
          "label": "Nacht fan remake · device and controller help",
          "url": "https://zombies.concentric.live/compatibility.html"
        },
        {
          "label": "KisakCOD Web · Steam-file campaign setup",
          "url": "https://github.com/slqntdevss/kisakcod-port"
        },
        {
          "label": "CoD3Recomp · native setup and controls",
          "url": "https://github.com/FrankHUN88453/CoD3Recomp"
        },
        {
          "label": "MW2 Recompiled · editions, controller and matches",
          "url": "https://github.com/PaulCombal/mw2-recompiled"
        },
        {
          "label": "IW4L · experimental runtime",
          "url": "https://github.com/vladtrc/iw4L"
        },
        {
          "label": "KisakBlack · Windows source build",
          "url": "https://github.com/SwagSoftware/KisakBlack"
        }
      ]
    },
    {
      "id": "guide:mario-platformer-versions",
      "title": "Mario platformer projects: choose SM64 co-op, Wonder Recomp or GalaxyPad",
      "canonicalUrl": "https://playable.wtf/guides/mario-platformer-versions/",
      "description": "Compare native Super Mario 64 co-op, Wonder Recomp and GalaxyPad: exact game files, source builds, phone controls and Mario crossover mods.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "Coop Deluxe · release and ROM import",
          "url": "https://sm64coopdx.com/"
        },
        {
          "label": "sm64coopdx · co-op and modding",
          "url": "https://github.com/coop-deluxe/sm64coopdx"
        },
        {
          "label": "sm64coopdx · hosting and joining",
          "url": "https://github.com/coop-deluxe/sm64coopdx/wiki/Hosting-and-joining"
        },
        {
          "label": "sm64coopdx · v1.5.1 update notes",
          "url": "https://github.com/coop-deluxe/sm64coopdx/releases/tag/v1.5.1"
        },
        {
          "label": "Wonder Recomp · platforms and current scope",
          "url": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/7c2531d9bdce94506bad9bf53d8a9848b240f111/README.md"
        },
        {
          "label": "Wonder Recomp · source-build workflow",
          "url": "https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/7c2531d9bdce94506bad9bf53d8a9848b240f111/docs/BUILD.md"
        },
        {
          "label": "GalaxyPad · installation and game import",
          "url": "https://github.com/chrissotraidis/galaxypad/blob/d7ad659fd823002a958023aecede11a6f41ac470/docs/INSTALL_IPAD.md"
        },
        {
          "label": "GalaxyPad · engine, controls and save guidance",
          "url": "https://github.com/chrissotraidis/galaxypad/blob/d7ad659fd823002a958023aecede11a6f41ac470/README.md"
        },
        {
          "label": "libsm64 · Mario inside other engines",
          "url": "https://github.com/libsm64/libsm64"
        }
      ]
    },
    {
      "id": "guide:zelda-game-versions",
      "title": "Zelda projects compared: Ocarina, Majora, Link’s Awakening and more",
      "canonicalUrl": "https://playable.wtf/guides/zelda-game-versions/",
      "description": "Compare Ship of Harkinian, Zelda64Recomp, LAS Recomp and other native Zelda projects by game, edition, files, controls and saves, with Zelda II’s host limits.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "z2rs · supported ROM, editions and input",
          "url": "https://github.com/troyedwardsjr/z2rs"
        },
        {
          "label": "Ship of Harkinian · setup and controls",
          "url": "https://github.com/HarbourMasters/Shipwright"
        },
        {
          "label": "Zelda64Recomp · Majora’s Mask, controls and saves",
          "url": "https://github.com/Zelda64Recomp/Zelda64Recomp"
        },
        {
          "label": "LAS Recomp · Switch files and randomizer limits",
          "url": "https://github.com/peiikai/LASRecomp"
        },
        {
          "label": "TriAevum · release status",
          "url": "https://github.com/coccofresco/TriAevum/releases"
        },
        {
          "label": "zelda3 · resource extraction and controls",
          "url": "https://github.com/snesrev/zelda3"
        },
        {
          "label": "Dusklight · supported discs and setup",
          "url": "https://github.com/TwilitRealm/dusklight"
        },
        {
          "label": "BlueWake · platform and disc requirements",
          "url": "https://github.com/chrissotraidis/bluewake"
        }
      ]
    },
    {
      "id": "guide:sonic-game-versions",
      "title": "Sonic projects compared: Sonic 3 A.I.R., Mania and Unleashed",
      "canonicalUrl": "https://playable.wtf/guides/sonic-game-versions/",
      "description": "Compare Sonic 3 A.I.R.’s web beta, native Sonic Mania and Unleashed desktop or Android, with exact files, browser save tools and experimental limits.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "Sonic 3 A.I.R. · official ports and ROM requirements",
          "url": "https://sonic3air.org/"
        },
        {
          "label": "Sonic 3 A.I.R. web beta · installation and file manager",
          "url": "https://projects.sappharad.com/s3air_ios/20260328_beta/"
        },
        {
          "label": "Sonic 3 A.I.R. web beta · renderer and memory limits",
          "url": "https://projects.sappharad.com/s3air_ios/todoList.html"
        },
        {
          "label": "Unleashed Recompiled · desktop installation",
          "url": "https://github.com/hedge-dev/UnleashedRecomp"
        },
        {
          "label": "Unleashed for Android · importing files and controls",
          "url": "https://github.com/SansNope/UnleashedRecomp-Android"
        },
        {
          "label": "RSDK Sonic Mania · supported editions and building",
          "url": "https://github.com/RSDKModding/Sonic-Mania-Decompilation"
        },
        {
          "label": "Marathon Recompiled · development status",
          "url": "https://github.com/sonicnext-dev/MarathonRecomp"
        }
      ]
    },
    {
      "id": "guide:gta-game-versions",
      "title": "GTA projects compared: GTA III in a browser, LCS Recomp and Theft4",
      "canonicalUrl": "https://playable.wtf/guides/gta-game-versions/",
      "description": "Compare the GTA III re3 web host, native Liberty City Stories and Theft4 for GTA IV, with exact editions, controls, saves and unavailable listing limits.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "WASM Arcade · GTA III controls and save manager",
          "url": "https://wasmarcade.com/gta3"
        },
        {
          "label": "WASM Arcade · hosting, upstream engines and advertising",
          "url": "https://wasmarcade.com/about"
        },
        {
          "label": "LCS Recomp · required PSP edition and controls",
          "url": "https://github.com/elmasas/lcs-recomp"
        },
        {
          "label": "Theft4 · Xbox 360 input and save exports",
          "url": "https://github.com/KoreanSeats1/Theft4"
        },
        {
          "label": "Theft4 · signing, storage and prepared files",
          "url": "https://github.com/KoreanSeats1/Theft4/blob/88115fefad59cfcb62d17c0c9548a7a900c01a23/docs/IOS_SIDELOAD_INSTALL.md"
        },
        {
          "label": "sm64-san-andreas · host-game and Mario requirements",
          "url": "https://github.com/headshot2017/sm64-san-andreas"
        }
      ]
    },
    {
      "id": "guide:command-and-conquer-versions",
      "title": "Command & Conquer: choose Chrono Divide, GeneralsX or OpenRA",
      "canonicalUrl": "https://playable.wtf/guides/command-and-conquer-versions/",
      "description": "Compare Red Alert 2 in Chrono Divide, owned Zero Hour files in GeneralsX Web, and OpenRA’s revised classic games, controls and multiplayer setup.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "Chrono Divide · features and device requirements",
          "url": "https://chronodivide.com/"
        },
        {
          "label": "Chrono Divide · imports, accounts and client updates",
          "url": "https://chronodivide.com/patch-notes.html"
        },
        {
          "label": "GeneralsX Web · Zero Hour requirements and scope",
          "url": "https://github.com/origami-ltd/wasm-generals#readme"
        },
        {
          "label": "OpenRA · games and revised rules",
          "url": "https://www.openra.net/about/"
        },
        {
          "label": "OpenRA · releases and first-run assets",
          "url": "https://www.openra.net/download/"
        },
        {
          "label": "Chrono Divide · original MIX assets and browser storage",
          "url": "https://github.com/chronodivide/mod-sdk#file-and-folder-structure"
        }
      ]
    },
    {
      "id": "guide:tomb-raider-versions",
      "title": "Tomb Raider: OpenLara’s browser demo or TRX for the full adventures?",
      "canonicalUrl": "https://playable.wtf/guides/tomb-raider-versions/",
      "description": "Compare OpenLara’s WebGL demo with TRX Community Edition for Tomb Raider I–III, including keyboard controls, owned files, installation and saves.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "OpenLara · WebGL demo and standalone route",
          "url": "https://github.com/XProger/OpenLara#readme"
        },
        {
          "label": "OpenLara · default keyboard layout",
          "url": "https://github.com/XProger/OpenLara/blob/master/src/core.h"
        },
        {
          "label": "OpenLara · browser save implementation",
          "url": "https://github.com/XProger/OpenLara/blob/master/src/platform/web/main.cpp"
        },
        {
          "label": "TRX 1.11.1 · games, controls and scope",
          "url": "https://github.com/LostArtefacts/TRX/blob/trx-1.11.1/README.md"
        },
        {
          "label": "TRX 1.11.1 · installation and save directories",
          "url": "https://github.com/LostArtefacts/TRX/blob/trx-1.11.1/docs/trx/INSTALLING.md"
        },
        {
          "label": "TRX · game and expansion selection",
          "url": "https://lostartefacts.dev/trx/docs/"
        }
      ]
    },
    {
      "id": "guide:prince-of-persia-versions",
      "title": "Prince of Persia: PrinceJS in a browser or SDLPoP on desktop?",
      "canonicalUrl": "https://playable.wtf/guides/prince-of-persia-versions/",
      "description": "Choose PrinceJS for browser and touch play or SDLPoP for native quicksaves and replays; compare controls, packages, progress links and practice settings.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "Jordan Mechner · the original Prince of Persia",
          "url": "https://www.jordanmechner.com/en/games-movies/prince-of-persia/"
        },
        {
          "label": "PrinceJS · controls, mobile input and URL progress",
          "url": "https://github.com/oklemenz/PrinceJS#readme"
        },
        {
          "label": "SDLPoP · controls, saves and running the game",
          "url": "https://github.com/NagyD/SDLPoP/blob/v1.23/README.md"
        },
        {
          "label": "SDLPoP · linked platform downloads",
          "url": "https://www.popot.org/get_the_games.php?game=SDLPoP"
        },
        {
          "label": "SDLPoP 1.23 · quickload penalty and gameplay settings",
          "url": "https://github.com/NagyD/SDLPoP/blob/v1.23/SDLPoP.ini"
        }
      ]
    },
    {
      "id": "guide:openttd-browser-native",
      "title": "OpenTTD in a browser or on desktop: start a route and move your saves",
      "canonicalUrl": "https://playable.wtf/guides/openttd-browser-native/",
      "description": "Compare Owen Gerke’s OpenTTD Online with native OpenTTD, build a first bus route, export and import saves, and handle version or content mismatches.",
      "created": "2026-10-17",
      "modified": "2026-10-17",
      "sources": [
        {
          "label": "Owen Gerke · unofficial browser port and bundled assets",
          "url": "https://github.com/swords02/openttd-online#readme"
        },
        {
          "label": "OpenTTD Online · version, tutorial and iOS test route",
          "url": "https://openttdonline.com/"
        },
        {
          "label": "OpenTTD Online · save import and export toolbar",
          "url": "https://openttdonline.com/play/"
        },
        {
          "label": "OpenTTD · native installation and save compatibility",
          "url": "https://github.com/OpenTTD/OpenTTD#readme"
        },
        {
          "label": "OpenTTD · first bus route",
          "url": "https://wiki.openttd.org/en/Manual/Tutorial/Buses"
        },
        {
          "label": "OpenTTD · keyboard shortcuts",
          "url": "https://wiki.openttd.org/en/Manual/Hotkeys"
        },
        {
          "label": "OpenTTD · local directories",
          "url": "https://github.com/OpenTTD/OpenTTD/blob/master/docs/directory_structure.md"
        },
        {
          "label": "OpenTTD · multiplayer and mismatch indicators",
          "url": "https://github.com/OpenTTD/OpenTTD/blob/master/docs/multiplayer.md"
        }
      ]
    }
  ]
}
