github 999sian/melee-pc v0.1.3-beta

latest releases: v0.4.2, v0.4.1, v0.4.0-beta...
pre-releaseone month ago

Beta, for testing only. Expect crashes and missing features.

You need your own Super Smash Bros. Melee disc image. No game data ships in
these artifacts
— the port reads everything, including its font atlases, from
the image you supply at runtime.

Only USA revision 2 (NTSC-U 1.02, GALE01) is supported.

Downloads

Platform File Notes
Linux x86-64 Melee-x86_64.AppImage Needs a Vulkan driver. chmod +x, then run.
Linux x86-64 melee-linux-x86_64.tar.gz Portable directory; run run.sh.
Windows x86-64 Melee-Windows-x86_64.zip Extract and run melee.exe. Keep the DLLs and resources/ beside it.
Android arm64 Melee-Android-arm64.apk Release build, signed. Allow install from unknown sources.

Launch with no arguments to open the launcher and pick a disc, or pass the
image path directly:

./Melee-x86_64.AppImage /path/to/melee.iso

Changes since v0.1.2-beta

  • Performance & Stuttering:
    • Deconflicted hardware VSync and software frame pacing in vi.c. Manual SDL_DelayPrecise sleep now only runs when VSync is disabled, preventing monitor refresh rate drift from tripping sudden 30 FPS drops under strict FIFO VSync.
    • Bundled the pre-recorded pipeline cache seed (initial_pipeline_cache.db) into the Linux AppImage, Linux portable tarball, and Android APK assets (previously only shipped on Windows), eliminating first-run shader compilation pop-in and stutter across all platforms.
    • Added user-facing Graphics Backend selection (Direct3D 12 vs. Vulkan vs. Auto) in the Launcher settings, in-game F1 overlay, and launcher.cfg.
    • Scaled disc preloader threads dynamically up to 4 concurrent threads in Aurora's DVD reader, parallelizing block decompression for compressed .ciso and .rvz disc images to reduce synchronous asset load hitches.
    • Added CMake support for Link-Time Optimization (MELEE_ENABLE_LTO).
  • Game & Platform Fixes:
    • Fixed #5: Prevented memory corruption and crash when backing out of Tournament mode by properly typing archive handles.
    • Fixed #4: Set stage clear flag on 100-man melee completion so Falco challenger approach is triggered.
    • Fixed #8: Fixed infinite sparkle loop on Final Destination.
    • Fixed #7: Scanned user space under 4GB for MEM1 allocation on Windows, and auto-detected ISOs in RUN-AND-LOG.bat.
    • Added GameCube ISO file selection support on Android.
    • Statically linked libstdc++ and libgcc on Windows and removed mismatched compiler runtime DLLs.

Changes in v0.1.2-beta

  • Fixed disc pointers being used without resolution in the HSD object
    loaders. HSD_IDGetData is keyed on the resolved host pointer, but jobj,
    pobj and robj looked up with the raw 32-bit disc slot, so those lookups
    always missed and left child joints and envelope references null.
  • Rewrote the AObj animation callback dispatch. It previously guessed at
    four signatures, reading a float out of parameters that hold an integer
    or a pointer and dropping arguments entirely in other cases; it now
    dispatches on the real calling convention.
  • Kept MEM1 below 4GB on Windows. The allocator fell back to letting the OS
    place it anywhere, which on 64-bit Windows means above 4GB, and every
    32-bit disc pointer slot into it then truncates.
  • MELEE_BACKEND pins the graphics backend (vulkan, d3d12, null, ...)
    and the log now records which one a run selected. Thanks to
    @alexscott2718-gif.
  • The log is timestamped, records a marker for any frame over 50ms, and
    survives a crash: output is flushed per line, Windows writes
    melee-pc.log beside the exe, and a fault logs a backtrace naming the
    module it came from.
  • The Windows zip ships a pipeline cache seed, so shaders are not all
    compiled the first time each one is used.

Changes in v0.1.1-beta

  • Fixed a crash in the attract demo. Kirby's and Jigglypuff's multi-jump
    attributes are read straight off the disc, but were decoded in the wrong
    byte order, so the second jump looked up motion state 0x55010000 instead
    of 341 and faulted.
  • Fixed the remaining places where a pointer was stashed in a 32-bit field
    and truncated on 64-bit builds: the HSD id table and object heap, the
    sislib text cursor stack, the THP video decoder, and pointer slots in the
    Hyrule Castle, Brinstar, Big Blue and Fountain of Dreams stage state.
  • Fixed the Windows build failing to start on a real Windows PC. The zip did
    not ship the Visual C++ runtime that Dawn, dxcompiler, SDL3 and nod import,
    so Windows refused to load it with "VCRUNTIME140.dll was not found". Wine
    and Proton supply that runtime themselves, which is why it only broke on
    actual Windows. Those DLLs now ship in the zip, and packaging fails if any
    import is left unresolved.
  • The Android APK is now a signed release build rather than a debug build,
    and is named Melee-Android-arm64.apk.
  • Fixed the Android CI build, which depended on a toolchain path that only
    existed on one machine.

What works

Boot and opening movie, memory card create/load, title and attract demos, main
menu, VS Mode with character and stage select, 1-P Classic and Adventure to
completion with results saved, Training, Stadium (Target Test, Home-Run
Contest, 10-Man Melee), Trophy gallery, Event Match list, music and sound.

What does not

Online play with rollback netcode is not implemented. All-Star is
unreachable until the roster is unlocked. Widescreen camera and HUD are
incomplete. There is no macOS build: the game code depends on GCC's
scalar_storage_order, which Clang does not implement.

Controls

Arrows = stick, IJKL = C-stick, X = A, Z = B, C = X, V = Y, Q/E = L/R,
Tab = Z, Enter = Start, TFGH = D-pad. Gamepads work through SDL and can be
remapped. F1 opens the settings overlay.

Don't miss a new melee-pc release

NewReleases is sending notifications on new releases.