github JRickey/BattleShip v1.5

6 hours ago

This release ships better Android touch/menu behavior and always landscape, a 32 bit Android ARMv7a release target, signed and notarized macOS release executables, no more Windows defender false positives, improvements to the Mod Manager, a HUD toggle, and an option to mute the game when the window loses focus.

New Features

1. Android controls and menu improvements (#249)

The Android overlay is less intrusive and easier to operate on real devices.

  • Auto-hiding menu button - the on-screen menu affordance fades out instead of staying permanently over gameplay.
  • Back/Select menu shortcut - Android Back and controller Select can now open the menu.
  • Landscape/fullscreen handling - the activity keeps the game locked to landscape and cooperates with SDL fullscreen resizing behavior.
  • Touch overlay polish - analog stick stays in the same place always.

2. Mod Manager refresh and deleted-mod handling (#236)

The Script Mods panel has been folded into the broader Assets section and now behaves more like a live manager instead of a static list.

  • Rescan support - the UI can rescan installed mods without restarting the game.
  • Hot-reload cleanup - deleted mods are reflected correctly instead of lingering in the menu.
  • Mod registry plumbing - new port/mods/ModRegistry.* tracks mod entries for the menu and runtime reload path.

3. Disable HUD option (#246)

A new enhancement lets players hide the in-game HUD.

  • Adds the port-side DisableHUD enhancement and menu checkbox.
  • Includes the decomp-side guards needed for the toggle to actually suppress HUD drawing.

4. Mute on focus loss (#237)

A new focus-control option can mute the game while the window is inactive and restore the previous master volume when focus returns.

  • Uses libultraship's new WindowFocusEvent.
  • The integration fixes a double-focus-loss edge case so the saved volume is not overwritten with the muted value.

5. Android arm64 and armeabi-v7a release APKs

The release now ships separate Android APKs for modern 64-bit devices and older 32-bit ARM devices.

  • Keeps the historical BattleShip-android.apk filename for arm64-v8a.
  • Adds BattleShip-android-armeabi-v7a.apk for 32-bit ARM devices.

Quality-of-Life improvements

  • Training Mode extra-stage scrolling - Training Mode can scroll the extra-stage page correctly, including Android CSS icon support.
  • CSS empty-slot guard - empty P3/P4 fighter slots no longer reactivate into invalid state.
  • Android emulator helper - scripts/android-emulator.sh was expanded for easier local Android iteration.

Release and Packaging

  • TinyCC static-linking on Windows - TinyCC is linked into the Windows modding build to reduce antivirus false-positive risk from shipping the tinycc.dll in the release.
  • TinyCC mod loading from memory - libultraship now supports loading TinyCC mods from memory and pins the TinyCC source revision used by the build.
  • macOS signing and notarization - release builds now import the Developer ID certificate, sign the app, notarize the package, and retry notarization polling when Apple's service is slow.
  • Styled macOS DMGs restored - CI now requires the polished drag-to-Applications DMG window with the background art and larger icons, while still using a timeout so Finder automation cannot hang the release forever.
  • macOS SDL3 bundling - Homebrew's current sdl2 can resolve to sdl2-compat, which loads SDL3 dynamically; the macOS package now bundles libSDL3.0.dylib and the libSDL3.dylib symlink needed on clean Macs.
  • Release artifact matrix cleanup - release builds produce US/JP macOS DMGs, US/JP Linux AppImages, US/JP Windows zips, and both Android APKs.
  • Release checksums and attestations - release artifacts continue to be published with SHA256 sums and provenance attestations.

Bug Fixes

  • Focus-loss volume restore - repeated focus-lost events no longer replace the saved master volume with 0.
  • Android landscape/fullscreen sizing - Android now keeps the activity in the intended orientation and avoids SDL resize behavior that could leave the touch/game area wrong.
  • Training Mode stage-scroll issues - extra Training Mode stages can be reached reliably.
  • P3/P4 CSS null fighter state - empty player slots are skipped instead of being reactivated with invalid fighter data.
  • CSS costume/null-fkind guards - costume lookup paths now guard against unregistered fighter kinds, and reused fighter GObjs have their world position re-applied correctly.
  • Co-Op Classic Master Hand/challenger behavior - partner control and challenger-duel stock/win-loss handling are corrected.
  • macOS "Failed loading SDL3 library" launch crash - release DMGs now include SDL3 when the bundled SDL2 dylib is the sdl2-compat wrapper.
  • Modern libstdc++ compatibility in libultraship - LUS PR #6 adds the missing <cstdint> include and fixes the event ID declaration macro so newer GCC/libstdc++ combinations do not reject extern "C" extern declarations.

Submodule Changes

decomp: 676f840a -> 25f9a8c9

  • 68755588f - fix co-op Master Hand P2 control and 2-player challenger duels.
  • 6c1183086 - skip empty VS fighter slots.
  • 76a034d8b - allow Training Mode extra-stage page scroll.
  • 7bd0cfc77 - add disable-HUD guards.
  • 7783bf83c - fix Android v7a ILP32 decomp compatibility.
  • 25f9a8c9e - merge CSS costume/null-fkind guards from ssb-decomp-re#10.

libultraship: b3da10da -> 58f22ed4

  • ec22b3e2 - pin TinyCC source revision.
  • f11f123a - load TinyCC mods from memory.
  • e4815835 - add WindowFocusEvent.
  • 58f22ed4 - merge GCC 16 / modern libstdc++ compatibility fixes from LUS PR #6.

torch

  • Unchanged: 8060a909.

Contributors

Thanks to @Zorkats for the Mod Manager refresh and focus-loss mute option, @the-outcaster for the Disable HUD option, and @RakugaKid for the Android menu/control improvements.

Don't miss a new BattleShip release

NewReleases is sending notifications on new releases.