Introduction
Reincarnate is a framework for lifting legacy software from obsolete runtimes into modern web-based equivalents.
The Problem
Millions of interactive applications are trapped in dying runtimes:
- Flash/Shockwave: Browser plugins deprecated, content inaccessible
- Director/Authorware: Museum kiosks, corporate training, educational CD-ROMs
- Visual Basic 6: Enterprise line-of-business apps nobody dares touch
- HyperCard/ToolBook: Early interactive media, lost to hardware rot
- Java Applets/Silverlight: The brief dark age before HTML5
The Approach
Reincarnate works on bytecode and script, not native binaries.
Tier 1: Native Patching
For targets you can't fully lift (obscure compiled binaries):
- Pointer relocation, hex editing
- Font texture replacement
- Limited by original rendering constraints
Tier 2: Runtime Replacement
For engines you can shim (Ren'Py, RPG Maker, Flash, GMS):
- Hook the internal
draw_text()function - Cancel the original draw call
- Emit to a modern HTML/CSS overlay
- Render with real typography, flexbox layout, accessibility
Components
- Frontends: Engine-specific extractors that parse bytecode, decompile scripts, and dump assets into a common IR
- Transform pipeline: Type inference, optimization passes (constant folding, Mem2Reg, DCE), coroutine lowering, and engine-specific IR normalization
- Backends: Code generators targeting TypeScript (active) and Rust (planned)
- Replacement runtime: Modern reimplementation of the original engine's API surface (Flash, GameMaker, Twine)
What Reincarnate Is Not
- Not a VM or emulator (use Wine/DOSBox for native code)
- Not a "remaster" tool (we preserve, not improve)
- Not magic (some targets require significant manual work)