Case study
Open Scrantic: reconstructing the Johnny Castaway screensaver engine
Reconstructs the Johnny Castaway screensaver engine in Rust, with author-disclosed REA and Claude Code use. It reads original files to run recovered animation scripts and calendar-based story state on modern desktops; documented deviations and limited tests stop short of complete behavioral equivalence.
Requirements and limitations
- Reviewed at v0.3.0: this is a Windows 3.1 screensaver-engine reconstruction, not a game port. The author reports recovering formats and TTM/ADS script semantics from disassembly, with human-directed REA/Claude Code work and comparisons against the original. Those reports do not establish exhaustive parity or an independent agent-performance result.
- Builds pin Rust 1.99.1; Cargo declares minimum Rust 1.99 and edition 2024. The project targets Windows, macOS and Linux using winit, softbuffer and rodio. Linux builds also require ALSA development headers and pkg-config.
- Runtime requires separately obtained SCRANTIC.SCR, RESOURCE.MAP and RESOURCE.001 beside the executable. README sizes and SHA-256 values identify the expected original files; the loader instead checks known executable strings/layout, not whole-file hashes. Arbitrary original builds are unsupported. Options and story state use SCRANTIC.INI, saved on normal exit.
- Deliberate differences include full-frame redraw, potentially one-pixel line/ellipse differences, bounded final-scene selection and a fixed two-second title display. Optional dedithering and softened audio default off. The original settings dialog and password feature are absent, as are unused animated-palette, 256-color and ADS-variable features.
- The headless test runs 6,000 steps and requires three completed scenes, without original-frame comparison. Data-dependent tests silently return when OPEN_SCRANTIC_DATA is unset; other tests cover parsing and arithmetic. CI checks formatting, lint, three-platform builds and --version, not cargo test or original-data playback. Snapshot output supports inspection, not an automated original-output oracle.
- MIT covers project source, not original executable content, art, scripts or sounds, which users must supply with appropriate authorization. The author describes independent, non-commercial interoperability without Sierra/Dynamix endorsement. This collection reviewed sources and test definitions; it did not reproduce the implementation or results.
About this entry
- Type
- Case study
- Category
- Community REA investigations
- Relationship
- Author-reported mixed workflow
- Targets
- App
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · glauberlima/open-scrantic · Revision 2db7500
- docs/ENGINE.md GitHub · glauberlima/open-scrantic · Revision 2db7500
- docs/ARCHITECTURE.md GitHub · glauberlima/open-scrantic · Revision 2db7500
- Cargo.toml GitHub · glauberlima/open-scrantic · Revision 2db7500
- rust-toolchain.toml GitHub · glauberlima/open-scrantic · Revision 2db7500
- LICENSE GitHub · glauberlima/open-scrantic · Revision 2db7500
- src/assets/exe.rs GitHub · glauberlima/open-scrantic · Revision 2db7500
- src/assets/mod.rs GitHub · glauberlima/open-scrantic · Revision 2db7500
- src/engine/mod.rs GitHub · glauberlima/open-scrantic · Revision 2db7500
- src/engine/config.rs GitHub · glauberlima/open-scrantic · Revision 2db7500
- src/engine/rng.rs GitHub · glauberlima/open-scrantic · Revision 2db7500
- examples/snapshot.rs GitHub · glauberlima/open-scrantic · Revision 2db7500
- .github/workflows/ci.yml GitHub · glauberlima/open-scrantic · Revision 2db7500
- CHANGELOG.md GitHub · glauberlima/open-scrantic · Revision 2db7500