Xbox 360 emulator · Android 10+ · arm64-v8a

Xendroid+

Xbox 360 emulation on Android, tuned for Snapdragon and Adreno GPUs. It continues XenDroid on the Xenia core, with an interface for touch and controllers, per-game settings applied at launch and a diagnosis of every session on the device itself.

Download build 63

APK · 40.4 MB published Oct 14, 2026 SHA-256 358a88287784…

Release notesAll versionsHow to install and update

Experimental. How each game runs depends on the game, the device and the GPU driver: some titles run well, others still have glitches or do not boot.

Library in touch mode, landscape: rail with the app's areas on the left, search, filters, cover grid and, on the right, the selected game's panel with Play and the quick settings.
The library in touch mode. Image generated by the app’s screen tests, with sample covers and games. The app is shown in Portuguese.
Inside the app

The Xendroid+ screens

Images generated from the interface code by the project’s screen tests, which run with the app in Portuguese. The games, covers and numbers in them are sample data.

Game details: sections on the left (overview, settings groups, performance, patches and content, saves and data) and, at the top, Start with… and Play.

Your games in a library that understands the Xbox 360

  • Finds ISO, ZAR, GOD, folders with default.xex and XBLA packages in your folders, with search by name or Title ID, favorites, collections and a format filter.
  • Each game’s details page brings together Play, Start with… (profile, driver, executable, without patches or without the game’s settings, for that launch only), sessions, patches and saves.
  • With a controller connected, the interface switches to controller mode by itself: a cover carousel, tabs on LB and RB and button hints always in view.
In-game menu in the Image category: rail with Image, Performance, HUD, Controls and Session, and the screen and effects options with each row's value.

Settings in the middle of a game, saved for that game

  • The menu slides in from the left edge, with Back or the controller’s Guide button, and pauses the game by default.
  • Five categories: Image, Performance, HUD, Controls and Session. Scaling, antialiasing, sharpness and dither change right away.
  • What you change is saved for that game, with Undo this session’s changes and Use these changes in every game. The HUD shows FPS, frame time, CPU, GPU, memory, temperatures and battery.
Settings in the Interface section: interface mode (Automatic, Touch, Controller), settings shown (Essential, Advanced and All, with how many settings each level shows), buttons in the menus and suggestions after a session.

173 settings, each one saying when it applies

  • Three levels of detail: Essential (24), Advanced (62) and All (173). Each row says whether the value is the default, whether it changed and whether it applies right away or at the next launch.
  • The same settings apply to every game in Settings, or to one game from its details page, saved in config/<Title ID>.config.toml, the file the core reads.
  • The Performance, Balanced and Quality presets apply several settings at once, with Undo.
GPU drivers: the chosen driver and the one the last session loaded, installed packages, packages to download, sources and Turnip options.

Turnip drivers per game, checked before they are installed

  • Download packages from sources on GitHub (the default is K11MCH1/AdrenoToolsDrivers) or import a ZIP; the app checks the arm64 Vulkan library and the SHA-256 when the release publishes one.
  • Pick a driver for every game, one per game or one just for the next launch; the system driver is always one tap away.
  • The 11 Turnip flags (TU_DEBUG) are listed one by one, with sysmem as the default. Custom drivers only load on Adreno GPUs.
Touch controls in the Modern look over the game: dark glass buttons with colored A, B, X and Y letters.

Touch, a physical controller and even another phone

  • Touch controls in the Modern or Classic look, with a layout editor, layouts saved per game and per orientation, touch camera and gyroscope.
  • Physical controllers play as P1 to P4, with mapping for the 16 buttons, rumble per controller and a screen to test every button.
  • Phone as controller (experimental): another phone on the same local network joins as P2 to P4 with a 6-digit code.
Diagnostics: saved sessions, how each one ended and the selected session's summary.

Every session leaves a trail you can share

  • The app keeps the latest sessions (4 by default), with the emulator log, the app’s logcat and how each one ended.
  • Sharing produces a cleaned copy: paths, gamertags, XUIDs, IP addresses, e-mail addresses, passwords and tokens are removed first.
  • At the end of a session with problems, the app suggests up to three changes with the reason in numbers, and Compare runs measures one change at a time (A B B A).
What is different

Made for the device, checked against the code

