The first native ARM64 Android port of Super Mario Galaxy, executing compiled C++ game logic directly on Android hardware with zero emulation overhead.
- Exclusive Multi-Touch Pointer Tracking: Rebuilt the touch input pipeline with a stateful pointer role tracking engine (
TouchRole) supporting up to 10 concurrent fingers. - Mutually-Exclusive Nearest-Distance Matching: Replaced overlapping hitboxes with exclusive Euclidean distance selection. A single touch can never trigger two buttons simultaneously (e.g. A + Spin or B + Z).
- Eliminated Ghost Tap Injections: Removed accidental
WPAD_BUTTON_Apress injections upon screen release during gameplay. Mario now jumps strictly when the A button is pressed. - Ergonomic Arc Layout: Spaced out primary action buttons (A: Jump, B: Star Bit Shoot, Z: Crouch/Pound, SPIN: Shake/Cyclone, +: Pause) with comfortable thumb clearance matching rendering sub-pixels.
- Directional Camera D-Pad: Smooth camera orbit (◀ ▶) and recenter (▲ ▼) controls with customizable left/right dock positioning.
- Actor Lighting Fix: Solved the actor over-saturation glitch where Mario and NPCs rendered glowing cyan/white. Added division-by-zero protection against
(0,0,0)camera-origin rim lights (GX_LIGHT2) that causedNaN/INFlight vectors on ARM Mali-G68 GPUs. - Water Refraction & EFB Distortion Mapping: Corrected Y-axis screen coordinate mapping in
gl_shadergen.cpp, fixing flipped texture distortion on water surfaces and heat shimmers. - GX Ambient & Material Registers: Properly initialized default hardware state registers (
0x0A..0x0D) matching Nintendo'sGXInit.cspecification.
- Save Anywhere In-Game: Integrated native save routine into the engine sequence (
GameSequenceFunction::quickSaveAnywhere()) saving Mario's progress, star bits, coin count, comet scheduler, and unlocked galaxies to NAND storage immediately without needing to return to the observatory. - Settings Drawer Quick Save: Dedicated row in the Material 3 drawer (
⚙-> "⚡ Quick Save Anywhere") triggering the save sequence. - Floating Toast HUD Banner: Animated top pill toast notifying player:
"Game Progress Saved Anywhere!".
- GX Frame Replay Hook: Connected
update()andrender()togpu::frameQueue().latest()to actively poll and execute game frame draw calls into offscreen Vulkan EFB targets. - Blit Format Capabilities & Filter Validation: Added
vkGetPhysicalDeviceFormatPropertieschecks forVK_FORMAT_FEATURE_BLIT_SRC_BIT/VK_FORMAT_FEATURE_BLIT_DST_BITand linear filter support, falling back gracefully toVK_FILTER_NEARESTor clear pass. - Swapchain Transfer Support Verification: Explicitly verifies
VK_IMAGE_USAGE_TRANSFER_DST_BITin surface capabilities before configuring swapchain images. - Comprehensive VkResult Error Checking: Added status checks to
vkEndCommandBuffer,vkQueueSubmit, andvkQueuePresentKHR, with robust swapchain recreation onVK_ERROR_OUT_OF_DATE_KHRandVK_SUBOPTIMAL_KHR.
- Linux Case-Sensitivity Fixes: Fixed
XanimeCore.hppand standardized all 12KariKariDirector.hppinclude paths across the codebase, resolving CI compiler failure on Ubuntu runners. - Gamepad & TV / Handheld Support: Configured
android.hardware.touchscreentoandroid:required="false"and enabledandroid.hardware.gamepad, bringing native support to Odin, Retroid Pocket, Logitech G Cloud, and Android TV.
- Resolved
pythonhome.zipExtraction Blocker: Whitelistedpythonhome.zipin.gitignoreto prevent embedded Python standard library assets from being omitted in release builds. Added packaging assertions guaranteeing Python runtime presence. - Integrated Native Cooker (
libinstaller.so): Added CMake build target forinstallerlibrary with full JNI aliases forcom.openport.galaxyandroid, enabling zero-setup in-app asset extraction. - SAF Document & Content URI Handling: Resolved
content://URIs when selecting.rvz,.iso, or.wbfsfiles via Android's file picker, resolving clean filenames and streaming images for extraction without skipping the disc unpack step.
GalaxyAndroid.apk: Unified APK containing native ARM64libgame.so,libmain.so,libreserve.so,libinstaller.so, andlibnodtool.sosigned for Android 11+ (API 30+).