Repository navigation
Credits
The source documents below are reproduced verbatim except for wiki-safe link targets.
This port is built on top of the Xenogears matching decompilation started by ladysilverberg: ladysilverberg/xenogears-decomp. That project set up the splat layout, the SLUS-00664 target and the build, and its contributors decompiled the first functions the port runs.
Contributors to the upstream decompilation, from its git history:
- ladysilverberg
- Kat
- Jonathan Peros (jperos, jdperos)
- Nora Strong
- devperson7
- Valentin Robert
- GigaGoji
- Aku Kotkavuo
- James Brown
- Akshay Gopinath
The upstream project has not published a license. Its contributors' work is included in this repository with credit: the files that contain it are listed, with their upstream authors, in UPSTREAM_FILES.md. That work remains its authors' and is not covered by this repository's MIT license. The owner is re-deriving the upstream-authored parts independently from the retail binary, and each file leaves that list when its upstream parts are replaced.
The build also uses pieces that upstream hosts publicly and this repository
does not redistribute: the GCC 2.x PSX compilers, the Psy-Q SDK headers and
the decompiled SDK libraries. tools/fetch_upstream_toolchain.sh downloads
them from upstream at build time.
The upstream project also thanks the Silent Hill decompilation as the project-structure template it was adapted from.
Written by Blizz127, with AI coding assistants (Claude and Codex) under the owner's direction.
The port's Japanese glyph fallback (pc_port/src/krom_jiskan16.inc) is
generated from Jiskan 16 (16×16 JIS X 0213:2000 Plane 1, version 1.06),
which is in the public domain. Font credits, from the BDF file:
- based on jiskan16-1990.bdf and jisksp16-1990.bdf;
- new characters merged by Toshiyuki Imamura and HANATAKA Shinya;
- with thanks to Taichi Kawabata, Koichi Yasuoka, TOYOSHIMA Masayuki, Kazuo Koike and SATO Yasunao.
The hex conversion we use comes from Unifoundry
(jiskan16-1.hex, not redistributed here; see
pc_port/font_data/README.md).
| Component | Use | License |
|---|---|---|
| PsyCross | PSX hardware and API layer (fetched at build time, patched by pc_port/patches/) |
MIT |
| SDL2 | Window, input, audio device | zlib |
| OpenAL Soft | Audio | LGPL-2.0-or-later |
| libsamplerate | Audio resampling | BSD-2-Clause |
| OpenSSL (libcrypto) | SHA hashing of the user's files | Apache-2.0 |
Full license text for PsyCross is in pc_port/THIRD_PARTY.md.
| Tool | Use | License |
|---|---|---|
| splat | Splitting the binaries | MIT |
| spimdisasm | Disassembly | MIT |
| maspsx | PSX assembler wrapper | MIT |
| objdiff | Object diffing | Apache-2.0 |
| decomp-permuter | Matching search | MIT |
| m2c | Initial C drafts | GPL-3.0 |
| GCC 2.6.0 / 2.7.2 PSX cross compilers | Matching build (fetched from upstream by tools/fetch_upstream_toolchain.sh, not included here) |
GPL |
| old-gcc (GCC 2.6.3 PSX) | Matching build (fetched at build time, not included here) | GPL |
| gears | Build driver, from the upstream project; built from tools/gears/src with cargo |
see UPSTREAM_FILES.md |
| decomp.me, decomp.dev | Collaboration and progress tracking | — |
None of these tools is redistributed here as a binary. maspsx is a git
submodule (git submodule update --init, or the fetch script).
Xenogears, and all of its code, data, artwork, music, text and trademarks, are owned by Square Enix. This project is not affiliated with, endorsed by or sponsored by Square Enix or Sony Interactive Entertainment. "PlayStation" is a trademark of Sony Interactive Entertainment.
- The source of a matching decompilation of Xenogears (USA, SLUS-00664): C source written to compile back to the same machine code as the retail game, with its headers, splat configuration, symbol maps and build files.
- The native PC port layer and host code built on it, plus analysis and build tools, scripts, tests and documentation.
The MIT license in LICENSE applies only to the original work in this repository.
This repository includes files derived from the upstream decompilation ladysilverberg/xenogears-decomp. That project has not published a license. Its contributors' work is included with credit, remains theirs, and is not covered by this repository's MIT license. Every such file is listed, with its upstream authors, in UPSTREAM_FILES.md. The owner is re-deriving those parts independently, and each file leaves the list once its upstream-authored parts are replaced.
- Any game content: no disc images, no files extracted from the disc, no audio, textures, movies, text or other assets.
- Any BIOS image, or bytes from one.
- Any Sony or Psy-Q SDK code: no SDK headers (
include/psyq/), no decompiled SDK libraries (src/**/psyq/), no SDK libraries or compiler binaries.tools/fetch_upstream_toolchain.shdownloads these from their public locations into your own working tree when you build. They are not redistributed here. - Prebuilt third-party binaries (the build driver, objdiff) and the
maspsxassembler wrapper (a git submodule). - Game source files that still contain retail bytes or transcribed retail data tables. They are listed in README.md and stay out until that data is loaded from the user's disc instead.
Before publishing, every file was checked:
-
Retail-data guard, strict mode, against the retail files and the BIOS
(
tools/analysis/retail_data_guard.py --strict, with SLUS_006.64, the nine overlay files and the SCPH-5500 BIOS as the reference). It found no "data"-class run: no game data or BIOS bytes. The only runs it reports are its "address-table" class, listed below. -
Compiled-object scan. Every game translation unit included here was
compiled, in both the matching (MIPS) and the port (x86-64) build, and the
.data,.rodataand.sdatasections of each object were compared byte by byte against the same references. Translation units that produced 32 bytes or more of retail data were left out. -
Psy-Q guard (
tools/analysis/psyq_port_guard.py): no Sony SDK code. -
No binaries (
fileon every file) and no credentials or private hosts.
These runs are sequences of function or pointer addresses (or NULLs) that
also appear in the retail files as jump or pointer tables. They record the
same facts as the symbol maps in config/ (where a function or variable
lives), not game data.
| File | Lines | Bytes | Retail location |
|---|---|---|---|
config/symbol_addrs.field.txt |
11–18 | 32 | field.bin, vaddr 0x800AE8E0 |
config/symbol_addrs.slus_006.64.txt |
307–315 | 36 | SLUS_006.64, vaddr 0x8005072C |
pc_port/src/data_slus_sdata.c |
122 | 64 | SLUS_006.64, vaddr 0x80050150 |
pc_port/src/world_map_scheduler.c |
1365–1425 | 64 | world_map.bin, vaddr 0x80099EC4 |
pc_port/tests/sprite_dispatch_arithmetic_retail_test.c |
95 | 40 | SLUS_006.64, vaddr 0x80018504 |
pc_port/tests/w34b3_prod_test.c |
98–129 | 296 | world_map.bin, vaddr 0x80099F0C |
tools/remu/tests/diff_80085618.c |
180–182 | 40 | battle.bin, vaddr 0x80070250 |
tools/remu/tests/diff_80085B58.c |
226–228 | 40 | battle.bin, vaddr 0x80070250 |
tools/remu/tests/diff_80085C88.c |
163–165 | 40 | battle.bin, vaddr 0x80070250 |
The compiled-object scan found one more address table: the matching build of
src/field/main/misc4.c emits a 128-byte jump table (.rodata) equal to the
one at field.bin vaddr 0x8006FB8C.
The port uses PsyCross (MIT) for the
PlayStation hardware and API layer. It is not part of this repository.
pc_port/build_port.sh fetches it at build time at a pinned commit and
patches it with pc_port/patches/. Note that PsyCross's own source carries
GTE lookup tables that are byte-identical to the ones in Sony's libgte.
To build or run anything from this code you need your own legally obtained copy of Xenogears (USA, SLUS-00664). The build takes the parts of the game it does not have as source from files you extract from that disc, and the port reads all game data from them at runtime. Nothing here lets you play the game without it.
The decompilation and port are made for preservation, research and interoperability: keeping the game playable on current hardware for people who own it.
Third-party components keep their own licenses; see CREDITS.md and pc_port/THIRD_PARTY.md.
Source checked: 2026-09-30, README snapshot.