Repository navigation
TH08 Reconstruction v0.2.0 — Native Linux 64-bit
☾「永夜已明」— 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.datthbgm.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-vlgothicVerify, 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.datwire header at0x1cbytes 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-256330fbdbf58a710829d65277b4f312cfbb38d5448b3df523e79350b879213d924,
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. Preservelog.txt,modern-files.txt, and
modern-crash.txtwhen 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.