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+.
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 ID | Game | Settings | Cvars |
|---|---|---|---|
544307D5 | Ninja Gaiden II | 1 | inline_gprlr_saverest_parts |
4D5307D1 | Project Gotham Racing 3 | 1 | spirv_multiply_zero_test_on_bits |
494707D4 | Test Drive Unlimited | 2 | vulkan_in_pass_resolve, network_enabled |
49470804 | Test Drive Unlimited 2 | 2 | vulkan_in_pass_resolve, network_enabled |
4E4D083A | Dark Souls | 1 | spirv_multiply_zero_test_on_bits |
45410961 | Need for Speed Most Wanted (2012) | 8 | spirv_multiply_zero_test_on_bits, memexport_enable, readback_resolve, vulkan_depth_4x_as_1x and 4 more |
4D5309C9 | Forza Horizon | 22 | spirv_texture_sign_branch, spirv_fast_precision_rounding, vulkan_texture_load_to_image, vulkan_direct_host_resolve_to_texture and 18 more |
4D530AA4 | Forza Horizon 2 | 19 | spirv_texture_sign_specialization, spirv_texture_sign_branch, spirv_fast_precision_rounding, skip_overwritten_transfers and 15 more |
4D5308AB | Gears of War 3 | 2 | vulkan_depth_4x_as_1x, vulkan_samples_as_pixels_simple_ps |
4541098E | Crysis 3 | 16 | vulkan_depth_4x_as_1x, vulkan_samples_as_pixels_simple_ps, accurate_resolve_number_formats, resolve_copy_dest_number_packing and 12 more |
53510823 | Rise of the Tomb Raider | 6 | accurate_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) anddepth_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_drawsis 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.