Skip to content

NSMBW 0.2.0: Linux, older PCs, languages, fullscreen, and up to 50% performance gains

Choose a tag to compare

@WitherBlitz WitherBlitz released this 20 Oct 04:22
· 22 commits to main since this release

Disclaimer, this is NOT the decomp release I was talking about before. I realized how much longer it was going to take for the decomp to finish, so decided to retouch on the recomp and fix everything I had written down and everyone's issue reports. I also wanted to see how much I could push recomp performance, turns out that's pretty far, from what I saw up to a 100% increase in performance on this update, and this isn't even it either. from a simple survey I found that there's at least 20% more CPU performance on the table and counting. If anyone has any information that could decrease the amount of time and tokens it takes to decompile Wii games, feel free to create an issue report on github.

Linux, older PCs, Spanish and French, audio sliders, fullscreen options, Android no longer loses your game when you switch apps, and a lot faster on older phones. Most of this came from your issues: thanks for them.

  • Linux (#3). A native x86-64 build: extract it and run ./NSMBW. It needs a Vulkan driver and glibc 2.35 or newer: Fedora 36 and later, Ubuntu 22.04 and later, Debian 12, Arch, SteamOS. Tested on Fedora 44 and Ubuntu 26.04. It asks for your game folder with the desktop's own picker, keeps its data in ~/.local/share/WiiCompiled, and plays LAN games with phones and Windows PCs. If something it needs is missing, such as the Vulkan driver, it says which package to install on Fedora or Ubuntu.
  • Older processors (#5). PCs without AVX2 (older than Intel Haswell or AMD Excavator) used to close at once. Both the Windows and Linux downloads now include NSMBW-compat in a compat folder, which NSMBW starts by itself on such a processor. It does the fused math those processors lack in software, exactly, so it still plays LAN games in lockstep with everyone else.
  • Language (#4). A new Language tab in Settings: English, Español or Français, Nintendo's own translations from the USA disc. Restart the game after switching. (German, Italian, Dutch and the European Spanish and French are only on the PAL disc, which this port doesn't run.)
  • Android: leaving the app pauses the game (#2). Switching apps or locking the phone no longer throws you out: the game freezes where you were and carries on when you come back. In a level, it first makes a Quick Save as a backup, so if Android closes the app while you're away, you continue from that level. The backup is removed again when you come back to the game. (With the pause window or the world map's menu open, it pauses without the backup, since that menu has Quick Save itself.)
  • Much faster on older phones. A Google Pixel 3 XL (Snapdragon 845) went from 30-40 fps in 0.1.1 to a steady 60 fps in levels and on the world map, its heaviest scene (45-50 there once the phone gets hot). The game thread does roughly 40% less work and waiting per frame:
    • The game no longer waits for the graphics thread to finish sending the previous frame before starting the next one; the two now overlap. On a hot Pixel this alone took the world map from about 33 to 46 fps.
    • Every single-precision float operation of the game's code is cheaper: the exact Wii rounding now takes a fast path that gives the same bits, twice as fast on a phone CPU. The game's reverb effect, the busiest game code, costs half as much, and so does all the other float math.
    • Couch play only: the reverb runs as native code, and textures the game never changes are no longer re-checked every frame (130 MB a second of hashing on the world map). LAN play keeps the original code paths, so devices still stay in lockstep.
    • Memory access on ARM phones no longer re-reads a setting before every load and store.
  • Fullscreen (Windows and Linux). A new Fullscreen button in Settings > Video: Off, Borderless or Exclusive, each press moving to the next, with the same sound the game plays when you pick a save file. F11 still toggles Borderless.
  • Audio settings. A new Audio tab in Settings with Master, Music and Sound Effects sliders, each showing its percentage. Drag them with a finger or the mouse, or move them 5% at a time with left and right. Music and Sound Effects only change what you hear, so devices in a LAN game can each set their own.
  • Space Smart Spin QoL (keyboard). Space pressed while Mario is in the air now spins him, as shaking the remote does, instead of pressing 2. Wall jumps, swimming and Yoshi's flutter jump keep using 2, and pressed within about a small Mario's height of the ground it is your next jump instead of a spin. It can be turned off with its checkbox in the Keybinds tab.
  • Settings in the pause window. The little gear on a level's pause window is now a Settings button between Continue and Exit Course, like the one on the world map, the same size as the other two and growing like them when selected.
  • The LAN screen's Create Room now says that Tailscale works, but is unstable.
  • On the keyboard, the Wii Remote's A button is now on B by default. If you changed it in Keybinds, your choice stays.
  • Saves made on Windows now load on Linux too, and LAN play logs failed sends to help track down connection problems.
  • From Jude (@YlPorts), thanks: phones no longer count every draw call unless the FPS log is on, and Mali GPUs (most MediaTek, Exynos and Tensor phones) now skip the vertex workaround Adreno needs, which should run faster there. If a Mali phone shows broken graphics, turn on Display > Graphics Compatibility.

Tested on a Google Pixel 3 XL (60 fps, 45-50 on the world map when hot; LAN play), a REVVL 7 5G and Galaxy S26 Ultra (60 fps), and a Ryzen 7 5700X3D with an RTX 5070 Ti (60 fps, LAN play). The LG V30+ can't run it: it needs Android 11 and Vulkan 1.1.

Important

No game files are included. You need your own New Super Mario Bros. Wii (USA, SMNE01, revision 1), extracted with Dolphin. See Getting the game files.

Downloads

  • Android (arm64, Android 11+): NSMBW-0.2.0-android-arm64.apk
  • Windows (10/11, x64): NSMBW-0.2.0-windows-x64.zip
  • Linux (x86-64, glibc 2.35+: Fedora 36+, Ubuntu 22.04+): NSMBW-0.2.0-linux-x86_64.tar.gz

Updating keeps your saves, settings and imported game. Untested on Mali GPUs (most MediaTek, Exynos and Tensor phones).

SHA-256

a4bc4833570bba941fd40c14adfc9c9d2a3de3a9de0a255f76b41f469634f31e  NSMBW-0.2.0-android-arm64.apk
23193131e28b5c626f538d52ab15c51afb0086deb90500a66e9aa7f21f74c134  NSMBW-0.2.0-windows-x64.zip
1e5b5ff017f31f3c2d73e87bb0946fbe428fea93c11b94a24dbb5825369790f1  NSMBW-0.2.0-linux-x86_64.tar.gz

Source: this repository at v0.2.0, GPLv3. Not affiliated with Nintendo.

found a game breaking tiling bug, removed downloads