A complete mobile adaptation of Maurice Guégan's classic Mari0 (Super Mario Bros. meets Portal), ported to Android with customizable on-screen touch controls, independent dual portals, directional D-Pad aiming, smooth integer letterboxing, and crash-free Android lifecycle management.
-
Dual Independent Portal Guns:
- Dedicated P1 (Blue) and P2 (Orange) tactile buttons that fire instantaneously on tap without mutual delay lockouts.
-
8-Way D-Pad Directional Aiming & Facing:
- Turning Mario with the D-Pad automatically faces and aims his portal gun in that exact direction (Up, Down, Left, Right, and 45° diagonals).
- Mario's facing direction stays locked when releasing the D-Pad until you choose another direction.
-
Zero Accidental Screen Portals or Clicks:
- Free-screen taps will never accidentally fire portals or click menu buttons. Gameplay and menus are 100% navigated via the virtual controller. (Touch placement remains available in the level editor).
-
In-Game Controller Layout Editor:
- Tap the top-right
HUDbutton at any time to move buttons anywhere on screen, scale them up/down (+ SIZE/- SIZE), reset, and save your custom layout persistently tomobile_layout.txt.
- Tap the top-right
-
Smooth Integer Letterboxing & Scissor Fix:
- Adapts the native
$400 \times 224$ retro resolution to modern ultrawide phone screens (20:9, 19.5:9, etc.) using clean integer pixel scaling and hardware-centered offsets without clipping ground tiles.
- Adapts the native
-
Crash-Free Android Lifecycle:
- Replaced desktop process-quitting traps (
love.event.quit()) with mobile-safe menu navigation so the app resumes instantly from Android background/recents without crashes or freezes.
- Replaced desktop process-quitting traps (
| Control | Type | Description |
|---|---|---|
| D-Pad (Left / Right / Up / Down) | Touch | Move Mario & aim portal gun in 8 directions (facing locks on release) |
| A Button | Action | Jump / Select in menus |
| B Button | Action | Sprint & Fireball / Back & Escape in menus |
| P1 Button (Blue) | Action | Fire Blue Portal instantly |
| P2 Button (Orange) | Action | Fire Orange Portal instantly |
| || Button | Utility | Pause / Resume game |
| HUD Button | Utility | Open the on-screen Controller Layout Editor |
- Go to the Releases tab on GitHub.
- Download
mari0-v0.13.apk. - On your Android device, tap the downloaded
.apkto install. (If prompted, allow "Install from Unknown Sources" for your browser or file manager). - Launch Mari0 from your app drawer and enjoy!
- Java: OpenJDK 17
- Android SDK: Build-Tools 34.0.0,
apksigner,zipalign - Python: 3.8+ (for binary AXML rebadging and APK packaging)
- Zip / Unzip: Command line utilities
-
Clone this repository:
git clone https://github.com/ediussss/mari0-android.git cd mari0-android -
Compile and package the standalone Android APK using the GamePorts build tool:
./scripts/build-port.sh mari0 debug
-
The signed APK package will be generated at:
apks/mari0/mari0.apk
- Original Game: Created by Maurice Guégan / Stabyourself.net.
- LÖVE 11 Compatibility: Updated by Noahkiq and WillWare.
- Android Mobile Port & Touch HUD: Ported by ediussss.
- Audio & Graphics: Nintendo (Super Mario Bros.) & Valve (Portal).
