Skip to content

Repository files navigation

Open Platformer Runtime

Open Platformer Runtime is a Godot 4 .NET runtime engine recreation of Super Mario World. It is a native engine/runtime clone, not an emulator, and it does not ship Nintendo ROMs, extracted art, extracted audio, level data, saves, screenshots, or generated asset packs.

The repository contains source code, import/verification tools, and documentation. A user-provided compatible local ROM dump is used only as input to an offline importer that writes local Godot-readable data under generated/smw/, which is ignored by git.

This project is still early. The current runtime has a focused playable slice, a course selector, partial imported level support, and deterministic debugging tools, but it is not a complete game and should not be presented as a faithful replacement for the original runtime yet.

Table of Contents

Quick Start

Import assets from a compatible local ROM dump:

tools/import-smw.sh "/path/to/compatible-rom.sfc"

Run the project with Godot 4 .NET:

tools/run-wayland.sh

Run source checks:

tools/check-dotnet.sh

More setup, import, and run commands live in docs/GETTING-STARTED.md.

Try the browser loader on GitHub Pages:

https://sabino.pro/open-platformer-runtime/

The web page validates a local ROM selection in browser memory, strips a copier header in memory when needed, indexes ROM-derived level names for the in-game selector, and can launch the experimental Godot .NET Web runtime without uploading the ROM.

The playable browser path is experimental and requires a custom Godot build from godotengine/godot#106125 plus this project's local web-runtime fixes; see docs/WEB-DOTNET-PROTOTYPE.md.

Current Scope

The current runtime can boot a SNES-sized 256x224 Godot viewport, generate local assets from a user-provided ROM, show a searchable imported-level selector, launch selected imported levels, and return from a level to the selector with Esc, Backspace, gamepad Back/Guide, or the current course-clear path.

The repository also includes a GitHub Pages browser loader under web/. It uses the browser's native file picker, local Web Crypto validation, Pyodide-backed in-browser importing, and a postMessage bridge that lets the Godot course selector request additional levels.

The strongest verified gameplay slice is still the first-level route and its direct pipe target. Other imported levels may boot or render, but broad level compatibility is not guaranteed. Many systems are partial or missing, including exact collision, complete Map16 semantics, most blocks, most enemies, exact sprite loading/despawn, overworld progression, save data, complete audio, and many player states.

For the detailed state of implemented and missing systems, read docs/STATUS.md.

Asset Boundary

This repository is source-only. Do not commit:

  • ROMs or ROM patches containing copyrighted data
  • generated assets under generated/
  • extracted PNG/WAV/BIN/JSON asset packs
  • saves, SRAM, emulator states, TAS downloads, screenshots, or videos derived from proprietary assets
  • machine-local paths or private configuration

Before publishing changes, read docs/RELEASE-HYGIENE.md.

License

Source code is licensed under MIT. See LICENSE.

About

MIT-licensed Godot 4 .NET classic-platformer-compatible runtime clone with source-only asset importer and deterministic playtest tooling.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages