Relic of the Past

Relic of the Past is a desktop launcher for the A Link to the Past PC port with controller support, save profiles, and MSU-1 audio.

README

Relic of the Past

Relic of the Past

A modern, cross-platform desktop launcher for the open-source A Link to the Past PC port, with polished UI, controller support, save profiles, MSU-1 audio, and randomizer tooling.

Website Discord CI Release License Platforms Built with

Project status: Pre-release / Beta. Actively developed, expect rough edges.


[!IMPORTANT] Disclaimer. This is an unofficial fan-made/open-source project. It is not affiliated with, endorsed by, sponsored by, or approved by Nintendo. Nintendo, The Legend of Zelda, and related names, characters, music, artwork, and assets are trademarks and/or copyrights of Nintendo. No Nintendo-owned game assets are included in this repository. You must provide your own legally obtained ROM.

Community

TypeLink
Websitehttps://relic-of-the-past.com
Discordhttps://discord.gg/jBkmwzKHZN
Issueshttps://github.com/drizztdourden08/relic-of-the-past/issues

What is this?

Relic of the Past wraps a decompiled C reimplementation of the game (compiled to WebAssembly) in a React UI inside Electron, giving the classic PC port a first-class desktop experience: a real launcher, per-game save profiles, controller remapping and haptics, MSU-1 music packs, display and HUD options, and an in-progress randomizer tracker.

It ships no game data. On first run you point it at your own ROM; the app extracts the assets it needs locally on your machine.

Installation

Download the latest build for your platform from the Releases page:

PlatformDownload
WindowsPortable .exe or Installer .exe
macOS *.dmg
Linux.AppImage or .deb

* Special instruction. See here.

Then launch the app and select your ROM when prompted. See the Quick Start and Installation guides for details.

Build from source

Requires Node.js ≥ 24 (see .nvmrc). The WebAssembly core is committed prebuilt, so a normal build does not need the Emscripten SDK.

npm install        # install dependencies
npm run dev        # run the app in development
npm run build:win  # produce a packaged build (see package.json for mac/linux)

Quality checks (run by CI on every push/PR):

npm run ci         # tsc + eslint + repo analysis

Rebuilding the WebAssembly core is a separate manual step and is only needed when changing C code under core/. See core/wasm-build/ and the project docs.

How it works

flowchart LR
    C["core/zelda3<br/>vendored C decompilation"] -->|"Emscripten"| W["zelda3.js / .wasm<br/>our C↔JS hook layer"]
    W -->|"ccall / EM_ASM"| UI["React UI in Electron<br/>renderer + main process"]

A three-layer architecture: the vendored C decompilation, our C↔JS hook layer compiled to WASM, and the TypeScript/React renderer.

Documentation

The full documentation lives in docs/ (also published to the project Wiki):

Credits & license

This project builds on a lot of open-source work. CREDITS.md lists all of it. Application code is released under the MIT License.

Side note on third-party code & trademarks. The MIT license covers only the application code authored in this repository. It does not cover the vendored upstream decompilation under core/zelda3/, which is distributed under its own license, listed in core/zelda3/LICENSE.txt.

This is an unofficial fan-made / open-source project, not affiliated with, endorsed by, sponsored by, or approved by Nintendo. Nintendo, The Legend of Zelda, and related names, characters, music, artwork, and assets are trademarks and/or copyrights of Nintendo. No Nintendo-owned game assets are included in this repository.