Skip to content

Credits

Blizz127 edited this page Sep 30, 2026 · 1 revision

Credits and Notice

The source documents below are reproduced verbatim except for wiki-safe link targets.

CREDITS.md

Credits

The Xenogears decompilation

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.

Port, tools and documentation

Written by Blizz127, with AI coding assistants (Claude and Codex) under the owner's direction.

Font

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).

Libraries used by the port

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.

Tools

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).

NOTICE.md

Notice

Ownership

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.

What this repository contains

  • 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.

Upstream-derived files

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.

What this repository does not contain

  • 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.sh downloads 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 maspsx assembler 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.

How the tree was checked

Before publishing, every file was checked:

  1. 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.
  2. 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, .rodata and .sdata sections 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.
  3. Psy-Q guard (tools/analysis/psyq_port_guard.py): no Sony SDK code.
  4. No binaries (file on every file) and no credentials or private hosts.

Address tables

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.

PsyCross

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.

Your own disc

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.

Purpose

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

Third-party components keep their own licenses; see CREDITS.md and pc_port/THIRD_PARTY.md.

Source checked: 2026-09-30, README snapshot.