github OpenPort-Labs/Galaxy-Android v0.0.3
Galaxy Android v0.0.3

2 hours ago

Galaxy Android v0.0.3 — Engine Stability, Odyssey Overhaul & Wii-Comparable Performance Release

Major milestone release resolving save corruption, scene transitions, SurfaceFlinger compositor flickering, 30 FPS slow-motion decoupling, and implementing native expansions including Odyssey-style movesets, multi-hero profiles, 2P active co-op assist, Vulkan FXAA & Cosmic Bloom post-processing, 0ms memory savestates, and speedrun practice telemetry.


New Native Features & Roadmap Enhancements (Categories 1, 2, 3, 6)

1. Modern Camera & Gameplay Mechanics (Odyssey-Style Overhaul)

  • Super Mario Odyssey Moveset:
    • Air Dive (ZL + Y / Spin while crouching in air): Propels Mario forward with horizontal momentum and slight vertical lift.
    • Ground-Pound High Jump: Preserves downward momentum upon landing from HipDrop and launches Mario into an immediate high jump.
    • Ground Roll (ZL + Spin on ground): Roll smoothly across planetary surfaces with boosted velocity.
  • Hero Selection Profiles:
    • Mario: Balanced standard physics.
    • Luigi: Authentic higher jumps and lower ground traction / sliding.
    • Princess Peach: Mid-air hover float allowing horizontal gliding across pits and voids while holding Jump.
    • Rosalina: Cosmic gravitational pull automatically vacuuming nearby coins and starbits.

2. True Multiplayer / Co-op Active Assist

  • 2-Player Co-Op Active Assist Mode:
    • In addition to pointer assist, Controller 2 / Player 2 can now directly trigger Co-Op Jumps (Button A) and Spin Attacks / Assist (Button B / Z) from anywhere in the galaxy without needing to precisely aim at Mario.

3. Graphics & Visual Enhancements

  • Vulkan Post-Processing Presentation Pipeline:
    • Single-Pass FXAA Anti-Aliasing: Smooths jagged geometric edges and planetary horizons with zero performance penalty.
    • Cosmic Bloom & Nebula Glow: Luminance extraction and soft bloom on launch stars, cosmic nebulae, and starbits.
    • Vibrance & Contrast Boost: Rich cosmic color saturation tailored for modern OLED mobile panels.
  • High Refresh Rate Frame Pacing:
    • Decoupled 30/60/90/120/144 Hz presentation pacing from the 60 Hz physics clock.

4. Quality-of-Life & Speedrunning Practice Tools

  • Instant In-Memory Savestates (0ms Latency):
    • Instant snapshot and restore of Mario's exact 3D coordinates, velocity vector, front direction, and health with zero loading screens.
  • Speedrun Practice Telemetry HUD:
    • Real-time on-screen telemetry overlay displaying 3D position coordinates, horizontal speed, vertical speed, yaw angle, health pouch, and stage timer.

Highlights & Issue Fixes in v0.0.3

1. Save Loading & Stage Transition Stability (Fixes #60, #61, #64, #70)

  • Save File Index & State Preservation: Fixed critical save file corruption where quickLoadGame() passed 0 as file index to SaveDataHandleSequence, producing config0 and mario0 and crashing on reload. The system now strictly preserves 1-based indexing (1..3) and Mario/Luigi character selection.
  • Safe Stage Reload Scene Controller: Fixed stage restart crash caused by passing galaxy names directly to MR::requestChangeScene() (which only accepts "Game", "Intermission", and "Logo"). Transitions are now correctly routed through "Game" with stage parameters, backed by a safe fallback guard in initializeScene().
  • Safe Asynchronous Save Coordinator: Implemented an asynchronous save coordinator that safely flushes the NAND queue and waits for NANDManager idle before triggering scene reload, eliminating concurrent transition race conditions.
  • Camera Target Transition Guard: Added strict null validation in CameraTargetHolder::movement(), isOnGround(), and isMoving() during dome entries and stage loading sequences, eliminating SIGSEGV crashes.
  • Audio / DSP Thread-Safety & Mailbox Sync: Filtered OS control mails (0xCDD1xxxx) from mailbox packet counters and guarded concurrent audio command pushes from JASAudioThread with mutex synchronization to eliminate audio desync.
  • THP Cutscene & Memory Heap Protection: Removed 8MB redundant MEM1 heap clamp and added explicit destructor cleanup for mMovie and mBuffer in MoviePlayerSimple to eliminate memory leaks across cutscene transitions.

2. Graphics Rendering & Display Stability (Fixes #52, #54, #67)

  • 30 FPS Decoupled Pacing (No Slow-Motion): Decoupled 30 FPS / Battery Saver presentation pacing from the internal Wii Video Interface clock (PORT_IRQ_VI). Game logic, animations, camera, timers, and physics now strictly tick at 60 Hz (100% normal real-time speed) while pacing swapchain presentation to 30 FPS, preventing 50% slow-motion gameplay.
  • SurfaceFlinger Compositor Flicker Fix: Clamped swapchain presentation fragment alpha to opaque 1.0 in vk_renderer.cpp. This prevents Android's window compositor from treating frames with zero clear alpha as translucent, completely eliminating screen flickering and flashing.
  • Bowser & Dynamic Mesh Texture Matrix Fix: Corrected GX_ITM_T0 matrix row index from m * 2 to m * 2 + 1 in both OpenGL and Vulkan shader generators, fixing Bowser's facial morphing and corrupted texture coordinates.
  • Dynamic VI Retrace Timing: Replaced the hardcoded 8ms retrace interval in platform/src/vi/vi.cpp with dynamic frame-interval pacing calculated from the native display refresh rate, eliminating the 30 FPS halving bug on 120Hz/144Hz displays.

3. Low-End & Wii-Comparable Hardware Optimizations

  • Batched Vulkan Texture Uploads: Re-architected uploadTextures() to record all staging buffer copies and layout transitions into a single command buffer with an atomic queue submission. Eliminates dozens of synchronous vkQueueWaitIdle CPU-GPU pipeline stalls whenever new models or galaxies load.
  • Native 480p Wii Resolution Default: Set default resolution to 480p Native Wii (640×480), slashing GPU pixel fillrate and bandwidth pressure by 85% compared to 1080p, while preserving sharp retro visuals and cool thermals.
  • Direct Vulkan 1.0 Runtime: Configured Vulkan 1.0 as the primary low-overhead backend with automatic fallback to OpenGL ES 3.2 on legacy GPUs.
  • Zero-Overhead Default Profile: Disabled profiling HUD by default and capped target frame rate to 60 FPS, preventing Android CPU governor thermal throttling.

4. Bee Mario Flying & Flight Gauge Restoration (Fixes #55, #63)

  • Bee Flight Power Meter Synchronization: Restored proper Bee flight stamina gauge rendering in Honeyhive Galaxy by linking layoutHolder->setBeePowerRatio() to PlayerMode_Bee and adding clamp protection against 16-bit underflow in SubMeterLayout.
  • Bee Flight Button Detection: Enhanced MarioBee flight checks to test both physical controller A button and touch screen button holds via port_input_real_a().

5. Installer Resiliency & External MicroSD Card Support (Fixes #51, #68)

  • MicroSD Volume Detection: Fully integrated multi-storage scanning across /storage/* and /mnt/media_rw/* in both the native runtime and Java launcher.
  • Scoped Storage Path Detection: Added candidate discovery for GalaxyData under scoped storage, external app directories, and primary internal storage.

Don't miss a new Galaxy-Android release

NewReleases is sending notifications on new releases.