Skip to content

Releases: N0zoM1z0/th08

TH08 Reconstruction v0.2.1 — Linux Runtime Refresh

Choose a tag to compare

@N0zoM1z0 N0zoM1z0 released this 19 Sep 01:50
861bec9

TH08 Reconstruction v0.2.1 — Linux Runtime Refresh

This release supersedes v0.2.0 and refreshes the i386, x86_64, and experimental
AArch64 Linux packages after the native Windows i386 prerequisite was completed
and integrated into the portable branch.

What changed

  • Integrated source-level ownership and initialization repairs recovered by the
    native VC7 compile/link/play gate. These cover dialogue backgrounds, boss-name
    textures, player score/graze gauge thresholds, spell backgrounds and effect
    tables, randomized player-shot RNG, and player-point popup ownership.
  • Applied bounded -O2 optimization only to the handwritten native-layout
    D3D8/D3DX8/Linux compatibility hot paths. Under the documented Xvfb/llvmpipe
    benchmark, the first 1,200 FPS-check swaps improved from 13.485 to 3.442
    seconds (3.92x). Reconstructed game translation units and fixed-layout i386
    remain at their established optimization settings.
  • Added modern-only memory-safety guards found by AddressSanitizer: an LZSS
    input-end check, corrected decrypted-resource lengths, and matching delete[]
    ownership for legacy array allocations.
  • Included the corrected max-power item auto-collection threshold and the later
    exact-source semantic/readability maintenance.
  • Preserved the exact reconstruction ledger at 1,106 / 1,107 accepted authored
    functions; the sole authored near match remains outside the accepted ledger.

Choose a package

Host Package Status
x86_64 / AMD64 th08-portable-linux-x86_64.tar.gz Recommended; full-route tested
i386 / 32-bit x86 th08-modern-linux-i386.tar.gz Compatibility build
AArch64 / ARM64 th08-portable-linux-aarch64.tar.gz Experimental; real-hardware gameplay still required

Download the archive and its matching .sha256 file. Supply a legally obtained
Japanese TH08 1.00d data directory containing th08.dat and thbgm.dat; no
original executable or game data is included in these packages.

For installation and launch instructions, see
docs/PLAY_LINUX.md.

Current reporting boundary

Issue #20 reports an invisible boss
laser but does not yet identify the platform/build, boss, stage or spell, or
provide a screenshot or replay. The target-facing laser spawn/update/draw path
is exact, so this release does not claim that unbounded report is fixed. Please
include those details when reproducing it so the problem can be localized to
shared gameplay state or a portable renderer boundary.

AArch64 remains build- and loader-verified but not gameplay-validated on real
hardware. MIDI is still a compatibility stub, and controllers are not yet a
release target.

Build and validation

The tagged artifacts were downloaded after CI, checked against their published
SHA-256 files, inspected for the expected ELF machine/type and package contents,
and had their launch scripts syntax-checked before publication.

SHA-256

86553ad3492d59f8819b7e14d6c7f0d7711bd0840a0b486c82b92c8358fc4712  th08-modern-linux-i386.tar.gz
19ecce71db95ee80c8c377fc0a84d06f2cfc44eb6f399b19d0ef793676e1e530  th08-portable-linux-x86_64.tar.gz
6bf4ce5f93fd7d46020ffae1650cadab32a8433a01558a51106f9cc0da5b720b  th08-portable-linux-aarch64.tar.gz

TH08 Reconstruction v0.2.0 — Native Linux 64-bit

Choose a tag to compare

@N0zoM1z0 N0zoM1z0 released this 30 Aug 10:29
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.

TH08 Reconstruction v0.1.0 — Linux Preview 1

Choose a tag to compare

@N0zoM1z0 N0zoM1z0 released this 24 Aug 12:33

☾「永夜已明」— the authored reconstruction is complete

All 1,107 / 1,107 authored functions are present in source. Reproducible strict comparison currently accepts 1,105 / 1,107 as byte-exact against the original Japanese TH08 1.00d target.

This is the first playable native-platform preview:

  • Linux i386: playable — tested under WSLg and a Kali Linux x86-64 GUI VM;
  • Windows x86: in progress — no redistributable native package yet;
  • macOS: in progress — native backend and packaging are pending;
  • Web edition: planned — the next spell card after the desktop ports.

Linux download and play

  1. Download both attached files.
  2. Verify th08-modern-linux-i386.tar.gz with the attached SHA-256 file.
  3. Extract the archive.
  4. Install the documented i386 SDL2/OpenGL runtime libraries.
  5. Run ./run-th08.sh "/path/to/original/TH08 directory".

Read the complete Linux download, installation, and troubleshooting guide.

The selected directory only needs the legally obtained original Japanese 1.00d th08.dat and thbgm.dat. The original th08.exe is not read or executed by the Linux port. No copyrighted executable or DAT archive is included in this release.

This preview includes the clean-data-directory startup fix: an initially empty score-backup directory no longer crashes in the Linux Win32 compatibility boundary.

Platform guides

Known Linux issue

During the Stage 4-to-5 transition, a dynamic text texture can tile across the outer frame and HUD. Gameplay can continue past it; the main README contains a screenshot and current details.

Attestation