Skip to content

TH08 Reconstruction v0.2.0 — Native Linux 64-bit

Choose a tag to compare

@N0zoM1z0 N0zoM1z0 released this 30 Aug 10:29
· 67 commits to main since this release
a940881

☾「永夜已明」— native 64-bit Linux is ready

This is the first player-facing release of the native x86_64 TH08
reconstruction port
. The x86_64 package is now the recommended Linux build:
it is a normal 64-bit PIE, uses native pointers and alignment, and has completed
a full human-played Lunatic route rather than only a startup smoke test.

The release also keeps an updated i386 compatibility package and provides an
experimental AArch64 package for real-hardware validation. All packages were
built by GitHub Actions from the tagged source commit and independently checked
before upload.

Choose the correct download

Download the archive and its matching .sha256 file.

Your Linux machine Package Status
Intel/AMD 64-bit (uname -m prints x86_64) th08-portable-linux-x86_64.tar.gz Recommended; full-route tested
32-bit x86, or an existing i386 setup th08-modern-linux-i386.tar.gz Compatibility build
ARM64 (uname -m prints aarch64) th08-portable-linux-aarch64.tar.gz Experimental; no complete real-hardware gameplay run yet

Most desktop and laptop users should choose x86_64.

What you need

Supply a legally obtained original Japanese TH08 1.00d data directory containing:

  • th08.dat
  • thbgm.dat

Those are the only original game files read by the Linux port. The original
th08.exe is neither required nor executed. The data directory must be writable
because TH08 creates configuration, score, backup, replay, screenshot, and
diagnostic files there.

No original executable, DAT archive, music, graphics, or other copyrighted game
asset is included in this release.

Quick start: x86_64 Debian, Ubuntu, or Kali Linux

Install native runtime libraries and a Japanese font:

sudo apt-get update
sudo apt-get install \
  libstdc++6 libgl1 libfontconfig1 \
  libsdl2-2.0-0 libsdl2-image-2.0-0 libsdl2-ttf-2.0-0 \
  fonts-vlgothic

Verify, extract, and launch:

sha256sum -c th08-portable-linux-x86_64.tar.gz.sha256
tar -xzf th08-portable-linux-x86_64.tar.gz
cd th08-portable-linux-x86_64
./run-th08.sh "/path/to/original/TH08 directory"

If the extracted directory is directly inside the directory containing the two
DAT files, run ./run-th08.sh ... Paths are resolved at launch and are never
hard-coded into the executable; quoted spaces and non-ASCII characters are
supported.

The complete architecture-specific installation and troubleshooting guide is
docs/PLAY_LINUX.md.

What changed since Linux Preview 1

  • Added the native-layout x86_64 ELF64 PIE product.
  • Added an AArch64 ELF64 PIE cross-build and loader-validation lane.
  • Separated serialized 32-bit file offsets from live native pointers in stage,
    ECL, player-shot, message, replay, and score loaders.
  • Kept the retail score.dat wire header at 0x1c bytes while storing the live
    native pointer separately. Original/i386 scores and Practice unlock masks now
    survive the x86_64 load/save path.
  • Corrected native manager clears and global-owner aliases that could stall
    later stage transitions.
  • Corrected an x86_64 boss-trail stack-layout bug that could turn boss geometry
    into NaN and make Reimu or other enemy sprites disappear.
  • Added deterministic replay-driven render auditing for missing enemy/boss art,
    invalid geometry, empty sprite data, and queued draws that never affect the
    framebuffer.
  • Updated player documentation so x86_64 is the default download instead of an
    expiring Actions artifact.

Earlier bring-up builds showed missing enemies or bosses, incomplete effects,
Stage 4-to-5 text tiling, and later-stage transition stalls. Those regressions
were not reproduced in the final x86_64 full-route and Practice validation after
the native-layout and render fixes.

Runtime verification

Architecture Evidence
x86_64 Complete Sakuya/Remilia Lunatic Stages 1–6A, ending, results, and return to title under WSLg; additional Stage 4A and Stage 6B Practice runs; original/i386 score.dat unlock validation; deterministic replay render audits under Xvfb/Mesa
i386 Playable native Linux product validated under WSLg and a Kali Linux x86-64 GUI VM
AArch64 Cross-built using only AArch64 libraries; QEMU user-mode reaches DAT/version/logo/loading initialization; complete gameplay on real AArch64 hardware is still pending

The packaged executables use normal retail life rules. The no-life-decrement and
frame-advance helpers used during long automated audits are external test-only
GDB patches; they are not compiled into or shipped with these binaries.

Reconstruction and build attestation

  • Source tag: v0.2.0-linux-64bit
  • Source commit: a940881f97024c99ff387d2cb4c6650fb2bad97f
  • Release preparation: PR #8
  • Tagged repository validation: passed
  • Tagged three-architecture package build: passed
  • Canonical target identity used for comparison: Japanese TH08 1.00d,
    SHA-256 330fbdbf58a710829d65277b4f312cfbb38d5448b3df523e79350b879213d924,
    840,704 bytes
  • Authored source inventory: 1,107 / 1,107 functions present
  • Strict authored ledger: 1,106 / 1,107 accepted exact functions,
    459,396 / 459,757 authored bytes
  • Release-grade, single-job, non-reuse cold replay: 1,106 / 1,106 configured
    accepted exact units passed

The playable port and exact reconstruction are separate claims. Native-layout
portability code does not claim that a 64-bit ELF matches the original 32-bit
VC7 executable.

SHA-256

5c20cd7a794b3fedd8e93e248205d6f214b6370c78f02cb9e5a164d67cffb351  th08-modern-linux-i386.tar.gz
f4d772cea1eb78616b068e3a1ec256aef67130bfd1124fb5d7b80a747e4a5b21  th08-portable-linux-x86_64.tar.gz
762d7ee1e240384b1c53ada775893f59ffabf7051bf818955a706e61647659c3  th08-portable-linux-aarch64.tar.gz

The attached .sha256 files contain the same values. Stop if
sha256sum -c reports a mismatch.

Current limitations

  • AArch64 still needs a complete gameplay run on real hardware.
  • MIDI output is a compatibility stub; the normal WAV BGM path is validated.
  • Keyboard input is validated; controllers are not yet a release target.
  • GPU, OpenGL driver, desktop compositor, and audio differences can still expose
    platform-specific regressions. Preserve log.txt, modern-files.txt, and
    modern-crash.txt when reporting an unexpected exit; never upload original
    DAT archives.
  • Windows and macOS redistributable native packages are not part of this release.

Further technical detail is available in the
native 64-bit port guide
and the
render-audit contract.