Ship of Harkinian has been kicking around for a while now. With their awesome ports across Android, iOS, x86, and some proper Portmaster Ports, they’ve been creating pretty definitive ways to play old games. Of the batch, one of my favorites has been the classic Mario64 port. Dating all the way back to January in terms of its release, there’s been a lot of people looking this one as it steadily adds support, features and more, all in the hopes of righting this Ghostship. Well with the latest release of Nautilus – Alfa 3.0.0, it seems they’ve done that with a massive update.

As always if you’re looking for a full rundown of updates information and more, I love pointing you to the sources. And this time it’s going to be their Github for the changelog, their Website for the setup guide, and their Discord for the community. As for the massive update itself, I’ve dropped the list below, but you’ll find some of my favorite additions bolded for ease of reading.

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

As a whole, it’s a genuinely great update, but the obvious big improvements come down to the inclusion of both Android and iOS support. Meaning you’ll be able to play this with ease on your Android handhelds, or your brand new Apple iPhone Duo for just $2,000. I seriously recommend supporting the team however you can, but as for me, I can’t wait to see what’s next.

Share.

Despite what you may think, Ban does not kick people off the server or out of live stream chat, but he does help to make the funny little posts you see on the RH Social Media! Instagram, YouTube, and Twitter (No not X. Twitter) are all his domain to spew information, sales and goofy controller imagery. He also writes articles, reviews, helps with YouTube timestamps, guests on the RH Podcast, runs the Handheld of the Month channel in the RH discord. Additionally he collects handhelds, sets up handhelds, looks at handhelds and does a lot of music! Favorite Game: BurnOut 3 Takedown

Leave A Reply