[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-149":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":15,"starSnapshotCount":15,"syncStatus":13,"lastSyncTime":27,"discoverSource":28},149,"Theseus","MrMilenko\u002FTheseus","MrMilenko","Reverse engineered Xbox Dashboard, for Xbox and PC operating systems.",null,"C++",216,9,2,23,0,3,74,51.9,"GNU General Public License v3.0",false,"main",true,[],"2026-06-11 04:00:17","# Theseus\n\n[![build](https:\u002F\u002Fgithub.com\u002FMrMilenko\u002FTheseus\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg?branch=main)](https:\u002F\u002Fgithub.com\u002FMrMilenko\u002FTheseus\u002Factions\u002Fworkflows\u002Fbuild.yml)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-GPL--3.0--or--later-blue.svg)](LICENSE)\n[![Platform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-Xbox%20%7C%20macOS%20%7C%20Linux%20%7C%20Windows-lightgrey.svg)](#)\n\nTheseus is a reverse-engineered reconstruction of the original Xbox 5960 dashboard. It runs on Xbox hardware, and on desktop (macOS, Linux, Windows) where the same engine is being grown into a 3D launcher for PC games, Steam titles, and emulator-hosted Xbox ISOs (via [xemu](https:\u002F\u002Fxemu.app)). Authoring tools for skin and content creators (XAP editor, scene inspector, Title Maker) ship alongside it.\n\nThe reconstruction is built on binary analysis of the retail Xbox dashboard binaries (4920-5960) in [Ghidra](https:\u002F\u002Fghidra-sre.org\u002F), backed by the TeamUIX lineage's two-decades-plus history with the dashboard (see [Heritage](#heritage) below). The methodology is documented in [Decomp Methodology](#decomp-methodology).\n\nTheseus has two builds from the same source tree:\n\n- **Xbox**: a native dashboard XBE that boots on modded Xbox hardware. The shipped `default.xbe` is from-scratch native code, not a modified Microsoft binary.\n- **UIX Desktop**: the same engine compiled natively for macOS, Linux, and Windows via SDL2 + OpenGL. The Xbox D3D8 calls are translated to OpenGL, kernel APIs are replaced with desktop equivalents, the Xbox filesystem is virtualized, and the same scene graph and script VM that runs on Xbox hardware runs natively on your desktop. Desktop source lives in `theseus\u002Fdesktop\u002F` and shares code with the Xbox build via `theseus\u002Fshared\u002F`, `theseus\u002Fengine\u002F`, and `theseus\u002Frender\u002F`. Documentation in [`docs\u002Fdesktop\u002F`](docs\u002Fdesktop\u002F).\n\n[**UIX Lite**](https:\u002F\u002Fgithub.com\u002FOfficialTeamUIX\u002FUIX-Lite) is a sibling project in the TeamUIX lineage: a heavily patched version of the original Microsoft retail dashboard XBE, authored and maintained by TeamUIX. The XIPs (XAP scenes, scene archives, skins) shipped with a dashboard install are UIX Lite's work. The `uixdata` directory layout is a convention established by JbOnE's earlier source-level modification, *User.Interface.X* (UIX), that TeamUIX has used ever since. Theseus is structured to follow that same convention and to consume UIX Lite's XIPs unchanged, so dropping UIX Lite's data onto a Theseus-powered Xbox works out of the box.\n\n## Current State (Public Beta v0.3)\n\nWorking on Xbox hardware:\n\n- **Launcher**: XBE \u002F ISO \u002F CCI launching from the harddrive menu, backed by the native title scanner. Hundreds of titles scan in single-digit milliseconds. Title icons auto-populate from each game's XBE certificate. UDATA TitleImage.xbx written from the embedded `$$XTIMAGE` section if missing.\n- **Overlay** (L Trigger + B): quick ISO \u002F CCI loader, file manager, live FTP \u002F drive widgets. Independent of the main scene graph, so it stays usable when the dashboard scene is mid-transition.\n- **Hot-swappable skins** from the settings panel (no reboot).\n- **FTP server** auto-starts at boot, auto-detects available partitions, stays up even in panic mode.\n- **Recovery \u002F panic screen** if `default.xip` or `default.xap` fails to load, or if an unhandled exception escapes the dashboard. D3D-direct UI with no scene-graph dependency, dumps a crash log with register state and stack walk to `Q:\\Logs\\panic-*.txt`. FTP still listens, so you can push fixed XIPs over the wire and retry without reflashing.\n- **MP3 audio playback**, scanned from `E:\\Music\\\u003CSoundtrack>\\\u003Csong>.mp3`.\n\nNot yet on Xbox: Xbox Live account creation, soundtrack rip-CD-to-disk. DVD playback ships on the desktop build (libmpv-backed) and is intentionally absent on Xbox; see [Known Issues](#known-issues) for the full picture.\n\n## How It Works\n\nTheseus is approximately 50 source files reconstructed from the retail XBE, organized into the same subsystems the original dashboard had:\n\n- **Script VM** (`xap_compile.cpp`, `xap_vm.cpp`): A JS-like bytecode compiler and virtual machine that executes XAP scene scripts. Lexer, parser, compiler, and interpreter.\n- **Scene graph** (`node_system.cpp`, `node.h`): VRML97-inspired node system with runtime reflection via FND\u002FPRD property tables. Every scene node exposes its properties and methods to the VM through a single macro-driven table.\n- **Rendering** (`scene_groups.cpp`, `shape_render.cpp`, `tmap_system.cpp`, `materials.cpp`, `text.cpp`, `camera.cpp`, `dotfield_node.cpp`): D3D8 screen management, material system inherited from the 3ds Max export pipeline, mesh rendering, XTF font rendering, particle fields, dynamic textures, falloff shading.\n- **Asset loading** (`asset_loader.cpp`, `xip_archive.cpp`): XIP archive parser, XBX texture loader, .xm mesh buffer loader.\n- **UI framework** (`scene_groups.cpp`, `animation_nodes.cpp`, `keyboard_node.cpp`, `hud_node.cpp`): Panels, layers, viewpoints, cameras, on-screen keyboard, HUD overlay, interpolation\u002Fanimation drivers.\n- **System integration** (`audio_system.cpp`, `dsound_manager.cpp`, `disc_management.cpp`, `harddrive.cpp`, `savegame_grid.cpp`): DirectSound pump, disc detection, hard drive enumeration, save game grid, soundtrack collection.\n- **Title launcher** (`theseus_launcher.cpp`, `title_scanner.cpp`): Native filesystem scanner that walks all mounted partitions, parses XBE certs for titleId, recognises XBE\u002FISO\u002FCCI launchables, and writes a UIX-Lite-compatible `cache.ini` plus `Icons.ini` plus per-title `UDATA\\\u003Cid>\\TitleImage.xbx`. Launch path dispatches by extension and uses Hermes's `IOCTL_VIRTUAL_ATTACH` for ISO\u002FCCI, then soft-launches via `XLaunchNewImage` so the disc image mount survives the handoff.\n- **Recovery** (`panic_screen.cpp`): D3D-direct fallback UI when init fails or an unhandled exception escapes the dashboard. No scene-graph dependency. Writes timestamped crash logs to `Q:\\Logs\\panic-*.txt` with full exception record + register dump + EBP-chain stack walk.\n- **Xbox Live** (`live_accounts.cpp`, `xbox_live.cpp`): 5960 Xbox Live account loading via `_XOnlineGetUsersFromHD`, profile verification, gamertag display.\n- **Toolbox** (`theseus\u002Ftoolbox\u002F`): FTP server, drive manager, network stack. Forked from PrometheOS via the UIX Lite Toolbox. FTP keeps running in panic mode so missing\u002Fbroken XIPs can be pushed over the wire without reflashing.\n\nThe XAP script API contract (every node, function, property, and callback the dashboard XIPs reference) is documented in [`docs\u002Fxap-contract.md`](docs\u002Fxap-contract.md). That contract is the \"do not break\" surface; the C++ implementation behind it can be rewritten freely.\n\n## The Xbox Build\n\n### Project Structure\n\n```\ntheseus\u002F\n  engine\u002F         Pure logic, no platform deps (VM, nodes, math, settings)\n  shared\u002F         Cross-platform with Win32 types (file I\u002FO, titles, audio, theseus.h)\n  render\u002F         D3D8\u002Fgraphics (scene graph, textures, materials, shape rendering)\n  xbox\u002F           Xbox-only (XTL init, modchip, kernel APIs, main.cpp)\n  desktop\u002F        Desktop-only (SDL\u002FOpenGL platform layer, ImGui tools, stubs)\n  toolbox\u002F        PrometheOS-derived FTP\u002Fdrive\u002Fnetwork toolbox\ntheseuslib\u002F       Shared C library for the dashboard's link-time ABI (xiso parser, xip parser, xapi extensions)\nbuild\u002F            Unified build system (Xbox cross-compile + native desktop + Windows cross)\nxboxfs\u002F           Virtualized Xbox filesystem for desktop builds (Q:\\, E:\\, C:\\)\ndocs\u002F             XAP contract reference, decomp notes, desktop port docs\n```\n\n### Building\n\nBuilds a bootable Xbox XBE using clang, lld-link, and cxbe. Works on macOS and Linux.\n\n**Requirements:**\n- clang and lld-link (`brew install llvm` on macOS, `apt install clang lld` on Linux)\n- [OXDK](https:\u002F\u002Fgithub.com\u002FMrMilenko\u002FOXDK) cloned and built\n- An Xbox SDK source tree (headers and libraries the Xbox dashboard ABI requires at link time)\n\n**Setup:**\n1. Clone and build OXDK:\n   ```\n   git clone https:\u002F\u002Fgithub.com\u002FMrMilenko\u002FOXDK ~\u002FOXDK\n   cd ~\u002FOXDK\u002Ftools\u002Fcxbe && make\n   ```\n2. Make your XDK tree accessible at a path you'll pass as `XDK_BASE`.\n\n**Build:**\n```\ncd build\n\n# Debug build\nmake XDK_BASE=\u002Fpath\u002Fto\u002Fxbox\n\n# Retail build\nmake CONFIG=retail XDK_BASE=\u002Fpath\u002Fto\u002Fxbox\n\n# Clean\nmake clean\n```\n\n`XDK_BASE` points to your Xbox SDK tree. Override `OXDK_DIR` if OXDK is not at `~\u002FOXDK`.\n\nOutput lands under `~\u002Fbuilds\u002Ftheseus\u002F` by default (override with `BUILDS_ROOT`):\n- `~\u002Fbuilds\u002Ftheseus\u002Fxbox-debug\u002Fdefault.xbe`\n- `~\u002Fbuilds\u002Ftheseus\u002Fxbox-retail\u002Fdefault.xbe`\n\n### Deploying to Xbox Hardware\n\nThe Xbox runs the retail build. The dashboard expects two things to be in place: the data folder next to the XBE, and a config folder on `C:\\`.\n\n1. **Drop the XBE somewhere on the Xbox HDD**, for example `E:\\Dashboards\\Theseus\\default.xbe`. Anywhere works as long as the data folder lives next to it.\n2. **Copy `xboxfs\u002FQ\u002F` from this repo to that same folder, renamed to `uixdata`.** Final layout:\n   ```\n   E:\\Dashboards\\Theseus\\\n     default.xbe\n     uixdata\\\n       Audio\\\n       Background\\\n       Fonts\\\n       Language\\\n       Music\\\n       Orbs\\\n       Screenshots\\\n       Skins\\\n       System\\\n       Xips\\\n   ```\n   On Xbox the data folder is named `uixdata`, not `Q`. The `xboxfs\u002FQ\u002F` name only exists for the desktop build's drive-letter virtualization.\n3. **Copy `xboxfs\u002FC\u002FUIX Configs\u002F` to `C:\\UIX Configs\\` on the Xbox HDD.** This holds the launcher cache and INI configuration the dashboard reads at boot.\n\nIf the XBE boots without `uixdata\u002F` next to it or without `C:\\UIX Configs\\` on the HDD, the dashboard drops into the panic \u002F recovery screen with a crash log explaining what's missing. FTP comes up either way, so you can push the missing folders over the wire and reboot.\n\n`xboxfs\u002FE\u002F` mirrors what a stock Xbox `E:\\` looks like (Applications, Dashboards, Emulators, Games, TDATA). It's there so the desktop build has a sane filesystem to enumerate against. On real hardware your Xbox already has `E:\\`; nothing to copy.\n\n### Status\n\n**Complete:**\n- XAP script VM (tokenizer, compiler, bytecode interpreter)\n- Node\u002Fscene graph infrastructure (CObject, CNode, CNodeClass)\n- XIP archive loader\n- Scene groups (Group, Transform, Inline, Spinner, Waver, Layout, Switch, Billboard, Layer, Background, Level)\n- TMAP system (dynamic textures, delta field warping, HSV palettes, audio visualization, FFT)\n- Shape rendering (Shape, Appearance, Material, Box, Sphere, vertex shaders, falloff)\n- Animation nodes (TimeSensor, interpolators, Viewpoint, NavigationInfo)\n- Settings, recovery, keyboard, dotfield, autosmooth\n- File operations (game copying, folder\u002Ffile nodes)\n- Text\u002Ffont rendering, camera system\n- Core utilities, string built-ins, settings file parser\n- DirectSound manager, CD-ROM IOCTL service\n- Title\u002Fsaved game enumeration\n- Network stack, FTP server, drive manager (PrometheOS toolbox)\n- Overlay system, modchip detection, Discord relay\n- MP3 streaming playback (CMP3Pump + minimp3) for the music system\n\n**In Progress:**\n- The desktop and Xbox builds are converging on a single shared source tree. Most engine, scene-graph, and rendering code already builds for both targets; a small set of desktop-only copies still need to migrate.\n\n**Media playback:**\n- DVD playback and the retail soundtrack manager (rip-to-disk, in-dashboard playback) depend on licensed media technology (DVD-Video, WMA, etc.) that's outside the scope of this project. The dashboard's existing media XAP scenes are wired to open-source backends instead: [libmpv](https:\u002F\u002Fmpv.io\u002F) on the desktop build for video, and [minimp3](https:\u002F\u002Fgithub.com\u002Flieff\u002Fminimp3) on both builds for an `E:\\Music\\` directory of MP3 files. UI flows are unchanged; the backend changed.\n\n### Known Issues\n\n- **Save game delete is non-functional.** The confirmation submenu opens but the delete action is a no-op. Under investigation.\n- **Xbox Live account transfer between memory units and the HDD is not supported.** `StartXboxLiveAccountCopy` is a stub that fires `OnCopyError` for XAP compatibility.\n- **Dev mode loose-load is incomplete.** Script hot-reload works; texture, mesh, and missing-XIP fallback paths still go through .xip archives.\n- **Retail Xbox builds compile at `-O0`** to work around a clang `-O2` optimizer bug. Larger binaries, no behavior change.\n\nThe Xbox build links clean via the macOS \u002F Linux cross-compile and boots on original hardware.\n\n## The Desktop Port\n\nUIX Desktop takes the Theseus engine and runs it natively on macOS, Linux, and (in-progress) Windows. Same scene graph, same script VM, same XAP scenes from the XIP archives, no emulation. The Xbox D3D8 interface is reimplemented on top of OpenGL 3.2 and GLSL, the Win32 type system is reimplemented in `sdl_platform.h`, and the Xbox drive-letter filesystem is virtualized over a local `xboxfs\u002F` directory.\n\n### Features\n\n- **3D game launcher**: Browse and launch PC games, Steam titles, and Xbox ISOs (via [xemu](https:\u002F\u002Fxemu.app)) through the dashboard's 3D interface.\n- **Steam library import**: Discovers installed Steam games and creates launcher entries automatically.\n- **xemu integration**: Launch Xbox disc images directly through xemu.\n- **Community skins**: UIX Lite skins work out of the box, switchable from dashboard settings.\n- **XAP script editor (F2)**: Edit dashboard scripts live with syntax highlighting and hot reload.\n- **Title Maker (F3)**: Create game shortcuts with custom icons, categories, and launch commands.\n- **Scene inspector (F1)**: Full scene graph browser with node properties, visibility toggles, and 3D click-to-select.\n- **Xbox HDD browser (F5)**: Mount and browse qcow2\u002FFATX Xbox hard drive images.\n- **Media library + player** *(beta)*: Three-scene browser (movies \u002F TV shows \u002F season-episode) backed by your filesystem and a TMDB-enriched local cache. Configurable library roots in Settings. Fullscreen video via libmpv with custom Xbox-themed OSD; optional CRT post-process applied to the picture. Expect bugs — the lifecycle around mpv state, scene transitions, and CRT compositing is still settling.\n- **CRT post-processing**: Scanline, curvature, phosphor, and bloom filters.\n\n### Building\n\nThe desktop source lives in `theseus\u002Fdesktop\u002F` and shares code with the Xbox build via `theseus\u002Fshared\u002F`, `engine\u002F`, and `render\u002F`. Same Makefile, same repo.\n\n**Requirements:** C++17 compiler, OpenGL 3.2, SDL2, SDL2_mixer, libmpv, libcurl, pkg-config.\n\n`libmpv` powers fullscreen video playback (Movies\u002FTV browser) and CD audio. `libcurl` powers the in-process TMDB metadata enrichment that populates the media library. Both are mandatory; the Makefile errors out with install hints if pkg-config can't find them.\n\n**macOS:**\n```\nbrew install sdl2 sdl2_mixer mpv curl pkg-config\ncd build && make desktop\n~\u002Fbuilds\u002Ftheseus\u002Fdesktop\u002Ftheseus\n```\n\nIf `make` reports libcurl missing, prepend `PKG_CONFIG_PATH=\"$(brew --prefix curl)\u002Flib\u002Fpkgconfig:${PKG_CONFIG_PATH}\"` (Homebrew's curl is keg-only).\n\n**Linux (Debian\u002FUbuntu):**\n```\nsudo apt install build-essential pkg-config \\\n                 libsdl2-dev libsdl2-mixer-dev libgl-dev \\\n                 libmpv-dev libcurl4-openssl-dev\ncd build && make desktop\n~\u002Fbuilds\u002Ftheseus\u002Fdesktop\u002Ftheseus\n```\n\n**Windows (MSYS2 \u002F MinGW64):**\n\nInstall [MSYS2](https:\u002F\u002Fwww.msys2.org\u002F), then in the **MSYS2 MinGW64** shell:\n\n```\npacman -S make pkg-config \\\n          mingw-w64-x86_64-gcc \\\n          mingw-w64-x86_64-SDL2 \\\n          mingw-w64-x86_64-SDL2_mixer \\\n          mingw-w64-x86_64-mpv \\\n          mingw-w64-x86_64-curl\ncd build && make desktop\n~\u002Fbuilds\u002Ftheseus\u002Fdesktop\u002Ftheseus.exe\n```\n\nThe output `.exe` is a real PE32+ x86-64 binary. Ship it alongside the MSYS2-runtime DLLs (SDL2.dll, SDL2_mixer.dll, libmpv-2.dll, libcurl-4.dll, etc. — `ldd theseus.exe` from inside MSYS2 lists them) and the `xboxfs\u002F` directory.\n\n**Windows (cross-compile from macOS\u002FLinux):**\n\nLess polished than the MSYS2 path but useful if you don't want to launch a Windows VM. Requires SDL2 \u002F SDL2_mixer \u002F libmpv \u002F libcurl mingw devel libs unpacked under `~\u002Fcross\u002F`.\n\n```\nsudo apt install mingw-w64                    # macOS: brew install mingw-w64\n# One-time: SDL2 + SDL2_mixer mingw devel  -> ~\u002Fcross\u002Fsdl2-mingw\u002F\n# One-time: GLEW from source (mingw)       -> ~\u002Fcross\u002Fglew-src\u002Fglew-2.2.0\u002F\n# One-time: libmpv mingw devel             -> ~\u002Fcross\u002Fmpv-mingw\u002F      (shinchiro\u002Fmpv-winbuild-cmake)\n# One-time: libcurl mingw devel            -> ~\u002Fcross\u002Fcurl-mingw\u002F     (curl.se\u002Fwindows)\ncd build && make desktop-win64\n~\u002Fbuilds\u002Ftheseus\u002Fdesktop-win64\u002Ftheseus.exe + SDL2.dll + SDL2_mixer.dll + libmpv-2.dll + libcurl-x64.dll\n```\n\nThe CI workflow (`.github\u002Fworkflows\u002Fbuild.yml`, job `desktop-win64-cross`) runs this path on every push and is the closest thing to executable docs for the one-time setup.\n\n**Linux ARM64 (cross-compile from x86_64 Linux):**\n```\nsudo dpkg --add-architecture arm64\nsudo apt update\nsudo apt install g++-aarch64-linux-gnu pkg-config \\\n                 libsdl2-dev:arm64 libsdl2-mixer-dev:arm64 libgl-dev:arm64 \\\n                 libmpv-dev:arm64 libcurl4-openssl-dev:arm64\nPKG_CONFIG_LIBDIR=\u002Fusr\u002Flib\u002Faarch64-linux-gnu\u002Fpkgconfig:\u002Fusr\u002Fshare\u002Fpkgconfig \\\n    make -C build desktop-linux-arm64\n# Output: ~\u002Fbuilds\u002Ftheseus\u002Fdesktop-linux-arm64\u002Ftheseus\n```\n\nFor testers running aarch64 Linux on devices like jailbroken Switches, Pi 4\u002F5 boxes, or ARM cloud VMs. The output is a dynamically linked aarch64 ELF; runtime deps on the target are `libsdl2-2.0-0`, `libsdl2-mixer-2.0-0`, `libgl1`, `libmpv2` (or `libmpv1`), and `libcurl4`. Build host glibc must be \u003C= target glibc; if your tester is on an older Ubuntu, build on a Debian Bookworm host or directly on the target. See the `desktop-linux-arm64` target preamble in `build\u002FMakefile` for details.\n\n### CLI flags (desktop)\n\n| Flag             | What it does                                                                  |\n|------------------|-------------------------------------------------------------------------------|\n| `--scale N`      | UI scale factor for the ImGui debug overlay (1.5, 2.0 for high-DPI displays) |\n| `--fullscreen`   | Borderless fullscreen at native resolution                                    |\n| `--4k`           | Convenience: `--fullscreen` + `--scale 2.0`                                   |\n| `--no-toolbar`   | Start with the menu bar hidden (toggle back with F10)                        |\n| `--dashboard`    | Start in dashboard mode (skip the preloader picker)                           |\n| `--development`  | Start in development mode (enables Inspector, XAP Editor)                     |\n| `--muted`        | Start with audio muted                                                        |\n| `--preview`      | Legacy alias for `--dashboard`                                                |\n\n### Data Files\n\nThe `xboxfs\u002F` directory holds dashboard data (XIP archives, skins, fonts, audio, language files) for the desktop build to consume. The build system copies it into the output directory automatically so each build drop is self-contained. The Xbox build does not need this directory; it uses the same data shipped on the Xbox HDD via real drive letters.\n\n### Controls (desktop)\n\n**Dashboard navigation:**\n\n| Key | Xbox button | Action |\n|---|---|---|\n| Arrow keys | D-pad | Navigate |\n| Enter \u002F Space | A | Select |\n| Backspace | B | Back |\n| X \u002F Y | X \u002F Y | Context actions |\n| Tab | White | Play \u002F Pause |\n| ` (backtick) | Black | Stop |\n| Q \u002F E | LT \u002F RT | Page or frame step |\n| WASD | Left stick | Analog navigation |\n\n**Media playback:**\n\n| Key | Action |\n|---|---|\n| `[` \u002F `]` | Scan backward \u002F forward |\n| `;` \u002F `'` | Play \u002F Pause |\n| `i` | Toggle OSD |\n| 0-9 | Chapter digit entry |\n\n**Developer tools:**\n\n| Key | Action |\n|---|---|\n| F1 | Scene inspector |\n| F2 | XAP script editor |\n| F3 | Title Maker |\n| F4 | Settings |\n| F5 | Xbox HDD browser |\n| F10 | Toggle menu bar |\n| Ctrl+M | Mute |\n| Ctrl+R | Restart dashboard |\n\nXbox and PlayStation controllers also work via the SDL2 GameController API, merged with keyboard input.\n\n### Desktop Platform Layer\n\nThe desktop port wraps the Theseus engine with a platform layer that handles everything Xbox-specific:\n\n| Component | Responsibility |\n|---|---|\n| `d3d8_sdl.h` | Translates D3D8 to OpenGL 3.2: device, textures, vertex buffers, GLSL shaders, falloff lighting |\n| `sdl_platform.h` | Reimplements Win32 types and APIs (DWORD, HANDLE, ReadFile, FindFirstFile, GetTickCount, etc.) |\n| `xboxfs.h` | Maps Xbox drive paths (`Q:\\Xips\\...`) to local filesystem with case-insensitive lookup |\n| `sdl_main.cpp` | SDL2 window, OpenGL context, main loop, CRT post-processing |\n| `desktop_nodes.cpp` | Desktop implementations of XAP nodes (AudioClip, SavedGameGrid, DVDPlayer, MusicCollection) |\n| `inspector.cpp` | Scene graph browser with 3D selection |\n| `xap_editor.cpp` | Live script editor with syntax highlighting |\n| `title_maker.cpp` | Game shortcut creator with Steam import |\n| `hdd_browser.cpp` | Xbox HDD image browser (qcow2 + FATX) |\n| `media_player.cpp` | libmpv wrapper for the DVD player node |\n| `audio_sdl.cpp` | SDL_mixer backend with Xbox IMA ADPCM decoder |\n| `xbx_texture.h` | XBX texture reader (DXT1\u002F3\u002F5, Xbox swizzle) |\n\nFor deeper notes on the desktop port, see [`docs\u002Fdesktop\u002F`](docs\u002Fdesktop\u002F).\n\n## Documentation\n\n- **[`docs\u002FREADME.md`](docs\u002FREADME.md)**: Documentation index\n- **[`docs\u002Fxap-contract.md`](docs\u002Fxap-contract.md)**: Complete catalog of XAP node types, functions, properties, and callbacks. The \"do not break\" API surface.\n- **[`docs\u002Fdecomp\u002F`](docs\u002Fdecomp\u002F)**: Per-subsystem reverse engineering notes derived from binary analysis of the retail XBE\n- **[`docs\u002Fdesktop\u002F`](docs\u002Fdesktop\u002F)**: Desktop port documentation (porting notes, D3D8-to-OpenGL translation, features, media player design)\n\nFor Xbox dashboard history and the broader UIX project narrative, see [UIX History](https:\u002F\u002Fgithub.com\u002FMrMilenko\u002FUIX-History).\n\n## Decomp Methodology\n\nEach source file was produced by analyzing the corresponding code in the retail XBE:\n\n- **FND\u002FPRD tables**: Function and property descriptors identified by scanning .bss init patterns\n- **XAP script verification**: Every exposed function\u002Fproperty cross-checked against dashboard XIP scripts\n- **Ghidra analysis**: ~2,300 of the binary's 4,559 functions labeled and decompiled via custom Ghidra scripts and pattern-matching (~50% of the binary)\n\nSee [`docs\u002Fdecomp\u002F`](docs\u002Fdecomp\u002F) for per-subsystem binary analysis notes.\n\n## Heritage\n\nTheseus is part of the TeamUIX lineage. JbOnE created *User.Interface.X* (UIX), a source-level modification of the original Microsoft Xbox Dashboard, with the original teamUIX collective. Modern TeamUIX continues that tradition with UIX Lite and Theseus.\n\nThere is a circularity to this. UIX modified the dashboard at the source level. Theseus reaches the same destination from the other side of the river, reconstructing that codebase from the retail binary using Ghidra and analysis of the XAP scripts.\n\n## Credits\n\n### Team UIX\n\n- **Milenko**: primary RE and development, UIX Desktop port\n- **BigJx**: maintainer of the UIX Lite XIPs (XAP scripts, skins, scene assets) shipped with the modern dashboard, plus testing and bug reports\n- **Rocky5**: skin presets and the modern Colourizer XBE color patcher. The technique itself descends from **ZogoChieftan**'s pioneering in-dashboard color patching work in BlackStormX (BSX), circa 2004; Rocky5's tool brings that idea to the retail 5960 dashboard.\n- **JbOnE**: original author of User.Interface.X (UIX) and the original teamUIX collective; the lineage Theseus continues.\n\n### Related Projects\n\n- **[Team Resurgent](https:\u002F\u002Fgithub.com\u002FTeam-Resurgent)**: [PrometheOS](https:\u002F\u002Fgithub.com\u002FTeam-Resurgent\u002FPrometheOS-Firmware) firmware (the toolbox, including FTP server, drive manager, and utilities, was forked from PrometheOS via the [UIX Lite Toolbox](https:\u002F\u002Fgithub.com\u002FOfficialTeamUIX\u002FUIX-Lite-Toolbox)) and [Hermes](https:\u002F\u002Fgithub.com\u002FTeam-Resurgent\u002FHermes) (ISO\u002FCCI mount support).\n- **[xemu](https:\u002F\u002Fxemu.app)**: Original Xbox emulator. The desktop port's launcher integrates xemu for booting Xbox ISOs.\n\n### Third-Party Libraries\n\n**Used by the Xbox build:**\n\n| Library | License | Purpose |\n|---|---|---|\n| [minimp3](https:\u002F\u002Fgithub.com\u002Flieff\u002Fminimp3) | CC0 (public domain) | Single-header MP3 decoder used by the music system for streaming playback |\n\n**Used by the desktop port:**\n\n| Library | License | Purpose |\n|---|---|---|\n| [SDL2](https:\u002F\u002Fwww.libsdl.org\u002F) | zlib | Window, input, audio |\n| [SDL2_mixer](https:\u002F\u002Fgithub.com\u002Flibsdl-org\u002FSDL_mixer) | zlib | Sound playback |\n| [libmpv](https:\u002F\u002Fmpv.io\u002F) | LGPL 2.1+ | Video playback for the DVD player node |\n| [Dear ImGui](https:\u002F\u002Fgithub.com\u002Focornut\u002Fimgui) | MIT | Developer tool UI (scene inspector, XAP editor, Title Maker, HDD browser) |\n| [ImGuiColorTextEdit](https:\u002F\u002Fgithub.com\u002FBalazsJako\u002FImGuiColorTextEdit) | MIT | XAP script editor with syntax highlighting |\n| [stb_image](https:\u002F\u002Fgithub.com\u002Fnothings\u002Fstb) | Public Domain | Image loading on the desktop side |\n| [GLEW](https:\u002F\u002Fglew.sourceforge.net\u002F) | Modified BSD \u002F MIT | OpenGL extension loader (Windows desktop build only) |\n\n## License\n\nTheseus is licensed under the **GNU General Public License, version 3 or later** (`GPL-3.0-or-later`). The full license text is in [`LICENSE`](LICENSE).\n\nInherited code keeps its origin license intact:\n\n- **`theseus\u002Ftoolbox\u002F`**: forked from PrometheOS via UIXLiteFTP and UIX-Lite-Toolbox, GPL-3.0 throughout.\n- **ISO\u002FCCI mount support**: integrates with [Hermes](https:\u002F\u002Fgithub.com\u002FTeam-Resurgent\u002FHermes), GPL-3.0.\n\nA complete catalog of inherited code, linked libraries, and their respective licenses is in [`LICENSE-THIRD-PARTY.md`](LICENSE-THIRD-PARTY.md).\n\nThe XIPs and skin assets in `xboxfs\u002F` are authored by UIX Lite and represent TeamUIX modifications of dashboard scripts present on every retail Xbox console. UIX Lite's modifications ship under GPL-3.0-or-later; the underlying script formats are referenced for compatibility and preservation.\n","Theseus 是一个对原始Xbox 5960仪表盘进行逆向工程重建的项目，它不仅能在Xbox硬件上运行，还能通过SDL2\u002FOpenGL在macOS、Linux和Windows桌面系统上运行。该项目使用C++编写，基于Ghidra对零售版Xbox仪表盘二进制文件（4920-5960）的分析构建而成，并且为皮肤和内容创作者提供了创作工具如XAP编辑器、场景检查器及Title Maker。Theseus支持从硬盘菜单启动XBE\u002FISO\u002FCCI游戏，自动填充游戏图标，并提供快速加载器、文件管理器以及实时FTP\u002F驱动器小部件等功能。适用于希望在现代操作系统或原生Xbox硬件上体验经典Xbox界面与功能的用户及开发者。","2026-06-11 02:31:06","CREATED_QUERY"]