Compatibility and limitations

The fixes the core applies on its own per game, the project's compatibility notes, how to rate a game on your device, and what still limits Xendroid+.

Build 63Applies to build 63 and to the current main, which has the same settings and data.

Reviewed against the code of Oct 6, 2026 (bd1d2a8d) Edit this page

The code changed after the review

App files cited on this page changed after its last review: emulator-core/src/main/cpp/xenia/src/xenia/game_quirks.cc. Check against the version you use; the page may be out of date on those points.

Xendroid+ has no public compatibility list. What runs, and how it runs, depends on the game, the device, the GPU driver and the app version. This page gathers what the project documents.

Automatic per-game fixes #

The core ships 80 settings for 11 games (game_quirks.cc). They apply when the title starts, with the priority of a game's own setting: above the global config and below the config/<TITLE ID>.config.toml file. You don't need to configure anything, and a value you set in the game's file wins over the fix. The emulator log records each one as Game quirk for <TITLE ID>: <cvar>.

Title IDGameSettingsCvars
544307D5Ninja Gaiden II1inline_gprlr_saverest_parts
4D5307D1Project Gotham Racing 31spirv_multiply_zero_test_on_bits
494707D4Test Drive Unlimited2vulkan_in_pass_resolve, network_enabled
49470804Test Drive Unlimited 22vulkan_in_pass_resolve, network_enabled
4E4D083ADark Souls1spirv_multiply_zero_test_on_bits
45410961Need for Speed Most Wanted (2012)8spirv_multiply_zero_test_on_bits, memexport_enable, readback_resolve, vulkan_depth_4x_as_1x and 4 more
4D5309C9Forza Horizon22spirv_texture_sign_branch, spirv_fast_precision_rounding, vulkan_texture_load_to_image, vulkan_direct_host_resolve_to_texture and 18 more
4D530AA4Forza Horizon 219spirv_texture_sign_specialization, spirv_texture_sign_branch, spirv_fast_precision_rounding, skip_overwritten_transfers and 15 more
4D5308ABGears of War 32vulkan_depth_4x_as_1x, vulkan_samples_as_pixels_simple_ps
4541098ECrysis 316vulkan_depth_4x_as_1x, vulkan_samples_as_pixels_simple_ps, accurate_resolve_number_formats, resolve_copy_dest_number_packing and 12 more
53510823Rise of the Tomb Raider6accurate_resolve_number_formats, resolve_copy_dest_number_packing, texture_integer_num_format, vulkan_depth_clamp_without_depth and 2 more

Most of them fix hangs and rendering glitches on the Turnip driver or save GPU or CPU time; the comments on each entry, in game_quirks.cc, give the reason and the measurement the author made. Game names come from the repository's patch files or, when there is no patch, from the Xenia title database bundled with the core, used here only for the name.

Project notes per game #

GAME_COMPAT.md documents two games in more detail:

  • Ninja Gaiden II (544307D5): playable with two settings in the game's file, clear_memory_page_state = true (brings back the character models) and depth_float24_convert_in_pixel_shader = true (prevents GPU hangs on Adreno), both in the [GPU] section.
  • Fable II (4D5307F1): runs with no special settings since June 2026, with known issues (see-through ground in some places, occasional failures while loading, and audio dropouts).

The same document has notes for drivers and devices: vulkan_mid_frame_submission_draws on some Adreno 830 devices, a global depth_float24_convert_in_pixel_shader on drivers that fail on the float32 path, and vulkan_dynamic_constant_buffers turned off on Qualcomm's drivers.

Outdated parts of GAME_COMPAT.md

  • The correct path for each game's file is Android/data/xendroid.compose.fork/files/compose/config/<TITLE ID>.config.toml; the document cites a different package and a different folder.
  • The Fable II patch that the document says is in the repository (patches/4D5307F1.patch.toml) does not exist; the catalog has other patches for this game.
  • The default of vulkan_mid_frame_submission_draws is now 1300, not 0.

Rate a game on your device #

In Details → ⋮ menu → Rate compatibility, choose how the game ran: doesn't boot, boots with no picture, intro or menus only, in-game with problems, or playable. The rating stays on your device only, with the app version, the GPU, the driver and the date, and nothing goes over the network. It is included in the settings backup.

Known limitations #

  • Experimental. Some games run well; others still have glitches or don't start.
  • Custom drivers only on Adreno with KGSL. On other GPUs, only the system driver.
  • Frame generation is experimental, starts off every time a game starts, and LSFG needs your own Lossless.dll. Frame pacing and latency on a device have not been validated yet.
  • Phone as controller is experimental and only works on the local network.
  • Android 10 only opens games launched from a frontend.
  • Community settings and the compatibility catalog exist in the code but are turned off in the published builds: none of them has a server configured.
  • Recommended profiles per game: the list that ships with the app is empty.
  • New interface (library, Details, in-game menu and the other screens): the redesign document keeps a list, per batch, of items still to be checked on a device. See docs/ui-redesign/app.md.

Proposals left out of the app #

Three proposals from the interface prototype were left out, with no planned date:

  • a key map for each controller;
  • finding the game on the network and scanning a QR code with the phone as controller;
  • browsing for the disc file when disc swap finds none (today, Cancel is the way out, and the disc shows up once it is placed in a games folder).

Help with reports #

The repository has an issue template for performance reports, which asks for CPU, GPU, manufacturer, Android version, game and notes. Also include the app version (in About), the driver and the Title ID, and attach the session diagnostic. Community discussion happens on Discord.

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

↑ ↓ chooseEnter openEsc close