Skip to content

v0.0.136

Choose a tag to compare

@nworkers nworkers released this 07 Aug 14:49
· 143 commits to main since this release

What's Changed

✨ New Features & Emulation (HLE)

  • Emulation & Audio
    • Emulate the PIU10 YMZ280B and route its output to SDL audio (b3dcb5e)
    • Deliver CD playback position to the guest and start track 2 at its true beginning (5f93b64)
  • Graphics & Glide
    • HLE: Implement Glide Combine and TMU state for full alpha and texture accuracy (3047b5c)
    • Implement Glide line drawing and cull modes (2a9456a)
    • Implement safe GlideGateId O(1) switch dispatch and complete Glide API family (73a3122)
  • Target Bring-up
    • Add pumpit2 multisession CHD profile and handle unresolved AOT-DBT direct edges (919ff28)
    • Bring up the pumpit3 target through five HLE gaps to its render loop (211cbfc)
  • Execution & AOT
    • Add AOT-DBT execution and improve SDL host lifecycle (84797bf)
    • Implement Port I/O AOT Fast-Path and Opcode-directed HLE Dispatcher (62c89f8)
    • Native region execution foundation: diagnose single-step wall, prove the interception mechanism (0c7a5ba)
    • Translate AOT segment instructions natively, removing the dominant segmentation exception cost (61d04ae)

⚡ Performance & Optimization

  • AOT & Execution Speed
    • Translate from the live guest arena and cut append cost 10.5x (3552db7)
    • Unblock the post-HLE return path and raise the frame rate 2.19x (e2f6563)
    • Move the performance baseline to Release and raise the frame rate 5.8x (c1087b4)
    • Harden AOT-DBT dispatch and enable native linear spans (d790ab7)
    • Reduce AOT-DBT single-step overhead safely (fa73415)
    • Add guarded AOT segment-pop fast path (18540db)
    • Improve AOT fallback performance and diagnostics (e67a9e7)
    • Improve AOT caching and native execution coverage (fc7ddba)
    • Attribute whole-run execution time and remove the AOT lookup bottleneck (f687886)
    • Drop the redundant per-gate pump rendezvous (a2982d9)
    • Re-baseline the cost profile and cut the Glide rendezvous latency (6101dbe)
    • Optimize Music Select execution boundaries (672e343)
  • System & I/O
    • Keep DOS file handles open across reads (Task 374) (4760c19)
    • Replace Glide GL error polling and find the display limit (Tasks 369-371) (8bf7d52)

🐛 Bug Fixes

  • Graphics (Glide)
    • Fix the corrupted 3D model by connecting Glide vertex depth (6ab688a)
    • Fix Glide LFB rendering and stabilize Win32 AOT execution (ea609ba)
    • Fix Glide background, fog, and LFB rendering (bd5a5c4)
    • Draw Glide sprites at the right scale and color, and implement grHints (9bcba7b)
    • Harden Glide gates and report implementation gaps (7c758b0)
  • System & Inputs
    • Fix the note and background animation (BGA) jumping by preserving owed timer ticks (e341c8f)
    • Fix guest timer delivery and honor PIT cadence (b18e54a)
    • Fix the pumpit3 startup stall and add the instruments that found it (280ed28)
    • Fix JAMMA system and P2 keypad mappings (dc8852f)
    • Classify AOT-DBT RET fallbacks by exclusive cause and fix the next DBT target (f815d2e)

🔍 Profiling & Analysis

  • Bottleneck Identification
    • Find pumpit3's real input cost and bound it with a snapshot (cc21627)
    • Locate pumpit3's dominant cost in one port I/O instruction (8d9b365)
    • Reproduce the pumpit3 startup stall and rule out its two obvious causes (f78b895)
    • Locate the dynamic translation bottleneck in the full-arena snapshot (79691a2)
    • Instrument AOT boundary exits and pin the root cause to segmentation instructions (c4885c3)
  • Cost Attribution & Profiling
    • Attribute pumpit3 arena execution and record the next ten steps (458efdd)
    • Attribute every VEH exit and settle who consumes the arena-entry single step (d789786)
    • Measure the kernel exception round trip and scope the next axis (Tasks 372-373) (d1155a3)
    • Attribute and act on the Glide/exception axis (Tasks 364-368) (3ab6a1b)
    • Attribute execution cost down to dynamic translation on the worker thread (47e1b96)
    • Profile Release execution and Glide bottlenecks (2e502e3)
    • Record aot-dynamic being 14.6x slower than legacy as the next task (c15c362)
  • Investigations & Diagnostics
    • Instrument the CD audio path and trace the stall to our own watchdog (7583fde)
    • Disprove the hidden single-step population and retract 6.5% (Task 376) (99d7016)
    • Settle the texture suspicion with a census and pixel dump (Task 375) (206d414)

🛠 Chore, Refactoring & CI/CD

  • Refactoring
    • Migrate window and CD audio services to SDL3 (26f28fd)
    • Consolidate the execution backends to legacy and dynamic (78366f8)
  • CI/CD & Testing
    • Add tag-triggered build verification and release artifacts on GitHub Actions (c6e9117)
    • Require a version tag on every main merge (35842b6)
    • Require completion in the OpenWatcom sample pass criterion (3b5073c)
    • Refresh the OpenWatcom sample baseline to v0.0.133 (2038829)
  • Configuration & Documentation
    • Default execution to dynamic with no time limit, and make source comments English-only (d78e328)
    • Attribute plan build and move the performance baseline to Release (dcd8937)
    • Document Glide call-volume performance plan (609d77d)
    • Record the GLSL shader review and the Task 377 direction (0e49182)
    • Record next optimization frontier: multi-slot indirect inline cache (b3e7fa2)
    • Add the post on tracing note jumping to lost timer ticks (a19360e)

Full Changelog: v0.0.81...v0.0.136