Tagged versions · what shipped, when
Releases
A short index of every milestone and stability release. Themes, headlines, links to the full notes and the disc image.
A labor of love by Hunter Davis. The project tags milestones every ~10 newly validated scenes and cuts smaller stability releases between them when the runtime needs a fix that doesn’t change the validated set. Below is the short version of what each tag carried — the full notes live alongside the source for anyone who wants the root-cause-and-mitigation depth.
The current release line is v0.8.12-ps1 with
63 / 63 scenes signed off under the
FISHING 1 bar.
On this page
- Latest
v0.8.12-ps1— WALKSTUF1 low frame77/frame130 payload trimsv0.8.11-ps1— Lazy stream-buffer release-regression fixv0.8.10-ps1— WALKSTUF1 low no-shift payload follow-throughv0.8.9-ps1— WALKSTUF1 low in-place payload reductionsv0.8.8-ps1— VISITOR5 high retained-read promotionv0.8.7-ps1— Deterministic BOOTMODE scene selection + Scene Explorer preview stabilityv0.8.6-ps1— WALKSTUF1 / VISITOR3 setup-segment compaction follow-throughv0.8.5-ps1— Full 126-row headless performance matrixv0.8.4-ps1— Custom chapter-select thumbnails for all 63 scenesv0.8.3-ps1— WALKSTUF1 compact foreground performance
- Earlier milestones
v0.8.2-ps1— VISITOR3 guarded-read performancev0.8.1-ps1— clean-rect pressure stabilityv0.8.0-ps1— complete-scene performance baselinev0.7.2-ps1— story-loop walk backdrop guardv0.7.1-ps1— persisted holiday mode and first-run defaultsv0.7.0-ps1— complete scene validationv0.6.0-ps1— ocean ambiencev0.6.1-ps1throughv0.6.13-ps1— the validation-cluster patchesv0.5.0-ps1— Freeplay and debug modev0.4.20-ps1— story-loop walking
- Where to go from here
Latest
v0.8.12-ps1 — WALKSTUF1 low frame77/frame130 payload trims
A performance point release after v0.8.11-ps1. It keeps the restored lazy
stream allocation baseline and promotes two more same-speed WALKSTUF1 low
no-shift payload reductions.
- WALKSTUF1 low advances to v795. Frames
77and130now shrink in-place without moving pack offsets, pack LBA/sectors, or the PS-EXE bucket. - Timing stays exact-flat. W1-low remains
1770/1478/1431, blocking/refill64/20, read time60/272, and due11, while active payload drops879801 -> 799694. - Battle card remains stable. Public rollup is
+0.2708%over target /99.7337%target speed; raw signed rollup is-0.4963%/100.5160%; bands are117green and9yellow.
Full notes · GitHub release · Download .bin / .cue
v0.8.11-ps1 — Lazy stream-buffer release-regression fix
A corrective point release after v0.8.10-ps1. It keeps the W1-low v791
payload baseline, but rolls back the post-release heap-fragmentation experiment
that pinned too much memory before large clean-rect scenes could allocate their
snapshots.
- WALKSTUF1 low renders and measures correctly again. The bad merge pinned
a
256 KBCD sector pool plus boot-time FG stream buffers and caused the post-release W1-low check to skip afterJCSKIP clean-rect-alloc-failed. - Lazy stream allocation is restored. CD sector staging is back to per-read
allocation, FG frame/scratch buffers stay lazy at boot, and W1-low returns
exact-flat to v791:
1770/1478/1431, blocking/refill64/20, read time60/272, due11. - Battle card remains stable. Public rollup is
+0.2708%over target /99.7337%target speed; raw signed rollup is-0.4963%/100.5160%; bands are117green and9yellow.
Full notes · GitHub release · Download .bin / .cue
v0.8.10-ps1 — WALKSTUF1 low no-shift payload follow-through
A performance point release after v0.8.9-ps1. It promotes the current
mainline no-shift payload baseline through
walkstuf1-low-frame76-inplace-v791, while keeping all deterministic boot,
Scene Explorer, Suzy backdrop, and prior performance wins.
- WALKSTUF1 low has the newest in-place payload baseline. Frames
51,49,47,61,62,58,45,37,35,43,41,57,33,67,68,69,32,133,5,141,70,30,6,71,72,142,73,131,74,19,28,138,145,75, and76shrink without moving offsets; timing stays exact-flat at1478/1431, while active payload drops879801 -> 801103. - Battle card remains stable. Public rollup is now
+0.2708%over target /99.7337%target speed; raw signed rollup is-0.4963%/100.5160%; bands are117green and9yellow.
Full notes · GitHub release · Download .bin / .cue
v0.8.9-ps1 — WALKSTUF1 low in-place payload reductions
A performance point release after v0.8.8-ps1. It moved VISITOR5 low into
green, kept the BUILDING2 low and VISITOR3 high wins, and opened the W1-low
in-place payload lane that v0.8.10 continues.
- VISITOR5 low joins high in green. The low-tide row uses the matching
30..46retained-read shape, improving1104/1092 -> 1102/1097. - BUILDING2 low improves again. The
218..229slack-8 row plus v739 draw-tail trim measure1339/1317, overrun22, blocking/read time53/150, reads37, and due misses12. - Battle card improves from v0.8.8. Public rollup is
+0.2708%over target /99.7337%target speed; raw signed rollup is-0.4963%/100.5160%; bands are117green and9yellow.
Full notes · GitHub release · Download .bin / .cue
v0.8.8-ps1 — VISITOR5 high retained-read promotion
A performance point release after v0.8.7-ps1. It keeps deterministic
BOOTMODE scene selection, Suzy backdrop cleanup, and heapless Scene Explorer
preview loading, then promotes the verified VISITOR5 high-tide 30..46
retained-read group.
- VISITOR5 high moves into green. Active loop/target improves
1107/1090 -> 1101/1096, overrun falls17 -> 5, blocking/refill falls16 -> 5, loop reads fall19 -> 18, and due misses remain0. - Battle card improves. Public rollup is now
+0.2867%over target /99.7183%target speed; raw signed rollup is-0.4805%/100.5006%. - Band shape is cleaner.
116rows are green,10are yellow,0orange, and0red. - The next outliers are explicit. WALKSTUF1 low, BUILDING2 high, WALKSTUF1 high, VISITOR3 high/low, and BUILDING2 low remain the main under-99 tactical queue.
Full notes · GitHub release · Download .bin / .cue
v0.8.7-ps1 — Deterministic BOOTMODE scene selection + Scene Explorer preview stability
A stability and operability point release after v0.8.6-ps1. It keeps the
same 126-row headless performance matrix baseline, but fixes two release-risk
surfaces: direct scene booting is now provable from the runtime log, and Scene
Explorer thumbnails no longer need a large heap allocation while paused.
- BOOTMODE scene selection is deterministic and auditable. The PS1 runtime
logs a single early
JCBOOTline with the boot source, explicit scene, seed, loop mode, tide/night/holiday/raft state, island position, and normalized boot text before title/resources/sound side effects. - Headless perf now fails if it measures the wrong scene. The iterator
derives the expected scene from
fgpilot <slug>boot strings and rejects runs that report a differentJCPERF2 sceneor fall through toJCPICK. - Suzy black-backdrop scenes clean up after themselves. Scene-specific backdrop state now clears clean-bg black mode and frees clean-bg rect state on entry/cleanup, preventing the following scenes from losing island/tree background layers.
- Scene Explorer previews stream instead of malloc. Thumbnails load in 16-row chunks through a static buffer, avoiding the fragile 153 KB paused-menu allocation that could leave the explorer text-only after long runs.
- Battle card unchanged numerically. Public rollup remains
+0.3156%over target /99.6902%target speed; raw signed rollup remains-0.4529%/100.4740%.
Full notes · GitHub release · Download .bin / .cue
v0.8.6-ps1 — WALKSTUF1 / VISITOR3 setup-segment compaction follow-through
A performance point release after v0.8.5-ps1. It keeps the
v0.8.5 full 126-row headless matrix as the baseline and adds the
WALKSTUF1 low gap6-prefix + slack-guard promotion, the WALKSTUF1 high
window-prefetch / slack4 guard on the gap-compressed pack, and the
VISITOR3 high/low setup-segment resident copies for frames 131 / 128.
- 126 / 126 rows remain timing-bearing. No row regressed; band shape
(
111green,15yellow,0orange,0red) is unchanged from v0.8.5. - Public rollup
+0.3157%/99.6902%target speed. Down from v0.8.5’s+0.3215%/99.6847%. - Raw signed rollup
-0.4529%/100.4740%target speed. Down from v0.8.5’s-0.4470%/100.4685%. - Stats-version anchors that moved.
walkstuf1-low-prefix-gap6-slackguard-v305,walkstuf1-high-gap1-windowprefetch-slack4-v288,visitor3-high-f131-resident-alias121123-v299,visitor3-low-f128-resident-seg27-v302.
Full notes · GitHub release · Download .bin / .cue
v0.8.5-ps1 — Full 126-row headless performance matrix
A performance/methodology point release after v0.8.4-ps1. It keeps the
custom Scene Explorer thumbnails and scene-page reconciliation from the
chapter-select grind, then promotes the current headless matrix as the
public baseline.
- All 126 high/low rows are timing-bearing. The matrix now has active-loop timing for every routed scene/tide variant: 63 scenes x 2 tide rows.
- Public rollup is effectively at native speed. The public-capped average
is
+0.3184%over target /99.6876%target speed; the raw signed optimization matrix is-0.4501%/100.4714%. - The methodology has removed about 17.08 over-target points. Since the
compact full-matrix baseline, the accepted promotions add about
12.59target-speed points while keeping the visual + audible scene bar intact. - The missing-scene confusion is closed. MARY1/2/3 and SUZY1/2 are
measured and green;
suzy3is not a standalone Johnny Castaway scene route. - Latest VISITOR3 low probe promoted; prior misses remain recorded. The v302 frame-128 resident-segment copy joins the VISITOR3 v299 and WALKSTUF1 v288/v289 wins, while rejected scalar prime and hand-table probes stay in the experiment log.
Full notes · GitHub release · Download .bin / .cue
v0.8.4-ps1 — Custom chapter-select thumbnails for all 63 scenes
A content-and-UX point release. The in-game Scene Explorer now ships a custom on-PS1-captured thumbnail for every one of the 63 scenes, and the scene-page metadata across the website is reconciled against what the discs actually play.
- Every Scene Explorer slot has a custom thumbnail. Each pack was booted under DuckStation, played to a representative frame, captured at native resolution, and encoded as a 320×240 RGB555 SCR. No scene falls back to the auto-generated frame.
- Scene titles and bodies match the on-PS1 packs. Many of the prior caption-mapping audit guesses were wrong once watched on hardware. Per- scene commits lift the “(Guess.)” hedging on every page where it appeared.
- Several caption-to-scene mismaps caught. “He catches a boot” is MARY 2, not FISHING 2; the octopus-steals-fish gag is FISHING 3, not the audit’s “crab snaps his nose”; coconut-plane-hit is VISITOR 5, not VISITOR 4; jogs-around-island is WALKSTUF 3, not WALKSTUF 1.
- One missing-manifest bug fixed mid-loop.
config/ps1/cd_layout.xmlonly listed 42 of 63 SCRs; the other 21 were on disk but never made it onto the CD. Manifest now lists all 63. scripts/apply-scene-correction.pyis the new in-loop tool. Single command updates all five sources of truth per scene (page index.md, scenes.yml notes, scene-status.md Notes, thumbnail SCR, progress tracker) in one pass, with idempotent failure mode so a re-run can’t silently clobber a prior fix.
No perf code or pack content changed; the 120 timing-bearing rows on
/perf/ average the same +0.5576% public
over target / 99.4669% public target speed as v0.8.3-ps1. Scene
validation scope is unchanged: 63 / 63 remain signed off.
The retrospective on the loop is at /lab/chapter-select-grind/.
Full notes · GitHub release · Download .bin / .cue
v0.8.3-ps1 — WALKSTUF1 compact foreground performance
This point release promotes the WALKSTUF1 compact foreground pack pass and records the latest VISITOR3 follow-up as a non-promoting threshold closure.
- WALKSTUF1 gets compact FGP3/v4 packs. Both tides move from PAL4/FGP2 to
padded compact FGP3/v4 restore-minus-current packs while preserving the
1535263byte pack footprints, original LBAs, and the215040byte PS-EXE bucket. - The outlier gap drops sharply. WALKSTUF1 high improves
1592/1406 -> 1491/1426; low improves1604/1407 -> 1489/1427. - Visible CD pressure falls. High blocking drops
275 -> 85; low blocking drops270 -> 86; loop reads drop from134/132to69/69. - Battle card is now public-capped at native speed. The 120 timing-bearing
rows average
+0.5576%public over target /99.4669%public target speed; the raw signed CSV remains-0.2497%/100.2899%for optimization work. - VISITOR3 threshold probing is closed for this baseline. Lowering the
fallthrough guard from
6to5VBlanks stayed exact-flat, so the runtime keeps the accepted guard and moves future VISITOR3 work back to generated scheduler/data-shape lanes.
The post-validation perf retrospective at /lab/from-87-to-99-5/ covers v0.8.0 → v0.8.3 as one continuous arc.
Full notes · GitHub release · Download .bin / .cue
Earlier milestones
v0.8.2-ps1 — VISITOR3 guarded-read performance
This point release promotes the next VISITOR3 high-tide guarded generated-window read group and ships the current upstream website/docs polish with the latest performance battle-card numbers.
- VISITOR3 high visible CD pressure improves. The guarded
138..162read window lowersblocking_vb 294 -> 293,loop_reads 40 -> 39, andloop_read_vb 335 -> 332. - Loop cadence stays fixed. VISITOR3 high remains
1406/1019VBlanks withoverrun_vb=387andprefetch_overrun_vb=7. - Battle card remains near target. The 120 timing-bearing rows average
+0.5706%over target /99.6769%target speed. - Site/docs are current with
main. The release includes the latest site navigation, glossary, lab/feed, structured-data, and page-TOC polish.
The post-validation perf retrospective at /lab/from-87-to-99-5/ covers this and the v0.8.3 follow-on as continuations of the v0.8.0 baseline arc.
Full notes · GitHub release · Download .bin / .cue
v0.8.1-ps1 — clean-rect pressure stability
A randomized long-run soak exposed a scene-load freeze after a large split
clean-rect save. The pressure estimator was counting only foreground pack
bounds, not the ocean wave band or the upper/lower split actually saved for
restore. v0.8.1 fixes that accounting and keeps the complete-scene
performance baseline intact. The retrospective on what the soak found that
the matrix didn’t is at
/lab/v081-mary4-freeze/.
- Scene-load freeze fixed. Large clean snapshots now account for wave-band expansion and split rects before allocation.
- Pressure relief is generalized. The fix covers every random-position scene with the same large-clean risk, not just the failing MARY4 route.
- Focused soak routes pass. MARY4 and FISHING1 pressure routes complete
with
scene-endandalloc_fail=0.
Full notes · GitHub release · Download .bin / .cue
v0.8.0-ps1 — complete-scene performance baseline
The first release after the post-validation polish phase to promote the headless optimization methodology as a release baseline. All 63 scenes stay green under the visual + audible bar, and all 126 high/low variants are now routed through the perf matrix. Timing-bearing rows now average +0.9% over target / 99.5% target speed — about 16.5 percentage points of over-target gap closed since the compact full-matrix baseline. The retrospective on which experiments moved that line is at /lab/from-87-to-99-5/.
- 63 / 63 scenes still validated after the post-validation bugfix pass.
- 126 / 126 variants routed, 120 carrying active-loop timing.
- Performance is near target —
+0.9%average over target,99.5%target speed. - ACTIVITY 9 is now an optimized validated outlier — wide-boat stitch + padded FGP3 residual packs + scoped low-tide read group.
- Random-run clean-rect pressure fixed — the BUILDING4 soak regression that exposed walk-clean memory pressure now releases the stale walk clean buffer, retries the large scene clean snapshot, and recaptures the walk baseline cleanly.
Full notes · GitHub release · Download .bin / .cue
v0.7.2-ps1 — story-loop walk backdrop guard
A randomized story-loop walking regression let Johnny walk over water and leave repeated walking poses when the next scene’s island backdrop state differed from the framebuffer left by the previous scene. The fix was a backdrop key — the runtime remembers the tide / raft / night / holiday / island position that produced the previous frame and refuses to start a walk unless the next scene matches.
- Walks now require a matching backdrop key. Inter-scene walks only run when tide, raft, night, holiday, and island X/Y all match the previous rendered scene.
- Scene-policy changes force a clean scene load. Moving from a variable-position scene to a fixed/left-island/no-raft/tide/holiday variant inside the same sequence no longer draws Johnny over stale water.
- Menu and freeplay resets clear the walk context. Scene Set changes, Scene Explorer launches, and Freeplay exits all invalidate the remembered backdrop.
v0.7.1-ps1 — persisted holiday mode and first-run defaults
Memory-card schema bumped to v6 to separate the holiday policy from the manual override, so the pause menu can offer five distinct holiday modes. New boots default to AUTO DATE:ORIG4 — Sierra’s original four overlays, automatic by date.
AUTO DATE:ORIG4is now the fresh/no-card default. Reflects the source material’s holiday set.- Holiday mode is persisted separately from manual selection. Memory card schema v6.
- Walking holiday z-order corrected. Story-loop walks now stamp holiday overlays before Johnny so default decorations don’t paint over the walking sprite.
v0.7.0-ps1 — complete scene validation
The 63-scene grind ended here. Every routed scene the original Sierra game had now plays pixel-perfect on the PS1 with synced SFX across every applicable variant. The retrospective on what the daily loop actually looked like is at /lab/the-63-scene-grind/.
- 63 / 63 scenes validated. The live ledger is fully green under the FISHING 1 reference bar.
- ACTIVITY 9 completed the sweep. The final scene needed a wide-boat repair path because
BOAT.PSBcan extend past the legacy 640px scene clip. - Landing page now uses the ACTIVITY 9 boat screenshot. The hero image shows the final validated scene running in the PS1 build.
v0.6.0-ps1 — ocean ambience
A 20-second CC0 ocean-loop sample plays on a dedicated SPU voice underneath every scene. Toggleable from the pause menu; choice persists to the memory card. Zero per-frame CPU cost — the SPU loops the sample in hardware while the main CPU keeps doing playback work.
- Looping ocean ambience on SPU voice slot reserved at boot.
- Pause → Accessibility → Ocean: ON / OFF, persisted to memcard.
- Bootmode token for capture/test discs that need a known-state run.
v0.6.1-ps1 through v0.6.13-ps1 — the validation-cluster patches
→
The stability releases between v0.6.0-ps1 (ocean ambience) and
v0.7.0-ps1 (complete scene validation) are scene-by-scene
bring-up tags rather than feature milestones. Each one carries a
specific scene clearing the FISHING 1 bar (FISHING 5, MARY 5,
VISITOR 4–7, and others) plus the small bugfix needed to get the
scene through. They aren’t enumerated here because the per-scene
narrative belongs in the history page
and the scene ledger tracks the
final state. The full list of GitHub-tagged builds in this cluster
is at huntergdavis/johnny-castaway-ps1/releases.
v0.5.0-ps1 — Freeplay and debug mode
The release that turned the project from a passive screensaver port into something a player could touch. Direct-control Johnny via D-pad / analog, gag and visitor debug catalogs in the pause menu, controllable world state, and a no-allocation steady-state freeplay loop.
- Freeplay mode with D-pad / analog walking, fishing, and L2/R2 speed modifiers.
- Pause-menu debug catalogs for gags, visitors, sound effects, controls, world options, accessibility, and system pages.
- Frog-clock loading transitions keep the screen coherent between scene swaps.
- Steady-state freeplay loop does not allocate. Important because freeplay can run indefinitely.
v0.4.20-ps1 — story-loop walking
The first build where Johnny no longer teleports between finished scenes. The PS1 screensaver loop now carries his spot and heading forward, runs Sierra’s original walk_data.h route table, and visibly walks him across the island before the next FG2 scene begins.
- Story-loop walking wired into the PS1 screensaver loop using the original route table and
JOHNWALKsprite bank. - The ocean keeps animating during walks, and active holiday overlays persist across scene → walk → scene transitions.
- Palm-tree occlusion works. The trunk and leaves are re-stamped over Johnny when the route passes behind the tree.
- Tight, persistent walk erase buffer (340×224, ≈149 KB) replaces the early build’s per-walk free/malloc churn that fragmented the heap.
Where to go from here
- Play is the download page — latest
.bin/.cue, DuckStation quickstart, controller map. - The FAQ covers the recurring questions: what this is, why PS1, is this legal, do I need Sierra files, real-hardware support.
- The scene ledger is the live status of every scene at the current release.
- The history page is the longer narrative — pre-port era, first PS1 attempts, the hybrid pivot, the 63-scene grind.
- The devlog is the daily worklog. Releases are the milestones; the devlog is the run-up.
- Older releases (
v0.3.xand earlier) aren’t included above because they predate the per-version release-notes habit. Their commit messages and the history page cover the same ground.
The full list of all tagged releases on GitHub is at huntergdavis/johnny-castaway-ps1/releases.