Repository navigation
Releases
xemu 0.8.136-0-g86db8f664ae7 — Def Jam timer fix
xemu 0.8.136-0-g86db8f664ae7
Fixes the Def Jam: Fight for NY timer stall tracked in #266. The repair in PR #271 keeps guest PGRAPH control reads and flip state updates from waiting on shader and pipeline work while the guest holds the big QEMU lock. It also corrects IRQ publication and shared flip-counter ownership. PTIMER arithmetic and the guest clock are unchanged.
Source commit: 86db8f664ae7c6b61bfb70ea08eb7fa368138a6f (merged by a05db7b2375d9c25fe61b6c914e83bab57fc49ca). All packages below were built by GitHub Actions from the source commit.
Validation: The owner reached an active match beyond the previous Def Jam freeze on Windows Vulkan. The captured interval contained 10,266 matched recurring timer callbacks and 10,267 alarm writes with no sampled past-target rearm. Maximum callback lateness was 2.406 ms; maximum observed BQL-held MMIO wait was 2.826 ms. Both exact-source GitHub CI runs passed across Windows, Linux, ARM64, and macOS. The diagnostic process exited with code 0 after 13.8 minutes, before its planned one-hour wait completed; no crash was reported. This was a targeted path check, not a one-hour endurance pass. OpenGL gameplay and save/load were not part of this native check.
Packages: Windows x64 and ARM64, Linux x64 and ARM64 AppImages, macOS universal unsigned, and source. Verify downloaded files with SHA256SUMS. The version in package names and Windows executables is 0.8.136-0-g86db8f664ae7.
xemu 0.8.136-0-g458730bf5373 — DOT_ZW depth correction
xemu 0.8.136-0-g458730bf5373
This release adds the NV2A DOT_ZW fragment-depth correction from PR #264, on top of the Def Jam timer fix from PR #271. The correction validates the four texture stages before depth replacement, preserves the guest's raw shader state, and shares normalized fragment modules across equivalent invalid states. It replaces the old issue-149 draw suppression workaround that was removed separately.
The owner confirmed the Grabbed by the Ghoulies in-game rendering correction. Issue #149 remains open for frame-exact validation of the transient death effect.
Source: main commit 458730bf5373f1f0d027450fef7443e3af7a3ae1. Windows, Linux, ARM64, and macOS packages are built by GitHub Actions from this merged commit. The executable and package version is 0.8.136-0-g458730bf5373.
Validation: The corrected PR head passed hosted CI, including Mesa OpenGL draw tests, Vulkan shader compilation, and all platform builds. On the Windows tester, 160 XISO guest test results reported PASS with matching output hashes across balanced baseline/candidate runs. Ghoulies Vulkan and OpenGL scene runs completed with visible output and no clear sustained frame-time regression. The XISO suite had no pinned correctness oracle and Windows driver caching was uncontrolled, so the runner marked its comparison attempts ineligible; the owner explicitly accepted these limits for this release. Detailed timings and limitations.
Downloads: Windows x64 and ARM64, Linux x64 and ARM64 AppImages, macOS universal unsigned, and source. Check the downloaded files against SHA256SUMS.
PR #264 — Ghoulies depth correction testing build
PR #264 — GBTG depth replacement correction
Testing prerelease from cca8e92, independent of PR #260.
Download and test
Download xemu-pr264-windows-x86_64-cca8e92398.zip, extract it to a separate directory, and run xemu.exe. It is the Windows x64 release executable from the exact-head successful CI run, not a debug build.
Leave the old Ghoulies Advanced compatibility/suppression setting OFF. The correction runs automatically; no shader replacement or new toggle is required. PR #265 separately removes that old workaround and has not been merged.
Restore the existing Ghoulies snapshot and check the 1–2 seconds immediately after returning to the game. Also test a fresh VM boot if snapshot results differ. Register the controller with Start before dismissing the game pause menu.
Change
Implements the missing NV2A DOT_ZW depth-replacement operation in the shared pixel-shader generator. The game restores per-pixel depth from a texture during death-effect rendering; the old generator wrote the quad's geometric depth instead. The replacement uses the preceding/current dot-product ratio, applies the depth range checks, and retains the existing D16/D24 conversion.
Evidence and limits
- Exact-head CI 36593766290: 20/20 jobs succeeded, including the full unit suite.
- Focused local tests: 12 generated-fragment OpenGL execution cases and 7 Vulkan compiler/integration cases passed.
- Windows Vulkan snapshot observations with this head, in debug and release, show the character's head/upper back visible where the earlier build showed a rectangular occlusion. These initial screenshots are not a frame-exact comparison of the transient effect.
- Human validation of the transient death effect remains outstanding. Issue #149 stays open, and PR #264 stays draft. No full-title correctness or bare-metal Xbox parity claim.
- The release does not contain the PR #260 Asset Browser feature set.
Executable SHA-256: 845ada166492723221da924a370ed62cc9f9b401dfd693c47666e634267260f2
Correction PR #264 · Remove old workaround PR #265 · Issue #149
Agent Declaration: Prepared with assistance from Codex / GPT-6.
PR #260 Asset Browser preview — e5609b757f
PR #260 Asset Browser preview
Testing build of PR #260, including its stacked shader-workbench dependencies.
- Commit:
e5609b757f6fcb4add81bc5ef28e1520a303ac0f - Build:
0.8.136-0-ge5609b757f6f - CI: push and PR both passed 20/20 jobs; unit log: 190 passed, 0 failed, 17 skipped.
Try the connected asset viewer
Open Debug → Asset Browser. Discover captured game draws, freeze discovery, inspect a body and suggested related parts, confirm membership, assemble checked parts and enable Follow selected assembly. Keep Captured shaders and materials enabled to inspect the owned shader stages, textures and constants. The inspection camera remains fixed while coherent captured poses update.
This build adds continuous capture of selected stage pairings, publication of complete owned frames, texture-readback sharing, and separate HUD FPS, fresh pose rate and draw-age displays. Save/reopen retains the manually confirmed assembly. See the workflow and support matrix.
Current validation and limitations
Windows Vulkan PGR2 testing rendered a manually confirmed 37-part car with captured shaders, material inputs and display palette; focused driving/steering updated wheel poses. Observed HUD rate was 38–58 FPS, with 10–14 fresh poses/s. The 30 fresh poses/s target remains unmet.
- The reported simultaneous front/rear wheel movement at standstill remains open; it was not reproduced in the saved three-frame diagnostic. This release does not claim a wheel-wobble fix.
- The viewer substitutes an inspection camera and raster bookkeeping. Scene/destination dependencies remain incomplete; it is not exact full-frame replay.
- An all-shader diagnostic reached a resource-transaction/budget failure, and full-session export failed. Selected shader-use extraction succeeded with dependency closure omitted.
- Native OpenGL PGR2, broader LOD changes and duplicate-car correspondence remain unqualified. Unsupported inputs produce an explicit failure.
- Saving a shader replacement does not enable it. Enabled rules can affect all matching uses of that shader within their scope; assembly labels do not establish a persistent per-car rule.
PR #260 remains draft. Native acceptance was incomplete; this prerelease is for human testing.
Downloads
Windows x86_64 and ARM64 ZIPs, Linux x86_64 and ARM64 AppImages/packages, an unsigned macOS universal ZIP, Windows symbols and the source package are attached. All packages come from the exact-head push CI run; Windows release packaging includes the CI PDB conversion step. SHA256SUMS.txt contains the asset checksums. No game assets or private test configuration are included.
Agent Declaration: Prepared with assistance from OpenAI Codex, GPT-6, under user direction.
PR #260 Asset Browser preview — 8eb8003c4c
PR #260 Asset Browser preview — 8eb8003
Testing build from 8eb8003c4c10911a117813d7f5aa67177be8595a. PR #260 remains a draft, stacked on #259 and #241.
Changes
- Update scratch GLB exports the selected part or assembly without entering a filename. It uses
asset-browser/scratch.glbin xemu's user preferences folder and replaces that scratch after a successful export. Failed or canceled export preserves the previous file. - Save GLB as... keeps a separate named copy. Existing saved files are protected against overwrite.
- Live discovery stays armed while the guest is deliberately paused. You can arm capture before resuming a short animation.
- Includes the earlier overlapping vertex-stream decoder and captured display-palette thumbnail corrections.
How to use scratch export
- Open Debug > Asset Browser, enable Live discovery, then freeze when the desired frame is captured.
- Select a part, or confirm and assemble its related parts.
- Choose Update scratch GLB. The status reports its full automatic path. There is no filename prompt.
- Choose Save GLB as... if you want a retained copy. The Capture directory field is for recording packages, not GLB scratch export.
GLB is a diagnostic mesh/material export; it is not a complete shader replay package or a recovered engine asset.
Verification
- Exact-head push and PR CI each passed all 20 jobs, including unit tests and Windows/Linux/macOS builds.
- 28 focused controller cases and four export cases passed strict warnings and ASan/UBSan. Actual UI fixture and affected product translation units passed; leak checking was disabled under the traced local host.
- On the Windows test box, the exact packaged x64 executable restored the newest protected Ghoulies snapshot through an isolated HDD copy, registered the controller with Start, and retained discovery while paused for more than 72 seconds.
- Native Windows export wrote two different selected parts to the same scratch path with no filename entry. A separate saved GLB was validated by header and selected-part manifest; another save to that filename was refused and its bytes stayed unchanged.
- Native scratch execution was qualified on Windows x64. Other platforms have green CI builds, not equivalent native gameplay qualification.
Remaining limitations
The Ghoulies foreground rendering defect is still present. Its four problematic draw occurrences and shared stages are identified, but a GLSL repair preserving the other shader uses has not been established. The existing Advanced #149 option still suppresses matching draws; this build does not convert it into a shader correction.
Engine object identity, automatic player/spider recognition, complete destination/dependency replay, and native live-car/animation fidelity remain unfinished. Use confirmed assembly membership; the occurrence browser does not prove engine ownership. GLB exports contain geometry and supported base textures with fidelity metadata, not complete original shading/animation state.
Windows x64 EXE SHA-256: 69c783b43fa21f9d293e54c2a03d625e151310a08d7c0cdb4d1f9c43f0cd1c16. The Windows zip contains the original CI executable that was tested, without PDB conversion.
Sources: PR #260, push CI, PR CI.
Agent Declaration: Prepared with assistance from Codex / GPT-6.
Shader Workbench preview — 06334cb502
Preview build for human validation of PR #259, including its draft #241 workbench dependency. Source: 06334cb5020c60b2b26a8304a348cce882ae82f0.
Changes
- Fixed the flickering mouse: only the window under the pointer controls the cursor. The game window still hides its idle cursor.
- Added Use game geometry near the top of Live Preview. Checking it captures a matching draw if needed; unchecking restores the synthetic scene. Advance / capture draw refreshes captured geometry while paused. These controls remain visible with the inspector hidden.
- Fixed capture ownership, per-command Vulkan capture, inline streams, request cancellation/re-arming, independent draw-array ranges, effect suppression and sparse bounds.
Try it
Open Debug → Shader Browser → Live Preview, select a current pixel shader, then check Use game geometry. The guest advances until that shader submits a draw and then pauses. Uncheck to compare with the synthetic scene. Use Advance / capture draw to capture another matching draw.
Captured geometry is approximate. Texture and material inputs, constants and vertex outputs remain synthetic. This does not recover a named engine object, original material or complete model. Unsupported geometry returns metadata with a visible message. Connected parts are inspection hints.
Verification
- Exact-head CI and PR CI: all platform builds and unit tests passed.
- Native Windows Morrowind capture, automatic pause and scene switching passed on OpenGL and Vulkan.
- Cursor visibility probe: 202 changes in four seconds before the fix; zero afterward, including Vulkan.
- Paused captured-triangle preview lifecycle test: 32.0 FPS OpenGL / 31.5 FPS Vulkan at 640×480 over two seconds. This is a bounded test, not a sustained FPS guarantee for larger game meshes.
Packages below come from the exact-head CI push run; SHA-256 checksums are included. Windows x86_64 users should download the windows-x86_64.zip package; PDB ZIPs are optional symbols. macOS is an unsigned universal package.
This is a pre-release for validation, not merge approval. PR #259 stays draft pending the full capture-adapter regression campaign and resolution of its draft #241 dependency. See capture behavior and test limits.
Agent Declaration: Implemented and validated with assistance from OpenAI Codex / GPT-6 Astra under user direction.
PR #237 Shader Browser preview (684f00f2d3)
Preview build for merged PR #237, from commit 684f00f2d3959f549d188c4b466c38ebd3955b99.
Stage 1 adds the read-only Shader Browser under Debug → Shader Browser. Database persistence, per-session history, and generated shader artifacts are separate opt-in settings and default to off.
Validation
- Boot a title with OpenGL and Vulkan. Open the Shader Browser and check title/hash IDs, live draw counts, route, and readiness. With all three settings off, confirm no database or artifact directory is created.
- Enable the database, session history, and artifacts. Play, restart, and confirm records reload, sessions remain separate, and generated files appear under
shader-artifacts/. - Exercise pause/reopen, reset, save/load, renderer recreation, and shutdown. Compare output and guest progression with a base build using the same title and save.
The macOS universal ZIP is unsigned. SHA256SUMS.txt covers every attached package.
CI for this exact commit passed all 20 jobs, including unit tests and Windows, Linux, and macOS builds.
PR #228 learned fallback readiness preview c7ce0d3
Preview build for PR #228 learned Vulkan fallback readiness.
- Exact source:
c7ce0d38699cdf0062654ba5e59bc88b2f6cbf93 - CI: all 30 exact-head checks passed
- Windows native synthetic: execution completed, correctness passed, evidence complete, comparison eligible
- Supporting literal per-pass oracle: xemu-perf-tests #44 at
a4a3c7d9231a51e07df30d683b981006a5c6db8e
This is a pre-release for validation, not a claimed performance result. A matched parent/candidate performance campaign is still in progress. Do not treat it as a merge decision or stable release.
[SUPERSEDED] PR #228 preview bc9214d
Superseded by the exact-head 5270e8d preview. Use that release for testing.
This older preview was built from bc9214dddd3b5188aa999f3e268b727e996112a7. Its source tree is byte-identical to the current PR head after a metadata-only commit amend, but it is retained only for traceability.
The replacement contains exact-head Windows and Linux artifacts rebuilt by the fully green GitHub Actions run.
PR #228 exact-head testing build (5270e8d)
Exact-head testing build for PR #228 at commit 5270e8d649b713804a5587e75f083070393acebd.
This replaces the earlier bc9214d preview after a metadata-only commit amend. The source tree is identical, but these binaries were rebuilt by GitHub Actions from the current PR head.
Included changes:
- stable REQUIRED > VISIBLE > PREWARM priority for hybrid shader and pipeline work;
- PFIFO completion wakeups and timed owner-side retry service;
- bounded, paced prewarm with a conservative default window of one;
- owned-GLSL reuse plus distinct byte-limit and temporary queue-full handling;
- targeted result adoption and retained completed artifacts;
- synchronous pipeline-create timing in the existing cost field.
Artifacts:
- Windows x86_64 release ZIP containing the exact CI-built
xemu.exeand license; - Linux x86_64 release AppImage from the same exact-head CI run;
- basename-only SHA-256 manifest.
The Windows executable is archive-compressed rather than modified with an executable packer, preserving the exact CI-tested binary. Synthetic tests, traces, screenshots, and other evidence are intentionally not included.
Status: prerelease for manual validation. Exact-head CI and focused normal/sanitizer suites pass; controlled Windows synthetic testing confirms substantially fewer synchronous pipeline creations without claiming a general FPS increase.
Morrowind correction: the reported 12–14 FPS behavior also affected older builds and was traced to the persisted Hard FPU emulation setting being disabled during unrelated testing. Restoring it restored expected performance. That result was not caused by this shader patch. Repeatable automated Morrowind snapshot infrastructure remains tracked separately in Xemu-Test-Runner #61.