Every number below is counted in the code of build 63 when this site is generated.

  1. 11games with fixes

    Per-game fixes applied at launch

    The core carries 80 settings for 11 specific games, such as Forza Horizon, Gears of War 3, and Ninja Gaiden II. They kick in when the title starts, with the priority of a game’s own setting, without you configuring anything.

    See the list
  2. 173settings

    Every setting comes from the app’s schema

    Image, performance, audio, controls, compatibility, driver, system and debugging, global or per game. The per-game file is written in the format the core reads, and this site’s simulator generates the same file.

    Full reference
  3. 305games with patches

    Game patches inside the APK

    The 479 Xenia Canary patch files ship with the app. The details page separates the patches made for your version of the game from the ones for other versions.

    How they work
  4. 11Turnip flags

    Adreno driver manager

    Turnip packages downloaded from GitHub or imported, checked before installing, chosen for every game, per game or for a single launch.

    GPU drivers
  5. A/Bcompare runs

    Measure before you change

    Every session records FPS per second, frame time, pipelines created, audio glitches and temperature. Compare runs only gives a verdict when the runs follow the A B B A order and differ in a single thing.

    Performance
Measured performance

Measurements published by the project

Measured on a POCO F7 (Snapdragon 8s Gen 4, Adreno 825) with Turnip, in development builds (October 2026). Your device, driver and game version will change these numbers.

GameTested inFrame rateNotes
Forza HorizonRacing30 fps (game cap)~18 ms of GPU time per frame
Forza Horizon 2Racing27–30 fpsForza Horizon's settings applied
Gears of War 3Campaign, Versus30 fps (game cap)GPU 40 → 28 ms per frame in its heaviest scene
Halo 4Campaign~26–30 fpsVideo cutscenes fixed; a small shadow flicker remains
Need for Speed: Most WantedRacing~19 fpsBoot and gameplay crashes fixed
Sonic UnleashedGameplay50–52 fps—
Halo: ReachMenus, intro30 fpsDips to 19 fps
Crysis 3Menus, intro32–46 fpsJIT crash fixed
Grand Theft Auto IVMenus, intro~22 fpsLimited by the GPU command thread
Red Dead RedemptionMenus, intro~25 fpsLimited by the GPU command thread

Source: README.md and performance-tests/. They are not a guarantee: your device, the driver and the game version change these numbers.

Before you install

Requirements and limitations

What the device needs

Android
10 or newer. Choosing the games folder requires Android 11.
Processor
64-bit ARM (arm64-v8a). The APK does not install on other architectures.
GPU
Vulkan, required. The focus is Adreno 7xx and 8xx with the Turnip driver; a Snapdragon 8 Gen 2 or newer is recommended.
Games
Your own, dumped from your discs or consoles: ISO, ZAR, GOD, folders with default.xex and XBLA packages.
Files
All files access, so the library can read the game folders.

Requirements in detail

What still limits it

  • Compatibility varies. There is no public Xendroid+ compatibility list: each game is rated on your own device.
  • Custom drivers only on Adreno. On other GPUs games run on the system’s Vulkan driver.
  • Frame generation is experimental. Win-FG 2× and LSFG start off at every launch; LSFG needs your own Lossless.dll.
  • On Android 10 the app installs, but only opens games launched from a frontend: choosing folders requires Android 11.
  • Community settings and the compatibility catalog exist in the code, but are off in the published versions: there is no server.

Not in the appRecorded proposals, not implemented yet

  • A key map for each controller (today one map applies to all of them).
  • Finding the game on the network and scanning a QR code on the phone used as a controller.
  • Looking for the disc file when disc swapping finds none.

Recorded in docs/ui-redesign/app.md (in Portuguese), with no planned date.

Next steps

Documentation and simulator

Documentation

From installation to collecting logs, written from the code of build 63, with search and links to every section.

Interface simulator

Browse the app’s screens in the browser, in touch or controller mode, with a keyboard or a real controller. The settings are the 173 of build 63, and a game’s config file comes out in the format the core reads.

Open the simulator

The simulator’s games, covers, profiles and sessions are examples; nothing runs a game.

The project

Open source, built on the device

Xendroid+ is created and maintained by phforner0. It continues XenDroid, the original Android port by rfandango, and uses the core of Xenia and Xenia Canary.

Performance work is measured frame by frame on real devices, with methods and results in performance-tests/, and every published version comes with notes on what changed. Third-party components keep their own licenses, listed in THIRD-PARTY-NOTICES.md.

Type to search every documentation page, the app settings and the TOML keys.

↑ ↓ chooseEnter openEsc close