Golden Balloon 1.0.3
Golden Balloon 1.0.3 closes a family of texture, glyph, and Remastered
composition defects found after 1.0.2. Restored remains the default and gameplay
timing is unchanged. No game data is included.
Released 2026-08-02.
What changed
- Texture cache entries now describe the complete uploaded image. Source
row pitch and span, palette, format, dimensions, LOADBLOCK row layout, SDF
derivation, mip policy, and cutout policy all participate in cache identity.
Recycled GPU texture IDs also invalidate their sampler memo before upload.
This removes first-use-wins behavior that could bind old pixels or filtering
after menu/level asset churn. - WebGPU cache eviction cannot inherit a stale material or pipeline. The
redundant-bind trackers are cleared before releasing a cached bind group or
pipeline. A native implementation may recycle opaque handle addresses; the
old ordering could mistake a replacement for the object already bound and
skip a required bind. - Remastered never applies world finishing to the HUD. At 1× render scale,
or when the render-pixel budget clamps supersampling to 1×, terminal HUD and
text are now composed after grading and tonemapping just as they are at 2×.
The maintained GL/WebGPU gate proves 8,350 opaque HUD pixels are byte-exact
across the finish A/B at both scales while the world changes materially. - Cutout mipmaps preserve the silhouette the GPU actually draws. Mip
coverage previously used alpha 128 while GL, WebGPU, and Metal discarded at
a strict 0.19 boundary (RGBA8 alpha 49). One shared contract now drives every
shader and the CPU mip reducer, preventing masked foliage, fences, decals,
and similar details from changing thickness or disappearing with distance. - Restored is consistently the safe default. Native defaults, CLI help,
launcher copy, browser copy, README, and tests now identify Remastered as an
opt-in work-in-progress mode. The reserved TexturePack setting remains
parseable for forward compatibility but is hidden until a loader exists. - The 1.0.2 door-numeral fix is now structurally guarded as an ownership
rule. Per-door and racer material choices remain draw-local; native code
cannot reintroduce the shared-model mutation. The real Adventure GL/WebGPU
oracle still proves stable 1/2/3/5 requirements and distinct final glyphs. - The corruption gates are fail-red and backend-complete. Odd-row texture
decode now runs from isolated configuration/save directories on both GL and
WebGPU, with deliberately broken decode controls. Runtime SDF, door glyph,
moving mip, cache-ownership, and 1×/2× HUD composition checks cover the
associated failure modes rather than one screenshot.
What did not change
- WebGPU remains the proven native and browser default. OpenGL remains an
explicit compatibility/diagnostic backend. - Original remains Recommended / Proven. Every non-Original frame limit is
still Experimental — Under Construction and changes host pacing/input
opportunities only; it does not increase unique visual FPS. - The macOS artifact remains intentionally unsigned by a Developer ID. It is
still sealed inside-out and the finished DMG must pass the read-only-mounted
LaunchServices/WebGPU, dependency, deployment-target, and capture checks. - Existing saves, ROM support, controls, simulation, input, events, and audio
timing are unchanged. - Windows still lets wgpu-native choose Vulkan or Direct3D 12 automatically,
and still requires reasonably short, ASCII-only app/ROM paths. Explicit API
selection, richer adapter diagnostics, wide-character filesystem APIs, and
a reviewed application manifest remain deferred to a future portability
release.