Skip to content

feat: native Android port with controller, touch overlay, and ROM auto-loader - #77

Open
sergiomanzur wants to merge 1 commit into
murkantor:mainfrom
sergiomanzur:android-port
Open

sergiomanzur wants to merge 1 commit into
murkantor:mainfrom
sergiomanzur:android-port

Conversation

@sergiomanzur

Copy link
Copy Markdown

Summary

This pull request introduces native Android support for Project Midas, bringing the decompilation port of GoldenEye 007 to Android devices and gaming handhelds (e.g. Retroid Pocket, Odin, Android phones/tablets).

What is included

  1. Android Gradle & CMake Tooling:
    • Standalone Gradle project under \�ndroid/\ integrating CMake build via AGP with SDL2 and OpenGL ES 3.0 renderer.
    • Supports 64-bit (\�rm64-v8a) and 32-bit (\�rmeabi-v7a) targets.
  2. First-Run Permission Handling & ROM Auto-Detection:
    • \RomActivity\ prompts for storage permissions when needed (\MANAGE_EXTERNAL_STORAGE\ on Android 11+ / API 30+, fallback to SAF document picker).
    • Automatically searches common device directories (/sdcard/Download, /sdcard/ROMs, etc.) for \GoldenEye 007 (USA).z64.
    • Validates size (12 MiB), byte order (.z64, .v64, .n64), and SHA-1 hash (\�be01e4aeb033b6c0836819f549c791b26cfde83), normalizing into app-private storage as \Data/baserom.u.z64.
    • Persists ROM path and configuration in \midas.ini\ so subsequent launches boot straight into the game.
  3. Controller & Handheld Compatibility:
    • Full support for Android physical controllers (Retroid Pocket, Xbox, PlayStation, 8BitDo) mapped seamlessly to Player 1.
  4. Touch Control Overlay:
    • On-screen touch controls with dual analog thumbsticks, D-pad, action buttons, Z trigger, and pause menu.
    • Always-visible HIDE / PAD toggle button at the top center to easily hide touch controls when playing with physical controls.
  5. Full PC Feature Parity:
    • In-game PORT OPTIONS menu is fully functional in both the Files menu and Pause Watch menu.
    • Video filters (3-point, bilinear, point, trilinear), anisotropic filtering, MSAA, widescreen aspect ratio, custom FOV, and unlocked/60 FPS pacing.
    • Audio volume sliders and stereo panning options.
    • All options write directly to and persist in \midas.ini.
  6. ARM Clang Stability Fixes:
    • Added guards against NULL dereferences during model LOD distance calculation (\modelUpdateDistanceRelations, \modelGetNodeRwData, etc.) where unpopulated nodes caused crashes on ARM Clang builds.
  7. Assets:
    • GoldenEye 007 adaptive and legacy launcher icons across all standard Android densities.
    • Portrait and landscape splash screens.

All credit and gratitude to @murkantor and the Project Midas team for the amazing work on this project!

…ction, and assets

- Full Android port supporting arm64-v8a and armeabi-v7a via SDL2 and OpenGL ES 3.0
- Automatic ROM scanning and validation (GoldenEye 007 USA) with persistent midas.ini storage
- Comprehensive storage permission handling (Android 11+ MANAGE_EXTERNAL_STORAGE and SAF fallback)
- Retroid Pocket and physical controller support with Player 1 input mapping
- Full virtual touch controller overlay with always-visible HIDE/PAD toggle button
- Complete PC Port Options menu support (3-point/trilinear video filtering, widescreen, audio, QoL)
- GoldenEye 007 custom adaptive/legacy icons and portrait/landscape splash screens
- Resolved ARM Clang model LOD distance check and rodata dereference guards
- All thanks and credit to murkantor and the Project Midas team for the amazing PC decomp port
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant