github JRickey/BattleShip v0.5.1-beta

latest releases: v0.6-beta, v0.5.2-beta
one day ago

BattleShip v0.5.1-beta

Patch release on top of v0.5-beta — fixes #43: the v0.5-beta macOS .dmg crashed on launch on any Mac without the developer's exact Homebrew layout, because package-macos.sh shipped the binary with absolute /opt/homebrew/... dylib paths embedded in its load commands. The package script now bundles the Homebrew dylibs into Contents/Frameworks/ via dylibbundler and rewrites install_names to @executable_path/../Frameworks/ (694e3cf). Linux + Windows builds are unchanged from v0.5-beta.


Big release with some great PR's and contributions from
@Jameriquiah
@the-outcaster
@Kriix08

  • More robust build system centered on CMake, should help those having issues with the original powershell script.

  • Newer menu aligning more closely with SoH.

  • Tap Jump can be disabled in the new menu!

  • New assets to replace the garbage I made.

New: in-game ESC menu + build-system modernization (PR #37)

@Jameriquiah ported SoH/2S2H's ESC menu over and rewrote the build system around CMake targets. Hit ESC in-game to bring up the new menu — controls, settings, gameplay enhancements all live there now. The old build.sh / build.ps1 wrappers have been retired in favor of cmake --build build --target ….

  • Bundled Montserrat + Inconsolata menu fonts so the menu actually has typography on a fresh checkout (2a4b61c)
  • Five review fixes on top of the merge: macOS narrowing-cast build break, BeginChild/EndChild guard mismatch, ImGui modal for re-extract confirmation, doc / script comment cleanup (a7e1eb7)

New: first port-specific gameplay enhancement — per-port Disable Tap Jump (PR #39)

This one makes me particularly happy as not a huge smash player, because this is the first real port specific enhancement, and I wouldn't have considered it a feature if it wasn't brought up and PR'd.

@the-outcaster contributed a per-controller-port toggle to disable tap-jump. Find it in ESC → Gameplay. I've set a pattern with a follow up commit to keep things like this outside the decomp code whenever possible. The pattern is as follows: (CVar registered in port/enhancements/, accessor called from a single #ifdef PORT block in the decomp file). (5c3e6bf, 7d8e203)

Proper artwork — Kriix08's BATTLESHIP logo (#25)

The placeholder garbage icon and DMG banner are gone. @Kriix08's beautiful new logo art now drives the app icon (PNG/ICNS/ICO) and the macOS DMG installer banner. (62105cc)

Audio

Per Claude:

  • Star-KO chime no longer produces that awful noise (#38). fgm_unk was being parsed with the wrong shape, so envelope decay floats decoded as ~0 → constant amplitude. Switched to a flat 16-byte-stride parser with proper BE→LE float swaps. Most SFX were too short to notice; the Star-KO chime's 150-frame sustain made it audible. (8b76629)

  • This also fixes fighter rolls having an incorrect sound and a slew of other untracked audio issues. The game should sound way better now. If you still hear some weird god awful noise, please make another issue for it.

Game logic / fighters

Per Claude:

  • Pikachu F-Smash texture flash works again (#30). The first attempt at this fix was reverted — it bswapped 8 bytes back into the file image and corrupted adjacent reloc tokens for fighters where the trailing pad wasn't zero (CSS lock-in crashed for everyone except Pikachu). The shipping fix returns a static 8-byte buffer with the corrected 6 bytes and never modifies file memory. (945889e, 1f2b694, 435c944)
  • BTT/BTP result screen state-machine leak fixed (#27). Four advance-tic globals (CommonAdvanceTic, BonusShowNextTic, BonusAdvanceTic, BonusNum) leaked from the prior 1P stage into the BTT result screen — on N64 each scene re-entry re-DMA's overlay BSS to zero, but PC has overlays statically linked. Symptom: result screen "froze" with audio looping. Now reset under #ifdef PORT in sc1PStageClearInitVars. (6746f3d)

Build / packaging

Per Claude:

The new build flow shook out a pile of platform-specific issues. All three platforms verified end-to-end before tagging.

Windows

  • build.ps1 parse failure on PS 5.1 (#28). Non-ASCII characters in the script were being read as Windows-1252 on stock Win10/11. Stripped to ASCII and added #Requires -Version 5.1 so it can't regress. Also hardened: WindowsApps stub detection for both python.exe and py.exe, ErrorActionPreference change so native stderr redirection doesn't suppress rich error messages, several PS 5.1 quirks worked around. (bec6baa)
  • RealAppBundlePath now implemented for Windows via GetModuleFileNameW so the portable zip extracted anywhere resolves fonts and ROM correctly (6a9197d)
  • CMAKE_INSTALL_PREFIX=BattleShip so log lines read AppBundlePath = BattleShip instead of C:/Program Files (x86)/ssb64 (ce162df)

Linux / AppImage

  • AppImage path resolution: hoisted RealAppBundlePath out of first_run.cpp so the ESC menu finds bundled fonts under the AppImage mount layout (8e622c7)
  • Locally-built AppImages on DT_RELR-era distros (Fedora 38+, Ubuntu 23.10+, Arch, Steam Deck Holo) no longer SIGSEGV in _dl_init. linuxdeploy's bundled patchelf 0.15 and binutils-2.34-era strip predate compact relative relocations and corrupt .relr.dyn. Now sniffs the host and hands linuxdeploy the system patchelf + skips the broken strip pass. CI (jammy, glibc 2.35) is unaffected. (08972c2)

macOS

  • .dmg no longer crashes on launch on Macs without the developer's Homebrew layout (#43). package-macos.sh was shipping the binary with absolute /opt/homebrew/opt/sdl2/lib/libSDL2-2.0.0.dylib (etc.) load commands, which dyld can't resolve on a user's machine without that exact prefix. Now bundles SDL2 / GLEW / libzip / tinyxml2 / spdlog / fmt and their transitive deps into Contents/Frameworks/ via dylibbundler, rewrites install_names to @executable_path/../Frameworks/, and codesigns the bundle as a unit. Adds a build-time guard that fails loudly if any /opt/homebrew reference survives. Linux + Windows packaging already handled this (linuxdeploy / vcpkg DLL copy); macOS was the outlier. (694e3cf)
  • .app packaging fix: torch sidecar path was relative under the bundle's Contents/MacOS layout, so silent extraction aborted with exit 127 before torch ran. Now absolute-ized (0ed1ba8)
  • Bundled menu fonts copied into Contents/Resources/assets/custom/fonts/ so the ESC menu has typography (0ed1ba8)

Cross-platform

  • Asset-extraction log path absolute-ized — the cd workingDir && torch ... > logPath shell pattern was breaking when logPath was relative (8e622c7)
  • Linux + Windows packaging audit: both scripts now bundle assets/custom/fonts/ matching the macOS fix (6a9197d)

Closes

#25, #27, #28, #30, #37, #38, #39, #43


Acknowledgements

Huge thanks to the third-party contributors who made this release happen. A great day 2!

Much Love

Don't miss a new BattleShip release

NewReleases is sending notifications on new releases.