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 + Spinon ground): Roll smoothly across planetary surfaces with boosted velocity.
- Air Dive (
- 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.
- In addition to pointer assist, Controller 2 / Player 2 can now directly trigger Co-Op Jumps (
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 toSaveDataHandleSequence, producingconfig0andmario0and 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 ininitializeScene(). - Safe Asynchronous Save Coordinator: Implemented an asynchronous save coordinator that safely flushes the NAND queue and waits for
NANDManageridle before triggering scene reload, eliminating concurrent transition race conditions. - Camera Target Transition Guard: Added strict null validation in
CameraTargetHolder::movement(),isOnGround(), andisMoving()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 fromJASAudioThreadwith mutex synchronization to eliminate audio desync. - THP Cutscene & Memory Heap Protection: Removed 8MB redundant MEM1 heap clamp and added explicit destructor cleanup for
mMovieandmBufferinMoviePlayerSimpleto 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.0invk_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_T0matrix row index fromm * 2tom * 2 + 1in 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.cppwith 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 synchronousvkQueueWaitIdleCPU-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()toPlayerMode_Beeand adding clamp protection against 16-bit underflow inSubMeterLayout. - Bee Flight Button Detection: Enhanced
MarioBeeflight checks to test both physical controller A button and touch screen button holds viaport_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
GalaxyDataunder scoped storage, external app directories, and primary internal storage.