open-scrantic
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Pass
- Code scan — Scanned 8 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Reverse-engineered Rust reimplementation of the Johnny Castaway screensaver (Screen Antics, Sierra/Dynamix, 1992) for Windows, macOS and Linux
🏝️ Open Scrantic
Johnny Castaway, the classic 1992 screensaver, running natively on Windows, macOS and Linux.
Open Scrantic brings the original Screen Antics: Johnny Castaway screensaver (Sierra/Dynamix, 1992)
back to modern computers: a free, open-source Rust reimplementation of the classic Windows 3.1
screensaver. Watch Johnny go about his days on his tiny island while a story unfolds from
one day to the next, with the same behavior as the original.
Get started · Settings · FAQ · Why ·
For developers · AI disclosure · Legal
[!IMPORTANT]
You need your own copy of the original screensaver files. This project does not include them
(see What you need).
Get started
Download the program for your system from the
latest release:System File Windows open-scrantic-windows-x64.exemacOS open-scrantic-macosLinux open-scrantic-linux-x64Put it in the same folder as the three original screensaver files (
SCRANTIC.SCR,RESOURCE.MAP
andRESOURCE.001).Run it. It opens in a window; press Esc to exit. Start it with
--fullscreento fill the
screen.
The program is not code-signed, so your system may warn about it.
- Windows: in the SmartScreen window, click More info, then Run anyway.
- macOS: open Terminal in the folder and run
chmod +x open-scrantic-macos && xattr -d com.apple.quarantine open-scrantic-macos, then./open-scrantic-macos. - Linux: run
chmod +x open-scrantic-linux-x64, then./open-scrantic-linux-x64. If it complains
about a missing sound library, install ALSA (libasound2on Debian and Ubuntu).
What you need
The three files from the original Screen Antics: Johnny Castaway installation (Windows 3.1), all in
one folder next to the program:
| File | Size | What it is |
|---|---|---|
SCRANTIC.SCR |
295,952 | the original screensaver program |
RESOURCE.MAP |
1,461 | index of the screensaver's resources |
RESOURCE.001 |
1,175,645 | the images and animation scripts |
| File | SHA-256 |
|---|---|
SCRANTIC.SCR |
7811b526b36bba2f08326d7a680f2f063190b4278e5a36393fde5a02080b0262 |
RESOURCE.MAP |
3d9ec330aab96bbe5a44ce34f5945703862e82b195088590b7adfef5d7345da7 |
RESOURCE.001 |
df9c2213f7c0abacf4e302cb53a476f9f220579c07ba350b167e351eed548eae |
Run shasum -a 256 SCRANTIC.SCR RESOURCE.MAP RESOURCE.001 (macOS) or sha256sum (Linux) and compare.
On Windows, use certutil -hashfile <file> SHA256.
Settings
Options and story progress are stored in SCRANTIC.INI, next to the program. It is created on the
first run and rewritten when you exit normally, so edit it only while the program is closed. Keys are
case-insensitive.
Options (0 = off, 1 = on; default 1):
| Key | Effect when off |
|---|---|
Background |
no island or ocean background |
Clouds |
no clouds in the sky |
Waves |
no shore waves or ocean whitecaps |
Sounds |
sound effects muted |
To start over, delete SCRANTIC.INI. If it contains an invalid value, it is replaced by the
defaults, story progress included.
Maintained by the program; edit only to force a chapter or time of day.
| Key | Default | Meaning |
|---|---|---|
NumDays |
0 |
story chapter of the day, 1–11; advances once per calendar day |
Introduction |
0 |
next chapter to show; the chapter plays when it is <= NumDays |
CurrentYear, CurrentMonth, CurrentDay |
0 |
date of the last run, used to detect a new day |
StartTime |
900 |
start of the 16-half-hour day/night cycle, as HHMM |
An out-of-range NumDays (below 2 or above 11) restarts the story at chapter 1 on the next day
change.
FAQ
Why do I need the original files?
The art, animation scripts and sounds are copyrighted by their owners. This project reimplements
only the engine and reads those assets when it runs.
Does it work with any build of the screensaver?
No. The loader checks known strings in SCRANTIC.SCR and rejects other builds of the executable.
Where is my progress saved?
In SCRANTIC.INI (see Settings).
Why this exists
Because it's cool, and because it's nostalgic. Johnny Castaway takes me back to my childhood, to
simpler times, and I wanted it to keep running on the computers we use today, for me and for anyone
else who remembers it.
About the project
Open Scrantic is a reverse-engineered reimplementation of Screen Antics: Johnny
Castaway (Sierra/Dynamix, 1992), rebuilt from the disassembly of the original Windows 3.1
screensaver. The program contains only the engine logic.
SCRANTIC.SCR ──► assets::exe ──► sounds, scene catalog, walk routes, RNG seed
RESOURCE.MAP ─┐
RESOURCE.001 ─┴► assets::resource ──► images, palette, TTM/ADS scripts
│
engine: story planner ──► ADS scheduler ──► TTM frames ──► canvas
(calendar, chapters) (z-order, tags) (draw, sound) │
winit + softbuffer + rodio
The disassembly is the ground truth for behavior, including the original 16-bit arithmetic and random
number generator. Recovered formats, VM semantics, story rules, timing and the deliberate deviations
(for example, full-frame redraw instead of dirty rectangles) are recorded indocs/ENGINE.md. The original settings dialog is not reimplemented; options live
in SCRANTIC.INI.
For developers
Build from source
Requires Rust 1.99.1 (pinned in rust-toolchain.toml). On Linux, also install the ALSA headers andpkg-config (libasound2-dev pkg-config on Debian and Ubuntu).
cargo build --release
cp /path/to/install/{SCRANTIC.SCR,RESOURCE.MAP,RESOURCE.001} target/release/
target/release/open-scrantic
The screensaver files and SCRANTIC.INI are always read from the directory of the executable.
| Option | Effect |
|---|---|
--fullscreen |
start fullscreen instead of windowed |
--dedither |
blend the 1992 checkerboard dithering into solid colors |
--soft-audio |
improve the sounds: resample, hide the 8-bit hiss, fade cuts |
-V, --version |
print the version and exit |
-h, --help |
print the usage and exit |
The release profile is optimized and portable (fat LTO, a single codegen unit, panic = "abort",
stripped symbols). For a binary tuned to the build machine only (it may not run on older CPUs):
RUSTFLAGS="-C target-cpu=native" cargo build --release
Development
OPEN_SCRANTIC_DEBUG=1 target/release/open-scrantic # prints each session's plan
cargo run --release --example snapshot -- /path/to/install /tmp/out 2000 100 1000 42 # headless PNG render
Architecture (the full write-up, with the data flow and how a frame is produced, is indocs/ARCHITECTURE.md):
src/assets/— reading the original files: the Dynamix resource archive (RLE/LZW, BMP, SCR,
PAL, TTM, ADS) and the NE executable (WAVESFXnsounds and data-segment tables).src/engine/— the engine: TTM VM (ttm.rs), ADS VM and scene scheduler (ads.rs), island
and ambient animation (island.rs), walking (walk.rs), story planning (mod.rs), the original
random number generator (rng.rs), drawing primitives (gfx.rs), INI settings (config.rs).src/main.rs— window (winit + softbuffer), clocks and input;src/present.rs— frame to window
pixels (dedithering, scaling);src/audio.rs— sound (rodio).
See AGENTS.md for the full architecture notes and conventions.
Contributing
Run these before sending changes; warnings fail the build (Cargo.toml denies them):
cargo clippy --all-targets
cargo fmt --check
OPEN_SCRANTIC_DATA=/path/to/install cargo test
Commits follow Conventional Commits. Never commit screensaver
data. When porting more logic, cite the original address in the comment (seg10:1acb, DS:1756),
as existing code does.
Releases
CI (format, clippy, release build on Linux, macOS and Windows) runs on every pull request and push tomain. A release is cut manually from the Release workflow (Actions tab): it derives the next
version from the Conventional Commits since the last tag (git-cliff), builds the three binaries,
scans them with VirusTotal, commits the updated CHANGELOG.md, tags the version and publishes the
GitHub release with the binaries and their SHA-256 checksums. If no commit since the last tag
deserves a release (feat, fix, perf, refactor, docs), nothing is published.
AI disclosure
Generative AI was used throughout the development of Open Scrantic. The project was built with
Claude Code (Anthropic) together with
REA: Reverse Engineer Anything, a reverse-engineering toolkit
exposed to the model. Together they were used to disassemble and decompile the originalSCRANTIC.SCR, recover the resource formats and script semantics, and write the Rust code, tests and
documentation. The developer directed the work and reviewed and integrated the AI-assisted results,
checking the behavior against the original screensaver.
Legal notice
Screen Antics: Johnny Castaway is a trademark and copyright of its respective owners (Sierra /
Dynamix). This is an independent, non-commercial interoperability project, not affiliated with or
endorsed by them. It does not include or distribute any original screensaver data.
License
Source code under the MIT License.
Made in Campinas, Brazil 🇧🇷 with ❤️, Claude Code and
REA
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found