Author-written answers
FAQ
This is the only conversation surface. There's no comments box, no Discord, no Discussions tab — read on.
This page is information, not a forum. Questions and answers are written by the author, not crowdsourced. Three sections: about the project, running it, and the original game.
On this page
About
What is this?
A port of Sierra’s 1992 Johnny Castaway screensaver to the original PlayStation. It runs on real hardware and on DuckStation. 63 of 63 scenes are validated as of v0.8.12-ps1.
Why PS1?
The hardware has roughly the same headroom as a 1992 PC, but a totally different graphics pipeline. The fun was in the gap — making a 1992 Windows screensaver render natively on a PS1 GPU that doesn’t know what BMPs are.
Will you port other Sierra screensavers?
No plans. Johnny Castaway is a special case for me; I’m not shopping for the next one. If someone else wants to take what’s here and port Surf’s Up, that would be cool, but it’s not where I’m spending evenings.
Is this legal?
The code in the repository is GPL-3.0 and entirely original
(or derived from other GPL/MPL code with attribution). The
Johnny Castaway character and original Sierra assets are not
included with the released disc image; the host build requires
the user to supply their own original Sierra data files
(RESOURCE.MAP, RESOURCE.001). The released .bin/.cue
contains pre-baked playback packs — derived data, no Sierra
source files. See /legal/ for
the licensing companion and
/lab/fan-port-in-public/
for the long-form essay on what “shipping a fan port in 2026”
actually looks like — Sierra’s permission, the GPL-3.0 / MPL-2.0
license stack, and the “if you paid for this, you were cheated”
voice that keeps the whole thing honest.
Can I sponsor or donate to this project?
No. The project does not accept sponsorships, tips, or donations. The in-game credits read in part “if you paid for this, you were cheated. Open source and free.” — that’s the whole stance. The code lives on GitHub under GPL-3.0; the disc image is a free download from the GitHub release page. There is no Patreon, GitHub Sponsors, Ko-fi, or PayPal link, and there will not be. The work is the point.
What does “63 / 63 scenes validated” mean?
Each scene needs a clean host capture, a clean PS1 replay
through every variant, and a no-corruption second pass at
native resolution. That’s the project’s “FISHING 1 bar” —
pixel-perfect visuals plus synced SFX, signed off by human
review across every applicable variant flag (night, low-tide,
holiday, raft-stage). It is a stricter bar than “it ran once
without crashing.” The scene ledger
is the source of truth; at v0.8.12-ps1 every row
clears the bar. Performance — whether each scene hits its
target frame budget — is a separate ledger at
/perf/ on purpose.
Running it
How do I run it?
Download the .bin and .cue,
drop both files into a folder, open the .cue in DuckStation.
That’s the whole quickstart.
Do I need original Sierra files?
Not for the released .bin/.cue. End users get pre-baked
playback packs on the disc image and never need a Sierra file.
Yes, for the host build used during development. If you’re
compiling from source and want host-mode capture, you need
RESOURCE.MAP and RESOURCE.001 from a legal Johnny Castaway
1.0 install. The repository does not ship them.
Does it work on real PS1 hardware?
Yes — smoke-tested on a SCPH-7501 via the TonyHax softmod path. Your mileage may vary; treat any boot success as a small miracle. The full device matrix — tested cadence, console model, boot path, media — is at /docs/devices/.
Which emulators are supported?
DuckStation is the only one tested every commit. PCSX-Redux should work. ePSXe is unverified. The release smoke gauntlet runs in headless DuckStation, so that one is the reference. /docs/devices/ has the fields-table reference: tested cadence, platforms, BIOS, and the should-work-unverified and unsupported lists.
Does it run at native rate?
At v0.8.12-ps1 the headless-perf battle card averages 99.7% target speed across all 126 timing-bearing scene/tide rows — close enough that most scenes hit their original frame budget on PS1 hardware. The remaining gap is concentrated in a small set of high-leverage scenes (wide-action, clean-rect-heavy frames) and is the active work between milestone tags. The battle card shows the per-scene timing — sortable, color-coded; the retrospective walks through how the matrix moved here from the compact baseline of 87.1%.
Where do I file bugs?
If you must, the issue tracker is at huntergdavis/johnny-castaway-ps1/issues. Bugs are tolerated, not invited. There is no contributor onboarding process and no “good first issue” label — see the non-goals on About. When you file, name the device (emulator + version, or real hardware model) — the devices reference lists which paths are tested every commit vs unverified, so the report lands faster if it pins which it was.
For security-relevant reports (build/release supply-chain concerns,
the published .bin / .cue disc image being mishandled by a
download mirror), prefer the
GitHub Security Advisories
channel named in
/.well-known/security.txt.
That’s the RFC 9116 path for private disclosures; public issues
remain on the tracker above.
Original game
Where does the caption text come from?
The closed-caption text was authored fresh for this port from scene content. It is not lifted from any prior corpus. The full reference manual is at /docs/captions/; the caption audit shows the confidence level of every ADS-tag → caption mapping (30 HIGH / 21 MED / 12 LOW as of v0.8.12-ps1).
Why does the scene title differ from the on-screen caption sometimes?
Two different sources of truth, and they don’t always agree.
The scene-page title at /scenes/<slug>/ is what the pack
actually plays on PS1, confirmed during the
v0.8.4-ps1 chapter-select grind.
The on-screen caption that draws in the dark band at the bottom of
the framebuffer is whatever captionSceneMap[] in
src/ps1_captions.c
routes that ADS+tag to.
For most scenes those line up. For a few they don’t, because the
2026-04-26 caption audit picked its mapping from text alone — without
runtime evidence of which pack played which gag. The clearest example
is FISHING 2: the on-screen caption block says “He catches a boot,”
but the on-PS1 pack reels in a Titanic-stenciled life preserver. The
“boot” line actually fits MARY 2, where Mary the mermaid swims up
while Johnny is fishing and he ends up reeling in a boot after the
confusion.
The post-validation runtime corrections section at
/docs/captions/
lists the named mismaps. Repointing captionSceneMap[] so the
on-screen caption matches the on-PS1 gag is open work — v0.8.4-ps1
fixed the website’s description of every scene, not the runtime
mapping itself.
Why are there 36 holidays now instead of 4?
The original Sierra game had 4 baked-in holiday decorations
(Christmas, New Year, Halloween, St. Patrick’s Day). This port
extends that to 36 US holidays via a code-generated table and a
pure-algorithm date core (Meeus for Easter, Nth-weekday math for
the others). No external date library, no expiring tables, works
for 100+ years. The full reference manual is at
/docs/holidays/; see
holidays.yml and src/holidays.c in the repository for the
source data and the codegen output.
How do I jump to a specific scene?
Open the pause menu with Start and choose Scene Explorer. Step through with LEFT / RIGHT (one scene at a time) or L1 / R1 (one scene family at a time — Fishing, Johnny, Mary, Visitor, Activity, Stand, Walkstuf, etc.). Cross plays the highlighted scene once; Triangle plays it on a loop. Circle or Start backs out of the picker.
Each entry shows a captured-on-PS1 thumbnail and the scene title.
The 63 thumbnails ship as SCR\SX<abbrev><tag>.SCR files on the
disc; each one was captured during the
v0.8.4-ps1 chapter-select grind
so the picker is showing real on-PS1 footage of the pack, not a
generated frame. Full reference at
/docs/pause-menu/#scene-explorer.
What’s faithful to the original, and what’s added?
Faithful: every scene the original had, in the original order, with the original variants. The art is unchanged. The holidays’ visual style matches the existing 4 (Sierra retained the original sprites; the new ones were authored to fit).
Added: a real pause menu reachable with Start (the original had none), with sub-screens for Scene Set, Scene Explorer, Freeplay Options, Controls, World Options, Holidays, Set Island Position, Accessibility, Sound Test, System, Set Time / Date, and Set RNG Seed. Closed captions (off by default; see /docs/captions/). Thirty-two additional holidays via a code-generated table and pure-algorithm date core. Story-loop walking between scenes (v0.4.20-ps1) — Johnny no longer teleports. Freeplay / debug mode (v0.5.0-ps1) where the player drives Johnny directly, with gag and visitor catalogs. Optional ocean-ambience loop on a dedicated SPU voice (v0.6.0-ps1). Scene Set pool selector for filtering the random rotation by family. Frog-clock loading transitions between scene swaps. A full Credits page that names the prior ports and toolchain authors this build stands on.
Related pages
- Play — the canonical download + quickstart page for the “How do I run it?” answer.
- Scenes — live ledger with per-scene case studies for the “What does 63 / 63 validated mean?” answer.
- Performance battle card — 126-variant matrix with sortable, color-coded target speed for the “Does it run at native rate?” answer.
- Legal — the canonical licensing surface (GPL-3.0 + Sierra disclaimer + takedown procedure) for the “Is this legal?” answer.
- Credits — the full attribution behind the “What’s faithful, what’s added?” answer above: prior ports, toolchain authors, AI sub-agents, fonts, ocean ambience source.
- About — the project overview if you want the long-form version of “What is this?”.
- Docs — twenty reference manuals behind every “how does X work?” question (build, captions, holidays, pause menu, freeplay, walks, regtest, scripted input, performance, hardware, devices, audio, infrastructure, file formats, AI sub-agents, vision-classifier, API mapping, dev workflow, feeds + well-known endpoints, glossary).
- Devlog — dated, unedited worklogs for the day-by-day “when did X happen and what was tried first?” question.
- Lab — seventeen feature-length retrospectives for the “but why did it end up that way?” question, with the benefit of hindsight the worklogs above deliberately lack.
- Glossary —
vocabulary anchor for terms (
FG2 pack,FISHING 1 bar,target speed,host build) used throughout the answers above.