Ghostship is the impressive unofficial PC port of Super Mario 64 from the Harbour Masters crew, newly upgraded with a web player and Vulkan support. It got a Native Linux release back in January.
To keep it away from Nintendo lawyers Ghostship does not include any copyrighted assets. You are required to provide a supported copy of the game. But, you can also now play it via the web!
The new "Nautilus - Alfa 3.0.0" release changes are noted below.
Key Changes
New platforms
- Add an iOS target and CI job by @KiritoDv.
- Add Android support, based on Waterdish's work by @KiritoDv.
- Android on device extraction (rebase of #225) by @KiritoDv in #250.
- Add a web (Emscripten) build with IDBFS persistence and a Pages deploy by @KiritoDv.
Renderer
- Add a Vulkan backend by @KiritoDv.
- Add a full postprocessing system with multipass custom shaders, manifest-driven shader settings, and a Shaders tab in the menu by @KiritoDv.
- Expose engine variables as custom shader uniforms by @KiritoDv.
- Add HD texture support (ported from Jeod) with auto-mipmap generation, async texture loading, and deferred texture frees by @KiritoDv.
- Move sRGB to a postprocess pass; fix viewport and depth clamp with postprocess steps by @KiritoDv.
- Implement G_CD_* noise dithering; multiple LOD fixes by @KiritoDv.
- Fix Metal texture stutter, Metal postprocessing, and the game lagging while unfocused by @KiritoDv.
- Fix the D3D11 vertex stride for lit materials without combiner shade by @KiritoDv.
- Fix missing Vulkan DLLs on Windows builds by @KiritoDv.
- Fix the universal macOS build (tinycc host target leaking into the x86_64 slice) by @KiritoDv.
- Fix blurry menu text on Retina displays by @quarrel07 in #234.
- Fix the menu tab row showing a scrollbar after the Shaders tab was added by @quarrel07 in #249.
Modding API
- Load TCC-compiled mod scripts in memory instead of via a dropped shared library by @KiritoDv.
- Big event pass: engine lifecycle, render pipeline, HUD/text-label, camera, level script, geo layout node, entity distance culling, behavior native-call, save load/flush, file select, and pause menu events by @KiritoDv.
- Add a keyboard input API and KeyboardInput event by @KiritoDv.
- Add ImGui draw callbacks for C mods by @KiritoDv.
- Add a data persistence system for mods (player store, channel store, player identity) by @KiritoDv.
- Export a large set of previously static engine symbols to mods by @KiritoDv.
- Show a readable error when a mod script fails to build by @KiritoDv.
- Fix the mod template to target the main repo and add clang-format to it by @KiritoDv.
- Fix the preprocessor mis-parsing some constructs by @KiritoDv.
Networking
- Move websockets to mbedtls and enable TLS on Linux by @KiritoDv.
- Add relay versioning to avoid conflicts between game versions by @KiritoDv.
- Add a USE_SATELLA build option and an "Enable Satella" toggle in Developer Tools by @KiritoDv.
- Guard Satella behind USE_NETWORKING by @JeodC in #193.
- Fix Satella never connecting on macOS by @quarrel07 in #237.
Gameplay and fixes
- Fix Goombas insta-killing Mario by @KiritoDv.
- Fix crashes when loading saves and improve conversion of old save files by @KiritoDv.
- Fix the current save being wiped after a Game Over by @quarrel07 in #229.
- Fix the title screen background after a Game Over by @quarrel07 in #238.
- Fix the Bowser key being treated like a star with Collecting Stars Will Not Exit Level enabled by @quarrel07 in #243.
- Fix achievements tracking and popping while the toggle is off by @quarrel07 in #239.
- Enable achievements by default by @KiritoDv.
- Fix interpolation of menu text, Mario's hand cursor, and the skybox by @KiritoDv.
- Fix use-after-free crash in audio synthesis on level reset (#133) by @JeodC in #197.
- Fix the crash on quit by @quarrel07 in #244.
- Fix held movement keys opening the macOS accent popup by @quarrel07 in #231.
- Move "Disable LoD" to the Graphics tab by @KiritoDv.
Extraction and assets
- Port the improved extraction flow: re-extract confirmation, single sm64.o2r generation, and word-wrapped Torch errors by @KiritoDv.
- Keep existing sm64.o2r archives working after the Torch CRC byte-order change by @quarrel07 in #248.
- Fix special characters in path #126 by @JeodC in #196.
- Add a full PNG loader (RawTextureFactory) and make merge.py output PNG textures by @KiritoDv.
Build, packaging and CI
- Add a Liquid Glass app icon for macOS by @quarrel07 in #245.
- Fix Mac builds reporting version 0.1.0 by @quarrel07 in #228.
- Fix the macOS build failing against Homebrew's current mbedtls by @quarrel07 in #232.
- Fix the packaged macOS app failing to launch when built with Homebrew's sdl2 by @quarrel07 in #233.
- Fix generator mismatch in cmakelists by @JeodC in #195.
- Fix AppImage packaging by @KiritoDv.
- CI: cut macOS build time from ~86 min to ~15 min by caching MacPorts by @quarrel07 in #247.
You can see their original announcement video on it below:

YouTube videos require cookies, you must accept their cookies to view. View cookie preferences.
Direct Link
Direct Link
🌐 External Sources: ghostship.net64.dev, GitHub - Ghostship - 3.0.0
Some you may have missed, popular articles from the last month:
All posts need to follow our rules. Please hit the Report Flag icon on any post that breaks the rules or contains illegal / harmful content. Readers can also email us for any issues or concerns.



