# SKATE 3 MOBILE, DEV IN PROGRESS!

OPEN THE SKATE 3 MOBILE WEBSITE  ·  DOWNLOAD THE ANDROID APK  ·  UPDATES  ·  REPORT A BUG

Android mascot skateboarding in front of the Skate 3 logo

Skate 3 running as native ARM64 code on Android through static recompilation. This is not an Xbox 360 emulator. The current release is a developer build. The Android port is experimental, but it is playable on the Anbernic RG406V. It uses the native Vulkan renderer from Skate3Recomp with Android input, audio, storage, performance profiles, and handheld tuning added in this fork. No retail game files are included. You must provide your own legally obtained copy of Skate 3. The phone installer obtains and verifies the supported Title Update 3, with a manual file-selection fallback if its download is unavailable. ## Players: start here You do not need a computer, developer tools, or an ISO extraction app. 1. [Download the latest signed Android APK](https://github.com/Buku313/Skate3-Mobile/releases/latest/download/Skate3-Mobile-Android.apk). 2. Install it and open **Skate 3 Mobile**. 3. Tap **Select My Skate 3 ISO** and choose an ISO dumped from your own copy. 4. Keep the app open while it extracts and verifies the game. 5. Tap **Play Skate 3**. Requirements: Android 13 or newer, ARM64, Vulkan, and about 8 GiB free after the ISO is already available. A multitouch controller is built in for phones. Physical and built-in gamepads remain supported. The first verified device is the Anbernic RG406V. This is experimental software, so other phones may need testing and tuning. Starting with v2.0.8, the launcher checks for signed updates automatically. It downloads and verifies the new APK inside the app. Android still asks you to approve the installation, but you do not need to return to GitHub or reinstall your game files. QA and developer users on older builds: install the matching v2.1 APK once, without uninstalling. From v2.1, each package has its own update channel. [QA Build](https://github.com/Buku313/Skate3-Mobile/releases/download/v2.1.0-qa1/Skate3-Mobile-QA.apk) installs separately from the main app. The original skater is selected by default. Seiyu Paradise Penguin is included in the APK and remains optional. In game, press **RB + Start**, open **Mods**, and switch between **Original Skater** and **Seiyu Paradise Penguin** instantly. The verified Mod Store remains available for community characters. ## How it works and how it was developed This project is a fork of Alex McHugh's [Skate3Recomp](https://github.com/mchughalex/skate3recomp), not a new port made from scratch. The upstream Git history and authorship are preserved. The build uses these methods: 1. The user supplies an extracted retail `default.xex`, the EAWebKit XEX, and Title Update 3. A local build step prepares the updated executables and patch files. 2. The rexglue code generator statically translates the configured Xbox 360 PowerPC guest functions into native code. Android Clang then compiles and links that generated code as ARM64 libraries with the rexglue compatibility runtime. The finished game logic runs as native AArch64 rather than through a conventional CPU emulator. 3. Runtime hooks observe the game's mesh submissions, textures, shader state, constants, and frame data. The custom native scene renderer reconstructs that work with Vulkan shaders instead of directly running the original Xbox 360 graphics pipeline. 4. SDL3 supplies the Android window, physical controller, and audio integration. A native XInput bridge merges the optional multitouch overlay into player one, including in the recomp menu. The phone installer reads the user's ISO through Android's system file picker, extracts it locally, verifies the supported executables, installs the exact Title Update 3 payload, and stores the result in private app storage. Older `/sdcard/skate3` installations remain supported. 5. The launcher checks a small manifest hosted by this repository, compares the version code, verifies the downloaded APK with SHA-256, and hands it to Android's package installer. Android also enforces the existing app-signing certificate. Updates never replace the extracted game directory. 6. The handheld profile lowers scene resolution and draw distance, simplifies materials, removes grass and costly post effects, reduces selected static rendering work, and uses native occlusion and frame pacing. Physics, player input, the board, menus, and HUD remain full-rate. The quality profile keeps substantially more of the native renderer enabled for faster devices. Reverse engineering in this project uses executable analysis, function and shader disassembly, runtime logging, graphics captures, targeted hooks, and repeated testing on real hardware. Development and documentation in this fork have also been assisted by OpenAI Codex, with human review and input the whole way through. The repository does not distribute retail executables, assets, Title Update data, or generated game code. Those inputs and generated outputs stay local to the person building the project. This is experimental research software, and a 60 FPS setting is a target and guest cap, not a performance guarantee. ## Current status - Boots into the game - Menus and controller input work - Optional multitouch controller for phones - Verified in-app APK update checks - In-app GitHub bug reports with privacy-safe device and crash diagnostics - Gameplay and tricks work - Native Vulkan rendering works - Experimental rootless custom Turnip drivers hidden under Advanced Options - 4 KB and 16 KB Android memory pages are supported - Saves and game data load from Android storage - RG406V performance profile included - High-end Android quality profile included - Seiyu Paradise Penguin included, with the original skater selected by default - Experimental direct-IP free-skate ghost included and disabled by default This is still early. Expect visual bugs, missing effects, device-specific problems, and performance differences between phones. ## Device requirements - Android 13 or newer - ARM64 - ARMv8.2 with FP16 and dot-product support - Vulkan support - Touchscreen, physical controller, or built-in gamepad The RG406V with the Unisoc T820 and Mali-G57 is the first verified device. Newer Snapdragon and Adreno devices are good candidates, but they have not all been tested. ## Graphics profiles The same APK includes both profiles. ### RG406V / Performance - 512x288 internal 3D scene - Full-resolution menus and HUD - Reduced world and LOD range - Simplified materials - Grass and expensive post effects disabled - 60 FPS guest cap ### High-End / Quality - 1280x720 internal 3D scene - Original world and LOD range - Vegetation and full material layers - 2x MSAA - Shadows, SSAO, bloom, and volumetric lighting - 60 FPS guest cap Open the recomp menu with **RB + Start**. Go to **Video**, select **Android Device Profile**, then use **Apply & Restart**. ## Optional Turnip drivers Snapdragon / Adreno users can open **Advanced Options > GPU driver experiments** in the Android launcher and import an AdrenoTools-compatible driver ZIP. The package is checked before it is copied into private app storage. Importing a driver does not enable it. Skate 3 Mobile validates the ADPKG metadata, Android API requirement, archive paths, size limits, and ARM64 shared libraries. The driver applies only to Skate 3 Mobile and does not require root. No custom driver is bundled or downloaded by this project. **System Driver** remains the default and is always available as the recovery option. If the game works on the System Driver, do not change this setting. If Turnip makes the game crash, reopen Advanced Options and select **System Driver** before playing. Turnip is for Adreno GPUs. Mali devices such as the RG406V remain locked to the System Driver. Driver packages are device-specific and experimental, so a newer package is not automatically a better package for every phone. ## Game data ### Phone-only setup No laptop, command line, ISO extractor, or Android file manager is required: 1. Install the Skate 3 Mobile APK. 2. Open it and choose **Select My Skate 3 ISO**. 3. Pick an ISO dumped from your own supported Xbox 360 copy. 4. Keep the app open while it extracts about 6.0 GiB and downloads the verified 1.7 MiB Title Update 3. 5. Press **Play Skate 3**. The ISO is read directly from Downloads, an SD card, or a USB drive through the Android file picker. It is never modified or uploaded. The extracted game stays inside this app's storage. You can delete the ISO after setup if you do not need it on the phone. Allow about 8 GiB of free device storage for the installed game. If the ISO is also copied to internal storage, temporary total use can be about 15 GiB until you remove the ISO. Uninstalling the app removes its app-owned game files, so keep your original dump. The installer accepts the currently supported USA/Europe retail executables and checks them with SHA-256 before launch. If the automatic title-update download is unavailable, it offers a button to select your own Title Update 3 package. Existing tester installs in `/sdcard/skate3` are detected and still work when the app already has Android's All files access permission. Full setup, storage, and developer build details are in [android/README.md](android/README.md). ## Build You need Android SDK 35, Android NDK r27c, JDK 17 or newer, CMake, Ninja, Clang, your extracted game dump, and Title Update 3. ### Personal custom build without Terminal On an Apple Silicon Mac: 1. Install and open [Android Studio](https://developer.android.com/studio) once. 2. Double-click `Setup Build Tools.command`. 3. Double-click `Build Skate 3 Mobile.command` and choose your game files. The Mac builder is only needed to make a fresh personal APK or modify native code. Normal players can use the phone-only setup above. The builder can create the APK by itself or build, install, and copy the game to a connected Android device. See the complete [non-coder build guide](docs/NONCODER_BUILD.md). ### One-command build Put the extracted game in `game/` and the Title Update 3 package at the repository root, then run one command: ```sh git clone --recursive https://github.com/Buku313/Skate3-Mobile.git cd Skate3-Mobile ./build-android.sh ``` The script detects Android Studio's SDK, NDK, and Java installation, generates the recompiled code, builds the native libraries, and builds the APK. Custom game and title-update locations are also supported: ```sh ./build-android.sh \ --game-dir /path/to/extracted-skate3 \ --title-update /path/to/title-update-package ``` The finished APK is written to `out/Skate3-Mobile-Android-debug.apk`. Add `--install` to install it on a connected Android device, or `--stage-game` to install the APK and copy your game data. The complete manual build and device setup are documented in [android/README.md](android/README.md). ## SEIYU PARADISE PENGUIN MOD Seiyu ships inside the Android APK and is restored automatically if its files are missing. The original skater remains the default. The catalog, manual download, and verified source assets are published on the [Mod Store website](https://buku313.github.io/Skate3-Mobile/mods/). The files are stored under the active game install: ```text mods/penguin/base.obj mods/penguin/texture_diffuse.png ``` Choose Seiyu from **RB + Start > Mods > Playable Character**. The mod rigs Seiyu to the live skater skeleton and keeps the skateboard visible. Creators can [submit an original custom character](https://buku313.github.io/Skate3-Mobile/mods/submit.html) for testing and possible inclusion in the verified Mod Store. Submissions must include redistribution permission and may not contain retail Skate 3 assets. ## Credits ### Alex McHugh, mchughalex [Alex McHugh](https://github.com/mchughalex) created and maintains the upstream [Skate3Recomp](https://github.com/mchughalex/skate3recomp) project and the [Skate-specific rexglue runtime](https://github.com/mchughalex/rexglue-skate3). His work is the foundation of this project, including the static recompilation pipeline, native renderer, game integration, settings, tools, and a huge amount of reverse engineering. The original commits and authorship are preserved in this repository. ### Andrew Nakas and AlanConstantino [Andrew Nakas](https://github.com/andrewnakas) and contributors developed the runtime, audio, rendering, and Android lifecycle fixes brought into v2.1. [AlanConstantino](https://github.com/AlanConstantino) integrated that work and tested it on the Retroid Pocket 6 in [PR #123](https://github.com/Buku313/Skate3-Mobile/pull/123). Thank you both. Source provenance and test details are in [the integration notes](docs/RP6_INTEGRATION.md). ### Buku313 / Antonio Seevers This fork contains the Android ARM64 port, SDL Android integration, RG406V bring-up and optimization, Android graphics profiles, the Seiyu Paradise Penguin Mod, and the experimental free-skate networking work. ### Projects used - [rexglue SDK](https://github.com/rexglue/rexglue-sdk) - [Xenia](https://github.com/xenia-project/xenia) - [SDL](https://github.com/libsdl-org/SDL) - [libadrenotools](https://github.com/bylaws/libadrenotools) - [Vulkan](https://www.vulkan.org/) - [FFmpeg](https://ffmpeg.org/) See [third-party notices](docs/THIRD_PARTY_NOTICES.md) for applicable license texts. Thank you to everyone whose Xbox 360 research, testing, bug reports, and open source work made this possible. ## Legal This is an unofficial fan project. It is not affiliated with Electronic Arts, Black Box, Microsoft, Google, or the Android project. Skate 3, its characters, names, and related assets belong to their respective owners. Android is a trademark of Google LLC. This repository does not contain the game, title update, DLC, generated game code, or other copyrighted retail data.