From 6e49adb508c009c5f7998a38d47e1d0d174990d0 Mon Sep 17 00:00:00 2001
From: Connor McLaughlin <stenzek@gmail.com>
Date: Tue, 8 Jun 2021 16:34:27 +1000
Subject: [PATCH] Remove Android app

This repository exists solely for the desktop version now.
---
 android/.gitignore                            |   14 -
 android/.idea/.name                           |    1 -
 android/.idea/codeStyles/Project.xml          |  116 -
 android/.idea/codeStyles/codeStyleConfig.xml  |    5 -
 android/.idea/compiler.xml                    |    6 -
 android/.idea/gradle.xml                      |   21 -
 android/.idea/jarRepositories.xml             |   30 -
 android/.idea/misc.xml                        |    9 -
 android/.idea/runConfigurations.xml           |   13 -
 android/.idea/vcs.xml                         |    6 -
 android/app/.gitignore                        |    1 -
 android/app/build.gradle                      |   90 -
 android/app/proguard-rules.pro                |   21 -
 .../duckstation/ExampleInstrumentedTest.java  |   27 -
 android/app/src/cpp/CMakeLists.txt            |   25 -
 .../src/cpp/android_controller_interface.cpp  |  249 --
 .../src/cpp/android_controller_interface.h    |   73 -
 .../app/src/cpp/android_host_interface.cpp    | 2198 -----------------
 android/app/src/cpp/android_host_interface.h  |  171 --
 .../app/src/cpp/android_http_downloader.cpp   |  167 --
 android/app/src/cpp/android_http_downloader.h |   45 -
 .../app/src/cpp/android_progress_callback.cpp |  113 -
 .../app/src/cpp/android_progress_callback.h   |   38 -
 .../src/cpp/android_settings_interface.cpp    |  425 ----
 .../app/src/cpp/android_settings_interface.h  |   54 -
 android/app/src/cpp/opensles_audio_stream.cpp |  210 --
 android/app/src/cpp/opensles_audio_stream.h   |   48 -
 android/app/src/main/AndroidManifest.xml      |   80 -
 android/app/src/main/ic_launcher-web.png      |  Bin 38012 -> 0 bytes
 .../stenzek/duckstation/Achievement.java      |   76 -
 .../duckstation/AchievementListFragment.java  |  193 --
 .../AchievementSettingsFragment.java          |  266 --
 .../duckstation/AndroidHostInterface.java     |  211 --
 .../duckstation/AndroidProgressCallback.java  |  141 --
 .../stenzek/duckstation/ConsoleRegion.java    |    8 -
 .../duckstation/ControllerAutoMapper.java     |  295 ---
 .../duckstation/ControllerBindingDialog.java  |  170 --
 .../ControllerBindingPreference.java          |  268 --
 .../ControllerSettingsActivity.java           |  132 -
 .../ControllerSettingsCollectionFragment.java |  459 ----
 .../stenzek/duckstation/DiscRegion.java       |    8 -
 .../duckstation/EmptyGameListFragment.java    |   36 -
 .../duckstation/EmulationActivity.java        |  988 --------
 .../duckstation/EmulationSurfaceView.java     |  302 ---
 .../stenzek/duckstation/EmulationThread.java  |   67 -
 .../stenzek/duckstation/FileHelper.java       |  613 -----
 .../duckstation/GameDirectoriesActivity.java  |  348 ---
 .../stenzek/duckstation/GameGridFragment.java |  139 --
 .../github/stenzek/duckstation/GameList.java  |   84 -
 .../stenzek/duckstation/GameListEntry.java    |   99 -
 .../stenzek/duckstation/GameListFragment.java |  204 --
 .../duckstation/GamePropertiesActivity.java   |  253 --
 .../duckstation/GameSettingPreference.java    |   83 -
 .../duckstation/GameTraitPreference.java      |   34 -
 .../duckstation/GenerateCoverTask.java        |   64 -
 .../duckstation/GridAutofitLayoutManager.java |   73 -
 .../stenzek/duckstation/HotkeyInfo.java       |   29 -
 .../stenzek/duckstation/ImageLoadTask.java    |   32 -
 .../stenzek/duckstation/MainActivity.java     |  556 -----
 .../duckstation/MemoryCardEditorActivity.java |  524 ----
 .../duckstation/MemoryCardFileInfo.java       |   64 -
 .../stenzek/duckstation/MemoryCardImage.java  |  204 --
 .../github/stenzek/duckstation/PatchCode.java |   40 -
 .../duckstation/PreferenceHelpers.java        |   85 -
 .../duckstation/PropertyListAdapter.java      |   84 -
 .../stenzek/duckstation/RatioPreference.java  |  198 --
 .../stenzek/duckstation/SaveStateInfo.java    |  151 --
 .../stenzek/duckstation/SettingsActivity.java |   38 -
 .../SettingsCollectionFragment.java           |   90 -
 .../TouchscreenControllerAxisView.java        |  191 --
 .../TouchscreenControllerButtonView.java      |  204 --
 .../TouchscreenControllerDPadView.java        |  178 --
 .../TouchscreenControllerView.java            |  858 -------
 .../stenzek/duckstation/URLDownloader.java    |   96 -
 .../stenzek/duckstation/UpdateNotes.java      |   54 -
 .../drawable-v24/ic_launcher_foreground.xml   |   34 -
 .../main/res/drawable/cover_placeholder.png   |  Bin 214262 -> 0 bytes
 android/app/src/main/res/drawable/duck.png    |  Bin 48659 -> 0 bytes
 android/app/src/main/res/drawable/flag_eu.xml |   71 -
 android/app/src/main/res/drawable/flag_jp.xml |   50 -
 android/app/src/main/res/drawable/flag_us.xml |  539 ----
 .../res/drawable/ic_baseline_album_24.xml     |   10 -
 .../drawable/ic_baseline_arrow_back_24.xml    |   11 -
 .../res/drawable/ic_baseline_category_24.xml  |   16 -
 .../res/drawable/ic_baseline_close_24.xml     |   10 -
 .../ic_baseline_create_new_folder_24.xml      |   10 -
 .../res/drawable/ic_baseline_delete_24.xml    |   10 -
 .../drawable/ic_baseline_delete_sweep_24.xml  |   10 -
 .../drawable/ic_baseline_exit_to_app_24.xml   |   11 -
 .../drawable/ic_baseline_fast_forward_24.xml  |   10 -
 .../drawable/ic_baseline_fast_rewind_24.xml   |   10 -
 .../res/drawable/ic_baseline_folder_24.xml    |   10 -
 .../drawable/ic_baseline_folder_open_24.xml   |   10 -
 .../res/drawable/ic_baseline_gamepad_24.xml   |   10 -
 .../res/drawable/ic_baseline_grid_view_24.xml |   10 -
 .../main/res/drawable/ic_baseline_help_24.xml |   10 -
 .../ic_baseline_import_contacts_24.xml        |   10 -
 .../ic_baseline_insert_drive_file_24.xml      |   11 -
 .../drawable/ic_baseline_library_music_24.xml |   10 -
 .../main/res/drawable/ic_baseline_lock_24.xml |   10 -
 .../res/drawable/ic_baseline_lock_open_24.xml |   10 -
 .../main/res/drawable/ic_baseline_menu_24.xml |   10 -
 .../ic_baseline_not_interested_60.xml         |    5 -
 .../drawable/ic_baseline_play_arrow_24.xml    |   10 -
 .../drawable/ic_baseline_playlist_play_24.xml |   10 -
 .../ic_baseline_radio_button_checked_24.xml   |   10 -
 .../ic_baseline_radio_button_unchecked_24.xml |   10 -
 .../drawable/ic_baseline_restart_alt_24.xml   |   13 -
 .../main/res/drawable/ic_baseline_save_24.xml |   10 -
 .../res/drawable/ic_baseline_sd_card_24.xml   |   10 -
 .../res/drawable/ic_baseline_settings_24.xml  |   10 -
 .../ic_baseline_tips_and_updates_24.xml       |   10 -
 .../res/drawable/ic_baseline_touch_app_24.xml |   10 -
 .../res/drawable/ic_baseline_trophy_24.xml    |   10 -
 .../res/drawable/ic_baseline_vibration_24.xml |   10 -
 .../res/drawable/ic_baseline_view_list_24.xml |   10 -
 .../res/drawable/ic_controller_a_button.xml   |   17 -
 .../ic_controller_a_button_pressed.xml        |   16 -
 .../drawable/ic_controller_analog_base.xml    |   21 -
 .../drawable/ic_controller_analog_button.xml  |   17 -
 .../ic_controller_analog_button_pressed.xml   |   17 -
 .../ic_controller_analog_stick_pressed.xml    |   11 -
 .../ic_controller_analog_stick_unpressed.xml  |   11 -
 .../res/drawable/ic_controller_b_button.xml   |   17 -
 .../ic_controller_b_button_pressed.xml        |   16 -
 .../drawable/ic_controller_circle_button.xml  |   19 -
 .../ic_controller_circle_button_pressed.xml   |   19 -
 .../drawable/ic_controller_cross_button.xml   |   27 -
 .../ic_controller_cross_button_pressed.xml    |   27 -
 .../drawable/ic_controller_down_button.xml    |   14 -
 .../ic_controller_down_button_pressed.xml     |   14 -
 .../drawable/ic_controller_fast_forward.xml   |   17 -
 .../ic_controller_fast_forward_pressed.xml    |   17 -
 .../res/drawable/ic_controller_l1_button.xml  |   28 -
 .../ic_controller_l1_button_pressed.xml       |   28 -
 .../res/drawable/ic_controller_l2_button.xml  |   28 -
 .../ic_controller_l2_button_pressed.xml       |   28 -
 .../drawable/ic_controller_left_button.xml    |   14 -
 .../ic_controller_left_button_pressed.xml     |   14 -
 .../drawable/ic_controller_pause_button.xml   |    9 -
 .../ic_controller_quick_load_button.xml       |    9 -
 .../ic_controller_quick_save_button.xml       |    9 -
 .../res/drawable/ic_controller_r1_button.xml  |   28 -
 .../ic_controller_r1_button_pressed.xml       |   28 -
 .../res/drawable/ic_controller_r2_button.xml  |   28 -
 .../ic_controller_r2_button_pressed.xml       |   28 -
 .../drawable/ic_controller_right_button.xml   |   14 -
 .../ic_controller_right_button_pressed.xml    |   14 -
 .../drawable/ic_controller_select_button.xml  |   14 -
 .../ic_controller_select_button_pressed.xml   |   14 -
 .../drawable/ic_controller_square_button.xml  |   20 -
 .../ic_controller_square_button_pressed.xml   |   20 -
 .../drawable/ic_controller_start_button.xml   |   14 -
 .../ic_controller_start_button_pressed.xml    |   14 -
 .../res/drawable/ic_controller_t1_button.xml  |   20 -
 .../ic_controller_t1_button_pressed.xml       |   19 -
 .../res/drawable/ic_controller_t2_button.xml  |   20 -
 .../ic_controller_t2_button_pressed.xml       |   19 -
 .../res/drawable/ic_controller_t3_button.xml  |   20 -
 .../ic_controller_t3_button_pressed.xml       |   19 -
 .../res/drawable/ic_controller_t4_button.xml  |   20 -
 .../ic_controller_t4_button_pressed.xml       |   19 -
 .../ic_controller_triangle_button.xml         |   19 -
 .../ic_controller_triangle_button_pressed.xml |   19 -
 .../res/drawable/ic_controller_up_button.xml  |   14 -
 .../ic_controller_up_button_pressed.xml       |   14 -
 .../main/res/drawable/ic_emblem_system.xml    |   45 -
 .../res/drawable/ic_launcher_background.xml   |  170 --
 .../src/main/res/drawable/ic_media_cdrom.xml  |   97 -
 .../app/src/main/res/drawable/ic_star_0.png   |  Bin 5534 -> 0 bytes
 .../app/src/main/res/drawable/ic_star_1.png   |  Bin 6116 -> 0 bytes
 .../app/src/main/res/drawable/ic_star_2.png   |  Bin 6367 -> 0 bytes
 .../app/src/main/res/drawable/ic_star_3.png   |  Bin 6526 -> 0 bytes
 .../app/src/main/res/drawable/ic_star_4.png   |  Bin 6312 -> 0 bytes
 .../app/src/main/res/drawable/ic_star_5.png   |  Bin 5990 -> 0 bytes
 .../layout/activity_controller_mapping.xml    |    9 -
 .../main/res/layout/activity_emulation.xml    |   20 -
 .../res/layout/activity_game_directories.xml  |   47 -
 .../app/src/main/res/layout/activity_main.xml |   53 -
 .../layout/activity_memory_card_editor.xml    |   65 -
 .../res/layout/fragment_achievement_list.xml  |   74 -
 .../layout/fragment_achievements_login.xml    |  133 -
 .../layout/fragment_controller_settings.xml   |   22 -
 .../res/layout/fragment_empty_game_list.xml   |   44 -
 .../fragment_emulation_activity_overlay.xml   |  113 -
 .../main/res/layout/fragment_game_grid.xml    |   18 -
 .../main/res/layout/fragment_game_list.xml    |   17 -
 .../res/layout/fragment_memory_card_file.xml  |   14 -
 .../layout/fragment_settings_collection.xml   |   22 -
 .../res/layout/layout_achievement_entry.xml   |   79 -
 .../layout_controller_binding_preference.xml  |   39 -
 .../layout/layout_game_directory_entry.xml    |   53 -
 .../res/layout/layout_game_grid_entry.xml     |   17 -
 .../res/layout/layout_game_list_entry.xml     |   76 -
 .../res/layout/layout_game_property_entry.xml |   26 -
 .../res/layout/layout_memory_card_save.xml    |   82 -
 .../res/layout/layout_ratio_preference.xml    |   26 -
 ...ut_touchscreen_controller_analog_stick.xml |  255 --
 ...t_touchscreen_controller_analog_sticks.xml |  277 ---
 .../layout_touchscreen_controller_digital.xml |  239 --
 .../layout_touchscreen_controller_edit.xml    |   18 -
 ...layout_touchscreen_controller_lightgun.xml |  138 --
 .../main/res/layout/save_state_view_entry.xml |   66 -
 .../src/main/res/layout/settings_activity.xml |    9 -
 .../main/res/menu/menu_controller_mapping.xml |   20 -
 .../res/menu/menu_edit_game_directories.xml   |   15 -
 .../main/res/menu/menu_game_list_entry.xml    |   16 -
 android/app/src/main/res/menu/menu_main.xml   |   67 -
 .../main/res/menu/menu_memory_card_editor.xml |   24 -
 .../res/mipmap-anydpi-v26/ic_launcher.xml     |    5 -
 .../mipmap-anydpi-v26/ic_launcher_round.xml   |    5 -
 .../src/main/res/mipmap-hdpi/ic_launcher.png  |  Bin 2817 -> 0 bytes
 .../mipmap-hdpi/ic_launcher_foreground.png    |  Bin 5163 -> 0 bytes
 .../res/mipmap-hdpi/ic_launcher_round.png     |  Bin 5004 -> 0 bytes
 .../src/main/res/mipmap-mdpi/ic_launcher.png  |  Bin 1741 -> 0 bytes
 .../mipmap-mdpi/ic_launcher_foreground.png    |  Bin 2917 -> 0 bytes
 .../res/mipmap-mdpi/ic_launcher_round.png     |  Bin 2993 -> 0 bytes
 .../src/main/res/mipmap-xhdpi/ic_launcher.png |  Bin 4088 -> 0 bytes
 .../mipmap-xhdpi/ic_launcher_foreground.png   |  Bin 7937 -> 0 bytes
 .../res/mipmap-xhdpi/ic_launcher_round.png    |  Bin 7370 -> 0 bytes
 .../main/res/mipmap-xxhdpi/ic_launcher.png    |  Bin 7155 -> 0 bytes
 .../mipmap-xxhdpi/ic_launcher_foreground.png  |  Bin 14699 -> 0 bytes
 .../res/mipmap-xxhdpi/ic_launcher_round.png   |  Bin 12470 -> 0 bytes
 .../main/res/mipmap-xxxhdpi/ic_launcher.png   |  Bin 10680 -> 0 bytes
 .../mipmap-xxxhdpi/ic_launcher_foreground.png |  Bin 18599 -> 0 bytes
 .../res/mipmap-xxxhdpi/ic_launcher_round.png  |  Bin 18804 -> 0 bytes
 android/app/src/main/res/values-es/arrays.xml |  220 --
 .../app/src/main/res/values-es/strings.xml    |  346 ---
 android/app/src/main/res/values-it/arrays.xml |  206 --
 .../app/src/main/res/values-it/strings.xml    |   16 -
 .../app/src/main/res/values-night/colors.xml  |   12 -
 android/app/src/main/res/values-nl/arrays.xml |  206 --
 .../app/src/main/res/values-nl/strings.xml    |  152 --
 .../app/src/main/res/values-pt-rBR/arrays.xml |  264 --
 .../src/main/res/values-pt-rBR/strings.xml    |  368 ---
 android/app/src/main/res/values-ru/arrays.xml |  277 ---
 .../app/src/main/res/values-ru/strings.xml    |  368 ---
 android/app/src/main/res/values/arrays.xml    |  525 ----
 android/app/src/main/res/values/attrs.xml     |   12 -
 ...trs_touchscreen_controller_button_view.xml |    6 -
 android/app/src/main/res/values/colors.xml    |   12 -
 android/app/src/main/res/values/dimens.xml    |    3 -
 .../res/values/ic_launcher_background.xml     |    4 -
 android/app/src/main/res/values/strings.xml   |  368 ---
 android/app/src/main/res/values/styles.xml    |   45 -
 .../main/res/xml/achievement_preferences.xml  |   59 -
 .../src/main/res/xml/advanced_preferences.xml |  256 --
 .../src/main/res/xml/audio_preferences.xml    |   51 -
 .../main/res/xml/controllers_preferences.xml  |   93 -
 .../src/main/res/xml/display_preferences.xml  |  129 -
 .../main/res/xml/enhancements_preferences.xml |  154 --
 .../src/main/res/xml/general_preferences.xml  |   83 -
 .../main/res/xml/network_security_config.xml  |    6 -
 .../stenzek/duckstation/ExampleUnitTest.java  |   17 -
 android/build.gradle                          |   25 -
 android/gradle.properties                     |   20 -
 android/gradle/wrapper/gradle-wrapper.jar     |  Bin 54329 -> 0 bytes
 .../gradle/wrapper/gradle-wrapper.properties  |    6 -
 android/gradlew                               |  172 --
 android/gradlew.bat                           |   84 -
 android/settings.gradle                       |    2 -
 261 files changed, 22601 deletions(-)
 delete mode 100644 android/.gitignore
 delete mode 100644 android/.idea/.name
 delete mode 100644 android/.idea/codeStyles/Project.xml
 delete mode 100644 android/.idea/codeStyles/codeStyleConfig.xml
 delete mode 100644 android/.idea/compiler.xml
 delete mode 100644 android/.idea/gradle.xml
 delete mode 100644 android/.idea/jarRepositories.xml
 delete mode 100644 android/.idea/misc.xml
 delete mode 100644 android/.idea/runConfigurations.xml
 delete mode 100644 android/.idea/vcs.xml
 delete mode 100644 android/app/.gitignore
 delete mode 100644 android/app/build.gradle
 delete mode 100644 android/app/proguard-rules.pro
 delete mode 100644 android/app/src/androidTest/java/com/github/stenzek/duckstation/ExampleInstrumentedTest.java
 delete mode 100644 android/app/src/cpp/CMakeLists.txt
 delete mode 100644 android/app/src/cpp/android_controller_interface.cpp
 delete mode 100644 android/app/src/cpp/android_controller_interface.h
 delete mode 100644 android/app/src/cpp/android_host_interface.cpp
 delete mode 100644 android/app/src/cpp/android_host_interface.h
 delete mode 100644 android/app/src/cpp/android_http_downloader.cpp
 delete mode 100644 android/app/src/cpp/android_http_downloader.h
 delete mode 100644 android/app/src/cpp/android_progress_callback.cpp
 delete mode 100644 android/app/src/cpp/android_progress_callback.h
 delete mode 100644 android/app/src/cpp/android_settings_interface.cpp
 delete mode 100644 android/app/src/cpp/android_settings_interface.h
 delete mode 100644 android/app/src/cpp/opensles_audio_stream.cpp
 delete mode 100644 android/app/src/cpp/opensles_audio_stream.h
 delete mode 100644 android/app/src/main/AndroidManifest.xml
 delete mode 100644 android/app/src/main/ic_launcher-web.png
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/Achievement.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/AchievementListFragment.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/AchievementSettingsFragment.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/AndroidHostInterface.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/AndroidProgressCallback.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/ConsoleRegion.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/ControllerAutoMapper.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/ControllerBindingDialog.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/ControllerBindingPreference.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsActivity.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsCollectionFragment.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/DiscRegion.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/EmptyGameListFragment.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/EmulationSurfaceView.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/EmulationThread.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/FileHelper.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/GameDirectoriesActivity.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/GameGridFragment.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/GameList.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/GameListEntry.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/GameListFragment.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/GamePropertiesActivity.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/GameSettingPreference.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/GameTraitPreference.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/GenerateCoverTask.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/GridAutofitLayoutManager.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/HotkeyInfo.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/ImageLoadTask.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/MainActivity.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardEditorActivity.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardFileInfo.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardImage.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/PatchCode.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/PreferenceHelpers.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/PropertyListAdapter.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/RatioPreference.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/SaveStateInfo.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/SettingsActivity.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/SettingsCollectionFragment.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerAxisView.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerButtonView.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerDPadView.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerView.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/URLDownloader.java
 delete mode 100644 android/app/src/main/java/com/github/stenzek/duckstation/UpdateNotes.java
 delete mode 100644 android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
 delete mode 100644 android/app/src/main/res/drawable/cover_placeholder.png
 delete mode 100644 android/app/src/main/res/drawable/duck.png
 delete mode 100644 android/app/src/main/res/drawable/flag_eu.xml
 delete mode 100644 android/app/src/main/res/drawable/flag_jp.xml
 delete mode 100644 android/app/src/main/res/drawable/flag_us.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_album_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_arrow_back_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_category_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_close_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_create_new_folder_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_delete_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_delete_sweep_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_exit_to_app_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_fast_forward_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_fast_rewind_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_folder_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_folder_open_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_gamepad_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_grid_view_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_help_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_import_contacts_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_insert_drive_file_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_library_music_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_lock_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_lock_open_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_menu_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_not_interested_60.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_playlist_play_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_radio_button_checked_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_radio_button_unchecked_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_restart_alt_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_save_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_sd_card_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_settings_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_tips_and_updates_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_touch_app_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_trophy_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_vibration_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_baseline_view_list_24.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_a_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_a_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_analog_base.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_analog_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_analog_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_analog_stick_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_analog_stick_unpressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_b_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_b_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_circle_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_circle_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_cross_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_cross_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_down_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_down_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_fast_forward.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_fast_forward_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_l1_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_l1_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_l2_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_l2_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_left_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_left_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_pause_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_quick_load_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_quick_save_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_r1_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_r1_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_r2_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_r2_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_right_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_right_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_select_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_select_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_square_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_square_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_start_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_start_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_t1_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_t1_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_t2_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_t2_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_t3_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_t3_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_t4_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_t4_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_triangle_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_triangle_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_up_button.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_controller_up_button_pressed.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_emblem_system.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_launcher_background.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_media_cdrom.xml
 delete mode 100644 android/app/src/main/res/drawable/ic_star_0.png
 delete mode 100644 android/app/src/main/res/drawable/ic_star_1.png
 delete mode 100644 android/app/src/main/res/drawable/ic_star_2.png
 delete mode 100644 android/app/src/main/res/drawable/ic_star_3.png
 delete mode 100644 android/app/src/main/res/drawable/ic_star_4.png
 delete mode 100644 android/app/src/main/res/drawable/ic_star_5.png
 delete mode 100644 android/app/src/main/res/layout/activity_controller_mapping.xml
 delete mode 100644 android/app/src/main/res/layout/activity_emulation.xml
 delete mode 100644 android/app/src/main/res/layout/activity_game_directories.xml
 delete mode 100644 android/app/src/main/res/layout/activity_main.xml
 delete mode 100644 android/app/src/main/res/layout/activity_memory_card_editor.xml
 delete mode 100644 android/app/src/main/res/layout/fragment_achievement_list.xml
 delete mode 100644 android/app/src/main/res/layout/fragment_achievements_login.xml
 delete mode 100644 android/app/src/main/res/layout/fragment_controller_settings.xml
 delete mode 100644 android/app/src/main/res/layout/fragment_empty_game_list.xml
 delete mode 100644 android/app/src/main/res/layout/fragment_emulation_activity_overlay.xml
 delete mode 100644 android/app/src/main/res/layout/fragment_game_grid.xml
 delete mode 100644 android/app/src/main/res/layout/fragment_game_list.xml
 delete mode 100644 android/app/src/main/res/layout/fragment_memory_card_file.xml
 delete mode 100644 android/app/src/main/res/layout/fragment_settings_collection.xml
 delete mode 100644 android/app/src/main/res/layout/layout_achievement_entry.xml
 delete mode 100644 android/app/src/main/res/layout/layout_controller_binding_preference.xml
 delete mode 100644 android/app/src/main/res/layout/layout_game_directory_entry.xml
 delete mode 100644 android/app/src/main/res/layout/layout_game_grid_entry.xml
 delete mode 100644 android/app/src/main/res/layout/layout_game_list_entry.xml
 delete mode 100644 android/app/src/main/res/layout/layout_game_property_entry.xml
 delete mode 100644 android/app/src/main/res/layout/layout_memory_card_save.xml
 delete mode 100644 android/app/src/main/res/layout/layout_ratio_preference.xml
 delete mode 100644 android/app/src/main/res/layout/layout_touchscreen_controller_analog_stick.xml
 delete mode 100644 android/app/src/main/res/layout/layout_touchscreen_controller_analog_sticks.xml
 delete mode 100644 android/app/src/main/res/layout/layout_touchscreen_controller_digital.xml
 delete mode 100644 android/app/src/main/res/layout/layout_touchscreen_controller_edit.xml
 delete mode 100644 android/app/src/main/res/layout/layout_touchscreen_controller_lightgun.xml
 delete mode 100644 android/app/src/main/res/layout/save_state_view_entry.xml
 delete mode 100644 android/app/src/main/res/layout/settings_activity.xml
 delete mode 100644 android/app/src/main/res/menu/menu_controller_mapping.xml
 delete mode 100644 android/app/src/main/res/menu/menu_edit_game_directories.xml
 delete mode 100644 android/app/src/main/res/menu/menu_game_list_entry.xml
 delete mode 100644 android/app/src/main/res/menu/menu_main.xml
 delete mode 100644 android/app/src/main/res/menu/menu_memory_card_editor.xml
 delete mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
 delete mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
 delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png
 delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
 delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
 delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png
 delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
 delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
 delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
 delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
 delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
 delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
 delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
 delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
 delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
 delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
 delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
 delete mode 100644 android/app/src/main/res/values-es/arrays.xml
 delete mode 100644 android/app/src/main/res/values-es/strings.xml
 delete mode 100644 android/app/src/main/res/values-it/arrays.xml
 delete mode 100644 android/app/src/main/res/values-it/strings.xml
 delete mode 100644 android/app/src/main/res/values-night/colors.xml
 delete mode 100644 android/app/src/main/res/values-nl/arrays.xml
 delete mode 100644 android/app/src/main/res/values-nl/strings.xml
 delete mode 100644 android/app/src/main/res/values-pt-rBR/arrays.xml
 delete mode 100644 android/app/src/main/res/values-pt-rBR/strings.xml
 delete mode 100644 android/app/src/main/res/values-ru/arrays.xml
 delete mode 100644 android/app/src/main/res/values-ru/strings.xml
 delete mode 100644 android/app/src/main/res/values/arrays.xml
 delete mode 100644 android/app/src/main/res/values/attrs.xml
 delete mode 100644 android/app/src/main/res/values/attrs_touchscreen_controller_button_view.xml
 delete mode 100644 android/app/src/main/res/values/colors.xml
 delete mode 100644 android/app/src/main/res/values/dimens.xml
 delete mode 100644 android/app/src/main/res/values/ic_launcher_background.xml
 delete mode 100644 android/app/src/main/res/values/strings.xml
 delete mode 100644 android/app/src/main/res/values/styles.xml
 delete mode 100644 android/app/src/main/res/xml/achievement_preferences.xml
 delete mode 100644 android/app/src/main/res/xml/advanced_preferences.xml
 delete mode 100644 android/app/src/main/res/xml/audio_preferences.xml
 delete mode 100644 android/app/src/main/res/xml/controllers_preferences.xml
 delete mode 100644 android/app/src/main/res/xml/display_preferences.xml
 delete mode 100644 android/app/src/main/res/xml/enhancements_preferences.xml
 delete mode 100644 android/app/src/main/res/xml/general_preferences.xml
 delete mode 100644 android/app/src/main/res/xml/network_security_config.xml
 delete mode 100644 android/app/src/test/java/com/github/stenzek/duckstation/ExampleUnitTest.java
 delete mode 100644 android/build.gradle
 delete mode 100644 android/gradle.properties
 delete mode 100644 android/gradle/wrapper/gradle-wrapper.jar
 delete mode 100644 android/gradle/wrapper/gradle-wrapper.properties
 delete mode 100755 android/gradlew
 delete mode 100644 android/gradlew.bat
 delete mode 100644 android/settings.gradle

diff --git a/android/.gitignore b/android/.gitignore
deleted file mode 100644
index 603b14077..000000000
--- a/android/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-*.iml
-.gradle
-/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
-.DS_Store
-/build
-/captures
-.externalNativeBuild
-.cxx
diff --git a/android/.idea/.name b/android/.idea/.name
deleted file mode 100644
index eea1d2e85..000000000
--- a/android/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-DuckStation
\ No newline at end of file
diff --git a/android/.idea/codeStyles/Project.xml b/android/.idea/codeStyles/Project.xml
deleted file mode 100644
index 681f41ae2..000000000
--- a/android/.idea/codeStyles/Project.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<component name="ProjectCodeStyleConfiguration">
-  <code_scheme name="Project" version="173">
-    <codeStyleSettings language="XML">
-      <indentOptions>
-        <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      </indentOptions>
-      <arrangement>
-        <rules>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>xmlns:android</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>^$</XML_NAMESPACE>
-                </AND>
-              </match>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>xmlns:.*</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>^$</XML_NAMESPACE>
-                </AND>
-              </match>
-              <order>BY_NAME</order>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>.*:id</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
-                </AND>
-              </match>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>.*:name</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
-                </AND>
-              </match>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>name</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>^$</XML_NAMESPACE>
-                </AND>
-              </match>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>style</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>^$</XML_NAMESPACE>
-                </AND>
-              </match>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>.*</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>^$</XML_NAMESPACE>
-                </AND>
-              </match>
-              <order>BY_NAME</order>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>.*</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
-                </AND>
-              </match>
-              <order>ANDROID_ATTRIBUTE_ORDER</order>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>.*</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>.*</XML_NAMESPACE>
-                </AND>
-              </match>
-              <order>BY_NAME</order>
-            </rule>
-          </section>
-        </rules>
-      </arrangement>
-    </codeStyleSettings>
-  </code_scheme>
-</component>
\ No newline at end of file
diff --git a/android/.idea/codeStyles/codeStyleConfig.xml b/android/.idea/codeStyles/codeStyleConfig.xml
deleted file mode 100644
index a55e7a179..000000000
--- a/android/.idea/codeStyles/codeStyleConfig.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<component name="ProjectCodeStyleConfiguration">
-  <state>
-    <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
-  </state>
-</component>
\ No newline at end of file
diff --git a/android/.idea/compiler.xml b/android/.idea/compiler.xml
deleted file mode 100644
index fb7f4a8a4..000000000
--- a/android/.idea/compiler.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="CompilerConfiguration">
-    <bytecodeTargetLevel target="11" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/android/.idea/gradle.xml b/android/.idea/gradle.xml
deleted file mode 100644
index 9bba60dad..000000000
--- a/android/.idea/gradle.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="GradleMigrationSettings" migrationVersion="1" />
-  <component name="GradleSettings">
-    <option name="linkedExternalProjectsSettings">
-      <GradleProjectSettings>
-        <option name="testRunner" value="PLATFORM" />
-        <option name="distributionType" value="DEFAULT_WRAPPED" />
-        <option name="externalProjectPath" value="$PROJECT_DIR$" />
-        <option name="modules">
-          <set>
-            <option value="$PROJECT_DIR$" />
-            <option value="$PROJECT_DIR$/app" />
-          </set>
-        </option>
-        <option name="resolveModulePerSourceSet" value="false" />
-        <option name="useQualifiedModuleNames" value="true" />
-      </GradleProjectSettings>
-    </option>
-  </component>
-</project>
\ No newline at end of file
diff --git a/android/.idea/jarRepositories.xml b/android/.idea/jarRepositories.xml
deleted file mode 100644
index e34606ccd..000000000
--- a/android/.idea/jarRepositories.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="RemoteRepositoriesConfiguration">
-    <remote-repository>
-      <option name="id" value="central" />
-      <option name="name" value="Maven Central repository" />
-      <option name="url" value="https://repo1.maven.org/maven2" />
-    </remote-repository>
-    <remote-repository>
-      <option name="id" value="jboss.community" />
-      <option name="name" value="JBoss Community repository" />
-      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
-    </remote-repository>
-    <remote-repository>
-      <option name="id" value="BintrayJCenter" />
-      <option name="name" value="BintrayJCenter" />
-      <option name="url" value="https://jcenter.bintray.com/" />
-    </remote-repository>
-    <remote-repository>
-      <option name="id" value="Google" />
-      <option name="name" value="Google" />
-      <option name="url" value="https://dl.google.com/dl/android/maven2/" />
-    </remote-repository>
-    <remote-repository>
-      <option name="id" value="MavenRepo" />
-      <option name="name" value="MavenRepo" />
-      <option name="url" value="https://repo.maven.apache.org/maven2/" />
-    </remote-repository>
-  </component>
-</project>
\ No newline at end of file
diff --git a/android/.idea/misc.xml b/android/.idea/misc.xml
deleted file mode 100644
index 860da66a5..000000000
--- a/android/.idea/misc.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
-    <output url="file://$PROJECT_DIR$/build/classes" />
-  </component>
-  <component name="ProjectType">
-    <option name="id" value="Android" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/android/.idea/runConfigurations.xml b/android/.idea/runConfigurations.xml
deleted file mode 100644
index e497da999..000000000
--- a/android/.idea/runConfigurations.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="RunConfigurationProducerService">
-    <option name="ignoredProducers">
-      <set>
-        <option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
-        <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
-        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
-        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
-      </set>
-    </option>
-  </component>
-</project>
\ No newline at end of file
diff --git a/android/.idea/vcs.xml b/android/.idea/vcs.xml
deleted file mode 100644
index 6c0b86358..000000000
--- a/android/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/android/app/.gitignore b/android/app/.gitignore
deleted file mode 100644
index 796b96d1c..000000000
--- a/android/app/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/android/app/build.gradle b/android/app/build.gradle
deleted file mode 100644
index 38ec9c8df..000000000
--- a/android/app/build.gradle
+++ /dev/null
@@ -1,90 +0,0 @@
-apply plugin: 'com.android.application'
-
-android {
-    compileSdkVersion 29
-    buildToolsVersion "30.0.2"
-    defaultConfig {
-        applicationId "com.github.stenzek.duckstation"
-        minSdkVersion 23
-        targetSdkVersion 29
-        versionCode(getBuildVersionCode())
-        versionName "${getVersion()}"
-    }
-    buildTypes {
-        release {
-            minifyEnabled false
-            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
-
-            ndk {
-                debugSymbolLevel "FULL"
-            }
-        }
-    }
-
-    externalNativeBuild {
-        cmake {
-            path "../../CMakeLists.txt"
-            version "3.10.2"
-        }
-    }
-    compileOptions {
-        sourceCompatibility JavaVersion.VERSION_1_8
-        targetCompatibility JavaVersion.VERSION_1_8
-    }
-    defaultConfig {
-        externalNativeBuild {
-            cmake {
-                arguments "-DCMAKE_BUILD_TYPE=Release"
-                abiFilters "arm64-v8a", "armeabi-v7a", "x86_64"
-            }
-        }
-    }
-    sourceSets {
-        main.assets.srcDirs += "../../data"
-    }
-
-    // Blocked on R21 until CMake is updated to 3.19 or later.
-    ndkVersion '21.4.7075529'
-}
-
-dependencies {
-    implementation fileTree(dir: 'libs', include: ['*.jar'])
-    implementation 'androidx.appcompat:appcompat:1.3.0'
-    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
-    implementation 'com.google.android.material:material:1.3.0'
-    implementation 'androidx.preference:preference:1.1.1'
-    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-    implementation "androidx.viewpager2:viewpager2:1.0.0"
-    testImplementation 'junit:junit:4.13.2'
-    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
-    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
-}
-
-// Adapted from Dolphin.
-
-def getVersion() {
-    def versionNumber = '0.0-unknown'
-
-    try {
-        versionNumber = 'git describe --tags --exclude latest --exclude preview'.execute([], project.rootDir).text
-                .trim()
-                .replaceAll(/(-0)?-[^-]+$/, "")
-    } catch (Exception e) {
-        logger.error('Cannot find git, defaulting to dummy version number')
-    }
-
-    return versionNumber
-}
-
-
-def getBuildVersionCode() {
-    try {
-        def versionNumber = 'git rev-list --first-parent --count HEAD'.execute([], project.rootDir).text
-                .trim()
-        return Integer.valueOf(versionNumber);
-    } catch (Exception e) {
-        logger.error('Cannot find git, defaulting to dummy version number')
-    }
-
-    return 1;
-}
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
deleted file mode 100644
index f1b424510..000000000
--- a/android/app/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
diff --git a/android/app/src/androidTest/java/com/github/stenzek/duckstation/ExampleInstrumentedTest.java b/android/app/src/androidTest/java/com/github/stenzek/duckstation/ExampleInstrumentedTest.java
deleted file mode 100644
index 71cc603ed..000000000
--- a/android/app/src/androidTest/java/com/github/stenzek/duckstation/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
-    @Test
-    public void useAppContext() {
-        // Context of the app under test.
-        Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
-        assertEquals("com.github.stenzek.duckstation", appContext.getPackageName());
-    }
-}
diff --git a/android/app/src/cpp/CMakeLists.txt b/android/app/src/cpp/CMakeLists.txt
deleted file mode 100644
index 2e3fb11ed..000000000
--- a/android/app/src/cpp/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-set(SRCS
-  android_controller_interface.cpp
-  android_controller_interface.h
-  android_host_interface.cpp
-  android_host_interface.h
-  android_http_downloader.cpp
-  android_http_downloader.h
-  android_progress_callback.cpp
-  android_progress_callback.h
-  android_settings_interface.cpp
-  android_settings_interface.h
-)
-
-add_library(duckstation-native SHARED ${SRCS})
-target_link_libraries(duckstation-native PRIVATE android frontend-common core common glad imgui)
-
-find_package(OpenSLES)
-if(OPENSLES_FOUND)
-  message("Enabling OpenSL ES audio stream")
-  target_sources(duckstation-native PRIVATE
-    opensles_audio_stream.cpp
-    opensles_audio_stream.h)
-  target_link_libraries(duckstation-native PRIVATE OpenSLES::OpenSLES)
-  target_compile_definitions(duckstation-native PRIVATE "-DUSE_OPENSLES=1")
-endif()
diff --git a/android/app/src/cpp/android_controller_interface.cpp b/android/app/src/cpp/android_controller_interface.cpp
deleted file mode 100644
index 7fea10ecd..000000000
--- a/android/app/src/cpp/android_controller_interface.cpp
+++ /dev/null
@@ -1,249 +0,0 @@
-#include "android_controller_interface.h"
-#include "android_host_interface.h"
-#include "common/assert.h"
-#include "common/file_system.h"
-#include "common/log.h"
-#include "core/controller.h"
-#include "core/host_interface.h"
-#include "core/system.h"
-#include <cmath>
-Log_SetChannel(AndroidControllerInterface);
-
-AndroidControllerInterface::AndroidControllerInterface() = default;
-
-AndroidControllerInterface::~AndroidControllerInterface() = default;
-
-ControllerInterface::Backend AndroidControllerInterface::GetBackend() const
-{
-  return ControllerInterface::Backend::Android;
-}
-
-bool AndroidControllerInterface::Initialize(CommonHostInterface* host_interface)
-{
-  if (!ControllerInterface::Initialize(host_interface))
-    return false;
-
-  return true;
-}
-
-void AndroidControllerInterface::Shutdown()
-{
-  ControllerInterface::Shutdown();
-}
-
-void AndroidControllerInterface::PollEvents() {}
-
-void AndroidControllerInterface::ClearBindings()
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  for (ControllerData& cd : m_controllers)
-  {
-    cd.axis_mapping.clear();
-    cd.button_mapping.clear();
-    cd.axis_button_mapping.clear();
-    cd.button_axis_mapping.clear();
-  }
-}
-
-std::optional<int> AndroidControllerInterface::GetControllerIndex(const std::string_view& device)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  for (u32 i = 0; i < static_cast<u32>(m_device_names.size()); i++)
-  {
-    if (device == m_device_names[i])
-      return static_cast<int>(i);
-  }
-
-  return std::nullopt;
-}
-
-bool AndroidControllerInterface::BindControllerAxis(int controller_index, int axis_number, AxisSide axis_side,
-                                                    AxisCallback callback)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (static_cast<u32>(controller_index) >= m_controllers.size())
-    return false;
-
-  m_controllers[controller_index].axis_mapping[axis_number][axis_side] = std::move(callback);
-  Log_DevPrintf("Bound controller %d axis %d side %u", controller_index, axis_number, static_cast<unsigned>(axis_side));
-  return true;
-}
-
-bool AndroidControllerInterface::BindControllerButton(int controller_index, int button_number, ButtonCallback callback)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (static_cast<u32>(controller_index) >= m_controllers.size())
-    return false;
-
-  m_controllers[controller_index].button_mapping[button_number] = std::move(callback);
-  Log_DevPrintf("Bound controller %d button %d", controller_index, button_number);
-  return true;
-}
-
-bool AndroidControllerInterface::BindControllerAxisToButton(int controller_index, int axis_number, bool direction,
-                                                            ButtonCallback callback)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (static_cast<u32>(controller_index) >= m_controllers.size())
-    return false;
-
-  m_controllers[controller_index].axis_button_mapping[axis_number][BoolToUInt8(direction)] = std::move(callback);
-  Log_DevPrintf("Bound controller %d axis %d to button", controller_index, axis_number);
-  return true;
-}
-
-bool AndroidControllerInterface::BindControllerHatToButton(int controller_index, int hat_number,
-                                                           std::string_view hat_position, ButtonCallback callback)
-{
-  return false;
-}
-
-bool AndroidControllerInterface::BindControllerButtonToAxis(int controller_index, int button_number,
-                                                            AxisCallback callback)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (static_cast<u32>(controller_index) >= m_controllers.size())
-    return false;
-
-  m_controllers[controller_index].button_axis_mapping[button_number] = std::move(callback);
-  Log_DevPrintf("Bound controller %d button %d to axis", controller_index, button_number);
-  return true;
-}
-
-void AndroidControllerInterface::SetDeviceNames(std::vector<std::string> device_names)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  m_device_names = std::move(device_names);
-  m_controllers.resize(m_device_names.size());
-
-  for (u32 i = 0; i < static_cast<u32>(m_device_names.size()); i++)
-    Log_DevPrintf("Controller %u: %s", i, m_device_names[i].c_str());
-}
-
-void AndroidControllerInterface::SetDeviceRumble(u32 index, bool has_vibrator)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (index >= m_controllers.size())
-    return;
-
-  m_controllers[index].has_rumble = has_vibrator;
-}
-
-void AndroidControllerInterface::HandleAxisEvent(u32 index, u32 axis, float value)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (index >= m_controllers.size())
-    return;
-
-  Log_DevPrintf("controller %u axis %u %f", index, axis, value);
-  if (DoEventHook(Hook::Type::Axis, index, axis, value))
-    return;
-
-  const ControllerData& cd = m_controllers[index];
-  const auto am_iter = cd.axis_mapping.find(axis);
-  if (am_iter != cd.axis_mapping.end())
-  {
-    const AxisCallback& cb = am_iter->second[AxisSide::Full];
-    if (cb)
-    {
-      cb(value);
-      return;
-    }
-  }
-
-  // set the other direction to false so large movements don't leave the opposite on
-  const bool outside_deadzone = (std::abs(value) >= cd.deadzone);
-  const bool positive = (value >= 0.0f);
-  const auto bm_iter = cd.axis_button_mapping.find(axis);
-  if (bm_iter != cd.axis_button_mapping.end())
-  {
-    const ButtonCallback& other_button_cb = bm_iter->second[BoolToUInt8(!positive)];
-    const ButtonCallback& button_cb = bm_iter->second[BoolToUInt8(positive)];
-    if (button_cb)
-    {
-      button_cb(outside_deadzone);
-      if (other_button_cb)
-        other_button_cb(false);
-      return;
-    }
-    else if (other_button_cb)
-    {
-      other_button_cb(false);
-      return;
-    }
-  }
-}
-
-void AndroidControllerInterface::HandleButtonEvent(u32 index, u32 button, bool pressed)
-{
-  Log_DevPrintf("controller %u button %u %s", index, button, pressed ? "pressed" : "released");
-
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (index >= m_controllers.size())
-    return;
-
-  if (DoEventHook(Hook::Type::Button, index, button, pressed ? 1.0f : 0.0f))
-    return;
-
-  const ControllerData& cd = m_controllers[index];
-  const auto button_iter = cd.button_mapping.find(button);
-  if (button_iter != cd.button_mapping.end() && button_iter->second)
-  {
-    button_iter->second(pressed);
-    return;
-  }
-
-  const auto axis_iter = cd.button_axis_mapping.find(button);
-  if (axis_iter != cd.button_axis_mapping.end() && axis_iter->second)
-  {
-    axis_iter->second(pressed ? 1.0f : -1.0f);
-    return;
-  }
-
-  Log_DevPrintf("controller %u button %u has no binding", index, button);
-}
-
-bool AndroidControllerInterface::HasButtonBinding(u32 index, u32 button)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (index >= m_controllers.size())
-    return false;
-
-  const ControllerData& cd = m_controllers[index];
-  return (cd.button_mapping.find(button) != cd.button_mapping.end() ||
-          cd.button_axis_mapping.find(button) != cd.button_axis_mapping.end());
-}
-
-u32 AndroidControllerInterface::GetControllerRumbleMotorCount(int controller_index)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (static_cast<u32>(controller_index) >= m_controllers.size())
-    return false;
-
-  return m_controllers[static_cast<u32>(controller_index)].has_rumble ? NUM_RUMBLE_MOTORS : 0;
-}
-
-void AndroidControllerInterface::SetControllerRumbleStrength(int controller_index, const float* strengths,
-                                                             u32 num_motors)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (static_cast<u32>(controller_index) >= m_controllers.size())
-    return;
-
-  const float small_motor = strengths[0];
-  const float large_motor = strengths[1];
-  static_cast<AndroidHostInterface*>(m_host_interface)
-    ->SetControllerVibration(static_cast<u32>(controller_index), small_motor, large_motor);
-}
-
-bool AndroidControllerInterface::SetControllerDeadzone(int controller_index, float size /* = 0.25f */)
-{
-  std::unique_lock<std::mutex> lock(m_controllers_mutex);
-  if (static_cast<u32>(controller_index) >= m_controllers.size())
-    return false;
-
-  m_controllers[static_cast<u32>(controller_index)].deadzone = std::clamp(std::abs(size), 0.01f, 0.99f);
-  Log_InfoPrintf("Controller %d deadzone size set to %f", controller_index,
-                 m_controllers[static_cast<u32>(controller_index)].deadzone);
-  return true;
-}
diff --git a/android/app/src/cpp/android_controller_interface.h b/android/app/src/cpp/android_controller_interface.h
deleted file mode 100644
index a22b81f50..000000000
--- a/android/app/src/cpp/android_controller_interface.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#pragma once
-#include "core/types.h"
-#include "frontend-common/controller_interface.h"
-#include <array>
-#include <functional>
-#include <map>
-#include <mutex>
-#include <vector>
-
-class AndroidControllerInterface final : public ControllerInterface
-{
-public:
-  AndroidControllerInterface();
-  ~AndroidControllerInterface() override;
-
-  ALWAYS_INLINE u32 GetControllerCount() const { return static_cast<u32>(m_controllers.size()); }
-
-  Backend GetBackend() const override;
-  bool Initialize(CommonHostInterface* host_interface) override;
-  void Shutdown() override;
-
-  // Removes all bindings. Call before setting new bindings.
-  void ClearBindings() override;
-
-  // Binding to events. If a binding for this axis/button already exists, returns false.
-  std::optional<int> GetControllerIndex(const std::string_view& device) override;
-  bool BindControllerAxis(int controller_index, int axis_number, AxisSide axis_side, AxisCallback callback) override;
-  bool BindControllerButton(int controller_index, int button_number, ButtonCallback callback) override;
-  bool BindControllerAxisToButton(int controller_index, int axis_number, bool direction,
-                                  ButtonCallback callback) override;
-  bool BindControllerHatToButton(int controller_index, int hat_number, std::string_view hat_position,
-                                 ButtonCallback callback) override;
-  bool BindControllerButtonToAxis(int controller_index, int button_number, AxisCallback callback) override;
-
-  // Changing rumble strength.
-  u32 GetControllerRumbleMotorCount(int controller_index) override;
-  void SetControllerRumbleStrength(int controller_index, const float* strengths, u32 num_motors) override;
-
-  // Set deadzone that will be applied on axis-to-button mappings
-  bool SetControllerDeadzone(int controller_index, float size = 0.25f) override;
-
-  void PollEvents() override;
-
-  void SetDeviceNames(std::vector<std::string> device_names);
-  void SetDeviceRumble(u32 index, bool has_vibrator);
-  void HandleAxisEvent(u32 index, u32 axis, float value);
-  void HandleButtonEvent(u32 index, u32 button, bool pressed);
-  bool HasButtonBinding(u32 index, u32 button);
-
-private:
-  enum : u32
-  {
-    NUM_RUMBLE_MOTORS = 2
-  };
-
-  struct ControllerData
-  {
-    float deadzone = 0.25f;
-
-    std::map<u32, std::array<AxisCallback, 3>> axis_mapping;
-    std::map<u32, ButtonCallback> button_mapping;
-    std::map<u32, std::array<ButtonCallback, 2>> axis_button_mapping;
-    std::map<u32, AxisCallback> button_axis_mapping;
-    bool has_rumble = false;
-  };
-
-  std::vector<std::string> m_device_names;
-  std::vector<ControllerData> m_controllers;
-  std::mutex m_controllers_mutex;
-
-  std::mutex m_event_intercept_mutex;
-  Hook::Callback m_event_intercept_callback;
-};
diff --git a/android/app/src/cpp/android_host_interface.cpp b/android/app/src/cpp/android_host_interface.cpp
deleted file mode 100644
index ea4ec3dd0..000000000
--- a/android/app/src/cpp/android_host_interface.cpp
+++ /dev/null
@@ -1,2198 +0,0 @@
-#include "android_host_interface.h"
-#include "android_controller_interface.h"
-#include "android_progress_callback.h"
-#include "common/assert.h"
-#include "common/audio_stream.h"
-#include "common/file_system.h"
-#include "common/log.h"
-#include "common/string.h"
-#include "common/string_util.h"
-#include "common/timer.h"
-#include "common/timestamp.h"
-#include "core/bios.h"
-#include "core/cheats.h"
-#include "core/controller.h"
-#include "core/gpu.h"
-#include "core/host_display.h"
-#include "core/memory_card_image.h"
-#include "core/system.h"
-#include "frontend-common/cheevos.h"
-#include "frontend-common/game_list.h"
-#include "frontend-common/imgui_fullscreen.h"
-#include "frontend-common/imgui_styles.h"
-#include "frontend-common/opengl_host_display.h"
-#include "frontend-common/vulkan_host_display.h"
-#include "scmversion/scmversion.h"
-#include <android/native_window_jni.h>
-#include <cmath>
-#include <imgui.h>
-#include <sched.h>
-#include <unistd.h>
-Log_SetChannel(AndroidHostInterface);
-
-#ifdef USE_OPENSLES
-#include "opensles_audio_stream.h"
-#endif
-
-static JavaVM* s_jvm;
-static jclass s_String_class;
-static jclass s_AndroidHostInterface_class;
-static jmethodID s_AndroidHostInterface_constructor;
-static jfieldID s_AndroidHostInterface_field_mNativePointer;
-static jfieldID s_AndroidHostInterface_field_mEmulationActivity;
-static jmethodID s_AndroidHostInterface_method_reportError;
-static jmethodID s_AndroidHostInterface_method_reportMessage;
-static jmethodID s_AndroidHostInterface_method_openAssetStream;
-static jclass s_EmulationActivity_class;
-static jmethodID s_EmulationActivity_method_reportError;
-static jmethodID s_EmulationActivity_method_onEmulationStarted;
-static jmethodID s_EmulationActivity_method_onEmulationStopped;
-static jmethodID s_EmulationActivity_method_onRunningGameChanged;
-static jmethodID s_EmulationActivity_method_setVibration;
-static jmethodID s_EmulationActivity_method_getRefreshRate;
-static jmethodID s_EmulationActivity_method_openPauseMenu;
-static jmethodID s_EmulationActivity_method_getInputDeviceNames;
-static jmethodID s_EmulationActivity_method_hasInputDeviceVibration;
-static jmethodID s_EmulationActivity_method_setInputDeviceVibration;
-static jclass s_PatchCode_class;
-static jmethodID s_PatchCode_constructor;
-static jclass s_GameListEntry_class;
-static jmethodID s_GameListEntry_constructor;
-static jclass s_SaveStateInfo_class;
-static jmethodID s_SaveStateInfo_constructor;
-static jclass s_Achievement_class;
-static jmethodID s_Achievement_constructor;
-static jclass s_MemoryCardFileInfo_class;
-static jmethodID s_MemoryCardFileInfo_constructor;
-
-namespace AndroidHelpers {
-JavaVM* GetJavaVM()
-{
-  return s_jvm;
-}
-
-// helper for retrieving the current per-thread jni environment
-JNIEnv* GetJNIEnv()
-{
-  JNIEnv* env;
-  if (s_jvm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK)
-    return nullptr;
-  else
-    return env;
-}
-
-AndroidHostInterface* GetNativeClass(JNIEnv* env, jobject obj)
-{
-  return reinterpret_cast<AndroidHostInterface*>(
-    static_cast<uintptr_t>(env->GetLongField(obj, s_AndroidHostInterface_field_mNativePointer)));
-}
-
-std::string JStringToString(JNIEnv* env, jstring str)
-{
-  if (str == nullptr)
-    return {};
-
-  jsize length = env->GetStringUTFLength(str);
-  if (length == 0)
-    return {};
-
-  const char* data = env->GetStringUTFChars(str, nullptr);
-  Assert(data != nullptr);
-
-  std::string ret(data, length);
-  env->ReleaseStringUTFChars(str, data);
-
-  return ret;
-}
-
-jclass GetStringClass()
-{
-  return s_String_class;
-}
-
-std::unique_ptr<GrowableMemoryByteStream> ReadInputStreamToMemory(JNIEnv* env, jobject obj, u32 chunk_size /* = 65536*/)
-{
-  std::unique_ptr<GrowableMemoryByteStream> bs = std::make_unique<GrowableMemoryByteStream>(nullptr, 0);
-  u32 position = 0;
-
-  jclass cls = env->GetObjectClass(obj);
-  jmethodID read_method = env->GetMethodID(cls, "read", "([B)I");
-  Assert(read_method);
-
-  jbyteArray temp = env->NewByteArray(chunk_size);
-  for (;;)
-  {
-    int bytes_read = env->CallIntMethod(obj, read_method, temp);
-    if (bytes_read <= 0)
-      break;
-
-    if ((position + static_cast<u32>(bytes_read)) > bs->GetMemorySize())
-    {
-      const u32 new_size = std::max<u32>(bs->GetMemorySize() * 2, position + static_cast<u32>(bytes_read));
-      bs->ResizeMemory(new_size);
-    }
-
-    env->GetByteArrayRegion(temp, 0, bytes_read, reinterpret_cast<jbyte*>(bs->GetMemoryPointer() + position));
-    position += static_cast<u32>(bytes_read);
-  }
-
-  bs->Resize(position);
-  env->DeleteLocalRef(temp);
-  env->DeleteLocalRef(cls);
-  return bs;
-}
-
-std::vector<u8> ByteArrayToVector(JNIEnv* env, jbyteArray obj)
-{
-  std::vector<u8> ret;
-  const jsize size = obj ? env->GetArrayLength(obj) : 0;
-  if (size > 0)
-  {
-    jbyte* data = env->GetByteArrayElements(obj, nullptr);
-    ret.resize(static_cast<size_t>(size));
-    std::memcpy(ret.data(), data, ret.size());
-    env->ReleaseByteArrayElements(obj, data, 0);
-  }
-
-  return ret;
-}
-
-jbyteArray NewByteArray(JNIEnv* env, const void* data, size_t size)
-{
-  if (!data || size == 0)
-    return nullptr;
-
-  jbyteArray obj = env->NewByteArray(static_cast<jsize>(size));
-  jbyte* obj_data = env->GetByteArrayElements(obj, nullptr);
-  std::memcpy(obj_data, data, static_cast<size_t>(static_cast<jsize>(size)));
-  env->ReleaseByteArrayElements(obj, obj_data, 0);
-  return obj;
-}
-
-jbyteArray VectorToByteArray(JNIEnv* env, const std::vector<u8>& data)
-{
-  if (data.empty())
-    return nullptr;
-
-  return NewByteArray(env, data.data(), data.size());
-}
-
-jobjectArray CreateObjectArray(JNIEnv* env, jclass object_class, const jobject* objects, size_t num_objects,
-                               bool release_refs /* = false*/)
-{
-  if (!objects || num_objects == 0)
-    return nullptr;
-
-  jobjectArray arr = env->NewObjectArray(static_cast<jsize>(num_objects), object_class, nullptr);
-  for (jsize i = 0; i < static_cast<jsize>(num_objects); i++)
-  {
-    env->SetObjectArrayElement(arr, i, objects[i]);
-    if (release_refs && objects[i])
-      env->DeleteLocalRef(objects[i]);
-  }
-
-  return arr;
-}
-} // namespace AndroidHelpers
-
-AndroidHostInterface::AndroidHostInterface(jobject java_object, jobject context_object, std::string user_directory)
-  : m_java_object(java_object)
-{
-  m_user_directory = std::move(user_directory);
-  m_settings_interface = std::make_unique<AndroidSettingsInterface>(context_object);
-}
-
-AndroidHostInterface::~AndroidHostInterface()
-{
-  ImGui::DestroyContext();
-  AndroidHelpers::GetJNIEnv()->DeleteGlobalRef(m_java_object);
-}
-
-bool AndroidHostInterface::Initialize()
-{
-  if (!CommonHostInterface::Initialize())
-    return false;
-
-  return true;
-}
-
-void AndroidHostInterface::Shutdown()
-{
-  HostInterface::Shutdown();
-}
-
-const char* AndroidHostInterface::GetFrontendName() const
-{
-  return "DuckStation Android";
-}
-
-void AndroidHostInterface::RequestExit()
-{
-  ReportError("Ignoring RequestExit()");
-}
-
-void AndroidHostInterface::ReportError(const char* message)
-{
-  CommonHostInterface::ReportError(message);
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  jstring message_jstr = env->NewStringUTF(message);
-  if (m_emulation_activity_object)
-    env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_reportError, message_jstr);
-  else
-    env->CallVoidMethod(m_java_object, s_AndroidHostInterface_method_reportError, message_jstr);
-  env->DeleteLocalRef(message_jstr);
-}
-
-void AndroidHostInterface::ReportMessage(const char* message)
-{
-  CommonHostInterface::ReportMessage(message);
-
-  if (IsOnEmulationThread())
-  {
-    // The toasts are not visible when the emulation activity is running anyway.
-    AddOSDMessage(message, 5.0f);
-  }
-  else
-  {
-    JNIEnv* env = AndroidHelpers::GetJNIEnv();
-    LocalRefHolder<jstring> message_jstr(env, env->NewStringUTF(message));
-    env->CallVoidMethod(m_java_object, s_AndroidHostInterface_method_reportMessage, message_jstr.Get());
-  }
-}
-
-std::unique_ptr<ByteStream> AndroidHostInterface::OpenPackageFile(const char* path, u32 flags)
-{
-  Log_DevPrintf("OpenPackageFile(%s, %x)", path, flags);
-  if (flags & (BYTESTREAM_OPEN_CREATE | BYTESTREAM_OPEN_WRITE))
-    return {};
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  jobject stream =
-    env->CallObjectMethod(m_java_object, s_AndroidHostInterface_method_openAssetStream, env->NewStringUTF(path));
-  if (!stream)
-  {
-    Log_ErrorPrintf("Package file '%s' not found", path);
-    return {};
-  }
-
-  std::unique_ptr<ByteStream> ret(AndroidHelpers::ReadInputStreamToMemory(env, stream, 65536));
-  env->DeleteLocalRef(stream);
-  return ret;
-}
-
-void AndroidHostInterface::RegisterHotkeys()
-{
-  RegisterHotkey(StaticString(TRANSLATABLE("Hotkeys", "General")), StaticString("OpenPauseMenu"),
-                 StaticString(TRANSLATABLE("Hotkeys", "Open Pause Menu")), [this](bool pressed) {
-                   if (pressed)
-                   {
-                     AndroidHelpers::GetJNIEnv()->CallVoidMethod(m_emulation_activity_object,
-                                                                 s_EmulationActivity_method_openPauseMenu);
-                   }
-                 });
-
-  CommonHostInterface::RegisterHotkeys();
-}
-
-float AndroidHostInterface::GetRefreshRate() const
-{
-  if (!m_emulation_activity_object)
-    return 0.0f;
-
-  const float value = AndroidHelpers::GetJNIEnv()->CallFloatMethod(m_emulation_activity_object,
-                                                                   s_EmulationActivity_method_getRefreshRate);
-  return (value > 0.0f) ? value : 0.0f;
-}
-
-float AndroidHostInterface::GetSurfaceScale(int width, int height) const
-{
-  if (width <= 0 || height <= 0)
-    return 1.0f;
-
-  // TODO: Really need a better way of determining this.
-  return (width > height) ? (static_cast<float>(width) / 1280.0f) : (static_cast<float>(height) / 1280.0f);
-}
-
-void AndroidHostInterface::SetUserDirectory()
-{
-  // Already set in constructor.
-  Assert(!m_user_directory.empty());
-}
-
-void AndroidHostInterface::LoadSettings(SettingsInterface& si)
-{
-  const GPURenderer old_renderer = g_settings.gpu_renderer;
-  CommonHostInterface::LoadSettings(si);
-
-  const std::string msaa_str = si.GetStringValue("GPU", "MSAA", "1");
-  g_settings.gpu_multisamples = std::max<u32>(StringUtil::FromChars<u32>(msaa_str).value_or(1), 1);
-  g_settings.gpu_per_sample_shading = StringUtil::EndsWith(msaa_str, "-ssaa");
-
-  // turn percentage into fraction for overclock
-  const u32 overclock_percent = static_cast<u32>(std::max(si.GetIntValue("CPU", "Overclock", 100), 1));
-  Settings::CPUOverclockPercentToFraction(overclock_percent, &g_settings.cpu_overclock_numerator,
-                                          &g_settings.cpu_overclock_denominator);
-  g_settings.cpu_overclock_enable = (overclock_percent != 100);
-  g_settings.UpdateOverclockActive();
-
-  m_vibration_enabled = si.GetBoolValue("Controller1", "Vibration", false);
-
-  // Defer renderer changes, the app really doesn't like it.
-  if (System::IsValid() && g_settings.gpu_renderer != old_renderer)
-  {
-    AddFormattedOSDMessage(5.0f,
-                           TranslateString("OSDMessage", "Change to %s GPU renderer will take effect on restart."),
-                           Settings::GetRendererName(g_settings.gpu_renderer));
-    g_settings.gpu_renderer = old_renderer;
-  }
-}
-
-void AndroidHostInterface::UpdateInputMap(SettingsInterface& si)
-{
-  if (m_emulation_activity_object)
-  {
-    JNIEnv* env = AndroidHelpers::GetJNIEnv();
-    DebugAssert(env);
-
-    std::vector<std::string> device_names;
-
-    jobjectArray const java_names = reinterpret_cast<jobjectArray>(
-      env->CallObjectMethod(m_emulation_activity_object, s_EmulationActivity_method_getInputDeviceNames));
-    if (java_names)
-    {
-      const u32 count = static_cast<u32>(env->GetArrayLength(java_names));
-      for (u32 i = 0; i < count; i++)
-      {
-        device_names.push_back(
-          AndroidHelpers::JStringToString(env, reinterpret_cast<jstring>(env->GetObjectArrayElement(java_names, i))));
-      }
-
-      env->DeleteLocalRef(java_names);
-    }
-
-    if (m_controller_interface)
-    {
-      AndroidControllerInterface* ci = static_cast<AndroidControllerInterface*>(m_controller_interface.get());
-      if (ci)
-      {
-        ci->SetDeviceNames(std::move(device_names));
-        for (u32 i = 0; i < ci->GetControllerCount(); i++)
-        {
-          const bool has_vibration = env->CallBooleanMethod(
-            m_emulation_activity_object, s_EmulationActivity_method_hasInputDeviceVibration, static_cast<jint>(i));
-          ci->SetDeviceRumble(i, has_vibration);
-        }
-      }
-    }
-  }
-
-  CommonHostInterface::UpdateInputMap(si);
-}
-
-bool AndroidHostInterface::IsEmulationThreadPaused() const
-{
-  return System::IsValid() && System::IsPaused();
-}
-
-void AndroidHostInterface::PauseEmulationThread(bool paused)
-{
-  Assert(IsEmulationThreadRunning());
-  RunOnEmulationThread([this, paused]() { PauseSystem(paused); });
-}
-
-void AndroidHostInterface::StopEmulationThreadLoop()
-{
-  if (!IsEmulationThreadRunning())
-    return;
-
-  std::unique_lock<std::mutex> lock(m_mutex);
-  m_emulation_thread_stop_request.store(true);
-  m_sleep_cv.notify_one();
-}
-
-bool AndroidHostInterface::IsOnEmulationThread() const
-{
-  return std::this_thread::get_id() == m_emulation_thread_id;
-}
-
-void AndroidHostInterface::RunOnEmulationThread(std::function<void()> function, bool blocking)
-{
-  if (!IsEmulationThreadRunning())
-  {
-    function();
-    return;
-  }
-
-  m_mutex.lock();
-  m_callback_queue.push_back(std::move(function));
-  m_callbacks_outstanding.store(true);
-  m_sleep_cv.notify_one();
-
-  if (blocking)
-  {
-    // TODO: Don't spin
-    for (;;)
-    {
-      if (!m_callbacks_outstanding.load())
-        break;
-
-      m_mutex.unlock();
-      m_mutex.lock();
-    }
-  }
-
-  m_mutex.unlock();
-}
-
-void AndroidHostInterface::RunLater(std::function<void()> func)
-{
-  std::unique_lock<std::mutex> lock(m_mutex);
-  m_callback_queue.push_back(std::move(func));
-  m_callbacks_outstanding.store(true);
-}
-
-void AndroidHostInterface::EmulationThreadEntryPoint(JNIEnv* env, jobject emulation_activity,
-                                                     SystemBootParameters boot_params, bool resume_state)
-{
-  if (!m_surface)
-  {
-    Log_ErrorPrint("Emulation thread started without surface set.");
-    env->CallVoidMethod(emulation_activity, s_EmulationActivity_method_onEmulationStopped);
-    return;
-  }
-
-  emulation_activity = env->NewGlobalRef(emulation_activity);
-  Assert(emulation_activity != nullptr);
-
-  {
-    std::unique_lock<std::mutex> lock(m_mutex);
-    m_emulation_thread_running.store(true);
-    m_emulation_activity_object = emulation_activity;
-    m_emulation_thread_id = std::this_thread::get_id();
-    env->SetObjectField(m_java_object, s_AndroidHostInterface_field_mEmulationActivity, emulation_activity);
-  }
-
-  ApplySettings(true);
-
-  // Boot system.
-  bool boot_result = false;
-  if (resume_state && boot_params.filename.empty())
-    boot_result = ResumeSystemFromMostRecentState();
-  else if (resume_state && CanResumeSystemFromFile(boot_params.filename.c_str()))
-    boot_result = ResumeSystemFromState(boot_params.filename.c_str(), true);
-  else
-    boot_result = BootSystem(boot_params);
-
-  if (boot_result)
-  {
-    // System is ready to go.
-    EmulationThreadLoop(env);
-    PowerOffSystem(ShouldSaveResumeState());
-  }
-
-  // Drain any callbacks so we don't leave things in a screwed-up state for next boot.
-  {
-    std::unique_lock<std::mutex> lock(m_mutex);
-    while (!m_callback_queue.empty())
-    {
-      auto callback = std::move(m_callback_queue.front());
-      m_callback_queue.pop_front();
-      lock.unlock();
-      callback();
-      lock.lock();
-    }
-    env->SetObjectField(m_java_object, s_AndroidHostInterface_field_mEmulationActivity, nullptr);
-    m_emulation_thread_running.store(false);
-    m_emulation_thread_id = {};
-    m_emulation_activity_object = {};
-    m_callbacks_outstanding.store(false);
-  }
-
-  env->CallVoidMethod(emulation_activity, s_EmulationActivity_method_onEmulationStopped);
-  env->DeleteGlobalRef(emulation_activity);
-}
-
-void AndroidHostInterface::EmulationThreadLoop(JNIEnv* env)
-{
-  env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_onEmulationStarted);
-
-  for (;;)
-  {
-    // run any events
-    {
-      std::unique_lock<std::mutex> lock(m_mutex);
-      for (;;)
-      {
-        if (!m_callback_queue.empty())
-        {
-          do
-          {
-            auto callback = std::move(m_callback_queue.front());
-            m_callback_queue.pop_front();
-            lock.unlock();
-            callback();
-            lock.lock();
-          } while (!m_callback_queue.empty());
-          m_callbacks_outstanding.store(false);
-        }
-
-        if (m_emulation_thread_stop_request.load())
-        {
-          m_emulation_thread_stop_request.store(false);
-          return;
-        }
-
-        if (System::IsPaused())
-        {
-          // paused, wait for us to resume
-          m_sleep_cv.wait(lock);
-        }
-        else
-        {
-          // done with callbacks, run the frame
-          break;
-        }
-      }
-    }
-
-    // we don't do a full PollAndUpdate() here
-    if (Cheevos::IsActive())
-      Cheevos::Update();
-
-    // simulate the system if not paused
-    if (System::IsRunning())
-    {
-      if (m_throttler_enabled)
-        System::RunFrames();
-      else
-        System::RunFrame();
-
-      UpdateControllerMetaState();
-      if (m_vibration_enabled)
-        UpdateVibration();
-    }
-
-    // rendering
-    {
-      ImGui::NewFrame();
-      DrawImGuiWindows();
-
-      m_display->Render();
-      ImGui::EndFrame();
-
-      if (System::IsRunning())
-      {
-        System::UpdatePerformanceCounters();
-
-        if (m_throttler_enabled)
-          System::Throttle();
-      }
-    }
-  }
-}
-
-bool AndroidHostInterface::AcquireHostDisplay()
-{
-  WindowInfo wi;
-  wi.type = WindowInfo::Type::Android;
-  wi.window_handle = m_surface;
-  wi.surface_width = ANativeWindow_getWidth(m_surface);
-  wi.surface_height = ANativeWindow_getHeight(m_surface);
-  wi.surface_refresh_rate = GetRefreshRate();
-  wi.surface_scale = GetSurfaceScale(wi.surface_width, wi.surface_height);
-
-  switch (g_settings.gpu_renderer)
-  {
-    case GPURenderer::HardwareVulkan:
-      m_display = std::make_unique<FrontendCommon::VulkanHostDisplay>();
-      break;
-
-    case GPURenderer::HardwareOpenGL:
-    default:
-      m_display = std::make_unique<FrontendCommon::OpenGLHostDisplay>();
-      break;
-  }
-
-  if (!m_display->CreateRenderDevice(wi, {}, g_settings.gpu_use_debug_device, g_settings.gpu_threaded_presentation) ||
-      !m_display->InitializeRenderDevice(GetShaderCacheBasePath(), g_settings.gpu_use_debug_device,
-                                         g_settings.gpu_threaded_presentation))
-  {
-    m_display->DestroyRenderDevice();
-    m_display.reset();
-    return false;
-  }
-
-  // The alignment was set prior to booting.
-  m_display->SetDisplayAlignment(m_display_alignment);
-
-  if (!CreateHostDisplayResources())
-  {
-    ReportError("Failed to create host display resources");
-    ReleaseHostDisplay();
-    return false;
-  }
-
-  return true;
-}
-
-void AndroidHostInterface::ReleaseHostDisplay()
-{
-  ReleaseHostDisplayResources();
-  if (m_display)
-  {
-    m_display->DestroyRenderDevice();
-    m_display.reset();
-  }
-}
-
-std::unique_ptr<AudioStream> AndroidHostInterface::CreateAudioStream(AudioBackend backend)
-{
-#ifdef USE_OPENSLES
-  if (backend == AudioBackend::OpenSLES)
-    return OpenSLESAudioStream::Create();
-#endif
-
-  return CommonHostInterface::CreateAudioStream(backend);
-}
-
-void AndroidHostInterface::UpdateControllerInterface()
-{
-  if (m_controller_interface)
-  {
-    m_controller_interface->Shutdown();
-    m_controller_interface.reset();
-  }
-
-  m_controller_interface = std::make_unique<AndroidControllerInterface>();
-  if (!m_controller_interface || !m_controller_interface->Initialize(this))
-  {
-    Log_WarningPrintf("Failed to initialize controller interface, bindings are not possible.");
-    if (m_controller_interface)
-    {
-      m_controller_interface->Shutdown();
-      m_controller_interface.reset();
-    }
-  }
-}
-
-void AndroidHostInterface::OnSystemPaused(bool paused)
-{
-  CommonHostInterface::OnSystemPaused(paused);
-
-  if (m_vibration_enabled)
-    SetVibration(false);
-}
-
-void AndroidHostInterface::OnSystemDestroyed()
-{
-  CommonHostInterface::OnSystemDestroyed();
-  ClearOSDMessages();
-
-  if (m_vibration_enabled)
-    SetVibration(false);
-}
-
-void AndroidHostInterface::OnRunningGameChanged(const std::string& path, CDImage* image, const std::string& game_code,
-                                                const std::string& game_title)
-{
-  CommonHostInterface::OnRunningGameChanged(path, image, game_code, game_title);
-
-  if (m_emulation_activity_object)
-  {
-    JNIEnv* env = AndroidHelpers::GetJNIEnv();
-
-    jstring path_string = env->NewStringUTF(path.c_str());
-    jstring code_string = env->NewStringUTF(game_code.c_str());
-    jstring title_string = env->NewStringUTF(game_title.c_str());
-
-    const GameListEntry* game_list_entry = m_game_list->GetEntryForPath(path.c_str());
-    std::string cover_path_str;
-    if (game_list_entry)
-      cover_path_str = m_game_list->GetCoverImagePathForEntry(game_list_entry);
-    else
-      cover_path_str = m_game_list->GetCoverImagePath(path, game_code, game_title);
-
-    jstring cover_path = nullptr;
-    if (!cover_path_str.empty())
-      cover_path = env->NewStringUTF(cover_path_str.c_str());
-
-    env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_onRunningGameChanged, path_string,
-                        code_string, title_string, cover_path);
-
-    if (cover_path)
-      env->DeleteLocalRef(cover_path);
-    env->DeleteLocalRef(title_string);
-    env->DeleteLocalRef(code_string);
-    env->DeleteLocalRef(path_string);
-  }
-}
-
-void AndroidHostInterface::SurfaceChanged(ANativeWindow* surface, int format, int width, int height)
-{
-  Log_InfoPrintf("SurfaceChanged %p %d %d %d", surface, format, width, height);
-  if (m_surface == surface)
-  {
-    if (m_display && (width != m_display->GetWindowWidth() || height != m_display->GetWindowHeight()))
-    {
-      m_display->ResizeRenderWindow(width, height);
-      OnHostDisplayResized();
-    }
-
-    return;
-  }
-
-  m_surface = surface;
-
-  if (m_display)
-  {
-    WindowInfo wi;
-    wi.type = surface ? WindowInfo::Type::Android : WindowInfo::Type::Surfaceless;
-    wi.window_handle = surface;
-    wi.surface_width = width;
-    wi.surface_height = height;
-    wi.surface_refresh_rate = GetRefreshRate();
-    wi.surface_scale = GetSurfaceScale(width, height);
-
-    const bool surface_valid = m_display->ChangeRenderWindow(wi) && surface;
-    if (surface_valid)
-      OnHostDisplayResized();
-
-    if (surface_valid && System::GetState() == System::State::Paused)
-      PauseSystem(false);
-    else if (!surface_valid && System::IsRunning())
-      PauseSystem(true);
-  }
-}
-
-void AndroidHostInterface::SetDisplayAlignment(HostDisplay::Alignment alignment)
-{
-  m_display_alignment = alignment;
-  if (m_display)
-    m_display->SetDisplayAlignment(alignment);
-}
-
-void AndroidHostInterface::SetControllerButtonState(u32 index, s32 button_code, bool pressed)
-{
-  if (!IsEmulationThreadRunning())
-    return;
-
-  RunOnEmulationThread(
-    [index, button_code, pressed]() {
-      Controller* controller = System::GetController(index);
-      if (!controller)
-        return;
-
-      controller->SetButtonState(button_code, pressed);
-    },
-    false);
-}
-
-void AndroidHostInterface::SetControllerAxisState(u32 index, s32 button_code, float value)
-{
-  if (!IsEmulationThreadRunning())
-    return;
-
-  RunOnEmulationThread(
-    [index, button_code, value]() {
-      Controller* controller = System::GetController(index);
-      if (!controller)
-        return;
-
-      controller->SetAxisState(button_code, value);
-    },
-    false);
-}
-
-void AndroidHostInterface::HandleControllerButtonEvent(u32 controller_index, u32 button_index, bool pressed)
-{
-  if (!IsEmulationThreadRunning())
-    return;
-
-  RunOnEmulationThread([this, controller_index, button_index, pressed]() {
-    AndroidControllerInterface* ci = static_cast<AndroidControllerInterface*>(m_controller_interface.get());
-    if (ci)
-      ci->HandleButtonEvent(controller_index, button_index, pressed);
-  });
-}
-
-void AndroidHostInterface::HandleControllerAxisEvent(u32 controller_index, u32 axis_index, float value)
-{
-  if (!IsEmulationThreadRunning())
-    return;
-
-  RunOnEmulationThread([this, controller_index, axis_index, value]() {
-    AndroidControllerInterface* ci = static_cast<AndroidControllerInterface*>(m_controller_interface.get());
-    if (ci)
-      ci->HandleAxisEvent(controller_index, axis_index, value);
-  });
-}
-
-bool AndroidHostInterface::HasControllerButtonBinding(u32 controller_index, u32 button)
-{
-  AndroidControllerInterface* ci = static_cast<AndroidControllerInterface*>(m_controller_interface.get());
-  if (!ci)
-    return false;
-
-  return ci->HasButtonBinding(controller_index, button);
-}
-
-void AndroidHostInterface::SetControllerVibration(u32 controller_index, float small_motor, float large_motor)
-{
-  if (!m_emulation_activity_object)
-    return;
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  DebugAssert(env);
-
-  env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_setInputDeviceVibration,
-                      static_cast<jint>(controller_index), static_cast<jfloat>(small_motor),
-                      static_cast<jfloat>(large_motor));
-}
-
-void AndroidHostInterface::SetFastForwardEnabled(bool enabled)
-{
-  m_fast_forward_enabled = enabled;
-  UpdateSpeedLimiterState();
-}
-
-void AndroidHostInterface::RefreshGameList(bool invalidate_cache, bool invalidate_database,
-                                           ProgressCallback* progress_callback)
-{
-  m_game_list->SetSearchDirectoriesFromSettings(*m_settings_interface);
-  m_game_list->Refresh(invalidate_cache, invalidate_database, progress_callback);
-}
-
-bool AndroidHostInterface::ImportPatchCodesFromString(const std::string& str)
-{
-  CheatList* cl = new CheatList();
-  if (!cl->LoadFromString(str, CheatList::Format::Autodetect) || cl->GetCodeCount() == 0)
-    return false;
-
-  RunOnEmulationThread([this, cl]() {
-    u32 imported_count;
-    if (!System::HasCheatList())
-    {
-      imported_count = cl->GetCodeCount();
-      System::SetCheatList(std::unique_ptr<CheatList>(cl));
-    }
-    else
-    {
-      const u32 old_count = System::GetCheatList()->GetCodeCount();
-      System::GetCheatList()->MergeList(*cl);
-      imported_count = System::GetCheatList()->GetCodeCount() - old_count;
-      delete cl;
-    }
-
-    AddFormattedOSDMessage(20.0f, "Imported %u patch codes.", imported_count);
-    CommonHostInterface::SaveCheatList();
-  });
-
-  return true;
-}
-
-void AndroidHostInterface::SetVibration(bool enabled)
-{
-  const u64 current_time = Common::Timer::GetValue();
-  if (Common::Timer::ConvertValueToSeconds(current_time - m_last_vibration_update_time) < 0.1f &&
-      m_last_vibration_state == enabled)
-  {
-    return;
-  }
-
-  m_last_vibration_state = enabled;
-  m_last_vibration_update_time = current_time;
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  if (m_emulation_activity_object)
-  {
-    env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_setVibration,
-                        static_cast<jboolean>(enabled));
-  }
-}
-
-void AndroidHostInterface::UpdateVibration()
-{
-  static constexpr float THRESHOLD = 0.5f;
-
-  bool vibration_state = false;
-
-  for (u32 i = 0; i < NUM_CONTROLLER_AND_CARD_PORTS; i++)
-  {
-    Controller* controller = System::GetController(i);
-    if (!controller)
-      continue;
-
-    const u32 motors = controller->GetVibrationMotorCount();
-    for (u32 j = 0; j < motors; j++)
-    {
-      if (controller->GetVibrationMotorStrength(j) >= THRESHOLD)
-      {
-        vibration_state = true;
-        break;
-      }
-    }
-  }
-
-  SetVibration(vibration_state);
-}
-
-jobjectArray AndroidHostInterface::GetInputProfileNames(JNIEnv* env) const
-{
-  const InputProfileList profile_list(GetInputProfileList());
-  if (profile_list.empty())
-    return nullptr;
-
-  jobjectArray name_array = env->NewObjectArray(static_cast<u32>(profile_list.size()), s_String_class, nullptr);
-  u32 name_array_index = 0;
-  Assert(name_array != nullptr);
-  for (const InputProfileEntry& e : profile_list)
-  {
-    jstring axis_name_jstr = env->NewStringUTF(e.name.c_str());
-    env->SetObjectArrayElement(name_array, name_array_index++, axis_name_jstr);
-    env->DeleteLocalRef(axis_name_jstr);
-  }
-
-  return name_array;
-}
-
-extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved)
-{
-  Log::SetDebugOutputParams(true, nullptr, LOGLEVEL_DEV);
-  s_jvm = vm;
-
-  // Create global reference so it doesn't get cleaned up.
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  jclass string_class, host_interface_class, patch_code_class, game_list_entry_class, save_state_info_class,
-    achievement_class, memory_card_file_info_class;
-  if ((string_class = env->FindClass("java/lang/String")) == nullptr ||
-      (s_String_class = static_cast<jclass>(env->NewGlobalRef(string_class))) == nullptr ||
-      (host_interface_class = env->FindClass("com/github/stenzek/duckstation/AndroidHostInterface")) == nullptr ||
-      (s_AndroidHostInterface_class = static_cast<jclass>(env->NewGlobalRef(host_interface_class))) == nullptr ||
-      (patch_code_class = env->FindClass("com/github/stenzek/duckstation/PatchCode")) == nullptr ||
-      (s_PatchCode_class = static_cast<jclass>(env->NewGlobalRef(patch_code_class))) == nullptr ||
-      (game_list_entry_class = env->FindClass("com/github/stenzek/duckstation/GameListEntry")) == nullptr ||
-      (s_GameListEntry_class = static_cast<jclass>(env->NewGlobalRef(game_list_entry_class))) == nullptr ||
-      (save_state_info_class = env->FindClass("com/github/stenzek/duckstation/SaveStateInfo")) == nullptr ||
-      (s_SaveStateInfo_class = static_cast<jclass>(env->NewGlobalRef(save_state_info_class))) == nullptr ||
-      (achievement_class = env->FindClass("com/github/stenzek/duckstation/Achievement")) == nullptr ||
-      (s_Achievement_class = static_cast<jclass>(env->NewGlobalRef(achievement_class))) == nullptr ||
-      (memory_card_file_info_class = env->FindClass("com/github/stenzek/duckstation/MemoryCardFileInfo")) == nullptr ||
-      (s_MemoryCardFileInfo_class = static_cast<jclass>(env->NewGlobalRef(memory_card_file_info_class))) == nullptr)
-  {
-    Log_ErrorPrint("AndroidHostInterface class lookup failed");
-    return -1;
-  }
-
-  env->DeleteLocalRef(string_class);
-  env->DeleteLocalRef(host_interface_class);
-  env->DeleteLocalRef(patch_code_class);
-  env->DeleteLocalRef(game_list_entry_class);
-  env->DeleteLocalRef(achievement_class);
-  env->DeleteLocalRef(memory_card_file_info_class);
-
-  jclass emulation_activity_class;
-  if ((s_AndroidHostInterface_constructor =
-         env->GetMethodID(s_AndroidHostInterface_class, "<init>",
-                          "(Landroid/content/Context;Lcom/github/stenzek/duckstation/FileHelper;)V")) == nullptr ||
-      (s_AndroidHostInterface_field_mNativePointer =
-         env->GetFieldID(s_AndroidHostInterface_class, "mNativePointer", "J")) == nullptr ||
-      (s_AndroidHostInterface_field_mEmulationActivity =
-         env->GetFieldID(s_AndroidHostInterface_class, "mEmulationActivity",
-                         "Lcom/github/stenzek/duckstation/EmulationActivity;")) == nullptr ||
-      (s_AndroidHostInterface_method_reportError =
-         env->GetMethodID(s_AndroidHostInterface_class, "reportError", "(Ljava/lang/String;)V")) == nullptr ||
-      (s_AndroidHostInterface_method_reportMessage =
-         env->GetMethodID(s_AndroidHostInterface_class, "reportMessage", "(Ljava/lang/String;)V")) == nullptr ||
-      (s_AndroidHostInterface_method_openAssetStream = env->GetMethodID(
-         s_AndroidHostInterface_class, "openAssetStream", "(Ljava/lang/String;)Ljava/io/InputStream;")) == nullptr ||
-      (emulation_activity_class = env->FindClass("com/github/stenzek/duckstation/EmulationActivity")) == nullptr ||
-      (s_EmulationActivity_class = static_cast<jclass>(env->NewGlobalRef(emulation_activity_class))) == nullptr ||
-      (s_EmulationActivity_method_reportError =
-         env->GetMethodID(s_EmulationActivity_class, "reportError", "(Ljava/lang/String;)V")) == nullptr ||
-      (s_EmulationActivity_method_onEmulationStarted =
-         env->GetMethodID(s_EmulationActivity_class, "onEmulationStarted", "()V")) == nullptr ||
-      (s_EmulationActivity_method_onEmulationStopped =
-         env->GetMethodID(s_EmulationActivity_class, "onEmulationStopped", "()V")) == nullptr ||
-      (s_EmulationActivity_method_onRunningGameChanged =
-         env->GetMethodID(s_EmulationActivity_class, "onRunningGameChanged",
-                          "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V")) == nullptr ||
-      (s_EmulationActivity_method_setVibration = env->GetMethodID(emulation_activity_class, "setVibration", "(Z)V")) ==
-        nullptr ||
-      (s_EmulationActivity_method_getRefreshRate =
-         env->GetMethodID(emulation_activity_class, "getRefreshRate", "()F")) == nullptr ||
-      (s_EmulationActivity_method_openPauseMenu = env->GetMethodID(emulation_activity_class, "openPauseMenu", "()V")) ==
-        nullptr ||
-      (s_EmulationActivity_method_getInputDeviceNames =
-         env->GetMethodID(s_EmulationActivity_class, "getInputDeviceNames", "()[Ljava/lang/String;")) == nullptr ||
-      (s_EmulationActivity_method_hasInputDeviceVibration =
-         env->GetMethodID(s_EmulationActivity_class, "hasInputDeviceVibration", "(I)Z")) == nullptr ||
-      (s_EmulationActivity_method_setInputDeviceVibration =
-         env->GetMethodID(s_EmulationActivity_class, "setInputDeviceVibration", "(IFF)V")) == nullptr ||
-      (s_PatchCode_constructor =
-         env->GetMethodID(s_PatchCode_class, "<init>", "(ILjava/lang/String;Ljava/lang/String;Z)V")) == nullptr ||
-      (s_GameListEntry_constructor =
-         env->GetMethodID(s_GameListEntry_class, "<init>",
-                          "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;Ljava/lang/"
-                          "String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V")) == nullptr ||
-      (s_SaveStateInfo_constructor = env->GetMethodID(
-         s_SaveStateInfo_class, "<init>",
-         "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZII[B)V")) ==
-        nullptr ||
-      (s_Achievement_constructor = env->GetMethodID(
-         s_Achievement_class, "<init>",
-         "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)V")) == nullptr ||
-      (s_MemoryCardFileInfo_constructor = env->GetMethodID(s_MemoryCardFileInfo_class, "<init>",
-                                                           "(Ljava/lang/String;Ljava/lang/String;III[[B)V")) == nullptr)
-  {
-    Log_ErrorPrint("AndroidHostInterface lookups failed");
-    return -1;
-  }
-
-  env->DeleteLocalRef(emulation_activity_class);
-
-  return JNI_VERSION_1_6;
-}
-
-#define DEFINE_JNI_METHOD(return_type, name)                                                                           \
-  extern "C" JNIEXPORT return_type JNICALL Java_com_github_stenzek_duckstation_##name(JNIEnv* env)
-
-#define DEFINE_JNI_ARGS_METHOD(return_type, name, ...)                                                                 \
-  extern "C" JNIEXPORT return_type JNICALL Java_com_github_stenzek_duckstation_##name(JNIEnv* env, __VA_ARGS__)
-
-DEFINE_JNI_ARGS_METHOD(jstring, AndroidHostInterface_getScmVersion, jobject unused)
-{
-  return env->NewStringUTF(g_scm_tag_str);
-}
-
-DEFINE_JNI_ARGS_METHOD(jstring, AndroidHostInterface_getFullScmVersion, jobject unused)
-{
-  return env->NewStringUTF(SmallString::FromFormat("DuckStation for Android %s (%s)\nBuilt %s %s", g_scm_tag_str,
-                                                   g_scm_branch_str, __DATE__, __TIME__));
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setThreadAffinity, jobject unused, jintArray cores)
-{
-  // https://github.com/googlearchive/android-audio-high-performance/blob/c232c21bf35d3bfea16537b781c526b8abdcc3cf/SimpleSynth/app/src/main/cpp/audio_player.cc
-  int length = env->GetArrayLength(cores);
-  int* p_cores = env->GetIntArrayElements(cores, nullptr);
-
-  pid_t current_thread_id = gettid();
-  cpu_set_t cpu_set;
-  CPU_ZERO(&cpu_set);
-  for (int i = 0; i < length; i++)
-  {
-    Log_InfoPrintf("Binding to CPU %d", p_cores[i]);
-    CPU_SET(p_cores[i], &cpu_set);
-  }
-
-  int result = sched_setaffinity(current_thread_id, sizeof(cpu_set_t), &cpu_set);
-  if (result != 0)
-    Log_InfoPrintf("Thread affinity set.");
-  else
-    Log_ErrorPrintf("Error setting thread affinity: %d", result);
-
-  env->ReleaseIntArrayElements(cores, p_cores, 0);
-}
-
-DEFINE_JNI_ARGS_METHOD(jobject, AndroidHostInterface_create, jobject unused, jobject context_object,
-                       jobject file_helper_object, jstring user_directory)
-{
-  Log::SetDebugOutputParams(true, nullptr, LOGLEVEL_DEBUG);
-
-  // initialize the java side
-  jobject java_obj = env->NewObject(s_AndroidHostInterface_class, s_AndroidHostInterface_constructor, context_object,
-                                    file_helper_object);
-  if (!java_obj)
-  {
-    Log_ErrorPrint("Failed to create Java AndroidHostInterface");
-    return nullptr;
-  }
-
-  jobject java_obj_ref = env->NewGlobalRef(java_obj);
-  Assert(java_obj_ref != nullptr);
-
-  // initialize the C++ side
-  std::string user_directory_str = AndroidHelpers::JStringToString(env, user_directory);
-  AndroidHostInterface* cpp_obj = new AndroidHostInterface(java_obj_ref, context_object, std::move(user_directory_str));
-  if (!cpp_obj->Initialize())
-  {
-    // TODO: Do we need to release the original java object reference?
-    Log_ErrorPrint("Failed to create C++ AndroidHostInterface");
-    env->DeleteGlobalRef(java_obj_ref);
-    return nullptr;
-  }
-
-  env->SetLongField(java_obj, s_AndroidHostInterface_field_mNativePointer,
-                    static_cast<long>(reinterpret_cast<uintptr_t>(cpp_obj)));
-
-  FileSystem::SetAndroidFileHelper(s_jvm, env, file_helper_object);
-  return java_obj;
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_isEmulationThreadRunning, jobject obj)
-{
-  return AndroidHelpers::GetNativeClass(env, obj)->IsEmulationThreadRunning();
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_runEmulationThread, jobject obj, jobject emulationActivity,
-                       jstring filename, jboolean resume_state, jstring state_filename)
-{
-  std::string state_filename_str = AndroidHelpers::JStringToString(env, state_filename);
-
-  SystemBootParameters boot_params;
-  boot_params.filename = AndroidHelpers::JStringToString(env, filename);
-
-  AndroidHelpers::GetNativeClass(env, obj)->EmulationThreadEntryPoint(env, emulationActivity, std::move(boot_params),
-                                                                      resume_state);
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_stopEmulationThreadLoop, jobject obj)
-{
-  AndroidHelpers::GetNativeClass(env, obj)->StopEmulationThreadLoop();
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_surfaceChanged, jobject obj, jobject surface, jint format, jint width,
-                       jint height)
-{
-  ANativeWindow* native_surface = surface ? ANativeWindow_fromSurface(env, surface) : nullptr;
-  if (surface && !native_surface)
-    Log_ErrorPrint("ANativeWindow_fromSurface() returned null");
-
-  if (!surface && System::GetState() == System::State::Starting)
-  {
-    // User switched away from the app while it was compiling shaders.
-    Log_ErrorPrintf("Surface destroyed while starting, cancelling");
-    System::CancelPendingStartup();
-  }
-
-  // We should wait for the emu to finish if the surface is being destroyed or changed.
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  const bool block = (!native_surface || native_surface != hi->GetSurface());
-  hi->RunOnEmulationThread(
-    [hi, native_surface, format, width, height]() { hi->SurfaceChanged(native_surface, format, width, height); },
-    block);
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setMousePosition, jobject obj, jint positionX, jint positionY)
-{
-  HostDisplay* display = AndroidHelpers::GetNativeClass(env, obj)->GetDisplay();
-  if (!display)
-    return;
-
-  // Technically a race, but shouldn't cause any issues.
-  display->SetMousePosition(positionX, positionY);
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setControllerButtonState, jobject obj, jint index, jint button_code,
-                       jboolean pressed)
-{
-  AndroidHelpers::GetNativeClass(env, obj)->SetControllerButtonState(index, button_code, pressed);
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setControllerAutoFireState, jobject obj, jint controller_index,
-                       jint autofire_index, jboolean active)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  if (!hi->IsEmulationThreadRunning())
-    return;
-
-  hi->RunOnEmulationThread([hi, controller_index, autofire_index, active]() {
-    hi->SetControllerAutoFireSlotState(controller_index, autofire_index, active);
-  });
-}
-
-DEFINE_JNI_ARGS_METHOD(jint, AndroidHostInterface_getControllerButtonCode, jobject unused, jstring controller_type,
-                       jstring button_name)
-{
-  std::optional<ControllerType> type =
-    Settings::ParseControllerTypeName(AndroidHelpers::JStringToString(env, controller_type).c_str());
-  if (!type)
-    return -1;
-
-  std::optional<s32> code =
-    Controller::GetButtonCodeByName(type.value(), AndroidHelpers::JStringToString(env, button_name));
-  return code.value_or(-1);
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setControllerAxisState, jobject obj, jint index, jint button_code,
-                       jfloat value)
-{
-  AndroidHelpers::GetNativeClass(env, obj)->SetControllerAxisState(index, button_code, value);
-}
-
-DEFINE_JNI_ARGS_METHOD(jint, AndroidHostInterface_getControllerAxisCode, jobject unused, jstring controller_type,
-                       jstring axis_name)
-{
-  std::optional<ControllerType> type =
-    Settings::ParseControllerTypeName(AndroidHelpers::JStringToString(env, controller_type).c_str());
-  if (!type)
-    return -1;
-
-  std::optional<s32> code =
-    Controller::GetAxisCodeByName(type.value(), AndroidHelpers::JStringToString(env, axis_name));
-  return code.value_or(-1);
-}
-
-DEFINE_JNI_ARGS_METHOD(jint, AndroidHostInterface_getControllerAxisType, jobject unused, jstring controller_type,
-                       jstring axis_name)
-{
-  std::optional<ControllerType> type =
-    Settings::ParseControllerTypeName(AndroidHelpers::JStringToString(env, controller_type).c_str());
-  if (!type)
-    return -1;
-
-  const std::string axis_name_str(AndroidHelpers::JStringToString(env, axis_name));
-  for (const auto& [name, code, type] : Controller::GetAxisNames(type.value()))
-  {
-    if (name == axis_name_str)
-      return static_cast<jint>(type);
-  }
-
-  return -1;
-}
-
-DEFINE_JNI_ARGS_METHOD(jobjectArray, AndroidHostInterface_getControllerButtonNames, jobject unused,
-                       jstring controller_type)
-{
-  std::optional<ControllerType> type =
-    Settings::ParseControllerTypeName(AndroidHelpers::JStringToString(env, controller_type).c_str());
-  if (!type)
-    return nullptr;
-
-  const Controller::ButtonList buttons(Controller::GetButtonNames(type.value()));
-  if (buttons.empty())
-    return nullptr;
-
-  jobjectArray name_array = env->NewObjectArray(static_cast<u32>(buttons.size()), s_String_class, nullptr);
-  u32 name_array_index = 0;
-  Assert(name_array != nullptr);
-  for (const auto& [button_name, button_code] : buttons)
-  {
-    jstring button_name_jstr = env->NewStringUTF(button_name.c_str());
-    env->SetObjectArrayElement(name_array, name_array_index++, button_name_jstr);
-    env->DeleteLocalRef(button_name_jstr);
-  }
-
-  return name_array;
-}
-
-DEFINE_JNI_ARGS_METHOD(jobjectArray, AndroidHostInterface_getControllerAxisNames, jobject unused,
-                       jstring controller_type)
-{
-  std::optional<ControllerType> type =
-    Settings::ParseControllerTypeName(AndroidHelpers::JStringToString(env, controller_type).c_str());
-  if (!type)
-    return nullptr;
-
-  const Controller::AxisList axes(Controller::GetAxisNames(type.value()));
-  if (axes.empty())
-    return nullptr;
-
-  jobjectArray name_array = env->NewObjectArray(static_cast<u32>(axes.size()), s_String_class, nullptr);
-  u32 name_array_index = 0;
-  Assert(name_array != nullptr);
-  for (const auto& [axis_name, axis_code, axis_type] : axes)
-  {
-    jstring axis_name_jstr = env->NewStringUTF(axis_name.c_str());
-    env->SetObjectArrayElement(name_array, name_array_index++, axis_name_jstr);
-    env->DeleteLocalRef(axis_name_jstr);
-  }
-
-  return name_array;
-}
-
-DEFINE_JNI_ARGS_METHOD(jint, AndroidHostInterface_getControllerVibrationMotorCount, jobject unused,
-                       jstring controller_type)
-{
-  std::optional<ControllerType> type =
-    Settings::ParseControllerTypeName(AndroidHelpers::JStringToString(env, controller_type).c_str());
-  if (!type)
-    return 0;
-
-  return static_cast<jint>(Controller::GetVibrationMotorCount(type.value()));
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_handleControllerButtonEvent, jobject obj, jint controller_index,
-                       jint button_index, jboolean pressed)
-{
-  AndroidHelpers::GetNativeClass(env, obj)->HandleControllerButtonEvent(static_cast<u32>(controller_index),
-                                                                        static_cast<u32>(button_index), pressed);
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_handleControllerAxisEvent, jobject obj, jint controller_index,
-                       jint axis_index, jfloat value)
-{
-  AndroidHelpers::GetNativeClass(env, obj)->HandleControllerAxisEvent(static_cast<u32>(controller_index),
-                                                                      static_cast<u32>(axis_index), value);
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_hasControllerButtonBinding, jobject obj, jint controller_index,
-                       jint button_index)
-{
-  return AndroidHelpers::GetNativeClass(env, obj)->HasControllerButtonBinding(static_cast<u32>(controller_index),
-                                                                              static_cast<u32>(button_index));
-}
-
-DEFINE_JNI_ARGS_METHOD(jobjectArray, AndroidHostInterface_getInputProfileNames, jobject obj)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  return hi->GetInputProfileNames(env);
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_loadInputProfile, jobject obj, jstring name)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  const std::string profile_name(AndroidHelpers::JStringToString(env, name));
-  if (profile_name.empty())
-    return false;
-
-  const std::string profile_path(hi->GetInputProfilePath(profile_name.c_str()));
-  if (profile_path.empty())
-    return false;
-
-  return hi->ApplyInputProfile(profile_path.c_str());
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_saveInputProfile, jobject obj, jstring name)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  const std::string profile_name(AndroidHelpers::JStringToString(env, name));
-  if (profile_name.empty())
-    return false;
-
-  const std::string profile_path(hi->GetSavePathForInputProfile(profile_name.c_str()));
-  if (profile_path.empty())
-    return false;
-
-  return hi->SaveInputProfile(profile_path.c_str());
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_refreshGameList, jobject obj, jboolean invalidate_cache,
-                       jboolean invalidate_database, jobject progress_callback)
-{
-  AndroidProgressCallback cb(env, progress_callback);
-  AndroidHelpers::GetNativeClass(env, obj)->RefreshGameList(invalidate_cache, invalidate_database, &cb);
-}
-
-static const char* DiscRegionToString(DiscRegion region)
-{
-  static std::array<const char*, 4> names = {{"NTSC_J", "NTSC_U", "PAL", "Other"}};
-  return names[static_cast<int>(region)];
-}
-
-static jobject CreateGameListEntry(JNIEnv* env, AndroidHostInterface* hi, const GameListEntry& entry)
-{
-  const Timestamp modified_ts(
-    Timestamp::FromUnixTimestamp(static_cast<Timestamp::UnixTimestampValue>(entry.last_modified_time)));
-  const std::string cover_path_str(hi->GetGameList()->GetCoverImagePathForEntry(&entry));
-
-  jstring path = env->NewStringUTF(entry.path.c_str());
-  jstring code = env->NewStringUTF(entry.code.c_str());
-  jstring title = env->NewStringUTF(entry.title.c_str());
-  jstring region = env->NewStringUTF(DiscRegionToString(entry.region));
-  jstring type = env->NewStringUTF(GameList::EntryTypeToString(entry.type));
-  jstring compatibility_rating =
-    env->NewStringUTF(GameList::EntryCompatibilityRatingToString(entry.compatibility_rating));
-  jstring cover_path = (cover_path_str.empty()) ? nullptr : env->NewStringUTF(cover_path_str.c_str());
-  jstring modified_time = env->NewStringUTF(modified_ts.ToString("%Y/%m/%d, %H:%M:%S"));
-  jlong size = entry.total_size;
-
-  jobject entry_jobject = env->NewObject(s_GameListEntry_class, s_GameListEntry_constructor, path, code, title, size,
-                                         modified_time, region, type, compatibility_rating, cover_path);
-
-  env->DeleteLocalRef(modified_time);
-  if (cover_path)
-    env->DeleteLocalRef(cover_path);
-  env->DeleteLocalRef(compatibility_rating);
-  env->DeleteLocalRef(type);
-  env->DeleteLocalRef(region);
-  env->DeleteLocalRef(title);
-  env->DeleteLocalRef(code);
-  env->DeleteLocalRef(path);
-
-  return entry_jobject;
-}
-
-DEFINE_JNI_ARGS_METHOD(jarray, AndroidHostInterface_getGameListEntries, jobject obj)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  jobjectArray entry_array = env->NewObjectArray(hi->GetGameList()->GetEntryCount(), s_GameListEntry_class, nullptr);
-  Assert(entry_array != nullptr);
-
-  u32 counter = 0;
-  for (const GameListEntry& entry : hi->GetGameList()->GetEntries())
-  {
-    jobject entry_jobject = CreateGameListEntry(env, hi, entry);
-    env->SetObjectArrayElement(entry_array, counter++, entry_jobject);
-    env->DeleteLocalRef(entry_jobject);
-  }
-
-  return entry_array;
-}
-
-DEFINE_JNI_ARGS_METHOD(jobject, AndroidHostInterface_getGameListEntry, jobject obj, jstring path)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  const std::string path_str(AndroidHelpers::JStringToString(env, path));
-  const GameListEntry* entry = hi->GetGameList()->GetEntryForPath(path_str.c_str());
-  if (!entry)
-    return nullptr;
-
-  return CreateGameListEntry(env, hi, *entry);
-}
-
-DEFINE_JNI_ARGS_METHOD(jstring, AndroidHostInterface_getGameSettingValue, jobject obj, jstring path, jstring key)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  const std::string path_str(AndroidHelpers::JStringToString(env, path));
-  const std::string key_str(AndroidHelpers::JStringToString(env, key));
-
-  const GameListEntry* entry = hi->GetGameList()->GetEntryForPath(path_str.c_str());
-  if (!entry)
-    return nullptr;
-
-  std::optional<std::string> value = entry->settings.GetValueForKey(key_str);
-  if (!value.has_value())
-    return nullptr;
-  else
-    return env->NewStringUTF(value->c_str());
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setGameSettingValue, jobject obj, jstring path, jstring key,
-                       jstring value)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  const std::string path_str(AndroidHelpers::JStringToString(env, path));
-  const std::string key_str(AndroidHelpers::JStringToString(env, key));
-
-  const GameListEntry* entry = hi->GetGameList()->GetEntryForPath(path_str.c_str());
-  if (!entry)
-    return;
-
-  GameSettings::Entry new_entry(entry->settings);
-
-  std::optional<std::string> value_str;
-  if (value)
-    value_str = AndroidHelpers::JStringToString(env, value);
-
-  new_entry.SetValueForKey(key_str, value_str);
-  hi->GetGameList()->UpdateGameSettings(path_str, entry->code, entry->title, new_entry, true);
-}
-
-DEFINE_JNI_ARGS_METHOD(jobjectArray, AndroidHostInterface_getHotkeyInfoList, jobject obj)
-{
-  jclass entry_class = env->FindClass("com/github/stenzek/duckstation/HotkeyInfo");
-  Assert(entry_class != nullptr);
-
-  jmethodID entry_constructor =
-    env->GetMethodID(entry_class, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
-  Assert(entry_constructor != nullptr);
-
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  const CommonHostInterface::HotkeyInfoList& hotkeys = hi->GetHotkeyInfoList();
-  if (hotkeys.empty())
-    return nullptr;
-
-  jobjectArray entry_array = env->NewObjectArray(static_cast<jsize>(hotkeys.size()), entry_class, nullptr);
-  Assert(entry_array != nullptr);
-
-  u32 counter = 0;
-  for (const CommonHostInterface::HotkeyInfo& hk : hotkeys)
-  {
-    jstring category = env->NewStringUTF(hk.category.GetCharArray());
-    jstring name = env->NewStringUTF(hk.name.GetCharArray());
-    jstring display_name = env->NewStringUTF(hk.display_name.GetCharArray());
-
-    jobject entry_jobject = env->NewObject(entry_class, entry_constructor, category, name, display_name);
-
-    env->SetObjectArrayElement(entry_array, counter++, entry_jobject);
-    env->DeleteLocalRef(entry_jobject);
-    env->DeleteLocalRef(display_name);
-    env->DeleteLocalRef(name);
-    env->DeleteLocalRef(category);
-  }
-
-  return entry_array;
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_applySettings, jobject obj)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  if (hi->IsEmulationThreadRunning())
-  {
-    hi->RunOnEmulationThread([hi]() { hi->ApplySettings(false); });
-  }
-  else
-  {
-    hi->ApplySettings(false);
-  }
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_updateInputMap, jobject obj)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  if (hi->IsEmulationThreadRunning())
-  {
-    hi->RunOnEmulationThread([hi]() { hi->UpdateInputMap(); });
-  }
-  else
-  {
-    hi->UpdateInputMap();
-  }
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_resetSystem, jobject obj, jboolean global, jint slot)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->RunOnEmulationThread([hi]() { hi->ResetSystem(); });
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_loadState, jobject obj, jboolean global, jint slot)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->RunOnEmulationThread([hi, global, slot]() { hi->LoadState(global, slot); });
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_saveState, jobject obj, jboolean global, jint slot)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->RunOnEmulationThread([hi, global, slot]() { hi->SaveState(global, slot); });
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_saveResumeState, jobject obj, jboolean wait_for_completion)
-{
-  if (!System::IsValid() || System::GetState() == System::State::Starting)
-  {
-    // This gets called when the surface is destroyed, which can happen while starting.
-    return;
-  }
-
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->RunOnEmulationThread([hi]() { hi->SaveResumeSaveState(); }, wait_for_completion);
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setDisplayAlignment, jobject obj, jint alignment)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->RunOnEmulationThread(
-    [hi, alignment]() { hi->SetDisplayAlignment(static_cast<HostDisplay::Alignment>(alignment)); }, false);
-}
-
-DEFINE_JNI_ARGS_METHOD(bool, AndroidHostInterface_hasSurface, jobject obj)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  HostDisplay* display = hi->GetDisplay();
-  if (display)
-    return display->HasRenderSurface();
-  else
-    return false;
-}
-
-DEFINE_JNI_ARGS_METHOD(bool, AndroidHostInterface_isEmulationThreadPaused, jobject obj)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  return hi->IsEmulationThreadPaused();
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_pauseEmulationThread, jobject obj, jboolean paused)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->PauseEmulationThread(paused);
-}
-
-DEFINE_JNI_ARGS_METHOD(jobject, AndroidHostInterface_getPatchCodeList, jobject obj)
-{
-  if (!System::IsValid())
-    return nullptr;
-
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  if (!System::HasCheatList())
-  {
-    // Hopefully this won't deadlock...
-    hi->RunOnEmulationThread(
-      [hi]() {
-        if (!hi->LoadCheatListFromGameTitle())
-          hi->LoadCheatListFromDatabase();
-      },
-      true);
-  }
-
-  if (!System::HasCheatList())
-    return nullptr;
-
-  CheatList* cl = System::GetCheatList();
-  const u32 count = cl->GetCodeCount();
-
-  jobjectArray arr = env->NewObjectArray(count, s_PatchCode_class, nullptr);
-  for (u32 i = 0; i < count; i++)
-  {
-    const CheatCode& cc = cl->GetCode(i);
-
-    jstring group_str = cc.group.empty() ? nullptr : env->NewStringUTF(cc.group.c_str());
-    jstring desc_str = env->NewStringUTF(cc.description.c_str());
-    jobject java_cc =
-      env->NewObject(s_PatchCode_class, s_PatchCode_constructor, static_cast<jint>(i), group_str, desc_str, cc.enabled);
-    env->SetObjectArrayElement(arr, i, java_cc);
-    env->DeleteLocalRef(java_cc);
-    env->DeleteLocalRef(desc_str);
-    env->DeleteLocalRef(group_str);
-  }
-
-  return arr;
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_importPatchCodesFromString, jobject obj, jstring str)
-{
-  if (!System::IsValid())
-    return false;
-
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  return hi->ImportPatchCodesFromString(AndroidHelpers::JStringToString(env, str));
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setPatchCodeEnabled, jobject obj, jint index, jboolean enabled)
-{
-  if (!System::IsValid() || !System::HasCheatList())
-    return;
-
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->RunOnEmulationThread([index, enabled, hi]() { hi->SetCheatCodeState(static_cast<u32>(index), enabled, true); });
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_addOSDMessage, jobject obj, jstring message, jfloat duration)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->AddOSDMessage(AndroidHelpers::JStringToString(env, message), duration);
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_hasAnyBIOSImages, jobject obj)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  return hi->HasAnyBIOSImages();
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_isFastForwardEnabled, jobject obj)
-{
-  return AndroidHelpers::GetNativeClass(env, obj)->IsRunningAtNonStandardSpeed();
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setFastForwardEnabled, jobject obj, jboolean enabled)
-{
-  if (!System::IsValid())
-    return;
-
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->RunOnEmulationThread([enabled, hi]() { hi->SetFastForwardEnabled(enabled); });
-}
-
-DEFINE_JNI_ARGS_METHOD(jstring, AndroidHostInterface_importBIOSImage, jobject obj, jbyteArray data)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-
-  const jsize len = env->GetArrayLength(data);
-  if (len != BIOS::BIOS_SIZE)
-    return nullptr;
-
-  BIOS::Image image;
-  image.resize(static_cast<size_t>(len));
-  env->GetByteArrayRegion(data, 0, len, reinterpret_cast<jbyte*>(image.data()));
-
-  const BIOS::Hash hash = BIOS::GetHash(image);
-  const BIOS::ImageInfo* ii = BIOS::GetImageInfoForHash(hash);
-
-  const std::string dest_path(hi->GetUserDirectoryRelativePath("bios/%s.bin", hash.ToString().c_str()));
-  if (FileSystem::FileExists(dest_path.c_str()) ||
-      !FileSystem::WriteBinaryFile(dest_path.c_str(), image.data(), image.size()))
-  {
-    return nullptr;
-  }
-
-  if (ii)
-    return env->NewStringUTF(ii->description);
-  else
-    return env->NewStringUTF(hash.ToString().c_str());
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_hasMediaSubImages, jobject obj)
-{
-  if (!System::IsValid())
-    return false;
-
-  return System::HasMediaSubImages();
-}
-
-DEFINE_JNI_ARGS_METHOD(jobjectArray, AndroidHostInterface_getMediaSubImageTitles, jobject obj)
-{
-  if (!System::IsValid())
-    return nullptr;
-
-  const u32 count = System::GetMediaSubImageCount();
-  if (count == 0)
-    return nullptr;
-
-  jobjectArray arr = env->NewObjectArray(static_cast<jsize>(count), s_String_class, nullptr);
-  for (u32 i = 0; i < count; i++)
-  {
-    jstring str = env->NewStringUTF(System::GetMediaSubImageTitle(i).c_str());
-    env->SetObjectArrayElement(arr, static_cast<jsize>(i), str);
-    env->DeleteLocalRef(str);
-  }
-
-  return arr;
-}
-
-DEFINE_JNI_ARGS_METHOD(jint, AndroidHostInterface_getMediaSubImageIndex, jobject obj)
-{
-  if (!System::IsValid())
-    return -1;
-
-  return System::GetMediaSubImageIndex();
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_switchMediaSubImage, jobject obj, jint index)
-{
-  if (!System::IsValid() || index < 0 || static_cast<u32>(index) >= System::GetMediaSubImageCount())
-    return false;
-
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->RunOnEmulationThread([index, hi]() {
-    if (System::IsValid())
-    {
-      if (!System::SwitchMediaSubImage(static_cast<u32>(index)))
-        hi->AddOSDMessage("Disc switch failed. Please make sure the file exists.");
-    }
-  });
-
-  return true;
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_setMediaFilename, jstring obj, jstring filename)
-{
-  if (!System::IsValid() || !filename)
-    return false;
-
-  std::string filename_str(AndroidHelpers::JStringToString(env, filename));
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->RunOnEmulationThread([filename_str, hi]() {
-    if (System::IsValid())
-    {
-      if (!System::InsertMedia(filename_str.c_str()))
-        hi->AddOSDMessage("Disc switch failed. Please make sure the file exists and is a supported disc image.");
-    }
-  });
-
-  return true;
-}
-
-static jobject CreateSaveStateInfo(JNIEnv* env, const CommonHostInterface::ExtendedSaveStateInfo& ssi)
-{
-  LocalRefHolder<jstring> path(env, env->NewStringUTF(ssi.path.c_str()));
-  LocalRefHolder<jstring> title(env, env->NewStringUTF(ssi.title.c_str()));
-  LocalRefHolder<jstring> code(env, env->NewStringUTF(ssi.game_code.c_str()));
-  LocalRefHolder<jstring> media_path(env, env->NewStringUTF(ssi.media_path.c_str()));
-  LocalRefHolder<jstring> timestamp(env, env->NewStringUTF(Timestamp::FromUnixTimestamp(ssi.timestamp).ToString("%c")));
-  LocalRefHolder<jbyteArray> screenshot_data;
-  if (!ssi.screenshot_data.empty())
-  {
-    const jsize data_size = static_cast<jsize>(ssi.screenshot_data.size() * sizeof(u32));
-    screenshot_data = LocalRefHolder<jbyteArray>(env, env->NewByteArray(data_size));
-    env->SetByteArrayRegion(screenshot_data.Get(), 0, data_size,
-                            reinterpret_cast<const jbyte*>(ssi.screenshot_data.data()));
-  }
-
-  return env->NewObject(s_SaveStateInfo_class, s_SaveStateInfo_constructor, path.Get(), title.Get(), code.Get(),
-                        media_path.Get(), timestamp.Get(), static_cast<jint>(ssi.slot),
-                        static_cast<jboolean>(ssi.global), static_cast<jint>(ssi.screenshot_width),
-                        static_cast<jint>(ssi.screenshot_height), screenshot_data.Get());
-}
-
-static jobject CreateEmptySaveStateInfo(JNIEnv* env, s32 slot, bool global)
-{
-  return env->NewObject(s_SaveStateInfo_class, s_SaveStateInfo_constructor, nullptr, nullptr, nullptr, nullptr, nullptr,
-                        static_cast<jint>(slot), static_cast<jboolean>(global), static_cast<jint>(0),
-                        static_cast<jint>(0), nullptr);
-}
-
-DEFINE_JNI_ARGS_METHOD(jobjectArray, AndroidHostInterface_getSaveStateInfo, jobject obj, jboolean includeEmpty)
-{
-  if (!System::IsValid())
-    return nullptr;
-
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  std::vector<jobject> infos;
-
-  // +1 for the quick save only in android.
-  infos.reserve(1 + CommonHostInterface::PER_GAME_SAVE_STATE_SLOTS + CommonHostInterface::GLOBAL_SAVE_STATE_SLOTS);
-
-  const std::string& game_code = System::GetRunningCode();
-  if (!game_code.empty())
-  {
-    for (u32 i = 0; i <= CommonHostInterface::PER_GAME_SAVE_STATE_SLOTS; i++)
-    {
-      std::optional<CommonHostInterface::ExtendedSaveStateInfo> esi =
-        hi->GetExtendedSaveStateInfo(game_code.c_str(), static_cast<s32>(i));
-      if (esi.has_value())
-      {
-        jobject obj = CreateSaveStateInfo(env, esi.value());
-        if (obj)
-          infos.push_back(obj);
-      }
-      else if (includeEmpty)
-      {
-        jobject obj = CreateEmptySaveStateInfo(env, static_cast<s32>(i), false);
-        if (obj)
-          infos.push_back(obj);
-      }
-    }
-  }
-
-  for (u32 i = 1; i <= CommonHostInterface::GLOBAL_SAVE_STATE_SLOTS; i++)
-  {
-    std::optional<CommonHostInterface::ExtendedSaveStateInfo> esi =
-      hi->GetExtendedSaveStateInfo(nullptr, static_cast<s32>(i));
-    if (esi.has_value())
-    {
-      jobject obj = CreateSaveStateInfo(env, esi.value());
-      if (obj)
-        infos.push_back(obj);
-    }
-    else if (includeEmpty)
-    {
-      jobject obj = CreateEmptySaveStateInfo(env, static_cast<s32>(i), true);
-      if (obj)
-        infos.push_back(obj);
-    }
-  }
-
-  if (infos.empty())
-    return nullptr;
-
-  jobjectArray ret = env->NewObjectArray(static_cast<jsize>(infos.size()), s_SaveStateInfo_class, nullptr);
-  for (size_t i = 0; i < infos.size(); i++)
-  {
-    env->SetObjectArrayElement(ret, static_cast<jsize>(i), infos[i]);
-    env->DeleteLocalRef(infos[i]);
-  }
-
-  return ret;
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_toggleControllerAnalogMode, jobject obj)
-{
-  // hacky way to toggle analog mode
-  for (u32 i = 0; i < NUM_CONTROLLER_AND_CARD_PORTS; i++)
-  {
-    Controller* ctrl = System::GetController(i);
-    if (!ctrl)
-      continue;
-
-    std::optional<s32> code = Controller::GetButtonCodeByName(ctrl->GetType(), "Analog");
-    if (!code.has_value())
-      continue;
-
-    ctrl->SetButtonState(code.value(), true);
-    ctrl->SetButtonState(code.value(), false);
-  }
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setFullscreenUINotificationVerticalPosition, jobject obj,
-                       jfloat position, jfloat direction)
-{
-  AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
-  hi->RunOnEmulationThread(
-    [position, direction]() { ImGuiFullscreen::SetNotificationVerticalPosition(position, direction); });
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_isCheevosActive, jobject obj)
-{
-  return Cheevos::IsActive();
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_isCheevosChallengeModeActive, jobject obj)
-{
-  return Cheevos::IsChallengeModeActive();
-}
-
-DEFINE_JNI_ARGS_METHOD(jobjectArray, AndroidHostInterface_getCheevoList, jobject obj)
-{
-  if (!Cheevos::IsActive())
-    return nullptr;
-
-  std::vector<jobject> cheevos;
-  Cheevos::EnumerateAchievements([env, &cheevos](const Cheevos::Achievement& cheevo) {
-    jstring title = env->NewStringUTF(cheevo.title.c_str());
-    jstring description = env->NewStringUTF(cheevo.description.c_str());
-    jstring locked_badge_path =
-      cheevo.locked_badge_path.empty() ? nullptr : env->NewStringUTF(cheevo.locked_badge_path.c_str());
-    jstring unlocked_badge_path =
-      cheevo.unlocked_badge_path.empty() ? nullptr : env->NewStringUTF(cheevo.unlocked_badge_path.c_str());
-
-    jobject object = env->NewObject(s_Achievement_class, s_Achievement_constructor, static_cast<jint>(cheevo.id), title,
-                                    description, locked_badge_path, unlocked_badge_path,
-                                    static_cast<jint>(cheevo.points), static_cast<jboolean>(cheevo.locked));
-    cheevos.push_back(object);
-
-    if (unlocked_badge_path)
-      env->DeleteLocalRef(unlocked_badge_path);
-    if (locked_badge_path)
-      env->DeleteLocalRef(locked_badge_path);
-    env->DeleteLocalRef(description);
-    env->DeleteLocalRef(title);
-    return true;
-  });
-
-  if (cheevos.empty())
-    return nullptr;
-
-  jobjectArray ret = env->NewObjectArray(static_cast<jsize>(cheevos.size()), s_Achievement_class, nullptr);
-  for (size_t i = 0; i < cheevos.size(); i++)
-  {
-    env->SetObjectArrayElement(ret, static_cast<jsize>(i), cheevos[i]);
-    env->DeleteLocalRef(cheevos[i]);
-  }
-
-  return ret;
-}
-
-DEFINE_JNI_ARGS_METHOD(jint, AndroidHostInterface_getCheevoCount, jobject obj)
-{
-  return Cheevos::GetAchievementCount();
-}
-
-DEFINE_JNI_ARGS_METHOD(jint, AndroidHostInterface_getUnlockedCheevoCount, jobject obj)
-{
-  return Cheevos::GetUnlockedAchiementCount();
-}
-
-DEFINE_JNI_ARGS_METHOD(jint, AndroidHostInterface_getCheevoPointsForGame, jobject obj)
-{
-  return Cheevos::GetCurrentPointsForGame();
-}
-
-DEFINE_JNI_ARGS_METHOD(jint, AndroidHostInterface_getCheevoMaximumPointsForGame, jobject obj)
-{
-  return Cheevos::GetMaximumPointsForGame();
-}
-
-DEFINE_JNI_ARGS_METHOD(jstring, AndroidHostInterface_getCheevoGameTitle, jobject obj)
-{
-  const std::string& title = Cheevos::GetGameTitle();
-  return title.empty() ? nullptr : env->NewStringUTF(title.c_str());
-}
-
-DEFINE_JNI_ARGS_METHOD(jstring, AndroidHostInterface_getCheevoGameIconPath, jobject obj)
-{
-  const std::string& path = Cheevos::GetGameIcon();
-  return path.empty() ? nullptr : env->NewStringUTF(path.c_str());
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_cheevosLogin, jobject obj, jstring username, jstring password)
-{
-  const std::string username_str(AndroidHelpers::JStringToString(env, username));
-  const std::string password_str(AndroidHelpers::JStringToString(env, password));
-  return Cheevos::Login(username_str.c_str(), password_str.c_str());
-}
-
-DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_cheevosLogout, jobject obj)
-{
-  return Cheevos::Logout();
-}
-
-static_assert(sizeof(MemoryCardImage::DataArray) == MemoryCardImage::DATA_SIZE);
-
-static MemoryCardImage::DataArray* GetMemoryCardData(JNIEnv* env, jbyteArray obj)
-{
-  if (!obj || env->GetArrayLength(obj) != MemoryCardImage::DATA_SIZE)
-    return nullptr;
-
-  return reinterpret_cast<MemoryCardImage::DataArray*>(env->GetByteArrayElements(obj, nullptr));
-}
-
-static void ReleaseMemoryCardData(JNIEnv* env, jbyteArray obj, MemoryCardImage::DataArray* data)
-{
-  env->ReleaseByteArrayElements(obj, reinterpret_cast<jbyte*>(data), 0);
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, MemoryCardImage_isValid, jclass clazz, jbyteArray obj)
-{
-  MemoryCardImage::DataArray* data = GetMemoryCardData(env, obj);
-  if (!data)
-    return false;
-
-  const bool res = MemoryCardImage::IsValid(*data);
-  ReleaseMemoryCardData(env, obj, data);
-  return res;
-}
-
-DEFINE_JNI_ARGS_METHOD(void, MemoryCardImage_format, jclass clazz, jbyteArray obj)
-{
-  MemoryCardImage::DataArray* data = GetMemoryCardData(env, obj);
-  if (!data)
-    return;
-
-  MemoryCardImage::Format(data);
-  ReleaseMemoryCardData(env, obj, data);
-}
-
-DEFINE_JNI_ARGS_METHOD(jint, MemoryCardImage_getFreeBlocks, jclass clazz, jbyteArray obj)
-{
-  MemoryCardImage::DataArray* data = GetMemoryCardData(env, obj);
-  if (!data)
-    return 0;
-
-  const u32 free_blocks = MemoryCardImage::GetFreeBlockCount(*data);
-  ReleaseMemoryCardData(env, obj, data);
-  return free_blocks;
-}
-
-DEFINE_JNI_ARGS_METHOD(jobjectArray, MemoryCardImage_getFiles, jclass clazz, jbyteArray obj)
-{
-  MemoryCardImage::DataArray* data = GetMemoryCardData(env, obj);
-  if (!data)
-    return nullptr;
-
-  const std::vector<MemoryCardImage::FileInfo> files(MemoryCardImage::EnumerateFiles(*data));
-
-  std::vector<jobject> file_objects;
-  file_objects.reserve(files.size());
-
-  jclass byteArrayClass = env->FindClass("[B");
-
-  for (const MemoryCardImage::FileInfo& file : files)
-  {
-    jobject filename = env->NewStringUTF(file.filename.c_str());
-    jobject title = env->NewStringUTF(file.title.c_str());
-    jobjectArray frames = nullptr;
-    if (!file.icon_frames.empty())
-    {
-      frames = env->NewObjectArray(static_cast<jint>(file.icon_frames.size()), byteArrayClass, nullptr);
-      for (jsize i = 0; i < static_cast<jsize>(file.icon_frames.size()); i++)
-      {
-        static constexpr jsize frame_size = MemoryCardImage::ICON_WIDTH * MemoryCardImage::ICON_HEIGHT * sizeof(u32);
-        jbyteArray frame_data = env->NewByteArray(frame_size);
-        jbyte* frame_data_ptr = env->GetByteArrayElements(frame_data, nullptr);
-        std::memcpy(frame_data_ptr, file.icon_frames[i].pixels, frame_size);
-        env->ReleaseByteArrayElements(frame_data, frame_data_ptr, 0);
-        env->SetObjectArrayElement(frames, i, frame_data);
-        env->DeleteLocalRef(frame_data);
-      }
-    }
-
-    file_objects.push_back(env->NewObject(s_MemoryCardFileInfo_class, s_MemoryCardFileInfo_constructor, filename, title,
-                                          static_cast<jint>(file.size), static_cast<jint>(file.first_block),
-                                          static_cast<int>(file.num_blocks), frames));
-
-    env->DeleteLocalRef(frames);
-    env->DeleteLocalRef(title);
-    env->DeleteLocalRef(filename);
-  }
-
-  jobjectArray file_object_array =
-    AndroidHelpers::CreateObjectArray(env, s_MemoryCardFileInfo_class, file_objects.data(), file_objects.size(), true);
-  ReleaseMemoryCardData(env, obj, data);
-  return file_object_array;
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, MemoryCardImage_hasFile, jclass clazz, jbyteArray obj, jstring filename)
-{
-  MemoryCardImage::DataArray* data = GetMemoryCardData(env, obj);
-  if (!data)
-    return false;
-
-  const std::string filename_str(AndroidHelpers::JStringToString(env, filename));
-  bool result = false;
-  if (!filename_str.empty())
-  {
-    const std::vector<MemoryCardImage::FileInfo> files(MemoryCardImage::EnumerateFiles(*data));
-    result = std::any_of(files.begin(), files.end(),
-                         [&filename_str](const MemoryCardImage::FileInfo& fi) { return fi.filename == filename_str; });
-  }
-
-  ReleaseMemoryCardData(env, obj, data);
-  return result;
-}
-
-DEFINE_JNI_ARGS_METHOD(jbyteArray, MemoryCardImage_readFile, jclass clazz, jbyteArray obj, jstring filename)
-{
-  MemoryCardImage::DataArray* data = GetMemoryCardData(env, obj);
-  if (!data)
-    return nullptr;
-
-  const std::string filename_str(AndroidHelpers::JStringToString(env, filename));
-  jbyteArray ret = nullptr;
-  if (!filename_str.empty())
-  {
-    const std::vector<MemoryCardImage::FileInfo> files(MemoryCardImage::EnumerateFiles(*data));
-    auto iter = std::find_if(files.begin(), files.end(), [&filename_str](const MemoryCardImage::FileInfo& fi) {
-      return fi.filename == filename_str;
-    });
-    if (iter != files.end())
-    {
-      std::vector<u8> file_data;
-      if (MemoryCardImage::ReadFile(*data, *iter, &file_data))
-        ret = AndroidHelpers::VectorToByteArray(env, file_data);
-    }
-  }
-
-  ReleaseMemoryCardData(env, obj, data);
-  return ret;
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, MemoryCardImage_writeFile, jclass clazz, jbyteArray obj, jstring filename,
-                       jbyteArray file_data)
-{
-  MemoryCardImage::DataArray* data = GetMemoryCardData(env, obj);
-  if (!data)
-    return false;
-
-  const std::string filename_str(AndroidHelpers::JStringToString(env, filename));
-  const std::vector<u8> file_data_vec(AndroidHelpers::ByteArrayToVector(env, file_data));
-  bool ret = false;
-  if (!filename_str.empty())
-    ret = MemoryCardImage::WriteFile(data, filename_str, file_data_vec);
-
-  ReleaseMemoryCardData(env, obj, data);
-  return ret;
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, MemoryCardImage_deleteFile, jclass clazz, jbyteArray obj, jstring filename)
-{
-  MemoryCardImage::DataArray* data = GetMemoryCardData(env, obj);
-  if (!data)
-    return false;
-
-  const std::string filename_str(AndroidHelpers::JStringToString(env, filename));
-  bool ret = false;
-
-  if (!filename_str.empty())
-  {
-    const std::vector<MemoryCardImage::FileInfo> files(MemoryCardImage::EnumerateFiles(*data));
-    auto iter = std::find_if(files.begin(), files.end(), [&filename_str](const MemoryCardImage::FileInfo& fi) {
-      return fi.filename == filename_str;
-    });
-
-    if (iter != files.end())
-      ret = MemoryCardImage::DeleteFile(data, *iter);
-  }
-
-  ReleaseMemoryCardData(env, obj, data);
-  return ret;
-}
-
-DEFINE_JNI_ARGS_METHOD(jboolean, MemoryCardImage_importCard, jclass clazz, jbyteArray obj, jstring filename,
-                       jbyteArray import_data)
-{
-  MemoryCardImage::DataArray* data = GetMemoryCardData(env, obj);
-  if (!data)
-    return false;
-
-  const std::string filename_str(AndroidHelpers::JStringToString(env, filename));
-  std::vector<u8> import_data_vec(AndroidHelpers::ByteArrayToVector(env, import_data));
-  bool ret = false;
-  if (!filename_str.empty() && !import_data_vec.empty())
-    ret = MemoryCardImage::ImportCard(data, filename_str.c_str(), std::move(import_data_vec));
-
-  ReleaseMemoryCardData(env, obj, data);
-  return ret;
-}
\ No newline at end of file
diff --git a/android/app/src/cpp/android_host_interface.h b/android/app/src/cpp/android_host_interface.h
deleted file mode 100644
index 99f91b5f2..000000000
--- a/android/app/src/cpp/android_host_interface.h
+++ /dev/null
@@ -1,171 +0,0 @@
-#pragma once
-#include "android_settings_interface.h"
-#include "common/byte_stream.h"
-#include "common/event.h"
-#include "common/progress_callback.h"
-#include "core/host_display.h"
-#include "frontend-common/common_host_interface.h"
-#include <array>
-#include <atomic>
-#include <condition_variable>
-#include <functional>
-#include <jni.h>
-#include <memory>
-#include <string>
-#include <thread>
-
-struct ANativeWindow;
-
-class Controller;
-
-class AndroidHostInterface final : public CommonHostInterface
-{
-public:
-  using CommonHostInterface::UpdateInputMap;
-
-  AndroidHostInterface(jobject java_object, jobject context_object, std::string user_directory);
-  ~AndroidHostInterface() override;
-
-  ALWAYS_INLINE ANativeWindow* GetSurface() const { return m_surface; }
-
-  bool Initialize() override;
-  void Shutdown() override;
-
-  const char* GetFrontendName() const override;
-  void RequestExit() override;
-  void RunLater(std::function<void()> func) override;
-
-  void ReportError(const char* message) override;
-  void ReportMessage(const char* message) override;
-
-  std::unique_ptr<ByteStream> OpenPackageFile(const char* path, u32 flags) override;
-
-  bool IsEmulationThreadRunning() const { return m_emulation_thread_running.load(); }
-  bool IsEmulationThreadPaused() const;
-  bool IsOnEmulationThread() const;
-  void RunOnEmulationThread(std::function<void()> function, bool blocking = false);
-  void PauseEmulationThread(bool paused);
-  void StopEmulationThreadLoop();
-
-  void EmulationThreadEntryPoint(JNIEnv* env, jobject emulation_activity, SystemBootParameters boot_params,
-                                 bool resume_state);
-
-  void SurfaceChanged(ANativeWindow* surface, int format, int width, int height);
-  void SetDisplayAlignment(HostDisplay::Alignment alignment);
-
-  void SetControllerButtonState(u32 index, s32 button_code, bool pressed);
-  void SetControllerAxisState(u32 index, s32 button_code, float value);
-  void HandleControllerButtonEvent(u32 controller_index, u32 button_index, bool pressed);
-  void HandleControllerAxisEvent(u32 controller_index, u32 axis_index, float value);
-  bool HasControllerButtonBinding(u32 controller_index, u32 button);
-  void SetControllerVibration(u32 controller_index, float small_motor, float large_motor);
-  void SetFastForwardEnabled(bool enabled);
-
-  void RefreshGameList(bool invalidate_cache, bool invalidate_database, ProgressCallback* progress_callback);
-
-  bool ImportPatchCodesFromString(const std::string& str);
-
-  jobjectArray GetInputProfileNames(JNIEnv* env) const;
-
-protected:
-  void SetUserDirectory() override;
-  void RegisterHotkeys() override;
-
-  bool AcquireHostDisplay() override;
-  void ReleaseHostDisplay() override;
-  std::unique_ptr<AudioStream> CreateAudioStream(AudioBackend backend) override;
-  void UpdateControllerInterface() override;
-
-  void OnSystemPaused(bool paused) override;
-  void OnSystemDestroyed() override;
-  void OnRunningGameChanged(const std::string& path, CDImage* image, const std::string& game_code,
-                            const std::string& game_title) override;
-
-private:
-  void EmulationThreadLoop(JNIEnv* env);
-
-  void LoadSettings(SettingsInterface& si) override;
-  void UpdateInputMap(SettingsInterface& si) override;
-  void SetVibration(bool enabled);
-  void UpdateVibration();
-  float GetRefreshRate() const;
-  float GetSurfaceScale(int width, int height) const;
-
-  jobject m_java_object = {};
-  jobject m_emulation_activity_object = {};
-
-  ANativeWindow* m_surface = nullptr;
-
-  std::mutex m_mutex;
-  std::condition_variable m_sleep_cv;
-  std::deque<std::function<void()>> m_callback_queue;
-  std::atomic_bool m_callbacks_outstanding{false};
-
-  std::atomic_bool m_emulation_thread_stop_request{false};
-  std::atomic_bool m_emulation_thread_running{false};
-  std::thread::id m_emulation_thread_id{};
-
-  HostDisplay::Alignment m_display_alignment = HostDisplay::Alignment::Center;
-
-  u64 m_last_vibration_update_time = 0;
-  bool m_last_vibration_state = false;
-  bool m_vibration_enabled = false;
-};
-
-namespace AndroidHelpers {
-
-JavaVM* GetJavaVM();
-JNIEnv* GetJNIEnv();
-AndroidHostInterface* GetNativeClass(JNIEnv* env, jobject obj);
-std::string JStringToString(JNIEnv* env, jstring str);
-std::unique_ptr<GrowableMemoryByteStream> ReadInputStreamToMemory(JNIEnv* env, jobject obj, u32 chunk_size = 65536);
-jclass GetStringClass();
-std::vector<u8> ByteArrayToVector(JNIEnv* env, jbyteArray obj);
-jbyteArray NewByteArray(JNIEnv* env, const void* data, size_t size);
-jbyteArray VectorToByteArray(JNIEnv* env, const std::vector<u8>& data);
-jobjectArray CreateObjectArray(JNIEnv* env, jclass object_class, const jobject* objects, size_t num_objects,
-                               bool release_refs = false);
-} // namespace AndroidHelpers
-
-template<typename T>
-class LocalRefHolder
-{
-public:
-  LocalRefHolder() : m_env(nullptr), m_object(nullptr) {}
-
-  LocalRefHolder(JNIEnv* env, T object) : m_env(env), m_object(object) {}
-
-  LocalRefHolder(const LocalRefHolder<T>&) = delete;
-  LocalRefHolder(LocalRefHolder&& move) : m_env(move.m_env), m_object(move.m_object)
-  {
-    move.m_env = nullptr;
-    move.m_object = {};
-  }
-
-  ~LocalRefHolder()
-  {
-    if (m_object)
-      m_env->DeleteLocalRef(m_object);
-  }
-
-  operator T() const { return m_object; }
-  T operator*() const { return m_object; }
-
-  LocalRefHolder& operator=(const LocalRefHolder&) = delete;
-  LocalRefHolder& operator=(LocalRefHolder&& move)
-  {
-    if (m_object)
-      m_env->DeleteLocalRef(m_object);
-    m_env = move.m_env;
-    m_object = move.m_object;
-    move.m_env = nullptr;
-    move.m_object = {};
-    return *this;
-  }
-
-  T Get() const { return m_object; }
-
-private:
-  JNIEnv* m_env;
-  T m_object;
-};
diff --git a/android/app/src/cpp/android_http_downloader.cpp b/android/app/src/cpp/android_http_downloader.cpp
deleted file mode 100644
index d1f462641..000000000
--- a/android/app/src/cpp/android_http_downloader.cpp
+++ /dev/null
@@ -1,167 +0,0 @@
-#include "android_http_downloader.h"
-#include "android_host_interface.h"
-#include "common/assert.h"
-#include "common/log.h"
-#include "common/string_util.h"
-#include "common/timer.h"
-#include <algorithm>
-#include <functional>
-Log_SetChannel(AndroidHTTPDownloader);
-
-namespace FrontendCommon {
-
-AndroidHTTPDownloader::AndroidHTTPDownloader() : HTTPDownloader() {}
-
-AndroidHTTPDownloader::~AndroidHTTPDownloader()
-{
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  if (m_URLDownloader_class)
-    env->DeleteGlobalRef(m_URLDownloader_class);
-}
-
-std::unique_ptr<HTTPDownloader> HTTPDownloader::Create(const char* user_agent)
-{
-  std::unique_ptr<AndroidHTTPDownloader> instance(std::make_unique<AndroidHTTPDownloader>());
-  if (!instance->Initialize(user_agent))
-    return {};
-
-  return instance;
-}
-
-bool AndroidHTTPDownloader::Initialize(const char* user_agent)
-{
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  jclass klass = env->FindClass("com/github/stenzek/duckstation/URLDownloader");
-  if (!klass)
-    return false;
-
-  m_URLDownloader_class = static_cast<jclass>(env->NewGlobalRef(klass));
-  if (!m_URLDownloader_class)
-    return false;
-
-  m_URLDownloader_constructor = env->GetMethodID(klass, "<init>", "(Ljava/lang/String;)V");
-  m_URLDownloader_get = env->GetMethodID(klass, "get", "(Ljava/lang/String;)Z");
-  m_URLDownloader_post = env->GetMethodID(klass, "post", "(Ljava/lang/String;[B)Z");
-  m_URLDownloader_getStatusCode = env->GetMethodID(klass, "getStatusCode", "()I");
-  m_URLDownloader_getData = env->GetMethodID(klass, "getData", "()[B");
-  if (!m_URLDownloader_constructor || !m_URLDownloader_get || !m_URLDownloader_post || !m_URLDownloader_getStatusCode ||
-      !m_URLDownloader_getData)
-  {
-    return false;
-  }
-
-  m_user_agent = user_agent;
-  m_thread_pool = std::make_unique<cb::ThreadPool>(m_max_active_requests);
-  return true;
-}
-
-void AndroidHTTPDownloader::ProcessRequest(Request* req)
-{
-  std::unique_lock<std::mutex> cancel_lock(m_cancel_mutex);
-  if (req->closed.load())
-    return;
-
-  cancel_lock.unlock();
-  req->status_code = -1;
-  req->start_time = Common::Timer::GetValue();
-
-  // TODO: Move to Java side...
-  JNIEnv* env;
-  if (AndroidHelpers::GetJavaVM()->AttachCurrentThread(&env, nullptr) == JNI_OK)
-  {
-    jstring url_string = env->NewStringUTF(req->url.c_str());
-    jstring user_agent_string = env->NewStringUTF(m_user_agent.c_str());
-
-    jobject obj = env->NewObject(m_URLDownloader_class, m_URLDownloader_constructor, user_agent_string);
-    jboolean result;
-    if (req->post_data.empty())
-    {
-      result = env->CallBooleanMethod(obj, m_URLDownloader_get, url_string);
-    }
-    else
-    {
-      jbyteArray post_data = env->NewByteArray(static_cast<jsize>(req->post_data.size()));
-      env->SetByteArrayRegion(post_data, 0, static_cast<jsize>(req->post_data.size()),
-                              reinterpret_cast<const jbyte*>(req->post_data.data()));
-      result = env->CallBooleanMethod(obj, m_URLDownloader_post, url_string, post_data);
-      env->DeleteLocalRef(post_data);
-    }
-
-    env->DeleteLocalRef(url_string);
-    env->DeleteLocalRef(user_agent_string);
-
-    if (result)
-    {
-      req->status_code = env->CallIntMethod(obj, m_URLDownloader_getStatusCode);
-
-      jbyteArray data = reinterpret_cast<jbyteArray>(env->CallObjectMethod(obj, m_URLDownloader_getData));
-      if (data)
-      {
-        const u32 size = static_cast<u32>(env->GetArrayLength(data));
-        req->data.resize(size);
-        if (size > 0)
-        {
-          jbyte* data_ptr = env->GetByteArrayElements(data, nullptr);
-          std::memcpy(req->data.data(), data_ptr, size);
-          env->ReleaseByteArrayElements(data, data_ptr, 0);
-        }
-
-        env->DeleteLocalRef(data);
-      }
-
-      Log_DevPrintf("Request for '%s' returned status code %d and %zu bytes", req->url.c_str(), req->status_code,
-                    req->data.size());
-    }
-    else
-    {
-      Log_ErrorPrintf("Request for '%s' failed", req->url.c_str());
-    }
-
-    env->DeleteLocalRef(obj);
-    AndroidHelpers::GetJavaVM()->DetachCurrentThread();
-  }
-  else
-  {
-    Log_ErrorPrintf("AttachCurrentThread() failed");
-  }
-
-  cancel_lock.lock();
-  req->state = Request::State::Complete;
-  if (req->closed.load())
-    delete req;
-  else
-    req->closed.store(true);
-}
-
-HTTPDownloader::Request* AndroidHTTPDownloader::InternalCreateRequest()
-{
-  Request* req = new Request();
-  return req;
-}
-
-void AndroidHTTPDownloader::InternalPollRequests()
-{
-  // noop - uses thread pool
-}
-
-bool AndroidHTTPDownloader::StartRequest(HTTPDownloader::Request* request)
-{
-  Request* req = static_cast<Request*>(request);
-  Log_DevPrintf("Started HTTP request for '%s'", req->url.c_str());
-  req->state = Request::State::Started;
-  req->start_time = Common::Timer::GetValue();
-  m_thread_pool->Schedule(std::bind(&AndroidHTTPDownloader::ProcessRequest, this, req));
-  return true;
-}
-
-void AndroidHTTPDownloader::CloseRequest(HTTPDownloader::Request* request)
-{
-  std::unique_lock<std::mutex> cancel_lock(m_cancel_mutex);
-  Request* req = static_cast<Request*>(request);
-  if (req->closed.load())
-    delete req;
-  else
-    req->closed.store(true);
-}
-
-} // namespace FrontendCommon
diff --git a/android/app/src/cpp/android_http_downloader.h b/android/app/src/cpp/android_http_downloader.h
deleted file mode 100644
index b5774846b..000000000
--- a/android/app/src/cpp/android_http_downloader.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#pragma once
-#include "common/thirdparty/thread_pool.h"
-#include "frontend-common/http_downloader.h"
-#include <atomic>
-#include <jni.h>
-#include <memory>
-#include <mutex>
-
-namespace FrontendCommon {
-
-class AndroidHTTPDownloader final : public HTTPDownloader
-{
-public:
-  AndroidHTTPDownloader();
-  ~AndroidHTTPDownloader() override;
-
-  bool Initialize(const char* user_agent);
-
-protected:
-  Request* InternalCreateRequest() override;
-  void InternalPollRequests() override;
-  bool StartRequest(HTTPDownloader::Request* request) override;
-  void CloseRequest(HTTPDownloader::Request* request) override;
-
-private:
-  struct Request : HTTPDownloader::Request
-  {
-    std::atomic_bool closed{false};
-  };
-
-  void ProcessRequest(Request* req);
-
-  std::string m_user_agent;
-  std::unique_ptr<cb::ThreadPool> m_thread_pool;
-  std::mutex m_cancel_mutex;
-
-  jclass m_URLDownloader_class = nullptr;
-  jmethodID m_URLDownloader_constructor = nullptr;
-  jmethodID m_URLDownloader_get = nullptr;
-  jmethodID m_URLDownloader_post = nullptr;
-  jmethodID m_URLDownloader_getStatusCode = nullptr;
-  jmethodID m_URLDownloader_getData = nullptr;
-};
-
-} // namespace FrontendCommon
diff --git a/android/app/src/cpp/android_progress_callback.cpp b/android/app/src/cpp/android_progress_callback.cpp
deleted file mode 100644
index a25d02624..000000000
--- a/android/app/src/cpp/android_progress_callback.cpp
+++ /dev/null
@@ -1,113 +0,0 @@
-#include "android_progress_callback.h"
-#include "android_host_interface.h"
-#include "common/assert.h"
-#include "common/log.h"
-Log_SetChannel(AndroidProgressCallback);
-
-AndroidProgressCallback::AndroidProgressCallback(JNIEnv* env, jobject java_object) : m_java_object(java_object)
-{
-  jclass cls = env->GetObjectClass(java_object);
-  m_set_title_method = env->GetMethodID(cls, "setTitle", "(Ljava/lang/String;)V");
-  m_set_status_text_method = env->GetMethodID(cls, "setStatusText", "(Ljava/lang/String;)V");
-  m_set_progress_range_method = env->GetMethodID(cls, "setProgressRange", "(I)V");
-  m_set_progress_value_method = env->GetMethodID(cls, "setProgressValue", "(I)V");
-  m_modal_error_method = env->GetMethodID(cls, "modalError", "(Ljava/lang/String;)V");
-  m_modal_information_method = env->GetMethodID(cls, "modalInformation", "(Ljava/lang/String;)V");
-  m_modal_confirmation_method = env->GetMethodID(cls, "modalConfirmation", "(Ljava/lang/String;)Z");
-  Assert(m_set_status_text_method && m_set_progress_range_method && m_set_progress_value_method &&
-         m_modal_error_method && m_modal_information_method && m_modal_confirmation_method);
-}
-
-AndroidProgressCallback::~AndroidProgressCallback() = default;
-
-bool AndroidProgressCallback::IsCancelled() const
-{
-  return false;
-}
-
-void AndroidProgressCallback::SetCancellable(bool cancellable)
-{
-  if (m_cancellable == cancellable)
-    return;
-
-  BaseProgressCallback::SetCancellable(cancellable);
-}
-
-void AndroidProgressCallback::SetTitle(const char* title)
-{
-  Assert(title);
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> text_jstr(env, env->NewStringUTF(title));
-  env->CallVoidMethod(m_java_object, m_set_title_method, text_jstr.Get());
-}
-
-void AndroidProgressCallback::SetStatusText(const char* text)
-{
-  Assert(text);
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> text_jstr(env, env->NewStringUTF(text));
-  env->CallVoidMethod(m_java_object, m_set_status_text_method, text_jstr.Get());
-}
-
-void AndroidProgressCallback::SetProgressRange(u32 range)
-{
-  BaseProgressCallback::SetProgressRange(range);
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  env->CallVoidMethod(m_java_object, m_set_progress_range_method, static_cast<jint>(range));
-}
-
-void AndroidProgressCallback::SetProgressValue(u32 value)
-{
-  const u32 old_value = m_progress_value;
-  BaseProgressCallback::SetProgressValue(value);
-  if (old_value == m_progress_value)
-    return;
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  env->CallVoidMethod(m_java_object, m_set_progress_value_method, static_cast<jint>(value));
-}
-
-void AndroidProgressCallback::DisplayError(const char* message)
-{
-  Log_ErrorPrintf("%s", message);
-}
-
-void AndroidProgressCallback::DisplayWarning(const char* message)
-{
-  Log_WarningPrintf("%s", message);
-}
-
-void AndroidProgressCallback::DisplayInformation(const char* message)
-{
-  Log_InfoPrintf("%s", message);
-}
-
-void AndroidProgressCallback::DisplayDebugMessage(const char* message)
-{
-  Log_DevPrintf("%s", message);
-}
-
-void AndroidProgressCallback::ModalError(const char* message)
-{
-  Assert(message);
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> message_jstr(env, env->NewStringUTF(message));
-  env->CallVoidMethod(m_java_object, m_modal_error_method, message_jstr.Get());
-}
-
-bool AndroidProgressCallback::ModalConfirmation(const char* message)
-{
-  Assert(message);
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> message_jstr(env, env->NewStringUTF(message));
-  return env->CallBooleanMethod(m_java_object, m_modal_confirmation_method, message_jstr.Get());
-}
-
-void AndroidProgressCallback::ModalInformation(const char* message)
-{
-  Assert(message);
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> message_jstr(env, env->NewStringUTF(message));
-  env->CallVoidMethod(m_java_object, m_modal_information_method, message_jstr.Get());
-}
diff --git a/android/app/src/cpp/android_progress_callback.h b/android/app/src/cpp/android_progress_callback.h
deleted file mode 100644
index 8b15bca18..000000000
--- a/android/app/src/cpp/android_progress_callback.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#pragma once
-#include "common/progress_callback.h"
-#include <jni.h>
-
-class AndroidProgressCallback final : public BaseProgressCallback
-{
-public:
-  AndroidProgressCallback(JNIEnv* env, jobject java_object);
-  ~AndroidProgressCallback();
-
-  bool IsCancelled() const override;
-
-  void SetCancellable(bool cancellable) override;
-  void SetTitle(const char* title) override;
-  void SetStatusText(const char* text) override;
-  void SetProgressRange(u32 range) override;
-  void SetProgressValue(u32 value) override;
-
-  void DisplayError(const char* message) override;
-  void DisplayWarning(const char* message) override;
-  void DisplayInformation(const char* message) override;
-  void DisplayDebugMessage(const char* message) override;
-
-  void ModalError(const char* message) override;
-  bool ModalConfirmation(const char* message) override;
-  void ModalInformation(const char* message) override;
-
-private:
-  jobject m_java_object;
-
-  jmethodID m_set_title_method;
-  jmethodID m_set_status_text_method;
-  jmethodID m_set_progress_range_method;
-  jmethodID m_set_progress_value_method;
-  jmethodID m_modal_error_method;
-  jmethodID m_modal_confirmation_method;
-  jmethodID m_modal_information_method;
-};
diff --git a/android/app/src/cpp/android_settings_interface.cpp b/android/app/src/cpp/android_settings_interface.cpp
deleted file mode 100644
index 52af477c8..000000000
--- a/android/app/src/cpp/android_settings_interface.cpp
+++ /dev/null
@@ -1,425 +0,0 @@
-#include "android_settings_interface.h"
-#include "android_host_interface.h"
-#include "common/assert.h"
-#include "common/log.h"
-#include "common/string.h"
-#include "common/string_util.h"
-#include <algorithm>
-Log_SetChannel(AndroidSettingsInterface);
-
-ALWAYS_INLINE TinyString GetSettingKey(const char* section, const char* key)
-{
-  return TinyString::FromFormat("%s/%s", section, key);
-}
-
-AndroidSettingsInterface::AndroidSettingsInterface(jobject java_context)
-{
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  jclass c_preference_manager = env->FindClass("androidx/preference/PreferenceManager");
-  jclass c_preference_editor = env->FindClass("android/content/SharedPreferences$Editor");
-  jclass c_set = env->FindClass("java/util/Set");
-  jclass c_helper = env->FindClass("com/github/stenzek/duckstation/PreferenceHelpers");
-  jmethodID m_get_default_shared_preferences =
-    env->GetStaticMethodID(c_preference_manager, "getDefaultSharedPreferences",
-                           "(Landroid/content/Context;)Landroid/content/SharedPreferences;");
-  Assert(c_preference_manager && c_preference_editor && c_set && c_helper && m_get_default_shared_preferences);
-  m_set_class = reinterpret_cast<jclass>(env->NewGlobalRef(c_set));
-  m_shared_preferences_editor_class = reinterpret_cast<jclass>(env->NewGlobalRef(c_preference_editor));
-  m_helper_class = reinterpret_cast<jclass>(env->NewGlobalRef(c_helper));
-  Assert(m_set_class && m_shared_preferences_editor_class && m_helper_class);
-
-  env->DeleteLocalRef(c_set);
-  env->DeleteLocalRef(c_preference_editor);
-  env->DeleteLocalRef(c_helper);
-
-  jobject shared_preferences =
-    env->CallStaticObjectMethod(c_preference_manager, m_get_default_shared_preferences, java_context);
-  Assert(shared_preferences);
-  m_java_shared_preferences = env->NewGlobalRef(shared_preferences);
-  Assert(m_java_shared_preferences);
-  env->DeleteLocalRef(c_preference_manager);
-  env->DeleteLocalRef(shared_preferences);
-
-  jclass c_shared_preferences = env->GetObjectClass(m_java_shared_preferences);
-  m_shared_preferences_class = reinterpret_cast<jclass>(env->NewGlobalRef(c_shared_preferences));
-  Assert(m_shared_preferences_class);
-  env->DeleteLocalRef(c_shared_preferences);
-
-  m_get_boolean = env->GetMethodID(m_shared_preferences_class, "getBoolean", "(Ljava/lang/String;Z)Z");
-  m_get_int = env->GetMethodID(m_shared_preferences_class, "getInt", "(Ljava/lang/String;I)I");
-  m_get_float = env->GetMethodID(m_shared_preferences_class, "getFloat", "(Ljava/lang/String;F)F");
-  m_get_string = env->GetMethodID(m_shared_preferences_class, "getString",
-                                  "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
-  m_get_string_set =
-    env->GetMethodID(m_shared_preferences_class, "getStringSet", "(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set;");
-  m_set_to_array = env->GetMethodID(m_set_class, "toArray", "()[Ljava/lang/Object;");
-  Assert(m_get_boolean && m_get_int && m_get_float && m_get_string && m_get_string_set && m_set_to_array);
-
-  m_edit = env->GetMethodID(m_shared_preferences_class, "edit", "()Landroid/content/SharedPreferences$Editor;");
-  m_edit_set_string =
-    env->GetMethodID(m_shared_preferences_editor_class, "putString",
-                     "(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;");
-  m_edit_commit = env->GetMethodID(m_shared_preferences_editor_class, "commit", "()Z");
-  m_edit_remove = env->GetMethodID(m_shared_preferences_editor_class, "remove",
-                                   "(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;");
-  Assert(m_edit && m_edit_set_string && m_edit_commit && m_edit_remove);
-
-  m_helper_clear_section =
-    env->GetStaticMethodID(m_helper_class, "clearSection", "(Landroid/content/SharedPreferences;Ljava/lang/String;)V");
-  m_helper_add_to_string_list = env->GetStaticMethodID(
-    m_helper_class, "addToStringList", "(Landroid/content/SharedPreferences;Ljava/lang/String;Ljava/lang/String;)Z");
-  m_helper_remove_from_string_list =
-    env->GetStaticMethodID(m_helper_class, "removeFromStringList",
-                           "(Landroid/content/SharedPreferences;Ljava/lang/String;Ljava/lang/String;)Z");
-  m_helper_set_string_list = env->GetStaticMethodID(
-    m_helper_class, "setStringList", "(Landroid/content/SharedPreferences;Ljava/lang/String;[Ljava/lang/String;)V");
-  Assert(m_helper_clear_section && m_helper_add_to_string_list && m_helper_remove_from_string_list &&
-         m_helper_set_string_list);
-}
-
-AndroidSettingsInterface::~AndroidSettingsInterface()
-{
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  if (m_java_shared_preferences)
-    env->DeleteGlobalRef(m_java_shared_preferences);
-  if (m_shared_preferences_editor_class)
-    env->DeleteGlobalRef(m_shared_preferences_editor_class);
-  if (m_shared_preferences_class)
-    env->DeleteGlobalRef(m_shared_preferences_class);
-  if (m_set_class)
-    env->DeleteGlobalRef(m_set_class);
-  if (m_helper_class)
-    env->DeleteGlobalRef(m_helper_class);
-}
-
-bool AndroidSettingsInterface::Save()
-{
-  return true;
-}
-
-void AndroidSettingsInterface::Clear()
-{
-  Log_ErrorPrint("Not implemented");
-}
-
-int AndroidSettingsInterface::GetIntValue(const char* section, const char* key, int default_value /*= 0*/)
-{
-  // Some of these settings are string lists...
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jstring> default_value_string(env, env->NewStringUTF(TinyString::FromFormat("%d", default_value)));
-  LocalRefHolder<jstring> string_object(
-    env, reinterpret_cast<jstring>(env->CallObjectMethod(m_java_shared_preferences, m_get_string, key_string.Get(),
-                                                         default_value_string.Get())));
-  if (env->ExceptionCheck())
-  {
-    env->ExceptionClear();
-
-    // it might actually be an int (e.g. seek bar preference)
-    const int int_value =
-      static_cast<int>(env->CallIntMethod(m_java_shared_preferences, m_get_int, key_string.Get(), default_value));
-    if (env->ExceptionCheck())
-    {
-      env->ExceptionClear();
-      Log_DevPrintf("GetIntValue(%s, %s) -> %d (exception)", section, key, default_value);
-      return default_value;
-    }
-
-    Log_DevPrintf("GetIntValue(%s, %s) -> %d (int)", section, key, int_value);
-    return int_value;
-  }
-
-  if (!string_object)
-    return default_value;
-
-  const char* data = env->GetStringUTFChars(string_object, nullptr);
-  Assert(data != nullptr);
-  Log_DevPrintf("GetIntValue(%s, %s) -> %s", section, key, data);
-
-  std::optional<int> value = StringUtil::FromChars<int>(data);
-  env->ReleaseStringUTFChars(string_object, data);
-  return value.value_or(default_value);
-}
-
-float AndroidSettingsInterface::GetFloatValue(const char* section, const char* key, float default_value /*= 0.0f*/)
-{
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jstring> default_value_string(env, env->NewStringUTF(TinyString::FromFormat("%f", default_value)));
-  LocalRefHolder<jstring> string_object(
-    env, reinterpret_cast<jstring>(env->CallObjectMethod(m_java_shared_preferences, m_get_string, key_string.Get(),
-                                                         default_value_string.Get())));
-  if (env->ExceptionCheck())
-  {
-    env->ExceptionClear();
-    Log_DevPrintf("GetFloatValue(%s, %s) -> %f (exception)", section, key, default_value);
-    return default_value;
-  }
-
-  if (!string_object)
-  {
-    Log_DevPrintf("GetFloatValue(%s, %s) -> %f (null)", section, key, default_value);
-    return default_value;
-  }
-
-  const char* data = env->GetStringUTFChars(string_object, nullptr);
-  Assert(data != nullptr);
-  Log_DevPrintf("GetFloatValue(%s, %s) -> %s", section, key, data);
-
-  std::optional<float> value = StringUtil::FromChars<float>(data);
-  env->ReleaseStringUTFChars(string_object, data);
-  return value.value_or(default_value);
-}
-
-bool AndroidSettingsInterface::GetBoolValue(const char* section, const char* key, bool default_value /*= false*/)
-{
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  jboolean bool_value = static_cast<bool>(
-    env->CallBooleanMethod(m_java_shared_preferences, m_get_boolean, key_string.Get(), default_value));
-  if (env->ExceptionCheck())
-  {
-    Log_DevPrintf("GetBoolValue(%s, %s) -> %u (exception)", section, key, static_cast<unsigned>(default_value));
-    env->ExceptionClear();
-    return default_value;
-  }
-
-  Log_DevPrintf("GetBoolValue(%s, %s) -> %u", section, key, static_cast<unsigned>(bool_value));
-  return bool_value;
-}
-
-std::string AndroidSettingsInterface::GetStringValue(const char* section, const char* key,
-                                                     const char* default_value /*= ""*/)
-{
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jstring> default_value_string(env, env->NewStringUTF(default_value));
-  LocalRefHolder<jstring> string_object(
-    env, reinterpret_cast<jstring>(env->CallObjectMethod(m_java_shared_preferences, m_get_string, key_string.Get(),
-                                                         default_value_string.Get())));
-
-  if (env->ExceptionCheck())
-  {
-    env->ExceptionClear();
-    Log_DevPrintf("GetStringValue(%s, %s) -> %s (exception)", section, key, default_value);
-    return default_value;
-  }
-
-  if (!string_object)
-  {
-    Log_DevPrintf("GetStringValue(%s, %s) -> %s (null)", section, key, default_value);
-    return default_value;
-  }
-
-  const std::string ret(AndroidHelpers::JStringToString(env, string_object));
-  Log_DevPrintf("GetStringValue(%s, %s) -> %s", section, key, ret.c_str());
-  return ret;
-}
-
-jobject AndroidSettingsInterface::GetPreferencesEditor(JNIEnv* env)
-{
-  return env->CallObjectMethod(m_java_shared_preferences, m_edit);
-}
-
-void AndroidSettingsInterface::CheckForException(JNIEnv* env, const char* task)
-{
-  if (!env->ExceptionCheck())
-    return;
-
-  Log_ErrorPrintf("JNI exception during %s", task);
-  env->ExceptionClear();
-}
-
-void AndroidSettingsInterface::SetIntValue(const char* section, const char* key, int value)
-{
-  Log_DevPrintf("SetIntValue(\"%s\", \"%s\", %d)", section, key, value);
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jobject> editor(env, GetPreferencesEditor(env));
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jstring> str_value(env, env->NewStringUTF(TinyString::FromFormat("%d", value)));
-
-  LocalRefHolder<jobject> dummy(env,
-                                env->CallObjectMethod(editor, m_edit_set_string, key_string.Get(), str_value.Get()));
-  env->CallBooleanMethod(editor, m_edit_commit);
-
-  CheckForException(env, "SetIntValue");
-}
-
-void AndroidSettingsInterface::SetFloatValue(const char* section, const char* key, float value)
-{
-  Log_DevPrintf("SetFloatValue(\"%s\", \"%s\", %f)", section, key, value);
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jobject> editor(env, GetPreferencesEditor(env));
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jstring> str_value(env, env->NewStringUTF(TinyString::FromFormat("%f", value)));
-
-  LocalRefHolder<jobject> dummy(env,
-                                env->CallObjectMethod(editor, m_edit_set_string, key_string.Get(), str_value.Get()));
-  env->CallBooleanMethod(editor, m_edit_commit);
-
-  CheckForException(env, "SetFloatValue");
-}
-
-void AndroidSettingsInterface::SetBoolValue(const char* section, const char* key, bool value)
-{
-  Log_DevPrintf("SetBoolValue(\"%s\", \"%s\", %u)", section, key, static_cast<unsigned>(value));
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jobject> editor(env, GetPreferencesEditor(env));
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jstring> str_value(env, env->NewStringUTF(value ? "true" : "false"));
-
-  LocalRefHolder<jobject> dummy(env,
-                                env->CallObjectMethod(editor, m_edit_set_string, key_string.Get(), str_value.Get()));
-  env->CallBooleanMethod(editor, m_edit_commit);
-
-  CheckForException(env, "SetBoolValue");
-}
-
-void AndroidSettingsInterface::SetStringValue(const char* section, const char* key, const char* value)
-{
-  Log_DevPrintf("SetStringValue(\"%s\", \"%s\", \"%s\")", section, key, value);
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jobject> editor(env, GetPreferencesEditor(env));
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jstring> str_value(env, env->NewStringUTF(value));
-
-  LocalRefHolder<jobject> dummy(env,
-                                env->CallObjectMethod(editor, m_edit_set_string, key_string.Get(), str_value.Get()));
-  env->CallBooleanMethod(editor, m_edit_commit);
-
-  CheckForException(env, "SetStringValue");
-}
-
-void AndroidSettingsInterface::DeleteValue(const char* section, const char* key)
-{
-  Log_DevPrintf("DeleteValue(\"%s\", \"%s\")", section, key);
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jobject> editor(env, GetPreferencesEditor(env));
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jobject> dummy(env, env->CallObjectMethod(editor, m_edit_remove, key_string.Get()));
-  env->CallBooleanMethod(editor, m_edit_commit);
-
-  CheckForException(env, "DeleteValue");
-}
-
-void AndroidSettingsInterface::ClearSection(const char* section)
-{
-  Log_DevPrintf("ClearSection(\"%s\")", section);
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> str_section(env, env->NewStringUTF(section));
-  env->CallStaticVoidMethod(m_helper_class, m_helper_clear_section, m_java_shared_preferences, str_section.Get());
-
-  CheckForException(env, "ClearSection");
-}
-
-std::vector<std::string> AndroidSettingsInterface::GetStringList(const char* section, const char* key)
-{
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jobject> values_set(
-    env, env->CallObjectMethod(m_java_shared_preferences, m_get_string_set, key_string.Get(), nullptr));
-  if (env->ExceptionCheck())
-  {
-    env->ExceptionClear();
-
-    // this might just be a string, not a string set
-    LocalRefHolder<jstring> string_object(env, reinterpret_cast<jstring>(env->CallObjectMethod(
-                                                 m_java_shared_preferences, m_get_string, key_string.Get(), nullptr)));
-
-    if (!env->ExceptionCheck())
-    {
-      std::vector<std::string> ret;
-      if (string_object)
-        ret.push_back(AndroidHelpers::JStringToString(env, string_object));
-
-      return ret;
-    }
-
-    env->ExceptionClear();
-    return {};
-  }
-
-  if (!values_set)
-    return {};
-
-  LocalRefHolder<jobjectArray> values_array(
-    env, reinterpret_cast<jobjectArray>(env->CallObjectMethod(values_set, m_set_to_array)));
-  if (env->ExceptionCheck())
-  {
-    env->ExceptionClear();
-    return {};
-  }
-
-  if (!values_array)
-    return {};
-
-  jsize size = env->GetArrayLength(values_array);
-  std::vector<std::string> values;
-  values.reserve(size);
-  for (jsize i = 0; i < size; i++)
-  {
-    jstring str = reinterpret_cast<jstring>(env->GetObjectArrayElement(values_array, i));
-    values.push_back(AndroidHelpers::JStringToString(env, str));
-    env->DeleteLocalRef(str);
-  }
-
-  return values;
-}
-
-void AndroidSettingsInterface::SetStringList(const char* section, const char* key,
-                                             const std::vector<std::string>& items)
-{
-  Log_DevPrintf("SetStringList(\"%s\", \"%s\")", section, key);
-  if (items.empty())
-  {
-    DeleteValue(section, key);
-    return;
-  }
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jobjectArray> items_array(
-    env, env->NewObjectArray(static_cast<jsize>(items.size()), AndroidHelpers::GetStringClass(), nullptr));
-  for (size_t i = 0; i < items.size(); i++)
-  {
-    LocalRefHolder<jstring> item_jstr(env, env->NewStringUTF(items[i].c_str()));
-    env->SetObjectArrayElement(items_array, static_cast<jsize>(i), item_jstr);
-  }
-
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  env->CallStaticVoidMethod(m_helper_class, m_helper_set_string_list, m_java_shared_preferences, key_string.Get(),
-                            items_array.Get());
-
-  CheckForException(env, "SetStringList");
-}
-
-bool AndroidSettingsInterface::RemoveFromStringList(const char* section, const char* key, const char* item)
-{
-  Log_DevPrintf("RemoveFromStringList(\"%s\", \"%s\", \"%s\")", section, key, item);
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jstring> item_string(env, env->NewStringUTF(item));
-  const bool result = env->CallStaticBooleanMethod(m_helper_class, m_helper_remove_from_string_list,
-                                                   m_java_shared_preferences, key_string.Get(), item_string.Get());
-  CheckForException(env, "RemoveFromStringList");
-  return result;
-}
-
-bool AndroidSettingsInterface::AddToStringList(const char* section, const char* key, const char* item)
-{
-  Log_DevPrintf("AddToStringList(\"%s\", \"%s\", \"%s\")", section, key, item);
-
-  JNIEnv* env = AndroidHelpers::GetJNIEnv();
-  LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
-  LocalRefHolder<jstring> item_string(env, env->NewStringUTF(item));
-  const bool result = env->CallStaticBooleanMethod(m_helper_class, m_helper_add_to_string_list,
-                                                   m_java_shared_preferences, key_string.Get(), item_string.Get());
-  CheckForException(env, "AddToStringList");
-  return result;
-}
diff --git a/android/app/src/cpp/android_settings_interface.h b/android/app/src/cpp/android_settings_interface.h
deleted file mode 100644
index 542a2f90e..000000000
--- a/android/app/src/cpp/android_settings_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#pragma once
-#include "core/settings.h"
-#include <jni.h>
-
-class AndroidSettingsInterface : public SettingsInterface
-{
-public:
-  AndroidSettingsInterface(jobject java_context);
-  ~AndroidSettingsInterface();
-
-  bool Save() override;
-  void Clear() override;
-
-  int GetIntValue(const char* section, const char* key, int default_value = 0) override;
-  float GetFloatValue(const char* section, const char* key, float default_value = 0.0f) override;
-  bool GetBoolValue(const char* section, const char* key, bool default_value = false) override;
-  std::string GetStringValue(const char* section, const char* key, const char* default_value = "") override;
-
-  void SetIntValue(const char* section, const char* key, int value) override;
-  void SetFloatValue(const char* section, const char* key, float value) override;
-  void SetBoolValue(const char* section, const char* key, bool value) override;
-  void SetStringValue(const char* section, const char* key, const char* value) override;
-  void DeleteValue(const char* section, const char* key) override;
-  void ClearSection(const char* section) override;
-
-  std::vector<std::string> GetStringList(const char* section, const char* key) override;
-  void SetStringList(const char* section, const char* key, const std::vector<std::string>& items) override;
-  bool RemoveFromStringList(const char* section, const char* key, const char* item) override;
-  bool AddToStringList(const char* section, const char* key, const char* item) override;
-
-private:
-  jobject GetPreferencesEditor(JNIEnv* env);
-  void CheckForException(JNIEnv* env, const char* task);
-
-  jclass m_set_class{};
-  jclass m_shared_preferences_class{};
-  jclass m_shared_preferences_editor_class{};
-  jclass m_helper_class{};
-  jobject m_java_shared_preferences{};
-  jmethodID m_get_boolean{};
-  jmethodID m_get_int{};
-  jmethodID m_get_float{};
-  jmethodID m_get_string{};
-  jmethodID m_get_string_set{};
-  jmethodID m_edit{};
-  jmethodID m_edit_set_string{};
-  jmethodID m_edit_commit{};
-  jmethodID m_edit_remove{};
-  jmethodID m_set_to_array{};
-  jmethodID m_helper_clear_section{};
-  jmethodID m_helper_add_to_string_list{};
-  jmethodID m_helper_remove_from_string_list{};
-  jmethodID m_helper_set_string_list{};
-};
diff --git a/android/app/src/cpp/opensles_audio_stream.cpp b/android/app/src/cpp/opensles_audio_stream.cpp
deleted file mode 100644
index 70f2c207c..000000000
--- a/android/app/src/cpp/opensles_audio_stream.cpp
+++ /dev/null
@@ -1,210 +0,0 @@
-#include "opensles_audio_stream.h"
-#include "common/assert.h"
-#include "common/log.h"
-#include <cmath>
-Log_SetChannel(OpenSLESAudioStream);
-
-// Based off Dolphin's OpenSLESStream class.
-
-OpenSLESAudioStream::OpenSLESAudioStream() = default;
-
-OpenSLESAudioStream::~OpenSLESAudioStream()
-{
-  if (IsOpen())
-    OpenSLESAudioStream::CloseDevice();
-}
-
-std::unique_ptr<AudioStream> OpenSLESAudioStream::Create()
-{
-  return std::make_unique<OpenSLESAudioStream>();
-}
-
-bool OpenSLESAudioStream::OpenDevice()
-{
-  DebugAssert(!IsOpen());
-
-  SLresult res = slCreateEngine(&m_engine, 0, nullptr, 0, nullptr, nullptr);
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("slCreateEngine failed: %d", res);
-    return false;
-  }
-
-  res = (*m_engine)->Realize(m_engine, SL_BOOLEAN_FALSE);
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("Realize(Engine) failed: %d", res);
-    CloseDevice();
-    return false;
-  }
-
-  res = (*m_engine)->GetInterface(m_engine, SL_IID_ENGINE, &m_engine_engine);
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("GetInterface(SL_IID_ENGINE) failed: %d", res);
-    CloseDevice();
-    return false;
-  }
-
-  res = (*m_engine_engine)->CreateOutputMix(m_engine_engine, &m_output_mix, 0, 0, 0);
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("CreateOutputMix failed: %d", res);
-    CloseDevice();
-    return false;
-  }
-
-  res = (*m_output_mix)->Realize(m_output_mix, SL_BOOLEAN_FALSE);
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("Realize(OutputMix) mix failed: %d", res);
-    CloseDevice();
-    return false;
-  }
-
-  SLDataLocator_AndroidSimpleBufferQueue dloc_bq{SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, NUM_BUFFERS};
-  SLDataFormat_PCM format = {SL_DATAFORMAT_PCM,
-                             m_channels,
-                             m_output_sample_rate * 1000u,
-                             SL_PCMSAMPLEFORMAT_FIXED_16,
-                             SL_PCMSAMPLEFORMAT_FIXED_16,
-                             SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT,
-                             SL_BYTEORDER_LITTLEENDIAN};
-  SLDataSource dsrc{&dloc_bq, &format};
-  SLDataLocator_OutputMix dloc_outputmix{SL_DATALOCATOR_OUTPUTMIX, m_output_mix};
-  SLDataSink dsink{&dloc_outputmix, nullptr};
-
-  const std::array<SLInterfaceID, 2> ap_interfaces = {{SL_IID_BUFFERQUEUE, SL_IID_VOLUME}};
-  const std::array<SLboolean, 2> ap_interfaces_req = {{true, true}};
-  res = (*m_engine_engine)
-          ->CreateAudioPlayer(m_engine_engine, &m_player, &dsrc, &dsink, static_cast<u32>(ap_interfaces.size()),
-                              ap_interfaces.data(), ap_interfaces_req.data());
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("CreateAudioPlayer failed: %d", res);
-    CloseDevice();
-    return false;
-  }
-
-  res = (*m_player)->Realize(m_player, SL_BOOLEAN_FALSE);
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("Realize(AudioPlayer) failed: %d", res);
-    CloseDevice();
-    return false;
-  }
-
-  res = (*m_player)->GetInterface(m_player, SL_IID_PLAY, &m_play_interface);
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("GetInterface(SL_IID_PLAY) failed: %d", res);
-    CloseDevice();
-    return false;
-  }
-
-  res = (*m_player)->GetInterface(m_player, SL_IID_BUFFERQUEUE, &m_buffer_queue_interface);
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("GetInterface(SL_IID_BUFFERQUEUE) failed: %d", res);
-    CloseDevice();
-    return false;
-  }
-
-  res = (*m_player)->GetInterface(m_player, SL_IID_VOLUME, &m_volume_interface);
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("GetInterface(SL_IID_VOLUME) failed: %d", res);
-    CloseDevice();
-    return false;
-  }
-
-  res = (*m_buffer_queue_interface)->RegisterCallback(m_buffer_queue_interface, BufferCallback, this);
-  if (res != SL_RESULT_SUCCESS)
-  {
-    Log_ErrorPrintf("Failed to register callback: %d", res);
-    CloseDevice();
-    return false;
-  }
-
-  for (u32 i = 0; i < NUM_BUFFERS; i++)
-    m_buffers[i] = std::make_unique<SampleType[]>(m_buffer_size * m_channels);
-
-  Log_InfoPrintf("OpenSL ES device opened: %uhz, %u channels, %u buffer size, %u buffers", m_output_sample_rate,
-                 m_channels, m_buffer_size, NUM_BUFFERS);
-  return true;
-}
-
-void OpenSLESAudioStream::PauseDevice(bool paused)
-{
-  if (m_paused == paused)
-    return;
-
-  SLresult res =
-    (*m_play_interface)->SetPlayState(m_play_interface, paused ? SL_PLAYSTATE_PAUSED : SL_PLAYSTATE_PLAYING);
-  if (res != SL_RESULT_SUCCESS)
-    Log_ErrorPrintf("SetPlayState failed: %d", res);
-
-  if (!paused && !m_buffer_enqueued)
-  {
-    m_buffer_enqueued = true;
-    EnqueueBuffer();
-  }
-
-  m_paused = paused;
-}
-
-void OpenSLESAudioStream::CloseDevice()
-{
-  m_buffers = {};
-  m_current_buffer = 0;
-  m_paused = true;
-  m_buffer_enqueued = false;
-
-  if (m_player)
-  {
-    (*m_player)->Destroy(m_player);
-    m_volume_interface = {};
-    m_buffer_queue_interface = {};
-    m_play_interface = {};
-    m_player = {};
-  }
-  if (m_output_mix)
-  {
-    (*m_output_mix)->Destroy(m_output_mix);
-    m_output_mix = {};
-  }
-  (*m_engine)->Destroy(m_engine);
-  m_engine_engine = {};
-  m_engine = {};
-}
-
-void OpenSLESAudioStream::SetOutputVolume(u32 volume)
-{
-  const SLmillibel attenuation = (volume == 0) ?
-                                   SL_MILLIBEL_MIN :
-                                   static_cast<SLmillibel>(2000.0f * std::log10(static_cast<float>(volume) / 100.0f));
-  SLresult res = (*m_volume_interface)->SetVolumeLevel(m_volume_interface, attenuation);
-  if (res != SL_RESULT_SUCCESS)
-    Log_ErrorPrintf("SetVolumeLevel failed: %d", res);
-}
-
-void OpenSLESAudioStream::EnqueueBuffer()
-{
-  SampleType* samples = m_buffers[m_current_buffer].get();
-  ReadFrames(samples, m_buffer_size, false);
-
-  SLresult res = (*m_buffer_queue_interface)
-                   ->Enqueue(m_buffer_queue_interface, samples, m_buffer_size * m_channels * sizeof(SampleType));
-  if (res != SL_RESULT_SUCCESS)
-    Log_ErrorPrintf("Enqueue buffer failed: %d", res);
-
-  m_current_buffer = (m_current_buffer + 1) % NUM_BUFFERS;
-}
-
-void OpenSLESAudioStream::BufferCallback(SLAndroidSimpleBufferQueueItf buffer_queue, void* context)
-{
-  OpenSLESAudioStream* const this_ptr = static_cast<OpenSLESAudioStream*>(context);
-  this_ptr->EnqueueBuffer();
-}
-
-void OpenSLESAudioStream::FramesAvailable() {}
diff --git a/android/app/src/cpp/opensles_audio_stream.h b/android/app/src/cpp/opensles_audio_stream.h
deleted file mode 100644
index 83c54aa6e..000000000
--- a/android/app/src/cpp/opensles_audio_stream.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#pragma once
-#include "common/audio_stream.h"
-#include <SLES/OpenSLES.h>
-#include <SLES/OpenSLES_Android.h>
-#include <array>
-#include <memory>
-
-class OpenSLESAudioStream final : public AudioStream
-{
-public:
-  OpenSLESAudioStream();
-  ~OpenSLESAudioStream();
-
-  static std::unique_ptr<AudioStream> Create();
-
-  void SetOutputVolume(u32 volume) override;
-
-protected:
-  enum : u32
-  {
-    NUM_BUFFERS = 2
-  };
-
-  ALWAYS_INLINE bool IsOpen() const { return (m_engine != nullptr); }
-
-  bool OpenDevice() override;
-  void PauseDevice(bool paused) override;
-  void CloseDevice() override;
-  void FramesAvailable() override;
-
-  void EnqueueBuffer();
-
-  static void BufferCallback(SLAndroidSimpleBufferQueueItf buffer_queue, void* context);
-
-  SLObjectItf m_engine{};
-  SLEngineItf m_engine_engine{};
-  SLObjectItf m_output_mix{};
-
-  SLObjectItf m_player{};
-  SLPlayItf m_play_interface{};
-  SLAndroidSimpleBufferQueueItf m_buffer_queue_interface{};
-  SLVolumeItf m_volume_interface{};
-
-  std::array<std::unique_ptr<SampleType[]>, NUM_BUFFERS> m_buffers;
-  u32 m_current_buffer = 0;
-  bool m_paused = true;
-  bool m_buffer_enqueued = false;
-};
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index d1181b437..000000000
--- a/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.github.stenzek.duckstation">
-
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.VIBRATE" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.INTERNET" />
-
-    <application
-        android:allowBackup="true"
-        android:icon="@mipmap/ic_launcher"
-        android:label="@string/app_name"
-        android:networkSecurityConfig="@xml/network_security_config"
-        android:requestLegacyExternalStorage="true"
-        android:roundIcon="@mipmap/ic_launcher_round"
-        android:supportsRtl="true"
-        android:theme="@style/AppTheme"
-        android:usesCleartextTraffic="true">
-        <activity
-            android:name=".MemoryCardEditorActivity"
-            android:label="@string/title_activity_memory_card_editor"
-            android:theme="@style/AppTheme.NoActionBar"></activity>
-        <activity
-            android:name=".GameDirectoriesActivity"
-            android:label="@string/title_activity_game_directories"
-            android:theme="@style/AppTheme.NoActionBar" />
-        <activity
-            android:name=".EmulationActivity"
-            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
-            android:exported="true"
-            android:immersive="true"
-            android:label="@string/title_activity_emulation"
-            android:parentActivityName=".MainActivity"
-            android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
-            <meta-data
-                android:name="android.support.PARENT_ACTIVITY"
-                android:value="com.github.stenzek.duckstation.MainActivity" />
-        </activity>
-        <activity
-            android:name=".SettingsActivity"
-            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
-            android:label="@string/title_activity_settings"
-            android:parentActivityName=".MainActivity">
-            <meta-data
-                android:name="android.support.PARENT_ACTIVITY"
-                android:value="com.github.stenzek.duckstation.MainActivity" />
-        </activity>
-        <activity
-            android:name=".ControllerSettingsActivity"
-            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
-            android:label="@string/controller_mapping_activity_title"
-            android:parentActivityName=".MainActivity">
-            <meta-data
-                android:name="android.support.PARENT_ACTIVITY"
-                android:value="com.github.stenzek.duckstation.MainActivity" />
-        </activity>
-        <activity
-            android:name=".GamePropertiesActivity"
-            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
-            android:label="@string/activity_game_properties"
-            android:parentActivityName=".MainActivity">
-            <meta-data
-                android:name="android.support.PARENT_ACTIVITY"
-                android:value="com.github.stenzek.duckstation.MainActivity" />
-        </activity>
-        <activity
-            android:name=".MainActivity"
-            android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
-            android:label="@string/app_name"
-            android:theme="@style/AppTheme.NoActionBar">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-
-</manifest>
\ No newline at end of file
diff --git a/android/app/src/main/ic_launcher-web.png b/android/app/src/main/ic_launcher-web.png
deleted file mode 100644
index 353ac1fe71e8fc6bc0b90ba1004a311f77a1ccc1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 38012
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

diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/Achievement.java b/android/app/src/main/java/com/github/stenzek/duckstation/Achievement.java
deleted file mode 100644
index ee4477c83..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/Achievement.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-
-import androidx.preference.PreferenceManager;
-
-public final class Achievement {
-    public static final int CATEGORY_LOCAL = 0;
-    public static final int CATEGORY_CORE = 3;
-    public static final int CATEGORY_UNOFFICIAL = 5;
-
-    private final int id;
-    private final String name;
-    private final String description;
-    private final String lockedBadgePath;
-    private final String unlockedBadgePath;
-    private final int points;
-    private final boolean locked;
-
-    public Achievement(int id, String name, String description, String lockedBadgePath,
-                       String unlockedBadgePath, int points, boolean locked) {
-        this.id = id;
-        this.name = name;
-        this.description = description;
-        this.lockedBadgePath = lockedBadgePath;
-        this.unlockedBadgePath = unlockedBadgePath;
-        this.points = points;
-        this.locked = locked;
-    }
-
-    /**
-     * Returns true if challenge mode will be enabled when a game is started.
-     * Does not depend on the emulation running.
-     *
-     * @param context context to pull settings from
-     * @return true if challenge mode will be used, false otherwise
-     */
-    public static boolean willChallengeModeBeEnabled(Context context) {
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        return prefs.getBoolean("Cheevos/Enabled", false) &&
-               prefs.getBoolean("Cheevos/ChallengeMode", false);
-    }
-
-    public int getId() {
-        return id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public String getLockedBadgePath() {
-        return lockedBadgePath;
-    }
-
-    public String getUnlockedBadgePath() {
-        return unlockedBadgePath;
-    }
-
-    public int getPoints() {
-        return points;
-    }
-
-    public boolean isLocked() {
-        return locked;
-    }
-
-    public String getBadgePath() {
-        return locked ? lockedBadgePath : unlockedBadgePath;
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/AchievementListFragment.java b/android/app/src/main/java/com/github/stenzek/duckstation/AchievementListFragment.java
deleted file mode 100644
index 04b229ad4..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/AchievementListFragment.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.res.Configuration;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.util.DisplayMetrics;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-public class AchievementListFragment extends DialogFragment {
-
-    private RecyclerView mRecyclerView;
-    private AchievementListFragment.ViewAdapter mAdapter;
-    private final Achievement[] mAchievements;
-    private DialogInterface.OnDismissListener mOnDismissListener;
-
-    public AchievementListFragment(Achievement[] achievements) {
-        mAchievements = achievements;
-        sortAchievements();
-    }
-
-    public void setOnDismissListener(DialogInterface.OnDismissListener l) {
-        mOnDismissListener = l;
-    }
-
-    @Override
-    public void onDismiss(@NonNull DialogInterface dialog) {
-        if (mOnDismissListener != null)
-            mOnDismissListener.onDismiss(dialog);
-
-        super.onDismiss(dialog);
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-
-        if (getDialog() == null)
-            return;
-
-        final boolean isLandscape = (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE);
-        final float scale = (float) getContext().getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT;
-        final int width = Math.round((isLandscape ? 700.0f : 400.0f) * scale);
-        final int height = Math.round((isLandscape ? 400.0f : 700.0f) * scale);
-        getDialog().getWindow().setLayout(width, height);
-    }
-
-    @Nullable
-    @Override
-    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        return inflater.inflate(R.layout.fragment_achievement_list, container, false);
-    }
-
-    @Override
-    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        mAdapter = new AchievementListFragment.ViewAdapter(getContext(), mAchievements);
-
-        mRecyclerView = view.findViewById(R.id.recyclerView);
-        mRecyclerView.setAdapter(mAdapter);
-        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-        mRecyclerView.addItemDecoration(new DividerItemDecoration(mRecyclerView.getContext(),
-                DividerItemDecoration.VERTICAL));
-
-        fillHeading(view);
-    }
-
-    private void fillHeading(@NonNull View view) {
-        final AndroidHostInterface hi = AndroidHostInterface.getInstance();
-        final String gameTitle = hi.getCheevoGameTitle();
-        if (gameTitle != null) {
-            final String formattedTitle = hi.isCheevosChallengeModeActive() ?
-                    String.format(getString(R.string.achievement_title_challenge_mode_format_string), gameTitle) :
-                    gameTitle;
-            ((TextView) view.findViewById(R.id.title)).setText(formattedTitle);
-        }
-
-        final int cheevoCount = hi.getCheevoCount();
-        final int unlockedCheevoCount = hi.getUnlockedCheevoCount();
-        final String summary = String.format(getString(R.string.achievement_summary_format_string),
-                unlockedCheevoCount, cheevoCount, hi.getCheevoPointsForGame(), hi.getCheevoMaximumPointsForGame());
-        ((TextView) view.findViewById(R.id.summary)).setText(summary);
-
-        ProgressBar pb = ((ProgressBar) view.findViewById(R.id.progressBar));
-        pb.setMax(cheevoCount);
-        pb.setProgress(unlockedCheevoCount);
-
-        final ImageView icon = ((ImageView) view.findViewById(R.id.icon));
-        final String badgePath = hi.getCheevoGameIconPath();
-        if (badgePath != null) {
-            new ImageLoadTask(icon).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, badgePath);
-        }
-    }
-
-    private void sortAchievements() {
-        Arrays.sort(mAchievements, (o1, o2) -> {
-            if (o2.isLocked() && !o1.isLocked())
-                return -1;
-            else if (o1.isLocked() && !o2.isLocked())
-                return 1;
-
-            return o1.getName().compareTo(o2.getName());
-        });
-    }
-
-    private static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
-        private final View mItemView;
-
-        public ViewHolder(@NonNull View itemView) {
-            super(itemView);
-            mItemView = itemView;
-            mItemView.setOnClickListener(this);
-            mItemView.setOnLongClickListener(this);
-        }
-
-        public void bindToEntry(Achievement cheevo) {
-            ImageView icon = ((ImageView) mItemView.findViewById(R.id.icon));
-            icon.setImageDrawable(mItemView.getContext().getDrawable(R.drawable.ic_baseline_lock_24));
-
-            final String badgePath = cheevo.getBadgePath();
-            if (badgePath != null) {
-                new ImageLoadTask(icon).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, badgePath);
-            }
-
-            ((TextView) mItemView.findViewById(R.id.title)).setText(cheevo.getName());
-            ((TextView) mItemView.findViewById(R.id.description)).setText(cheevo.getDescription());
-
-            ((ImageView) mItemView.findViewById(R.id.locked_icon)).setImageDrawable(
-                    mItemView.getContext().getDrawable(cheevo.isLocked() ? R.drawable.ic_baseline_lock_24 : R.drawable.ic_baseline_lock_open_24));
-
-            final String pointsString = String.format(mItemView.getContext().getString(R.string.achievement_points_format_string), cheevo.getPoints());
-            ((TextView) mItemView.findViewById(R.id.points)).setText(pointsString);
-        }
-
-        @Override
-        public void onClick(View v) {
-            //
-        }
-
-        @Override
-        public boolean onLongClick(View v) {
-            return false;
-        }
-    }
-
-    private static class ViewAdapter extends RecyclerView.Adapter<AchievementListFragment.ViewHolder> {
-        private final LayoutInflater mInflater;
-        private final Achievement[] mAchievements;
-
-        public ViewAdapter(@NonNull Context context, Achievement[] achievements) {
-            mInflater = LayoutInflater.from(context);
-            mAchievements = achievements;
-        }
-
-        @NonNull
-        @Override
-        public AchievementListFragment.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-            return new AchievementListFragment.ViewHolder(mInflater.inflate(R.layout.layout_achievement_entry, parent, false));
-        }
-
-        @Override
-        public void onBindViewHolder(@NonNull AchievementListFragment.ViewHolder holder, int position) {
-            holder.bindToEntry(mAchievements[position]);
-        }
-
-        @Override
-        public int getItemCount() {
-            return (mAchievements != null) ? mAchievements.length : 0;
-        }
-
-        @Override
-        public int getItemViewType(int position) {
-            return R.layout.layout_game_list_entry;
-        }
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/AchievementSettingsFragment.java b/android/app/src/main/java/com/github/stenzek/duckstation/AchievementSettingsFragment.java
deleted file mode 100644
index 0b4c1a149..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/AchievementSettingsFragment.java
+++ /dev/null
@@ -1,266 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.PreferenceScreen;
-
-import java.net.URLEncoder;
-import java.text.DateFormat;
-import java.util.Date;
-import java.util.Locale;
-
-public class AchievementSettingsFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceClickListener {
-    private static final String REGISTER_URL = "http://retroachievements.org/createaccount.php";
-    private static final String PROFILE_URL_PREFIX = "https://retroachievements.org/user/";
-
-    private boolean isLoggedIn = false;
-    private String username;
-    private String loginTokenTime;
-
-    public AchievementSettingsFragment() {
-    }
-
-    @Override
-    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-        setPreferencesFromResource(R.xml.achievement_preferences, rootKey);
-        updateViews();
-    }
-
-    private void updateViews() {
-        final SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
-
-        username = prefs.getString("Cheevos/Username", "");
-        isLoggedIn = (username != null && !username.isEmpty());
-        if (isLoggedIn) {
-            try {
-                final String loginTokenTimeString = prefs.getString("Cheevos/LoginTimestamp", "");
-                final long loginUnixTimestamp = Long.parseLong(loginTokenTimeString);
-
-                // TODO: Extract to a helper function.
-                final Date date = new Date(loginUnixTimestamp * 1000);
-                final DateFormat format = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT, Locale.getDefault());
-                loginTokenTime = format.format(date);
-            } catch (Exception e) {
-                loginTokenTime = null;
-            }
-        }
-
-        final PreferenceScreen preferenceScreen = getPreferenceScreen();
-
-        Preference preference = preferenceScreen.findPreference("Cheevos/ChallengeMode");
-        if (preference != null) {
-            // toggling this is disabled while it's running to avoid the whole power off thing
-            preference.setEnabled(!AndroidHostInterface.getInstance().isEmulationThreadRunning());
-        }
-
-        preference = preferenceScreen.findPreference("Cheevos/Login");
-        if (preference != null)
-        {
-            preference.setVisible(!isLoggedIn);
-            preference.setOnPreferenceClickListener(this);
-        }
-
-        preference = preferenceScreen.findPreference("Cheevos/Register");
-        if (preference != null)
-        {
-            preference.setVisible(!isLoggedIn);
-            preference.setOnPreferenceClickListener(this);
-        }
-
-        preference = preferenceScreen.findPreference("Cheevos/Logout");
-        if (preference != null)
-        {
-            preference.setVisible(isLoggedIn);
-            preference.setOnPreferenceClickListener(this);
-        }
-
-        preference = preferenceScreen.findPreference("Cheevos/Username");
-        if (preference != null)
-        {
-            preference.setVisible(isLoggedIn);
-            preference.setSummary((username != null) ? username : "");
-        }
-
-        preference = preferenceScreen.findPreference("Cheevos/LoginTokenTime");
-        if (preference != null)
-        {
-            preference.setVisible(isLoggedIn);
-            preference.setSummary((loginTokenTime != null) ? loginTokenTime : "");
-        }
-
-        preference = preferenceScreen.findPreference("Cheevos/ViewProfile");
-        if (preference != null)
-        {
-            preference.setVisible(isLoggedIn);
-            preference.setOnPreferenceClickListener(this);
-        }
-    }
-
-    @Override
-    public boolean onPreferenceClick(Preference preference) {
-        final String key = preference.getKey();
-        if (key == null)
-            return false;
-
-        switch (key)
-        {
-            case "Cheevos/Login":
-            {
-                handleLogin();
-                return true;
-            }
-
-            case "Cheevos/Logout":
-            {
-                handleLogout();
-                return true;
-            }
-
-            case "Cheevos/Register":
-            {
-                openUrl(REGISTER_URL);
-                return true;
-            }
-
-            case "Cheevos/ViewProfile":
-            {
-                final String profileUrl = getProfileUrl(username);
-                if (profileUrl != null)
-                    openUrl(profileUrl);
-
-                return true;
-            }
-
-            default:
-                return false;
-        }
-    }
-
-    private void openUrl(String url) {
-        final Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
-        startActivity(browserIntent);
-    }
-
-    private void handleLogin() {
-        LoginDialogFragment loginDialog = new LoginDialogFragment(this);
-        loginDialog.show(getFragmentManager(), "fragment_achievement_login");
-    }
-
-    private void handleLogout() {
-        final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
-        builder.setTitle(R.string.settings_achievements_confirm_logout_title);
-        builder.setMessage(R.string.settings_achievements_confirm_logout_message);
-        builder.setPositiveButton(R.string.settings_achievements_logout, (dialog, which) -> {
-                    AndroidHostInterface.getInstance().cheevosLogout();
-                    updateViews();
-        });
-        builder.setNegativeButton(R.string.achievement_settings_login_cancel_button, (dialog, which) -> dialog.dismiss());
-        builder.create().show();
-    }
-
-    private static String getProfileUrl(String username) {
-        try {
-            final String encodedUsername = URLEncoder.encode(username, "UTF-8");
-            return PROFILE_URL_PREFIX + encodedUsername;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    public static class LoginDialogFragment extends DialogFragment {
-        private AchievementSettingsFragment mParent;
-
-        public LoginDialogFragment(AchievementSettingsFragment parent) {
-            mParent = parent;
-        }
-
-        @Nullable
-        @Override
-        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-            return inflater.inflate(R.layout.fragment_achievements_login, container, false);
-        }
-
-        @Override
-        public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
-            super.onViewCreated(view, savedInstanceState);
-
-            ((Button)view.findViewById(R.id.login)).setOnClickListener((View.OnClickListener) v -> doLogin());
-            ((Button)view.findViewById(R.id.cancel)).setOnClickListener((View.OnClickListener) v -> dismiss());
-        }
-
-        private static class LoginTask extends AsyncTask<Void, Void, Void> {
-            private LoginDialogFragment mParent;
-            private String mUsername;
-            private String mPassword;
-            private boolean mResult;
-
-            public LoginTask(LoginDialogFragment parent, String username, String password) {
-                mParent = parent;
-                mUsername = username;
-                mPassword = password;
-            }
-
-            @Override
-            protected Void doInBackground(Void... voids) {
-                final Activity activity = mParent.getActivity();
-                if (activity == null)
-                    return null;
-
-                mResult = AndroidHostInterface.getInstance().cheevosLogin(mUsername, mPassword);
-
-                activity.runOnUiThread(() -> {
-                    if (!mResult) {
-                        ((TextView) mParent.getView().findViewById(R.id.error)).setText(R.string.achievement_settings_login_failed);
-                        mParent.enableUi(true);
-                        return;
-                    }
-
-                    mParent.mParent.updateViews();
-                    mParent.dismiss();
-                });
-
-                return null;
-            }
-        }
-
-        private void doLogin() {
-            final View rootView = getView();
-            final String username = ((EditText)rootView.findViewById(R.id.username)).getText().toString();
-            final String password = ((EditText)rootView.findViewById(R.id.password)).getText().toString();
-            if (username == null || username.length() == 0 || password == null || password.length() == 0)
-                return;
-
-            enableUi(false);
-            ((TextView)rootView.findViewById(R.id.error)).setText("");
-            new LoginDialogFragment.LoginTask(this, username, password).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-        }
-
-        private void enableUi(boolean enabled) {
-            final View rootView = getView();
-            ((EditText)rootView.findViewById(R.id.username)).setEnabled(enabled);
-            ((EditText)rootView.findViewById(R.id.password)).setEnabled(enabled);
-            ((Button)rootView.findViewById(R.id.login)).setEnabled(enabled);
-            ((Button)rootView.findViewById(R.id.cancel)).setEnabled(enabled);
-            ((ProgressBar)rootView.findViewById(R.id.progressBar)).setVisibility(enabled ? View.GONE : View.VISIBLE);
-        }
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/AndroidHostInterface.java b/android/app/src/main/java/com/github/stenzek/duckstation/AndroidHostInterface.java
deleted file mode 100644
index 48d70f7d3..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/AndroidHostInterface.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.res.AssetManager;
-import android.os.Environment;
-import android.os.Process;
-import android.util.Log;
-import android.view.Surface;
-import android.widget.Toast;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Locale;
-
-public class AndroidHostInterface {
-    public final static int DISPLAY_ALIGNMENT_TOP_OR_LEFT = 0;
-    public final static int DISPLAY_ALIGNMENT_CENTER = 1;
-    public final static int DISPLAY_ALIGNMENT_RIGHT_OR_BOTTOM = 2;
-
-    public final static int CONTROLLER_AXIS_TYPE_FULL = 0;
-    public final static int CONTROLLER_AXIS_TYPE_HALF = 1;
-
-    private long mNativePointer;
-    private Context mContext;
-    private FileHelper mFileHelper;
-    private EmulationActivity mEmulationActivity;
-
-    public AndroidHostInterface(Context context, FileHelper fileHelper) {
-        this.mContext = context;
-        this.mFileHelper = fileHelper;
-    }
-
-    public void reportError(String message) {
-        Toast.makeText(mContext, message, Toast.LENGTH_LONG).show();
-    }
-
-    public void reportMessage(String message) {
-        Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
-    }
-
-    public InputStream openAssetStream(String path) {
-        try {
-            return mContext.getAssets().open(path, AssetManager.ACCESS_STREAMING);
-        } catch (IOException e) {
-            return null;
-        }
-    }
-
-    public void setContext(Context context) {
-        mContext = context;
-    }
-
-    public EmulationActivity getEmulationActivity() { return mEmulationActivity; }
-
-    static public native String getScmVersion();
-
-    static public native String getFullScmVersion();
-
-    static public native boolean setThreadAffinity(int[] cpus);
-
-    static public native AndroidHostInterface create(Context context, FileHelper fileHelper, String userDirectory);
-
-    public native boolean isEmulationThreadRunning();
-
-    public native boolean runEmulationThread(EmulationActivity emulationActivity, String filename, boolean resumeState, String state_filename);
-
-    public native boolean isEmulationThreadPaused();
-
-    public native void pauseEmulationThread(boolean paused);
-
-    public native void stopEmulationThreadLoop();
-
-    public native boolean hasSurface();
-
-    public native void surfaceChanged(Surface surface, int format, int width, int height);
-
-    public native void setControllerButtonState(int index, int buttonCode, boolean pressed);
-
-    public native void setControllerAxisState(int index, int axisCode, float value);
-
-    public native void setControllerAutoFireState(int controllerIndex, int autoFireIndex, boolean active);
-
-    public native void setMousePosition(int positionX, int positionY);
-
-    public static native int getControllerButtonCode(String controllerType, String buttonName);
-
-    public static native int getControllerAxisCode(String controllerType, String axisName);
-
-    public static native int getControllerAxisType(String controllerType, String axisName);
-
-    public static native String[] getControllerButtonNames(String controllerType);
-
-    public static native String[] getControllerAxisNames(String controllerType);
-
-    public static native int getControllerVibrationMotorCount(String controllerType);
-
-    public native void handleControllerButtonEvent(int controllerIndex, int buttonIndex, boolean pressed);
-
-    public native void handleControllerAxisEvent(int controllerIndex, int axisIndex, float value);
-
-    public native boolean hasControllerButtonBinding(int controllerIndex, int buttonIndex);
-
-    public native void toggleControllerAnalogMode();
-
-    public native String[] getInputProfileNames();
-
-    public native boolean loadInputProfile(String name);
-
-    public native boolean saveInputProfile(String name);
-
-    public native HotkeyInfo[] getHotkeyInfoList();
-
-    public native void refreshGameList(boolean invalidateCache, boolean invalidateDatabase, AndroidProgressCallback progressCallback);
-
-    public native GameListEntry[] getGameListEntries();
-
-    public native GameListEntry getGameListEntry(String path);
-
-    public native String getGameSettingValue(String path, String key);
-
-    public native void setGameSettingValue(String path, String key, String value);
-
-    public native void resetSystem();
-
-    public native void loadState(boolean global, int slot);
-
-    public native void saveState(boolean global, int slot);
-
-    public native void saveResumeState(boolean waitForCompletion);
-
-    public native void applySettings();
-    public native void updateInputMap();
-
-    public native void setDisplayAlignment(int alignment);
-
-    public native PatchCode[] getPatchCodeList();
-
-    public native void setPatchCodeEnabled(int index, boolean enabled);
-
-    public native boolean importPatchCodesFromString(String str);
-
-    public native void addOSDMessage(String message, float duration);
-
-    public native boolean hasAnyBIOSImages();
-
-    public native String importBIOSImage(byte[] data);
-
-    public native boolean isFastForwardEnabled();
-
-    public native void setFastForwardEnabled(boolean enabled);
-
-    public native boolean hasMediaSubImages();
-
-    public native String[] getMediaSubImageTitles();
-
-    public native int getMediaSubImageIndex();
-
-    public native boolean switchMediaSubImage(int index);
-
-    public native boolean setMediaFilename(String filename);
-
-    public native SaveStateInfo[] getSaveStateInfo(boolean includeEmpty);
-
-    public native void setFullscreenUINotificationVerticalPosition(float position, float direction);
-
-    public native boolean isCheevosActive();
-    public native boolean isCheevosChallengeModeActive();
-    public native Achievement[] getCheevoList();
-    public native int getCheevoCount();
-    public native int getUnlockedCheevoCount();
-    public native int getCheevoPointsForGame();
-    public native int getCheevoMaximumPointsForGame();
-    public native String getCheevoGameTitle();
-    public native String getCheevoGameIconPath();
-    public native boolean cheevosLogin(String username, String password);
-    public native void cheevosLogout();
-
-    static {
-        System.loadLibrary("duckstation-native");
-    }
-
-    static private AndroidHostInterface mInstance;
-    static private String mUserDirectory;
-
-    static public boolean createInstance(Context context) {
-        // Set user path.
-        mUserDirectory = Environment.getExternalStorageDirectory().getAbsolutePath();
-        if (mUserDirectory.isEmpty())
-            mUserDirectory = "/sdcard";
-
-        mUserDirectory += "/duckstation";
-        Log.i("AndroidHostInterface", "User directory: " + mUserDirectory);
-        mInstance = create(context, new FileHelper(context), mUserDirectory);
-        return mInstance != null;
-    }
-
-    static public boolean hasInstance() {
-        return mInstance != null;
-    }
-
-    static public AndroidHostInterface getInstance() {
-        return mInstance;
-    }
-
-    static public String getUserDirectory() { return mUserDirectory; }
-
-    static public boolean hasInstanceAndEmulationThreadIsRunning() {
-        return hasInstance() && getInstance().isEmulationThreadRunning();
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/AndroidProgressCallback.java b/android/app/src/main/java/com/github/stenzek/duckstation/AndroidProgressCallback.java
deleted file mode 100644
index a77b9b3b9..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/AndroidProgressCallback.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.app.Activity;
-import android.app.ProgressDialog;
-
-import androidx.appcompat.app.AlertDialog;
-
-public class AndroidProgressCallback {
-    private Activity mContext;
-    private ProgressDialog mDialog;
-
-    public AndroidProgressCallback(Activity context) {
-        mContext = context;
-        mDialog = new ProgressDialog(context);
-        mDialog.setCancelable(false);
-        mDialog.setCanceledOnTouchOutside(false);
-        mDialog.setMessage(context.getString(R.string.android_progress_callback_please_wait));
-        mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
-        mDialog.setIndeterminate(false);
-        mDialog.setMax(100);
-        mDialog.setProgress(0);
-        mDialog.show();
-    }
-
-    public void dismiss() {
-        mDialog.dismiss();
-    }
-
-    public void setTitle(String text) {
-        mContext.runOnUiThread(() -> {
-            mDialog.setTitle(text);
-        });
-    }
-
-    public void setStatusText(String text) {
-        mContext.runOnUiThread(() -> {
-            mDialog.setMessage(text);
-        });
-    }
-
-    public void setProgressRange(int range) {
-        mContext.runOnUiThread(() -> {
-            mDialog.setMax(range);
-        });
-    }
-
-    public void setProgressValue(int value) {
-        mContext.runOnUiThread(() -> {
-            mDialog.setProgress(value);
-        });
-    }
-
-    public void modalError(String message) {
-        Object lock = new Object();
-        mContext.runOnUiThread(() -> {
-            new AlertDialog.Builder(mContext)
-                    .setTitle("Error")
-                    .setMessage(message)
-                    .setPositiveButton(mContext.getString(R.string.android_progress_callback_ok), (dialog, button) -> {
-                        dialog.dismiss();
-                    })
-                    .setOnDismissListener((dialogInterface) -> {
-                        synchronized (lock) {
-                            lock.notify();
-                        }
-                    })
-                    .create()
-                    .show();
-        });
-
-        synchronized (lock) {
-            try {
-                lock.wait();
-            } catch (InterruptedException e) {
-            }
-        }
-    }
-
-    public void modalInformation(String message) {
-        Object lock = new Object();
-        mContext.runOnUiThread(() -> {
-            new AlertDialog.Builder(mContext)
-                    .setTitle(mContext.getString(R.string.android_progress_callback_information))
-                    .setMessage(message)
-                    .setPositiveButton(mContext.getString(R.string.android_progress_callback_ok), (dialog, button) -> {
-                        dialog.dismiss();
-                    })
-                    .setOnDismissListener((dialogInterface) -> {
-                        synchronized (lock) {
-                            lock.notify();
-                        }
-                    })
-                    .create()
-                    .show();
-        });
-
-        synchronized (lock) {
-            try {
-                lock.wait();
-            } catch (InterruptedException e) {
-            }
-        }
-    }
-
-    private class ConfirmationResult {
-        public boolean result = false;
-    }
-
-    public boolean modalConfirmation(String message) {
-        ConfirmationResult result = new ConfirmationResult();
-        mContext.runOnUiThread(() -> {
-            new AlertDialog.Builder(mContext)
-                    .setTitle(mContext.getString(R.string.android_progress_callback_confirmation))
-                    .setMessage(message)
-                    .setPositiveButton(mContext.getString(R.string.android_progress_callback_yes), (dialog, button) -> {
-                        result.result = true;
-                        dialog.dismiss();
-                    })
-                    .setNegativeButton(mContext.getString(R.string.android_progress_callback_no), (dialog, button) -> {
-                        result.result = false;
-                        dialog.dismiss();
-                    })
-                    .setOnDismissListener((dialogInterface) -> {
-                        synchronized (result) {
-                            result.notify();
-                        }
-                    })
-                    .create()
-                    .show();
-        });
-
-        synchronized (result) {
-            try {
-                result.wait();
-            } catch (InterruptedException e) {
-            }
-        }
-
-        return result.result;
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/ConsoleRegion.java b/android/app/src/main/java/com/github/stenzek/duckstation/ConsoleRegion.java
deleted file mode 100644
index 0f56417a1..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/ConsoleRegion.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.github.stenzek.duckstation;
-
-public enum ConsoleRegion {
-    AutoDetect,
-    NTSC_J,
-    NTSC_U,
-    PAL
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerAutoMapper.java b/android/app/src/main/java/com/github/stenzek/duckstation/ControllerAutoMapper.java
deleted file mode 100644
index 175fb3cb3..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerAutoMapper.java
+++ /dev/null
@@ -1,295 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Vibrator;
-import android.text.InputType;
-import android.view.InputDevice;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.widget.EditText;
-import android.widget.TextView;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.preference.PreferenceManager;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ControllerAutoMapper {
-    public interface CompleteCallback {
-        public void onComplete();
-    }
-
-    private final Context context;
-    private final int port;
-    private final CompleteCallback completeCallback;
-
-    private InputDevice device;
-    private SharedPreferences prefs;
-    private SharedPreferences.Editor editor;
-    private StringBuilder log;
-    private String keyBase;
-    private String controllerType;
-
-    public ControllerAutoMapper(Context context, int port, CompleteCallback completeCallback) {
-        this.context = context;
-        this.port = port;
-        this.completeCallback = completeCallback;
-    }
-
-    private void log(String format, Object... args) {
-        log.append(String.format(format, args));
-        log.append('\n');
-    }
-
-    private void setButtonBindingToKeyCode(String buttonName, int keyCode) {
-        log("Binding button '%s' to key '%s' (%d)", buttonName, KeyEvent.keyCodeToString(keyCode), keyCode);
-
-        final String key = String.format("%sButton%s", keyBase, buttonName);
-        final String value = String.format("%s/Button%d", device.getDescriptor(), keyCode);
-        editor.putString(key, value);
-    }
-
-    private void setButtonBindingToAxis(String buttonName, int axis, int direction) {
-        final char directionIndicator = (direction < 0) ? '-' : '+';
-        log("Binding button '%s' to axis '%s' (%d) direction %c", buttonName, MotionEvent.axisToString(axis), axis, directionIndicator);
-
-        final String key = String.format("%sButton%s", keyBase, buttonName);
-        final String value = String.format("%s/%cAxis%d", device.getDescriptor(), directionIndicator, axis);
-        editor.putString(key, value);
-    }
-
-    private void setAxisBindingToAxis(String axisName, int axis) {
-        log("Binding axis '%s' to axis '%s' (%d)", axisName, MotionEvent.axisToString(axis), axis);
-
-        final String key = String.format("%sAxis%s", keyBase, axisName);
-        final String value = String.format("%s/Axis%d", device.getDescriptor(), axis);
-        editor.putString(key, value);
-    }
-
-    private void doAutoBindingButton(String buttonName, int[] keyCodes, int[][] axisCodes) {
-        // Prefer the axis codes, as it dispatches to that first.
-        if (axisCodes != null) {
-            final List<InputDevice.MotionRange> motionRangeList = device.getMotionRanges();
-            for (int[] axisAndDirection : axisCodes) {
-                final int axis = axisAndDirection[0];
-                final int direction = axisAndDirection[1];
-                for (InputDevice.MotionRange range : motionRangeList) {
-                    if (range.getAxis() == axis) {
-                        setButtonBindingToAxis(buttonName, axis, direction);
-                        return;
-                    }
-                }
-            }
-        }
-
-        if (keyCodes != null) {
-            final boolean[] keysPresent = device.hasKeys(keyCodes);
-            for (int i = 0; i < keysPresent.length; i++) {
-                if (keysPresent[i]) {
-                    setButtonBindingToKeyCode(buttonName, keyCodes[i]);
-                    return;
-                }
-            }
-        }
-
-        log("No automatic bindings found for button '%s'", buttonName);
-    }
-
-    private void doAutoBindingAxis(String axisName, int[] axisCodes) {
-        // Prefer the axis codes, as it dispatches to that first.
-        if (axisCodes != null) {
-            final List<InputDevice.MotionRange> motionRangeList = device.getMotionRanges();
-            for (final int axis : axisCodes) {
-                for (InputDevice.MotionRange range : motionRangeList) {
-                    if (range.getAxis() == axis) {
-                        setAxisBindingToAxis(axisName, axis);
-                        return;
-                    }
-                }
-            }
-        }
-
-        log.append(String.format("No automatic bindings found for axis '%s'\n", axisName));
-    }
-
-    public void start() {
-        final ArrayList<InputDevice> deviceList = new ArrayList<>();
-        for (final int deviceId : InputDevice.getDeviceIds()) {
-            final InputDevice inputDevice = InputDevice.getDevice(deviceId);
-            if (inputDevice == null || !EmulationSurfaceView.isBindableDevice(inputDevice) ||
-                    !EmulationSurfaceView.isGamepadDevice(inputDevice)) {
-                continue;
-            }
-
-            deviceList.add(inputDevice);
-        }
-
-        if (deviceList.isEmpty()) {
-            final AlertDialog.Builder builder = new AlertDialog.Builder(context);
-            builder.setTitle(R.string.main_activity_error);
-            builder.setMessage(R.string.controller_auto_mapping_no_devices);
-            builder.setPositiveButton(R.string.main_activity_ok, (dialog, which) -> dialog.dismiss());
-            builder.create().show();
-            return;
-        }
-
-        final String[] deviceNames = new String[deviceList.size()];
-        for (int i = 0; i < deviceList.size(); i++)
-            deviceNames[i] = deviceList.get(i).getName();
-
-        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
-        builder.setTitle(R.string.controller_auto_mapping_select_device);
-        builder.setItems(deviceNames, (dialog, which) -> {
-            process(deviceList.get(which));
-        });
-        builder.create().show();
-    }
-
-    private void process(InputDevice device) {
-        this.prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        this.editor = prefs.edit();
-        this.log = new StringBuilder();
-        this.device = device;
-
-        this.keyBase = String.format("Controller%d/", port);
-        this.controllerType = ControllerSettingsCollectionFragment.getControllerType(prefs, port);
-
-        setButtonBindings();
-        setAxisBindings();
-        setVibrationBinding();
-
-        this.editor.commit();
-        this.editor = null;
-
-        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
-        builder.setTitle(R.string.controller_auto_mapping_results);
-
-        final EditText editText = new EditText(context);
-        editText.setText(log.toString());
-        editText.setInputType(InputType.TYPE_NULL | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
-        editText.setSingleLine(false);
-        builder.setView(editText);
-
-        builder.setPositiveButton(R.string.main_activity_ok, (dialog, which) -> dialog.dismiss());
-        builder.create().show();
-
-        if (completeCallback != null)
-            completeCallback.onComplete();
-    }
-
-    private void setButtonBindings() {
-        final String[] buttonNames = AndroidHostInterface.getInstance().getControllerButtonNames(controllerType);
-        if (buttonNames == null || buttonNames.length == 0) {
-            log("No axes to bind.");
-            return;
-        }
-
-        for (final String buttonName : buttonNames) {
-            switch (buttonName) {
-                case "Up":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_DPAD_UP}, new int[][]{{MotionEvent.AXIS_HAT_Y, -1}});
-                    break;
-                case "Down":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_DPAD_DOWN}, new int[][]{{MotionEvent.AXIS_HAT_Y, 1}});
-                    break;
-                case "Left":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_DPAD_LEFT}, new int[][]{{MotionEvent.AXIS_HAT_X, -1}});
-                    break;
-                case "Right":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_DPAD_RIGHT}, new int[][]{{MotionEvent.AXIS_HAT_X, 1}});
-                    break;
-                case "Select":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_SELECT}, null);
-                    break;
-                case "Start":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_START}, null);
-                    break;
-                case "Triangle":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_Y}, null);
-                    break;
-                case "Cross":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_A}, null);
-                    break;
-                case "Circle":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_B}, null);
-                    break;
-                case "Square":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_X}, null);
-                    break;
-                case "L1":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_L1}, null);
-                    break;
-                case "L2":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_L2}, new int[][]{{MotionEvent.AXIS_LTRIGGER, 1}, {MotionEvent.AXIS_Z, 1}, {MotionEvent.AXIS_BRAKE, 1}});
-                    break;
-                case "R1":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_R1}, null);
-                    break;
-                case "R2":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_R2}, new int[][]{{MotionEvent.AXIS_RTRIGGER, 1}, {MotionEvent.AXIS_RZ, 1}, {MotionEvent.AXIS_GAS, 1}});
-                    break;
-                case "L3":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_THUMBL}, null);
-                    break;
-                case "R3":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_THUMBR}, null);
-                    break;
-                case "Analog":
-                    doAutoBindingButton(buttonName, new int[]{KeyEvent.KEYCODE_BUTTON_MODE}, null);
-                    break;
-                default:
-                    log("Button '%s' not supported by auto mapping.", buttonName);
-                    break;
-            }
-        }
-    }
-
-    private void setAxisBindings() {
-        final String[] axisNames = AndroidHostInterface.getInstance().getControllerAxisNames(controllerType);
-        if (axisNames == null || axisNames.length == 0) {
-            log("No axes to bind.");
-            return;
-        }
-
-        for (final String axisName : axisNames) {
-            switch (axisName) {
-                case "LeftX":
-                    doAutoBindingAxis(axisName, new int[]{MotionEvent.AXIS_X});
-                    break;
-                case "LeftY":
-                    doAutoBindingAxis(axisName, new int[]{MotionEvent.AXIS_Y});
-                    break;
-                case "RightX":
-                    doAutoBindingAxis(axisName, new int[]{MotionEvent.AXIS_RX, MotionEvent.AXIS_Z});
-                    break;
-                case "RightY":
-                    doAutoBindingAxis(axisName, new int[]{MotionEvent.AXIS_RY, MotionEvent.AXIS_RZ});
-                    break;
-                default:
-                    log("Axis '%s' not supported by auto mapping.", axisName);
-                    break;
-            }
-        }
-    }
-
-    private void setVibrationBinding() {
-        final int motorCount = AndroidHostInterface.getInstance().getControllerVibrationMotorCount(controllerType);
-        if (motorCount == 0) {
-            log("No vibration motors to bind.");
-            return;
-        }
-
-        final Vibrator vibrator = device.getVibrator();
-        if (vibrator == null || !vibrator.hasVibrator()) {
-            log("Selected device has no vibrator, cannot bind vibration.");
-            return;
-        }
-
-        log("Binding vibration to device '%s'.", device.getDescriptor());
-
-        final String key = String.format("%sRumble", keyBase);
-        editor.putString(key, device.getDescriptor());
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerBindingDialog.java b/android/app/src/main/java/com/github/stenzek/duckstation/ControllerBindingDialog.java
deleted file mode 100644
index 8b6344c25..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerBindingDialog.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.app.AlertDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-import android.util.ArraySet;
-import android.view.InputDevice;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.List;
-
-public class ControllerBindingDialog extends AlertDialog {
-    final static float DETECT_THRESHOLD = 0.25f;
-    private final ControllerBindingPreference.Type mType;
-    private final String mSettingKey;
-    private String mCurrentBinding;
-    private int mUpdatedAxisCode = -1;
-    private final HashMap<Integer, float[]> mStartingAxisValues = new HashMap<>();
-
-    public ControllerBindingDialog(Context context, String buttonName, String settingKey, String currentBinding, ControllerBindingPreference.Type type) {
-        super(context);
-
-        mType = type;
-        mSettingKey = settingKey;
-        mCurrentBinding = currentBinding;
-        if (mCurrentBinding == null)
-            mCurrentBinding = getContext().getString(R.string.controller_binding_dialog_no_binding);
-
-        setTitle(buttonName);
-        updateMessage();
-        setButton(BUTTON_POSITIVE, context.getString(R.string.controller_binding_dialog_cancel), (dialogInterface, button) -> dismiss());
-        setButton(BUTTON_NEGATIVE, context.getString(R.string.controller_binding_dialog_clear), (dialogInterface, button) -> {
-            mCurrentBinding = null;
-            updateBinding();
-            dismiss();
-        });
-
-        setOnKeyListener(new DialogInterface.OnKeyListener() {
-            @Override
-            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
-                return onKeyDown(keyCode, event);
-            }
-        });
-    }
-
-    private void updateMessage() {
-        setMessage(String.format(getContext().getString(R.string.controller_binding_dialog_message), mCurrentBinding));
-    }
-
-    private void updateBinding() {
-        SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getContext()).edit();
-        if (mCurrentBinding != null) {
-            ArraySet<String> values = new ArraySet<>();
-            values.add(mCurrentBinding);
-            editor.putStringSet(mSettingKey, values);
-        } else {
-            try {
-                editor.remove(mSettingKey);
-            } catch (Exception e) {
-
-            }
-        }
-
-        editor.commit();
-    }
-
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        final InputDevice device = event.getDevice();
-        if (!EmulationSurfaceView.isBindableDevice(device) || !EmulationSurfaceView.isBindableKeyEvent(event)) {
-            return super.onKeyDown(keyCode, event);
-        }
-
-        if (mType == ControllerBindingPreference.Type.BUTTON || mType == ControllerBindingPreference.Type.HALF_AXIS) {
-            mCurrentBinding = String.format("%s/Button%d", device.getDescriptor(), event.getKeyCode());
-        }  else if (mType == ControllerBindingPreference.Type.VIBRATION) {
-            if (device.getVibrator() == null || !device.getVibrator().hasVibrator()) {
-                Toast.makeText(getContext(), getContext().getString(R.string.controller_settings_vibration_unsupported), Toast.LENGTH_LONG).show();
-                dismiss();
-                return true;
-            }
-
-            mCurrentBinding = device.getDescriptor();
-        } else {
-            return super.onKeyDown(keyCode, event);
-        }
-
-        updateMessage();
-        updateBinding();
-        dismiss();
-        return true;
-    }
-
-    private void setAxisCode(InputDevice device, int axisCode, boolean positive) {
-        if (mUpdatedAxisCode >= 0)
-            return;
-
-        mUpdatedAxisCode = axisCode;
-
-        final int controllerIndex = 0;
-        if (mType == ControllerBindingPreference.Type.AXIS || mType == ControllerBindingPreference.Type.HALF_AXIS)
-            mCurrentBinding = String.format("%s/Axis%d", device.getDescriptor(), axisCode);
-        else
-            mCurrentBinding = String.format("%s/%cAxis%d", device.getDescriptor(), (positive) ? '+' : '-', axisCode);
-
-        updateBinding();
-        updateMessage();
-        dismiss();
-    }
-
-    private boolean doAxisDetection(MotionEvent event) {
-        if (!EmulationSurfaceView.isBindableDevice(event.getDevice()) || !EmulationSurfaceView.isJoystickMotionEvent(event))
-            return false;
-
-        final List<InputDevice.MotionRange> motionEventList = event.getDevice().getMotionRanges();
-        if (motionEventList == null || motionEventList.isEmpty())
-            return false;
-
-        final int deviceId = event.getDeviceId();
-        if (!mStartingAxisValues.containsKey(deviceId)) {
-            final float[] axisValues = new float[motionEventList.size()];
-            for (int axisIndex = 0; axisIndex < motionEventList.size(); axisIndex++) {
-                final int axisCode = motionEventList.get(axisIndex).getAxis();
-
-                if (event.getHistorySize() > 0)
-                    axisValues[axisIndex] = event.getHistoricalAxisValue(axisCode, 0);
-                else if (axisCode == MotionEvent.AXIS_HAT_X || axisCode == MotionEvent.AXIS_HAT_Y)
-                    axisValues[axisIndex] = 0.0f;
-                else
-                    axisValues[axisIndex] = event.getAxisValue(axisCode);
-            }
-
-            mStartingAxisValues.put(deviceId, axisValues);
-        }
-
-        final float[] axisValues = mStartingAxisValues.get(deviceId);
-        for (int axisIndex = 0; axisIndex < motionEventList.size(); axisIndex++) {
-            final int axisCode = motionEventList.get(axisIndex).getAxis();
-            final float newValue = event.getAxisValue(axisCode);
-            final float delta = newValue - axisValues[axisIndex];
-            if (Math.abs(delta) >= DETECT_THRESHOLD) {
-                setAxisCode(event.getDevice(), axisCode, delta >= 0.0f);
-                break;
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public boolean onGenericMotionEvent(@NonNull MotionEvent event) {
-        if (mType != ControllerBindingPreference.Type.AXIS &&
-            mType != ControllerBindingPreference.Type.HALF_AXIS &&
-            mType != ControllerBindingPreference.Type.BUTTON) {
-            return false;
-        }
-
-        if (doAxisDetection(event))
-            return true;
-
-        return super.onGenericMotionEvent(event);
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerBindingPreference.java b/android/app/src/main/java/com/github/stenzek/duckstation/ControllerBindingPreference.java
deleted file mode 100644
index 0aa4ad707..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerBindingPreference.java
+++ /dev/null
@@ -1,268 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.util.AttributeSet;
-import android.view.InputDevice;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.core.content.ContextCompat;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceViewHolder;
-
-import java.util.Set;
-
-public class ControllerBindingPreference extends Preference {
-    public enum Type {
-        BUTTON,
-        AXIS,
-        HALF_AXIS,
-        VIBRATION
-    }
-
-    private enum VisualType {
-        BUTTON,
-        AXIS,
-        VIBRATION,
-        HOTKEY
-    }
-
-    private String mBindingName;
-    private String mDisplayName;
-    private String mValue;
-    private TextView mValueView;
-    private Type mType = Type.BUTTON;
-    private VisualType mVisualType = VisualType.BUTTON;
-
-    private static int getIconForButton(String buttonName) {
-        if (buttonName.equals("Up")) {
-            return R.drawable.ic_controller_up_button_pressed;
-        } else if (buttonName.equals("Right")) {
-            return R.drawable.ic_controller_right_button_pressed;
-        } else if (buttonName.equals("Down")) {
-            return R.drawable.ic_controller_down_button_pressed;
-        } else if (buttonName.equals("Left")) {
-            return R.drawable.ic_controller_left_button_pressed;
-        } else if (buttonName.equals("Triangle")) {
-            return R.drawable.ic_controller_triangle_button_pressed;
-        } else if (buttonName.equals("Circle")) {
-            return R.drawable.ic_controller_circle_button_pressed;
-        } else if (buttonName.equals("Cross")) {
-            return R.drawable.ic_controller_cross_button_pressed;
-        } else if (buttonName.equals("Square")) {
-            return R.drawable.ic_controller_square_button_pressed;
-        } else if (buttonName.equals("Start")) {
-            return R.drawable.ic_controller_start_button_pressed;
-        } else if (buttonName.equals("Select")) {
-            return R.drawable.ic_controller_select_button_pressed;
-        } else if (buttonName.equals("L1")) {
-            return R.drawable.ic_controller_l1_button_pressed;
-        } else if (buttonName.equals("L2")) {
-            return R.drawable.ic_controller_l2_button_pressed;
-        } else if (buttonName.equals("R1")) {
-            return R.drawable.ic_controller_r1_button_pressed;
-        } else if (buttonName.equals("R2")) {
-            return R.drawable.ic_controller_r2_button_pressed;
-        }
-
-        return R.drawable.ic_baseline_radio_button_unchecked_24;
-    }
-
-    private static int getIconForAxis(String axisName) {
-        return R.drawable.ic_baseline_radio_button_checked_24;
-    }
-
-    private static int getIconForHotkey(String hotkeyDisplayName) {
-        switch (hotkeyDisplayName) {
-            case "FastForward":
-            case "ToggleFastForward":
-            case "Turbo":
-            case "ToggleTurbo":
-                return R.drawable.ic_controller_fast_forward;
-
-            default:
-                return R.drawable.ic_baseline_category_24;
-        }
-    }
-
-    public ControllerBindingPreference(Context context, AttributeSet attrs) {
-        this(context, attrs, 0);
-        setWidgetLayoutResource(R.layout.layout_controller_binding_preference);
-        setIconSpaceReserved(false);
-    }
-
-    public ControllerBindingPreference(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        setWidgetLayoutResource(R.layout.layout_controller_binding_preference);
-        setIconSpaceReserved(false);
-    }
-
-    public ControllerBindingPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-        setWidgetLayoutResource(R.layout.layout_controller_binding_preference);
-        setIconSpaceReserved(false);
-    }
-
-    @Override
-    public void onBindViewHolder(PreferenceViewHolder holder) {
-        super.onBindViewHolder(holder);
-
-        ImageView iconView = ((ImageView) holder.findViewById(R.id.controller_binding_icon));
-        TextView nameView = ((TextView) holder.findViewById(R.id.controller_binding_name));
-        mValueView = ((TextView) holder.findViewById(R.id.controller_binding_value));
-
-        int drawableId = R.drawable.ic_baseline_radio_button_checked_24;
-        switch (mVisualType) {
-            case BUTTON:
-                drawableId = getIconForButton(mBindingName);
-                break;
-            case AXIS:
-                drawableId = getIconForAxis(mBindingName);
-                break;
-            case HOTKEY:
-                drawableId = getIconForHotkey(mBindingName);
-                break;
-            case VIBRATION:
-                drawableId = R.drawable.ic_baseline_vibration_24;
-                break;
-        }
-
-        iconView.setImageDrawable(ContextCompat.getDrawable(getContext(), drawableId));
-        nameView.setText(mDisplayName);
-        updateValue();
-    }
-
-    @Override
-    protected void onClick() {
-        ControllerBindingDialog dialog = new ControllerBindingDialog(getContext(), mBindingName, getKey(), mValue, mType);
-        dialog.setOnDismissListener((dismissedDialog) -> updateValue());
-        dialog.show();
-    }
-
-    public void initButton(int controllerIndex, String buttonName) {
-        mBindingName = buttonName;
-        mDisplayName = buttonName;
-        mType = Type.BUTTON;
-        mVisualType = VisualType.BUTTON;
-        setKey(String.format("Controller%d/Button%s", controllerIndex, buttonName));
-        updateValue();
-    }
-
-    public void initAxis(int controllerIndex, String axisName, int axisType) {
-        mBindingName = axisName;
-        mDisplayName = axisName;
-        mType = (axisType == AndroidHostInterface.CONTROLLER_AXIS_TYPE_HALF) ? Type.HALF_AXIS : Type.AXIS;
-        mVisualType = VisualType.AXIS;
-        setKey(String.format("Controller%d/Axis%s", controllerIndex, axisName));
-        updateValue();
-    }
-
-    public void initVibration(int controllerIndex) {
-        mBindingName = "Rumble";
-        mDisplayName = getContext().getString(R.string.controller_binding_device_for_vibration);
-        mType = Type.VIBRATION;
-        mVisualType = VisualType.VIBRATION;
-        setKey(String.format("Controller%d/Rumble", controllerIndex));
-        updateValue();
-    }
-
-    public void initHotkey(HotkeyInfo hotkeyInfo) {
-        mBindingName = hotkeyInfo.getName();
-        mDisplayName = hotkeyInfo.getDisplayName();
-        mType = Type.BUTTON;
-        mVisualType = VisualType.HOTKEY;
-        setKey(hotkeyInfo.getBindingConfigKey());
-        updateValue();
-    }
-
-    public void initAutoFireButton(int controllerIndex, int autoFireSlot) {
-        mBindingName = String.format("AutoFire%d", autoFireSlot);
-        mDisplayName = getContext().getString(R.string.controller_binding_auto_fire_n, autoFireSlot);
-        mType = Type.BUTTON;
-        mVisualType = VisualType.BUTTON;
-        setKey(String.format("Controller%d/AutoFire%d", controllerIndex, autoFireSlot));
-        updateValue();
-    }
-
-    private String prettyPrintBinding(String value) {
-        final int index = value.indexOf('/');
-        String device, binding;
-        if (index >= 0) {
-            device = value.substring(0, index);
-            binding = value.substring(index);
-        } else {
-            device = value;
-            binding = "";
-        }
-
-        String humanName = device;
-        int deviceIndex = -1;
-
-        final int[] deviceIds = InputDevice.getDeviceIds();
-        for (int i = 0; i < deviceIds.length; i++) {
-            final InputDevice inputDevice = InputDevice.getDevice(deviceIds[i]);
-            if (inputDevice == null || !inputDevice.getDescriptor().equals(device)) {
-                continue;
-            }
-
-            humanName = inputDevice.getName();
-            deviceIndex = i;
-            break;
-        }
-
-        final int MAX_LENGTH = 40;
-        if (humanName.length() > MAX_LENGTH) {
-            final StringBuilder shortenedName = new StringBuilder();
-            shortenedName.append(humanName, 0, MAX_LENGTH / 2);
-            shortenedName.append("...");
-            shortenedName.append(humanName, humanName.length() - (MAX_LENGTH / 2),
-                    humanName.length());
-
-            humanName = shortenedName.toString();
-        }
-
-        if (deviceIndex < 0)
-            return String.format("%s[??]%s", humanName, binding);
-        else
-            return String.format("%s[%d]%s", humanName, deviceIndex, binding);
-    }
-
-    private void updateValue(String value) {
-        mValue = value;
-        if (mValueView != null) {
-            if (value != null)
-                mValueView.setText(value);
-            else
-                mValueView.setText(getContext().getString(R.string.controller_binding_dialog_no_binding));
-        }
-    }
-
-    public void updateValue() {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
-        Set<String> values = PreferenceHelpers.getStringSet(prefs, getKey());
-        if (values != null) {
-            StringBuilder sb = new StringBuilder();
-            for (String value : values) {
-                if (sb.length() > 0)
-                    sb.append(", ");
-                sb.append(prettyPrintBinding(value));
-            }
-
-            updateValue(sb.toString());
-        } else {
-            updateValue(null);
-        }
-    }
-
-    public void clearBinding(SharedPreferences.Editor prefEditor) {
-        try {
-            prefEditor.remove(getKey());
-        } catch (Exception e) {
-
-        }
-
-        updateValue(null);
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsActivity.java
deleted file mode 100644
index 73448dbc8..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsActivity.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.EditText;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.ActionBar;
-import androidx.appcompat.app.AlertDialog;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.preference.PreferenceManager;
-
-import java.util.ArrayList;
-
-public class ControllerSettingsActivity extends AppCompatActivity {
-    private ControllerSettingsCollectionFragment fragment;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(null);
-        setContentView(R.layout.settings_activity);
-
-        fragment = new ControllerSettingsCollectionFragment();
-        fragment.setMultitapModeChangedListener(this::recreate);
-
-        getSupportFragmentManager()
-                .beginTransaction()
-                .replace(R.id.settings, fragment)
-                .commit();
-        ActionBar actionBar = getSupportActionBar();
-        if (actionBar != null) {
-            actionBar.setDisplayHomeAsUpEnabled(true);
-            actionBar.setTitle(R.string.controller_mapping_activity_title);
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        // Inflate the menu; this adds items to the action bar if it is present.
-        getMenuInflater().inflate(R.menu.menu_controller_mapping, menu);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            onBackPressed();
-            return true;
-        }
-
-        final int id = item.getItemId();
-
-        //noinspection SimplifiableIfStatement
-        if (id == R.id.action_load_profile) {
-            doLoadProfile();
-            return true;
-        } else if (id == R.id.action_save_profile) {
-            doSaveProfile();
-            return true;
-        } else if (id == R.id.action_clear_bindings) {
-            fragment.clearAllBindings();
-            return true;
-        } else {
-            return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private void displayError(String text) {
-        new AlertDialog.Builder(this)
-                .setTitle(R.string.emulation_activity_error)
-                .setMessage(text)
-                .setNegativeButton(R.string.main_activity_ok, ((dialog, which) -> dialog.dismiss()))
-                .create()
-                .show();
-    }
-
-    private void doLoadProfile() {
-        final String[] profileNames = AndroidHostInterface.getInstance().getInputProfileNames();
-        if (profileNames == null) {
-            displayError(getString(R.string.controller_mapping_activity_no_profiles_found));
-            return;
-        }
-
-        new AlertDialog.Builder(this)
-                .setTitle(R.string.controller_mapping_activity_select_input_profile)
-                .setItems(profileNames, (dialog, choice) -> {
-                    doLoadProfile(profileNames[choice]);
-                    dialog.dismiss();
-                })
-                .setNegativeButton(R.string.controller_mapping_activity_cancel, ((dialog, which) -> dialog.dismiss()))
-                .create()
-                .show();
-    }
-
-    private void doLoadProfile(String profileName) {
-        if (!AndroidHostInterface.getInstance().loadInputProfile(profileName)) {
-            displayError(String.format(getString(R.string.controller_mapping_activity_failed_to_load_profile), profileName));
-            return;
-        }
-
-        fragment.updateAllBindings();
-    }
-
-    private void doSaveProfile() {
-        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        final EditText input = new EditText(this);
-        builder.setTitle(R.string.controller_mapping_activity_input_profile_name);
-        builder.setView(input);
-        builder.setPositiveButton(R.string.controller_mapping_activity_save, (dialog, which) -> {
-            final String name = input.getText().toString();
-            if (name.isEmpty()) {
-                displayError(getString(R.string.controller_mapping_activity_name_must_be_provided));
-                return;
-            }
-
-            if (!AndroidHostInterface.getInstance().saveInputProfile(name)) {
-                displayError(getString(R.string.controller_mapping_activity_failed_to_save_input_profile));
-                return;
-            }
-
-            Toast.makeText(ControllerSettingsActivity.this, String.format(ControllerSettingsActivity.this.getString(R.string.controller_mapping_activity_input_profile_saved), name),
-                    Toast.LENGTH_LONG).show();
-        });
-        builder.setNegativeButton(R.string.controller_mapping_activity_cancel, (dialog, which) -> dialog.dismiss());
-        builder.create().show();
-    }
-
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsCollectionFragment.java b/android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsCollectionFragment.java
deleted file mode 100644
index 00b86191d..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/ControllerSettingsCollectionFragment.java
+++ /dev/null
@@ -1,459 +0,0 @@
-package com.github.stenzek.duckstation;
-
-
-import android.annotation.SuppressLint;
-import android.app.Dialog;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.Window;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.preference.ListPreference;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
-import androidx.preference.SeekBarPreference;
-import androidx.preference.SwitchPreferenceCompat;
-import androidx.viewpager2.adapter.FragmentStateAdapter;
-import androidx.viewpager2.widget.ViewPager2;
-
-import com.google.android.material.tabs.TabLayout;
-import com.google.android.material.tabs.TabLayoutMediator;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-public class ControllerSettingsCollectionFragment extends Fragment {
-    public static final String MULTITAP_MODE_SETTINGS_KEY = "ControllerPorts/MultitapMode";
-    private static final int NUM_MAIN_CONTROLLER_PORTS = 2;
-    private static final int NUM_SUB_CONTROLLER_PORTS = 4;
-    private static final char[] SUB_CONTROLLER_PORT_NAMES = new char[]{'A', 'B', 'C', 'D'};
-    private static final int NUM_AUTO_FIRE_BUTTONS = 4;
-
-    public interface MultitapModeChangedListener {
-        void onChanged();
-    }
-
-    private final ArrayList<ControllerBindingPreference> preferences = new ArrayList<>();
-    private SettingsCollectionAdapter adapter;
-    private ViewPager2 viewPager;
-    private String[] controllerPortNames;
-
-    private MultitapModeChangedListener multitapModeChangedListener;
-
-    public ControllerSettingsCollectionFragment() {
-    }
-
-    public static String getControllerTypeKey(int port) {
-        return String.format("Controller%d/Type", port);
-    }
-
-    public static String getControllerType(SharedPreferences prefs, int port) {
-        final String defaultControllerType = (port == 1) ? "DigitalController" : "None";
-        return prefs.getString(getControllerTypeKey(port), defaultControllerType);
-    }
-
-    @Nullable
-    @Override
-    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        return inflater.inflate(R.layout.fragment_controller_settings, container, false);
-    }
-
-    @Override
-    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
-        final String multitapMode = PreferenceManager.getDefaultSharedPreferences(getContext()).getString(
-                MULTITAP_MODE_SETTINGS_KEY, "Disabled");
-
-        final ArrayList<String> portNames = new ArrayList<>();
-        for (int i = 0; i < NUM_MAIN_CONTROLLER_PORTS; i++) {
-            final boolean isMultitap = (multitapMode.equals("BothPorts") ||
-                    (i == 0 && multitapMode.equals("Port1Only")) ||
-                    (i == 1 && multitapMode.equals("Port2Only")));
-
-            if (isMultitap) {
-                for (int j = 0; j < NUM_SUB_CONTROLLER_PORTS; j++) {
-                    portNames.add(getContext().getString(
-                            R.string.controller_settings_sub_port_format,
-                            i + 1, SUB_CONTROLLER_PORT_NAMES[j]));
-                }
-            } else {
-                portNames.add(getContext().getString(
-                        R.string.controller_settings_main_port_format,
-                        i + 1));
-            }
-        }
-
-        controllerPortNames = new String[portNames.size()];
-        portNames.toArray(controllerPortNames);
-
-        adapter = new SettingsCollectionAdapter(this, controllerPortNames.length);
-        viewPager = view.findViewById(R.id.view_pager);
-        viewPager.setAdapter(adapter);
-
-        TabLayout tabLayout = view.findViewById(R.id.tab_layout);
-        new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> {
-            if (position == 0)
-                tab.setText(R.string.controller_settings_tab_settings);
-            else if (position <= controllerPortNames.length)
-                tab.setText(controllerPortNames[position - 1]);
-            else
-                tab.setText(R.string.controller_settings_tab_hotkeys);
-        }).attach();
-    }
-
-    public void setMultitapModeChangedListener(MultitapModeChangedListener multitapModeChangedListener) {
-        this.multitapModeChangedListener = multitapModeChangedListener;
-    }
-
-    public void clearAllBindings() {
-        SharedPreferences.Editor prefEdit = PreferenceManager.getDefaultSharedPreferences(getContext()).edit();
-        for (ControllerBindingPreference pref : preferences)
-            pref.clearBinding(prefEdit);
-        prefEdit.commit();
-    }
-
-    public void updateAllBindings() {
-        for (ControllerBindingPreference pref : preferences)
-            pref.updateValue();
-    }
-
-    public static class SettingsFragment extends PreferenceFragmentCompat {
-        private final ControllerSettingsCollectionFragment parent;
-
-        public SettingsFragment(ControllerSettingsCollectionFragment parent) {
-            this.parent = parent;
-        }
-
-        @Override
-        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-            setPreferencesFromResource(R.xml.controllers_preferences, rootKey);
-
-            final Preference multitapModePreference = getPreferenceScreen().findPreference(MULTITAP_MODE_SETTINGS_KEY);
-            if (multitapModePreference != null) {
-                multitapModePreference.setOnPreferenceChangeListener((pref, newValue) -> {
-                    if (parent.multitapModeChangedListener != null)
-                        parent.multitapModeChangedListener.onChanged();
-
-                    return true;
-                });
-            }
-        }
-    }
-
-    public static class ControllerPortFragment extends PreferenceFragmentCompat {
-        private final ControllerSettingsCollectionFragment parent;
-        private final int controllerIndex;
-        private PreferenceCategory mButtonsCategory;
-        private PreferenceCategory mAxisCategory;
-        private PreferenceCategory mSettingsCategory;
-        private PreferenceCategory mAutoFireCategory;
-        private PreferenceCategory mAutoFireBindingsCategory;
-
-        public ControllerPortFragment(ControllerSettingsCollectionFragment parent, int controllerIndex) {
-            this.parent = parent;
-            this.controllerIndex = controllerIndex;
-        }
-
-        private static void clearBindingsInCategory(SharedPreferences.Editor editor, PreferenceCategory category) {
-            for (int i = 0; i < category.getPreferenceCount(); i++) {
-                final Preference preference = category.getPreference(i);
-                if (preference instanceof ControllerBindingPreference)
-                    ((ControllerBindingPreference) preference).clearBinding(editor);
-            }
-        }
-
-        @Override
-        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-            final PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(getContext());
-            setPreferenceScreen(ps);
-            createPreferences();
-        }
-
-        private SwitchPreferenceCompat createTogglePreference(String key, int title, int summary, boolean defaultValue) {
-            final SwitchPreferenceCompat pref = new SwitchPreferenceCompat(getContext());
-            pref.setKey(key);
-            pref.setTitle(title);
-            pref.setSummary(summary);
-            pref.setIconSpaceReserved(false);
-            pref.setDefaultValue(defaultValue);
-            return pref;
-        }
-
-        private String getAutoToggleSummary(SharedPreferences sp, int slot) {
-            final String button = sp.getString(String.format("AutoFire%dButton", slot), null);
-            if (button == null || button.length() == 0)
-                return "Not Configured";
-
-            return String.format("%s every %d frames", button, sp.getInt("AutoFire%dFrequency", 2));
-        }
-
-        private void createPreferences() {
-            final PreferenceScreen ps = getPreferenceScreen();
-            final SharedPreferences sp = getPreferenceManager().getSharedPreferences();
-            final String controllerType = getControllerType(sp, controllerIndex);
-            final String[] controllerButtons = AndroidHostInterface.getControllerButtonNames(controllerType);
-            final String[] axisButtons = AndroidHostInterface.getControllerAxisNames(controllerType);
-            final int vibrationMotors = AndroidHostInterface.getControllerVibrationMotorCount(controllerType);
-
-            final ListPreference typePreference = new ListPreference(getContext());
-            typePreference.setEntries(R.array.settings_controller_type_entries);
-            typePreference.setEntryValues(R.array.settings_controller_type_values);
-            typePreference.setKey(getControllerTypeKey(controllerIndex));
-            typePreference.setValue(controllerType);
-            typePreference.setTitle(R.string.settings_controller_type);
-            typePreference.setSummaryProvider(ListPreference.SimpleSummaryProvider.getInstance());
-            typePreference.setIconSpaceReserved(false);
-            typePreference.setOnPreferenceChangeListener((pref, value) -> {
-                removePreferences();
-                createPreferences(value.toString());
-                return true;
-            });
-            ps.addPreference(typePreference);
-
-            final Preference autoBindPreference = new Preference(getContext());
-            autoBindPreference.setTitle(R.string.controller_settings_automatic_mapping);
-            autoBindPreference.setSummary(R.string.controller_settings_summary_automatic_mapping);
-            autoBindPreference.setIconSpaceReserved(false);
-            autoBindPreference.setOnPreferenceClickListener(preference -> {
-                final ControllerAutoMapper mapper = new ControllerAutoMapper(getContext(), controllerIndex, () -> {
-                    removePreferences();
-                    createPreferences(typePreference.getValue());
-                });
-                mapper.start();
-                return true;
-            });
-            ps.addPreference(autoBindPreference);
-
-            final Preference clearBindingsPreference = new Preference(getContext());
-            clearBindingsPreference.setTitle(R.string.controller_settings_clear_controller_bindings);
-            clearBindingsPreference.setSummary(R.string.controller_settings_summary_clear_controller_bindings);
-            clearBindingsPreference.setIconSpaceReserved(false);
-            clearBindingsPreference.setOnPreferenceClickListener(preference -> {
-                final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
-                builder.setMessage(R.string.controller_settings_clear_controller_bindings_confirm);
-                builder.setPositiveButton(R.string.main_activity_yes, (dialog, which) -> {
-                    dialog.dismiss();
-                    clearBindings();
-                });
-                builder.setNegativeButton(R.string.main_activity_no, (dialog, which) -> dialog.dismiss());
-                builder.create().show();
-                return true;
-            });
-            ps.addPreference(clearBindingsPreference);
-
-            mButtonsCategory = new PreferenceCategory(getContext());
-            mButtonsCategory.setTitle(R.string.controller_settings_category_button_bindings);
-            mButtonsCategory.setIconSpaceReserved(false);
-            ps.addPreference(mButtonsCategory);
-
-            mAxisCategory = new PreferenceCategory(getContext());
-            mAxisCategory.setTitle(R.string.controller_settings_category_axis_bindings);
-            mAxisCategory.setIconSpaceReserved(false);
-            ps.addPreference(mAxisCategory);
-
-            mSettingsCategory = new PreferenceCategory(getContext());
-            mSettingsCategory.setTitle(R.string.controller_settings_category_settings);
-            mSettingsCategory.setIconSpaceReserved(false);
-            ps.addPreference(mSettingsCategory);
-
-            mAutoFireCategory = new PreferenceCategory(getContext());
-            mAutoFireCategory.setTitle(R.string.controller_settings_category_auto_fire_buttons);
-            mAutoFireCategory.setIconSpaceReserved(false);
-            ps.addPreference(mAutoFireCategory);
-
-            mAutoFireBindingsCategory = new PreferenceCategory(getContext());
-            mAutoFireBindingsCategory.setTitle(R.string.controller_settings_category_auto_fire_bindings);
-            mAutoFireBindingsCategory.setIconSpaceReserved(false);
-            ps.addPreference(mAutoFireBindingsCategory);
-
-            createPreferences(controllerType);
-        }
-
-        @SuppressLint("DefaultLocale")
-        private void createPreferences(String controllerType) {
-            final PreferenceScreen ps = getPreferenceScreen();
-            final SharedPreferences sp = getPreferenceManager().getSharedPreferences();
-            final String[] buttonNames = AndroidHostInterface.getControllerButtonNames(controllerType);
-            final String[] axisNames = AndroidHostInterface.getControllerAxisNames(controllerType);
-            final int vibrationMotors = AndroidHostInterface.getControllerVibrationMotorCount(controllerType);
-
-            if (buttonNames != null) {
-                for (String buttonName : buttonNames) {
-                    final ControllerBindingPreference cbp = new ControllerBindingPreference(getContext(), null);
-                    cbp.initButton(controllerIndex, buttonName);
-                    mButtonsCategory.addPreference(cbp);
-                    parent.preferences.add(cbp);
-                }
-            }
-
-            if (axisNames != null) {
-                for (String axisName : axisNames) {
-                    final int axisType = AndroidHostInterface.getControllerAxisType(controllerType, axisName);
-                    final ControllerBindingPreference cbp = new ControllerBindingPreference(getContext(), null);
-                    cbp.initAxis(controllerIndex, axisName, axisType);
-                    mAxisCategory.addPreference(cbp);
-                    parent.preferences.add(cbp);
-                }
-            }
-
-            if (vibrationMotors > 0) {
-                final ControllerBindingPreference cbp = new ControllerBindingPreference(getContext(), null);
-                cbp.initVibration(controllerIndex);
-                mSettingsCategory.addPreference(cbp);
-                parent.preferences.add(cbp);
-            }
-
-            if (controllerType.equals("AnalogController")) {
-                mSettingsCategory.addPreference(
-                        createTogglePreference(String.format("Controller%d/ForceAnalogOnReset", controllerIndex),
-                                R.string.settings_enable_analog_mode_on_reset, R.string.settings_summary_enable_analog_mode_on_reset, true));
-
-                mSettingsCategory.addPreference(
-                        createTogglePreference(String.format("Controller%d/AnalogDPadInDigitalMode", controllerIndex),
-                                R.string.settings_use_analog_sticks_for_dpad, R.string.settings_summary_use_analog_sticks_for_dpad, true));
-            }
-
-            if (buttonNames != null) {
-              for (int autoFireSlot = 1; autoFireSlot <= NUM_AUTO_FIRE_BUTTONS; autoFireSlot++) {
-                  final ListPreference autoFirePreference = new ListPreference(getContext());
-                  autoFirePreference.setEntries(buttonNames);
-                  autoFirePreference.setEntryValues(buttonNames);
-                  autoFirePreference.setKey(String.format("Controller%d/AutoFire%dButton", controllerIndex, autoFireSlot));
-                  autoFirePreference.setTitle(getContext().getString(R.string.controller_settings_auto_fire_n_button, autoFireSlot));
-                  autoFirePreference.setSummaryProvider(ListPreference.SimpleSummaryProvider.getInstance());
-                  autoFirePreference.setIconSpaceReserved(false);
-                  mAutoFireCategory.addPreference(autoFirePreference);
-
-                  final SeekBarPreference frequencyPreference = new SeekBarPreference(getContext());
-                  frequencyPreference.setMin(1);
-                  frequencyPreference.setMax(60);
-                  frequencyPreference.setKey(String.format("Controller%d/AutoFire%dFrequency", controllerIndex, autoFireSlot));
-                  frequencyPreference.setDefaultValue(2);
-                  frequencyPreference.setTitle(getContext().getString(R.string.controller_settings_auto_fire_n_frequency, autoFireSlot));
-                  frequencyPreference.setIconSpaceReserved(false);
-                  frequencyPreference.setShowSeekBarValue(true);
-                  mAutoFireCategory.addPreference(frequencyPreference);
-              }
-
-              for (int autoFireSlot = 1; autoFireSlot <= NUM_AUTO_FIRE_BUTTONS; autoFireSlot++) {
-                  final ControllerBindingPreference bindingPreference = new ControllerBindingPreference(getContext(), null);
-                  bindingPreference.initAutoFireButton(controllerIndex, autoFireSlot);
-                  mAutoFireBindingsCategory.addPreference(bindingPreference);
-              }
-            }
-        }
-
-        private void removePreferences() {
-            for (int i = 0; i < mButtonsCategory.getPreferenceCount(); i++) {
-                parent.preferences.remove(mButtonsCategory.getPreference(i));
-            }
-            mButtonsCategory.removeAll();
-
-            for (int i = 0; i < mAxisCategory.getPreferenceCount(); i++) {
-                parent.preferences.remove(mAxisCategory.getPreference(i));
-            }
-            mAxisCategory.removeAll();
-
-            for (int i = 0; i < mSettingsCategory.getPreferenceCount(); i++) {
-                parent.preferences.remove(mSettingsCategory.getPreference(i));
-            }
-            mSettingsCategory.removeAll();
-
-            for (int i = 0; i < mAutoFireCategory.getPreferenceCount(); i++) {
-                parent.preferences.remove(mAutoFireCategory.getPreference(i));
-            }
-            mAutoFireCategory.removeAll();
-
-            for (int i = 0; i < mAutoFireBindingsCategory.getPreferenceCount(); i++) {
-                parent.preferences.remove(mAutoFireBindingsCategory.getPreference(i));
-            }
-            mAutoFireBindingsCategory.removeAll();
-        }
-
-        private void clearBindings() {
-            final SharedPreferences.Editor editor = getPreferenceManager().getSharedPreferences().edit();
-            clearBindingsInCategory(editor, mButtonsCategory);
-            clearBindingsInCategory(editor, mAxisCategory);
-            clearBindingsInCategory(editor, mSettingsCategory);
-            editor.commit();
-
-            Toast.makeText(parent.getContext(), parent.getString(
-                    R.string.controller_settings_clear_controller_bindings_done, controllerIndex),
-                    Toast.LENGTH_LONG).show();
-        }
-    }
-
-    public static class HotkeyFragment extends PreferenceFragmentCompat {
-        private final ControllerSettingsCollectionFragment parent;
-        private final HotkeyInfo[] mHotkeyInfo;
-
-        public HotkeyFragment(ControllerSettingsCollectionFragment parent) {
-            this.parent = parent;
-            this.mHotkeyInfo = AndroidHostInterface.getInstance().getHotkeyInfoList();
-        }
-
-        @Override
-        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-            final PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(getContext());
-            if (mHotkeyInfo != null) {
-                final HashMap<String, PreferenceCategory> categoryMap = new HashMap<>();
-
-                for (HotkeyInfo hotkeyInfo : mHotkeyInfo) {
-                    PreferenceCategory category = categoryMap.containsKey(hotkeyInfo.getCategory()) ?
-                            categoryMap.get(hotkeyInfo.getCategory()) : null;
-                    if (category == null) {
-                        category = new PreferenceCategory(getContext());
-                        category.setTitle(hotkeyInfo.getCategory());
-                        category.setIconSpaceReserved(false);
-                        categoryMap.put(hotkeyInfo.getCategory(), category);
-                        ps.addPreference(category);
-                    }
-
-                    final ControllerBindingPreference cbp = new ControllerBindingPreference(getContext(), null);
-                    cbp.initHotkey(hotkeyInfo);
-                    category.addPreference(cbp);
-                    parent.preferences.add(cbp);
-                }
-            }
-
-            setPreferenceScreen(ps);
-        }
-    }
-
-    public static class SettingsCollectionAdapter extends FragmentStateAdapter {
-        private final ControllerSettingsCollectionFragment parent;
-        private final int controllerPorts;
-
-        public SettingsCollectionAdapter(@NonNull ControllerSettingsCollectionFragment parent, int controllerPorts) {
-            super(parent);
-            this.parent = parent;
-            this.controllerPorts = controllerPorts;
-        }
-
-        @NonNull
-        @Override
-        public Fragment createFragment(int position) {
-            if (position == 0)
-                return new SettingsFragment(parent);
-            else if (position <= controllerPorts)
-                return new ControllerPortFragment(parent, position);
-            else
-                return new HotkeyFragment(parent);
-        }
-
-        @Override
-        public int getItemCount() {
-            return controllerPorts + 2;
-        }
-    }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/DiscRegion.java b/android/app/src/main/java/com/github/stenzek/duckstation/DiscRegion.java
deleted file mode 100644
index 813d9e717..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/DiscRegion.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.github.stenzek.duckstation;
-
-public enum DiscRegion {
-    NTSC_J,
-    NTSC_U,
-    PAL,
-    Other
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/EmptyGameListFragment.java b/android/app/src/main/java/com/github/stenzek/duckstation/EmptyGameListFragment.java
deleted file mode 100644
index 793cf2d7d..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/EmptyGameListFragment.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-public class EmptyGameListFragment extends Fragment {
-    private static final String SUPPORTED_FORMATS_STRING =
-            ".cue (Cue Sheets)\n" +
-            ".iso/.img (Single Track Image)\n" +
-            ".ecm (Error Code Modeling Image)\n" +
-            ".mds (Media Descriptor Sidecar)\n" +
-            ".chd (Compressed Hunks of Data)\n" +
-            ".pbp (PlayStation Portable, Only Decrypted)";
-
-    private MainActivity parent;
-
-    public EmptyGameListFragment(MainActivity parent) {
-        super(R.layout.fragment_empty_game_list);
-        this.parent = parent;
-    }
-
-    @Override
-    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        ((TextView) view.findViewById(R.id.supported_formats)).setText(
-                getString(R.string.main_activity_empty_game_list_supported_formats, SUPPORTED_FORMATS_STRING));
-        ((Button) view.findViewById(R.id.add_game_directory)).setOnClickListener(v -> parent.startAddGameDirectory());
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java
deleted file mode 100644
index 8192df706..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java
+++ /dev/null
@@ -1,988 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.pm.ActivityInfo;
-import android.content.res.Configuration;
-import android.hardware.input.InputManager;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Vibrator;
-import android.util.Log;
-import android.view.Display;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.SurfaceHolder;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.FrameLayout;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentTransaction;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.PreferenceManager;
-
-/**
- * An example full-screen activity that shows and hides the system UI (i.e.
- * status bar and navigation/system bar) with user interaction.
- */
-public class EmulationActivity extends AppCompatActivity implements SurfaceHolder.Callback {
-    /**
-     * Settings interfaces.
-     */
-    private SharedPreferences mPreferences;
-    private boolean mWasDestroyed = false;
-    private boolean mStopRequested = false;
-    private boolean mApplySettingsOnSurfaceRestored = false;
-    private String mGamePath = null;
-    private String mGameCode = null;
-    private String mGameTitle = null;
-    private String mGameCoverPath = null;
-    private EmulationSurfaceView mContentView;
-    private MenuDialogFragment mPauseMenu;
-
-    private boolean getBooleanSetting(String key, boolean defaultValue) {
-        return mPreferences.getBoolean(key, defaultValue);
-    }
-
-    private void setBooleanSetting(String key, boolean value) {
-        SharedPreferences.Editor editor = mPreferences.edit();
-        editor.putBoolean(key, value);
-        editor.apply();
-    }
-
-    private String getStringSetting(String key, String defaultValue) {
-        return mPreferences.getString(key, defaultValue);
-    }
-
-    private int getIntSetting(String key, int defaultValue) {
-        try {
-            return mPreferences.getInt(key, defaultValue);
-        } catch (ClassCastException e) {
-            try {
-                final String stringValue = mPreferences.getString(key, Integer.toString(defaultValue));
-                return Integer.parseInt(stringValue);
-            } catch (Exception e2) {
-                return defaultValue;
-            }
-        }
-    }
-
-    private void setStringSetting(String key, String value) {
-        SharedPreferences.Editor editor = mPreferences.edit();
-        editor.putString(key, value);
-        editor.apply();
-    }
-
-    private void reportErrorOnUIThread(String message) {
-        // Toast.makeText(this, message, Toast.LENGTH_LONG);
-        new AlertDialog.Builder(this)
-                .setTitle(R.string.emulation_activity_error)
-                .setMessage(message)
-                .setPositiveButton(R.string.emulation_activity_ok, (dialog, button) -> {
-                    dialog.dismiss();
-                    enableFullscreenImmersive();
-                })
-                .create()
-                .show();
-    }
-
-    public void reportError(String message) {
-        Log.e("EmulationActivity", message);
-
-        Object lock = new Object();
-        runOnUiThread(() -> {
-            // Toast.makeText(this, message, Toast.LENGTH_LONG);
-            new AlertDialog.Builder(this)
-                    .setTitle(R.string.emulation_activity_error)
-                    .setMessage(message)
-                    .setPositiveButton(R.string.emulation_activity_ok, (dialog, button) -> {
-                        dialog.dismiss();
-                        enableFullscreenImmersive();
-                        synchronized (lock) {
-                            lock.notify();
-                        }
-                    })
-                    .create()
-                    .show();
-        });
-
-        synchronized (lock) {
-            try {
-                lock.wait();
-            } catch (InterruptedException e) {
-            }
-        }
-    }
-
-    private EmulationThread mEmulationThread;
-
-    private void stopEmulationThread() {
-        if (mEmulationThread == null)
-            return;
-
-        mEmulationThread.stopAndJoin();
-        mEmulationThread = null;
-    }
-
-    public void onEmulationStarted() {
-        runOnUiThread(() -> {
-            updateRequestedOrientation();
-            updateOrientation();
-        });
-    }
-
-    public void onEmulationStopped() {
-        runOnUiThread(() -> {
-            if (!mWasDestroyed && !mStopRequested)
-                finish();
-        });
-    }
-
-    public void onRunningGameChanged(String path, String code, String title, String coverPath) {
-        runOnUiThread(() -> {
-            mGamePath = path;
-            mGameTitle = title;
-            mGameCode = code;
-            mGameCoverPath = coverPath;
-        });
-    }
-
-    public float getRefreshRate() {
-        WindowManager windowManager = getWindowManager();
-        if (windowManager == null) {
-            windowManager = ((WindowManager) getSystemService(Context.WINDOW_SERVICE));
-            if (windowManager == null)
-                return -1.0f;
-        }
-
-        Display display = windowManager.getDefaultDisplay();
-        if (display == null)
-            return -1.0f;
-
-        return display.getRefreshRate();
-    }
-
-    public void openPauseMenu() {
-        runOnUiThread(() -> {
-            showPauseMenu();
-        });
-    }
-
-    public String[] getInputDeviceNames() {
-        return (mContentView != null) ? mContentView.getInputDeviceNames() : null;
-    }
-
-    public boolean hasInputDeviceVibration(int controllerIndex) {
-        return (mContentView != null) ? mContentView.hasInputDeviceVibration(controllerIndex) : null;
-    }
-
-    public void setInputDeviceVibration(int controllerIndex, float smallMotor, float largeMotor) {
-        if (mContentView != null)
-            mContentView.setInputDeviceVibration(controllerIndex, smallMotor, largeMotor);
-    }
-
-    private void doApplySettings() {
-        AndroidHostInterface.getInstance().applySettings();
-        updateRequestedOrientation();
-        updateControllers();
-        updateSustainedPerformanceMode();
-        updateDisplayInCutout();
-    }
-
-    private void applySettings() {
-        if (!AndroidHostInterface.getInstance().isEmulationThreadRunning())
-            return;
-
-        if (AndroidHostInterface.getInstance().hasSurface()) {
-            doApplySettings();
-        } else {
-            mApplySettingsOnSurfaceRestored = true;
-        }
-    }
-
-    /// Ends the activity if it was restored without properly being created.
-    private boolean checkActivityIsValid() {
-        if (!AndroidHostInterface.hasInstance() || !AndroidHostInterface.getInstance().isEmulationThreadRunning()) {
-            finish();
-            return false;
-        }
-
-        return true;
-    }
-
-    @Override
-    public void surfaceCreated(SurfaceHolder holder) {
-    }
-
-    @Override
-    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
-        // Once we get a surface, we can boot.
-        AndroidHostInterface.getInstance().surfaceChanged(holder.getSurface(), format, width, height);
-
-        if (mEmulationThread != null) {
-            updateOrientation();
-
-            if (mApplySettingsOnSurfaceRestored) {
-                mApplySettingsOnSurfaceRestored = false;
-                doApplySettings();
-            }
-
-            return;
-        }
-
-        final String bootPath = getIntent().getStringExtra("bootPath");
-        final boolean saveStateOnExit = getBooleanSetting("Main/SaveStateOnExit", true);
-        final boolean resumeState = getIntent().getBooleanExtra("resumeState", saveStateOnExit);
-        final String bootSaveStatePath = getIntent().getStringExtra("saveStatePath");
-
-        mEmulationThread = EmulationThread.create(this, bootPath, resumeState, bootSaveStatePath);
-    }
-
-    @Override
-    public void surfaceDestroyed(SurfaceHolder holder) {
-        Log.i("EmulationActivity", "Surface destroyed");
-
-        if (mPauseMenu != null)
-            mPauseMenu.close(false);
-
-        // Save the resume state in case we never get back again...
-        if (AndroidHostInterface.getInstance().isEmulationThreadRunning() && !mStopRequested)
-            AndroidHostInterface.getInstance().saveResumeState(true);
-
-        AndroidHostInterface.getInstance().surfaceChanged(null, 0, 0, 0);
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
-        super.onCreate(savedInstanceState);
-
-        Log.i("EmulationActivity", "OnCreate");
-
-        // we might be coming from a third-party launcher if the host interface isn't setup
-        if (!AndroidHostInterface.hasInstance() && !AndroidHostInterface.createInstance(this)) {
-            finish();
-            return;
-        }
-
-        enableFullscreenImmersive();
-        setContentView(R.layout.activity_emulation);
-
-        mContentView = findViewById(R.id.fullscreen_content);
-        mContentView.getHolder().addCallback(this);
-        mContentView.setFocusableInTouchMode(true);
-        mContentView.setFocusable(true);
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-            mContentView.setFocusedByDefault(true);
-        }
-        mContentView.requestFocus();
-
-        // Sort out rotation.
-        updateOrientation();
-        updateSustainedPerformanceMode();
-        updateDisplayInCutout();
-
-        // Hook up controller input.
-        updateControllers();
-        registerInputDeviceListener();
-    }
-
-    @Override
-    protected void onPostCreate(Bundle savedInstanceState) {
-        super.onPostCreate(savedInstanceState);
-        enableFullscreenImmersive();
-    }
-
-    @Override
-    protected void onPostResume() {
-        super.onPostResume();
-        enableFullscreenImmersive();
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        Log.i("EmulationActivity", "OnStop");
-        if (mEmulationThread != null) {
-            mWasDestroyed = true;
-            stopEmulationThread();
-        }
-
-        unregisterInputDeviceListener();
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-
-        if (!checkActivityIsValid()) {
-            // we must've got killed off in the background :(
-            return;
-        }
-
-        if (requestCode == REQUEST_CODE_SETTINGS) {
-            if (AndroidHostInterface.getInstance().isEmulationThreadRunning()) {
-                applySettings();
-            }
-        } else if (requestCode == REQUEST_IMPORT_PATCH_CODES) {
-            if (data == null || data.getData() == null)
-                return;
-
-            importPatchesFromFile(data.getData());
-        } else if (requestCode == REQUEST_CHANGE_DISC_FILE) {
-            if (data == null || data.getData() == null)
-                return;
-
-            AndroidHostInterface.getInstance().setMediaFilename(data.getDataString());
-        }
-    }
-
-    @Override
-    public void onBackPressed() {
-        showPauseMenu();
-    }
-
-    @Override
-    public boolean dispatchKeyEvent(KeyEvent event) {
-        if (event.getAction() == KeyEvent.ACTION_DOWN) {
-            if (mContentView.onKeyDown(event.getKeyCode(), event))
-                return true;
-        } else if (event.getAction() == KeyEvent.ACTION_UP) {
-            if (mContentView.onKeyUp(event.getKeyCode(), event))
-                return true;
-        }
-
-        return super.dispatchKeyEvent(event);
-    }
-
-    @Override
-    public boolean dispatchGenericMotionEvent(MotionEvent ev) {
-        if (mContentView.onGenericMotionEvent(ev))
-            return true;
-
-        return super.dispatchGenericMotionEvent(ev);
-    }
-
-    @Override
-    public void onConfigurationChanged(@NonNull Configuration newConfig) {
-        super.onConfigurationChanged(newConfig);
-
-        if (checkActivityIsValid())
-            updateOrientation(newConfig.orientation);
-    }
-
-    private void updateRequestedOrientation() {
-        final String orientation = getStringSetting("Main/EmulationScreenOrientation", "unspecified");
-        if (orientation.equals("portrait"))
-            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT);
-        else if (orientation.equals("landscape"))
-            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE);
-        else if (orientation.equals("sensor"))
-            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
-        else
-            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
-    }
-
-    private void updateOrientation() {
-        final int orientation = getResources().getConfiguration().orientation;
-        updateOrientation(orientation);
-    }
-
-    private void updateOrientation(int newOrientation) {
-        if (newOrientation == Configuration.ORIENTATION_PORTRAIT)
-            AndroidHostInterface.getInstance().setDisplayAlignment(AndroidHostInterface.DISPLAY_ALIGNMENT_TOP_OR_LEFT);
-        else
-            AndroidHostInterface.getInstance().setDisplayAlignment(AndroidHostInterface.DISPLAY_ALIGNMENT_CENTER);
-
-        if (mTouchscreenController != null)
-            mTouchscreenController.updateOrientation();
-    }
-
-    private void enableFullscreenImmersive() {
-        getWindow().getDecorView().setSystemUiVisibility(
-                View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
-                        View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
-                        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
-                        View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
-                        View.SYSTEM_UI_FLAG_FULLSCREEN |
-                        View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
-        if (mContentView != null)
-            mContentView.requestFocus();
-    }
-
-    private void updateDisplayInCutout() {
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P)
-            return;
-
-        final boolean shouldExpand = getBooleanSetting("Display/ExpandToCutout", false);
-        final boolean isExpanded = getWindow().getAttributes().layoutInDisplayCutoutMode ==
-                WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
-
-        if (shouldExpand == isExpanded)
-            return;
-
-        WindowManager.LayoutParams attribs = getWindow().getAttributes();
-        attribs.layoutInDisplayCutoutMode = shouldExpand ?
-                WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES :
-                WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT;
-        getWindow().setAttributes(attribs);
-    }
-
-    private static final int REQUEST_CODE_SETTINGS = 0;
-    private static final int REQUEST_IMPORT_PATCH_CODES = 1;
-    private static final int REQUEST_CHANGE_DISC_FILE = 2;
-
-    private void onMenuClosed() {
-        enableFullscreenImmersive();
-
-        if (AndroidHostInterface.getInstance().isEmulationThreadPaused())
-            AndroidHostInterface.getInstance().pauseEmulationThread(false);
-    }
-
-    private boolean disableDialogMenuItem(AlertDialog dialog, int index) {
-        final ListView listView = dialog.getListView();
-        if (listView == null)
-            return false;
-
-        final View childItem = listView.getChildAt(index);
-        if (childItem == null)
-            return false;
-
-        childItem.setEnabled(false);
-        childItem.setClickable(false);
-        childItem.setOnClickListener((v) -> {});
-        return true;
-    }
-
-    private void showPauseMenu() {
-        if (!AndroidHostInterface.getInstance().isEmulationThreadPaused()) {
-            AndroidHostInterface.getInstance().pauseEmulationThread(true);
-        }
-
-        if (mPauseMenu != null)
-            mPauseMenu.close(false);
-
-        mPauseMenu = new MenuDialogFragment(this);
-        mPauseMenu.show(getSupportFragmentManager(), "MenuDialogFragment");
-    }
-
-    private void showSaveStateMenu(boolean saving) {
-        final SaveStateInfo[] infos = AndroidHostInterface.getInstance().getSaveStateInfo(true);
-        if (infos == null) {
-            onMenuClosed();
-            return;
-        }
-
-        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        final ListView listView = new ListView(this);
-        listView.setAdapter(new SaveStateInfo.ListAdapter(this, infos));
-        builder.setView(listView);
-        builder.setOnDismissListener((dialog) -> {
-            onMenuClosed();
-        });
-
-        final AlertDialog dialog = builder.create();
-
-        listView.setOnItemClickListener((parent, view, position, id) -> {
-            SaveStateInfo info = infos[position];
-            if (saving) {
-                AndroidHostInterface.getInstance().saveState(info.isGlobal(), info.getSlot());
-            } else {
-                AndroidHostInterface.getInstance().loadState(info.isGlobal(), info.getSlot());
-            }
-            dialog.dismiss();
-        });
-
-        dialog.show();
-    }
-
-    private void showTouchscreenControllerMenu() {
-        AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        builder.setTitle(R.string.dialog_touchscreen_controller_settings);
-        builder.setItems(R.array.emulation_touchscreen_menu, (dialogInterface, i) -> {
-            switch (i) {
-                case 0:     // Change Type
-                {
-                    final String currentValue = getStringSetting("Controller1/TouchscreenControllerView", "");
-                    final String[] values = getResources().getStringArray(R.array.settings_touchscreen_controller_view_values);
-                    int currentIndex = -1;
-                    for (int k = 0; k < values.length; k++) {
-                        if (currentValue.equals(values[k])) {
-                            currentIndex = k;
-                            break;
-                        }
-                    }
-
-                    final AlertDialog.Builder subBuilder = new AlertDialog.Builder(this);
-                    subBuilder.setTitle(R.string.dialog_touchscreen_controller_type);
-                    subBuilder.setSingleChoiceItems(R.array.settings_touchscreen_controller_view_entries, currentIndex, (dialog, j) -> {
-                        setStringSetting("Controller1/TouchscreenControllerView", values[j]);
-                        updateControllers();
-                    });
-                    subBuilder.setNegativeButton(R.string.dialog_done, (dialog, which) -> {
-                        dialog.dismiss();
-                    });
-                    subBuilder.setOnDismissListener(dialog -> onMenuClosed());
-                    subBuilder.create().show();
-                }
-                break;
-
-                case 1:     // Change Opacity
-                {
-                    if (mTouchscreenController != null) {
-                        AlertDialog.Builder subBuilder = mTouchscreenController.createOpacityDialog(this);
-                        subBuilder.setOnDismissListener(dialog -> onMenuClosed());
-                        subBuilder.create().show();
-                    } else {
-                        onMenuClosed();
-                    }
-
-                }
-                break;
-
-                case 2:     // Add/Remove Buttons
-                {
-                    if (mTouchscreenController != null) {
-                        AlertDialog.Builder subBuilder = mTouchscreenController.createAddRemoveButtonDialog(this);
-                        subBuilder.setOnDismissListener(dialog -> onMenuClosed());
-                        subBuilder.create().show();
-                    } else {
-                        onMenuClosed();
-                    }
-                }
-                break;
-
-                case 3:     // Edit Positions
-                case 4:     // Edit Scale
-                {
-                    if (mTouchscreenController != null) {
-                        // we deliberately don't call onMenuClosed() here to keep the system paused.
-                        // but we need to re-enable immersive mode to get proper editing.
-                        enableFullscreenImmersive();
-                        mTouchscreenController.startLayoutEditing(
-                                (i == 4) ? TouchscreenControllerView.EditMode.SCALE :
-                                        TouchscreenControllerView.EditMode.POSITION);
-                    } else {
-                        // no controller
-                        onMenuClosed();
-                    }
-                }
-                break;
-            }
-        });
-
-        builder.setOnCancelListener(dialogInterface -> onMenuClosed());
-        builder.create().show();
-    }
-
-    private void showPatchesMenu() {
-        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-
-        final PatchCode[] codes = AndroidHostInterface.getInstance().getPatchCodeList();
-        if (codes != null) {
-            CharSequence[] items = new CharSequence[codes.length];
-            boolean[] itemsChecked = new boolean[codes.length];
-            for (int i = 0; i < codes.length; i++) {
-                final PatchCode cc = codes[i];
-                items[i] = cc.getDisplayText();
-                itemsChecked[i] = cc.isEnabled();
-            }
-
-            builder.setMultiChoiceItems(items, itemsChecked, (dialogInterface, i, checked) -> {
-                AndroidHostInterface.getInstance().setPatchCodeEnabled(i, checked);
-            });
-        }
-
-        builder.setNegativeButton(R.string.emulation_activity_ok, (dialogInterface, i) -> {
-            dialogInterface.dismiss();
-        });
-        builder.setNeutralButton(R.string.emulation_activity_import_patch_codes, (dialogInterface, i) -> {
-            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
-            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-            intent.setType("*/*");
-            intent.addCategory(Intent.CATEGORY_OPENABLE);
-            startActivityForResult(Intent.createChooser(intent, getString(R.string.emulation_activity_choose_patch_code_file)), REQUEST_IMPORT_PATCH_CODES);
-        });
-
-        builder.setOnDismissListener(dialogInterface -> onMenuClosed());
-        builder.create().show();
-    }
-
-    private void importPatchesFromFile(Uri uri) {
-        String str = FileHelper.readStringFromUri(this, uri, 512 * 1024);
-        if (str == null || !AndroidHostInterface.getInstance().importPatchCodesFromString(str)) {
-            reportErrorOnUIThread(getString(R.string.emulation_activity_failed_to_import_patch_codes));
-        }
-    }
-
-    private void startDiscChangeFromFile() {
-        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
-        intent.setType("*/*");
-        intent.addCategory(Intent.CATEGORY_OPENABLE);
-        startActivityForResult(Intent.createChooser(intent, getString(R.string.main_activity_choose_disc_image)), REQUEST_CHANGE_DISC_FILE);
-    }
-
-    private void showDiscChangeMenu() {
-        final AndroidHostInterface hi = AndroidHostInterface.getInstance();
-
-        if (!hi.hasMediaSubImages()) {
-            startDiscChangeFromFile();
-            return;
-        }
-
-        final String[] paths = AndroidHostInterface.getInstance().getMediaSubImageTitles();
-        final int currentPath = AndroidHostInterface.getInstance().getMediaSubImageIndex();
-        final int numPaths = (paths != null) ? paths.length : 0;
-
-        AlertDialog.Builder builder = new AlertDialog.Builder(this);
-
-        CharSequence[] items = new CharSequence[numPaths + 1];
-        for (int i = 0; i < numPaths; i++)
-            items[i] = FileHelper.getFileNameForPath(paths[i]);
-        items[numPaths] = getString(R.string.emulation_activity_change_disc_select_new_file);
-
-        builder.setSingleChoiceItems(items, (currentPath < numPaths) ? currentPath : -1, (dialogInterface, i) -> {
-            dialogInterface.dismiss();
-            onMenuClosed();
-
-            if (i < numPaths) {
-                AndroidHostInterface.getInstance().switchMediaSubImage(i);
-            } else {
-                startDiscChangeFromFile();
-            }
-        });
-        builder.setOnCancelListener(dialogInterface -> onMenuClosed());
-        builder.create().show();
-    }
-
-    private void showAchievementsPopup() {
-        final Achievement[] achievements = AndroidHostInterface.getInstance().getCheevoList();
-        if (achievements == null) {
-            onMenuClosed();
-            return;
-        }
-
-        final AchievementListFragment alf = new AchievementListFragment(achievements);
-        alf.show(getSupportFragmentManager(), "fragment_achievement_list");
-        alf.setOnDismissListener(dialog -> onMenuClosed());
-    }
-
-    /**
-     * Touchscreen controller overlay
-     */
-    TouchscreenControllerView mTouchscreenController;
-
-    public void updateControllers() {
-        final int touchscreenControllerIndex = getIntSetting("TouchscreenController/PortIndex", 0);
-        final String touchscreenControllerPrefix = String.format("Controller%d/", touchscreenControllerIndex + 1);
-        final String controllerType = getStringSetting(touchscreenControllerPrefix + "Type", "DigitalController");
-        final String viewType = getStringSetting("Controller1/TouchscreenControllerView", "digital");
-        final boolean autoHideTouchscreenController = getBooleanSetting("Controller1/AutoHideTouchscreenController", false);
-        final boolean touchGliding = getBooleanSetting("Controller1/TouchGliding", false);
-        final boolean hapticFeedback = getBooleanSetting("Controller1/HapticFeedback", false);
-        final boolean vibration = getBooleanSetting("Controller1/Vibration", false);
-        final FrameLayout activityLayout = findViewById(R.id.frameLayout);
-
-        Log.i("EmulationActivity", "Controller type: " + controllerType);
-        Log.i("EmulationActivity", "View type: " + viewType);
-
-        mContentView.updateInputDevices();
-        AndroidHostInterface.getInstance().updateInputMap();
-
-        final boolean hasAnyControllers = mContentView.hasAnyGamePads();
-        if (controllerType.equals("None") || viewType.equals("none") || (hasAnyControllers && autoHideTouchscreenController)) {
-            if (mTouchscreenController != null) {
-                activityLayout.removeView(mTouchscreenController);
-                mTouchscreenController = null;
-            }
-        } else {
-            if (mTouchscreenController == null) {
-                mTouchscreenController = new TouchscreenControllerView(this);
-                activityLayout.addView(mTouchscreenController);
-            }
-
-            mTouchscreenController.init(touchscreenControllerIndex, controllerType, viewType, hapticFeedback, touchGliding);
-        }
-
-        if (vibration)
-            mVibratorService = (Vibrator) getSystemService(VIBRATOR_SERVICE);
-        else
-            mVibratorService = null;
-
-        // Place notifications in the middle of the screen, rather then the bottom (because touchscreen).
-        float notificationVerticalPosition = 1.0f;
-        float notificationVerticalDirection = -1.0f;
-        if (mTouchscreenController != null) {
-            notificationVerticalPosition = 0.3f;
-            notificationVerticalDirection = -1.0f;
-        }
-        AndroidHostInterface.getInstance().setFullscreenUINotificationVerticalPosition(
-                notificationVerticalPosition, notificationVerticalDirection);
-    }
-
-    private InputManager.InputDeviceListener mInputDeviceListener;
-
-    private void registerInputDeviceListener() {
-        if (mInputDeviceListener != null)
-            return;
-
-        mInputDeviceListener = new InputManager.InputDeviceListener() {
-            @Override
-            public void onInputDeviceAdded(int i) {
-                Log.i("EmulationActivity", String.format("InputDeviceAdded %d", i));
-                updateControllers();
-            }
-
-            @Override
-            public void onInputDeviceRemoved(int i) {
-                Log.i("EmulationActivity", String.format("InputDeviceRemoved %d", i));
-                updateControllers();
-            }
-
-            @Override
-            public void onInputDeviceChanged(int i) {
-                Log.i("EmulationActivity", String.format("InputDeviceChanged %d", i));
-                updateControllers();
-            }
-        };
-
-        InputManager inputManager = ((InputManager) getSystemService(Context.INPUT_SERVICE));
-        if (inputManager != null)
-            inputManager.registerInputDeviceListener(mInputDeviceListener, null);
-    }
-
-    private void unregisterInputDeviceListener() {
-        if (mInputDeviceListener == null)
-            return;
-
-        InputManager inputManager = ((InputManager) getSystemService(Context.INPUT_SERVICE));
-        if (inputManager != null)
-            inputManager.unregisterInputDeviceListener(mInputDeviceListener);
-
-        mInputDeviceListener = null;
-    }
-
-    private Vibrator mVibratorService;
-
-    public void setVibration(boolean enabled) {
-        if (mVibratorService == null)
-            return;
-
-        runOnUiThread(() -> {
-            if (mVibratorService == null)
-                return;
-
-            if (enabled)
-                mVibratorService.vibrate(1000);
-            else
-                mVibratorService.cancel();
-        });
-    }
-
-    private boolean mSustainedPerformanceModeEnabled = false;
-
-    private void updateSustainedPerformanceMode() {
-        final boolean enabled = getBooleanSetting("Main/SustainedPerformanceMode", false);
-        if (mSustainedPerformanceModeEnabled == enabled)
-            return;
-
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-            getWindow().setSustainedPerformanceMode(enabled);
-            Log.i("EmulationActivity", String.format("%s sustained performance mode.", enabled ? "enabling" : "disabling"));
-        } else {
-            Log.e("EmulationActivity", "Sustained performance mode not supported.");
-        }
-        mSustainedPerformanceModeEnabled = enabled;
-
-    }
-
-    public static class MenuDialogFragment extends DialogFragment {
-        private EmulationActivity emulationActivity;
-        private boolean settingsChanged = false;
-
-        public MenuDialogFragment(EmulationActivity emulationActivity) {
-            this.emulationActivity = emulationActivity;
-        }
-
-        @Override
-        public void onCreate(@Nullable Bundle savedInstanceState) {
-            super.onCreate(savedInstanceState);
-            setStyle(STYLE_NO_FRAME, R.style.EmulationActivityOverlay);
-        }
-
-        @Nullable
-        @Override
-        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-            return inflater.inflate(R.layout.fragment_emulation_activity_overlay, container, false);
-        }
-
-        @Override
-        public void onViewCreated(View view, Bundle savedInstanceState) {
-            setContentFragment(new MenuSettingsFragment(this, emulationActivity), false);
-
-            final ImageView coverView =((ImageView)view.findViewById(R.id.cover_image));
-            if (emulationActivity.mGameCoverPath != null && !emulationActivity.mGameCoverPath.isEmpty()) {
-                new ImageLoadTask(coverView).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
-                        emulationActivity.mGameCoverPath);
-            } else if (emulationActivity.mGameTitle != null) {
-                new GenerateCoverTask(getContext(), coverView, emulationActivity.mGameTitle)
-                        .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-            }
-            coverView.setOnClickListener(v -> close(true));
-
-            if (emulationActivity.mGameTitle != null)
-              ((TextView)view.findViewById(R.id.title)).setText(emulationActivity.mGameTitle);
-
-            if (emulationActivity.mGameCode != null && emulationActivity.mGamePath != null)
-            {
-              final String subtitle = String.format("%s - %s", emulationActivity.mGameCode,
-                      FileHelper.getFileNameForPath(emulationActivity.mGamePath));
-              ((TextView)view.findViewById(R.id.subtitle)).setText(subtitle);
-            }
-
-            ((ImageButton)view.findViewById(R.id.menu)).setOnClickListener(v -> onMenuClicked());
-            ((ImageButton)view.findViewById(R.id.controller_settings)).setOnClickListener(v -> onControllerSettingsClicked());
-            ((ImageButton)view.findViewById(R.id.settings)).setOnClickListener(v -> onSettingsClicked());
-            ((ImageButton)view.findViewById(R.id.close)).setOnClickListener(v -> close(true));
-        }
-
-        @Override
-        public void onCancel(@NonNull DialogInterface dialog) {
-            onClosed(true);
-        }
-
-        private void onClosed(boolean resumeGame) {
-            if (settingsChanged)
-                emulationActivity.applySettings();
-
-            if (resumeGame)
-                emulationActivity.onMenuClosed();
-
-            emulationActivity.mPauseMenu = null;
-        }
-
-        public void close(boolean resumeGame) {
-            dismiss();
-            onClosed(resumeGame);
-        }
-
-        private void setContentFragment(Fragment fragment, boolean transition) {
-            FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
-            if (transition)
-                transaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
-            transaction.replace(R.id.content, fragment).commit();
-        }
-
-        private void onMenuClicked() {
-            setContentFragment(new MenuSettingsFragment(this, emulationActivity), true);
-        }
-
-        private void onControllerSettingsClicked() {
-            ControllerSettingsCollectionFragment fragment = new ControllerSettingsCollectionFragment();
-            setContentFragment(fragment, true);
-            fragment.setMultitapModeChangedListener(this::onControllerSettingsClicked);
-            settingsChanged = true;
-        }
-
-        private void onSettingsClicked() {
-            setContentFragment(new SettingsCollectionFragment(), true);
-            settingsChanged = true;
-        }
-    }
-
-    public static class MenuSettingsFragment extends PreferenceFragmentCompat {
-        private MenuDialogFragment menuDialogFragment;
-        private EmulationActivity emulationActivity;
-
-        public MenuSettingsFragment(MenuDialogFragment menuDialogFragment, EmulationActivity emulationActivity) {
-            this.menuDialogFragment = menuDialogFragment;
-            this.emulationActivity = emulationActivity;
-        }
-
-        @Override
-        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-            setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
-
-            final boolean cheevosActive = AndroidHostInterface.getInstance().isCheevosActive();
-            final boolean cheevosChallengeModeEnabled = AndroidHostInterface.getInstance().isCheevosChallengeModeActive();
-
-            createPreference(R.string.emulation_menu_load_state, R.drawable.ic_baseline_folder_open_24, !cheevosChallengeModeEnabled, preference -> {
-                menuDialogFragment.close(false);
-                emulationActivity.showSaveStateMenu(false);
-                return true;
-            });
-            createPreference(R.string.emulation_menu_save_state, R.drawable.ic_baseline_save_24, true, preference -> {
-                menuDialogFragment.close(false);
-                emulationActivity.showSaveStateMenu(true);
-                return true;
-            });
-            createPreference(R.string.emulation_menu_toggle_fast_forward, R.drawable.ic_baseline_fast_forward_24, !cheevosChallengeModeEnabled, preference -> {
-                AndroidHostInterface.getInstance().setFastForwardEnabled(!AndroidHostInterface.getInstance().isFastForwardEnabled());
-                menuDialogFragment.close(true);
-                return true;
-            });
-            createPreference(R.string.emulation_menu_achievements, R.drawable.ic_baseline_trophy_24, cheevosActive, preference -> {
-                menuDialogFragment.close(false);
-                emulationActivity.showAchievementsPopup();
-                return true;
-            });
-            createPreference(R.string.emulation_menu_exit_game, R.drawable.ic_baseline_exit_to_app_24, true, preference -> {
-                menuDialogFragment.close(false);
-                emulationActivity.mStopRequested = true;
-                emulationActivity.finish();
-                return true;
-            });
-            createPreference(R.string.emulation_menu_patch_codes, R.drawable.ic_baseline_tips_and_updates_24, !cheevosChallengeModeEnabled, preference -> {
-                menuDialogFragment.close(false);
-                emulationActivity.showPatchesMenu();
-                return true;
-            });
-            createPreference(R.string.emulation_menu_change_disc, R.drawable.ic_baseline_album_24, true, preference -> {
-                menuDialogFragment.close(false);
-                emulationActivity.showDiscChangeMenu();
-                return true;
-            });
-            createPreference(R.string.emulation_menu_touchscreen_controller_settings, R.drawable.ic_baseline_touch_app_24, true, preference -> {
-                menuDialogFragment.close(false);
-                emulationActivity.showTouchscreenControllerMenu();
-                return true;
-            });
-            createPreference(R.string.emulation_menu_toggle_analog_mode, R.drawable.ic_baseline_gamepad_24, true, preference -> {
-                AndroidHostInterface.getInstance().toggleControllerAnalogMode();
-                menuDialogFragment.close(true);
-                return true;
-            });
-            createPreference(R.string.emulation_menu_reset_console, R.drawable.ic_baseline_restart_alt_24, true, preference -> {
-                AndroidHostInterface.getInstance().resetSystem();
-                menuDialogFragment.close(true);
-                return true;
-            });
-        }
-
-        private void createPreference(int titleId, int icon, boolean enabled, Preference.OnPreferenceClickListener action) {
-            final Preference preference = new Preference(getContext());
-            preference.setTitle(titleId);
-            preference.setIcon(icon);
-            preference.setOnPreferenceClickListener(action);
-            preference.setEnabled(enabled);
-            getPreferenceScreen().addPreference(preference);
-        }
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationSurfaceView.java b/android/app/src/main/java/com/github/stenzek/duckstation/EmulationSurfaceView.java
deleted file mode 100644
index 2305caf16..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationSurfaceView.java
+++ /dev/null
@@ -1,302 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.os.Vibrator;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.InputDevice;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.SurfaceView;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class EmulationSurfaceView extends SurfaceView {
-    public EmulationSurfaceView(Context context) {
-        super(context);
-    }
-
-    public EmulationSurfaceView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public EmulationSurfaceView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    public static boolean isBindableDevice(InputDevice inputDevice) {
-        if (inputDevice == null)
-            return false;
-
-        // Accept all devices with an axis or buttons, filter in events.
-        final int sources = inputDevice.getSources();
-        return ((sources & InputDevice.SOURCE_CLASS_JOYSTICK) == InputDevice.SOURCE_CLASS_JOYSTICK) ||
-                ((sources & InputDevice.SOURCE_CLASS_BUTTON) == InputDevice.SOURCE_CLASS_BUTTON);
-    }
-
-    public static boolean isGamepadDevice(InputDevice inputDevice) {
-        final int sources = (inputDevice != null) ? inputDevice.getSources() : 0;
-        return ((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD);
-    }
-
-    public static boolean isJoystickMotionEvent(MotionEvent event) {
-        final int source = event.getSource();
-        return ((source & InputDevice.SOURCE_CLASS_JOYSTICK) == InputDevice.SOURCE_CLASS_JOYSTICK);
-    }
-
-    public static boolean isBindableKeyEvent(KeyEvent event) {
-        switch (event.getKeyCode()) {
-            case KeyEvent.KEYCODE_BACK:
-            case KeyEvent.KEYCODE_HOME:
-            case KeyEvent.KEYCODE_POWER:
-                // We're okay if we get these from a gamepad.
-                return isGamepadDevice(event.getDevice());
-
-            default:
-                return true;
-        }
-    }
-
-    private static boolean isSystemKeyCode(int keyCode) {
-        switch (keyCode) {
-            case KeyEvent.KEYCODE_MENU:
-            case KeyEvent.KEYCODE_SOFT_RIGHT:
-            case KeyEvent.KEYCODE_HOME:
-            case KeyEvent.KEYCODE_BACK:
-            case KeyEvent.KEYCODE_CALL:
-            case KeyEvent.KEYCODE_ENDCALL:
-            case KeyEvent.KEYCODE_VOLUME_UP:
-            case KeyEvent.KEYCODE_VOLUME_DOWN:
-            case KeyEvent.KEYCODE_VOLUME_MUTE:
-            case KeyEvent.KEYCODE_MUTE:
-            case KeyEvent.KEYCODE_POWER:
-            case KeyEvent.KEYCODE_HEADSETHOOK:
-            case KeyEvent.KEYCODE_MEDIA_PLAY:
-            case KeyEvent.KEYCODE_MEDIA_PAUSE:
-            case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
-            case KeyEvent.KEYCODE_MEDIA_STOP:
-            case KeyEvent.KEYCODE_MEDIA_NEXT:
-            case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
-            case KeyEvent.KEYCODE_MEDIA_REWIND:
-            case KeyEvent.KEYCODE_MEDIA_RECORD:
-            case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
-            case KeyEvent.KEYCODE_CAMERA:
-            case KeyEvent.KEYCODE_FOCUS:
-            case KeyEvent.KEYCODE_SEARCH:
-            case KeyEvent.KEYCODE_BRIGHTNESS_DOWN:
-            case KeyEvent.KEYCODE_BRIGHTNESS_UP:
-            case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK:
-            case KeyEvent.KEYCODE_SYSTEM_NAVIGATION_UP:
-            case KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN:
-            case KeyEvent.KEYCODE_SYSTEM_NAVIGATION_LEFT:
-            case KeyEvent.KEYCODE_SYSTEM_NAVIGATION_RIGHT:
-                return true;
-
-            default:
-                return false;
-        }
-    }
-
-    private class InputDeviceData {
-        private int deviceId;
-        private String descriptor;
-        private int[] axes;
-        private float[] axisValues;
-        private int controllerIndex;
-        private Vibrator vibrator;
-
-        public InputDeviceData(InputDevice device, int controllerIndex) {
-            deviceId = device.getId();
-            descriptor = device.getDescriptor();
-            this.controllerIndex = controllerIndex;
-
-            List<InputDevice.MotionRange> motionRanges = device.getMotionRanges();
-            if (motionRanges != null && !motionRanges.isEmpty()) {
-                axes = new int[motionRanges.size()];
-                axisValues = new float[motionRanges.size()];
-                for (int i = 0; i < motionRanges.size(); i++)
-                    axes[i] = motionRanges.get(i).getAxis();
-            }
-
-            // device.getVibrator() always returns null, but might return a "null vibrator".
-            final Vibrator potentialVibrator = device.getVibrator();
-            if (potentialVibrator != null && potentialVibrator.hasVibrator())
-                vibrator = potentialVibrator;
-        }
-    }
-
-    private InputDeviceData[] mInputDevices = null;
-    private String[] mControllerDescriptors = null;
-    private boolean mHasAnyGamepads = false;
-
-    public boolean hasAnyGamePads() {
-        return mHasAnyGamepads;
-    }
-
-    public synchronized void updateInputDevices() {
-        mInputDevices = null;
-        mControllerDescriptors = null;
-        mHasAnyGamepads = false;
-
-        final ArrayList<InputDeviceData> inputDeviceIds = new ArrayList<>();
-        final ArrayList<String> controllerDescriptors = new ArrayList<>();
-
-        for (int deviceId : InputDevice.getDeviceIds()) {
-            final InputDevice device = InputDevice.getDevice(deviceId);
-            if (device == null || !isBindableDevice(device)) {
-                Log.d("EmulationSurfaceView",
-                        String.format("Skipping device %s sources %d",
-                                (device != null) ? device.toString() : "",
-                                (device != null) ? device.getSources() : 0));
-                continue;
-            }
-
-            if (isGamepadDevice(device))
-                mHasAnyGamepads = true;
-
-            // Some phones seem to have duplicate descriptors for multiple devices.
-            // Combine them all into one controller index if so.
-            final String descriptor = device.getDescriptor();
-            int controllerIndex = controllerDescriptors.size();
-            for (int i = 0; i < controllerDescriptors.size(); i++) {
-                if (controllerDescriptors.get(i).equals(descriptor)) {
-                    controllerIndex = i;
-                    break;
-                }
-            }
-            if (controllerIndex == controllerDescriptors.size()) {
-                controllerDescriptors.add(descriptor);
-            }
-
-            Log.d("EmulationSurfaceView", String.format("Tracking device %d/%s (%s, sources %d, controller %d)",
-                    controllerIndex, descriptor, device.getName(), device.getSources(), controllerIndex));
-            inputDeviceIds.add(new InputDeviceData(device, controllerIndex));
-        }
-
-        if (inputDeviceIds.isEmpty())
-            return;
-
-        mInputDevices = new InputDeviceData[inputDeviceIds.size()];
-        inputDeviceIds.toArray(mInputDevices);
-
-        mControllerDescriptors = new String[controllerDescriptors.size()];
-        controllerDescriptors.toArray(mControllerDescriptors);
-    }
-
-    public synchronized String[] getInputDeviceNames() {
-        return mControllerDescriptors;
-    }
-
-    public synchronized boolean hasInputDeviceVibration(int controllerIndex) {
-        if (mInputDevices == null || controllerIndex >= mInputDevices.length)
-            return false;
-
-        return (mInputDevices[controllerIndex].vibrator != null);
-    }
-
-    public synchronized void setInputDeviceVibration(int controllerIndex, float smallMotor, float largeMotor) {
-        if (mInputDevices == null || controllerIndex >= mInputDevices.length)
-            return;
-
-        // shouldn't get here
-        final InputDeviceData data = mInputDevices[controllerIndex];
-        if (data.vibrator == null)
-            return;
-
-        final float MINIMUM_INTENSITY = 0.1f;
-        if (smallMotor >= MINIMUM_INTENSITY || largeMotor >= MINIMUM_INTENSITY)
-            data.vibrator.vibrate(1000);
-        else
-            data.vibrator.cancel();
-    }
-
-    public InputDeviceData getDataForDeviceId(int deviceId) {
-        if (mInputDevices == null)
-            return null;
-
-        for (InputDeviceData data : mInputDevices) {
-            if (data.deviceId == deviceId)
-                return data;
-        }
-
-        return null;
-    }
-
-    public int getControllerIndexForDeviceId(int deviceId) {
-        final InputDeviceData data = getDataForDeviceId(deviceId);
-        return (data != null) ? data.controllerIndex : -1;
-    }
-
-    private boolean handleKeyEvent(int deviceId, int repeatCount, int keyCode, boolean pressed) {
-        final int controllerIndex = getControllerIndexForDeviceId(deviceId);
-        Log.d("EmulationSurfaceView", String.format("Controller %d Code %d RC %d Pressed %d",
-                controllerIndex, keyCode, repeatCount, pressed? 1 : 0));
-
-        final AndroidHostInterface hi = AndroidHostInterface.getInstance();
-        if (repeatCount == 0 && controllerIndex >= 0)
-            hi.handleControllerButtonEvent(controllerIndex, keyCode, pressed);
-
-        // We don't want to eat external button events unless it's actually bound.
-        if (isSystemKeyCode(keyCode))
-            return (controllerIndex >= 0 && hi.hasControllerButtonBinding(controllerIndex, keyCode));
-        else
-            return true;
-    }
-
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        return handleKeyEvent(event.getDeviceId(), event.getRepeatCount(), keyCode, true);
-    }
-
-    @Override
-    public boolean onKeyUp(int keyCode, KeyEvent event) {
-        return handleKeyEvent(event.getDeviceId(), 0, keyCode, false);
-    }
-
-    private float clamp(float value, float min, float max) {
-        return (value < min) ? min : ((value > max) ? max : value);
-    }
-
-    @Override
-    public boolean onGenericMotionEvent(MotionEvent event) {
-        if (!isJoystickMotionEvent(event))
-            return false;
-
-        final InputDeviceData data = getDataForDeviceId(event.getDeviceId());
-        if (data == null || data.axes == null)
-            return false;
-
-        for (int i = 0; i < data.axes.length; i++) {
-            final int axis = data.axes[i];
-            final float axisValue = event.getAxisValue(axis);
-            float emuValue;
-
-            switch (axis) {
-                case MotionEvent.AXIS_BRAKE:
-                case MotionEvent.AXIS_GAS:
-                case MotionEvent.AXIS_LTRIGGER:
-                case MotionEvent.AXIS_RTRIGGER:
-                    // Scale 0..1 -> -1..1.
-                    emuValue = (clamp(axisValue, 0.0f, 1.0f) * 2.0f) - 1.0f;
-                    break;
-
-                default:
-                    // Everything else should already by -1..1 as per Android documentation.
-                    emuValue = clamp(axisValue, -1.0f, 1.0f);
-                    break;
-            }
-
-            if (data.axisValues[i] == emuValue)
-                continue;
-
-            Log.d("EmulationSurfaceView",
-                    String.format("axis %d value %f emuvalue %f", axis, axisValue, emuValue));
-
-            data.axisValues[i] = emuValue;
-            AndroidHostInterface.getInstance().handleControllerAxisEvent(data.controllerIndex, axis, emuValue);
-        }
-
-        return true;
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationThread.java b/android/app/src/main/java/com/github/stenzek/duckstation/EmulationThread.java
deleted file mode 100644
index 0bdcf25d9..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationThread.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.os.Build;
-import android.os.Process;
-import android.util.Log;
-import android.view.Surface;
-
-import androidx.annotation.NonNull;
-
-public class EmulationThread extends Thread {
-    private EmulationActivity emulationActivity;
-    private String filename;
-    private boolean resumeState;
-    private String stateFilename;
-
-    private EmulationThread(EmulationActivity emulationActivity, String filename, boolean resumeState, String stateFilename) {
-        super("EmulationThread");
-        this.emulationActivity = emulationActivity;
-        this.filename = filename;
-        this.resumeState = resumeState;
-        this.stateFilename = stateFilename;
-    }
-
-    public static EmulationThread create(EmulationActivity emulationActivity, String filename, boolean resumeState, String stateFilename) {
-        Log.i("EmulationThread", String.format("Starting emulation thread (%s)...", filename));
-
-        EmulationThread thread = new EmulationThread(emulationActivity, filename, resumeState, stateFilename);
-        thread.start();
-        return thread;
-    }
-
-    private void setExclusiveCores() {
-        try {
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-                int[] cores = Process.getExclusiveCores();
-                if (cores == null || cores.length == 0)
-                    throw new Exception("Invalid return value from getExclusiveCores()");
-
-                AndroidHostInterface.setThreadAffinity(cores);
-            }
-        } catch (Exception e) {
-            Log.e("EmulationThread", "getExclusiveCores() failed");
-        }
-    }
-
-    @Override
-    public void run() {
-        try {
-            Process.setThreadPriority(Process.THREAD_PRIORITY_MORE_FAVORABLE);
-            setExclusiveCores();
-        } catch (Exception e) {
-            Log.i("EmulationThread", "Failed to set priority for emulation thread: " + e.getMessage());
-        }
-
-        AndroidHostInterface.getInstance().runEmulationThread(emulationActivity, filename, resumeState, stateFilename);
-        Log.i("EmulationThread", "Emulation thread exiting.");
-    }
-
-    public void stopAndJoin() {
-        AndroidHostInterface.getInstance().stopEmulationThreadLoop();
-        try {
-            join();
-        } catch (InterruptedException e) {
-            Log.i("EmulationThread", "join() interrupted: " + e.getMessage());
-        }
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/FileHelper.java b/android/app/src/main/java/com/github/stenzek/duckstation/FileHelper.java
deleted file mode 100644
index 258350d0d..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/FileHelper.java
+++ /dev/null
@@ -1,613 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.database.Cursor;
-import android.graphics.Bitmap;
-import android.graphics.ImageDecoder;
-import android.net.Uri;
-import android.os.Build;
-import android.os.ParcelFileDescriptor;
-import android.os.storage.StorageManager;
-import android.provider.DocumentsContract;
-import android.provider.MediaStore;
-
-import androidx.annotation.Nullable;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.lang.reflect.Array;
-import java.lang.reflect.Method;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * File helper class - used to bridge native code to Java storage access framework APIs.
- */
-public class FileHelper {
-    /**
-     * Native filesystem flags.
-     */
-    public static final int FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY = 1;
-    public static final int FILESYSTEM_FILE_ATTRIBUTE_READ_ONLY = 2;
-    public static final int FILESYSTEM_FILE_ATTRIBUTE_COMPRESSED = 4;
-
-    /**
-     * Native filesystem find result flags.
-     */
-    public static final int FILESYSTEM_FIND_RECURSIVE = (1 << 0);
-    public static final int FILESYSTEM_FIND_RELATIVE_PATHS = (1 << 1);
-    public static final int FILESYSTEM_FIND_HIDDEN_FILES = (1 << 2);
-    public static final int FILESYSTEM_FIND_FOLDERS = (1 << 3);
-    public static final int FILESYSTEM_FIND_FILES = (1 << 4);
-    public static final int FILESYSTEM_FIND_KEEP_ARRAY = (1 << 5);
-
-    /**
-     * Projection used when searching for files.
-     */
-    private static final String[] findProjection = new String[]{
-            DocumentsContract.Document.COLUMN_DOCUMENT_ID,
-            DocumentsContract.Document.COLUMN_DISPLAY_NAME,
-            DocumentsContract.Document.COLUMN_MIME_TYPE,
-            DocumentsContract.Document.COLUMN_SIZE,
-            DocumentsContract.Document.COLUMN_LAST_MODIFIED
-    };
-
-    /**
-     * Projection used when getting the display name for a file.
-     */
-    private static final String[] getDisplayNameProjection = new String[]{
-            DocumentsContract.Document.COLUMN_DISPLAY_NAME,
-    };
-
-    /**
-     * Projection used when getting a relative file for a file.
-     */
-    private static final String[] getRelativeFileProjection = new String[]{
-            DocumentsContract.Document.COLUMN_DOCUMENT_ID,
-            DocumentsContract.Document.COLUMN_DISPLAY_NAME,
-    };
-
-    private final Context context;
-    private final ContentResolver contentResolver;
-
-    /**
-     * File helper class - used to bridge native code to Java storage access framework APIs.
-     *
-     * @param context Context in which to perform file actions as.
-     */
-    public FileHelper(Context context) {
-        this.context = context;
-        this.contentResolver = context.getContentResolver();
-    }
-
-    /**
-     * Reads the specified file as a string, under the specified context.
-     *
-     * @param context context to access file under
-     * @param uri     uri to write data to
-     * @param maxSize maximum file size to read
-     * @return String containing the file data, otherwise null
-     */
-    public static String readStringFromUri(final Context context, final Uri uri, int maxSize) {
-        InputStream stream = null;
-        try {
-            stream = context.getContentResolver().openInputStream(uri);
-        } catch (FileNotFoundException e) {
-            return null;
-        }
-
-        StringBuilder os = new StringBuilder();
-        try {
-            char[] buffer = new char[1024];
-            InputStreamReader reader = new InputStreamReader(stream, Charset.forName(StandardCharsets.UTF_8.name()));
-            int len;
-            while ((len = reader.read(buffer)) > 0) {
-                os.append(buffer, 0, len);
-                if (os.length() > maxSize)
-                    return null;
-            }
-
-            stream.close();
-        } catch (IOException e) {
-            return null;
-        }
-
-        if (os.length() == 0)
-            return null;
-
-        return os.toString();
-    }
-
-    /**
-     * Reads the specified file as a byte array, under the specified context.
-     *
-     * @param context context to access file under
-     * @param uri     uri to write data to
-     * @param maxSize maximum file size to read
-     * @return byte array containing the file data, otherwise null
-     */
-    public static byte[] readBytesFromUri(final Context context, final Uri uri, int maxSize) {
-        InputStream stream = null;
-        try {
-            stream = context.getContentResolver().openInputStream(uri);
-        } catch (FileNotFoundException e) {
-            return null;
-        }
-
-        ByteArrayOutputStream os = new ByteArrayOutputStream();
-        try {
-            byte[] buffer = new byte[512 * 1024];
-            int len;
-            while ((len = stream.read(buffer)) > 0) {
-                os.write(buffer, 0, len);
-                if (maxSize > 0 && os.size() > maxSize) {
-                    return null;
-                }
-            }
-
-            stream.close();
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-
-        if (os.size() == 0)
-            return null;
-
-        return os.toByteArray();
-    }
-
-    /**
-     * Writes the specified data to a file referenced by the URI, as the specified context.
-     *
-     * @param context context to access file under
-     * @param uri     uri to write data to
-     * @param bytes   data to write file to
-     * @return true if write was succesful, otherwise false
-     */
-    public static boolean writeBytesToUri(final Context context, final Uri uri, final byte[] bytes) {
-        OutputStream stream = null;
-        try {
-            stream = context.getContentResolver().openOutputStream(uri);
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-            return false;
-        }
-
-        if (bytes != null && bytes.length > 0) {
-            try {
-                stream.write(bytes);
-                stream.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Deletes the file referenced by the URI, under the specified context.
-     *
-     * @param context context to delete file under
-     * @param uri     uri to delete
-     * @return
-     */
-    public static boolean deleteFileAtUri(final Context context, final Uri uri) {
-        try {
-            if (uri.getScheme() == "file") {
-                final File file = new File(uri.getPath());
-                if (!file.isFile())
-                    return false;
-
-                return file.delete();
-            }
-            return (context.getContentResolver().delete(uri, null, null) > 0);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return false;
-        }
-    }
-
-    /**
-     * Returns the name of the file pointed at by a SAF URI.
-     *
-     * @param context context to access file under
-     * @param uri     uri to retrieve file name for
-     * @return the name of the file, or null
-     */
-    public static String getDocumentNameFromUri(final Context context, final Uri uri) {
-        Cursor cursor = null;
-        try {
-            final String[] proj = {DocumentsContract.Document.COLUMN_DISPLAY_NAME};
-            cursor = context.getContentResolver().query(uri, proj, null, null, null);
-            final int columnIndex = cursor.getColumnIndexOrThrow(DocumentsContract.Document.COLUMN_DISPLAY_NAME);
-            cursor.moveToFirst();
-            return cursor.getString(columnIndex);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        } finally {
-            if (cursor != null)
-                cursor.close();
-        }
-    }
-
-    /**
-     * Loads a bitmap from the provided SAF URI.
-     *
-     * @param context context to access file under
-     * @param uri     uri to retrieve file name for
-     * @return a decoded bitmap for the file, or null
-     */
-    public static Bitmap loadBitmapFromUri(final Context context, final Uri uri) {
-        InputStream stream = null;
-        try {
-            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
-                final ImageDecoder.Source source = ImageDecoder.createSource(context.getContentResolver(), uri);
-                return ImageDecoder.decodeBitmap(source);
-            } else {
-                return MediaStore.Images.Media.getBitmap(context.getContentResolver(), uri);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    /**
-     * Returns the file name component of a path or URI.
-     *
-     * @param path Path/URI to examine.
-     * @return File name component of path/URI.
-     */
-    public static String getFileNameForPath(String path) {
-        if (path.startsWith("content:/") || path.startsWith("file:/")) {
-            try {
-                final Uri uri = Uri.parse(path);
-                final String lastPathSegment = uri.getLastPathSegment();
-                if (lastPathSegment != null)
-                    path = lastPathSegment;
-            } catch (Exception e) {
-            }
-        }
-
-        int lastSlash = path.lastIndexOf('/');
-        if (lastSlash > 0 && lastSlash < path.length() - 1)
-            return path.substring(lastSlash + 1);
-        else
-            return path;
-    }
-
-    /**
-     * Test if the given URI represents a {@link DocumentsContract.Document} tree.
-     */
-    public static boolean isTreeUri(Uri uri) {
-        final List<String> paths = uri.getPathSegments();
-        return (paths.size() >= 2 && paths.get(0).equals("tree"));
-    }
-
-    /**
-     * Retrieves a file descriptor for a content URI string. Called by native code.
-     *
-     * @param uriString string of the URI to open
-     * @param mode      Java open mode
-     * @return file descriptor for URI, or -1
-     */
-    public int openURIAsFileDescriptor(String uriString, String mode) {
-        try {
-            final Uri uri = Uri.parse(uriString);
-            final ParcelFileDescriptor fd = contentResolver.openFileDescriptor(uri, mode);
-            if (fd == null)
-                return -1;
-            return fd.detachFd();
-        } catch (Exception e) {
-            return -1;
-        }
-    }
-
-    /**
-     * Recursively iterates documents in the specified tree, searching for files.
-     *
-     * @param treeUri    Root tree in which to search for documents.
-     * @param documentId Document ID representing the directory to start searching.
-     * @param flags      Native search flags.
-     * @param results    Cumulative result array.
-     */
-    private void doFindFiles(Uri treeUri, String documentId, int flags, ArrayList<FindResult> results) {
-        try {
-            final Uri queryUri = DocumentsContract.buildChildDocumentsUriUsingTree(treeUri, documentId);
-            final Cursor cursor = contentResolver.query(queryUri, findProjection, null, null, null);
-            final int count = cursor.getCount();
-
-            while (cursor.moveToNext()) {
-                try {
-                    final String mimeType = cursor.getString(2);
-                    final String childDocumentId = cursor.getString(0);
-                    final Uri uri = DocumentsContract.buildDocumentUriUsingTree(treeUri, childDocumentId);
-                    final long size = cursor.getLong(3);
-                    final long lastModified = cursor.getLong(4);
-
-                    if (DocumentsContract.Document.MIME_TYPE_DIR.equals(mimeType)) {
-                        if ((flags & FILESYSTEM_FIND_FOLDERS) != 0) {
-                            results.add(new FindResult(childDocumentId, uri.toString(), size, lastModified, FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY));
-                        }
-
-                        if ((flags & FILESYSTEM_FIND_RECURSIVE) != 0)
-                            doFindFiles(treeUri, childDocumentId, flags, results);
-                    } else {
-                        if ((flags & FILESYSTEM_FIND_FILES) != 0) {
-                            results.add(new FindResult(childDocumentId, uri.toString(), size, lastModified, 0));
-                        }
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-            cursor.close();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Recursively iterates documents in the specified URI, searching for files.
-     *
-     * @param uriString URI containing directory to search.
-     * @param flags     Native filter flags.
-     * @return Array of find results.
-     */
-    public FindResult[] findFiles(String uriString, int flags) {
-        try {
-            final Uri fullUri = Uri.parse(uriString);
-            final String documentId = DocumentsContract.getTreeDocumentId(fullUri);
-            final ArrayList<FindResult> results = new ArrayList<>();
-            doFindFiles(fullUri, documentId, flags, results);
-            if (results.isEmpty())
-                return null;
-
-            final FindResult[] resultsArray = new FindResult[results.size()];
-            results.toArray(resultsArray);
-            return resultsArray;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    /**
-     * Returns the display name for the given URI.
-     *
-     * @param uriString URI to resolve display name for.
-     * @return display name for the URI, or null.
-     */
-    public String getDisplayNameForURIPath(String uriString) {
-        try {
-            final Uri fullUri = Uri.parse(uriString);
-            final Cursor cursor = contentResolver.query(fullUri, getDisplayNameProjection,
-                    null, null, null);
-            if (cursor.getCount() == 0 || !cursor.moveToNext())
-                return null;
-
-            return cursor.getString(0);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    /**
-     * Returns the path for a sibling file relative to another URI.
-     *
-     * @param uriString   URI to find the file relative to.
-     * @param newFileName Sibling file name.
-     * @return URI for the sibling file name, or null.
-     */
-    public String getRelativePathForURIPath(String uriString, String newFileName) {
-        try {
-            final Uri fullUri = Uri.parse(uriString);
-
-            // if this is a document (expected)...
-            Uri treeUri;
-            String treeDocId;
-            if (DocumentsContract.isDocumentUri(context, fullUri)) {
-                // we need to remove the last part of the URI (the specific document ID) to get the parent
-                final String lastPathSegment = fullUri.getLastPathSegment();
-                int lastSeparatorIndex = lastPathSegment.lastIndexOf('/');
-                if (lastSeparatorIndex < 0)
-                    lastSeparatorIndex = lastPathSegment.lastIndexOf(':');
-                if (lastSeparatorIndex < 0)
-                    return null;
-
-                // the parent becomes the document ID
-                treeDocId = lastPathSegment.substring(0, lastSeparatorIndex);
-
-                // but, we need to access it through the subtree if this was a tree URI (permissions...)
-                if (isTreeUri(fullUri)) {
-                    treeUri = DocumentsContract.buildTreeDocumentUri(fullUri.getAuthority(), DocumentsContract.getTreeDocumentId(fullUri));
-                } else {
-                    treeUri = DocumentsContract.buildTreeDocumentUri(fullUri.getAuthority(), treeDocId);
-                }
-            } else {
-                treeDocId = DocumentsContract.getDocumentId(fullUri);
-                treeUri = fullUri;
-            }
-
-            final Uri queryUri = DocumentsContract.buildChildDocumentsUriUsingTree(treeUri, treeDocId);
-            final Cursor cursor = contentResolver.query(queryUri, getRelativeFileProjection, null, null, null);
-            final int count = cursor.getCount();
-
-            while (cursor.moveToNext()) {
-                try {
-                    final String displayName = cursor.getString(1);
-                    if (!displayName.equalsIgnoreCase(newFileName))
-                        continue;
-
-                    final String childDocumentId = cursor.getString(0);
-                    final Uri uri = DocumentsContract.buildDocumentUriUsingTree(treeUri, childDocumentId);
-                    cursor.close();
-                    return uri.toString();
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-
-            cursor.close();
-            return null;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    private static final String PRIMARY_VOLUME_NAME = "primary";
-
-    @Nullable
-    public static String getFullPathFromTreeUri(@Nullable final Uri treeUri, Context con) {
-        if (treeUri == null) return null;
-        String volumePath = getVolumePath(getVolumeIdFromTreeUri(treeUri), con);
-        if (volumePath == null) return File.separator;
-        if (volumePath.endsWith(File.separator))
-            volumePath = volumePath.substring(0, volumePath.length() - 1);
-
-        String documentPath = getDocumentPathFromTreeUri(treeUri);
-        if (documentPath.endsWith(File.separator))
-            documentPath = documentPath.substring(0, documentPath.length() - 1);
-
-        if (documentPath.length() > 0) {
-            if (documentPath.startsWith(File.separator))
-                return volumePath + documentPath;
-            else
-                return volumePath + File.separator + documentPath;
-        } else return volumePath;
-    }
-
-    @SuppressLint("ObsoleteSdkInt")
-    private static String getVolumePath(final String volumeId, Context context) {
-        if (volumeId == null)
-            return null;
-
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return null;
-        try {
-            StorageManager mStorageManager =
-                    (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
-            Class<?> storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");
-            Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");
-            Method getUuid = storageVolumeClazz.getMethod("getUuid");
-            Method getPath = storageVolumeClazz.getMethod("getPath");
-            Method isPrimary = storageVolumeClazz.getMethod("isPrimary");
-            Object result = getVolumeList.invoke(mStorageManager);
-
-            final int length = Array.getLength(result);
-            for (int i = 0; i < length; i++) {
-                Object storageVolumeElement = Array.get(result, i);
-                String uuid = (String) getUuid.invoke(storageVolumeElement);
-                Boolean primary = (Boolean) isPrimary.invoke(storageVolumeElement);
-
-                // primary volume?
-                if (primary && PRIMARY_VOLUME_NAME.equals(volumeId))
-                    return (String) getPath.invoke(storageVolumeElement);
-
-                // other volumes?
-                if (uuid != null && uuid.equals(volumeId))
-                    return (String) getPath.invoke(storageVolumeElement);
-            }
-            // not found.
-            return null;
-        } catch (Exception ex) {
-            return null;
-        }
-    }
-
-    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
-    private static String getVolumeIdFromTreeUri(final Uri treeUri) {
-        final String docId = DocumentsContract.getTreeDocumentId(treeUri);
-        final String[] split = docId.split(":");
-        if (split.length > 0) return split[0];
-        else return null;
-    }
-
-
-    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
-    private static String getDocumentPathFromTreeUri(final Uri treeUri) {
-        final String docId = DocumentsContract.getTreeDocumentId(treeUri);
-        final String[] split = docId.split(":");
-        if ((split.length >= 2) && (split[1] != null)) return split[1];
-        else return File.separator;
-    }
-
-    @Nullable
-    public static String getFullPathFromUri(@Nullable final Uri treeUri, Context con) {
-        if (treeUri == null) return null;
-        String volumePath = getVolumePath(getVolumeIdFromUri(treeUri), con);
-        if (volumePath == null) return File.separator;
-        if (volumePath.endsWith(File.separator))
-            volumePath = volumePath.substring(0, volumePath.length() - 1);
-
-        String documentPath = getDocumentPathFromUri(treeUri);
-        if (documentPath.endsWith(File.separator))
-            documentPath = documentPath.substring(0, documentPath.length() - 1);
-
-        if (documentPath.length() > 0) {
-            if (documentPath.startsWith(File.separator))
-                return volumePath + documentPath;
-            else
-                return volumePath + File.separator + documentPath;
-        } else return volumePath;
-    }
-
-    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
-    private static String getVolumeIdFromUri(final Uri treeUri) {
-        try {
-            final String docId = DocumentsContract.getDocumentId(treeUri);
-            final String[] split = docId.split(":");
-            if (split.length > 0) return split[0];
-            else return null;
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-
-    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
-    private static String getDocumentPathFromUri(final Uri treeUri) {
-        try {
-            final String docId = DocumentsContract.getDocumentId(treeUri);
-            final String[] split = docId.split(":");
-            if ((split.length >= 2) && (split[1] != null)) return split[1];
-            else return File.separator;
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    /**
-     * Java class containing the data for a file in a find operation.
-     */
-    public static class FindResult {
-        public String name;
-        public String relativeName;
-        public long size;
-        public long modifiedTime;
-        public int flags;
-
-        public FindResult(String relativeName, String name, long size, long modifiedTime, int flags) {
-            this.relativeName = relativeName;
-            this.name = name;
-            this.size = size;
-            this.modifiedTime = modifiedTime;
-            this.flags = flags;
-        }
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/GameDirectoriesActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/GameDirectoriesActivity.java
deleted file mode 100644
index 4c1bd85b2..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/GameDirectoriesActivity.java
+++ /dev/null
@@ -1,348 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.FileUtils;
-import android.util.Log;
-import android.util.Property;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.EditText;
-import android.widget.ImageButton;
-import android.widget.ListAdapter;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.ActionBar;
-import androidx.appcompat.app.AlertDialog;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.ListFragment;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.viewpager2.adapter.FragmentStateAdapter;
-import androidx.viewpager2.widget.ViewPager2;
-
-import com.google.android.material.tabs.TabLayout;
-import com.google.android.material.tabs.TabLayoutMediator;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Set;
-
-public class GameDirectoriesActivity extends AppCompatActivity {
-    private static final int REQUEST_ADD_DIRECTORY_TO_GAME_LIST = 1;
-    private static final String FORCE_SAF_CONFIG_KEY = "GameList/ForceStorageAccessFramework";
-
-    private class DirectoryListAdapter extends RecyclerView.Adapter {
-        private class Entry {
-            private String mPath;
-            private boolean mRecursive;
-
-            public Entry(String path, boolean recursive) {
-                mPath = path;
-                mRecursive = recursive;
-            }
-
-            public String getPath() {
-                return mPath;
-            }
-
-            public boolean isRecursive() {
-                return mRecursive;
-            }
-
-            public void toggleRecursive() {
-                mRecursive = !mRecursive;
-            }
-        }
-
-        private class EntryComparator implements Comparator<Entry> {
-            @Override
-            public int compare(Entry left, Entry right) {
-                return left.getPath().compareTo(right.getPath());
-            }
-        }
-
-        private Context mContext;
-        private Entry[] mEntries;
-
-        public DirectoryListAdapter(Context context) {
-            mContext = context;
-            reload();
-        }
-
-        public void reload() {
-            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
-            ArrayList<Entry> entries = new ArrayList<>();
-
-            try {
-                Set<String> paths = prefs.getStringSet("GameList/Paths", null);
-                if (paths != null) {
-                    for (String path : paths)
-                        entries.add(new Entry(path, false));
-                }
-            } catch (Exception e) {
-            }
-
-            try {
-                Set<String> paths = prefs.getStringSet("GameList/RecursivePaths", null);
-                if (paths != null) {
-                    for (String path : paths)
-                        entries.add(new Entry(path, true));
-                }
-            } catch (Exception e) {
-            }
-
-            mEntries = new Entry[entries.size()];
-            entries.toArray(mEntries);
-            Arrays.sort(mEntries, new EntryComparator());
-            notifyDataSetChanged();
-        }
-
-        private class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
-            private int mPosition;
-            private Entry mEntry;
-            private TextView mPathView;
-            private TextView mRecursiveView;
-            private ImageButton mToggleRecursiveView;
-            private ImageButton mRemoveView;
-
-            public ViewHolder(View rootView) {
-                super(rootView);
-                mPathView = rootView.findViewById(R.id.path);
-                mRecursiveView = rootView.findViewById(R.id.recursive);
-                mToggleRecursiveView = rootView.findViewById(R.id.toggle_recursive);
-                mToggleRecursiveView.setOnClickListener(this);
-                mRemoveView = rootView.findViewById(R.id.remove);
-                mRemoveView.setOnClickListener(this);
-            }
-
-            public void bindData(int position, Entry entry) {
-                mPosition = position;
-                mEntry = entry;
-                updateText();
-            }
-
-            private void updateText() {
-                mPathView.setText(mEntry.getPath());
-                mRecursiveView.setText(getString(mEntry.isRecursive() ? R.string.game_directories_scanning_subdirectories : R.string.game_directories_not_scanning_subdirectories));
-                mToggleRecursiveView.setImageDrawable(getDrawable(mEntry.isRecursive() ? R.drawable.ic_baseline_folder_24 : R.drawable.ic_baseline_folder_open_24));
-            }
-
-            @Override
-            public void onClick(View v) {
-                if (mToggleRecursiveView == v) {
-                    removeSearchDirectory(mContext, mEntry.getPath(), mEntry.isRecursive());
-                    mEntry.toggleRecursive();
-                    addSearchDirectory(mContext, mEntry.getPath(), mEntry.isRecursive());
-                    updateText();
-                } else if (mRemoveView == v) {
-                    removeSearchDirectory(mContext, mEntry.getPath(), mEntry.isRecursive());
-                    reload();
-                }
-            }
-        }
-
-        @NonNull
-        @Override
-        public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-            final View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
-            return new ViewHolder(view);
-        }
-
-        @Override
-        public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
-            ((ViewHolder) holder).bindData(position, mEntries[position]);
-        }
-
-        @Override
-        public int getItemViewType(int position) {
-            return R.layout.layout_game_directory_entry;
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return mEntries[position].getPath().hashCode();
-        }
-
-        @Override
-        public int getItemCount() {
-            return mEntries.length;
-        }
-    }
-
-    DirectoryListAdapter mDirectoryListAdapter;
-    RecyclerView mRecyclerView;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.activity_game_directories);
-        Toolbar toolbar = findViewById(R.id.toolbar);
-        setSupportActionBar(toolbar);
-
-        ActionBar actionBar = getSupportActionBar();
-        if (actionBar != null) {
-            actionBar.setDisplayHomeAsUpEnabled(true);
-        }
-
-        mDirectoryListAdapter = new DirectoryListAdapter(this);
-        mRecyclerView = findViewById(R.id.recycler_view);
-        mRecyclerView.setAdapter(mDirectoryListAdapter);
-        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
-        mRecyclerView.addItemDecoration(new DividerItemDecoration(mRecyclerView.getContext(),
-                DividerItemDecoration.VERTICAL));
-
-        findViewById(R.id.fab).setOnClickListener((v) -> startAddGameDirectory());
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        // Inflate the menu; this adds items to the action bar if it is present.
-        getMenuInflater().inflate(R.menu.menu_edit_game_directories, menu);
-
-        menu.findItem(R.id.force_saf)
-                .setEnabled(android.os.Build.VERSION.SDK_INT < 30)
-                .setChecked(PreferenceManager.getDefaultSharedPreferences(this).getBoolean(
-                        FORCE_SAF_CONFIG_KEY, false))
-                .setOnMenuItemClickListener(item -> {
-                    final SharedPreferences sharedPreferences =
-                            PreferenceManager.getDefaultSharedPreferences(this);
-                    final boolean newValue =!sharedPreferences.getBoolean(
-                            FORCE_SAF_CONFIG_KEY, false);
-                    sharedPreferences.edit()
-                            .putBoolean(FORCE_SAF_CONFIG_KEY, newValue)
-                            .commit();
-                    item.setChecked(newValue);
-                    return true;
-                });
-
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            onBackPressed();
-            return true;
-        }
-
-        if (item.getItemId() == R.id.add_directory) {
-            startAddGameDirectory();
-            return true;
-        } else if (item.getItemId() == R.id.add_path) {
-            startAddPath();
-            return true;
-        }
-
-        return super.onOptionsItemSelected(item);
-    }
-
-    public static boolean useStorageAccessFramework(Context context) {
-        // Use legacy storage on devices older than Android 11... apparently some of them
-        // have broken storage access framework....
-        if (android.os.Build.VERSION.SDK_INT >= 30)
-            return true;
-
-        return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(
-                "GameList/ForceStorageAccessFramework", false);
-    }
-
-    public static void addSearchDirectory(Context context, String path, boolean recursive) {
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        final String key = recursive ? "GameList/RecursivePaths" : "GameList/Paths";
-        PreferenceHelpers.addToStringList(prefs, key, path);
-        Log.i("GameDirectoriesActivity", "Added path '" + path + "' to game list search directories");
-    }
-
-    public static void removeSearchDirectory(Context context, String path, boolean recursive) {
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        final String key = recursive ? "GameList/RecursivePaths" : "GameList/Paths";
-        PreferenceHelpers.removeFromStringList(prefs, key, path);
-        Log.i("GameDirectoriesActivity", "Removed path '" + path + "' from game list search directories");
-    }
-
-    private void startAddGameDirectory() {
-        Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
-        i.addCategory(Intent.CATEGORY_DEFAULT);
-        i.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
-        i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-        i.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
-        startActivityForResult(Intent.createChooser(i, getString(R.string.main_activity_choose_directory)),
-                REQUEST_ADD_DIRECTORY_TO_GAME_LIST);
-    }
-
-    private void startAddPath() {
-        final EditText text = new EditText(this);
-        text.setSingleLine();
-
-        new AlertDialog.Builder(this)
-                .setTitle(R.string.edit_game_directories_add_path)
-                .setMessage(R.string.edit_game_directories_add_path_summary)
-                .setView(text)
-                .setPositiveButton("Add", (dialog, which) -> {
-                    final String path = text.getText().toString();
-                    if (!path.isEmpty()) {
-                        addSearchDirectory(GameDirectoriesActivity.this, path, true);
-                        mDirectoryListAdapter.reload();
-                    }
-                })
-                .setNegativeButton("Cancel", (dialog, which) -> dialog.dismiss())
-                .show();
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-
-        switch (requestCode) {
-            case REQUEST_ADD_DIRECTORY_TO_GAME_LIST: {
-                if (resultCode != RESULT_OK || data.getData() == null)
-                    return;
-
-                // Use legacy storage on devices older than Android 11... apparently some of them
-                // have broken storage access framework....
-                if (!useStorageAccessFramework(this)) {
-                    final String path = FileHelper.getFullPathFromTreeUri(data.getData(), this);
-                    if (path != null) {
-                        addSearchDirectory(this, path, true);
-                        mDirectoryListAdapter.reload();
-                        return;
-                    }
-                }
-
-                try {
-                    getContentResolver().takePersistableUriPermission(data.getData(),
-                            Intent.FLAG_GRANT_READ_URI_PERMISSION);
-                } catch (Exception e) {
-                    Toast.makeText(this, "Failed to take persistable permission.", Toast.LENGTH_LONG);
-                    e.printStackTrace();
-                }
-
-                addSearchDirectory(this, data.getDataString(), true);
-                mDirectoryListAdapter.reload();
-            }
-            break;
-        }
-    }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/GameGridFragment.java b/android/app/src/main/java/com/github/stenzek/duckstation/GameGridFragment.java
deleted file mode 100644
index d72b80501..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/GameGridFragment.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.util.TypedValue;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.PopupMenu;
-import androidx.core.content.ContextCompat;
-import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.RecyclerView;
-
-public class GameGridFragment extends Fragment implements GameList.OnRefreshListener {
-    private static final int SPACING_DIPS = 25;
-    private static final int WIDTH_DIPS = 160;
-
-    private final MainActivity mParent;
-    private RecyclerView mRecyclerView;
-    private ViewAdapter mAdapter;
-    private GridAutofitLayoutManager mLayoutManager;
-
-    public GameGridFragment(MainActivity parent) {
-        super(R.layout.fragment_game_grid);
-        this.mParent = parent;
-    }
-
-    private GameList getGameList() {
-        return mParent.getGameList();
-    }
-
-    @Override
-    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        mAdapter = new ViewAdapter(mParent, getGameList());
-        getGameList().addRefreshListener(this);
-
-        mRecyclerView = view.findViewById(R.id.game_list_view);
-        mRecyclerView.setAdapter(mAdapter);
-
-        final int columnWidth = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
-                WIDTH_DIPS + SPACING_DIPS, getResources().getDisplayMetrics()));
-        mLayoutManager = new GridAutofitLayoutManager(getContext(), columnWidth);
-        mRecyclerView.setLayoutManager(mLayoutManager);
-    }
-
-    @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-
-        getGameList().removeRefreshListener(this);
-    }
-
-    @Override
-    public void onGameListRefresh() {
-        mAdapter.notifyDataSetChanged();
-    }
-
-    private static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
-        private final MainActivity mParent;
-        private final ImageView mImageView;
-        private GameListEntry mEntry;
-
-        public ViewHolder(@NonNull MainActivity parent, @NonNull View itemView) {
-            super(itemView);
-            mParent = parent;
-            mImageView = itemView.findViewById(R.id.imageView);
-            mImageView.setOnClickListener(this);
-            mImageView.setOnLongClickListener(this);
-        }
-
-        public void bindToEntry(GameListEntry entry) {
-            mEntry = entry;
-
-            // while it loads/generates
-            mImageView.setImageDrawable(ContextCompat.getDrawable(mParent, R.drawable.ic_media_cdrom));
-
-            final String coverPath = entry.getCoverPath();
-            if (coverPath == null) {
-                new GenerateCoverTask(mParent, mImageView, mEntry.getTitle()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-                return;
-            }
-
-            new ImageLoadTask(mImageView).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, coverPath);
-        }
-
-        @Override
-        public void onClick(View v) {
-            mParent.startEmulation(mEntry.getPath(), mParent.shouldResumeStateByDefault());
-        }
-
-        @Override
-        public boolean onLongClick(View v) {
-            mParent.openGamePopupMenu(v, mEntry);
-            return true;
-        }
-    }
-
-    private static class ViewAdapter extends RecyclerView.Adapter<ViewHolder> {
-        private final MainActivity mParent;
-        private final LayoutInflater mInflater;
-        private final GameList mGameList;
-
-        public ViewAdapter(@NonNull MainActivity parent, @NonNull GameList gameList) {
-            mParent = parent;
-            mInflater = LayoutInflater.from(parent);
-            mGameList = gameList;
-        }
-
-        @NonNull
-        @Override
-        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-            return new ViewHolder(mParent, mInflater.inflate(R.layout.layout_game_grid_entry, parent, false));
-        }
-
-        @Override
-        public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
-            GameListEntry entry = mGameList.getEntry(position);
-            holder.bindToEntry(entry);
-        }
-
-        @Override
-        public int getItemCount() {
-            return mGameList.getEntryCount();
-        }
-
-        @Override
-        public int getItemViewType(int position) {
-            return R.layout.layout_game_grid_entry;
-        }
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/GameList.java b/android/app/src/main/java/com/github/stenzek/duckstation/GameList.java
deleted file mode 100644
index f835dce22..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/GameList.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.app.Activity;
-import android.os.AsyncTask;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-
-public class GameList {
-    public interface OnRefreshListener {
-        void onGameListRefresh();
-    }
-
-    private Activity mContext;
-    private GameListEntry[] mEntries;
-    private ArrayList<OnRefreshListener> mRefreshListeners = new ArrayList<>();
-
-    public GameList(Activity context) {
-        mContext = context;
-        mEntries = new GameListEntry[0];
-    }
-
-    public void addRefreshListener(OnRefreshListener listener) {
-        mRefreshListeners.add(listener);
-    }
-    public void removeRefreshListener(OnRefreshListener listener) {
-        mRefreshListeners.remove(listener);
-    }
-    public void fireRefreshListeners() {
-        for (OnRefreshListener listener : mRefreshListeners)
-            listener.onGameListRefresh();
-    }
-
-    private class GameListEntryComparator implements Comparator<GameListEntry> {
-        @Override
-        public int compare(GameListEntry left, GameListEntry right) {
-            return left.getTitle().compareTo(right.getTitle());
-        }
-    }
-
-    public void refresh(boolean invalidateCache, boolean invalidateDatabase, Activity parentActivity) {
-        // Search and get entries from native code
-        AndroidProgressCallback progressCallback = new AndroidProgressCallback(mContext);
-        AsyncTask.execute(() -> {
-            AndroidHostInterface.getInstance().refreshGameList(invalidateCache, invalidateDatabase, progressCallback);
-            GameListEntry[] newEntries = AndroidHostInterface.getInstance().getGameListEntries();
-            Arrays.sort(newEntries, new GameListEntryComparator());
-
-            mContext.runOnUiThread(() -> {
-                try {
-                    progressCallback.dismiss();
-                } catch (Exception e) {
-                    Log.e("GameList", "Exception dismissing refresh progress");
-                    e.printStackTrace();
-                }
-                mEntries = newEntries;
-                fireRefreshListeners();
-            });
-        });
-    }
-
-    public int getEntryCount() {
-        return mEntries.length;
-    }
-
-    public GameListEntry getEntry(int index) {
-        return mEntries[index];
-    }
-
-    public GameListEntry getEntryForPath(String path) {
-        for (final GameListEntry entry : mEntries) {
-            if (entry.getPath().equals(path))
-                return entry;
-        }
-
-        return null;
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/GameListEntry.java b/android/app/src/main/java/com/github/stenzek/duckstation/GameListEntry.java
deleted file mode 100644
index 95e5674b5..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/GameListEntry.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.os.AsyncTask;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.core.content.ContextCompat;
-
-public class GameListEntry {
-    public enum EntryType {
-        Disc,
-        PSExe,
-        Playlist,
-        PSF
-    }
-
-    public enum CompatibilityRating {
-        Unknown,
-        DoesntBoot,
-        CrashesInIntro,
-        CrashesInGame,
-        GraphicalAudioIssues,
-        NoIssues,
-    }
-
-    private String mPath;
-    private String mCode;
-    private String mTitle;
-    private long mSize;
-    private String mModifiedTime;
-    private DiscRegion mRegion;
-    private EntryType mType;
-    private CompatibilityRating mCompatibilityRating;
-    private String mCoverPath;
-
-    public GameListEntry(String path, String code, String title, long size, String modifiedTime, String region,
-                         String type, String compatibilityRating, String coverPath) {
-        mPath = path;
-        mCode = code;
-        mTitle = title;
-        mSize = size;
-        mModifiedTime = modifiedTime;
-        mCoverPath = coverPath;
-
-        try {
-            mRegion = DiscRegion.valueOf(region);
-        } catch (IllegalArgumentException e) {
-            mRegion = DiscRegion.NTSC_U;
-        }
-
-        try {
-            mType = EntryType.valueOf(type);
-        } catch (IllegalArgumentException e) {
-            mType = EntryType.Disc;
-        }
-
-        try {
-            mCompatibilityRating = CompatibilityRating.valueOf(compatibilityRating);
-        } catch (IllegalArgumentException e) {
-            mCompatibilityRating = CompatibilityRating.Unknown;
-        }
-    }
-
-    public String getPath() {
-        return mPath;
-    }
-
-    public String getCode() {
-        return mCode;
-    }
-
-    public String getTitle() {
-        return mTitle;
-    }
-
-    public long getSize() { return mSize; }
-
-    public String getModifiedTime() {
-        return mModifiedTime;
-    }
-
-    public DiscRegion getRegion() {
-        return mRegion;
-    }
-
-    public EntryType getType() {
-        return mType;
-    }
-
-    public CompatibilityRating getCompatibilityRating() {
-        return mCompatibilityRating;
-    }
-
-    public String getCoverPath() { return mCoverPath; }
-
-    public void setCoverPath(String coverPath) { mCoverPath = coverPath; }
-
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/GameListFragment.java b/android/app/src/main/java/com/github/stenzek/duckstation/GameListFragment.java
deleted file mode 100644
index 01635d7b5..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/GameListFragment.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.core.content.ContextCompat;
-import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-public class GameListFragment extends Fragment implements GameList.OnRefreshListener {
-    private MainActivity mParent;
-    private RecyclerView mRecyclerView;
-    private GameListFragment.ViewAdapter mAdapter;
-
-    public GameListFragment(MainActivity parent) {
-        super(R.layout.fragment_game_list);
-        this.mParent = parent;
-    }
-
-    private GameList getGameList() {
-        return mParent.getGameList();
-    }
-
-    @Override
-    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        mAdapter = new GameListFragment.ViewAdapter(mParent, getGameList());
-        getGameList().addRefreshListener(this);
-
-        mRecyclerView = view.findViewById(R.id.game_list_view);
-        mRecyclerView.setAdapter(mAdapter);
-        mRecyclerView.setLayoutManager(new LinearLayoutManager(mParent));
-        mRecyclerView.addItemDecoration(new DividerItemDecoration(mRecyclerView.getContext(),
-                DividerItemDecoration.VERTICAL));
-    }
-
-    @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-
-        getGameList().removeRefreshListener(this);
-    }
-
-    @Override
-    public void onGameListRefresh() {
-        mAdapter.notifyDataSetChanged();
-    }
-
-    private static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
-        private MainActivity mParent;
-        private View mItemView;
-        private GameListEntry mEntry;
-
-        public ViewHolder(@NonNull MainActivity parent, @NonNull View itemView) {
-            super(itemView);
-            mParent = parent;
-            mItemView = itemView;
-            mItemView.setOnClickListener(this);
-            mItemView.setOnLongClickListener(this);
-        }
-
-        private String getSubTitle() {
-            String fileName = FileHelper.getFileNameForPath(mEntry.getPath());
-            String sizeString = String.format("%.2f MB", (double) mEntry.getSize() / 1048576.0);
-            return String.format("%s (%s)", fileName, sizeString);
-        }
-
-        public void bindToEntry(GameListEntry entry) {
-            mEntry = entry;
-
-            ((TextView) mItemView.findViewById(R.id.game_list_view_entry_title)).setText(entry.getTitle());
-            ((TextView) mItemView.findViewById(R.id.game_list_view_entry_subtitle)).setText(getSubTitle());
-
-            int regionDrawableId;
-            switch (entry.getRegion()) {
-                case NTSC_J:
-                    regionDrawableId = R.drawable.flag_jp;
-                    break;
-                case PAL:
-                    regionDrawableId = R.drawable.flag_eu;
-                    break;
-                case Other:
-                    regionDrawableId = R.drawable.ic_baseline_help_24;
-                    break;
-                case NTSC_U:
-                default:
-                    regionDrawableId = R.drawable.flag_us;
-                    break;
-            }
-
-            ((ImageView) mItemView.findViewById(R.id.game_list_view_entry_region_icon))
-                    .setImageDrawable(ContextCompat.getDrawable(mItemView.getContext(), regionDrawableId));
-
-            int typeDrawableId;
-            switch (entry.getType()) {
-                case PSExe:
-                    typeDrawableId = R.drawable.ic_emblem_system;
-                    break;
-
-                case Playlist:
-                    typeDrawableId = R.drawable.ic_baseline_playlist_play_24;
-                    break;
-
-                case PSF:
-                    typeDrawableId = R.drawable.ic_baseline_library_music_24;
-                    break;
-
-                case Disc:
-                default:
-                    typeDrawableId = R.drawable.ic_media_cdrom;
-                    break;
-            }
-
-            ImageView icon = ((ImageView) mItemView.findViewById(R.id.game_list_view_entry_type_icon));
-            icon.setImageDrawable(ContextCompat.getDrawable(mItemView.getContext(), typeDrawableId));
-
-            final String coverPath = entry.getCoverPath();
-            if (coverPath != null) {
-                new ImageLoadTask(icon).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, coverPath);
-            }
-
-            int compatibilityDrawableId;
-            switch (entry.getCompatibilityRating()) {
-                case DoesntBoot:
-                    compatibilityDrawableId = R.drawable.ic_star_1;
-                    break;
-                case CrashesInIntro:
-                    compatibilityDrawableId = R.drawable.ic_star_2;
-                    break;
-                case CrashesInGame:
-                    compatibilityDrawableId = R.drawable.ic_star_3;
-                    break;
-                case GraphicalAudioIssues:
-                    compatibilityDrawableId = R.drawable.ic_star_4;
-                    break;
-                case NoIssues:
-                    compatibilityDrawableId = R.drawable.ic_star_5;
-                    break;
-                case Unknown:
-                default:
-                    compatibilityDrawableId = R.drawable.ic_star_0;
-                    break;
-            }
-
-            ((ImageView) mItemView.findViewById(R.id.game_list_view_compatibility_icon))
-                    .setImageDrawable(ContextCompat.getDrawable(mItemView.getContext(), compatibilityDrawableId));
-        }
-
-        @Override
-        public void onClick(View v) {
-            mParent.startEmulation(mEntry.getPath(), mParent.shouldResumeStateByDefault());
-        }
-
-        @Override
-        public boolean onLongClick(View v) {
-            mParent.openGamePopupMenu(v, mEntry);
-            return true;
-        }
-    }
-
-    private static class ViewAdapter extends RecyclerView.Adapter<GameListFragment.ViewHolder> {
-        private MainActivity mParent;
-        private LayoutInflater mInflater;
-        private GameList mGameList;
-
-        public ViewAdapter(@NonNull MainActivity parent, @NonNull GameList gameList) {
-            mParent = parent;
-            mInflater = LayoutInflater.from(parent);
-            mGameList = gameList;
-        }
-
-        @NonNull
-        @Override
-        public GameListFragment.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-            return new GameListFragment.ViewHolder(mParent, mInflater.inflate(R.layout.layout_game_list_entry, parent, false));
-        }
-
-        @Override
-        public void onBindViewHolder(@NonNull GameListFragment.ViewHolder holder, int position) {
-            GameListEntry entry = mGameList.getEntry(position);
-            holder.bindToEntry(entry);
-        }
-
-        @Override
-        public int getItemCount() {
-            return mGameList.getEntryCount();
-        }
-
-        @Override
-        public int getItemViewType(int position) {
-            return R.layout.layout_game_list_entry;
-        }
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/GamePropertiesActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/GamePropertiesActivity.java
deleted file mode 100644
index 2ca556229..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/GamePropertiesActivity.java
+++ /dev/null
@@ -1,253 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ListAdapter;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.ActionBar;
-import androidx.appcompat.app.AlertDialog;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.ListFragment;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.PreferenceScreen;
-import androidx.viewpager2.adapter.FragmentStateAdapter;
-import androidx.viewpager2.widget.ViewPager2;
-
-import com.google.android.material.tabs.TabLayout;
-import com.google.android.material.tabs.TabLayoutMediator;
-
-public class GamePropertiesActivity extends AppCompatActivity {
-    PropertyListAdapter mPropertiesListAdapter;
-    GameListEntry mGameListEntry;
-
-    public ListAdapter getPropertyListAdapter() {
-        if (mPropertiesListAdapter != null)
-            return mPropertiesListAdapter;
-
-        mPropertiesListAdapter = new PropertyListAdapter(this);
-        mPropertiesListAdapter.addItem("title", "Title", mGameListEntry.getTitle());
-        mPropertiesListAdapter.addItem("serial", "Serial", mGameListEntry.getCode());
-        mPropertiesListAdapter.addItem("type", "Type", mGameListEntry.getType().toString());
-        mPropertiesListAdapter.addItem("path", "Path", mGameListEntry.getPath());
-        mPropertiesListAdapter.addItem("region", "Region", mGameListEntry.getRegion().toString());
-        mPropertiesListAdapter.addItem("compatibility", "Compatibility Rating", mGameListEntry.getCompatibilityRating().toString());
-        return mPropertiesListAdapter;
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(null);
-
-        String path = getIntent().getStringExtra("path");
-        if (path == null || path.isEmpty()) {
-            finish();
-            return;
-        }
-
-        mGameListEntry = AndroidHostInterface.getInstance().getGameListEntry(path);
-        if (mGameListEntry == null) {
-            finish();
-            return;
-        }
-
-        setContentView(R.layout.settings_activity);
-        getSupportFragmentManager()
-                .beginTransaction()
-                .replace(R.id.settings, new SettingsCollectionFragment(this))
-                .commit();
-        ActionBar actionBar = getSupportActionBar();
-        if (actionBar != null) {
-            actionBar.setDisplayHomeAsUpEnabled(true);
-        }
-
-        setTitle(mGameListEntry.getTitle());
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            onBackPressed();
-            return true;
-        }
-
-        return super.onOptionsItemSelected(item);
-    }
-
-    private void displayError(String text) {
-        new AlertDialog.Builder(this)
-                .setTitle(R.string.emulation_activity_error)
-                .setMessage(text)
-                .setNegativeButton(R.string.main_activity_ok, ((dialog, which) -> dialog.dismiss()))
-                .create()
-                .show();
-    }
-
-    private void createBooleanGameSetting(PreferenceScreen ps, String key, int titleId) {
-        GameSettingPreference pref = new GameSettingPreference(ps.getContext(), mGameListEntry.getPath(), key, titleId);
-        ps.addPreference(pref);
-    }
-
-    private void createTraitGameSetting(PreferenceScreen ps, String key, int titleId) {
-        GameTraitPreference pref = new GameTraitPreference(ps.getContext(), mGameListEntry.getPath(), key, titleId);
-        ps.addPreference(pref);
-    }
-
-    private void createListGameSetting(PreferenceScreen ps, String key, int titleId, int entryId, int entryValuesId) {
-        GameSettingPreference pref = new GameSettingPreference(ps.getContext(), mGameListEntry.getPath(), key, titleId, entryId, entryValuesId);
-        ps.addPreference(pref);
-    }
-
-    public static class GameSettingsFragment extends PreferenceFragmentCompat {
-        private GamePropertiesActivity activity;
-
-        public GameSettingsFragment(GamePropertiesActivity activity) {
-            this.activity = activity;
-        }
-
-        @Override
-        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-            final PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(getContext());
-            activity.createListGameSetting(ps, "CPUOverclock", R.string.settings_cpu_overclocking, R.array.settings_advanced_cpu_overclock_entries, R.array.settings_advanced_cpu_overclock_values);
-            activity.createListGameSetting(ps, "CDROMReadSpeedup", R.string.settings_cdrom_read_speedup, R.array.settings_cdrom_read_speedup_entries, R.array.settings_cdrom_read_speedup_values);
-            activity.createListGameSetting(ps, "CDROMSeekSpeedup", R.string.settings_cdrom_seek_speedup, R.array.settings_cdrom_seek_speedup_entries, R.array.settings_cdrom_seek_speedup_values);
-
-            activity.createListGameSetting(ps, "GPURenderer", R.string.settings_gpu_renderer, R.array.gpu_renderer_entries, R.array.gpu_renderer_values);
-            activity.createListGameSetting(ps, "DisplayAspectRatio", R.string.settings_aspect_ratio, R.array.settings_display_aspect_ratio_names, R.array.settings_display_aspect_ratio_values);
-            activity.createListGameSetting(ps, "DisplayCropMode", R.string.settings_crop_mode, R.array.settings_display_crop_mode_entries, R.array.settings_display_crop_mode_values);
-            activity.createListGameSetting(ps, "GPUDownsampleMode", R.string.settings_downsample_mode, R.array.settings_downsample_mode_entries, R.array.settings_downsample_mode_values);
-            activity.createBooleanGameSetting(ps, "DisplayLinearUpscaling", R.string.settings_linear_upscaling);
-            activity.createBooleanGameSetting(ps, "DisplayIntegerUpscaling", R.string.settings_integer_upscaling);
-            activity.createBooleanGameSetting(ps, "DisplayForce4_3For24Bit", R.string.settings_force_4_3_for_24bit);
-
-            activity.createListGameSetting(ps, "GPUResolutionScale", R.string.settings_gpu_resolution_scale, R.array.settings_gpu_resolution_scale_entries, R.array.settings_gpu_resolution_scale_values);
-            activity.createListGameSetting(ps, "GPUMSAA", R.string.settings_msaa, R.array.settings_gpu_msaa_entries, R.array.settings_gpu_msaa_values);
-            activity.createBooleanGameSetting(ps, "GPUTrueColor", R.string.settings_true_color);
-            activity.createBooleanGameSetting(ps, "GPUScaledDithering", R.string.settings_scaled_dithering);
-            activity.createListGameSetting(ps, "GPUTextureFilter", R.string.settings_texture_filtering, R.array.settings_gpu_texture_filter_names, R.array.settings_gpu_texture_filter_values);
-            activity.createBooleanGameSetting(ps, "GPUForceNTSCTimings", R.string.settings_force_ntsc_timings);
-            activity.createBooleanGameSetting(ps, "GPUWidescreenHack", R.string.settings_widescreen_hack);
-            activity.createBooleanGameSetting(ps, "GPUPGXP", R.string.settings_pgxp_geometry_correction);
-            activity.createBooleanGameSetting(ps, "PGXPPreserveProjFP", R.string.settings_pgxp_preserve_projection_precision);
-            activity.createBooleanGameSetting(ps, "GPUPGXPDepthBuffer", R.string.settings_pgxp_depth_buffer);
-            activity.createTraitGameSetting(ps, "ForceSoftwareRenderer", R.string.settings_use_software_renderer);
-            activity.createTraitGameSetting(ps, "ForceSoftwareRendererForReadbacks", R.string.settings_use_software_renderer_for_readbacks);
-            activity.createTraitGameSetting(ps, "DisableWidescreen", R.string.settings_disable_widescreen);
-            activity.createTraitGameSetting(ps, "ForcePGXPVertexCache", R.string.settings_pgxp_vertex_cache);
-            activity.createTraitGameSetting(ps, "ForcePGXPCPUMode", R.string.settings_pgxp_cpu_mode);
-
-            setPreferenceScreen(ps);
-        }
-    }
-
-    public static class ControllerSettingsFragment extends PreferenceFragmentCompat {
-        private GamePropertiesActivity activity;
-
-        public ControllerSettingsFragment(GamePropertiesActivity activity) {
-            this.activity = activity;
-        }
-
-        private void createInputProfileSetting(PreferenceScreen ps) {
-            final GameSettingPreference pref = new GameSettingPreference(ps.getContext(), activity.mGameListEntry.getPath(), "InputProfileName", R.string.settings_input_profile);
-
-            final String[] inputProfileNames = AndroidHostInterface.getInstance().getInputProfileNames();
-            pref.setEntries(inputProfileNames);
-            pref.setEntryValues(inputProfileNames);
-            ps.addPreference(pref);
-        }
-
-        @Override
-        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-            final PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(getContext());
-
-            activity.createListGameSetting(ps, "Controller1Type", R.string.settings_controller_type, R.array.settings_controller_type_entries, R.array.settings_controller_type_values);
-            activity.createListGameSetting(ps, "MemoryCard1Type", R.string.settings_memory_card_1_type, R.array.settings_memory_card_mode_entries, R.array.settings_memory_card_mode_values);
-            activity.createListGameSetting(ps, "MemoryCard2Type", R.string.settings_memory_card_2_type, R.array.settings_memory_card_mode_entries, R.array.settings_memory_card_mode_values);
-            createInputProfileSetting(ps);
-
-            setPreferenceScreen(ps);
-        }
-    }
-
-    public static class SettingsCollectionFragment extends Fragment {
-        private GamePropertiesActivity activity;
-        private SettingsCollectionAdapter adapter;
-        private ViewPager2 viewPager;
-
-        public SettingsCollectionFragment(GamePropertiesActivity activity) {
-            this.activity = activity;
-        }
-
-        @Nullable
-        @Override
-        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-            return inflater.inflate(R.layout.fragment_controller_settings, container, false);
-        }
-
-        @Override
-        public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
-            adapter = new SettingsCollectionAdapter(activity, this);
-            viewPager = view.findViewById(R.id.view_pager);
-            viewPager.setAdapter(adapter);
-
-            TabLayout tabLayout = view.findViewById(R.id.tab_layout);
-            new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> {
-                switch (position) {
-                    case 0:
-                        tab.setText(R.string.game_properties_tab_summary);
-                        break;
-                    case 1:
-                        tab.setText(R.string.game_properties_tab_game_settings);
-                        break;
-                    case 2:
-                        tab.setText(R.string.game_properties_tab_controller_settings);
-                        break;
-                }
-            }).attach();
-        }
-    }
-
-    public static class SettingsCollectionAdapter extends FragmentStateAdapter {
-        private GamePropertiesActivity activity;
-
-        public SettingsCollectionAdapter(@NonNull GamePropertiesActivity activity, @NonNull Fragment fragment) {
-            super(fragment);
-            this.activity = activity;
-        }
-
-        @NonNull
-        @Override
-        public Fragment createFragment(int position) {
-            switch (position) {
-                case 0: {           // Summary
-                    ListFragment lf = new ListFragment();
-                    lf.setListAdapter(activity.getPropertyListAdapter());
-                    return lf;
-                }
-
-                case 1: {           // Game Settings
-                    return new GameSettingsFragment(activity);
-                }
-
-                case 2: {           // Controller Settings
-                    return new ControllerSettingsFragment(activity);
-                }
-
-                // TODO: Memory Card Editor
-
-                default:
-                    return null;
-            }
-        }
-
-        @Override
-        public int getItemCount() {
-            return 3;
-        }
-    }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/GameSettingPreference.java b/android/app/src/main/java/com/github/stenzek/duckstation/GameSettingPreference.java
deleted file mode 100644
index d86e8af41..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/GameSettingPreference.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.util.AttributeSet;
-
-import androidx.preference.ListPreference;
-
-public class GameSettingPreference extends ListPreference {
-    private String mGamePath;
-
-    /**
-     * Creates a boolean game property preference.
-     */
-    public GameSettingPreference(Context context, String gamePath, String settingKey, int titleId) {
-        super(context);
-        mGamePath = gamePath;
-        setPersistent(false);
-        setTitle(titleId);
-        setKey(settingKey);
-        setIconSpaceReserved(false);
-        setSummaryProvider(SimpleSummaryProvider.getInstance());
-
-        setEntries(R.array.settings_boolean_entries);
-        setEntryValues(R.array.settings_boolean_values);
-
-        updateValue();
-    }
-
-    /**
-     * Creates a list game property preference.
-     */
-    public GameSettingPreference(Context context, String gamePath, String settingKey, int titleId, int entryArray, int entryValuesArray) {
-        super(context);
-        mGamePath = gamePath;
-        setPersistent(false);
-        setTitle(titleId);
-        setKey(settingKey);
-        setIconSpaceReserved(false);
-        setSummaryProvider(SimpleSummaryProvider.getInstance());
-
-        setEntries(entryArray);
-        setEntryValues(entryValuesArray);
-
-        updateValue();
-    }
-
-    private void updateValue() {
-        final String value = AndroidHostInterface.getInstance().getGameSettingValue(mGamePath, getKey());
-        if (value == null)
-            super.setValue("null");
-        else
-            super.setValue(value);
-    }
-
-    @Override
-    public void setValue(String value) {
-        super.setValue(value);
-        if (value.equals("null"))
-            AndroidHostInterface.getInstance().setGameSettingValue(mGamePath, getKey(), null);
-        else
-            AndroidHostInterface.getInstance().setGameSettingValue(mGamePath, getKey(), value);
-    }
-
-    @Override
-    public void setEntries(CharSequence[] entries) {
-        final int length = (entries != null) ? entries.length : 0;
-        CharSequence[] newEntries = new CharSequence[length + 1];
-        newEntries[0] = getContext().getString(R.string.game_properties_preference_use_global_setting);
-        if (entries != null)
-            System.arraycopy(entries, 0, newEntries, 1, entries.length);
-        super.setEntries(newEntries);
-    }
-
-    @Override
-    public void setEntryValues(CharSequence[] entryValues) {
-        final int length = (entryValues != null) ? entryValues.length : 0;
-        CharSequence[] newEntryValues = new CharSequence[length + 1];
-        newEntryValues[0] = "null";
-        if (entryValues != null)
-            System.arraycopy(entryValues, 0, newEntryValues, 1, length);
-        super.setEntryValues(newEntryValues);
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/GameTraitPreference.java b/android/app/src/main/java/com/github/stenzek/duckstation/GameTraitPreference.java
deleted file mode 100644
index a3eb13aab..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/GameTraitPreference.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-
-import androidx.preference.ListPreference;
-import androidx.preference.SwitchPreference;
-
-public class GameTraitPreference extends SwitchPreference {
-    private String mGamePath;
-
-    /**
-     * Creates a boolean game property preference.
-     */
-    public GameTraitPreference(Context context, String gamePath, String settingKey, int titleId) {
-        super(context);
-        mGamePath = gamePath;
-        setPersistent(false);
-        setTitle(titleId);
-        setKey(settingKey);
-        setIconSpaceReserved(false);
-        updateValue();
-    }
-
-    private void updateValue() {
-        final String value = AndroidHostInterface.getInstance().getGameSettingValue(mGamePath, getKey());
-        super.setChecked(value != null && value.equals("true"));
-    }
-
-    @Override
-    public void setChecked(boolean checked) {
-        super.setChecked(checked);
-        AndroidHostInterface.getInstance().setGameSettingValue(mGamePath, getKey(), checked ? "true" : "false");
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/GenerateCoverTask.java b/android/app/src/main/java/com/github/stenzek/duckstation/GenerateCoverTask.java
deleted file mode 100644
index f503d4e15..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/GenerateCoverTask.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.os.AsyncTask;
-import android.text.Layout;
-import android.text.StaticLayout;
-import android.text.TextPaint;
-import android.widget.ImageView;
-
-import java.lang.ref.WeakReference;
-
-public class GenerateCoverTask extends AsyncTask<Void, Void, Bitmap> {
-    private final Context mContext;
-    private final WeakReference<ImageView> mView;
-    private final String mTitle;
-
-    public GenerateCoverTask(Context context, ImageView view, String title) {
-        mContext = context;
-        mView = new WeakReference<>(view);
-        mTitle = title;
-    }
-
-    @Override
-    protected Bitmap doInBackground(Void... voids) {
-        try {
-            final Bitmap background = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.cover_placeholder);
-            if (background == null)
-                return null;
-
-            final Bitmap bitmap = Bitmap.createBitmap(background.getWidth(), background.getHeight(), background.getConfig());
-            final Canvas canvas = new Canvas(bitmap);
-            final TextPaint paint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
-            canvas.drawBitmap(background, 0.0f, 0.0f, paint);
-
-            paint.setColor(Color.rgb(255, 255, 255));
-            paint.setTextSize(100);
-            paint.setShadowLayer(1.0f, 0.0f, 1.0f, Color.DKGRAY);
-            paint.setTextAlign(Paint.Align.CENTER);
-
-            final StaticLayout staticLayout = new StaticLayout(mTitle, paint,
-                    canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1, 0, false);
-            canvas.save();
-            canvas.translate(canvas.getWidth() / 2, (canvas.getHeight() / 2) - (staticLayout.getHeight() / 2));
-            staticLayout.draw(canvas);
-            canvas.restore();
-            return bitmap;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    @Override
-    protected void onPostExecute(Bitmap bitmap) {
-        ImageView iv = mView.get();
-        if (iv != null)
-            iv.setImageBitmap(bitmap);
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/GridAutofitLayoutManager.java b/android/app/src/main/java/com/github/stenzek/duckstation/GridAutofitLayoutManager.java
deleted file mode 100644
index f7e3325c2..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/GridAutofitLayoutManager.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.github.stenzek.duckstation;
-
-// https://stackoverflow.com/questions/26666143/recyclerview-gridlayoutmanager-how-to-auto-detect-span-count
-
-import android.content.Context;
-import android.util.TypedValue;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-public class GridAutofitLayoutManager extends GridLayoutManager
-{
-    private int columnWidth;
-    private boolean isColumnWidthChanged = true;
-    private int lastWidth;
-    private int lastHeight;
-
-    public GridAutofitLayoutManager(@NonNull final Context context, final int columnWidth) {
-        /* Initially set spanCount to 1, will be changed automatically later. */
-        super(context, 1);
-        setColumnWidth(checkedColumnWidth(context, columnWidth));
-    }
-
-    public GridAutofitLayoutManager(
-            @NonNull final Context context,
-            final int columnWidth,
-            final int orientation,
-            final boolean reverseLayout) {
-
-        /* Initially set spanCount to 1, will be changed automatically later. */
-        super(context, 1, orientation, reverseLayout);
-        setColumnWidth(checkedColumnWidth(context, columnWidth));
-    }
-
-    private int checkedColumnWidth(@NonNull final Context context, int columnWidth) {
-        if (columnWidth <= 0) {
-            /* Set default columnWidth value (48dp here). It is better to move this constant
-            to static constant on top, but we need context to convert it to dp, so can't really
-            do so. */
-            columnWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 48,
-                    context.getResources().getDisplayMetrics());
-        }
-        return columnWidth;
-    }
-
-    public void setColumnWidth(final int newColumnWidth) {
-        if (newColumnWidth > 0 && newColumnWidth != columnWidth) {
-            columnWidth = newColumnWidth;
-            isColumnWidthChanged = true;
-        }
-    }
-
-    @Override
-    public void onLayoutChildren(@NonNull final RecyclerView.Recycler recycler, @NonNull final RecyclerView.State state) {
-        final int width = getWidth();
-        final int height = getHeight();
-        if (columnWidth > 0 && width > 0 && height > 0 && (isColumnWidthChanged || lastWidth != width || lastHeight != height)) {
-            final int totalSpace;
-            if (getOrientation() == VERTICAL) {
-                totalSpace = width - getPaddingRight() - getPaddingLeft();
-            } else {
-                totalSpace = height - getPaddingTop() - getPaddingBottom();
-            }
-            final int spanCount = Math.max(1, totalSpace / columnWidth);
-            setSpanCount(spanCount);
-            isColumnWidthChanged = false;
-        }
-        lastWidth = width;
-        lastHeight = height;
-        super.onLayoutChildren(recycler, state);
-    }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/HotkeyInfo.java b/android/app/src/main/java/com/github/stenzek/duckstation/HotkeyInfo.java
deleted file mode 100644
index f16ce9f15..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/HotkeyInfo.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.github.stenzek.duckstation;
-
-public class HotkeyInfo {
-    private String mCategory;
-    private String mName;
-    private String mDisplayName;
-
-    public HotkeyInfo(String category, String name, String displayName) {
-        mCategory = category;
-        mName = name;
-        mDisplayName = displayName;
-    }
-
-    public String getCategory() {
-        return mCategory;
-    }
-
-    public String getName() {
-        return mName;
-    }
-
-    public String getDisplayName() {
-        return mDisplayName;
-    }
-
-    public String getBindingConfigKey() {
-        return String.format("Hotkeys/%s", mName);
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/ImageLoadTask.java b/android/app/src/main/java/com/github/stenzek/duckstation/ImageLoadTask.java
deleted file mode 100644
index 447a4c87c..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/ImageLoadTask.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.AsyncTask;
-import android.widget.ImageView;
-
-import java.lang.ref.WeakReference;
-
-public class ImageLoadTask extends AsyncTask<String, Void, Bitmap> {
-    private WeakReference<ImageView> mView;
-
-    public ImageLoadTask(ImageView view) {
-        mView = new WeakReference<>(view);
-    }
-
-    @Override
-    protected Bitmap doInBackground(String... strings) {
-        try {
-            return BitmapFactory.decodeFile(strings[0]);
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    @Override
-    protected void onPostExecute(Bitmap bitmap) {
-        ImageView iv = mView.get();
-        if (iv != null)
-            iv.setImageBitmap(bitmap);
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/MainActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/MainActivity.java
deleted file mode 100644
index c849fa1d7..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/MainActivity.java
+++ /dev/null
@@ -1,556 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.Manifest;
-import android.content.ClipData;
-import android.content.ClipboardManager;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.pm.PackageManager;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.widget.ListView;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.app.AppCompatDelegate;
-import androidx.appcompat.widget.Toolbar;
-import androidx.core.app.ActivityCompat;
-import androidx.core.content.ContextCompat;
-import androidx.fragment.app.Fragment;
-import androidx.preference.PreferenceManager;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Locale;
-
-public class MainActivity extends AppCompatActivity {
-    private static final int REQUEST_EXTERNAL_STORAGE_PERMISSIONS = 1;
-    private static final int REQUEST_ADD_DIRECTORY_TO_GAME_LIST = 2;
-    private static final int REQUEST_IMPORT_BIOS_IMAGE = 3;
-    private static final int REQUEST_START_FILE = 4;
-    private static final int REQUEST_SETTINGS = 5;
-    private static final int REQUEST_EDIT_GAME_DIRECTORIES = 6;
-    private static final int REQUEST_CHOOSE_COVER_IMAGE = 7;
-
-    private GameList mGameList;
-    private ListView mGameListView;
-    private GameListFragment mGameListFragment;
-    private GameGridFragment mGameGridFragment;
-    private Fragment mEmptyGameListFragment;
-    private boolean mHasExternalStoragePermissions = false;
-    private boolean mIsShowingGameGrid = false;
-    private String mPathForChosenCoverImage = null;
-
-    public GameList getGameList() {
-        return mGameList;
-    }
-
-    public boolean shouldResumeStateByDefault() {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
-        if (!prefs.getBoolean("Main/SaveStateOnExit", true))
-            return false;
-
-        // don't resume with challenge mode on
-        if (Achievement.willChallengeModeBeEnabled(this))
-            return false;
-
-        return true;
-    }
-
-    private void setLanguage() {
-        String language = PreferenceManager.getDefaultSharedPreferences(this).getString("Main/Language", "none");
-        if (language == null || language.equals("none")) {
-            return;
-        }
-
-        String[] parts = language.split("-");
-        if (parts.length < 2)
-            return;
-
-        Locale locale = new Locale(parts[0], parts[1]);
-        Locale.setDefault(locale);
-
-        Resources res = getResources();
-        Configuration config = res.getConfiguration();
-        config.setLocale(locale);
-        res.updateConfiguration(config, res.getDisplayMetrics());
-    }
-
-    private void setTheme() {
-        String theme = PreferenceManager.getDefaultSharedPreferences(this).getString("Main/Theme", "follow_system");
-        if (theme == null)
-            return;
-
-        if (theme.equals("follow_system")) {
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
-                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
-        } else if (theme.equals("light")) {
-            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
-        } else if (theme.equals("dark")) {
-            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
-        }
-    }
-
-    private void loadSettings() {
-        setLanguage();
-        setTheme();
-
-        mIsShowingGameGrid = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("Main/GameGridView", false);
-    }
-
-    private void switchGameListView() {
-        mIsShowingGameGrid = !mIsShowingGameGrid;
-        PreferenceManager.getDefaultSharedPreferences(this)
-                .edit()
-                .putBoolean("Main/GameGridView", mIsShowingGameGrid)
-                .commit();
-
-        updateGameListFragment(true);
-        invalidateOptionsMenu();
-    }
-
-    private void updateGameListFragment(boolean allowEmpty) {
-        final Fragment listFragment = (allowEmpty && mGameList.getEntryCount() == 0) ?
-                mEmptyGameListFragment :
-                (mIsShowingGameGrid ? mGameGridFragment : mGameListFragment);
-
-        getSupportFragmentManager()
-                .beginTransaction()
-                .setReorderingAllowed(true).
-                replace(R.id.content_fragment, listFragment)
-                .commitAllowingStateLoss();
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        loadSettings();
-        setTitle(null);
-
-        super.onCreate(null);
-
-        setContentView(R.layout.activity_main);
-        Toolbar toolbar = findViewById(R.id.toolbar);
-        setSupportActionBar(toolbar);
-
-        findViewById(R.id.fab_resume).setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                startEmulation(null, shouldResumeStateByDefault());
-            }
-        });
-
-        // Set up game list view.
-        mGameList = new GameList(this);
-        mGameList.addRefreshListener(() -> updateGameListFragment(true));
-        mGameListFragment = new GameListFragment(this);
-        mGameGridFragment = new GameGridFragment(this);
-        mEmptyGameListFragment = new EmptyGameListFragment(this);
-        updateGameListFragment(false);
-
-        mHasExternalStoragePermissions = checkForExternalStoragePermissions();
-        if (mHasExternalStoragePermissions)
-            completeStartup();
-    }
-
-    private void completeStartup() {
-        if (!AndroidHostInterface.hasInstance() && !AndroidHostInterface.createInstance(this)) {
-            Log.i("MainActivity", "Failed to create host interface");
-            throw new RuntimeException("Failed to create host interface");
-        }
-
-        AndroidHostInterface.getInstance().setContext(this);
-        mGameList.refresh(false, false, this);
-        UpdateNotes.displayUpdateNotes(this);
-    }
-
-    public void startAddGameDirectory() {
-        if (!checkForExternalStoragePermissions())
-            return;
-
-        Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
-        i.addCategory(Intent.CATEGORY_DEFAULT);
-        i.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
-        i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-        i.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
-        startActivityForResult(Intent.createChooser(i, getString(R.string.main_activity_choose_directory)),
-                REQUEST_ADD_DIRECTORY_TO_GAME_LIST);
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        // Inflate the menu; this adds items to the action bar if it is present.
-        getMenuInflater().inflate(R.menu.menu_main, menu);
-
-        final MenuItem switchViewItem = menu.findItem(R.id.action_switch_view);
-        if (switchViewItem != null) {
-            switchViewItem.setTitle(mIsShowingGameGrid ? R.string.action_show_game_list : R.string.action_show_game_grid);
-            switchViewItem.setIcon(mIsShowingGameGrid ? R.drawable.ic_baseline_view_list_24 : R.drawable.ic_baseline_grid_view_24);
-        }
-
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        // Handle action bar item clicks here. The action bar will
-        // automatically handle clicks on the Home/Up button, so long
-        // as you specify a parent activity in AndroidManifest.xml.
-        int id = item.getItemId();
-
-        //noinspection SimplifiableIfStatement
-        if (id == R.id.action_start_bios) {
-            startEmulation(null, false);
-        } else if (id == R.id.action_start_file) {
-            startStartFile();
-        } else if (id == R.id.action_edit_game_directories) {
-            Intent intent = new Intent(this, GameDirectoriesActivity.class);
-            startActivityForResult(intent, REQUEST_EDIT_GAME_DIRECTORIES);
-            return true;
-        } else if (id == R.id.action_scan_for_new_games) {
-            mGameList.refresh(false, false, this);
-        } else if (id == R.id.action_rescan_all_games) {
-            mGameList.refresh(true, true, this);
-        } else if (id == R.id.action_import_bios) {
-            importBIOSImage();
-        } else if (id == R.id.action_settings) {
-            Intent intent = new Intent(this, SettingsActivity.class);
-            startActivityForResult(intent, REQUEST_SETTINGS);
-            return true;
-        } else if (id == R.id.action_controller_settings) {
-            Intent intent = new Intent(this, ControllerSettingsActivity.class);
-            startActivity(intent);
-            return true;
-        } else if (id == R.id.action_memory_card_editor) {
-            Intent intent = new Intent(this, MemoryCardEditorActivity.class);
-            startActivity(intent);
-            return true;
-        } else if (id == R.id.action_switch_view) {
-            switchGameListView();
-            return true;
-        } else if (id == R.id.action_show_version) {
-            showVersion();
-            return true;
-        } else if (id == R.id.action_github_respository) {
-            openGithubRepository();
-            return true;
-        } else if (id == R.id.action_discord_server) {
-            openDiscordServer();
-            return true;
-        }
-
-        return super.onOptionsItemSelected(item);
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-
-        switch (requestCode) {
-            case REQUEST_ADD_DIRECTORY_TO_GAME_LIST: {
-                if (resultCode != RESULT_OK || data.getData() == null)
-                    return;
-
-                // Use legacy storage on devices older than Android 11... apparently some of them
-                // have broken storage access framework....
-                if (!GameDirectoriesActivity.useStorageAccessFramework(this)) {
-                    final String path = FileHelper.getFullPathFromTreeUri(data.getData(), this);
-                    if (path != null) {
-                        GameDirectoriesActivity.addSearchDirectory(this, path, true);
-                        mGameList.refresh(false, false, this);
-                        return;
-                    }
-                }
-
-                try {
-                    getContentResolver().takePersistableUriPermission(data.getData(),
-                            Intent.FLAG_GRANT_READ_URI_PERMISSION);
-                } catch (Exception e) {
-                    Toast.makeText(this, "Failed to take persistable permission.", Toast.LENGTH_LONG);
-                    e.printStackTrace();
-                }
-
-                GameDirectoriesActivity.addSearchDirectory(this, data.getDataString(), true);
-                mGameList.refresh(false, false, this);
-            }
-            break;
-
-            case REQUEST_IMPORT_BIOS_IMAGE: {
-                if (resultCode != RESULT_OK)
-                    return;
-
-                onImportBIOSImageResult(data.getData());
-            }
-            break;
-
-            case REQUEST_START_FILE: {
-                if (resultCode != RESULT_OK || data.getData() == null)
-                    return;
-
-                startEmulation(data.getDataString(), shouldResumeStateByDefault());
-            }
-            break;
-
-            case REQUEST_SETTINGS: {
-                loadSettings();
-            }
-            break;
-
-            case REQUEST_EDIT_GAME_DIRECTORIES: {
-                mGameList.refresh(false, false, this);
-            }
-            break;
-
-            case REQUEST_CHOOSE_COVER_IMAGE: {
-                final String gamePath = mPathForChosenCoverImage;
-                mPathForChosenCoverImage = null;
-                if (resultCode != RESULT_OK)
-                    return;
-
-                finishChooseCoverImage(gamePath, data.getData());
-            }
-            break;
-        }
-    }
-
-    private boolean checkForExternalStoragePermissions() {
-        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) ==
-                PackageManager.PERMISSION_GRANTED &&
-                ContextCompat
-                        .checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
-                        PackageManager.PERMISSION_GRANTED) {
-            return true;
-        }
-
-        ActivityCompat.requestPermissions(this,
-                new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE},
-                REQUEST_EXTERNAL_STORAGE_PERMISSIONS);
-        return false;
-    }
-
-    public void onRequestPermissionsResult(int requestCode, String[] permissions,
-                                           int[] grantResults) {
-        // check that all were successful
-        for (int i = 0; i < grantResults.length; i++) {
-            if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
-                if (!mHasExternalStoragePermissions) {
-                    mHasExternalStoragePermissions = true;
-                    completeStartup();
-                }
-            } else {
-                Toast.makeText(this,
-                        R.string.main_activity_external_storage_permissions_error,
-                        Toast.LENGTH_LONG);
-                finish();
-            }
-        }
-    }
-
-    public boolean openGameProperties(String path) {
-        Intent intent = new Intent(this, GamePropertiesActivity.class);
-        intent.putExtra("path", path);
-        startActivity(intent);
-        return true;
-    }
-
-    public void openGamePopupMenu(View anchorToView, GameListEntry entry) {
-        androidx.appcompat.widget.PopupMenu menu = new androidx.appcompat.widget.PopupMenu(this, anchorToView, Gravity.RIGHT | Gravity.TOP);
-        menu.getMenuInflater().inflate(R.menu.menu_game_list_entry, menu.getMenu());
-        menu.setOnMenuItemClickListener(item -> {
-            int id = item.getItemId();
-            if (id == R.id.game_list_entry_menu_start_game) {
-                startEmulation(entry.getPath(), false);
-                return true;
-            } else if (id == R.id.game_list_entry_menu_resume_game) {
-                startEmulation(entry.getPath(), true);
-                return true;
-            } else if (id == R.id.game_list_entry_menu_properties) {
-                openGameProperties(entry.getPath());
-                return true;
-            } else if (id == R.id.game_list_entry_menu_choose_cover_image) {
-                startChooseCoverImage(entry.getPath());
-                return true;
-            }
-            return false;
-        });
-
-        // disable resume state when challenge mode is on
-        if (Achievement.willChallengeModeBeEnabled(this)) {
-            MenuItem item = menu.getMenu().findItem(R.id.game_list_entry_menu_resume_game);
-            if (item != null)
-                item.setEnabled(false);
-        }
-
-        menu.show();
-    }
-
-    public boolean startEmulation(String bootPath, boolean resumeState) {
-        if (!doBIOSCheck())
-            return false;
-
-        Intent intent = new Intent(this, EmulationActivity.class);
-        intent.putExtra("bootPath", bootPath);
-        intent.putExtra("resumeState", resumeState);
-        startActivity(intent);
-        return true;
-    }
-
-    public void startStartFile() {
-        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
-        intent.setType("*/*");
-        intent.addCategory(Intent.CATEGORY_OPENABLE);
-        startActivityForResult(Intent.createChooser(intent, getString(R.string.main_activity_choose_disc_image)), REQUEST_START_FILE);
-    }
-
-    private void startChooseCoverImage(String gamePath) {
-        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
-        intent.setType("image/*");
-        intent.addCategory(Intent.CATEGORY_OPENABLE);
-        mPathForChosenCoverImage = gamePath;
-        startActivityForResult(Intent.createChooser(intent, getString(R.string.menu_game_list_entry_choose_cover_image)),
-                REQUEST_CHOOSE_COVER_IMAGE);
-    }
-
-    private void finishChooseCoverImage(String gamePath, Uri uri) {
-        final GameListEntry gameListEntry = mGameList.getEntryForPath(gamePath);
-        if (gameListEntry == null)
-            return;
-
-        final Bitmap bitmap = FileHelper.loadBitmapFromUri(this, uri);
-        if (bitmap == null) {
-            Toast.makeText(this, "Failed to open/decode image.", Toast.LENGTH_LONG).show();
-            return;
-        }
-
-        final String coverFileName = String.format("%s/covers/%s.png",
-                AndroidHostInterface.getUserDirectory(), gameListEntry.getTitle());
-        try {
-            final File file = new File(coverFileName);
-            final OutputStream outputStream = new FileOutputStream(file);
-            final boolean result = bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
-            outputStream.close();;
-            if (!result) {
-                file.delete();
-                throw new Exception("Failed to compress bitmap.");
-            }
-
-            gameListEntry.setCoverPath(coverFileName);
-            mGameList.fireRefreshListeners();
-        } catch (Exception e) {
-            e.printStackTrace();
-            Toast.makeText(this, "Failed to save image.", Toast.LENGTH_LONG).show();
-        }
-
-        bitmap.recycle();
-    }
-
-    private boolean doBIOSCheck() {
-        if (AndroidHostInterface.getInstance().hasAnyBIOSImages())
-            return true;
-
-        new AlertDialog.Builder(this)
-                .setTitle(R.string.main_activity_missing_bios_image)
-                .setMessage(R.string.main_activity_missing_bios_image_prompt)
-                .setPositiveButton(R.string.main_activity_yes, (dialog, button) -> importBIOSImage())
-                .setNegativeButton(R.string.main_activity_no, (dialog, button) -> {
-                })
-                .create()
-                .show();
-
-        return false;
-    }
-
-    private void importBIOSImage() {
-        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
-        intent.setType("*/*");
-        intent.addCategory(Intent.CATEGORY_OPENABLE);
-        startActivityForResult(Intent.createChooser(intent, getString(R.string.main_activity_choose_bios_image)), REQUEST_IMPORT_BIOS_IMAGE);
-    }
-
-    private void onImportBIOSImageResult(Uri uri) {
-        // This should really be 512K but just in case we wanted to support the other BIOSes in the future...
-        final int MAX_BIOS_SIZE = 2 * 1024 * 1024;
-
-        InputStream stream = null;
-        try {
-            stream = getContentResolver().openInputStream(uri);
-        } catch (FileNotFoundException e) {
-            Toast.makeText(this, R.string.main_activity_failed_to_open_bios_image, Toast.LENGTH_LONG);
-            return;
-        }
-
-        ByteArrayOutputStream os = new ByteArrayOutputStream();
-        try {
-            byte[] buffer = new byte[512 * 1024];
-            int len;
-            while ((len = stream.read(buffer)) > 0) {
-                os.write(buffer, 0, len);
-                if (os.size() > MAX_BIOS_SIZE) {
-                    throw new IOException(getString(R.string.main_activity_bios_image_too_large));
-                }
-            }
-        } catch (IOException e) {
-            new AlertDialog.Builder(this)
-                    .setMessage(getString(R.string.main_activity_failed_to_read_bios_image_prefix) + e.getMessage())
-                    .setPositiveButton(R.string.main_activity_ok, (dialog, button) -> {
-                    })
-                    .create()
-                    .show();
-            return;
-        }
-
-        String importResult = AndroidHostInterface.getInstance().importBIOSImage(os.toByteArray());
-        String message = (importResult == null) ? getString(R.string.main_activity_invalid_error) : ("BIOS '" + importResult + "' imported.");
-
-        new AlertDialog.Builder(this)
-                .setMessage(message)
-                .setPositiveButton(R.string.main_activity_ok, (dialog, button) -> {
-                })
-                .create()
-                .show();
-    }
-
-    private void showVersion() {
-        final String message = AndroidHostInterface.getFullScmVersion();
-        new AlertDialog.Builder(this)
-                .setTitle(R.string.main_activity_show_version_title)
-                .setMessage(message)
-                .setPositiveButton(R.string.main_activity_ok, (dialog, button) -> {
-                })
-                .setNeutralButton(R.string.main_activity_copy, (dialog, button) -> {
-                    ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
-                    if (clipboard != null)
-                        clipboard.setPrimaryClip(ClipData.newPlainText(getString(R.string.main_activity_show_version_title), message));
-                })
-                .create()
-                .show();
-    }
-
-    private void openGithubRepository() {
-        final String url = "https://github.com/stenzek/duckstation";
-        final Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
-        startActivity(browserIntent);
-    }
-
-    private void openDiscordServer() {
-        final String url = "https://discord.gg/Buktv3t";
-        final Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
-        startActivity(browserIntent);
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardEditorActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardEditorActivity.java
deleted file mode 100644
index dfe1323b3..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardEditorActivity.java
+++ /dev/null
@@ -1,524 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.app.AlertDialog;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.Bundle;
-
-import com.google.android.material.tabs.TabLayout;
-import com.google.android.material.tabs.TabLayoutMediator;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.ActionBar;
-import androidx.appcompat.widget.Toolbar;
-import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.viewpager2.adapter.FragmentStateAdapter;
-import androidx.viewpager2.widget.ViewPager2;
-
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import java.util.ArrayList;
-
-public class MemoryCardEditorActivity extends AppCompatActivity {
-    public static final int REQUEST_IMPORT_CARD = 1;
-
-    private final ArrayList<MemoryCardImage> cards = new ArrayList<>();
-    private CollectionAdapter adapter;
-    private ViewPager2 viewPager;
-    private TabLayout tabLayout;
-    private TabLayoutMediator tabLayoutMediator;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(null);
-        setContentView(R.layout.activity_memory_card_editor);
-
-        Toolbar toolbar = findViewById(R.id.toolbar);
-        setSupportActionBar(toolbar);
-
-        ActionBar actionBar = getSupportActionBar();
-        if (actionBar != null) {
-            actionBar.setDisplayHomeAsUpEnabled(true);
-        }
-
-        adapter = new CollectionAdapter(this);
-        viewPager = findViewById(R.id.view_pager);
-        viewPager.setAdapter(adapter);
-
-        tabLayout = findViewById(R.id.tab_layout);
-        tabLayoutMediator = new TabLayoutMediator(tabLayout, viewPager, adapter.getTabConfigurationStrategy());
-        tabLayoutMediator.attach();
-
-        findViewById(R.id.open_card).setOnClickListener((v) -> openCard());
-        findViewById(R.id.close_card).setOnClickListener((v) -> closeCard());
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.menu_memory_card_editor, menu);
-
-        final boolean hasCurrentCard = (getCurrentCard() != null);
-        menu.findItem(R.id.action_delete_card).setEnabled(hasCurrentCard);
-        menu.findItem(R.id.action_format_card).setEnabled(hasCurrentCard);
-        menu.findItem(R.id.action_import_card).setEnabled(hasCurrentCard);
-
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-       switch (item.getItemId()) {
-            case android.R.id.home: {
-                onBackPressed();
-                return true;
-            }
-
-            case R.id.action_import_card: {
-                importCard();
-                return true;
-            }
-
-            case R.id.action_delete_card: {
-                deleteCard();
-                return true;
-            }
-
-            case R.id.action_format_card: {
-                formatCard();
-                return true;
-            }
-
-           default: {
-               return super.onOptionsItemSelected(item);
-           }
-        }
-    }
-
-    private void openCard() {
-        final Uri[] uris = MemoryCardImage.getCardUris(this);
-        if (uris == null) {
-            displayMessage(getString(R.string.memory_card_editor_no_cards_found));
-            return;
-        }
-
-        final String[] uriTitles = new String[uris.length];
-        for (int i = 0; i < uris.length; i++)
-            uriTitles[i] = MemoryCardImage.getTitleForUri(uris[i]);
-
-        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        builder.setTitle(R.string.memory_card_editor_select_card);
-        builder.setItems(uriTitles, (dialog, which) -> {
-            final Uri uri = uris[which];
-            for (int i = 0; i < cards.size(); i++) {
-                if (cards.get(i).getUri().equals(uri)) {
-                    displayError(getString(R.string.memory_card_editor_card_already_open));
-                    tabLayout.getTabAt(i).select();
-                    return;
-                }
-            }
-
-            final MemoryCardImage card = MemoryCardImage.open(MemoryCardEditorActivity.this, uri);
-            if (card == null) {
-                displayError(getString(R.string.memory_card_editor_failed_to_open_card));
-                return;
-            }
-
-            cards.add(card);
-            refreshView(card);
-        });
-        builder.create().show();
-    }
-
-    private void closeCard() {
-        final int index = tabLayout.getSelectedTabPosition();
-        if (index < 0)
-            return;
-
-        cards.remove(index);
-        refreshView(index);
-    }
-
-    private void displayMessage(String message) {
-        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
-    }
-
-    private void displayError(String message) {
-        final AlertDialog.Builder errorBuilder = new AlertDialog.Builder(this);
-        errorBuilder.setTitle(R.string.memory_card_editor_error);
-        errorBuilder.setMessage(message);
-        errorBuilder.setPositiveButton(R.string.main_activity_ok, (dialog1, which1) -> dialog1.dismiss());
-        errorBuilder.create().show();
-    }
-
-    private void copySave(MemoryCardImage sourceCard, MemoryCardFileInfo sourceFile) {
-        if (cards.size() < 2) {
-            displayError(getString(R.string.memory_card_editor_must_have_at_least_two_cards_to_copy));
-            return;
-        }
-
-        if (cards.indexOf(sourceCard) < 0) {
-            // this shouldn't happen..
-            return;
-        }
-
-        final MemoryCardImage[] destinationCards = new MemoryCardImage[cards.size() - 1];
-        final String[] cardTitles = new String[cards.size() - 1];
-        for (int i = 0, d = 0; i < cards.size(); i++) {
-            if (cards.get(i) == sourceCard)
-                continue;
-
-            destinationCards[d] = cards.get(i);
-            cardTitles[d] = cards.get(i).getTitle();
-            d++;
-        }
-
-        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        builder.setTitle(getString(R.string.memory_card_editor_copy_save_to, sourceFile.getTitle()));
-        builder.setItems(cardTitles, (dialog, which) -> {
-            dialog.dismiss();
-
-            final MemoryCardImage destinationCard = destinationCards[which];
-
-            byte[] data = null;
-            if (destinationCard.getFreeBlocks() < sourceFile.getNumBlocks()) {
-                displayError(getString(R.string.memory_card_editor_copy_insufficient_blocks, sourceFile.getNumBlocks(),
-                        destinationCard.getFreeBlocks()));
-            } else if (destinationCard.hasFile(sourceFile.getFilename())) {
-                displayError(getString(R.string.memory_card_editor_copy_already_exists, sourceFile.getFilename()));
-            } else if ((data = sourceCard.readFile(sourceFile.getFilename())) == null) {
-                displayError(getString(R.string.memory_card_editor_copy_read_failed, sourceFile.getFilename()));
-            } else if (!destinationCard.writeFile(sourceFile.getFilename(), data)) {
-                displayMessage(getString(R.string.memory_card_editor_copy_write_failed, sourceFile.getFilename()));
-            } else {
-                displayMessage(getString(R.string.memory_card_editor_copy_success, sourceFile.getFilename(),
-                        destinationCard.getTitle()));
-                refreshView(destinationCard);
-            }
-        });
-        builder.create().show();
-    }
-
-    private void deleteSave(MemoryCardImage card, MemoryCardFileInfo file) {
-        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        builder.setMessage(getString(R.string.memory_card_editor_delete_confirm, file.getFilename()));
-        builder.setPositiveButton(R.string.main_activity_yes, (dialog, which) -> {
-            if (card.deleteFile(file.getFilename())) {
-                displayMessage(getString(R.string.memory_card_editor_delete_success, file.getFilename()));
-                refreshView(card);
-            } else {
-                displayError(getString(R.string.memory_card_editor_delete_failed, file.getFilename()));
-            }
-        });
-        builder.setNegativeButton(R.string.main_activity_no, (dialog, which) -> dialog.dismiss());
-        builder.create().show();
-    }
-
-    private void refreshView(int newSelection) {
-        final int oldPos = viewPager.getCurrentItem();
-        tabLayoutMediator.detach();
-        viewPager.setAdapter(null);
-        viewPager.setAdapter(adapter);
-        tabLayoutMediator.attach();
-
-        if (cards.isEmpty())
-            return;
-
-        if (newSelection < 0 || newSelection >= tabLayout.getTabCount()) {
-            if (oldPos < cards.size())
-                tabLayout.getTabAt(oldPos).select();
-            else
-                tabLayout.getTabAt(cards.size() - 1).select();
-        } else {
-            tabLayout.getTabAt(newSelection).select();
-        }
-    }
-
-    private void refreshView(MemoryCardImage newSelectedCard) {
-        if (newSelectedCard == null)
-            refreshView(-1);
-        else
-            refreshView(cards.indexOf(newSelectedCard));
-
-        invalidateOptionsMenu();
-    }
-
-    private MemoryCardImage getCurrentCard() {
-        final int index = tabLayout.getSelectedTabPosition();
-        if (index < 0 || index >= cards.size())
-            return null;
-
-        return cards.get(index);
-    }
-
-    private void importCard() {
-        if (getCurrentCard() == null) {
-            displayMessage(getString(R.string.memory_card_editor_no_card_selected));
-            return;
-        }
-
-        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
-        intent.setType("*/*");
-        intent.addCategory(Intent.CATEGORY_OPENABLE);
-        startActivityForResult(Intent.createChooser(intent, getString(R.string.main_activity_choose_disc_image)), REQUEST_IMPORT_CARD);
-    }
-
-    private void importCard(Uri uri) {
-        final MemoryCardImage card = getCurrentCard();
-        if (card == null)
-            return;
-
-        final byte[] data = FileHelper.readBytesFromUri(this, uri, 16 * 1024 * 1024);
-        if (data == null) {
-            displayError(getString(R.string.memory_card_editor_import_card_read_failed, uri.toString()));
-            return;
-        }
-
-        String importFileName = FileHelper.getDocumentNameFromUri(this, uri);
-        if (importFileName == null) {
-            importFileName = uri.getPath();
-            if (importFileName == null || importFileName.isEmpty())
-                importFileName = uri.toString();
-        }
-
-        final String captureImportFileName = importFileName;
-        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        builder.setMessage(getString(R.string.memory_card_editor_import_card_confirm_message,
-            importFileName, card.getTitle()));
-        builder.setPositiveButton(R.string.main_activity_yes, (dialog, which) -> {
-            dialog.dismiss();
-
-            if (!card.importCard(captureImportFileName, data)) {
-                displayError(getString(R.string.memory_card_editor_import_failed));
-                return;
-            }
-
-            refreshView(card);
-        });
-        builder.setNegativeButton(R.string.main_activity_no, (dialog, which) -> dialog.dismiss());
-        builder.create().show();
-    }
-
-    private void formatCard() {
-        final MemoryCardImage card = getCurrentCard();
-        if (card == null) {
-            displayMessage(getString(R.string.memory_card_editor_no_card_selected));
-            return;
-        }
-
-        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        builder.setMessage(getString(R.string.memory_card_editor_format_card_confirm_message, card.getTitle()));
-        builder.setPositiveButton(R.string.main_activity_yes, (dialog, which) -> {
-            dialog.dismiss();
-
-            if (!card.format()) {
-                displayError(getString(R.string.memory_card_editor_format_card_failed, card.getUri().toString()));
-                return;
-            }
-
-            displayMessage(getString(R.string.memory_card_editor_format_card_success, card.getUri().toString()));
-            refreshView(card);
-        });
-        builder.setNegativeButton(R.string.main_activity_no, (dialog, which) -> dialog.dismiss());
-        builder.create().show();
-    }
-
-    private void deleteCard() {
-        final MemoryCardImage card = getCurrentCard();
-        if (card == null) {
-            displayMessage(getString(R.string.memory_card_editor_no_card_selected));
-            return;
-        }
-
-        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        builder.setMessage(getString(R.string.memory_card_editor_delete_card_confirm_message, card.getTitle()));
-        builder.setPositiveButton(R.string.main_activity_yes, (dialog, which) -> {
-            dialog.dismiss();
-
-            if (!card.delete()) {
-                displayError(getString(R.string.memory_card_editor_delete_card_failed, card.getUri().toString()));
-                return;
-            }
-
-            displayMessage(getString(R.string.memory_card_editor_delete_card_success, card.getUri().toString()));
-            cards.remove(card);
-            refreshView(-1);
-        });
-        builder.setNegativeButton(R.string.main_activity_no, (dialog, which) -> dialog.dismiss());
-        builder.create().show();
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-
-        switch (requestCode) {
-            case REQUEST_IMPORT_CARD: {
-                if (resultCode != RESULT_OK)
-                    return;
-
-                importCard(data.getData());
-            }
-            break;
-        }
-    }
-
-    private static class SaveViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
-        private MemoryCardEditorActivity mParent;
-        private View mItemView;
-        private MemoryCardImage mCard;
-        private MemoryCardFileInfo mFile;
-
-        public SaveViewHolder(MemoryCardEditorActivity parent, @NonNull View itemView) {
-            super(itemView);
-            mParent = parent;
-            mItemView = itemView;
-            mItemView.setOnClickListener(this);
-        }
-
-        public void bindToEntry(MemoryCardImage card, MemoryCardFileInfo file) {
-            mCard = card;
-            mFile = file;
-
-            ((TextView) mItemView.findViewById(R.id.title)).setText(mFile.getTitle());
-            ((TextView) mItemView.findViewById(R.id.filename)).setText(mFile.getFilename());
-
-            final String blocksText = String.format("%d Blocks", mFile.getNumBlocks());
-            final String sizeText = String.format("%.1f KB", (float)mFile.getSize() / 1024.0f);
-            ((TextView) mItemView.findViewById(R.id.block_size)).setText(blocksText);
-            ((TextView) mItemView.findViewById(R.id.file_size)).setText(sizeText);
-
-            if (mFile.getNumIconFrames() > 0) {
-                final Bitmap bitmap = mFile.getIconFrameBitmap(0);
-                if (bitmap != null) {
-                    ((ImageView) mItemView.findViewById(R.id.icon)).setImageBitmap(bitmap);
-                }
-            }
-        }
-
-        @Override
-        public void onClick(View v) {
-            final AlertDialog.Builder builder = new AlertDialog.Builder(mItemView.getContext());
-            builder.setTitle(mFile.getFilename());
-            builder.setItems(R.array.memory_card_editor_save_menu, ((dialog, which) -> {
-                switch (which) {
-                    // Copy Save
-                    case 0: {
-                        dialog.dismiss();
-                        mParent.copySave(mCard, mFile);
-                    }
-                    break;
-
-                    // Delete Save
-                    case 1: {
-                        dialog.dismiss();
-                        mParent.deleteSave(mCard, mFile);
-                    }
-                    break;
-                }
-            }));
-            builder.create().show();
-        }
-    }
-
-    private static class SaveViewAdapter extends RecyclerView.Adapter<SaveViewHolder> {
-        private MemoryCardEditorActivity parent;
-        private MemoryCardImage card;
-        private MemoryCardFileInfo[] files;
-
-        public SaveViewAdapter(MemoryCardEditorActivity parent, MemoryCardImage card) {
-            this.parent = parent;
-            this.card = card;
-            this.files = card.getFiles();
-        }
-
-        @NonNull
-        @Override
-        public SaveViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-            final View rootView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_memory_card_save, parent, false);
-            return new SaveViewHolder(this.parent, rootView);
-        }
-
-        @Override
-        public void onBindViewHolder(@NonNull SaveViewHolder holder, int position) {
-            holder.bindToEntry(card, files[position]);
-        }
-
-        @Override
-        public int getItemCount() {
-            return (files != null) ? files.length : 0;
-        }
-
-        @Override
-        public int getItemViewType(int position) {
-            return R.layout.layout_memory_card_save;
-        }
-    }
-
-    public static class MemoryCardFileFragment extends Fragment {
-        private MemoryCardEditorActivity parent;
-        private MemoryCardImage card;
-        private SaveViewAdapter adapter;
-        private RecyclerView recyclerView;
-
-        public MemoryCardFileFragment(MemoryCardEditorActivity parent, MemoryCardImage card) {
-            this.parent = parent;
-            this.card = card;
-        }
-
-        @Nullable
-        @Override
-        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-            return inflater.inflate(R.layout.fragment_memory_card_file, container, false);
-        }
-
-        @Override
-        public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
-            adapter = new SaveViewAdapter(parent, card);
-            recyclerView = view.findViewById(R.id.recyclerView);
-            recyclerView.setAdapter(adapter);
-            recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));
-            recyclerView.addItemDecoration(new DividerItemDecoration(recyclerView.getContext(),
-                    DividerItemDecoration.VERTICAL));
-        }
-    }
-
-    public static class CollectionAdapter extends FragmentStateAdapter {
-        private MemoryCardEditorActivity parent;
-        private final TabLayoutMediator.TabConfigurationStrategy tabConfigurationStrategy = (tab, position) -> {
-            tab.setText(parent.cards.get(position).getTitle());
-        };
-
-        public CollectionAdapter(MemoryCardEditorActivity parent) {
-            super(parent);
-            this.parent = parent;
-        }
-
-        public TabLayoutMediator.TabConfigurationStrategy getTabConfigurationStrategy() {
-            return tabConfigurationStrategy;
-        }
-
-        @NonNull
-        @Override
-        public Fragment createFragment(int position) {
-            return new MemoryCardFileFragment(parent, parent.cards.get(position));
-        }
-
-        @Override
-        public int getItemCount() {
-            return parent.cards.size();
-        }
-    }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardFileInfo.java b/android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardFileInfo.java
deleted file mode 100644
index e520c2db5..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardFileInfo.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.graphics.Bitmap;
-
-import java.nio.ByteBuffer;
-
-public class MemoryCardFileInfo {
-    public static final int ICON_WIDTH = 16;
-    public static final int ICON_HEIGHT = 16;
-
-    private final String filename;
-    private final String title;
-    private final int size;
-    private final int firstBlock;
-    private final int numBlocks;
-    private final byte[][] iconFrames;
-
-    public MemoryCardFileInfo(String filename, String title, int size, int firstBlock, int numBlocks, byte[][] iconFrames) {
-        this.filename = filename;
-        this.title = title;
-        this.size = size;
-        this.firstBlock = firstBlock;
-        this.numBlocks = numBlocks;
-        this.iconFrames = iconFrames;
-    }
-
-    public String getFilename() {
-        return filename;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public int getSize() {
-        return size;
-    }
-
-    public int getFirstBlock() {
-        return firstBlock;
-    }
-
-    public int getNumBlocks() {
-        return numBlocks;
-    }
-
-    public int getNumIconFrames() {
-        return (iconFrames != null) ? iconFrames.length : 0;
-    }
-
-    public byte[] getIconFrame(int index) {
-        return iconFrames[index];
-    }
-
-    public Bitmap getIconFrameBitmap(int index) {
-        final byte[] data = getIconFrame(index);
-        if (data == null)
-            return null;
-
-        final Bitmap bitmap = Bitmap.createBitmap(ICON_WIDTH, ICON_HEIGHT, Bitmap.Config.ARGB_8888);
-        bitmap.copyPixelsFromBuffer(ByteBuffer.wrap(data));
-        return bitmap;
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardImage.java b/android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardImage.java
deleted file mode 100644
index 5417ecc3d..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/MemoryCardImage.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.DocumentsContract;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-
-public class MemoryCardImage {
-    public static final int DATA_SIZE = 128 * 1024;
-    public static final String FILE_EXTENSION = ".mcd";
-
-    private final Context context;
-    private final Uri uri;
-    private final byte[] data;
-
-    private MemoryCardImage(Context context, Uri uri, byte[] data) {
-        this.context = context;
-        this.uri = uri;
-        this.data = data;
-    }
-
-    public static String getTitleForUri(Uri uri) {
-        String name = uri.getLastPathSegment();
-        if (name != null) {
-            final int lastSlash = name.lastIndexOf('/');
-            if (lastSlash >= 0)
-                name = name.substring(lastSlash + 1);
-
-            if (name.endsWith(FILE_EXTENSION))
-                name = name.substring(0, name.length() - FILE_EXTENSION.length());
-        } else {
-            name = uri.toString();
-        }
-
-        return name;
-    }
-
-    public static MemoryCardImage open(Context context, Uri uri) {
-        byte[] data = FileHelper.readBytesFromUri(context, uri, DATA_SIZE);
-        if (data == null)
-            return null;
-
-        if (!isValid(data))
-            return null;
-
-        return new MemoryCardImage(context, uri, data);
-    }
-
-    public static MemoryCardImage create(Context context, Uri uri) {
-        byte[] data = new byte[DATA_SIZE];
-        format(data);
-
-        MemoryCardImage card = new MemoryCardImage(context, uri, data);
-        if (!card.save())
-            return null;
-
-        return card;
-    }
-
-    public static Uri[] getCardUris(Context context) {
-        final String directory = String.format("%s/memcards",
-                AndroidHostInterface.getUserDirectory());
-        final ArrayList<Uri> results = new ArrayList<>();
-
-        if (directory.charAt(0) == '/') {
-            // native path
-            final File directoryFile = new File(directory);
-            final File[] files = directoryFile.listFiles();
-            for (File file : files) {
-                if (!file.isFile())
-                    continue;
-
-                if (!file.getName().endsWith(FILE_EXTENSION))
-                    continue;
-
-                results.add(Uri.fromFile(file));
-            }
-        } else {
-            try {
-                final Uri baseUri = null;
-                final String[] scanProjection = new String[]{
-                        DocumentsContract.Document.COLUMN_DOCUMENT_ID,
-                        DocumentsContract.Document.COLUMN_DISPLAY_NAME,
-                        DocumentsContract.Document.COLUMN_MIME_TYPE};
-                final ContentResolver resolver = context.getContentResolver();
-                final String treeDocId = DocumentsContract.getTreeDocumentId(baseUri);
-                final Uri queryUri = DocumentsContract.buildChildDocumentsUriUsingTree(baseUri, treeDocId);
-                final Cursor cursor = resolver.query(queryUri, scanProjection, null, null, null);
-
-                while (cursor.moveToNext()) {
-                    try {
-                        final String mimeType = cursor.getString(2);
-                        final String documentId = cursor.getString(0);
-                        final Uri uri = DocumentsContract.buildDocumentUriUsingTree(baseUri, documentId);
-                        if (DocumentsContract.Document.MIME_TYPE_DIR.equals(mimeType)) {
-                            continue;
-                        }
-
-                        final String uriString = uri.toString();
-                        if (!uriString.endsWith(FILE_EXTENSION))
-                            continue;
-
-                        results.add(uri);
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-                cursor.close();
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
-        if (results.isEmpty())
-            return null;
-
-        Collections.sort(results, (a, b) -> a.compareTo(b));
-
-        final Uri[] resultArray = new Uri[results.size()];
-        results.toArray(resultArray);
-        return resultArray;
-    }
-
-    private static native boolean isValid(byte[] data);
-
-    private static native void format(byte[] data);
-
-    private static native int getFreeBlocks(byte[] data);
-
-    private static native MemoryCardFileInfo[] getFiles(byte[] data);
-
-    private static native boolean hasFile(byte[] data, String filename);
-
-    private static native byte[] readFile(byte[] data, String filename);
-
-    private static native boolean writeFile(byte[] data, String filename, byte[] fileData);
-
-    private static native boolean deleteFile(byte[] data, String filename);
-
-    private static native boolean importCard(byte[] data, String filename, byte[] importData);
-
-    public boolean save() {
-        return FileHelper.writeBytesToUri(context, uri, data);
-    }
-
-    public boolean delete() {
-        return FileHelper.deleteFileAtUri(context, uri);
-    }
-
-    public boolean format() {
-        format(data);
-        return save();
-    }
-
-    public Uri getUri() {
-        return uri;
-    }
-
-    public String getTitle() {
-        return getTitleForUri(uri);
-    }
-
-    public int getFreeBlocks() {
-        return getFreeBlocks(data);
-    }
-
-    public MemoryCardFileInfo[] getFiles() {
-        return getFiles(data);
-    }
-
-    public boolean hasFile(String filename) {
-        return hasFile(data, filename);
-    }
-
-    public byte[] readFile(String filename) {
-        return readFile(data, filename);
-    }
-
-    public boolean writeFile(String filename, byte[] fileData) {
-        if (!writeFile(data, filename, fileData))
-            return false;
-
-        return save();
-    }
-
-    public boolean deleteFile(String filename) {
-        if (!deleteFile(data, filename))
-            return false;
-
-        return save();
-    }
-
-    public boolean importCard(String filename, byte[] importData) {
-        if (!importCard(data, filename, importData))
-            return false;
-
-        return save();
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/PatchCode.java b/android/app/src/main/java/com/github/stenzek/duckstation/PatchCode.java
deleted file mode 100644
index c8de67096..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/PatchCode.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.github.stenzek.duckstation;
-
-public class PatchCode {
-    private static final String UNGROUPED_NAME = "Ungrouped";
-
-    private int mIndex;
-    private String mGroup;
-    private String mDescription;
-    private boolean mEnabled;
-
-    public PatchCode(int index, String group, String description, boolean enabled) {
-        mIndex = index;
-        mGroup = group;
-        mDescription = description;
-        mEnabled = enabled;
-    }
-
-    public int getIndex() {
-        return mIndex;
-    }
-
-    public String getGroup() {
-        return mGroup;
-    }
-
-    public String getDescription() {
-        return mDescription;
-    }
-
-    public boolean isEnabled() {
-        return mEnabled;
-    }
-
-    public String getDisplayText() {
-        if (mGroup == null || mGroup.equals(UNGROUPED_NAME))
-          return mDescription;
-        else
-          return String.format("(%s) %s", mGroup, mDescription);
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/PreferenceHelpers.java b/android/app/src/main/java/com/github/stenzek/duckstation/PreferenceHelpers.java
deleted file mode 100644
index 99e9ad815..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/PreferenceHelpers.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.SharedPreferences;
-import android.util.ArraySet;
-
-import java.util.Set;
-
-public class PreferenceHelpers {
-    /**
-     * Clears all preferences in the specified section (starting with sectionName/).
-     * We really don't want to have to do this with JNI...
-     *
-     * @param prefs       Preferences object.
-     * @param sectionName Section to clear keys for.
-     */
-    public static void clearSection(SharedPreferences prefs, String sectionName) {
-        String testSectionName = sectionName + "/";
-        SharedPreferences.Editor editor = prefs.edit();
-        for (String keyName : prefs.getAll().keySet()) {
-            if (keyName.startsWith(testSectionName)) {
-                editor.remove(keyName);
-            }
-        }
-
-        editor.commit();
-    }
-
-    public static Set<String> getStringSet(SharedPreferences prefs, String keyName) {
-        Set<String> values = null;
-        try {
-            values = prefs.getStringSet(keyName, null);
-        } catch (Exception e) {
-            try {
-                String singleValue = prefs.getString(keyName, null);
-                if (singleValue != null) {
-                    values = new ArraySet<>();
-                    values.add(singleValue);
-                }
-            } catch (Exception e2) {
-
-            }
-        }
-
-        return values;
-    }
-
-    public static boolean addToStringList(SharedPreferences prefs, String keyName, String valueToAdd) {
-        Set<String> values = getStringSet(prefs, keyName);
-        if (values == null) {
-            values = new ArraySet<>();
-        } else {
-            // We need to copy it otherwise the put doesn't save.
-            Set<String> valuesCopy = new ArraySet<>();
-            valuesCopy.addAll(values);
-            values = valuesCopy;
-        }
-
-        final boolean result = values.add(valueToAdd);
-        prefs.edit().putStringSet(keyName, values).commit();
-        return result;
-    }
-
-    public static boolean removeFromStringList(SharedPreferences prefs, String keyName, String valueToRemove) {
-        Set<String> values = getStringSet(prefs, keyName);
-        if (values == null)
-            return false;
-
-        // We need to copy it otherwise the put doesn't save.
-        Set<String> valuesCopy = new ArraySet<>();
-        valuesCopy.addAll(values);
-        values = valuesCopy;
-
-        final boolean result = values.remove(valueToRemove);
-        prefs.edit().putStringSet(keyName, values).commit();
-        return result;
-    }
-
-    public static void setStringList(SharedPreferences prefs, String keyName, String[] values) {
-        Set<String> valueSet = new ArraySet<String>();
-        for (String value : values)
-            valueSet.add(value);
-
-        prefs.edit().putStringSet(keyName, valueSet).commit();
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/PropertyListAdapter.java b/android/app/src/main/java/com/github/stenzek/duckstation/PropertyListAdapter.java
deleted file mode 100644
index 3f9a01565..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/PropertyListAdapter.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.TextView;
-
-import java.util.ArrayList;
-
-public class PropertyListAdapter extends BaseAdapter {
-    private class Item {
-        public String key;
-        public String title;
-        public String value;
-
-        Item(String key, String title, String value) {
-            this.key = key;
-            this.title = title;
-            this.value = value;
-        }
-    }
-
-    private Context mContext;
-    private ArrayList<Item> mItems = new ArrayList<>();
-
-    public PropertyListAdapter(Context context) {
-        mContext = context;
-    }
-
-    public Item getItemByKey(String key) {
-        for (Item it : mItems) {
-            if (it.key.equals(key))
-                return it;
-        }
-
-        return null;
-    }
-
-    public int addItem(String key, String title, String value) {
-        if (getItemByKey(key) != null)
-            return -1;
-
-        Item it = new Item(key, title, value);
-        int position = mItems.size();
-        mItems.add(it);
-        return position;
-    }
-
-    public boolean removeItem(Item item) {
-        return mItems.remove(item);
-    }
-
-    @Override
-    public int getCount() {
-        return mItems.size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return mItems.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        if (convertView == null) {
-            convertView = LayoutInflater.from(mContext)
-                    .inflate(R.layout.layout_game_property_entry, parent, false);
-        }
-
-        TextView titleView = (TextView) convertView.findViewById(R.id.property_title);
-        TextView valueView = (TextView) convertView.findViewById(R.id.property_value);
-        Item prop = mItems.get(position);
-        titleView.setText(prop.title);
-        valueView.setText(prop.value);
-        return convertView;
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/RatioPreference.java b/android/app/src/main/java/com/github/stenzek/duckstation/RatioPreference.java
deleted file mode 100644
index fe6fc5b41..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/RatioPreference.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.res.Resources;
-import android.util.AttributeSet;
-import android.util.TypedValue;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceDataStore;
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceViewHolder;
-
-public class RatioPreference extends Preference {
-    private String mNumeratorKey;
-    private String mDenominatorKey;
-
-    private int mNumeratorValue = 1;
-    private int mDenominatorValue = 1;
-
-    private int mMinimumNumerator = 1;
-    private int mMaximumNumerator = 50;
-    private int mDefaultNumerator = 1;
-    private int mMinimumDenominator = 1;
-    private int mMaximumDenominator = 50;
-    private int mDefaultDenominator = 1;
-
-    private void initAttributes(AttributeSet attrs) {
-        for (int i = 0; i < attrs.getAttributeCount(); i++) {
-            final String key = attrs.getAttributeName(i);
-            if (key.equals("numeratorKey")) {
-                mNumeratorKey = attrs.getAttributeValue(i);
-            } else if (key.equals("minimumNumerator")) {
-                mMinimumNumerator = attrs.getAttributeIntValue(i, 1);
-            } else if (key.equals("maximumNumerator")) {
-                mMaximumNumerator = attrs.getAttributeIntValue(i, 1);
-            } else if (key.equals("defaultNumerator")) {
-                mDefaultNumerator = attrs.getAttributeIntValue(i, 1);
-            } else if(key.equals("denominatorKey")) {
-                mDenominatorKey = attrs.getAttributeValue(i);
-            } else if (key.equals("minimumDenominator")) {
-                mMinimumDenominator = attrs.getAttributeIntValue(i, 1);
-            } else if (key.equals("maximumDenominator")) {
-                mMaximumDenominator = attrs.getAttributeIntValue(i, 1);
-            } else if (key.equals("defaultDenominator")) {
-                mDefaultDenominator = attrs.getAttributeIntValue(i, 1);
-            }
-        }
-    }
-
-    public RatioPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-        setWidgetLayoutResource(R.layout.layout_ratio_preference);
-        initAttributes(attrs);
-    }
-
-    public RatioPreference(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        setWidgetLayoutResource(R.layout.layout_ratio_preference);
-        initAttributes(attrs);
-    }
-
-    public RatioPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        setWidgetLayoutResource(R.layout.layout_ratio_preference);
-        initAttributes(attrs);
-    }
-
-    public RatioPreference(Context context) {
-        super(context);
-        setWidgetLayoutResource(R.layout.layout_ratio_preference);
-    }
-
-    private void persistValues() {
-        final PreferenceDataStore dataStore = getPreferenceDataStore();
-        if (dataStore != null) {
-            if (mNumeratorKey != null)
-                dataStore.putInt(mNumeratorKey, mNumeratorValue);
-            if (mDenominatorKey != null)
-                dataStore.putInt(mDenominatorKey, mDenominatorValue);
-        } else {
-            SharedPreferences.Editor editor = getPreferenceManager().getSharedPreferences().edit();
-            if (mNumeratorKey != null)
-                editor.putInt(mNumeratorKey, mNumeratorValue);
-            if (mDenominatorKey != null)
-                editor.putInt(mDenominatorKey, mDenominatorValue);
-            editor.commit();
-        }
-    }
-
-    @Override
-    protected void onAttachedToHierarchy(PreferenceManager preferenceManager) {
-        super.onAttachedToHierarchy(preferenceManager);
-        setInitialValue();
-    }
-
-    private void setInitialValue() {
-        final PreferenceDataStore dataStore = getPreferenceDataStore();
-        if (dataStore != null) {
-            if (mNumeratorKey != null)
-                mNumeratorValue = dataStore.getInt(mNumeratorKey, mDefaultNumerator);
-            if (mDenominatorKey != null)
-                mDenominatorValue = dataStore.getInt(mDenominatorKey, mDefaultDenominator);
-        } else {
-            final SharedPreferences pm = getPreferenceManager().getSharedPreferences();
-            if (mNumeratorKey != null)
-                mNumeratorValue = pm.getInt(mNumeratorKey, mDefaultNumerator);
-            if (mDenominatorKey != null)
-                mDenominatorValue = pm.getInt(mDenominatorKey, mDefaultDenominator);
-        }
-    }
-
-    private static BaseAdapter generateDropdownItems(int min, int max) {
-        return new BaseAdapter() {
-            @Override
-            public int getCount() {
-                return (max - min) + 1;
-            }
-
-            @Override
-            public Object getItem(int position) {
-                return Integer.toString(min + position);
-            }
-
-            @Override
-            public long getItemId(int position) {
-                return position;
-            }
-
-            @Override
-            public View getView(int position, View convertView, ViewGroup parent) {
-                TextView view;
-                if (convertView != null) {
-                    view = (TextView) convertView;
-                } else {
-                    view = new TextView(parent.getContext());
-
-                    Resources r = parent.getResources();
-                    float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10.0f, r.getDisplayMetrics());
-                    view.setPadding((int) px, (int) px, (int) px, (int) px);
-                }
-
-                view.setText(Integer.toString(min + position));
-                return view;
-            }
-        };
-    }
-
-    @Override
-    public void onBindViewHolder(PreferenceViewHolder holder) {
-        super.onBindViewHolder(holder);
-        holder.itemView.setClickable(false);
-
-        Spinner numeratorSpinner = (Spinner) holder.findViewById(R.id.numerator);
-        numeratorSpinner.setAdapter(generateDropdownItems(mMinimumNumerator, mMaximumNumerator));
-        numeratorSpinner.setSelection(mNumeratorValue - mMinimumNumerator);
-        numeratorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-            @Override
-            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                final int newValue = position + mMinimumNumerator;
-                if (newValue != mNumeratorValue) {
-                    mNumeratorValue = newValue;
-                    persistValues();
-                }
-            }
-
-            @Override
-            public void onNothingSelected(AdapterView<?> parent) {
-            }
-        });
-        Spinner denominatorSpinner = (Spinner) holder.findViewById(R.id.denominator);
-        denominatorSpinner.setAdapter(generateDropdownItems(mMinimumDenominator, mMaximumDenominator));
-        denominatorSpinner.setSelection(mDenominatorValue - mMinimumDenominator);
-        denominatorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-            @Override
-            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                final int newValue = position + mMinimumDenominator;
-                if (newValue != mDenominatorValue) {
-                    mDenominatorValue = newValue;
-                    persistValues();
-                }
-            }
-
-            @Override
-            public void onNothingSelected(AdapterView<?> parent) {
-            }
-        });
-    }
-
-
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/SaveStateInfo.java b/android/app/src/main/java/com/github/stenzek/duckstation/SaveStateInfo.java
deleted file mode 100644
index 7acd33f32..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/SaveStateInfo.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import java.nio.ByteBuffer;
-
-public class SaveStateInfo {
-    private String mPath;
-    private String mGameTitle;
-    private String mGameCode;
-    private String mMediaPath;
-    private String mTimestamp;
-    private int mSlot;
-    private boolean mGlobal;
-    private Bitmap mScreenshot;
-
-    public SaveStateInfo(String path, String gameTitle, String gameCode, String mediaPath, String timestamp, int slot, boolean global,
-                         int screenshotWidth, int screenshotHeight, byte[] screenshotData) {
-        mPath = path;
-        mGameTitle = gameTitle;
-        mGameCode = gameCode;
-        mMediaPath = mediaPath;
-        mTimestamp = timestamp;
-        mSlot = slot;
-        mGlobal = global;
-
-        if (screenshotData != null) {
-            try {
-                mScreenshot = Bitmap.createBitmap(screenshotWidth, screenshotHeight, Bitmap.Config.ARGB_8888);
-                mScreenshot.copyPixelsFromBuffer(ByteBuffer.wrap(screenshotData));
-            } catch (Exception e) {
-                mScreenshot = null;
-            }
-        }
-    }
-
-    public boolean exists() {
-        return mPath != null;
-    }
-
-    public String getPath() {
-        return mPath;
-    }
-
-    public String getGameTitle() {
-        return mGameTitle;
-    }
-
-    public String getGameCode() {
-        return mGameCode;
-    }
-
-    public String getMediaPath() {
-        return mMediaPath;
-    }
-
-    public String getTimestamp() {
-        return mTimestamp;
-    }
-
-    public int getSlot() {
-        return mSlot;
-    }
-
-    public boolean isGlobal() {
-        return mGlobal;
-    }
-
-    public Bitmap getScreenshot() {
-        return mScreenshot;
-    }
-
-    private void fillView(Context context, View view) {
-        ImageView imageView = (ImageView) view.findViewById(R.id.image);
-        TextView summaryView = (TextView) view.findViewById(R.id.summary);
-        TextView gameView = (TextView) view.findViewById(R.id.game);
-        TextView pathView = (TextView) view.findViewById(R.id.path);
-        TextView timestampView = (TextView) view.findViewById(R.id.timestamp);
-
-        if (mScreenshot != null)
-            imageView.setImageBitmap(mScreenshot);
-        else
-            imageView.setImageDrawable(context.getDrawable(R.drawable.ic_baseline_not_interested_60));
-
-        String summaryText;
-        if (mGlobal)
-            summaryView.setText(String.format(context.getString(R.string.save_state_info_global_save_n), mSlot));
-        else if (mSlot == 0)
-            summaryView.setText(R.string.save_state_info_quick_save);
-        else
-            summaryView.setText(String.format(context.getString(R.string.save_state_info_game_save_n), mSlot));
-
-        if (exists()) {
-            gameView.setText(String.format("%s - %s", mGameCode, mGameTitle));
-
-            int lastSlashPosition = mMediaPath.lastIndexOf('/');
-            if (lastSlashPosition >= 0)
-                pathView.setText(mMediaPath.substring(lastSlashPosition + 1));
-            else
-                pathView.setText(mMediaPath);
-
-            timestampView.setText(mTimestamp);
-        } else {
-            gameView.setText(R.string.save_state_info_slot_is_empty);
-            pathView.setText("");
-            timestampView.setText("");
-        }
-    }
-
-    public static class ListAdapter extends BaseAdapter {
-        private final Context mContext;
-        private final SaveStateInfo[] mInfos;
-
-        public ListAdapter(Context context, SaveStateInfo[] infos) {
-            mContext = context;
-            mInfos = infos;
-        }
-
-        @Override
-        public int getCount() {
-            return mInfos.length;
-        }
-
-        @Override
-        public Object getItem(int position) {
-            return mInfos[position];
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            if (convertView == null) {
-                convertView = LayoutInflater.from(mContext).inflate(R.layout.save_state_view_entry, parent, false);
-            }
-
-            mInfos[position].fillView(mContext, convertView);
-            return convertView;
-        }
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/SettingsActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/SettingsActivity.java
deleted file mode 100644
index 47a9313c9..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/SettingsActivity.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.os.Bundle;
-import android.view.MenuItem;
-
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.ActionBar;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.fragment.app.Fragment;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.viewpager2.adapter.FragmentStateAdapter;
-
-public class SettingsActivity extends AppCompatActivity {
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(null);
-        setContentView(R.layout.settings_activity);
-        getSupportFragmentManager()
-                .beginTransaction()
-                .replace(R.id.settings, new SettingsCollectionFragment())
-                .commit();
-        ActionBar actionBar = getSupportActionBar();
-        if (actionBar != null) {
-            actionBar.setDisplayHomeAsUpEnabled(true);
-        }
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            onBackPressed();
-            return true;
-        }
-
-        return super.onOptionsItemSelected(item);
-    }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/SettingsCollectionFragment.java b/android/app/src/main/java/com/github/stenzek/duckstation/SettingsCollectionFragment.java
deleted file mode 100644
index b5aa1138b..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/SettingsCollectionFragment.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.viewpager2.adapter.FragmentStateAdapter;
-import androidx.viewpager2.widget.ViewPager2;
-
-import com.google.android.material.tabs.TabLayout;
-import com.google.android.material.tabs.TabLayoutMediator;
-
-public class SettingsCollectionFragment extends Fragment {
-    private SettingsCollectionAdapter adapter;
-    private ViewPager2 viewPager;
-
-    @Nullable
-    @Override
-    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        return inflater.inflate(R.layout.fragment_settings_collection, container, false);
-    }
-
-    @Override
-    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
-        adapter = new SettingsCollectionAdapter(this);
-        viewPager = view.findViewById(R.id.view_pager);
-        viewPager.setAdapter(adapter);
-
-        TabLayout tabLayout = view.findViewById(R.id.tab_layout);
-        new TabLayoutMediator(tabLayout, viewPager,
-                (tab, position) -> tab.setText(getResources().getStringArray(R.array.settings_tabs)[position])
-        ).attach();
-    }
-
-    public static class SettingsFragment extends PreferenceFragmentCompat {
-        private final int resourceId;
-
-        public SettingsFragment(int resourceId) {
-            this.resourceId = resourceId;
-        }
-
-        @Override
-        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-            setPreferencesFromResource(resourceId, rootKey);
-        }
-    }
-
-    public static class SettingsCollectionAdapter extends FragmentStateAdapter {
-        public SettingsCollectionAdapter(@NonNull Fragment fragment) {
-            super(fragment);
-        }
-
-        @NonNull
-        @Override
-        public Fragment createFragment(int position) {
-            switch (position) {
-                case 0:     // General
-                    return new SettingsFragment(R.xml.general_preferences);
-
-                case 1:     // Display
-                    return new SettingsFragment(R.xml.display_preferences);
-
-                case 2:     // Audio
-                    return new SettingsFragment(R.xml.audio_preferences);
-
-                case 3:     // Enhancements
-                    return new SettingsFragment(R.xml.enhancements_preferences);
-
-                case 4:     // Achievements
-                    return new AchievementSettingsFragment();
-
-                case 5:     // Advanced
-                    return new SettingsFragment(R.xml.advanced_preferences);
-
-                default:
-                    return new Fragment();
-            }
-        }
-
-        @Override
-        public int getItemCount() {
-            return 6;
-        }
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerAxisView.java b/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerAxisView.java
deleted file mode 100644
index eca099791..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerAxisView.java
+++ /dev/null
@@ -1,191 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.util.AttributeSet;
-import android.view.View;
-
-public final class TouchscreenControllerAxisView extends View {
-    private Drawable mBaseDrawable;
-    private Drawable mStickUnpressedDrawable;
-    private Drawable mStickPressedDrawable;
-    private boolean mPressed = false;
-    private int mPointerId = 0;
-    private float mXValue = 0.0f;
-    private float mYValue = 0.0f;
-    private int mDrawXPos = 0;
-    private int mDrawYPos = 0;
-
-    private String mConfigName;
-    private boolean mDefaultVisibility = true;
-
-    private int mControllerIndex = -1;
-    private int mXAxisCode = -1;
-    private int mYAxisCode = -1;
-    private int mLeftButtonCode = -1;
-    private int mRightButtonCode = -1;
-    private int mUpButtonCode = -1;
-    private int mDownButtonCode = -1;
-
-    public TouchscreenControllerAxisView(Context context) {
-        super(context);
-        init();
-    }
-
-    public TouchscreenControllerAxisView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        init();
-    }
-
-    public TouchscreenControllerAxisView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-        init();
-    }
-
-    private void init() {
-        mBaseDrawable = getContext().getDrawable(R.drawable.ic_controller_analog_base);
-        mBaseDrawable.setCallback(this);
-        mStickUnpressedDrawable = getContext().getDrawable(R.drawable.ic_controller_analog_stick_unpressed);
-        mStickUnpressedDrawable.setCallback(this);
-        mStickPressedDrawable = getContext().getDrawable(R.drawable.ic_controller_analog_stick_pressed);
-        mStickPressedDrawable.setCallback(this);
-    }
-
-    public String getConfigName() {
-        return mConfigName;
-    }
-    public void setConfigName(String configName) {
-        mConfigName = configName;
-    }
-
-    public boolean getDefaultVisibility() { return mDefaultVisibility; }
-    public void setDefaultVisibility(boolean visibility) { mDefaultVisibility = visibility; }
-
-    public void setControllerAxis(int controllerIndex, int xCode, int yCode) {
-        mControllerIndex = controllerIndex;
-        mXAxisCode = xCode;
-        mYAxisCode = yCode;
-        mLeftButtonCode = -1;
-        mRightButtonCode = -1;
-        mUpButtonCode = -1;
-        mDownButtonCode = -1;
-    }
-
-    public void setControllerButtons(int controllerIndex, int leftCode, int rightCode, int upCode, int downCode) {
-        mControllerIndex = controllerIndex;
-        mXAxisCode = -1;
-        mYAxisCode = -1;
-        mLeftButtonCode = leftCode;
-        mRightButtonCode = rightCode;
-        mUpButtonCode = upCode;
-        mDownButtonCode = downCode;
-    }
-
-    public void setUnpressed() {
-        if (!mPressed && mXValue == 0.0f && mYValue == 0.0f)
-            return;
-
-        mPressed = false;
-        mXValue = 0.0f;
-        mYValue = 0.0f;
-        mDrawXPos = 0;
-        mDrawYPos = 0;
-        invalidate();
-        updateControllerState();
-    }
-
-    public void setPressed(int pointerId, float pointerX, float pointerY) {
-        final float dx = (pointerX / getScaleX()) - (float) (getWidth() / 2);
-        final float dy = (pointerY / getScaleY()) - (float) (getHeight() / 2);
-        // Log.i("SetPressed", String.format("px=%f,py=%f dx=%f,dy=%f", pointerX, pointerY, dx, dy));
-
-        final float pointerDistance = Math.max(Math.abs(dx), Math.abs(dy));
-        final float angle = (float) Math.atan2((double) dy, (double) dx);
-
-        final float maxDistance = (float) Math.min((getWidth() - getPaddingLeft() - getPaddingRight()) / 2, (getHeight() - getPaddingTop() - getPaddingBottom()) / 2);
-        final float length = Math.min(pointerDistance / maxDistance, 1.0f);
-        // Log.i("SetPressed", String.format("pointerDist=%f,angle=%f,w=%d,h=%d,maxDist=%f,length=%f", pointerDistance, angle, getWidth(), getHeight(), maxDistance, length));
-
-        final float xValue = (float) Math.cos((double) angle) * length;
-        final float yValue = (float) Math.sin((double) angle) * length;
-        mDrawXPos = (int) (xValue * maxDistance);
-        mDrawYPos = (int) (yValue * maxDistance);
-
-        boolean doUpdate = (pointerId != mPointerId || !mPressed || (xValue != mXValue || yValue != mYValue));
-        mPointerId = pointerId;
-        mPressed = true;
-        mXValue = xValue;
-        mYValue = yValue;
-        // Log.i("SetPressed", String.format("xval=%f,yval=%f,drawX=%d,drawY=%d", mXValue, mYValue, mDrawXPos, mDrawYPos));
-
-        if (doUpdate) {
-            invalidate();
-            updateControllerState();
-        }
-    }
-
-    private void updateControllerState() {
-        final float BUTTON_THRESHOLD = 0.33f;
-
-        AndroidHostInterface hostInterface = AndroidHostInterface.getInstance();
-        if (mXAxisCode >= 0)
-            hostInterface.setControllerAxisState(mControllerIndex, mXAxisCode, mXValue);
-        if (mYAxisCode >= 0)
-            hostInterface.setControllerAxisState(mControllerIndex, mYAxisCode, mYValue);
-
-        if (mLeftButtonCode >= 0)
-            hostInterface.setControllerButtonState(mControllerIndex, mLeftButtonCode, (mXValue <= -BUTTON_THRESHOLD));
-        if (mRightButtonCode >= 0)
-            hostInterface.setControllerButtonState(mControllerIndex, mRightButtonCode, (mXValue >= BUTTON_THRESHOLD));
-        if (mUpButtonCode >= 0)
-            hostInterface.setControllerButtonState(mControllerIndex, mUpButtonCode, (mYValue <= -BUTTON_THRESHOLD));
-        if (mDownButtonCode >= 0)
-            hostInterface.setControllerButtonState(mControllerIndex, mDownButtonCode, (mYValue >= BUTTON_THRESHOLD));
-    }
-
-    @Override
-    protected void onDraw(Canvas canvas) {
-        super.onDraw(canvas);
-
-        final int paddingLeft = getPaddingLeft();
-        final int paddingTop = getPaddingTop();
-        final int paddingRight = getPaddingRight();
-        final int paddingBottom = getPaddingBottom();
-        final int contentWidth = getWidth() - paddingLeft - paddingRight;
-        final int contentHeight = getHeight() - paddingTop - paddingBottom;
-
-        mBaseDrawable.setBounds(paddingLeft, paddingTop,
-                paddingLeft + contentWidth, paddingTop + contentHeight);
-        mBaseDrawable.draw(canvas);
-
-        final int stickWidth = contentWidth / 3;
-        final int stickHeight = contentHeight / 3;
-        final int halfStickWidth = stickWidth / 2;
-        final int halfStickHeight = stickHeight / 2;
-        final int centerX = getWidth() / 2;
-        final int centerY = getHeight() / 2;
-        final int drawX = centerX + mDrawXPos;
-        final int drawY = centerY + mDrawYPos;
-
-        Drawable stickDrawable = mPressed ? mStickPressedDrawable : mStickUnpressedDrawable;
-        stickDrawable.setBounds(drawX - halfStickWidth, drawY - halfStickHeight, drawX + halfStickWidth, drawY + halfStickHeight);
-        stickDrawable.draw(canvas);
-    }
-
-    public boolean isPressed() {
-        return mPressed;
-    }
-
-    public boolean hasPointerId() {
-        return mPointerId >= 0;
-    }
-
-    public int getPointerId() {
-        return mPointerId;
-    }
-
-    public void setPointerId(int mPointerId) {
-        this.mPointerId = mPointerId;
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerButtonView.java b/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerButtonView.java
deleted file mode 100644
index b8f70a8a5..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerButtonView.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.util.AttributeSet;
-import android.util.TypedValue;
-import android.view.HapticFeedbackConstants;
-import android.view.View;
-
-/**
- * TODO: document your custom view class.
- */
-public final class TouchscreenControllerButtonView extends View {
-    public enum Hotkey
-    {
-        NONE,
-        FAST_FORWARD,
-        ANALOG_TOGGLE,
-        OPEN_PAUSE_MENU,
-        QUICK_LOAD,
-        QUICK_SAVE
-    }
-
-    private Drawable mUnpressedDrawable;
-    private Drawable mPressedDrawable;
-    private boolean mPressed = false;
-    private boolean mHapticFeedback = false;
-    private int mControllerIndex = -1;
-    private int mButtonCode = -1;
-    private int mAutoFireSlot = -1;
-    private Hotkey mHotkey = Hotkey.NONE;
-    private String mConfigName;
-    private boolean mDefaultVisibility = true;
-    private boolean mIsGlidable = true;
-
-    public TouchscreenControllerButtonView(Context context) {
-        super(context);
-        init(context, null, 0);
-    }
-
-    public TouchscreenControllerButtonView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        init(context, attrs, 0);
-    }
-
-    public TouchscreenControllerButtonView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-        init(context, attrs, defStyle);
-    }
-
-    private void init(Context context, AttributeSet attrs, int defStyle) {
-        // Load attributes
-        final TypedArray a = getContext().obtainStyledAttributes(
-                attrs, R.styleable.TouchscreenControllerButtonView, defStyle, 0);
-
-        if (a.hasValue(R.styleable.TouchscreenControllerButtonView_unpressedDrawable)) {
-            mUnpressedDrawable = a.getDrawable(R.styleable.TouchscreenControllerButtonView_unpressedDrawable);
-            mUnpressedDrawable.setCallback(this);
-        }
-
-        if (a.hasValue(R.styleable.TouchscreenControllerButtonView_pressedDrawable)) {
-            mPressedDrawable = a.getDrawable(R.styleable.TouchscreenControllerButtonView_pressedDrawable);
-            mPressedDrawable.setCallback(this);
-        }
-
-        a.recycle();
-    }
-
-    @Override
-    protected void onDraw(Canvas canvas) {
-        super.onDraw(canvas);
-
-        int leftBounds = 0;
-        int rightBounds = leftBounds + getWidth();
-        int topBounds = 0;
-        int bottomBounds = topBounds + getHeight();
-
-        if (mPressed) {
-            final int expandSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
-                    10.0f, getResources().getDisplayMetrics());
-            leftBounds -= expandSize;
-            rightBounds += expandSize;
-            topBounds -= expandSize;
-            bottomBounds += expandSize;
-        }
-
-        // Draw the example drawable on top of the text.
-        Drawable drawable = mPressed ? mPressedDrawable : mUnpressedDrawable;
-        if (drawable != null) {
-            drawable.setBounds(leftBounds, topBounds, rightBounds, bottomBounds);
-            drawable.draw(canvas);
-        }
-    }
-
-    public boolean isPressed() {
-        return mPressed;
-    }
-
-    public void setPressed(boolean pressed) {
-        if (pressed == mPressed)
-            return;
-
-        mPressed = pressed;
-        invalidate();
-        updateControllerState();
-
-        if (mHapticFeedback) {
-            performHapticFeedback(pressed ? HapticFeedbackConstants.VIRTUAL_KEY : HapticFeedbackConstants.VIRTUAL_KEY_RELEASE);
-        }
-    }
-
-    public void setButtonCode(int controllerIndex, int code) {
-        mControllerIndex = controllerIndex;
-        mButtonCode = code;
-    }
-
-    public void setAutoFireSlot(int controllerIndex, int slot) {
-        mControllerIndex = controllerIndex;
-        mAutoFireSlot = slot;
-    }
-
-    public void setHotkey(Hotkey hotkey) {
-        mHotkey = hotkey;
-    }
-
-    public String getConfigName() {
-        return mConfigName;
-    }
-    public void setConfigName(String name) {
-        mConfigName = name;
-    }
-
-    public boolean getIsGlidable() { return mIsGlidable; }
-    public void setIsGlidable(boolean isGlidable) { mIsGlidable = isGlidable; }
-
-    public boolean getDefaultVisibility() { return mDefaultVisibility; }
-    public void setDefaultVisibility(boolean visibility) { mDefaultVisibility = visibility; }
-
-    public void setHapticFeedback(boolean enabled) {
-        mHapticFeedback = enabled;
-    }
-
-    private void updateControllerState() {
-        final AndroidHostInterface hi = AndroidHostInterface.getInstance();
-        if (mButtonCode >= 0)
-            hi.setControllerButtonState(mControllerIndex, mButtonCode, mPressed);
-        if (mAutoFireSlot >= 0)
-            hi.setControllerAutoFireState(mControllerIndex, mAutoFireSlot, mPressed);
-
-        switch (mHotkey)
-        {
-            case FAST_FORWARD: {
-                hi.setFastForwardEnabled(mPressed);
-            }
-            break;
-
-            case ANALOG_TOGGLE: {
-                if (!mPressed)
-                    hi.toggleControllerAnalogMode();
-            }
-            break;
-
-            case OPEN_PAUSE_MENU: {
-                if (!mPressed)
-                    hi.getEmulationActivity().openPauseMenu();
-            }
-            break;
-
-            case QUICK_LOAD: {
-                if (!mPressed)
-                    hi.loadState(false, 0);
-            }
-            break;
-
-            case QUICK_SAVE: {
-                if (!mPressed)
-                    hi.saveState(false, 0);
-            }
-            break;
-
-            case NONE:
-            default:
-                break;
-        }
-    }
-
-    public Drawable getPressedDrawable() {
-        return mPressedDrawable;
-    }
-
-    public void setPressedDrawable(Drawable pressedDrawable) {
-        mPressedDrawable = pressedDrawable;
-    }
-
-    public Drawable getUnpressedDrawable() {
-        return mUnpressedDrawable;
-    }
-
-    public void setUnpressedDrawable(Drawable unpressedDrawable) {
-        mUnpressedDrawable = unpressedDrawable;
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerDPadView.java b/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerDPadView.java
deleted file mode 100644
index 797abb267..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerDPadView.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.util.TypedValue;
-import android.view.View;
-
-public final class TouchscreenControllerDPadView extends View {
-    private static final int NUM_DIRECTIONS = 4;
-    private static final int NUM_POSITIONS = 8;
-    private static final int DIRECTION_UP = 0;
-    private static final int DIRECTION_RIGHT = 1;
-    private static final int DIRECTION_DOWN = 2;
-    private static final int DIRECTION_LEFT = 3;
-
-    private final Drawable[] mUnpressedDrawables = new Drawable[NUM_DIRECTIONS];
-    private final Drawable[] mPressedDrawables = new Drawable[NUM_DIRECTIONS];
-    private final int[] mDirectionCodes = new int[] { -1, -1, -1, -1 };
-    private final boolean[] mDirectionStates = new boolean[NUM_DIRECTIONS];
-
-    private boolean mPressed = false;
-    private int mPointerId = 0;
-    private int mPointerX = 0;
-    private int mPointerY = 0;
-
-    private String mConfigName;
-    private boolean mDefaultVisibility = true;
-
-    private int mControllerIndex = -1;
-
-    private static final int[][] DRAWABLES = {
-            {R.drawable.ic_controller_up_button,R.drawable.ic_controller_up_button_pressed},
-            {R.drawable.ic_controller_right_button,R.drawable.ic_controller_right_button_pressed},
-            {R.drawable.ic_controller_down_button,R.drawable.ic_controller_down_button_pressed},
-            {R.drawable.ic_controller_left_button,R.drawable.ic_controller_left_button_pressed},
-    };
-
-
-    public TouchscreenControllerDPadView(Context context) {
-        super(context);
-        init();
-    }
-
-    public TouchscreenControllerDPadView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        init();
-    }
-
-    public TouchscreenControllerDPadView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-        init();
-    }
-
-    private void init() {
-        for (int i = 0; i < NUM_DIRECTIONS; i++) {
-            mUnpressedDrawables[i] = getContext().getDrawable(DRAWABLES[i][0]);
-            mPressedDrawables[i] = getContext().getDrawable(DRAWABLES[i][1]);
-        }
-    }
-
-    public String getConfigName() {
-        return mConfigName;
-    }
-    public void setConfigName(String configName) {
-        mConfigName = configName;
-    }
-
-    public boolean getDefaultVisibility() { return mDefaultVisibility; }
-    public void setDefaultVisibility(boolean visibility) { mDefaultVisibility = visibility; }
-
-    public void setControllerButtons(int controllerIndex, int leftCode, int rightCode, int upCode, int downCode) {
-        mControllerIndex = controllerIndex;
-        mDirectionCodes[DIRECTION_LEFT] = leftCode;
-        mDirectionCodes[DIRECTION_RIGHT] = rightCode;
-        mDirectionCodes[DIRECTION_UP] = upCode;
-        mDirectionCodes[DIRECTION_DOWN] = downCode;
-    }
-
-    public void setUnpressed() {
-        if (!mPressed && mPointerX == 0 && mPointerY == 0)
-            return;
-
-        mPressed = false;
-        mPointerX = 0;
-        mPointerY = 0;
-        updateControllerState();
-        invalidate();
-    }
-
-    public void setPressed(int pointerId, int pointerX, int pointerY) {
-        final int posX = (int)(pointerX / getScaleX());
-        final int posY = (int)(pointerY / getScaleY());
-
-        boolean doUpdate = (pointerId != mPointerId || !mPressed || (posX != mPointerX || posY != mPointerY));
-        mPointerId = pointerId;
-        mPointerX = posX;
-        mPointerY = posY;
-        mPressed = true;
-
-        if (doUpdate) {
-            updateControllerState();
-            invalidate();
-        }
-    }
-
-    private void updateControllerState() {
-        final int subX = mPointerX / (getWidth() / 3);
-        final int subY = mPointerY / (getHeight() / 3);
-
-        mDirectionStates[DIRECTION_UP] = (mPressed && subY == 0);
-        mDirectionStates[DIRECTION_RIGHT] = (mPressed && subX == 2);
-        mDirectionStates[DIRECTION_DOWN] = (mPressed && subY == 2);
-        mDirectionStates[DIRECTION_LEFT] = (mPressed && subX == 0);
-
-        AndroidHostInterface hostInterface = AndroidHostInterface.getInstance();
-        for (int i = 0; i < NUM_DIRECTIONS; i++) {
-            if (mDirectionCodes[i] >= 0)
-                hostInterface.setControllerButtonState(mControllerIndex, mDirectionCodes[i], mDirectionStates[i]);
-        }
-    }
-
-    private void drawDirection(int direction, int subX, int subY, Canvas canvas, int buttonWidth, int buttonHeight) {
-        int leftBounds = subX * buttonWidth;
-        int rightBounds = leftBounds + buttonWidth;
-        int topBounds = subY * buttonHeight;
-        int bottomBounds = topBounds + buttonHeight;
-
-        if (mDirectionStates[direction]) {
-            final int expandSize = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
-                    10.0f, getResources().getDisplayMetrics());
-            leftBounds -= expandSize;
-            rightBounds += expandSize;
-            topBounds -= expandSize;
-            bottomBounds += expandSize;
-        }
-
-        final Drawable drawable = mDirectionStates[direction] ? mPressedDrawables[direction] : mUnpressedDrawables[direction];
-        drawable.setBounds(leftBounds, topBounds, rightBounds, bottomBounds);
-        drawable.draw(canvas);
-    }
-
-    @Override
-    protected void onDraw(Canvas canvas) {
-        super.onDraw(canvas);
-
-        final int width = getWidth();
-        final int height = getHeight();
-
-        // Divide it into thirds - draw between.
-        final int buttonWidth = width / 3;
-        final int buttonHeight = height / 3;
-
-        drawDirection(DIRECTION_UP, 1, 0, canvas, buttonWidth, buttonHeight);
-        drawDirection(DIRECTION_RIGHT, 2, 1, canvas, buttonWidth, buttonHeight);
-        drawDirection(DIRECTION_DOWN, 1, 2, canvas, buttonWidth, buttonHeight);
-        drawDirection(DIRECTION_LEFT, 0, 1, canvas, buttonWidth, buttonHeight);
-    }
-
-    public boolean isPressed() {
-        return mPressed;
-    }
-
-    public boolean hasPointerId() {
-        return mPointerId >= 0;
-    }
-
-    public int getPointerId() {
-        return mPointerId;
-    }
-
-    public void setPointerId(int mPointerId) {
-        this.mPointerId = mPointerId;
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerView.java b/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerView.java
deleted file mode 100644
index 137e0bc75..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerView.java
+++ /dev/null
@@ -1,858 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.res.Configuration;
-import android.graphics.Rect;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.util.TypedValue;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.FrameLayout;
-import android.widget.SeekBar;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.preference.PreferenceManager;
-
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-
-/**
- * TODO: document your custom view class.
- */
-public class TouchscreenControllerView extends FrameLayout {
-    public static final int DEFAULT_OPACITY = 100;
-
-    public static final float MIN_VIEW_SCALE = 0.25f;
-    public static final float MAX_VIEW_SCALE = 10.0f;
-
-    public enum EditMode {
-        NONE,
-        POSITION,
-        SCALE
-    }
-
-    private int mControllerIndex;
-    private String mControllerType;
-    private String mViewType;
-    private View mMainView;
-    private ArrayList<TouchscreenControllerButtonView> mButtonViews = new ArrayList<>();
-    private ArrayList<TouchscreenControllerAxisView> mAxisViews = new ArrayList<>();
-    private TouchscreenControllerDPadView mDPadView = null;
-    private int mPointerButtonCode = -1;
-    private int mPointerPointerId = -1;
-    private boolean mHapticFeedback;
-    private String mLayoutOrientation;
-    private EditMode mEditMode = EditMode.NONE;
-    private View mMovingView = null;
-    private String mMovingName = null;
-    private float mMovingLastX = 0.0f;
-    private float mMovingLastY = 0.0f;
-    private float mMovingLastScale = 0.0f;
-    private ConstraintLayout mEditLayout = null;
-    private int mOpacity = 100;
-    private Map<Integer, View> mGlidePairs = new HashMap<>();
-
-    public TouchscreenControllerView(Context context) {
-        super(context);
-        setFocusable(false);
-        setFocusableInTouchMode(false);
-    }
-
-    public TouchscreenControllerView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public TouchscreenControllerView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    private String getConfigKeyForXTranslation(String name) {
-        return String.format("TouchscreenController/%s/%s%sXTranslation", mViewType, name, mLayoutOrientation);
-    }
-
-    private String getConfigKeyForYTranslation(String name) {
-        return String.format("TouchscreenController/%s/%s%sYTranslation", mViewType, name, mLayoutOrientation);
-    }
-
-    private String getConfigKeyForScale(String name) {
-        return String.format("TouchscreenController/%s/%s%sScale", mViewType, name, mLayoutOrientation);
-    }
-
-    private String getConfigKeyForVisibility(String name) {
-        return String.format("TouchscreenController/%s/%s%sVisible", mViewType, name, mLayoutOrientation);
-    }
-
-    private void saveSettingsForButton(String name, View view) {
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
-        final SharedPreferences.Editor editor = prefs.edit();
-        editor.putFloat(getConfigKeyForXTranslation(name), view.getTranslationX());
-        editor.putFloat(getConfigKeyForYTranslation(name), view.getTranslationY());
-        editor.putFloat(getConfigKeyForScale(name), view.getScaleX());
-        editor.commit();
-    }
-
-    private void saveVisibilityForButton(String name, boolean visible) {
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
-        final SharedPreferences.Editor editor = prefs.edit();
-        editor.putBoolean(getConfigKeyForVisibility(name), visible);
-        editor.commit();
-    }
-
-    private void clearTranslationForAllButtons() {
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
-        final SharedPreferences.Editor editor = prefs.edit();
-
-        for (TouchscreenControllerButtonView buttonView : mButtonViews) {
-            editor.remove(getConfigKeyForXTranslation(buttonView.getConfigName()));
-            editor.remove(getConfigKeyForYTranslation(buttonView.getConfigName()));
-            editor.remove(getConfigKeyForScale(buttonView.getConfigName()));
-            buttonView.setTranslationX(0.0f);
-            buttonView.setTranslationY(0.0f);
-            buttonView.setScaleX(1.0f);
-            buttonView.setScaleY(1.0f);
-        }
-
-        for (TouchscreenControllerAxisView axisView : mAxisViews) {
-            editor.remove(getConfigKeyForXTranslation(axisView.getConfigName()));
-            editor.remove(getConfigKeyForYTranslation(axisView.getConfigName()));
-            editor.remove(getConfigKeyForScale(axisView.getConfigName()));
-            axisView.setTranslationX(0.0f);
-            axisView.setTranslationY(0.0f);
-            axisView.setScaleX(1.0f);
-            axisView.setScaleY(1.0f);
-        }
-
-        if (mDPadView != null) {
-            editor.remove(getConfigKeyForXTranslation(mDPadView.getConfigName()));
-            editor.remove(getConfigKeyForYTranslation(mDPadView.getConfigName()));
-            editor.remove(getConfigKeyForScale(mDPadView.getConfigName()));
-            mDPadView.setTranslationX(0.0f);
-            mDPadView.setTranslationY(0.0f);
-            mDPadView.setScaleX(1.0f);
-            mDPadView.setScaleY(1.0f);
-        }
-
-        editor.commit();
-        requestLayout();
-    }
-
-    private void reloadButtonSettings() {
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
-
-        for (TouchscreenControllerButtonView buttonView : mButtonViews) {
-            try {
-                buttonView.setTranslationX(prefs.getFloat(getConfigKeyForXTranslation(buttonView.getConfigName()), 0.0f));
-                buttonView.setTranslationY(prefs.getFloat(getConfigKeyForYTranslation(buttonView.getConfigName()), 0.0f));
-                buttonView.setScaleX(prefs.getFloat(getConfigKeyForScale(buttonView.getConfigName()), 1.0f));
-                buttonView.setScaleY(prefs.getFloat(getConfigKeyForScale(buttonView.getConfigName()), 1.0f));
-                //Log.i("TouchscreenController", String.format("Translation for %s %f %f", buttonView.getConfigName(),
-                //        buttonView.getTranslationX(), buttonView.getTranslationY()));
-
-                final boolean visible = prefs.getBoolean(getConfigKeyForVisibility(buttonView.getConfigName()), buttonView.getDefaultVisibility());
-                buttonView.setVisibility(visible ? VISIBLE : INVISIBLE);
-            } catch (ClassCastException ex) {
-
-            }
-        }
-
-        for (TouchscreenControllerAxisView axisView : mAxisViews) {
-            try {
-                axisView.setTranslationX(prefs.getFloat(getConfigKeyForXTranslation(axisView.getConfigName()), 0.0f));
-                axisView.setTranslationY(prefs.getFloat(getConfigKeyForYTranslation(axisView.getConfigName()), 0.0f));
-                axisView.setScaleX(prefs.getFloat(getConfigKeyForScale(axisView.getConfigName()), 1.0f));
-                axisView.setScaleY(prefs.getFloat(getConfigKeyForScale(axisView.getConfigName()), 1.0f));
-
-                final boolean visible = prefs.getBoolean(getConfigKeyForVisibility(axisView.getConfigName()), axisView.getDefaultVisibility());
-                axisView.setVisibility(visible ? VISIBLE : INVISIBLE);
-            } catch (ClassCastException ex) {
-
-            }
-        }
-
-        if (mDPadView != null) {
-            try {
-                mDPadView.setTranslationX(prefs.getFloat(getConfigKeyForXTranslation(mDPadView.getConfigName()), 0.0f));
-                mDPadView.setTranslationY(prefs.getFloat(getConfigKeyForYTranslation(mDPadView.getConfigName()), 0.0f));
-                mDPadView.setScaleX(prefs.getFloat(getConfigKeyForScale(mDPadView.getConfigName()), 1.0f));
-                mDPadView.setScaleY(prefs.getFloat(getConfigKeyForScale(mDPadView.getConfigName()), 1.0f));
-
-                final boolean visible = prefs.getBoolean(getConfigKeyForVisibility(mDPadView.getConfigName()), mDPadView.getDefaultVisibility());
-                mDPadView.setVisibility(visible ? VISIBLE : INVISIBLE);
-            } catch (ClassCastException ex) {
-
-            }
-        }
-    }
-
-    private void setOpacity(int opacity) {
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
-        final SharedPreferences.Editor editor = prefs.edit();
-        editor.putInt("TouchscreenController/Opacity", opacity);
-        editor.commit();
-
-        updateOpacity();
-    }
-
-    private void updateOpacity() {
-        mOpacity = PreferenceManager.getDefaultSharedPreferences(getContext()).getInt("TouchscreenController/Opacity", DEFAULT_OPACITY);
-
-        float alpha = (float)mOpacity / 100.0f;
-        alpha = (alpha < 0.0f) ? 0.0f : ((alpha > 1.0f) ? 1.0f : alpha);
-
-        for (TouchscreenControllerButtonView buttonView : mButtonViews) {
-            buttonView.setAlpha(alpha);
-        }
-        for (TouchscreenControllerAxisView axisView : mAxisViews) {
-            axisView.setAlpha(alpha);
-        }
-        if (mDPadView != null)
-            mDPadView.setAlpha(alpha);
-    }
-
-    private String getOrientationString() {
-        switch (getContext().getResources().getConfiguration().orientation) {
-            case Configuration.ORIENTATION_PORTRAIT:
-                return "Portrait";
-            case Configuration.ORIENTATION_LANDSCAPE:
-            default:
-                return "Landscape";
-        }
-    }
-
-    /**
-     * Checks if the orientation of the layout has changed, and if so, reloads button translations.
-     */
-    public void updateOrientation() {
-        String newOrientation = getOrientationString();
-        if (mLayoutOrientation != null && mLayoutOrientation.equals(newOrientation))
-            return;
-
-        Log.i("TouchscreenController", "New orientation: " + newOrientation);
-        mLayoutOrientation = newOrientation;
-        reloadButtonSettings();
-        requestLayout();
-    }
-
-    public void init(int controllerIndex, String controllerType, String viewType, boolean hapticFeedback, boolean gliding) {
-        mControllerIndex = controllerIndex;
-        mControllerType = controllerType;
-        mViewType = viewType;
-        mHapticFeedback = hapticFeedback;
-        mLayoutOrientation = getOrientationString();
-
-        if (mEditMode != EditMode.NONE)
-            endLayoutEditing();
-
-        mButtonViews.clear();
-        mAxisViews.clear();
-        removeAllViews();
-
-        LayoutInflater inflater = LayoutInflater.from(getContext());
-        String pointerButtonName = null;
-        switch (viewType) {
-            case "digital":
-                mMainView = inflater.inflate(R.layout.layout_touchscreen_controller_digital, this, true);
-                break;
-
-            case "analog_stick":
-                mMainView = inflater.inflate(R.layout.layout_touchscreen_controller_analog_stick, this, true);
-                break;
-
-            case "analog_sticks":
-                mMainView = inflater.inflate(R.layout.layout_touchscreen_controller_analog_sticks, this, true);
-                break;
-
-            case "lightgun":
-                mMainView = inflater.inflate(R.layout.layout_touchscreen_controller_lightgun, this, true);
-                pointerButtonName = "Trigger";
-                break;
-
-            case "none":
-            default:
-                mMainView = null;
-                break;
-        }
-
-        if (mMainView == null)
-            return;
-
-        mMainView.setOnTouchListener((view1, event) -> {
-            if (mEditMode != EditMode.NONE)
-                return handleEditingTouchEvent(event);
-            else
-                return handleTouchEvent(event);
-        });
-
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
-
-        linkDPadToButtons(mMainView, R.id.controller_dpad, "DPad", "", true);
-        linkButton(mMainView, R.id.controller_button_l1, "L1Button", "L1", true, gliding);
-        linkButton(mMainView, R.id.controller_button_l2, "L2Button", "L2", true, gliding);
-        linkButton(mMainView, R.id.controller_button_select, "SelectButton", "Select", true, gliding);
-        linkButton(mMainView, R.id.controller_button_start, "StartButton", "Start", true, gliding);
-        linkButton(mMainView, R.id.controller_button_triangle, "TriangleButton", "Triangle", true, gliding);
-        linkButton(mMainView, R.id.controller_button_circle, "CircleButton", "Circle", true, gliding);
-        linkButton(mMainView, R.id.controller_button_cross, "CrossButton", "Cross", true, gliding);
-        linkButton(mMainView, R.id.controller_button_square, "SquareButton", "Square", true, gliding);
-        linkButton(mMainView, R.id.controller_button_r1, "R1Button", "R1", true, gliding);
-        linkButton(mMainView, R.id.controller_button_r2, "R2Button", "R2", true, gliding);
-
-        if (!linkAxis(mMainView, R.id.controller_axis_left, "LeftAxis", "Left", true))
-            linkAxisToButtons(mMainView, R.id.controller_axis_left, "LeftAxis", "");
-
-        linkAxis(mMainView, R.id.controller_axis_right, "RightAxis", "Right", true);
-
-        // GunCon
-        linkButton(mMainView, R.id.controller_button_a, "AButton", "A", true, true);
-        linkButton(mMainView, R.id.controller_button_b, "BButton", "B", true, true);
-        if (pointerButtonName != null)
-            linkPointer(pointerButtonName);
-
-        // Turbo/autofire buttons
-        linkAutoFireButton(mMainView, R.id.controller_button_autofire_1, "AutoFire1", 0, false);
-        linkAutoFireButton(mMainView, R.id.controller_button_autofire_2, "AutoFire2", 1, false);
-        linkAutoFireButton(mMainView, R.id.controller_button_autofire_3, "AutoFire3", 2, false);
-        linkAutoFireButton(mMainView, R.id.controller_button_autofire_4, "AutoFire4", 3, false);
-
-        // Hotkeys
-        linkHotkeyButton(mMainView, R.id.controller_button_fast_forward, "FastForward",
-                TouchscreenControllerButtonView.Hotkey.FAST_FORWARD, false);
-        linkHotkeyButton(mMainView, R.id.controller_button_analog, "AnalogToggle",
-                TouchscreenControllerButtonView.Hotkey.ANALOG_TOGGLE, false);
-        linkHotkeyButton(mMainView, R.id.controller_button_pause, "OpenPauseMenu",
-                TouchscreenControllerButtonView.Hotkey.OPEN_PAUSE_MENU, true);
-        linkHotkeyButton(mMainView, R.id.controller_button_quick_load, "QuickLoad",
-                TouchscreenControllerButtonView.Hotkey.QUICK_LOAD, false);
-        linkHotkeyButton(mMainView, R.id.controller_button_quick_save, "QuickSave",
-                TouchscreenControllerButtonView.Hotkey.QUICK_SAVE, false);
-
-        reloadButtonSettings();
-        updateOpacity();
-        requestLayout();
-    }
-
-    private void linkButton(View view, int id, String configName, String buttonName, boolean defaultVisibility, boolean isGlidable) {
-        TouchscreenControllerButtonView buttonView = (TouchscreenControllerButtonView) view.findViewById(id);
-        if (buttonView == null)
-            return;
-
-        buttonView.setConfigName(configName);
-        buttonView.setDefaultVisibility(defaultVisibility);
-        buttonView.setIsGlidable(isGlidable);
-        mButtonViews.add(buttonView);
-
-        int code = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonName);
-        Log.i("TouchscreenController", String.format("%s -> %d", buttonName, code));
-
-        if (code >= 0) {
-            buttonView.setButtonCode(mControllerIndex, code);
-            buttonView.setHapticFeedback(mHapticFeedback);
-        } else {
-            Log.e("TouchscreenController", String.format("Unknown button name '%s' " +
-                    "for '%s'", buttonName, mControllerType));
-        }
-    }
-
-    private boolean linkAxis(View view, int id, String configName, String axisName, boolean defaultVisibility) {
-        TouchscreenControllerAxisView axisView = (TouchscreenControllerAxisView) view.findViewById(id);
-        if (axisView == null)
-            return false;
-
-        axisView.setConfigName(configName);
-        axisView.setDefaultVisibility(defaultVisibility);
-        mAxisViews.add(axisView);
-
-        int xCode = AndroidHostInterface.getControllerAxisCode(mControllerType, axisName + "X");
-        int yCode = AndroidHostInterface.getControllerAxisCode(mControllerType, axisName + "Y");
-        Log.i("TouchscreenController", String.format("%s -> %d/%d", axisName, xCode, yCode));
-        if (xCode < 0 && yCode < 0)
-            return false;
-
-        axisView.setControllerAxis(mControllerIndex, xCode, yCode);
-        return true;
-    }
-
-    private boolean linkAxisToButtons(View view, int id, String configName, String buttonPrefix) {
-        TouchscreenControllerAxisView axisView = (TouchscreenControllerAxisView) view.findViewById(id);
-        if (axisView == null)
-            return false;
-
-        int leftCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Left");
-        int rightCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Right");
-        int upCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Up");
-        int downCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Down");
-        Log.i("TouchscreenController", String.format("%s(ButtonAxis) -> %d,%d,%d,%d", buttonPrefix, leftCode, rightCode, upCode, downCode));
-        if (leftCode < 0 && rightCode < 0 && upCode < 0 && downCode < 0)
-            return false;
-
-        axisView.setControllerButtons(mControllerIndex, leftCode, rightCode, upCode, downCode);
-        return true;
-    }
-
-    private boolean linkDPadToButtons(View view, int id, String configName, String buttonPrefix, boolean defaultVisibility) {
-        TouchscreenControllerDPadView dpadView = (TouchscreenControllerDPadView) view.findViewById(id);
-        if (dpadView == null)
-            return false;
-
-        dpadView.setConfigName(configName);
-        dpadView.setDefaultVisibility(defaultVisibility);
-        mDPadView = dpadView;
-
-        int leftCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Left");
-        int rightCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Right");
-        int upCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Up");
-        int downCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Down");
-        Log.i("TouchscreenController", String.format("%s(DPad) -> %d,%d,%d,%d", buttonPrefix, leftCode, rightCode, upCode, downCode));
-        if (leftCode < 0 && rightCode < 0 && upCode < 0 && downCode < 0)
-            return false;
-
-        dpadView.setControllerButtons(mControllerIndex, leftCode, rightCode, upCode, downCode);
-        return true;
-    }
-
-    private void linkHotkeyButton(View view, int id, String configName, TouchscreenControllerButtonView.Hotkey hotkey, boolean defaultVisibility) {
-        TouchscreenControllerButtonView buttonView = (TouchscreenControllerButtonView) view.findViewById(id);
-        if (buttonView == null)
-            return;
-
-        buttonView.setConfigName(configName);
-        buttonView.setDefaultVisibility(defaultVisibility);
-        buttonView.setHotkey(hotkey);
-        buttonView.setIsGlidable(false);
-        mButtonViews.add(buttonView);
-    }
-
-    private void linkAutoFireButton(View view, int id, String configName, int slot, boolean defaultVisibility) {
-        TouchscreenControllerButtonView buttonView = (TouchscreenControllerButtonView) view.findViewById(id);
-        if (buttonView == null)
-            return;
-
-        buttonView.setConfigName(configName);
-        buttonView.setDefaultVisibility(defaultVisibility);
-        buttonView.setAutoFireSlot(mControllerIndex, slot);
-        buttonView.setIsGlidable(true);
-        mButtonViews.add(buttonView);
-    }
-
-    private boolean linkPointer(String buttonName) {
-        mPointerButtonCode = AndroidHostInterface.getInstance().getControllerButtonCode(mControllerType, buttonName);
-        Log.i("TouchscreenController", String.format("Pointer -> %s,%d", buttonName, mPointerButtonCode));
-        return (mPointerButtonCode >= 0);
-    }
-
-    private int dpToPixels(float dp) {
-        return Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics()));
-    }
-
-    public void startLayoutEditing(EditMode mode) {
-        if (mEditLayout == null) {
-            LayoutInflater inflater = LayoutInflater.from(getContext());
-            mEditLayout = (ConstraintLayout) inflater.inflate(R.layout.layout_touchscreen_controller_edit, this, false);
-            ((Button) mEditLayout.findViewById(R.id.options)).setOnClickListener((view) -> showEditorMenu());
-            addView(mEditLayout);
-        }
-
-        mEditMode = mode;
-    }
-
-    public void endLayoutEditing() {
-        if (mEditLayout != null) {
-            ((ViewGroup) mMainView).removeView(mEditLayout);
-            mEditLayout = null;
-        }
-
-        mEditMode = EditMode.NONE;
-        mMovingView = null;
-        mMovingName = null;
-        mMovingLastX = 0.0f;
-        mMovingLastY = 0.0f;
-
-        // unpause if we're paused (from the setting)
-        if (AndroidHostInterface.getInstance().isEmulationThreadPaused())
-            AndroidHostInterface.getInstance().pauseEmulationThread(false);
-    }
-
-    private float snapToValue(float pos, float value) {
-        return Math.round(pos / value) * value;
-    }
-
-    private float snapToGrid(float pos) {
-        final float value = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20.0f, getResources().getDisplayMetrics());
-        return snapToValue(pos, value);
-    }
-
-    private boolean handleEditingTouchEvent(MotionEvent event) {
-        switch (event.getActionMasked()) {
-            case MotionEvent.ACTION_UP: {
-                if (mMovingView != null) {
-                    // save position
-                    saveSettingsForButton(mMovingName, mMovingView);
-                    mMovingView = null;
-                    mMovingName = null;
-                    mMovingLastX = 0.0f;
-                    mMovingLastY = 0.0f;
-                    mMovingLastScale = 0.0f;
-                }
-
-                return true;
-            }
-
-            case MotionEvent.ACTION_DOWN: {
-                if (mMovingView != null) {
-                    // already moving a button
-                    return true;
-                }
-
-                Rect rect = new Rect();
-                final float x = event.getX();
-                final float y = event.getY();
-                for (TouchscreenControllerButtonView buttonView : mButtonViews) {
-                    buttonView.getHitRect(rect);
-                    if (rect.contains((int) x, (int) y)) {
-                        mMovingView = buttonView;
-                        mMovingName = buttonView.getConfigName();
-                        mMovingLastX = snapToGrid(x);
-                        mMovingLastY = snapToGrid(y);
-                        mMovingLastScale = buttonView.getScaleX();
-                        return true;
-                    }
-                }
-
-                for (TouchscreenControllerAxisView axisView : mAxisViews) {
-                    axisView.getHitRect(rect);
-                    if (rect.contains((int) x, (int) y)) {
-                        mMovingView = axisView;
-                        mMovingName = axisView.getConfigName();
-                        mMovingLastX = snapToGrid(x);
-                        mMovingLastY = snapToGrid(y);
-                        mMovingLastScale = axisView.getScaleX();
-                        return true;
-                    }
-                }
-
-                if (mDPadView != null) {
-                    mDPadView.getHitRect(rect);
-                    if (rect.contains((int) x, (int) y)) {
-                        mMovingView = mDPadView;
-                        mMovingName = mDPadView.getConfigName();
-                        mMovingLastX = snapToGrid(x);
-                        mMovingLastY = snapToGrid(y);
-                        mMovingLastScale = mDPadView.getScaleX();
-                        return true;
-                    }
-                }
-
-                // nothing..
-                return true;
-            }
-
-            case MotionEvent.ACTION_MOVE: {
-                if (mMovingView == null)
-                    return true;
-
-                final float x = snapToGrid(event.getX());
-                final float y = snapToGrid(event.getY());
-                if (mEditMode == EditMode.POSITION) {
-                    final float dx = x - mMovingLastX;
-                    final float dy = y - mMovingLastY;
-                    mMovingLastX = x;
-                    mMovingLastY = y;
-
-                    final float posX = mMovingView.getX() + dx;
-                    final float posY = mMovingView.getY() + dy;
-                    //Log.d("Position", String.format("%f %f -> (%f %f) %f %f",
-                    //        mMovingView.getX(), mMovingView.getY(), dx, dy, posX, posY));
-                    mMovingView.setX(posX);
-                    mMovingView.setY(posY);
-                } else {
-                    final float lastDx = mMovingLastX - mMovingView.getX();
-                    final float lastDy = mMovingLastY - mMovingView.getY();
-                    final float dx = x - mMovingView.getX();
-                    final float dy = y - mMovingView.getY();
-                    final float lastDistance = Math.max(Math.abs(lastDx), Math.abs(lastDy));
-                    final float distance =  Math.max(Math.abs(dx), Math.abs(dy));
-                    final float scaler = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50.0f, getResources().getDisplayMetrics());
-                    final float scaleDiff = snapToValue((distance - lastDistance) / scaler, 0.1f);
-                    final float scale = Math.max(Math.min(mMovingLastScale + mMovingLastScale * scaleDiff, MAX_VIEW_SCALE), MIN_VIEW_SCALE);
-                    mMovingView.setScaleX(scale);
-                    mMovingView.setScaleY(scale);
-                }
-
-                mMovingView.invalidate();
-                mMainView.requestLayout();
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    private boolean updateTouchButtonsFromEvent(MotionEvent event) {
-        if (!AndroidHostInterface.hasInstanceAndEmulationThreadIsRunning())
-            return false;
-
-        Rect rect = new Rect();
-        final int actionMasked = event.getActionMasked();
-        final int pointerCount = event.getPointerCount();
-        final int liftedPointerIndex = (actionMasked == MotionEvent.ACTION_POINTER_UP) ? event.getActionIndex() : -1;
-        for (TouchscreenControllerButtonView buttonView : mButtonViews) {
-            if (buttonView.getVisibility() != VISIBLE)
-                continue;
-
-            buttonView.getHitRect(rect);
-            boolean pressed = false;
-            for (int i = 0; i < pointerCount; i++) {
-                if (i == liftedPointerIndex)
-                    continue;
-
-                final int x = (int) event.getX(i);
-                final int y = (int) event.getY(i);
-                if (rect.contains(x, y)) {
-                    buttonView.setPressed(true);
-                    final int pointerId = event.getPointerId(i);
-                    if (!mGlidePairs.containsKey(pointerId) && !mGlidePairs.containsValue(buttonView)) {
-                        if (buttonView.getIsGlidable())
-                            mGlidePairs.put(pointerId, buttonView);
-                        else { mGlidePairs.put(pointerId, null); }
-                    }
-                    pressed = true;
-                    break;
-                }
-            }
-
-            if (!pressed  && !mGlidePairs.containsValue(buttonView))
-                buttonView.setPressed(pressed);
-        }
-
-        for (TouchscreenControllerAxisView axisView : mAxisViews) {
-            if (axisView.getVisibility() != VISIBLE)
-                continue;
-
-            axisView.getHitRect(rect);
-            boolean pressed = false;
-            for (int i = 0; i < pointerCount; i++) {
-                if (i == liftedPointerIndex)
-                    continue;
-
-                final int pointerId = event.getPointerId(i);
-                final int x = (int) event.getX(i);
-                final int y = (int) event.getY(i);
-
-                if ((rect.contains(x, y) && !axisView.isPressed()) ||
-                        (axisView.isPressed() && axisView.getPointerId() == pointerId)) {
-                    axisView.setPressed(pointerId, x - rect.left, y - rect.top);
-                    pressed = true;
-                    mGlidePairs.put(pointerId, null);
-                    break;
-                }
-            }
-            if (!pressed)
-                axisView.setUnpressed();
-        }
-
-        if (mDPadView != null && mDPadView.getVisibility() == VISIBLE) {
-            mDPadView.getHitRect(rect);
-
-            boolean pressed = false;
-            for (int i = 0; i < pointerCount; i++) {
-                if (i == liftedPointerIndex)
-                    continue;
-
-                final int x = (int) event.getX(i);
-                final int y = (int) event.getY(i);
-                if (rect.contains(x, y)) {
-                    mDPadView.setPressed(event.getPointerId(i), x - rect.left, y - rect.top);
-                    pressed = true;
-                }
-            }
-
-            if (!pressed)
-                mDPadView.setUnpressed();
-        }
-
-        if (mPointerButtonCode >= 0) {
-            final int pointerIndex = event.getActionIndex();
-            final int pointerId = event.getPointerId(pointerIndex);
-            if (mPointerPointerId < 0 && (actionMasked == MotionEvent.ACTION_DOWN || actionMasked == MotionEvent.ACTION_POINTER_DOWN)) {
-                if (!mGlidePairs.containsKey(pointerId)) {
-                    AndroidHostInterface.getInstance().setControllerButtonState(mControllerIndex,
-                            mPointerButtonCode, true);
-                    mPointerPointerId = pointerId;
-                }
-            } else if (actionMasked == MotionEvent.ACTION_POINTER_UP) {
-                if (pointerId == mPointerPointerId) {
-                    AndroidHostInterface.getInstance().setControllerButtonState(mControllerIndex,
-                            mPointerButtonCode, false);
-                    mPointerPointerId = -1;
-                }
-            }
-
-            AndroidHostInterface.getInstance().setMousePosition(
-                    (int) event.getX(pointerIndex),
-                    (int) event.getY(pointerIndex));
-        }
-
-        return true;
-    }
-
-    private boolean handleTouchEvent(MotionEvent event) {
-        switch (event.getActionMasked()) {
-            case MotionEvent.ACTION_UP: {
-                if (!AndroidHostInterface.hasInstanceAndEmulationThreadIsRunning())
-                    return false;
-
-                mGlidePairs.clear();
-
-                for (TouchscreenControllerButtonView buttonView : mButtonViews) {
-                    buttonView.setPressed(false);
-                }
-
-                for (TouchscreenControllerAxisView axisView : mAxisViews) {
-                    axisView.setUnpressed();
-                }
-
-                if (mDPadView != null)
-                    mDPadView.setUnpressed();
-
-                if (mPointerPointerId >= 0) {
-                    AndroidHostInterface.getInstance().setControllerButtonState(
-                            mControllerIndex, mPointerButtonCode, false);
-                    mPointerPointerId = -1;
-                }
-
-                return true;
-            }
-
-            case MotionEvent.ACTION_DOWN:
-            case MotionEvent.ACTION_POINTER_DOWN:
-            case MotionEvent.ACTION_POINTER_UP: {
-                final int pointerId = event.getPointerId(event.getActionIndex());
-                if (mGlidePairs.containsKey(pointerId))
-                    mGlidePairs.remove(pointerId);
-
-                return updateTouchButtonsFromEvent(event);
-            }
-            case MotionEvent.ACTION_MOVE: {
-                return updateTouchButtonsFromEvent(event);
-            }
-        }
-
-        return false;
-    }
-
-    public AlertDialog.Builder createAddRemoveButtonDialog(Context context) {
-        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
-        final CharSequence[] items = new CharSequence[mButtonViews.size() + mAxisViews.size()];
-        final boolean[] itemsChecked = new boolean[mButtonViews.size() + mAxisViews.size()];
-        int itemCount = 0;
-        for (TouchscreenControllerButtonView buttonView : mButtonViews) {
-            items[itemCount] = buttonView.getConfigName();
-            itemsChecked[itemCount] = buttonView.getVisibility() == VISIBLE;
-            itemCount++;
-        }
-        for (TouchscreenControllerAxisView axisView : mAxisViews) {
-            items[itemCount] = axisView.getConfigName();
-            itemsChecked[itemCount] = axisView.getVisibility() == VISIBLE;
-            itemCount++;
-        }
-
-        builder.setTitle(R.string.dialog_touchscreen_controller_buttons);
-        builder.setMultiChoiceItems(items, itemsChecked, (dialog, which, isChecked) -> {
-            if (which < mButtonViews.size()) {
-                TouchscreenControllerButtonView buttonView = mButtonViews.get(which);
-                buttonView.setVisibility(isChecked ? VISIBLE : INVISIBLE);
-                saveVisibilityForButton(buttonView.getConfigName(), isChecked);
-            } else {
-                TouchscreenControllerAxisView axisView = mAxisViews.get(which - mButtonViews.size());
-                axisView.setVisibility(isChecked ? VISIBLE : INVISIBLE);
-                saveVisibilityForButton(axisView.getConfigName(), isChecked);
-            }
-        });
-        builder.setNegativeButton(R.string.dialog_done, (dialog, which) -> {
-            dialog.dismiss();
-        });
-
-        return builder;
-    }
-
-    public AlertDialog.Builder createOpacityDialog(Context context) {
-        final SeekBar seekBar = new SeekBar(context);
-        seekBar.setMax(100);
-        seekBar.setProgress(mOpacity);
-        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
-            @Override
-            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
-                setOpacity(progress);
-            }
-
-            @Override
-            public void onStartTrackingTouch(SeekBar seekBar) {
-            }
-
-            @Override
-            public void onStopTrackingTouch(SeekBar seekBar) {
-            }
-        });
-
-        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
-        builder.setTitle(R.string.dialog_touchscreen_controller_opacity);
-        builder.setView(seekBar);
-        builder.setNegativeButton(R.string.dialog_done, (dialog, which) -> {
-            dialog.dismiss();
-        });
-        return builder;
-    }
-
-    private void showEditorMenu() {
-        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
-        builder.setItems(R.array.touchscreen_layout_menu, (dialogInterface, i) -> {
-            switch (i) {
-                case 0:     // Change Opacity
-                {
-                    AlertDialog.Builder subBuilder = createOpacityDialog(getContext());
-                    subBuilder.create().show();
-                }
-                break;
-
-                case 1:     // Add/Remove Buttons
-                {
-                    AlertDialog.Builder subBuilder = createAddRemoveButtonDialog(getContext());
-                    subBuilder.create().show();
-                }
-                break;
-
-                case 2:     // Edit Positions
-                {
-                    mEditMode = EditMode.POSITION;
-                }
-                break;
-
-                case 3:     // Edit Scale
-                {
-                    mEditMode = EditMode.SCALE;
-                }
-                break;
-
-                case 4:     // Reset Layout
-                {
-                    clearTranslationForAllButtons();
-                }
-                break;
-
-                case 5:     // Exit Editor
-                {
-                    endLayoutEditing();
-                }
-                break;
-            }
-        });
-        builder.create().show();
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/URLDownloader.java b/android/app/src/main/java/com/github/stenzek/duckstation/URLDownloader.java
deleted file mode 100644
index 6da425237..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/URLDownloader.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-
-/**
- * Helper class for exposing HTTP downloads to native code without pulling in an external
- * dependency for doing so.
- */
-public class URLDownloader {
-    private int statusCode = -1;
-    private byte[] data = null;
-    private final String userAgent;
-
-    public URLDownloader(String userAgent) {
-        this.userAgent = userAgent;
-    }
-
-    private HttpURLConnection getConnection(String url) {
-        try {
-            final URL parsedUrl = new URL(url);
-            HttpURLConnection connection = (HttpURLConnection) parsedUrl.openConnection();
-            if (connection == null)
-                throw new RuntimeException(String.format("openConnection(%s) returned null", url));
-
-            if (userAgent != null)
-                connection.addRequestProperty("User-Agent", userAgent);
-            return connection;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    public int getStatusCode() {
-        return statusCode;
-    }
-
-    public byte[] getData() {
-        return data;
-    }
-
-    private boolean download(HttpURLConnection connection) {
-        try {
-            statusCode = connection.getResponseCode();
-            if (statusCode != HttpURLConnection.HTTP_OK)
-                return false;
-
-            final InputStream inStream = new BufferedInputStream(connection.getInputStream());
-            final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-            final int CHUNK_SIZE = 128 * 1024;
-            final byte[] chunk = new byte[CHUNK_SIZE];
-            int len;
-            while ((len = inStream.read(chunk)) > 0) {
-                outputStream.write(chunk, 0, len);
-            }
-
-            data = outputStream.toByteArray();
-            return true;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return false;
-        }
-    }
-
-    public boolean get(String url) {
-        final HttpURLConnection connection = getConnection(url);
-        if (connection == null)
-            return false;
-
-        return download(connection);
-    }
-
-    public boolean post(String url, byte[] postData) {
-        final HttpURLConnection connection = getConnection(url);
-        if (connection == null)
-            return false;
-
-        try {
-            connection.setDoOutput(true);
-            connection.setChunkedStreamingMode(0);
-
-            OutputStream postStream = new BufferedOutputStream(connection.getOutputStream());
-            postStream.write(postData);
-            return download(connection);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return false;
-        }
-    }
-}
diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/UpdateNotes.java b/android/app/src/main/java/com/github/stenzek/duckstation/UpdateNotes.java
deleted file mode 100644
index 6ef63878f..000000000
--- a/android/app/src/main/java/com/github/stenzek/duckstation/UpdateNotes.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import android.app.AlertDialog;
-import android.content.Intent;
-import android.content.SharedPreferences;
-
-import androidx.preference.PreferenceManager;
-
-public class UpdateNotes {
-    private static final int VERSION_CONTROLLER_UPDATE = 1;
-    private static final int CURRENT_VERSION = VERSION_CONTROLLER_UPDATE;
-
-    private static final String CONFIG_KEY = "Main/UpdateNotesVersion";
-
-    private static int getVersion(MainActivity parent) {
-        try {
-            final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(parent);
-            return sp.getInt(CONFIG_KEY, 0);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return CURRENT_VERSION;
-        }
-    }
-
-    public static void setVersion(MainActivity parent, int version) {
-        final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(parent);
-        sp.edit().putInt(CONFIG_KEY, version).commit();
-    }
-
-    public static boolean displayUpdateNotes(MainActivity parent) {
-        final int version = getVersion(parent);
-
-        if (version < VERSION_CONTROLLER_UPDATE ) {
-            displayControllerUpdateNotes(parent);
-            setVersion(parent, VERSION_CONTROLLER_UPDATE);
-            return true;
-        }
-
-        return false;
-    }
-
-    public static void displayControllerUpdateNotes(MainActivity parent) {
-        final AlertDialog.Builder builder = new AlertDialog.Builder(parent);
-        builder.setTitle(R.string.update_notes_title);
-        builder.setMessage(R.string.update_notes_message_version_controller_update);
-        builder.setPositiveButton(R.string.main_activity_yes, (dialog, which) -> {
-            dialog.dismiss();
-            Intent intent = new Intent(parent, ControllerSettingsActivity.class);
-            parent.startActivity(intent);
-        });
-        builder.setNegativeButton(R.string.main_activity_no, (dialog, which) -> dialog.dismiss());
-        builder.create().show();
-    }
-}
diff --git a/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index 1f6bb2906..000000000
--- a/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:aapt="http://schemas.android.com/aapt"
-    android:width="108dp"
-    android:height="108dp"
-    android:viewportWidth="108"
-    android:viewportHeight="108">
-    <path
-        android:fillType="evenOdd"
-        android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
-        android:strokeWidth="1"
-        android:strokeColor="#00000000">
-        <aapt:attr name="android:fillColor">
-            <gradient
-                android:endX="78.5885"
-                android:endY="90.9159"
-                android:startX="48.7653"
-                android:startY="61.0927"
-                android:type="linear">
-                <item
-                    android:color="#44000000"
-                    android:offset="0.0" />
-                <item
-                    android:color="#00000000"
-                    android:offset="1.0" />
-            </gradient>
-        </aapt:attr>
-    </path>
-    <path
-        android:fillColor="#FFFFFF"
-        android:fillType="nonZero"
-        android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
-        android:strokeWidth="1"
-        android:strokeColor="#00000000" />
-</vector>
diff --git a/android/app/src/main/res/drawable/cover_placeholder.png b/android/app/src/main/res/drawable/cover_placeholder.png
deleted file mode 100644
index 18dc446febdbae6950771d71ad21d47bd848a440..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 214262
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%0Aer}jdHV-K>Yf?w@qPml7J
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%0AeMqE=AA2N7n~{C
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
QIRF3v07*qoM6N<$g3txi6aWAK

diff --git a/android/app/src/main/res/drawable/duck.png b/android/app/src/main/res/drawable/duck.png
deleted file mode 100644
index f039412f225406ba4f8b5ef379a7d39c19fa5aa2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 48659
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

diff --git a/android/app/src/main/res/drawable/flag_eu.xml b/android/app/src/main/res/drawable/flag_eu.xml
deleted file mode 100644
index e545a72a2..000000000
--- a/android/app/src/main/res/drawable/flag_eu.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_us2.xml -->
-<vector android:height="15dp"
-    android:viewportHeight="15"
-    android:viewportWidth="21"
-    android:width="21dp"
-    xmlns:aapt="http://schemas.android.com/aapt"
-    xmlns:android="http://schemas.android.com/apk/res/android">
-    <path
-        android:fillType="evenOdd"
-        android:pathData="M0,0h21v15h-21z"
-        android:strokeColor="#00000000"
-        android:strokeWidth="1">
-        <aapt:attr name="android:fillColor">
-            <gradient
-                android:endX="10.5"
-                android:endY="15"
-                android:startX="10.5"
-                android:startY="0"
-                android:type="linear">
-                <item
-                    android:color="#FFFFFFFF"
-                    android:offset="0" />
-                <item
-                    android:color="#FFF0F0F0"
-                    android:offset="1" />
-            </gradient>
-        </aapt:attr>
-    </path>
-    <path
-        android:fillType="evenOdd"
-        android:pathData="M0,0h21v15h-21z"
-        android:strokeColor="#00000000"
-        android:strokeWidth="1">
-        <aapt:attr name="android:fillColor">
-            <gradient
-                android:endX="10.5"
-                android:endY="15"
-                android:startX="10.5"
-                android:startY="0"
-                android:type="linear">
-                <item
-                    android:color="#FF043CAE"
-                    android:offset="0" />
-                <item
-                    android:color="#FF00339A"
-                    android:offset="1" />
-            </gradient>
-        </aapt:attr>
-    </path>
-    <path
-        android:fillType="evenOdd"
-        android:pathData="M10.5,3L9.7929,3.2071L10,2.5L9.7929,1.7929L10.5,2L11.2071,1.7929L11,2.5L11.2071,3.2071L10.5,3ZM10.5,13L9.7929,13.2071L10,12.5L9.7929,11.7929L10.5,12L11.2071,11.7929L11,12.5L11.2071,13.2071L10.5,13ZM15.5,8L14.7929,8.2071L15,7.5L14.7929,6.7929L15.5,7L16.2071,6.7929L16,7.5L16.2071,8.2071L15.5,8ZM5.5,8L4.7929,8.2071L5,7.5L4.7929,6.7929L5.5,7L6.2071,6.7929L6,7.5L6.2071,8.2071L5.5,8ZM14.8301,5.5L14.123,5.7071L14.3301,5L14.123,4.2929L14.8301,4.5L15.5372,4.2929L15.3301,5L15.5372,5.7071L14.8301,5.5ZM6.1699,10.5L5.4628,10.7071L5.6699,10L5.4628,9.2929L6.1699,9.5L6.877,9.2929L6.6699,10L6.877,10.7071L6.1699,10.5ZM13,3.6699L12.2929,3.877L12.5,3.1699L12.2929,2.4628L13,2.6699L13.7071,2.4628L13.5,3.1699L13.7071,3.877L13,3.6699ZM8,12.3301L7.2929,12.5372L7.5,11.8301L7.2929,11.123L8,11.3301L8.7071,11.123L8.5,11.8301L8.7071,12.5372L8,12.3301ZM14.8301,10.5L14.123,10.7071L14.3301,10L14.123,9.2929L14.8301,9.5L15.5372,9.2929L15.3301,10L15.5372,10.7071L14.8301,10.5ZM6.1699,5.5L5.4628,5.7071L5.6699,5L5.4628,4.2929L6.1699,4.5L6.877,4.2929L6.6699,5L6.877,5.7071L6.1699,5.5ZM13,12.3301L12.2929,12.5372L12.5,11.8301L12.2929,11.123L13,11.3301L13.7071,11.123L13.5,11.8301L13.7071,12.5372L13,12.3301ZM8,3.6699L7.2929,3.877L7.5,3.1699L7.2929,2.4628L8,2.6699L8.7071,2.4628L8.5,3.1699L8.7071,3.877L8,3.6699Z"
-        android:strokeColor="#00000000"
-        android:strokeWidth="1">
-        <aapt:attr name="android:fillColor">
-            <gradient
-                android:endX="10.5"
-                android:endY="13.2071"
-                android:startX="10.5"
-                android:startY="1.7929"
-                android:type="linear">
-                <item
-                    android:color="#FFFFD429"
-                    android:offset="0" />
-                <item
-                    android:color="#FFFFCC00"
-                    android:offset="1" />
-            </gradient>
-        </aapt:attr>
-    </path>
-</vector>
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/flag_jp.xml b/android/app/src/main/res/drawable/flag_jp.xml
deleted file mode 100644
index f7b9fe6bd..000000000
--- a/android/app/src/main/res/drawable/flag_jp.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_hp.xml -->
-<vector android:height="15dp"
-    android:viewportHeight="15"
-    android:viewportWidth="21"
-    android:width="21dp"
-    xmlns:aapt="http://schemas.android.com/aapt"
-    xmlns:android="http://schemas.android.com/apk/res/android">
-    <path
-        android:fillType="evenOdd"
-        android:pathData="M0,0h21v15h-21z"
-        android:strokeColor="#00000000"
-        android:strokeWidth="1">
-        <aapt:attr name="android:fillColor">
-            <gradient
-                android:endX="10.5"
-                android:endY="15"
-                android:startX="10.5"
-                android:startY="0"
-                android:type="linear">
-                <item
-                    android:color="#FFFFFFFF"
-                    android:offset="0" />
-                <item
-                    android:color="#FFF0F0F0"
-                    android:offset="1" />
-            </gradient>
-        </aapt:attr>
-    </path>
-    <path
-        android:fillType="evenOdd"
-        android:pathData="M10.5,7.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
-        android:strokeColor="#00000000"
-        android:strokeWidth="1">
-        <aapt:attr name="android:fillColor">
-            <gradient
-                android:endX="10.5"
-                android:endY="12"
-                android:startX="10.5"
-                android:startY="3"
-                android:type="linear">
-                <item
-                    android:color="#FFD81441"
-                    android:offset="0" />
-                <item
-                    android:color="#FFBB0831"
-                    android:offset="1" />
-            </gradient>
-        </aapt:attr>
-    </path>
-</vector>
diff --git a/android/app/src/main/res/drawable/flag_us.xml b/android/app/src/main/res/drawable/flag_us.xml
deleted file mode 100644
index d83fcb9e2..000000000
--- a/android/app/src/main/res/drawable/flag_us.xml
+++ /dev/null
@@ -1,539 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_us2.xml -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="21dp"
-    android:height="21dp"
-    android:viewportWidth="10"
-    android:viewportHeight="13">
-    <path
-        android:fillColor="#bd3d44"
-        android:pathData="M0 0h13v1h-13Z" />
-    <path
-        android:fillColor="#fff"
-        android:pathData="M0 1h13v1h-13Z" />
-    <path
-        android:fillColor="#bd3d44"
-        android:pathData="M0 2h13v1h-13Z" />
-    <path
-        android:fillColor="#fff"
-        android:pathData="M0 3h13v1h-13Z" />
-    <path
-        android:fillColor="#bd3d44"
-        android:pathData="M0 4h13v1h-13Z" />
-    <path
-        android:fillColor="#fff"
-        android:pathData="M0 5h13v1h-13Z" />
-    <path
-        android:fillColor="#bd3d44"
-        android:pathData="M0 6h13v1h-13Z" />
-    <path
-        android:fillColor="#fff"
-        android:pathData="M0 7h13v1h-13Z" />
-    <path
-        android:fillColor="#bd3d44"
-        android:pathData="M0 8h13v1h-13Z" />
-    <path
-        android:fillColor="#fff"
-        android:pathData="M0 9h13v1h-13Z" />
-    <path
-        android:fillColor="#bd3d44"
-        android:pathData="M0 10h13v1h-13Z" />
-    <path
-        android:fillColor="#fff"
-        android:pathData="M0 11h13v1h-13Z" />
-    <path
-        android:fillColor="#bd3d44"
-        android:pathData="M0 12h13v1h-13Z" />
-    <path
-        android:fillColor="#192f5d"
-        android:pathData="M0 0h5.2v7h-5.2Z" />
-
-    <group
-        android:translateX="0.2"
-        android:translateY="0.2"
-        android:scaleX="0.009"
-        android:scaleY="0.012">
-        <path
-            android:fillColor="#fff"
-            android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-    </group>
-    <group
-        android:translateX="1.0"
-        android:translateY="0.2"
-        android:scaleX="0.009"
-        android:scaleY="0.012">
-        <path
-            android:fillColor="#fff"
-            android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-    </group>
-    <group
-        android:translateX="1.8"
-        android:translateY="0.2"
-        android:scaleX="0.009"
-        android:scaleY="0.012">
-        <path
-            android:fillColor="#fff"
-            android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-    </group>
-    <group
-        android:translateX="2.6"
-        android:translateY="0.2"
-        android:scaleX="0.009"
-        android:scaleY="0.012">
-        <path
-            android:fillColor="#fff"
-            android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-    </group>
-    <group
-        android:translateX="3.4"
-        android:translateY="0.2"
-        android:scaleX="0.009"
-        android:scaleY="0.012">
-        <path
-            android:fillColor="#fff"
-            android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-    </group>
-    <group
-        android:translateX="4.2"
-        android:translateY="0.2"
-        android:scaleX="0.009"
-        android:scaleY="0.012">
-        <path
-            android:fillColor="#fff"
-            android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-    </group>
-
-
-    <group android:translateY="1.4">
-        <group
-            android:translateX="0.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.0"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.8"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="2.6"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="3.4"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="4.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-    </group>
-
-
-    <group android:translateY="2.9">
-        <group
-            android:translateX="0.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.0"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.8"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="2.6"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="3.4"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="4.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-    </group>
-
-
-    <group android:translateY="4.3">
-        <group
-            android:translateX="0.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.0"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.8"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="2.6"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="3.4"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="4.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-    </group>
-
-
-    <group android:translateY="5.6">
-        <group
-            android:translateX="0.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.0"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.8"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="2.6"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="3.4"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="4.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-    </group>
-
-    <!-- Odd stars -->
-
-    <group
-        android:translateY="0.7"
-        android:translateX="0.4">
-        <group
-            android:translateX="0.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.0"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.8"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="2.6"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="3.4"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-    </group>
-
-    <group
-        android:translateY="2.1"
-        android:translateX="0.4">
-        <group
-            android:translateX="0.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.0"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.8"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="2.6"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="3.4"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-    </group>
-
-    <group
-        android:translateY="3.6"
-        android:translateX="0.4">
-        <group
-            android:translateX="0.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.0"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.8"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="2.6"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="3.4"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-    </group>
-
-    <group
-        android:translateY="5.0"
-        android:translateX="0.4">
-        <group
-            android:translateX="0.2"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.0"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="1.8"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="2.6"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-        <group
-            android:translateX="3.4"
-            android:translateY="0.2"
-            android:scaleX="0.009"
-            android:scaleY="0.012">
-            <path
-                android:fillColor="#fff"
-                android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
-        </group>
-    </group>
-
-</vector>
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/ic_baseline_album_24.xml b/android/app/src/main/res/drawable/ic_baseline_album_24.xml
deleted file mode 100644
index 58c0ba697..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_album_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,16.5c-2.49,0 -4.5,-2.01 -4.5,-4.5S9.51,7.5 12,7.5s4.5,2.01 4.5,4.5 -2.01,4.5 -4.5,4.5zM12,11c-0.55,0 -1,0.45 -1,1s0.45,1 1,1 1,-0.45 1,-1 -0.45,-1 -1,-1z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_arrow_back_24.xml b/android/app/src/main/res/drawable/ic_baseline_arrow_back_24.xml
deleted file mode 100644
index 2a31b2ef3..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_arrow_back_24.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal"
-    android:autoMirrored="true">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_category_24.xml b/android/app/src/main/res/drawable/ic_baseline_category_24.xml
deleted file mode 100644
index dead295df..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_category_24.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M12,2l-5.5,9h11z" />
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M17.5,17.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0" />
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M3,13.5h8v8H3z" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_close_24.xml b/android/app/src/main/res/drawable/ic_baseline_close_24.xml
deleted file mode 100644
index 16d6d37dd..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_close_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_create_new_folder_24.xml b/android/app/src/main/res/drawable/ic_baseline_create_new_folder_24.xml
deleted file mode 100644
index 78c162283..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_create_new_folder_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M20,6h-8l-2,-2L4,4c-1.11,0 -1.99,0.89 -1.99,2L2,18c0,1.11 0.89,2 2,2h16c1.11,0 2,-0.89 2,-2L22,8c0,-1.11 -0.89,-2 -2,-2zM19,14h-3v3h-2v-3h-3v-2h3L14,9h2v3h3v2z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_delete_24.xml b/android/app/src/main/res/drawable/ic_baseline_delete_24.xml
deleted file mode 100644
index 3c4030b03..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_delete_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_delete_sweep_24.xml b/android/app/src/main/res/drawable/ic_baseline_delete_sweep_24.xml
deleted file mode 100644
index 22560a4f9..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_delete_sweep_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M15,16h4v2h-4zM15,8h7v2h-7zM15,12h6v2h-6zM3,18c0,1.1 0.9,2 2,2h6c1.1,0 2,-0.9 2,-2L13,8L3,8v10zM14,5h-3l-1,-1L6,4L5,5L2,5v2h12z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_exit_to_app_24.xml b/android/app/src/main/res/drawable/ic_baseline_exit_to_app_24.xml
deleted file mode 100644
index ed42b700b..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_exit_to_app_24.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal"
-    android:autoMirrored="true">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M10.09,15.59L11.5,17l5,-5 -5,-5 -1.41,1.41L12.67,11H3v2h9.67l-2.58,2.59zM19,3H5c-1.11,0 -2,0.9 -2,2v4h2V5h14v14H5v-4H3v4c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_fast_forward_24.xml b/android/app/src/main/res/drawable/ic_baseline_fast_forward_24.xml
deleted file mode 100644
index e3f30c6c7..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_fast_forward_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M4,18l8.5,-6L4,6v12zM13,6v12l8.5,-6L13,6z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_fast_rewind_24.xml b/android/app/src/main/res/drawable/ic_baseline_fast_rewind_24.xml
deleted file mode 100644
index 81f79b322..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_fast_rewind_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M11,18L11,6l-8.5,6 8.5,6zM11.5,12l8.5,6L20,6l-8.5,6z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_folder_24.xml b/android/app/src/main/res/drawable/ic_baseline_folder_24.xml
deleted file mode 100644
index bbfe9c931..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_folder_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_folder_open_24.xml b/android/app/src/main/res/drawable/ic_baseline_folder_open_24.xml
deleted file mode 100644
index f58b501e3..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_folder_open_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M20,6h-8l-2,-2L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,8c0,-1.1 -0.9,-2 -2,-2zM20,18L4,18L4,8h16v10z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_gamepad_24.xml b/android/app/src/main/res/drawable/ic_baseline_gamepad_24.xml
deleted file mode 100644
index f4a8a8711..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_gamepad_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M15,7.5V2H9v5.5l3,3 3,-3zM7.5,9H2v6h5.5l3,-3 -3,-3zM9,16.5V22h6v-5.5l-3,-3 -3,3zM16.5,9l-3,3 3,3H22V9h-5.5z" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_grid_view_24.xml b/android/app/src/main/res/drawable/ic_baseline_grid_view_24.xml
deleted file mode 100644
index 6d4f4a563..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_grid_view_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M3,3v8h8L11,3L3,3zM9,9L5,9L5,5h4v4zM3,13v8h8v-8L3,13zM9,19L5,19v-4h4v4zM13,3v8h8L21,3h-8zM19,9h-4L15,5h4v4zM13,13v8h8v-8h-8zM19,19h-4v-4h4v4z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_help_24.xml b/android/app/src/main/res/drawable/ic_baseline_help_24.xml
deleted file mode 100644
index c0c92681d..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_help_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_import_contacts_24.xml b/android/app/src/main/res/drawable/ic_baseline_import_contacts_24.xml
deleted file mode 100644
index 99a23c4db..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_import_contacts_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M17.5,4.5c-1.95,0 -4.05,0.4 -5.5,1.5c-1.45,-1.1 -3.55,-1.5 -5.5,-1.5S2.45,4.9 1,6v14.65c0,0.65 0.73,0.45 0.75,0.45C3.1,20.45 5.05,20 6.5,20c1.95,0 4.05,0.4 5.5,1.5c1.35,-0.85 3.8,-1.5 5.5,-1.5c1.65,0 3.35,0.3 4.75,1.05C22.66,21.26 23,20.86 23,20.6V6C21.51,4.88 19.37,4.5 17.5,4.5zM21,18.5c-1.1,-0.35 -2.3,-0.5 -3.5,-0.5c-1.7,0 -4.15,0.65 -5.5,1.5V8c1.35,-0.85 3.8,-1.5 5.5,-1.5c1.2,0 2.4,0.15 3.5,0.5V18.5z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_insert_drive_file_24.xml b/android/app/src/main/res/drawable/ic_baseline_insert_drive_file_24.xml
deleted file mode 100644
index 18b306228..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_insert_drive_file_24.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal"
-    android:autoMirrored="true">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M6,2c-1.1,0 -1.99,0.9 -1.99,2L4,20c0,1.1 0.89,2 1.99,2L18,22c1.1,0 2,-0.9 2,-2L20,8l-6,-6L6,2zM13,9L13,3.5L18.5,9L13,9z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_library_music_24.xml b/android/app/src/main/res/drawable/ic_baseline_library_music_24.xml
deleted file mode 100644
index 2ba294bd7..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_library_music_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,7h-3v5.5c0,1.38 -1.12,2.5 -2.5,2.5S10,13.88 10,12.5s1.12,-2.5 2.5,-2.5c0.57,0 1.08,0.19 1.5,0.51L14,5h4v2zM4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_lock_24.xml b/android/app/src/main/res/drawable/ic_baseline_lock_24.xml
deleted file mode 100644
index d6191026a..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_lock_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM15.1,8L8.9,8L8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_lock_open_24.xml b/android/app/src/main/res/drawable/ic_baseline_lock_open_24.xml
deleted file mode 100644
index a11b70e62..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_lock_open_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M12,17c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6h1.9c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM18,20L6,20L6,10h12v10z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_menu_24.xml b/android/app/src/main/res/drawable/ic_baseline_menu_24.xml
deleted file mode 100644
index 4350ba96a..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_menu_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_not_interested_60.xml b/android/app/src/main/res/drawable/ic_baseline_not_interested_60.xml
deleted file mode 100644
index f5f7da3ae..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_not_interested_60.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<vector android:height="60dp" android:tint="?attr/colorControlNormal"
-    android:viewportHeight="24" android:viewportWidth="24"
-    android:width="60dp" xmlns:android="http://schemas.android.com/apk/res/android">
-    <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8 0,-1.85 0.63,-3.55 1.69,-4.9L16.9,18.31C15.55,19.37 13.85,20 12,20zM18.31,16.9L7.1,5.69C8.45,4.63 10.15,4 12,4c4.42,0 8,3.58 8,8 0,1.85 -0.63,3.55 -1.69,4.9z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml b/android/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml
deleted file mode 100644
index 41f4a52ed..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M8,5v14l11,-7z" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_playlist_play_24.xml b/android/app/src/main/res/drawable/ic_baseline_playlist_play_24.xml
deleted file mode 100644
index 67f9b5735..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_playlist_play_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M4,10h12v2L4,12zM4,6h12v2L4,8zM4,14h8v2L4,16zM14,14v6l5,-3z" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_radio_button_checked_24.xml b/android/app/src/main/res/drawable/ic_baseline_radio_button_checked_24.xml
deleted file mode 100644
index 05a669ab2..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_radio_button_checked_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M12,7c-2.76,0 -5,2.24 -5,5s2.24,5 5,5 5,-2.24 5,-5 -2.24,-5 -5,-5zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_radio_button_unchecked_24.xml b/android/app/src/main/res/drawable/ic_baseline_radio_button_unchecked_24.xml
deleted file mode 100644
index 2d5445cbe..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_radio_button_unchecked_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_restart_alt_24.xml b/android/app/src/main/res/drawable/ic_baseline_restart_alt_24.xml
deleted file mode 100644
index 2f9f24ca9..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_restart_alt_24.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M12,5V2L8,6l4,4V7c3.31,0 6,2.69 6,6c0,2.97 -2.17,5.43 -5,5.91v2.02c3.95,-0.49 7,-3.85 7,-7.93C20,8.58 16.42,5 12,5z"/>
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M6,13c0,-1.65 0.67,-3.15 1.76,-4.24L6.34,7.34C4.9,8.79 4,10.79 4,13c0,4.08 3.05,7.44 7,7.93v-2.02C8.17,18.43 6,15.97 6,13z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_save_24.xml b/android/app/src/main/res/drawable/ic_baseline_save_24.xml
deleted file mode 100644
index 955858d7d..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_save_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M17,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7l-4,-4zM12,19c-1.66,0 -3,-1.34 -3,-3s1.34,-3 3,-3 3,1.34 3,3 -1.34,3 -3,3zM15,9L5,9L5,5h10v4z" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_sd_card_24.xml b/android/app/src/main/res/drawable/ic_baseline_sd_card_24.xml
deleted file mode 100644
index 84f6ea6ac..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_sd_card_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M18,2h-8L4.02,8 4,20c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,4c0,-1.1 -0.9,-2 -2,-2zM12,8h-2L10,4h2v4zM15,8h-2L13,4h2v4zM18,8h-2L16,4h2v4z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_settings_24.xml b/android/app/src/main/res/drawable/ic_baseline_settings_24.xml
deleted file mode 100644
index d99a8ae40..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_settings_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_tips_and_updates_24.xml b/android/app/src/main/res/drawable/ic_baseline_tips_and_updates_24.xml
deleted file mode 100644
index 93d588228..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_tips_and_updates_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M7,20h4c0,1.1 -0.9,2 -2,2S7,21.1 7,20zM5,19h8v-2H5V19zM16.5,9.5c0,3.82 -2.66,5.86 -3.77,6.5H5.27C4.16,15.36 1.5,13.32 1.5,9.5C1.5,5.36 4.86,2 9,2S16.5,5.36 16.5,9.5zM21.37,7.37L20,8l1.37,0.63L22,10l0.63,-1.37L24,8l-1.37,-0.63L22,6L21.37,7.37zM19,6l0.94,-2.06L22,3l-2.06,-0.94L19,0l-0.94,2.06L16,3l2.06,0.94L19,6z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_touch_app_24.xml b/android/app/src/main/res/drawable/ic_baseline_touch_app_24.xml
deleted file mode 100644
index 27f451658..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_touch_app_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M9,11.24V7.5C9,6.12 10.12,5 11.5,5S14,6.12 14,7.5v3.74c1.21,-0.81 2,-2.18 2,-3.74C16,5.01 13.99,3 11.5,3S7,5.01 7,7.5C7,9.06 7.79,10.43 9,11.24zM18.84,15.87l-4.54,-2.26c-0.17,-0.07 -0.35,-0.11 -0.54,-0.11H13v-6C13,6.67 12.33,6 11.5,6S10,6.67 10,7.5v10.74c-3.6,-0.76 -3.54,-0.75 -3.67,-0.75c-0.31,0 -0.59,0.13 -0.79,0.33l-0.79,0.8l4.94,4.94C9.96,23.83 10.34,24 10.75,24h6.79c0.75,0 1.33,-0.55 1.44,-1.28l0.75,-5.27c0.01,-0.07 0.02,-0.14 0.02,-0.2C19.75,16.63 19.37,16.09 18.84,15.87z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_trophy_24.xml b/android/app/src/main/res/drawable/ic_baseline_trophy_24.xml
deleted file mode 100644
index dbf6358f8..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_trophy_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M19,5h-2V3H7v2H5C3.9,5 3,5.9 3,7v1c0,2.55 1.92,4.63 4.39,4.94c0.63,1.5 1.98,2.63 3.61,2.96V19H7v2h10v-2h-4v-3.1c1.63,-0.33 2.98,-1.46 3.61,-2.96C19.08,12.63 21,10.55 21,8V7C21,5.9 20.1,5 19,5zM5,8V7h2v3.82C5.84,10.4 5,9.3 5,8zM19,8c0,1.3 -0.84,2.4 -2,2.82V7h2V8z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_vibration_24.xml b/android/app/src/main/res/drawable/ic_baseline_vibration_24.xml
deleted file mode 100644
index a9600b74e..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_vibration_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M0,15h2L2,9L0,9v6zM3,17h2L5,7L3,7v10zM22,9v6h2L24,9h-2zM19,17h2L21,7h-2v10zM16.5,3h-9C6.67,3 6,3.67 6,4.5v15c0,0.83 0.67,1.5 1.5,1.5h9c0.83,0 1.5,-0.67 1.5,-1.5v-15c0,-0.83 -0.67,-1.5 -1.5,-1.5zM16,19L8,19L8,5h8v14z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_baseline_view_list_24.xml b/android/app/src/main/res/drawable/ic_baseline_view_list_24.xml
deleted file mode 100644
index 9884aeb83..000000000
--- a/android/app/src/main/res/drawable/ic_baseline_view_list_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M4,14h4v-4L4,10v4zM4,19h4v-4L4,15v4zM4,9h4L8,5L4,5v4zM9,14h12v-4L9,10v4zM9,19h12v-4L9,15v4zM9,5v4h12L21,5L9,5z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_a_button.xml b/android/app/src/main/res/drawable/ic_controller_a_button.xml
deleted file mode 100644
index 74124b194..000000000
--- a/android/app/src/main/res/drawable/ic_controller_a_button.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M99.279,49.946A49.271,49.236 0,0 1,50.009 99.182,49.271 49.236,0 0,1 0.738,49.946 49.271,49.236 0,0 1,50.009 0.711,49.271 49.236,0 0,1 99.279,49.946Z"
-      android:strokeWidth="1.5"
-      android:fillColor="#000000"
-      android:strokeColor="#c8c8c8"
-      android:fillType="evenOdd"
-      android:fillAlpha="0"/>
-  <path
-      android:pathData="m61.587,68.222 l-4.369,-11.227h-14.376l-4.318,11.227h-4.623l14.173,-36.424h4.115l14.122,36.424zM55.846,52.931 L51.782,41.958q-0.152,-0.406 -0.508,-1.473 -0.356,-1.067 -0.711,-2.184 -0.305,-1.168 -0.508,-1.778 -0.356,1.575 -0.813,3.099 -0.457,1.473 -0.762,2.337l-4.115,10.973z"
-      android:fillColor="#c8c8c8"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_a_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_a_button_pressed.xml
deleted file mode 100644
index 302d83cce..000000000
--- a/android/app/src/main/res/drawable/ic_controller_a_button_pressed.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M99.279,49.946A49.271,49.236 0,0 1,50.009 99.182,49.271 49.236,0 0,1 0.738,49.946 49.271,49.236 0,0 1,50.009 0.711,49.271 49.236,0 0,1 99.279,49.946Z"
-      android:strokeWidth="1.5"
-      android:fillColor="#969696"
-      android:strokeColor="#c8c8c8"
-      android:fillType="evenOdd"/>
-  <path
-      android:pathData="m61.587,68.222 l-4.369,-11.227h-14.376l-4.318,11.227h-4.623l14.173,-36.424h4.115l14.122,36.424zM55.846,52.931 L51.782,41.958q-0.152,-0.406 -0.508,-1.473 -0.356,-1.067 -0.711,-2.184 -0.305,-1.168 -0.508,-1.778 -0.356,1.575 -0.813,3.099 -0.457,1.473 -0.762,2.337l-4.115,10.973z"
-      android:fillColor="#c8c8c8"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_analog_base.xml b/android/app/src/main/res/drawable/ic_controller_analog_base.xml
deleted file mode 100644
index 85168053b..000000000
--- a/android/app/src/main/res/drawable/ic_controller_analog_base.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="194.89dp"
-    android:height="194.89dp"
-    android:viewportWidth="194.89"
-    android:viewportHeight="194.89">
-    <path
-        android:pathData="M194.89,97.445A97.445,97.445 0,0 1,97.445 194.89,97.445 97.445,0 0,1 0,97.445 97.445,97.445 0,0 1,97.445 0,97.445 97.445,0 0,1 194.89,97.445Z"
-        android:strokeAlpha="0.50645"
-        android:fillColor="#1a1a1a"
-        android:fillAlpha="0.504414" />
-    <path
-        android:pathData="M178.82,97.445A81.381,81.381 0,0 1,97.439 178.826,81.381 81.381,0 0,1 16.058,97.445 81.381,81.381 0,0 1,97.439 16.064,81.381 81.381,0 0,1 178.82,97.445Z"
-        android:strokeAlpha="0.50645"
-        android:fillColor="#333333"
-        android:fillAlpha="0.504414" />
-    <path
-        android:pathData="M159.05,97.445A61.609,61.609 0,0 1,97.441 159.054,61.609 61.609,0 0,1 35.832,97.445 61.609,61.609 0,0 1,97.441 35.836,61.609 61.609,0 0,1 159.05,97.445Z"
-        android:strokeAlpha="0.50645"
-        android:fillColor="#1a1a1a"
-        android:fillAlpha="0.504414" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_analog_button.xml b/android/app/src/main/res/drawable/ic_controller_analog_button.xml
deleted file mode 100644
index fec0a0a6e..000000000
--- a/android/app/src/main/res/drawable/ic_controller_analog_button.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-  <path
-      android:pathData="M0.6615,0.6614L23.7969,0.6614v23.0L0.6615,23.7969Z"
-      android:strokeAlpha="1"
-      android:strokeLineJoin="round"
-      android:strokeWidth="0.26458332"
-      android:fillColor="#00000000"
-      android:strokeColor="#e6e6e6"
-      android:strokeLineCap="round" />
-  <path
-      android:fillColor="#e6e6e6"
-      android:pathData="M12,2C6.49,2 2,6.49 2,12s4.49,10 10,10 10,-4.49 10,-10S17.51,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM15,12c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_analog_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_analog_button_pressed.xml
deleted file mode 100644
index b08bd5e16..000000000
--- a/android/app/src/main/res/drawable/ic_controller_analog_button_pressed.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-  <path
-      android:pathData="M0.6615,0.6614L23.7969,0.6614v23.0L0.6615,23.7969Z"
-      android:strokeAlpha="1"
-      android:strokeLineJoin="round"
-      android:strokeWidth="0.26458332"
-      android:fillColor="#4d4d4d"
-      android:strokeColor="#e6e6e6"
-      android:strokeLineCap="round" />
-  <path
-      android:fillColor="#e6e6e6"
-      android:pathData="M12,2C6.49,2 2,6.49 2,12s4.49,10 10,10 10,-4.49 10,-10S17.51,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM15,12c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_analog_stick_pressed.xml b/android/app/src/main/res/drawable/ic_controller_analog_stick_pressed.xml
deleted file mode 100644
index 7304ff569..000000000
--- a/android/app/src/main/res/drawable/ic_controller_analog_stick_pressed.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="191.756dp"
-    android:height="191.756dp"
-    android:viewportWidth="191.756"
-    android:viewportHeight="191.756">
-    <path
-        android:pathData="M191.756,95.878A95.878,95.878 0,0 1,95.878 191.756,95.878 95.878,0 0,1 0,95.878 95.878,95.878 0,0 1,95.878 0,95.878 95.878,0 0,1 191.756,95.878Z"
-        android:strokeAlpha="0.8"
-        android:fillColor="#666666"
-        android:fillAlpha="0.796784" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_analog_stick_unpressed.xml b/android/app/src/main/res/drawable/ic_controller_analog_stick_unpressed.xml
deleted file mode 100644
index 121c376ba..000000000
--- a/android/app/src/main/res/drawable/ic_controller_analog_stick_unpressed.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="191.756dp"
-    android:height="191.756dp"
-    android:viewportWidth="191.756"
-    android:viewportHeight="191.756">
-    <path
-        android:pathData="M191.756,95.878A95.878,95.878 0,0 1,95.878 191.756,95.878 95.878,0 0,1 0,95.878 95.878,95.878 0,0 1,95.878 0,95.878 95.878,0 0,1 191.756,95.878Z"
-        android:strokeAlpha="0.50645"
-        android:fillColor="#666666"
-        android:fillAlpha="0.504414" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_b_button.xml b/android/app/src/main/res/drawable/ic_controller_b_button.xml
deleted file mode 100644
index 8f25810d9..000000000
--- a/android/app/src/main/res/drawable/ic_controller_b_button.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M99.279,49.946A49.271,49.236 0,0 1,50.009 99.182,49.271 49.236,0 0,1 0.738,49.946 49.271,49.236 0,0 1,50.009 0.711,49.271 49.236,0 0,1 99.279,49.946Z"
-      android:strokeWidth="1.5"
-      android:fillColor="#000000"
-      android:strokeColor="#c8c8c8"
-      android:fillType="evenOdd"
-      android:fillAlpha="0"/>
-  <path
-      android:pathData="m37.431,31.811h10.363q6.807,0 10.262,2.032 3.505,1.981 3.505,6.96 0,3.2 -1.778,5.334 -1.778,2.083 -5.131,2.692v0.254q2.286,0.356 4.115,1.321 1.88,0.965 2.946,2.743 1.067,1.778 1.067,4.623 0,4.928 -3.404,7.62 -3.353,2.692 -9.195,2.692h-12.751zM42.003,47.254h6.706q4.674,0 6.401,-1.473 1.727,-1.524 1.727,-4.47 0,-2.997 -2.134,-4.267 -2.083,-1.321 -6.706,-1.321h-5.994zM42.003,51.064v13.157h7.315q4.826,0 6.706,-1.88 1.88,-1.88 1.88,-4.928 0,-2.845 -1.981,-4.572 -1.93,-1.778 -6.96,-1.778z"
-      android:fillColor="#c8c8c8"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_b_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_b_button_pressed.xml
deleted file mode 100644
index 353d7e5f2..000000000
--- a/android/app/src/main/res/drawable/ic_controller_b_button_pressed.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M99.279,49.946A49.271,49.236 0,0 1,50.009 99.182,49.271 49.236,0 0,1 0.738,49.946 49.271,49.236 0,0 1,50.009 0.711,49.271 49.236,0 0,1 99.279,49.946Z"
-      android:strokeWidth="1.5"
-      android:fillColor="#969696"
-      android:strokeColor="#c8c8c8"
-      android:fillType="evenOdd"/>
-  <path
-      android:pathData="m37.431,31.811h10.363q6.807,0 10.262,2.032 3.505,1.981 3.505,6.96 0,3.2 -1.778,5.334 -1.778,2.083 -5.131,2.692v0.254q2.286,0.356 4.115,1.321 1.88,0.965 2.946,2.743 1.067,1.778 1.067,4.623 0,4.928 -3.404,7.62 -3.353,2.692 -9.195,2.692h-12.751zM42.003,47.254h6.706q4.674,0 6.401,-1.473 1.727,-1.524 1.727,-4.47 0,-2.997 -2.134,-4.267 -2.083,-1.321 -6.706,-1.321h-5.994zM42.003,51.064v13.157h7.315q4.826,0 6.706,-1.88 1.88,-1.88 1.88,-4.928 0,-2.845 -1.981,-4.572 -1.93,-1.778 -6.96,-1.778z"
-      android:fillColor="#c8c8c8"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_circle_button.xml b/android/app/src/main/res/drawable/ic_controller_circle_button.xml
deleted file mode 100644
index d9fa460c6..000000000
--- a/android/app/src/main/res/drawable/ic_controller_circle_button.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.45833">
-    <path
-        android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#ffffff" />
-    <path
-        android:pathData="M13.2292,13.2292m-10.5833,0a10.5833,10.5833 0,1 1,21.1667 0a10.5833,10.5833 0,1 1,-21.1667 0"
-        android:strokeLineJoin="round"
-        android:strokeWidth="1.05833328"
-        android:fillColor="#00000000"
-        android:strokeColor="#ff0000"
-        android:fillAlpha="1"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_circle_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_circle_button_pressed.xml
deleted file mode 100644
index 47953d0c1..000000000
--- a/android/app/src/main/res/drawable/ic_controller_circle_button_pressed.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.45833">
-    <path
-        android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#ffffff" />
-    <path
-        android:pathData="M13.2292,13.2292m-10.5833,0a10.5833,10.5833 0,1 1,21.1667 0a10.5833,10.5833 0,1 1,-21.1667 0"
-        android:strokeLineJoin="round"
-        android:strokeWidth="1.05833328"
-        android:fillColor="#00000000"
-        android:strokeColor="#ff0000"
-        android:fillAlpha="1"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_cross_button.xml b/android/app/src/main/res/drawable/ic_controller_cross_button.xml
deleted file mode 100644
index b133bd616..000000000
--- a/android/app/src/main/res/drawable/ic_controller_cross_button.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.45833">
-    <path
-        android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#ffffff" />
-    <path
-        android:pathData="m5.2917,5.2917 l15.875,15.875"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="1.05833333"
-        android:fillColor="#ffffff"
-        android:strokeColor="#008080"
-        android:strokeLineCap="butt" />
-    <path
-        android:pathData="m5.2917,21.1667 l15.875,-15.875"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="1.05833333"
-        android:fillColor="#00000000"
-        android:strokeColor="#008080"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_cross_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_cross_button_pressed.xml
deleted file mode 100644
index b00988473..000000000
--- a/android/app/src/main/res/drawable/ic_controller_cross_button_pressed.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.45833">
-    <path
-        android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#ffffff" />
-    <path
-        android:pathData="m5.2917,5.2917 l15.875,15.875"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="1.05833333"
-        android:fillColor="#ffffff"
-        android:strokeColor="#008080"
-        android:strokeLineCap="butt" />
-    <path
-        android:pathData="m5.2917,21.1667 l15.875,-15.875"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="1.05833333"
-        android:fillColor="#00000000"
-        android:strokeColor="#008080"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_down_button.xml b/android/app/src/main/res/drawable/ic_controller_down_button.xml
deleted file mode 100644
index 898f2c54f..000000000
--- a/android/app/src/main/res/drawable/ic_controller_down_button.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.458332">
-    <path
-        android:pathData="m5.2917,10.5833 l7.9375,-7.9375 7.9375,7.9375v14.5521L5.2917,25.1354Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_down_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_down_button_pressed.xml
deleted file mode 100644
index 4e7d5a35e..000000000
--- a/android/app/src/main/res/drawable/ic_controller_down_button_pressed.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.458332">
-    <path
-        android:pathData="m5.2917,10.5833 l7.9375,-7.9375 7.9375,7.9375v14.5521L5.2917,25.1354Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_fast_forward.xml b/android/app/src/main/res/drawable/ic_controller_fast_forward.xml
deleted file mode 100644
index 37e89e29b..000000000
--- a/android/app/src/main/res/drawable/ic_controller_fast_forward.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-  <path
-      android:pathData="M0.6615,0.6614L23.7969,0.6614v23.0L0.6615,23.7969Z"
-      android:strokeAlpha="1"
-      android:strokeLineJoin="round"
-      android:strokeWidth="0.26458332"
-      android:fillColor="#00000000"
-      android:strokeColor="#e6e6e6"
-      android:strokeLineCap="round" />
-  <path
-      android:fillColor="#e6e6e6"
-      android:pathData="M4,18l8.5,-6L4,6v12zM13,6v12l8.5,-6L13,6z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_fast_forward_pressed.xml b/android/app/src/main/res/drawable/ic_controller_fast_forward_pressed.xml
deleted file mode 100644
index 2a505aad8..000000000
--- a/android/app/src/main/res/drawable/ic_controller_fast_forward_pressed.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-  <path
-      android:pathData="M0.6615,0.6614L23.7969,0.6614v23.0L0.6615,23.7969Z"
-      android:strokeAlpha="1"
-      android:strokeLineJoin="round"
-      android:strokeWidth="0.26458332"
-      android:fillColor="#4d4d4d"
-      android:strokeColor="#e6e6e6"
-      android:strokeLineCap="round" />
-  <path
-      android:fillColor="#e6e6e6"
-      android:pathData="M4,18l8.5,-6L4,6v12zM13,6v12l8.5,-6L13,6z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_l1_button.xml b/android/app/src/main/res/drawable/ic_controller_l1_button.xml
deleted file mode 100644
index 9f3ab7240..000000000
--- a/android/app/src/main/res/drawable/ic_controller_l1_button.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="round"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="round" />
-    <path
-        android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#000000"
-        android:strokeColor="#e6e6e6"
-        android:fillAlpha="0" />
-    <path
-        android:pathData="m13.8028,8.6007h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#000000"
-        android:strokeColor="#e6e6e6"
-        android:fillAlpha="0" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_l1_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_l1_button_pressed.xml
deleted file mode 100644
index 06d625fe5..000000000
--- a/android/app/src/main/res/drawable/ic_controller_l1_button_pressed.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="round"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="round" />
-    <path
-        android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#1a1a1a"
-        android:strokeColor="#000000"
-        android:fillAlpha="1" />
-    <path
-        android:pathData="m13.8028,8.6007h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#1a1a1a"
-        android:strokeColor="#000000"
-        android:fillAlpha="1" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_l2_button.xml b/android/app/src/main/res/drawable/ic_controller_l2_button.xml
deleted file mode 100644
index 3853d103f..000000000
--- a/android/app/src/main/res/drawable/ic_controller_l2_button.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="round"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="round" />
-    <path
-        android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#000000"
-        android:strokeColor="#e6e6e6"
-        android:fillAlpha="0" />
-    <path
-        android:pathData="m14.2816,8.6007h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#000000"
-        android:strokeColor="#e6e6e6"
-        android:fillAlpha="0" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_l2_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_l2_button_pressed.xml
deleted file mode 100644
index eeaefb18b..000000000
--- a/android/app/src/main/res/drawable/ic_controller_l2_button_pressed.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="round"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="round" />
-    <path
-        android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#1a1a1a"
-        android:strokeColor="#000000"
-        android:fillAlpha="1" />
-    <path
-        android:pathData="m14.2816,8.6007h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#1a1a1a"
-        android:strokeColor="#000000"
-        android:fillAlpha="1" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_left_button.xml b/android/app/src/main/res/drawable/ic_controller_left_button.xml
deleted file mode 100644
index ccd46c3cc..000000000
--- a/android/app/src/main/res/drawable/ic_controller_left_button.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.458332">
-    <path
-        android:pathData="m16.5365,5.9531 l7.9375,7.9375 -7.9375,7.9375L1.9844,21.8281v-15.875z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_left_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_left_button_pressed.xml
deleted file mode 100644
index 39c1de9e1..000000000
--- a/android/app/src/main/res/drawable/ic_controller_left_button_pressed.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.458332">
-    <path
-        android:pathData="m16.5365,5.9531 l7.9375,7.9375 -7.9375,7.9375L1.9844,21.8281v-15.875z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_pause_button.xml b/android/app/src/main/res/drawable/ic_controller_pause_button.xml
deleted file mode 100644
index 9b64f42b0..000000000
--- a/android/app/src/main/res/drawable/ic_controller_pause_button.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-  <path
-      android:fillColor="#4d4d4d"
-      android:pathData="M9,16h2L11,8L9,8v8zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM13,16h2L15,8h-2v8z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_quick_load_button.xml b/android/app/src/main/res/drawable/ic_controller_quick_load_button.xml
deleted file mode 100644
index f4197876c..000000000
--- a/android/app/src/main/res/drawable/ic_controller_quick_load_button.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-  <path
-      android:fillColor="#4d4d4d"
-      android:pathData="M14,12c0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2 0.9,2 2,2 2,-0.9 2,-2zM12,3c-4.97,0 -9,4.03 -9,9L0,12l4,4 4,-4L5,12c0,-3.87 3.13,-7 7,-7s7,3.13 7,7 -3.13,7 -7,7c-1.51,0 -2.91,-0.49 -4.06,-1.3l-1.42,1.44C8.04,20.3 9.94,21 12,21c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_quick_save_button.xml b/android/app/src/main/res/drawable/ic_controller_quick_save_button.xml
deleted file mode 100644
index 2a81bac25..000000000
--- a/android/app/src/main/res/drawable/ic_controller_quick_save_button.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-  <path
-      android:fillColor="#4d4d4d"
-      android:pathData="M17,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7l-4,-4zM12,19c-1.66,0 -3,-1.34 -3,-3s1.34,-3 3,-3 3,1.34 3,3 -1.34,3 -3,3zM15,9L5,9L5,5h10v4z"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_r1_button.xml b/android/app/src/main/res/drawable/ic_controller_r1_button.xml
deleted file mode 100644
index 3130def38..000000000
--- a/android/app/src/main/res/drawable/ic_controller_r1_button.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="round"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="round" />
-    <path
-        android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#000000"
-        android:strokeColor="#e6e6e6"
-        android:fillAlpha="0" />
-    <path
-        android:pathData="m14.3195,8.6472h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#000000"
-        android:strokeColor="#e6e6e6"
-        android:fillAlpha="0" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_r1_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_r1_button_pressed.xml
deleted file mode 100644
index 352ddbc6a..000000000
--- a/android/app/src/main/res/drawable/ic_controller_r1_button_pressed.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="round"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="round" />
-    <path
-        android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#1a1a1a"
-        android:strokeColor="#000000"
-        android:fillAlpha="1" />
-    <path
-        android:pathData="m14.3195,8.6472h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#1a1a1a"
-        android:strokeColor="#000000"
-        android:fillAlpha="1" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_r2_button.xml b/android/app/src/main/res/drawable/ic_controller_r2_button.xml
deleted file mode 100644
index 195fbe85d..000000000
--- a/android/app/src/main/res/drawable/ic_controller_r2_button.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="round"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="round" />
-    <path
-        android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#000000"
-        android:strokeColor="#e6e6e6"
-        android:fillAlpha="0" />
-    <path
-        android:pathData="m14.7984,8.6472h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#000000"
-        android:strokeColor="#e6e6e6"
-        android:fillAlpha="0" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_r2_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_r2_button_pressed.xml
deleted file mode 100644
index 640c36863..000000000
--- a/android/app/src/main/res/drawable/ic_controller_r2_button_pressed.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="round"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="round" />
-    <path
-        android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#1a1a1a"
-        android:strokeColor="#000000"
-        android:fillAlpha="1" />
-    <path
-        android:pathData="m14.7984,8.6472h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
-        android:strokeAlpha="1"
-        android:strokeWidth="0.13229167"
-        android:fillColor="#1a1a1a"
-        android:strokeColor="#000000"
-        android:fillAlpha="1" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_right_button.xml b/android/app/src/main/res/drawable/ic_controller_right_button.xml
deleted file mode 100644
index 8545a61ce..000000000
--- a/android/app/src/main/res/drawable/ic_controller_right_button.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.458332">
-    <path
-        android:pathData="m9.9219,21.8281 l-7.9375,-7.9375 7.9375,-7.9375L24.474,5.9531v15.875z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_right_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_right_button_pressed.xml
deleted file mode 100644
index f0cff05ba..000000000
--- a/android/app/src/main/res/drawable/ic_controller_right_button_pressed.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.458332">
-    <path
-        android:pathData="m9.9219,21.8281 l-7.9375,-7.9375 7.9375,-7.9375L24.474,5.9531v15.875z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_select_button.xml b/android/app/src/main/res/drawable/ic_controller_select_button.xml
deleted file mode 100644
index bea56389c..000000000
--- a/android/app/src/main/res/drawable/ic_controller_select_button.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="m0.6615,0.6614v11.9063L25.7969,12.5677v-11.9063z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#6e6e6f"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_select_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_select_button_pressed.xml
deleted file mode 100644
index a34a925d4..000000000
--- a/android/app/src/main/res/drawable/ic_controller_select_button_pressed.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="m0.6615,0.6614v11.9063L25.7969,12.5677v-11.9063z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#6e6e6f"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_square_button.xml b/android/app/src/main/res/drawable/ic_controller_square_button.xml
deleted file mode 100644
index 0da658c01..000000000
--- a/android/app/src/main/res/drawable/ic_controller_square_button.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.45833">
-    <path
-        android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#ffffff" />
-    <path
-        android:pathData="M5.2917,5.2917L21.1667,5.2917v15.875L5.2917,21.1667v-15.875"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="1.05833333"
-        android:fillColor="#00000000"
-        android:fillAlpha="1"
-        android:strokeColor="#ff00ff"
-        android:strokeLineCap="square" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_square_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_square_button_pressed.xml
deleted file mode 100644
index 248a1d400..000000000
--- a/android/app/src/main/res/drawable/ic_controller_square_button_pressed.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.45833">
-    <path
-        android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#ffffff" />
-    <path
-        android:pathData="M5.2917,5.2917L21.1667,5.2917v15.875L5.2917,21.1667v-15.875"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="1.05833333"
-        android:fillColor="#00000000"
-        android:fillAlpha="1"
-        android:strokeColor="#ff00ff"
-        android:strokeLineCap="square" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_start_button.xml b/android/app/src/main/res/drawable/ic_controller_start_button.xml
deleted file mode 100644
index 7247bbcd7..000000000
--- a/android/app/src/main/res/drawable/ic_controller_start_button.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="m0.6615,0.6614v11.9063l25.1354,-5.9531z"
-        android:strokeAlpha="0.94117647"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.265"
-        android:fillColor="#00000000"
-        android:strokeColor="#6e6e6f"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_start_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_start_button_pressed.xml
deleted file mode 100644
index 5a8255577..000000000
--- a/android/app/src/main/res/drawable/ic_controller_start_button_pressed.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="50dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="13.229165">
-    <path
-        android:pathData="m0.6615,0.6614v11.9063l25.1354,-5.9531z"
-        android:strokeAlpha="0.94117647"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.265"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#6e6e6f"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_t1_button.xml b/android/app/src/main/res/drawable/ic_controller_t1_button.xml
deleted file mode 100644
index 2f342f01c..000000000
--- a/android/app/src/main/res/drawable/ic_controller_t1_button.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M1.086,50.028a48.94,48.712 0,1 0,97.88 0a48.94,48.712 0,1 0,-97.88 0z"
-      android:strokeWidth="1.5"
-      android:fillColor="#000000"
-      android:fillAlpha="0"
-      android:strokeColor="#c8c8c8"/>
-  <path
-      android:pathData="M40.04,63.464H36.23V36.582H26.79V33.238H49.438v3.344h-9.398z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="M64.932,63.464H61.291V42.339q0,-1.82 0.042,-2.921 0.042,-1.101 0.127,-2.286 -0.677,0.677 -1.228,1.143 -0.55,0.466 -1.397,1.185l-3.217,2.625 -1.947,-2.498 8.17,-6.35h3.09z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_t1_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_t1_button_pressed.xml
deleted file mode 100644
index bf3ffaf35..000000000
--- a/android/app/src/main/res/drawable/ic_controller_t1_button_pressed.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M1.086,50.028a48.94,48.712 0,1 0,97.88 0a48.94,48.712 0,1 0,-97.88 0z"
-      android:strokeWidth="1.5"
-      android:fillColor="#c9c9c9"
-      android:strokeColor="#c8c8c8"/>
-  <path
-      android:pathData="M40.04,63.464H36.23V36.582H26.79V33.238H49.438v3.344h-9.398z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="M64.932,63.464H61.291V42.339q0,-1.82 0.042,-2.921 0.042,-1.101 0.127,-2.286 -0.677,0.677 -1.228,1.143 -0.55,0.466 -1.397,1.185l-3.217,2.625 -1.947,-2.498 8.17,-6.35h3.09z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_t2_button.xml b/android/app/src/main/res/drawable/ic_controller_t2_button.xml
deleted file mode 100644
index abddf7071..000000000
--- a/android/app/src/main/res/drawable/ic_controller_t2_button.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M1.086,50.028a48.94,48.712 0,1 0,97.88 0a48.94,48.712 0,1 0,-97.88 0z"
-      android:strokeWidth="1.5"
-      android:fillColor="#000000"
-      android:fillAlpha="0"
-      android:strokeColor="#c8c8c8"/>
-  <path
-      android:pathData="M40.04,63.464H36.23V36.582H26.79V33.238H49.438v3.344h-9.398z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="M71.917,63.464H51.936v-3.09l7.916,-8.001q2.286,-2.286 3.852,-4.064 1.566,-1.778 2.371,-3.471 0.804,-1.736 0.804,-3.768 0,-2.498 -1.482,-3.768 -1.482,-1.312 -3.852,-1.312 -2.201,0 -3.895,0.762 -1.651,0.762 -3.387,2.117l-1.99,-2.498q1.778,-1.482 4.064,-2.498 2.328,-1.058 5.207,-1.058 4.233,0 6.689,2.159 2.455,2.117 2.455,5.884 0,2.371 -0.974,4.445 -0.974,2.074 -2.709,4.106 -1.736,1.99 -4.064,4.276l-6.308,6.223v0.169h15.282z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_t2_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_t2_button_pressed.xml
deleted file mode 100644
index 2b07da75f..000000000
--- a/android/app/src/main/res/drawable/ic_controller_t2_button_pressed.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M1.086,50.028a48.94,48.712 0,1 0,97.88 0a48.94,48.712 0,1 0,-97.88 0z"
-      android:strokeWidth="1.5"
-      android:fillColor="#c9c9c9"
-      android:strokeColor="#c8c8c8"/>
-  <path
-      android:pathData="M40.04,63.464H36.23V36.582H26.79V33.238H49.438v3.344h-9.398z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="M71.917,63.464H51.936v-3.09l7.916,-8.001q2.286,-2.286 3.852,-4.064 1.566,-1.778 2.371,-3.471 0.804,-1.736 0.804,-3.768 0,-2.498 -1.482,-3.768 -1.482,-1.312 -3.852,-1.312 -2.201,0 -3.895,0.762 -1.651,0.762 -3.387,2.117l-1.99,-2.498q1.778,-1.482 4.064,-2.498 2.328,-1.058 5.207,-1.058 4.233,0 6.689,2.159 2.455,2.117 2.455,5.884 0,2.371 -0.974,4.445 -0.974,2.074 -2.709,4.106 -1.736,1.99 -4.064,4.276l-6.308,6.223v0.169h15.282z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_t3_button.xml b/android/app/src/main/res/drawable/ic_controller_t3_button.xml
deleted file mode 100644
index d9b001f00..000000000
--- a/android/app/src/main/res/drawable/ic_controller_t3_button.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M1.086,50.028a48.94,48.712 0,1 0,97.88 0a48.94,48.712 0,1 0,-97.88 0z"
-      android:strokeWidth="1.5"
-      android:fillColor="#000000"
-      android:fillAlpha="0"
-      android:strokeColor="#c8c8c8"/>
-  <path
-      android:pathData="M40.04,63.464H36.23V36.582H26.79V33.238H49.438v3.344h-9.398z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="m70.774,40.307q0,3.048 -1.693,4.868 -1.693,1.778 -4.572,2.371v0.169q3.641,0.423 5.419,2.286 1.778,1.863 1.778,4.868 0,2.625 -1.228,4.699 -1.228,2.032 -3.81,3.175 -2.54,1.143 -6.562,1.143 -2.371,0 -4.403,-0.381 -2.032,-0.339 -3.895,-1.27v-3.471q1.905,0.931 4.106,1.482 2.201,0.508 4.233,0.508 4.064,0 5.842,-1.566 1.82,-1.609 1.82,-4.403 0,-2.836 -2.244,-4.064 -2.201,-1.27 -6.223,-1.27h-2.921v-3.175h2.963q3.725,0 5.63,-1.566 1.947,-1.566 1.947,-4.149 0,-2.201 -1.482,-3.387 -1.482,-1.228 -4.022,-1.228 -2.455,0 -4.191,0.72 -1.736,0.72 -3.429,1.82l-1.863,-2.54q1.609,-1.27 3.979,-2.201 2.413,-0.931 5.461,-0.931 4.741,0 7.027,2.117 2.328,2.117 2.328,5.376z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_t3_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_t3_button_pressed.xml
deleted file mode 100644
index 78465f7fd..000000000
--- a/android/app/src/main/res/drawable/ic_controller_t3_button_pressed.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M1.086,50.028a48.94,48.712 0,1 0,97.88 0a48.94,48.712 0,1 0,-97.88 0z"
-      android:strokeWidth="1.5"
-      android:fillColor="#c9c9c9"
-      android:strokeColor="#c8c8c8"/>
-  <path
-      android:pathData="M40.04,63.464H36.23V36.582H26.79V33.238H49.438v3.344h-9.398z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="m70.774,40.307q0,3.048 -1.693,4.868 -1.693,1.778 -4.572,2.371v0.169q3.641,0.423 5.419,2.286 1.778,1.863 1.778,4.868 0,2.625 -1.228,4.699 -1.228,2.032 -3.81,3.175 -2.54,1.143 -6.562,1.143 -2.371,0 -4.403,-0.381 -2.032,-0.339 -3.895,-1.27v-3.471q1.905,0.931 4.106,1.482 2.201,0.508 4.233,0.508 4.064,0 5.842,-1.566 1.82,-1.609 1.82,-4.403 0,-2.836 -2.244,-4.064 -2.201,-1.27 -6.223,-1.27h-2.921v-3.175h2.963q3.725,0 5.63,-1.566 1.947,-1.566 1.947,-4.149 0,-2.201 -1.482,-3.387 -1.482,-1.228 -4.022,-1.228 -2.455,0 -4.191,0.72 -1.736,0.72 -3.429,1.82l-1.863,-2.54q1.609,-1.27 3.979,-2.201 2.413,-0.931 5.461,-0.931 4.741,0 7.027,2.117 2.328,2.117 2.328,5.376z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_t4_button.xml b/android/app/src/main/res/drawable/ic_controller_t4_button.xml
deleted file mode 100644
index 87f5e6726..000000000
--- a/android/app/src/main/res/drawable/ic_controller_t4_button.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M1.086,50.028a48.94,48.712 0,1 0,97.88 0a48.94,48.712 0,1 0,-97.88 0z"
-      android:strokeWidth="1.5"
-      android:fillColor="#000000"
-      android:fillAlpha="0"
-      android:strokeColor="#c8c8c8"/>
-  <path
-      android:pathData="M40.04,63.464H36.23V36.582H26.79V33.238H49.438v3.344h-9.398z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="m73.272,56.606h-4.403v6.858h-3.598V56.606h-14.478v-3.175l14.224,-20.362h3.852V53.261h4.403zM65.271,43.736q0,-2.201 0.085,-3.725 0.085,-1.566 0.127,-2.963h-0.169q-0.339,0.804 -0.847,1.736 -0.508,0.931 -0.974,1.566L54.433,53.261h10.837z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_t4_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_t4_button_pressed.xml
deleted file mode 100644
index b7da1f1b2..000000000
--- a/android/app/src/main/res/drawable/ic_controller_t4_button_pressed.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="100"
-    android:viewportHeight="100">
-  <path
-      android:pathData="M1.086,50.028a48.94,48.712 0,1 0,97.88 0a48.94,48.712 0,1 0,-97.88 0z"
-      android:strokeWidth="1.5"
-      android:fillColor="#c9c9c9"
-      android:strokeColor="#c8c8c8"/>
-  <path
-      android:pathData="M40.04,63.464H36.23V36.582H26.79V33.238H49.438v3.344h-9.398z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="m73.272,56.606h-4.403v6.858h-3.598V56.606h-14.478v-3.175l14.224,-20.362h3.852V53.261h4.403zM65.271,43.736q0,-2.201 0.085,-3.725 0.085,-1.566 0.127,-2.963h-0.169q-0.339,0.804 -0.847,1.736 -0.508,0.931 -0.974,1.566L54.433,53.261h10.837z"
-      android:fillColor="#ffffff"
-      android:strokeColor="#00000000"/>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_triangle_button.xml b/android/app/src/main/res/drawable/ic_controller_triangle_button.xml
deleted file mode 100644
index 9a1392988..000000000
--- a/android/app/src/main/res/drawable/ic_controller_triangle_button.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.45833">
-    <path
-        android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#ffffff" />
-    <path
-        android:pathData="M5.2917,19.0398L21.1667,19.0398l-7.9375,-13.7481 -7.8548,13.6049"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="round"
-        android:strokeWidth="1.05833328"
-        android:fillColor="#00000000"
-        android:strokeColor="#00ff00"
-        android:strokeLineCap="round" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_triangle_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_triangle_button_pressed.xml
deleted file mode 100644
index be10c7a85..000000000
--- a/android/app/src/main/res/drawable/ic_controller_triangle_button_pressed.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.45833">
-    <path
-        android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#ffffff" />
-    <path
-        android:pathData="M5.2917,19.0398L21.1667,19.0398l-7.9375,-13.7481 -7.8548,13.6049"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="round"
-        android:strokeWidth="1.05833328"
-        android:fillColor="#00000000"
-        android:strokeColor="#00ff00"
-        android:strokeLineCap="round" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_up_button.xml b/android/app/src/main/res/drawable/ic_controller_up_button.xml
deleted file mode 100644
index e8b5a4064..000000000
--- a/android/app/src/main/res/drawable/ic_controller_up_button.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.458332">
-    <path
-        android:pathData="m21.1667,17.1979 l-7.9375,7.9375 -7.9375,-7.9375L5.2917,2.6458L21.1667,2.6458Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#00000000"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_controller_up_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_up_button_pressed.xml
deleted file mode 100644
index d17013321..000000000
--- a/android/app/src/main/res/drawable/ic_controller_up_button_pressed.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="100dp"
-    android:height="100dp"
-    android:viewportWidth="26.458332"
-    android:viewportHeight="26.458332">
-    <path
-        android:pathData="m21.1667,17.1979 l-7.9375,7.9375 -7.9375,-7.9375L5.2917,2.6458L21.1667,2.6458Z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.26458332"
-        android:fillColor="#4d4d4d"
-        android:strokeColor="#e6e6e6"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_emblem_system.xml b/android/app/src/main/res/drawable/ic_emblem_system.xml
deleted file mode 100644
index 4be483cfc..000000000
--- a/android/app/src/main/res/drawable/ic_emblem_system.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:aapt="http://schemas.android.com/aapt"
-    android:width="48dp"
-    android:height="48dp"
-    android:viewportWidth="48"
-    android:viewportHeight="48">
-    <path
-        android:pathData="M44.1942,41.636A19.6222,6.1872 0,1 1,4.9497 41.636A19.6222,6.1872 0,1 1,44.1942 41.636z"
-        android:strokeAlpha="0.40909088"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="1"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="0.40909088"
-        android:strokeLineCap="butt"></path>
-    <path
-        android:pathData="M23.25,0.4688C22.7846,0.5006 22.3322,0.5727 21.875,0.625L21.8438,0.625L20.75,6.5938C18.9673,6.9997 17.2901,7.6887 15.7813,8.625L10.875,5.0938C9.5487,6.1234 8.3418,7.3243 7.2813,8.625L10.6875,13.5938C9.6533,15.1743 8.8755,16.979 8.4375,18.875C8.4374,18.884 8.4374,18.9047 8.4375,18.9063L2.5,19.8438C2.3914,20.7304 2.3438,21.6467 2.3438,22.5625C2.3438,23.3118 2.3644,24.0511 2.4375,24.7813L8.375,25.8438C8.7973,27.9056 9.5995,29.8313 10.7188,31.5313L7.1875,36.375C8.1988,37.6305 9.3664,38.7736 10.625,39.7813L15.625,36.3438C17.3724,37.4585 19.3231,38.2401 21.4375,38.625L22.375,44.5313C23.0412,44.5919 23.7243,44.5938 24.4063,44.5938C25.3689,44.5938 26.2885,44.5573 27.2188,44.4375L28.3438,38.4063C30.3513,37.9067 32.2372,37.04 33.875,35.875L38.6875,39.375C39.9355,38.3132 41.0768,37.0927 42.0625,35.7813L38.5625,30.7188C39.5104,29.0818 40.1671,27.2756 40.5,25.3438L46.4063,24.4063C46.458,23.7899 46.4688,23.1922 46.4688,22.5625C46.4688,21.4683 46.3416,20.3954 46.1875,19.3438L40.1875,18.25C39.7173,16.5138 38.9458,14.8939 37.9688,13.4375L41.5,8.5938C40.4054,7.2551 39.1568,6.0186 37.7813,4.9688L32.6875,8.4688C31.2235,7.6029 29.648,6.9386 27.9375,6.5625L27,0.625C26.1467,0.5246 25.2864,0.4688 24.4063,0.4688C24.1684,0.4688 23.9236,0.4613 23.6875,0.4688C23.5724,0.4724 23.4585,0.4621 23.3438,0.4688C23.3127,0.4706 23.281,0.4666 23.25,0.4688zM24.0625,15.6563C24.1767,15.6505 24.2907,15.6563 24.4063,15.6563C28.1054,15.6563 31.125,18.6759 31.125,22.375C31.125,26.0741 28.1054,29.0625 24.4063,29.0625C20.7071,29.0625 17.7188,26.0741 17.7188,22.375C17.7188,18.7915 20.5233,15.8358 24.0625,15.6563z"
-        android:strokeAlpha="1"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="1"
-        android:strokeColor="#808080"
-        android:fillType="nonZero"
-        android:fillAlpha="1"
-        android:strokeLineCap="butt"></path>
-    <path
-        android:pathData="M32.13,22.3608A7.7197,7.7197 45,1 1,16.6905 22.3608A7.7197,7.7197 135,1 1,32.13 22.3608z"
-        android:strokeAlpha="0.64772725"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="1.64875567"
-        android:fillColor="#00000000"
-        android:strokeColor="#ffffff"
-        android:fillType="nonZero"
-        android:fillAlpha="0.64772725"
-        android:strokeLineCap="butt" />
-    <path
-        android:pathData="M22.5578,1.6501L21.6796,7.4291C20.0086,7.8097 16.9349,8.9735 15.5206,9.8511L10.8486,6.3639C9.6054,7.3291 9.5201,7.3945 8.5261,8.6137L11.9041,13.6236C10.9347,15.1051 9.7703,17.7451 9.3522,19.6317C9.3522,19.6317 3.4328,20.6296 3.4328,20.6296C3.3311,21.4606 3.38,23.2394 3.4485,23.9238L9.1027,24.9423C9.4985,26.875 10.9797,29.9859 12.0289,31.5794L8.4533,36.3034C9.4012,37.4803 9.591,37.5879 10.7707,38.5324L15.5519,35.0296C17.1898,36.0745 20.4409,37.3455 22.4228,37.7063L23.2075,43.4125C23.8319,43.4693 25.557,43.6288 26.4289,43.5165L27.3071,37.5764C29.1889,37.1081 32.4403,35.7734 33.9754,34.6815L38.7515,38.1323C39.9213,37.137 39.9318,36.9871 40.8557,35.7578L37.3165,30.7271C38.205,29.1927 39.3537,26.1918 39.6657,24.381L45.4604,23.4196C45.5089,22.8419 45.5113,21.2308 45.3669,20.245L39.4631,19.2264C39.0224,17.599 37.5099,14.6665 36.5941,13.3013L40.3464,8.5773C39.3204,7.3226 38.939,7.1504 37.6496,6.1664L32.7073,9.7056C31.335,8.894 28.5987,7.6569 26.9953,7.3044L26.1223,1.6501C25.3224,1.556 23.0149,1.5978 22.5578,1.6501z"
-        android:strokeAlpha="0.34659088"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.9999997"
-        android:fillColor="#00000000"
-        android:strokeColor="#ffffff"
-        android:fillType="nonZero"
-        android:fillAlpha="0.34659088"
-        android:strokeLineCap="butt" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_launcher_background.xml b/android/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index 0d025f9bf..000000000
--- a/android/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="108dp"
-    android:height="108dp"
-    android:viewportWidth="108"
-    android:viewportHeight="108">
-    <path
-        android:fillColor="#008577"
-        android:pathData="M0,0h108v108h-108z" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M9,0L9,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,0L19,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M29,0L29,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M39,0L39,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M49,0L49,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M59,0L59,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M69,0L69,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M79,0L79,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M89,0L89,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M99,0L99,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,9L108,9"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,19L108,19"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,29L108,29"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,39L108,39"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,49L108,49"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,59L108,59"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,69L108,69"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,79L108,79"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,89L108,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,99L108,99"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,29L89,29"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,39L89,39"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,49L89,49"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,59L89,59"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,69L89,69"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,79L89,79"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M29,19L29,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M39,19L39,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M49,19L49,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M59,19L59,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M69,19L69,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M79,19L79,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_media_cdrom.xml b/android/app/src/main/res/drawable/ic_media_cdrom.xml
deleted file mode 100644
index 9269ea16f..000000000
--- a/android/app/src/main/res/drawable/ic_media_cdrom.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:aapt="http://schemas.android.com/aapt"
-    android:width="48dp"
-    android:height="48dp"
-    android:viewportWidth="48"
-    android:viewportHeight="48">
-    <path
-        android:pathData="M46.9619,41.511A6.0319,22.6274 90,1 1,1.7071 41.511A6.0319,22.6274 90,1 1,46.9619 41.511z"
-        android:strokeAlpha="0.55"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="2"
-        android:strokeColor="#00000000"
-        android:fillType="evenOdd"
-        android:fillAlpha="0.55"
-        android:strokeLineCap="butt"></path>
-    <path
-        android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"></path>
-    <path
-        android:strokeWidth="1"
-        android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
-        android:strokeAlpha="1"
-        android:strokeColor="#808080"
-        android:fillType="nonZero"></path>
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M24.347,14.8958C18.7044,14.8958 14.2428,19.4886 14.2428,25C14.2428,30.6426 18.8356,35.1042 24.347,35.1042C29.9896,35.1042 34.4512,30.5114 34.4512,25C34.4512,19.3574 29.8584,14.8958 24.347,14.8958L24.347,14.8958zM24.347,30.5114C21.3289,30.5114 18.8356,28.0181 18.8356,25C18.8356,21.9819 21.3289,19.4886 24.347,19.4886C27.3651,19.4886 29.8584,21.9819 29.8584,25C29.8584,28.0181 27.3651,30.5114 24.347,30.5114z"
-        android:strokeAlpha="0.10999995"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="0.10999995" />
-    <path
-        android:pathData="M29.9221,5.6692L26.3255,19.6639C27.4502,19.9634 28.3497,20.6594 28.9606,21.6224L41.3529,14.0732C38.8176,9.9434 34.7487,6.9051 29.9221,5.6692z"
-        android:strokeAlpha="1"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="1"></path>
-    <path
-        android:pathData="M17.3078,43.7661L22.0431,30.1146C20.9468,29.7236 20.1077,28.956 19.5779,27.946L6.6069,34.4506C8.7939,38.7748 12.5993,42.1375 17.3078,43.7661z"
-        android:strokeAlpha="1"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="1"></path>
-    <path
-        android:strokeWidth="1"
-        android:pathData="M24.347,5.2024C13.3735,5.2024 4.5494,14.0265 4.5494,25C4.5494,35.9735 13.3735,44.7976 24.347,44.7976C35.3205,44.7976 44.1446,35.9735 44.1446,25C44.1446,14.0265 35.3205,5.2024 24.347,5.2024L24.347,5.2024z"
-        android:strokeAlpha="0.5464481"
-        android:fillColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="0.5464481"></path>
-    <path
-        android:pathData="M30.494,25.019A6.0988,6.0988 0,1 1,18.2964 25.019A6.0988,6.0988 0,1 1,30.494 25.019z"
-        android:strokeAlpha="0.6721311"
-        android:strokeLineJoin="miter"
-        android:strokeWidth="0.93053865"
-        android:fillColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="0.21265164"
-        android:strokeLineCap="butt"></path>
-    <path
-        android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
-        android:strokeAlpha="0.1142857"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="0.1142857"></path>
-    <path
-        android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
-        android:strokeAlpha="0.09714284"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="0.09714284"></path>
-    <path
-        android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
-        android:strokeAlpha="0.71428573"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="0.71428573"></path>
-    <path
-        android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
-        android:strokeAlpha="0.62285715"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="0.62285715"></path>
-    <path
-        android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
-        android:strokeAlpha="0.3714286"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="0.3714286"></path>
-    <path
-        android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
-        android:strokeAlpha="0.23428573"
-        android:strokeColor="#00000000"
-        android:fillType="nonZero"
-        android:fillAlpha="0.23428573"></path>
-</vector>
diff --git a/android/app/src/main/res/drawable/ic_star_0.png b/android/app/src/main/res/drawable/ic_star_0.png
deleted file mode 100644
index e5b56db70af52fbc1629cf6131d3b6d5eebdffc4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5534
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

diff --git a/android/app/src/main/res/drawable/ic_star_1.png b/android/app/src/main/res/drawable/ic_star_1.png
deleted file mode 100644
index ae91a29ac507ecd360d81d06b263818b3ca398b2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6116
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

diff --git a/android/app/src/main/res/drawable/ic_star_2.png b/android/app/src/main/res/drawable/ic_star_2.png
deleted file mode 100644
index f7bee9b1ddce55b82a44e402a3c4de00fef53965..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6367
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

diff --git a/android/app/src/main/res/drawable/ic_star_3.png b/android/app/src/main/res/drawable/ic_star_3.png
deleted file mode 100644
index 330aefbaca17c6dab21b9e1076e6238eaa269ba3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6526
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

diff --git a/android/app/src/main/res/drawable/ic_star_4.png b/android/app/src/main/res/drawable/ic_star_4.png
deleted file mode 100644
index 4e9f58dfa3fcc1b8243282b1beb14112b3f64606..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6312
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

diff --git a/android/app/src/main/res/drawable/ic_star_5.png b/android/app/src/main/res/drawable/ic_star_5.png
deleted file mode 100644
index aa5707ea750c04a2e1ad86be3e45c34856301def..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5990
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
U|9n|BKmY&$07*qoM6N<$g2Ys54FCWD

diff --git a/android/app/src/main/res/layout/activity_controller_mapping.xml b/android/app/src/main/res/layout/activity_controller_mapping.xml
deleted file mode 100644
index de6591a20..000000000
--- a/android/app/src/main/res/layout/activity_controller_mapping.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <FrameLayout
-        android:id="@+id/settings"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-</LinearLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_emulation.xml b/android/app/src/main/res/layout/activity_emulation.xml
deleted file mode 100644
index 12493cbca..000000000
--- a/android/app/src/main/res/layout/activity_emulation.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/frameLayout"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="#0099cc"
-    tools:context=".EmulationActivity">
-
-    <!-- The primary full-screen view. This can be replaced with whatever view
-         is needed to present your content, e.g. VideoView, SurfaceView,
-         TextureView, etc. -->
-    <com.github.stenzek.duckstation.EmulationSurfaceView
-        android:id="@+id/fullscreen_content"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:gravity="center"
-        android:keepScreenOn="true" />
-
-</FrameLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_game_directories.xml b/android/app/src/main/res/layout/activity_game_directories.xml
deleted file mode 100644
index 54bfc2181..000000000
--- a/android/app/src/main/res/layout/activity_game_directories.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context=".GameDirectoriesActivity">
-
-    <com.google.android.material.appbar.AppBarLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="@style/AppTheme.AppBarOverlay">
-
-        <androidx.appcompat.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            android:background="?attr/colorPrimary"
-            app:popupTheme="@style/AppTheme.PopupOverlay" />
-
-    </com.google.android.material.appbar.AppBarLayout>
-
-    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        xmlns:tools="http://schemas.android.com/tools"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        app:layout_behavior="@string/appbar_scrolling_view_behavior"
-        tools:context=".MainActivity"
-        tools:showIn="@layout/activity_main">
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/recycler_view"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent" />
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <com.google.android.material.floatingactionbutton.FloatingActionButton
-        android:id="@+id/fab"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="bottom|end"
-        android:layout_margin="@dimen/fab_margin"
-        app:backgroundTint="@color/fab_background"
-        app:srcCompat="@android:drawable/ic_input_add" />
-
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_main.xml b/android/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index c9dc2d100..000000000
--- a/android/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context=".MainActivity">
-
-    <com.google.android.material.appbar.AppBarLayout
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:theme="@style/AppTheme.AppBarOverlay">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="horizontal">
-
-            <ImageView
-                android:id="@+id/imageView2"
-                android:layout_width="32dp"
-                android:layout_height="match_parent"
-                android:layout_marginStart="16dp"
-                app:srcCompat="@drawable/duck" />
-
-            <androidx.appcompat.widget.Toolbar
-                android:id="@+id/toolbar"
-                android:layout_width="match_parent"
-                android:layout_height="?attr/actionBarSize"
-                android:background="?attr/colorPrimary"
-                app:popupTheme="@style/AppTheme.PopupOverlay" />
-
-        </LinearLayout>
-
-    </com.google.android.material.appbar.AppBarLayout>
-
-    <FrameLayout
-        android:id="@+id/content_fragment"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        android:layout_weight="1"
-        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
-
-    <com.google.android.material.floatingactionbutton.FloatingActionButton
-        android:id="@+id/fab_resume"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="bottom|end"
-        android:layout_margin="@dimen/fab_margin"
-        app:backgroundTint="@color/fab_background"
-        app:srcCompat="@drawable/ic_baseline_play_arrow_24" />
-
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_memory_card_editor.xml b/android/app/src/main/res/layout/activity_memory_card_editor.xml
deleted file mode 100644
index fa471163a..000000000
--- a/android/app/src/main/res/layout/activity_memory_card_editor.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context=".MainActivity">
-
-    <com.google.android.material.appbar.AppBarLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="@style/AppTheme.AppBarOverlay">
-
-        <androidx.appcompat.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            android:background="?attr/colorPrimary"
-            app:popupTheme="@style/AppTheme.PopupOverlay" />
-
-    </com.google.android.material.appbar.AppBarLayout>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:orientation="vertical"
-        app:layout_behavior="@string/appbar_scrolling_view_behavior">
-
-        <com.google.android.material.tabs.TabLayout
-            android:id="@+id/tab_layout"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            app:tabTextAppearance="@style/TabTextAppearance"
-            app:tabMinWidth="150dp"
-            app:tabMode="scrollable"  />
-
-        <androidx.viewpager2.widget.ViewPager2
-            android:id="@+id/view_pager"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="1" />
-
-    </LinearLayout>
-
-    <com.google.android.material.floatingactionbutton.FloatingActionButton
-        android:id="@+id/open_card"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="bottom|end"
-        android:layout_marginBottom="@dimen/fab_margin"
-        android:layout_marginRight="96dp"
-        app:backgroundTint="@color/fab_background"
-        app:srcCompat="@drawable/ic_baseline_folder_open_24" />
-
-    <com.google.android.material.floatingactionbutton.FloatingActionButton
-        android:id="@+id/close_card"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="bottom|end"
-        android:layout_margin="@dimen/fab_margin"
-        app:backgroundTint="@color/fab_background"
-        app:srcCompat="@drawable/ic_baseline_close_24" />
-
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_achievement_list.xml b/android/app/src/main/res/layout/fragment_achievement_list.xml
deleted file mode 100644
index d1a64a0de..000000000
--- a/android/app/src/main/res/layout/fragment_achievement_list.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <RelativeLayout
-        android:id="@+id/navigation_header_container"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:padding="10dp"
-        android:layout_alignParentTop="true"
-        android:layout_alignParentStart="true">
-
-        <ImageView
-            android:id="@+id/icon"
-            android:layout_width="70dp"
-            android:layout_height="70dp"
-            android:foregroundGravity="center_vertical"
-            android:layout_alignParentTop="true"
-            android:layout_alignParentStart="true"
-            tools:srcCompat="@drawable/ic_media_cdrom" />
-
-        <TextView
-            android:id="@+id/title"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="10dp"
-            android:focusable="false"
-            android:focusableInTouchMode="false"
-            android:text="Game Title"
-            android:textAppearance="@style/TextAppearance.AppCompat.Large"
-            android:layout_alignParentTop="true"
-            android:layout_toRightOf="@+id/icon"
-            android:layout_alignParentEnd="true" />
-
-        <TextView
-            android:id="@+id/summary"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="10dp"
-            android:focusable="false"
-            android:focusableInTouchMode="false"
-            android:text="You have unlocked %d of %d achievements, earning %d of %d possible points."
-            android:textAppearance="@style/TextAppearance.AppCompat.Small"
-            android:layout_below="@+id/title"
-            android:layout_toRightOf="@+id/icon"
-            android:layout_alignParentEnd="true" />
-
-        <ProgressBar
-            android:id="@+id/progressBar"
-            style="?android:attr/progressBarStyleHorizontal"
-            android:layout_width="0dp"
-            android:layout_height="16dp"
-            android:layout_marginLeft="10dp"
-            android:layout_marginRight="10dp"
-            android:layout_below="@+id/summary"
-            android:layout_toRightOf="@+id/icon"
-            android:layout_alignParentEnd="true" />
-
-    </RelativeLayout>
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/recyclerView"
-        android:layout_width="match_parent"
-        android:layout_height="fill_parent"
-        android:scrollbars="vertical"
-        android:layout_below="@+id/navigation_header_container"
-        android:layout_alignParentBottom="true"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentEnd="true" />
-
-</RelativeLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_achievements_login.xml b/android/app/src/main/res/layout/fragment_achievements_login.xml
deleted file mode 100644
index 5ab32fd3c..000000000
--- a/android/app/src/main/res/layout/fragment_achievements_login.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minWidth="280dp"
-    >
-    <LinearLayout
-        android:id="@+id/panel"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        >
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:padding="20dp"
-            >
-
-        <TextView
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="8dp"
-            android:layout_marginRight="8dp"
-            android:text="@string/achievement_settings_login_title"
-            android:textAppearance="@style/TextAppearance.AppCompat.Large" />
-
-        <TextView
-            android:id="@+id/title"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="4dp"
-            android:layout_marginLeft="8dp"
-            android:layout_marginRight="8dp"
-            android:layout_marginTop="4dp"
-            android:text="@string/achievement_settings_login_help"
-            />
-        <EditText
-            android:id="@+id/username"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="8dp"
-            android:layout_marginRight="8dp"
-            android:inputType="textVisiblePassword"
-            android:nextFocusDown="@+id/password"
-            android:imeOptions="actionNext"
-            android:singleLine="true"
-            android:hint="@string/achievement_settings_login_username_hint"
-            />
-        <EditText
-            android:id="@+id/password"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="8dp"
-            android:layout_marginRight="8dp"
-            android:inputType="textPassword"
-            android:imeOptions="actionDone"
-            android:singleLine="true"
-            android:hint="@string/achievement_settings_login_password_hint"
-            />
-
-            <TextView
-                android:id="@+id/error"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="8dp"
-                android:layout_marginTop="4dp"
-                android:layout_marginRight="8dp"
-                android:layout_marginBottom="4dp"
-                android:visibility="visible" />
-        </LinearLayout>
-        <LinearLayout
-            android:id="@+id/buttonPanel"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:divider="?android:attr/dividerHorizontal"
-            android:dividerPadding="0dip"
-            android:minHeight="48dp"
-            android:orientation="vertical"
-            android:showDividers="beginning"
-            android:padding="5dp"
-            >
-            <LinearLayout
-                style="?android:attr/buttonBarStyle"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layoutDirection="locale"
-                android:orientation="horizontal"
-                tools:ignore="UselessParent"
-                >
-                <Space
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_weight="1" />
-
-                <Button
-                    android:id="@+id/cancel"
-                    style="?android:attr/buttonBarButtonStyle"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="end"
-                    android:focusable="true"
-                    android:maxLines="2"
-                    android:minHeight="48dp"
-                    android:text="@string/achievement_settings_login_cancel_button"
-                    android:textSize="14sp" />
-
-                <Button
-                    android:id="@+id/login"
-                    style="?android:attr/buttonBarButtonStyle"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="end"
-                    android:focusable="true"
-                    android:maxLines="2"
-                    android:minHeight="48dp"
-                    android:text="@string/achievement_settings_login_login_button"
-                    android:textSize="14sp" />
-            </LinearLayout>
-        </LinearLayout>
-    </LinearLayout>
-    <ProgressBar
-        android:id="@+id/progressBar"
-        style="?android:attr/progressBarStyleLarge"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:indeterminateOnly="true"
-        android:visibility="gone"
-        />
-</FrameLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_controller_settings.xml b/android/app/src/main/res/layout/fragment_controller_settings.xml
deleted file mode 100644
index a47a49de4..000000000
--- a/android/app/src/main/res/layout/fragment_controller_settings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <com.google.android.material.tabs.TabLayout
-        android:id="@+id/tab_layout"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        app:tabTextAppearance="@style/TabTextAppearance"
-        app:tabMinWidth="150dp"
-        app:tabMode="scrollable"  />
-
-    <androidx.viewpager2.widget.ViewPager2
-        android:id="@+id/view_pager"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_empty_game_list.xml b/android/app/src/main/res/layout/fragment_empty_game_list.xml
deleted file mode 100644
index 55f8fd607..000000000
--- a/android/app/src/main/res/layout/fragment_empty_game_list.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-
-    <TextView
-        android:id="@+id/title"
-        android:layout_width="320dp"
-        android:layout_height="wrap_content"
-        android:text="@string/main_activity_empty_game_list_title"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.496"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_bias="0.171" />
-
-    <TextView
-        android:id="@+id/supported_formats"
-        android:layout_width="320dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="20dp"
-        android:text="@string/main_activity_empty_game_list_supported_formats"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.498"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/title" />
-
-    <Button
-        android:id="@+id/add_game_directory"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="20dp"
-        android:text="@string/main_activity_empty_game_list_add_directory"
-        style="@style/Widget.AppCompat.Button.Borderless.Colored"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/supported_formats" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_emulation_activity_overlay.xml b/android/app/src/main/res/layout/fragment_emulation_activity_overlay.xml
deleted file mode 100644
index 2cdd354d2..000000000
--- a/android/app/src/main/res/layout/fragment_emulation_activity_overlay.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/colorPrimary"
-        android:orientation="horizontal">
-
-        <ImageView
-            android:id="@+id/cover_image"
-            android:layout_width="60dp"
-            android:layout_height="60dp"
-            android:background="?android:attr/selectableItemBackground"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <TextView
-            android:id="@+id/title"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="10dp"
-            android:layout_marginEnd="4dp"
-            android:layout_marginTop="4dp"
-            android:text="Title"
-            android:textAppearance="@style/TextAppearance.AppCompat.Large"
-            android:textColor="?android:textColorPrimary"
-            android:scrollHorizontally="true"
-            android:ellipsize="end"
-            android:maxLines="1"
-            app:layout_constraintEnd_toStartOf="@id/button_container"
-            app:layout_constraintStart_toEndOf="@id/cover_image"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <TextView
-            android:id="@+id/subtitle"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="10dp"
-            android:layout_marginEnd="4dp"
-            android:layout_marginBottom="4dp"
-            android:text="Code - Path"
-            android:textColor="?android:textColorPrimary"
-            android:scrollHorizontally="true"
-            android:ellipsize="end"
-            android:maxLines="1"
-            android:textAppearance="@style/TextAppearance.AppCompat.Small"
-            app:layout_constraintEnd_toStartOf="@id/button_container"
-            app:layout_constraintStart_toEndOf="@id/cover_image"
-            app:layout_constraintTop_toBottomOf="@id/title" />
-
-        <LinearLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            android:id="@+id/button_container"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toTopOf="parent">
-
-            <ImageButton
-                android:id="@+id/menu"
-                android:layout_width="40dp"
-                android:layout_height="60dp"
-                android:layout_marginEnd="5dp"
-                android:background="?android:attr/selectableItemBackground"
-                android:tint="?android:textColorPrimary"
-                android:contentDescription="Pause Menu"
-                android:src="@drawable/ic_baseline_menu_24" />
-
-            <ImageButton
-                android:id="@+id/controller_settings"
-                android:layout_width="40dp"
-                android:layout_height="60dp"
-                android:layout_marginEnd="5dp"
-                android:background="?android:attr/selectableItemBackground"
-                android:tint="?android:textColorPrimary"
-                android:contentDescription="Controller Settings"
-                android:src="@drawable/ic_baseline_gamepad_24" />
-
-            <ImageButton
-                android:id="@+id/settings"
-                android:layout_width="40dp"
-                android:layout_height="60dp"
-                android:layout_marginEnd="5dp"
-                android:background="?android:attr/selectableItemBackground"
-                android:tint="?android:textColorPrimary"
-                android:contentDescription="Settings"
-                android:src="@drawable/ic_baseline_settings_24" />
-
-            <ImageButton
-                android:id="@+id/close"
-                android:layout_width="40dp"
-                android:layout_height="60dp"
-                android:layout_marginEnd="5dp"
-                android:background="?android:attr/selectableItemBackground"
-                android:tint="?android:textColorPrimary"
-                android:contentDescription="Close"
-                android:src="@drawable/ic_baseline_close_24" />
-
-        </LinearLayout>
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <FrameLayout
-        android:id="@+id/content"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-</LinearLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_game_grid.xml b/android/app/src/main/res/layout/fragment_game_grid.xml
deleted file mode 100644
index 26ce3e703..000000000
--- a/android/app/src/main/res/layout/fragment_game_grid.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/game_list_view"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:scrollbars="vertical"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_game_list.xml b/android/app/src/main/res/layout/fragment_game_list.xml
deleted file mode 100644
index 0d320dc6e..000000000
--- a/android/app/src/main/res/layout/fragment_game_list.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/game_list_view"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:scrollbars="vertical"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_memory_card_file.xml b/android/app/src/main/res/layout/fragment_memory_card_file.xml
deleted file mode 100644
index 49d14e2e5..000000000
--- a/android/app/src/main/res/layout/fragment_memory_card_file.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/recyclerView"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_settings_collection.xml b/android/app/src/main/res/layout/fragment_settings_collection.xml
deleted file mode 100644
index 49bc94180..000000000
--- a/android/app/src/main/res/layout/fragment_settings_collection.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <com.google.android.material.tabs.TabLayout
-        android:id="@+id/tab_layout"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        app:tabTextAppearance="@style/TabTextAppearance"
-        app:tabMinWidth="150dp"
-        app:tabMode="scrollable" />
-
-    <androidx.viewpager2.widget.ViewPager2
-        android:id="@+id/view_pager"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_achievement_entry.xml b/android/app/src/main/res/layout/layout_achievement_entry.xml
deleted file mode 100644
index 861689833..000000000
--- a/android/app/src/main/res/layout/layout_achievement_entry.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/linearLayout"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="8dp"
-    android:paddingBottom="8dp"
-    android:background="?android:attr/selectableItemBackground">
-
-    <ImageView
-        android:id="@+id/icon"
-        android:layout_width="48dp"
-        android:layout_height="48dp"
-        android:layout_marginStart="8dp"
-        android:foregroundGravity="center_vertical"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        tools:srcCompat="@drawable/ic_media_cdrom" />
-
-    <TextView
-        android:id="@+id/title"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="10dp"
-        android:layout_marginRight="80dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:text="Achievement Title"
-        android:textAppearance="@style/TextAppearance.AppCompat.Large"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@+id/icon"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <TextView
-        android:id="@+id/description"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="10dp"
-        android:layout_marginRight="80dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:paddingBottom="8px"
-        android:text="Achievement Description"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@+id/icon"
-        app:layout_constraintTop_toBottomOf="@+id/title" />
-
-    <ImageView
-        android:id="@+id/locked_icon"
-        android:layout_width="32dp"
-        android:layout_height="28dp"
-        android:layout_marginTop="4dp"
-        android:layout_marginEnd="24dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:paddingBottom="8px"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:srcCompat="@drawable/ic_baseline_lock_24" />
-
-    <TextView
-        android:id="@+id/points"
-        android:layout_width="64dp"
-        android:layout_height="16dp"
-        android:layout_marginEnd="8dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:text="5 Points"
-        android:textAlignment="center"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        app:srcCompat="@drawable/ic_star_5"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/locked_icon" />
-
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_controller_binding_preference.xml b/android/app/src/main/res/layout/layout_controller_binding_preference.xml
deleted file mode 100644
index 6d9488150..000000000
--- a/android/app/src/main/res/layout/layout_controller_binding_preference.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/linearLayout"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-    <ImageView
-        android:id="@+id/controller_binding_icon"
-        android:layout_width="48dp"
-        android:layout_height="48dp"
-        android:layout_marginTop="0dp"
-        android:layout_alignParentTop="true"
-        tools:srcCompat="@drawable/ic_media_cdrom" />
-
-    <TextView
-        android:id="@+id/controller_binding_name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="16dp"
-        android:layout_marginTop="0dp"
-        android:text="Up"
-        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
-        android:layout_alignParentTop="true"
-        android:layout_toRightOf="@id/controller_binding_icon" />
-
-    <TextView
-        android:id="@+id/controller_binding_value"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="16dp"
-        android:text="Controller0/Button0"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        android:layout_toRightOf="@id/controller_binding_icon"
-        android:layout_below="@id/controller_binding_name" />
-
-</RelativeLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_game_directory_entry.xml b/android/app/src/main/res/layout/layout_game_directory_entry.xml
deleted file mode 100644
index d190b6f61..000000000
--- a/android/app/src/main/res/layout/layout_game_directory_entry.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content">
-
-    <TextView
-        android:id="@+id/path"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentStart="true"
-        android:layout_alignParentTop="true"
-        android:layout_marginStart="10dp"
-        android:layout_marginEnd="100dp"
-        android:layout_marginTop="4dp"
-        android:text="TextView"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    <TextView
-        android:id="@+id/recursive"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="10dp"
-        android:layout_marginEnd="100dp"
-        android:layout_marginTop="4dp"
-        android:layout_marginBottom="4dp"
-        android:layout_below="@id/path"
-        android:layout_alignParentStart="true"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:text="TextView" />
-
-    <ImageButton
-        android:id="@+id/remove"
-        android:layout_width="30dp"
-        android:layout_height="30dp"
-        android:layout_alignParentEnd="true"
-        android:layout_alignParentTop="true"
-        android:layout_marginTop="15dp"
-        android:layout_marginEnd="15dp"
-        android:background="?android:selectableItemBackground"
-        app:srcCompat="@drawable/ic_baseline_delete_24" />
-
-    <ImageButton
-        android:id="@+id/toggle_recursive"
-        android:layout_width="30dp"
-        android:layout_height="30dp"
-        android:layout_alignParentTop="true"
-        android:layout_marginTop="15dp"
-        android:layout_marginEnd="15dp"
-        android:layout_toStartOf="@id/remove"
-        android:background="?android:selectableItemBackground"
-        app:srcCompat="@drawable/ic_baseline_folder_24" />
-</RelativeLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_game_grid_entry.xml b/android/app/src/main/res/layout/layout_game_grid_entry.xml
deleted file mode 100644
index 6faa52b57..000000000
--- a/android/app/src/main/res/layout/layout_game_grid_entry.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="160dp"
-    android:layout_height="160dp"
-    android:layout_margin="25dp">
-
-    <ImageView
-        android:id="@+id/imageView"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:foreground="?android:attr/selectableItemBackground"
-        app:srcCompat="@drawable/ic_media_cdrom"
-        tools:layout_editor_absoluteX="1dp"
-        tools:layout_editor_absoluteY="1dp" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_game_list_entry.xml b/android/app/src/main/res/layout/layout_game_list_entry.xml
deleted file mode 100644
index 8c450af31..000000000
--- a/android/app/src/main/res/layout/layout_game_list_entry.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/linearLayout"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="8dp"
-    android:paddingBottom="8dp"
-    android:background="?android:attr/selectableItemBackground">
-
-    <ImageView
-        android:id="@+id/game_list_view_entry_type_icon"
-        android:layout_width="48dp"
-        android:layout_height="48dp"
-        android:layout_marginStart="8dp"
-        android:foregroundGravity="center_vertical"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        tools:srcCompat="@drawable/ic_media_cdrom" />
-
-    <TextView
-        android:id="@+id/game_list_view_entry_title"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="10dp"
-        android:layout_marginRight="80dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:text="Game Title"
-        android:textAppearance="@style/TextAppearance.AppCompat.Large"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@+id/game_list_view_entry_type_icon"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <TextView
-        android:id="@+id/game_list_view_entry_subtitle"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="10dp"
-        android:layout_marginRight="80dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:paddingBottom="8px"
-        android:text="Game Path"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@+id/game_list_view_entry_type_icon"
-        app:layout_constraintTop_toBottomOf="@+id/game_list_view_entry_title" />
-
-    <ImageView
-        android:id="@+id/game_list_view_compatibility_icon"
-        android:layout_width="64dp"
-        android:layout_height="16dp"
-        android:layout_marginEnd="8dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        app:srcCompat="@drawable/ic_star_5"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <ImageView
-        android:id="@+id/game_list_view_entry_region_icon"
-        android:layout_width="32dp"
-        android:layout_height="28dp"
-        android:layout_marginTop="4dp"
-        android:layout_marginEnd="24dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:paddingBottom="8px"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/game_list_view_compatibility_icon"
-        app:srcCompat="@drawable/flag_jp" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_game_property_entry.xml b/android/app/src/main/res/layout/layout_game_property_entry.xml
deleted file mode 100644
index 47ede3ee3..000000000
--- a/android/app/src/main/res/layout/layout_game_property_entry.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <TextView
-        android:id="@+id/property_title"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="4dp"
-        android:layout_marginStart="10dp"
-        android:layout_alignParentTop="true"
-        android:text="TextView"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    <TextView
-        android:id="@+id/property_value"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="10dp"
-        android:layout_marginTop="4dp"
-        android:layout_marginBottom="4dp"
-        android:layout_below="@id/property_title"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:text="TextView" />
-</RelativeLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_memory_card_save.xml b/android/app/src/main/res/layout/layout_memory_card_save.xml
deleted file mode 100644
index caab01ec7..000000000
--- a/android/app/src/main/res/layout/layout_memory_card_save.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/linearLayout"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="8dp"
-    android:paddingBottom="8dp"
-    android:background="?android:attr/selectableItemBackground">
-
-    <ImageView
-        android:id="@+id/icon"
-        android:layout_width="48dp"
-        android:layout_height="48dp"
-        android:layout_marginStart="8dp"
-        android:foregroundGravity="center_vertical"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        tools:srcCompat="@drawable/ic_media_cdrom" />
-
-    <TextView
-        android:id="@+id/title"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="10dp"
-        android:layout_marginRight="80dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:text="Save Title"
-        android:textAppearance="@style/TextAppearance.AppCompat.Large"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@+id/icon"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <TextView
-        android:id="@+id/filename"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="10dp"
-        android:layout_marginRight="80dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:paddingBottom="8px"
-        android:text="Save Filename"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@+id/icon"
-        app:layout_constraintTop_toBottomOf="@+id/title" />
-
-    <TextView
-        android:id="@+id/block_size"
-        android:layout_width="64dp"
-        android:layout_height="20dp"
-        android:layout_marginTop="4dp"
-        android:layout_marginEnd="8dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:paddingBottom="8px"
-        android:text="1 Block"
-        android:textAlignment="viewEnd"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:srcCompat="@drawable/ic_baseline_lock_24" />
-
-    <TextView
-        android:id="@+id/file_size"
-        android:layout_width="64dp"
-        android:layout_height="20dp"
-        android:layout_marginEnd="8dp"
-        android:focusable="false"
-        android:focusableInTouchMode="false"
-        android:text="16KB"
-        android:textAlignment="viewEnd"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        app:srcCompat="@drawable/ic_star_5"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/block_size" />
-
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_ratio_preference.xml b/android/app/src/main/res/layout/layout_ratio_preference.xml
deleted file mode 100644
index 1191b62f0..000000000
--- a/android/app/src/main/res/layout/layout_ratio_preference.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:orientation="horizontal">
-
-    <Spinner
-        android:id="@+id/numerator"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical" />
-
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:text=":" />
-
-    <Spinner
-        android:id="@+id/denominator"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical" />
-</LinearLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_touchscreen_controller_analog_stick.xml b/android/app/src/main/res/layout/layout_touchscreen_controller_analog_stick.xml
deleted file mode 100644
index ac7ffb4af..000000000
--- a/android/app/src/main/res/layout/layout_touchscreen_controller_analog_stick.xml
+++ /dev/null
@@ -1,255 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/constraintLayout"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:clipChildren="false">
-
-    <View
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:translationZ="-10px"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_r2"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_r2_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_r2_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_r1"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_r1_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_r1_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_l1"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_l1_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_l1_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_l2"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_l2_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_l2_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_start"
-        android:layout_width="40dp"
-        android:layout_height="25dp"
-        android:layout_marginStart="70dp"
-        android:layout_marginBottom="8dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_start_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_start_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_select"
-        android:layout_width="40dp"
-        android:layout_height="25dp"
-        android:layout_marginEnd="70dp"
-        android:layout_marginBottom="8dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_select_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_select_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_cross"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="70dp"
-        android:layout_marginBottom="30dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_cross_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_cross_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_square"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="120dp"
-        android:layout_marginBottom="80dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_square_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_square_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_triangle"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="70dp"
-        android:layout_marginBottom="130dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_triangle_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_triangle_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_circle"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="20dp"
-        android:layout_marginBottom="80dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_circle_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_circle_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerAxisView
-        android:id="@+id/controller_axis_left"
-        android:layout_width="150dp"
-        android:layout_height="150dp"
-        android:layout_marginStart="20dp"
-        android:layout_marginBottom="30dp"
-        android:paddingTop="20dp"
-        android:paddingBottom="20dp"
-        android:paddingLeft="20dp"
-        android:paddingRight="20dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_fast_forward"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginBottom="50dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_fast_forward_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_fast_forward" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_analog"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginBottom="95dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_analog_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_analog_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_pause"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginRight="20dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_pause_button"
-        app:unpressedDrawable="@drawable/ic_controller_pause_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_quick_load"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginLeft="20dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_quick_load_button"
-        app:unpressedDrawable="@drawable/ic_controller_quick_load_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_quick_save"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginLeft="75dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_quick_save_button"
-        app:unpressedDrawable="@drawable/ic_controller_quick_save_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_1"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t1_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t1_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_2"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t2_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t2_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_3"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t3_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t3_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_4"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t4_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t4_button" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_touchscreen_controller_analog_sticks.xml b/android/app/src/main/res/layout/layout_touchscreen_controller_analog_sticks.xml
deleted file mode 100644
index 3af81d8bf..000000000
--- a/android/app/src/main/res/layout/layout_touchscreen_controller_analog_sticks.xml
+++ /dev/null
@@ -1,277 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/constraintLayout"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:clipChildren="false">
-
-    <View
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:translationZ="-10px"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_r2"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="260dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_r2_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_r2_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_r1"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="200dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_r1_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_r1_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_l1"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="200dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_l1_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_l1_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_l2"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="260dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_l2_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_l2_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_start"
-        android:layout_width="40dp"
-        android:layout_height="25dp"
-        android:layout_marginStart="70dp"
-        android:layout_marginBottom="8dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_start_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_start_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_select"
-        android:layout_width="40dp"
-        android:layout_height="25dp"
-        android:layout_marginEnd="70dp"
-        android:layout_marginBottom="8dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_select_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_select_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_cross"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="70dp"
-        android:layout_marginBottom="30dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_cross_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_cross_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_square"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="120dp"
-        android:layout_marginBottom="80dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_square_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_square_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_triangle"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="70dp"
-        android:layout_marginBottom="130dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_triangle_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_triangle_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_circle"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="20dp"
-        android:layout_marginBottom="80dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_circle_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_circle_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerAxisView
-        android:id="@+id/controller_axis_left"
-        android:layout_width="150dp"
-        android:layout_height="150dp"
-        android:layout_marginStart="20dp"
-        android:layout_marginBottom="30dp"
-        android:paddingTop="20dp"
-        android:paddingBottom="20dp"
-        android:paddingLeft="20dp"
-        android:paddingRight="20dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerAxisView
-        android:id="@+id/controller_axis_right"
-        android:layout_width="150dp"
-        android:layout_height="150dp"
-        android:layout_marginEnd="20dp"
-        android:layout_marginBottom="300dp"
-        android:paddingLeft="20dp"
-        android:paddingTop="20dp"
-        android:paddingRight="20dp"
-        android:paddingBottom="20dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerDPadView
-        android:id="@+id/controller_dpad"
-        android:layout_width="150dp"
-        android:layout_height="150dp"
-        android:layout_marginStart="20dp"
-        android:layout_marginBottom="300dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_fast_forward"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginBottom="50dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_fast_forward_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_fast_forward" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_analog"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginBottom="95dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_analog_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_analog_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_pause"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginRight="20dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_pause_button"
-        app:unpressedDrawable="@drawable/ic_controller_pause_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_quick_load"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginLeft="20dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_quick_load_button"
-        app:unpressedDrawable="@drawable/ic_controller_quick_load_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_quick_save"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginLeft="75dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_quick_save_button"
-        app:unpressedDrawable="@drawable/ic_controller_quick_save_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_1"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t1_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t1_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_2"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t2_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t2_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_3"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t3_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t3_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_4"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t4_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t4_button" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_touchscreen_controller_digital.xml b/android/app/src/main/res/layout/layout_touchscreen_controller_digital.xml
deleted file mode 100644
index 163a07b4f..000000000
--- a/android/app/src/main/res/layout/layout_touchscreen_controller_digital.xml
+++ /dev/null
@@ -1,239 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/constraintLayout"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:clipChildren="false">
-
-    <View
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:translationZ="-10px"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_r2"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_r2_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_r2_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_r1"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_r1_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_r1_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerDPadView
-        android:id="@+id/controller_dpad"
-        android:layout_width="150dp"
-        android:layout_height="150dp"
-        android:layout_marginStart="20dp"
-        android:layout_marginBottom="30dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_l1"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_l1_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_l1_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_l2"
-        android:layout_width="70dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_l2_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_l2_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_start"
-        android:layout_width="40dp"
-        android:layout_height="25dp"
-        android:layout_marginStart="70dp"
-        android:layout_marginBottom="8dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_start_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_start_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_select"
-        android:layout_width="40dp"
-        android:layout_height="25dp"
-        android:layout_marginEnd="70dp"
-        android:layout_marginBottom="8dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_select_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_select_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_cross"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="70dp"
-        android:layout_marginBottom="30dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_cross_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_cross_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_square"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="120dp"
-        android:layout_marginBottom="80dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_square_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_square_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_triangle"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="70dp"
-        android:layout_marginBottom="130dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_triangle_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_triangle_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_circle"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="20dp"
-        android:layout_marginBottom="80dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_circle_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_circle_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_fast_forward"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginBottom="50dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_fast_forward_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_fast_forward" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_pause"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginRight="20dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_pause_button"
-        app:unpressedDrawable="@drawable/ic_controller_pause_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_quick_load"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginLeft="20dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_quick_load_button"
-        app:unpressedDrawable="@drawable/ic_controller_quick_load_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_quick_save"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginLeft="75dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_quick_save_button"
-        app:unpressedDrawable="@drawable/ic_controller_quick_save_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_1"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t1_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t1_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_2"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t2_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t2_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_3"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t3_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t3_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_4"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t4_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t4_button" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_touchscreen_controller_edit.xml b/android/app/src/main/res/layout/layout_touchscreen_controller_edit.xml
deleted file mode 100644
index 0dea1ecd9..000000000
--- a/android/app/src/main/res/layout/layout_touchscreen_controller_edit.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <Button
-        android:id="@+id/options"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="16dp"
-        android:text="@string/touchscreen_controller_edit_menu"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/layout_touchscreen_controller_lightgun.xml b/android/app/src/main/res/layout/layout_touchscreen_controller_lightgun.xml
deleted file mode 100644
index bd83243d8..000000000
--- a/android/app/src/main/res/layout/layout_touchscreen_controller_lightgun.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/constraintLayout"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:clipChildren="false">
-
-    <View
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:translationZ="-10px"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_a"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="30dp"
-        android:layout_marginBottom="30dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_a_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_a_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_b"
-        android:layout_width="50dp"
-        android:layout_height="50dp"
-        android:layout_marginEnd="80dp"
-        android:layout_marginBottom="80dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_b_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_b_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_fast_forward"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginBottom="50dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_fast_forward_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_fast_forward" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_pause"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginRight="20dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_pause_button"
-        app:unpressedDrawable="@drawable/ic_controller_pause_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_quick_load"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginLeft="20dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_quick_load_button"
-        app:unpressedDrawable="@drawable/ic_controller_quick_load_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_quick_save"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginLeft="75dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_quick_save_button"
-        app:unpressedDrawable="@drawable/ic_controller_quick_save_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_1"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t1_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t1_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_2"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="220dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t2_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t2_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_3"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginEnd="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t3_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t3_button" />
-
-    <com.github.stenzek.duckstation.TouchscreenControllerButtonView
-        android:id="@+id/controller_button_autofire_4"
-        android:layout_width="35dp"
-        android:layout_height="35dp"
-        android:layout_marginStart="60dp"
-        android:layout_marginBottom="280dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.5"
-        app:layout_constraintStart_toStartOf="parent"
-        app:pressedDrawable="@drawable/ic_controller_t4_button_pressed"
-        app:unpressedDrawable="@drawable/ic_controller_t4_button" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/save_state_view_entry.xml b/android/app/src/main/res/layout/save_state_view_entry.xml
deleted file mode 100644
index eaaff4f7a..000000000
--- a/android/app/src/main/res/layout/save_state_view_entry.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/linearLayout"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-    <ImageView
-        android:id="@+id/image"
-        android:layout_width="80dp"
-        android:layout_height="60dp"
-        android:layout_marginTop="20dp"
-        android:layout_marginBottom="4dp"
-        android:layout_marginLeft="15dp"
-        android:layout_alignParentTop="true"
-        android:scaleType="fitXY"
-        tools:srcCompat="@drawable/ic_media_cdrom" />
-
-    <TextView
-        android:id="@+id/summary"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="15dp"
-        android:layout_marginTop="8dp"
-        android:text="Game Slot 1"
-        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
-        android:layout_alignParentTop="true"
-        android:layout_toRightOf="@id/image" />
-
-    <TextView
-        android:id="@+id/game"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="15dp"
-        android:layout_marginTop="0dp"
-        android:text="SCES-0000 - Game Name"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        android:layout_below="@id/summary"
-        android:layout_toRightOf="@id/image" />
-
-    <TextView
-        android:id="@+id/path"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="15dp"
-        android:layout_marginTop="0dp"
-        android:text="Dump Name.chd"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        android:layout_below="@id/game"
-        android:layout_toRightOf="@id/image" />
-
-    <TextView
-        android:id="@+id/timestamp"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="15dp"
-        android:layout_marginTop="0dp"
-        android:layout_marginBottom="14dp"
-        android:text="Saved at Timestamp"
-        android:textAppearance="@style/TextAppearance.AppCompat.Small"
-        android:layout_below="@id/path"
-        android:layout_toRightOf="@id/image" />
-
-</RelativeLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/settings_activity.xml b/android/app/src/main/res/layout/settings_activity.xml
deleted file mode 100644
index de6591a20..000000000
--- a/android/app/src/main/res/layout/settings_activity.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <FrameLayout
-        android:id="@+id/settings"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-</LinearLayout>
\ No newline at end of file
diff --git a/android/app/src/main/res/menu/menu_controller_mapping.xml b/android/app/src/main/res/menu/menu_controller_mapping.xml
deleted file mode 100644
index 2521ee5e1..000000000
--- a/android/app/src/main/res/menu/menu_controller_mapping.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <item
-        android:id="@+id/action_load_profile"
-        android:title="Load Profile"
-        android:icon="@drawable/ic_baseline_folder_open_24"
-        app:showAsAction="ifRoom" />
-
-    <item
-        android:id="@+id/action_save_profile"
-        android:title="Save Profile"
-        android:icon="@drawable/ic_baseline_save_24"
-        app:showAsAction="ifRoom" />
-
-    <item
-        android:id="@+id/action_clear_bindings"
-        android:title="Clear Bindings" />
-</menu>
\ No newline at end of file
diff --git a/android/app/src/main/res/menu/menu_edit_game_directories.xml b/android/app/src/main/res/menu/menu_edit_game_directories.xml
deleted file mode 100644
index 06192fbb8..000000000
--- a/android/app/src/main/res/menu/menu_edit_game_directories.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <item
-        android:id="@+id/add_directory"
-        android:title="@string/menu_edit_game_directories_add_directory" />
-    <item
-        android:id="@+id/add_path"
-        android:title="@string/menu_edit_game_directories_add_path" />
-    <item
-        android:id="@+id/force_saf"
-        android:checkable="true"
-        android:title="@string/menu_edit_game_directories_force_saf" />
-</menu>
\ No newline at end of file
diff --git a/android/app/src/main/res/menu/menu_game_list_entry.xml b/android/app/src/main/res/menu/menu_game_list_entry.xml
deleted file mode 100644
index e1ce8dab3..000000000
--- a/android/app/src/main/res/menu/menu_game_list_entry.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:id="@+id/game_list_entry_menu_start_game"
-        android:title="@string/menu_game_list_entry_start_game" />
-    <item
-        android:id="@+id/game_list_entry_menu_resume_game"
-        android:title="@string/menu_game_list_entry_resume_game" />
-    <item
-        android:id="@+id/game_list_entry_menu_properties"
-        android:title="@string/menu_game_list_entry_game_properties" />
-    <item
-        android:id="@+id/game_list_entry_menu_choose_cover_image"
-        android:title="@string/menu_game_list_entry_choose_cover_image" />
-</menu>
\ No newline at end of file
diff --git a/android/app/src/main/res/menu/menu_main.xml b/android/app/src/main/res/menu/menu_main.xml
deleted file mode 100644
index 3b82f7748..000000000
--- a/android/app/src/main/res/menu/menu_main.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    tools:context="com.github.stenzek.duckstation.MainActivity">
-    <group android:id="@+id/start_menu">
-        <item
-            android:id="@+id/action_start_file"
-            android:title="@string/menu_main_start_file" />
-        <item
-            android:id="@+id/action_start_bios"
-            android:title="@string/menu_main_start_bios" />
-    </group>
-    <group android:id="@+id/settings">
-        <item
-            android:id="@+id/action_settings"
-            android:icon="@drawable/ic_baseline_settings_24"
-            android:orderInCategory="103"
-            android:title="@string/action_settings"
-            app:showAsAction="always" />
-        <item
-            android:id="@+id/action_switch_view"
-            android:icon="@drawable/ic_baseline_settings_24"
-            android:orderInCategory="99"
-            android:title="@string/action_switch_view"
-            app:showAsAction="always" />
-        <item
-            android:id="@+id/action_controller_settings"
-            android:icon="@drawable/ic_baseline_gamepad_24"
-            android:orderInCategory="102"
-            android:title="@string/action_controller_mapping"
-            app:showAsAction="always" />
-        <item
-            android:id="@+id/action_memory_card_editor"
-            android:icon="@drawable/ic_baseline_sd_card_24"
-            android:orderInCategory="100"
-            android:title="@string/action_memory_card_editor"
-            app:showAsAction="always" />
-        <item
-            android:id="@+id/action_edit_game_directories"
-            android:icon="@drawable/ic_baseline_folder_open_24"
-            android:title="@string/menu_main_edit_game_directories"
-            android:orderInCategory="101"
-            app:showAsAction="always"/>
-        <item
-            android:id="@+id/action_import_bios"
-            android:title="@string/menu_main_import_bios" />
-    </group>
-    <group android:id="@+id/game_list">
-        <item
-            android:id="@+id/action_scan_for_new_games"
-            android:title="@string/menu_main_scan_for_new_games" />
-        <item
-            android:id="@+id/action_rescan_all_games"
-            android:title="@string/menu_main_rescan_all_games" />
-    </group>
-    <group android:id="@+id/support">
-        <item
-            android:id="@+id/action_show_version"
-            android:title="@string/menu_main_show_version" />
-        <item
-            android:id="@+id/action_github_respository"
-            android:title="@string/menu_main_github_repository" />
-        <item
-            android:id="@+id/action_discord_server"
-            android:title="@string/menu_main_discord_server" />
-    </group>
-</menu>
diff --git a/android/app/src/main/res/menu/menu_memory_card_editor.xml b/android/app/src/main/res/menu/menu_memory_card_editor.xml
deleted file mode 100644
index 9411e9cde..000000000
--- a/android/app/src/main/res/menu/menu_memory_card_editor.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
-    <item
-        android:id="@+id/action_new_card"
-        android:title="@string/action_memory_card_editor_new_card"
-        android:enabled="false"
-        android:icon="@drawable/ic_baseline_create_new_folder_24" />
-    <item
-        android:id="@+id/action_import_card"
-        android:title="@string/action_memory_card_editor_import_card"
-        android:icon="@drawable/ic_baseline_import_contacts_24"
-        app:showAsAction="ifRoom" />
-    <item
-        android:id="@+id/action_format_card"
-        android:title="@string/action_memory_card_editor_format_card"
-        android:enabled="false"
-        android:icon="@drawable/ic_baseline_delete_sweep_24" />
-    <item
-        android:id="@+id/action_delete_card"
-        android:title="@string/action_memory_card_editor_delete_card"
-        android:icon="@drawable/ic_baseline_delete_24"
-        app:showAsAction="ifRoom"
-    />
-</menu>
\ No newline at end of file
diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index c9ad5f98f..000000000
--- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
-    <background android:drawable="@color/ic_launcher_background" />
-    <foreground android:drawable="@mipmap/ic_launcher_foreground" />
-</adaptive-icon>
\ No newline at end of file
diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index c9ad5f98f..000000000
--- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
-    <background android:drawable="@color/ic_launcher_background" />
-    <foreground android:drawable="@mipmap/ic_launcher_foreground" />
-</adaptive-icon>
\ No newline at end of file
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index d64d768035a80618807c808114cd715909304556..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2817
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
TRf{F%00000NkvXXu0mjfs!dVn

diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
deleted file mode 100644
index 9b6b70411f6d3ee6b50f8bee2f61c8a4776f751b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5163
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

diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index 7d7817be6eab38251fb2b677eb671053f358d3dc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5004
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
Woiz_KW%}Cy0000<MNUMnLSTY7Q@ZN_

diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index d5aa43caa6b0f02e1d64b4083b366cd0e1308aca..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1741
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

diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
deleted file mode 100644
index 3b3c148502c9a844127d237022f0e75387bc4516..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2917
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

diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index 2dc2434af16405b6f4e82c6f0db0015964451e2c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2993
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

diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index b260a79561270f1ed3749f73687eef65b9e4deee..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4088
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

diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
deleted file mode 100644
index e31c4c180e51f7865ec58c7715a47344f10e73f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7937
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
RNtXZfswAf_TP<S_`ycDwDB}PC

diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index 37c92a9045f924238fc68a2a2719972d7a119ca2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7370
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

diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 633789a6c4f2fcfe72f436e38196a4c6f4a14220..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7155
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
b-QkD2Ij;{tq{6xX%mdVwb(E?VY{LH!H)=+S

diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 9e64e9588c19a6c4eb799db9b604a7f9afb3d780..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14699
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
AOaK4?

diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index 9e2f73b53fba2b9cfa8abc1947f040415b20655b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12470
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
A>Hq)$

diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 7c9848832e52aed28975a84d2d34b41715de74d4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10680
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

diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 988afe5cfb041e6300f6a2e67ccb9ba9cc866c3f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18599
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
N@9FC2vd$@?2>{(CT=)P0

diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index 9b9c6f6831df2c0e95d8c1b8058e24618578297a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18804
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
ac>Eu-bh^*Y;}d)U0000<MNUMnLSTZxpOy>&

diff --git a/android/app/src/main/res/values-es/arrays.xml b/android/app/src/main/res/values-es/arrays.xml
deleted file mode 100644
index d74fb6b1b..000000000
--- a/android/app/src/main/res/values-es/arrays.xml
+++ /dev/null
@@ -1,220 +0,0 @@
-<resources>
-    <string-array name="settings_console_region_entries">
-        <item>Auto-Detectar</item>
-        <item>NTSC-J (Japón)</item>
-        <item>NTSC-U (US)</item>
-        <item>PAL (Europa, Australia)</item>
-    </string-array>
-    <string-array name="settings_cpu_execution_mode_entries">
-        <item>Intérprete (El más lento)</item>
-        <item>Intérprete en Caché (Rápido)</item>
-        <item>Recompilador (Más rápido)</item>
-    </string-array>
-    <string-array name="settings_cpu_fastmem_mode_entries">
-        <item>Deshabilitado (El más lento)</item>
-        <item>MMap (Hardware, Más rápido, 64-Bit Solamente)</item>
-        <item>LUT (Rápido)</item>
-    </string-array>
-    <string-array name="gpu_renderer_entries">
-        <item>Hardware (OpenGL)</item>
-        <item>Hardware (Vulkan)</item>
-        <item>Software</item>
-    </string-array>
-    <string-array name="settings_gpu_resolution_scale_entries">
-        <item>1x</item>
-        <item>2x</item>
-        <item>3x (para 720p)</item>
-        <item>4x</item>
-        <item>5x (para 1080p)</item>
-        <item>6x (para 1440p)</item>
-        <item>7x</item>
-        <item>8x</item>
-        <item>9x (para 4K)</item>
-        <item>10x</item>
-        <item>11x</item>
-        <item>12x</item>
-        <item>13x</item>
-        <item>14x</item>
-        <item>15x</item>
-        <item>16x</item>
-    </string-array>
-    <string-array name="settings_display_crop_mode_entries">
-        <item>Ninguno</item>
-        <item>Sólo área de sobreescaneo</item>
-        <item>Todos los bordes</item>
-    </string-array>
-    <string-array name="settings_display_aspect_ratio_names">
-        <item>Auto (Nativo del juego)</item>
-        <item>Auto (Match Display)</item>
-        <item>Custom</item>
-        <item>4:3</item>
-        <item>16:9</item>
-        <item>19:9</item>
-        <item>20:9</item>
-        <item>PAR 1:1</item>
-    </string-array>
-    <string-array name="settings_gpu_texture_filter_names">
-        <item>Nearest-Neighbor</item>
-        <item>Bilinear</item>
-        <item>Bilinear (Sin unión de bordes)</item>
-        <item>JINC2</item>
-        <item>JINC2 (Sin unión de bordes)</item>
-        <item>xBR</item>
-        <item>xBR (Sin unión de bordes)</item>
-    </string-array>
-    <string-array name="settings_controller_type_entries">
-        <item>None</item>
-        <item>Control Digital (Mando)</item>
-        <item>Control Analógico (DualShock)</item>
-        <item>Analog Joystick</item>
-        <item>NeGcon</item>
-        <item>GunCon</item>
-    </string-array>
-    <string-array name="settings_memory_card_mode_entries">
-        <item>Sin tarjeta de memoria</item>
-        <item>Compartido entre todos los juegos</item>
-        <item>Tarjeta separada por juego (Código)</item>
-        <item>Tarjeta separada por juego (Título)</item>
-    </string-array>
-    <string-array name="settings_cdrom_read_speedup_entries">
-        <item>Ninguno (Velocidad doble)</item>
-        <item>2x (Velocidad cuádruple)</item>
-        <item>3x (6x Velocidad)</item>
-        <item>4x (8x Velocidad)</item>
-        <item>5x (10x Velocidad)</item>
-        <item>6x (12x Velocidad)</item>
-        <item>7x (14x Velocidad)</item>
-        <item>8x (16x Velocidad)</item>
-        <item>9x (18x Velocidad)</item>
-        <item>10x (20x Velocidad)</item>
-    </string-array>
-    <string-array name="settings_touchscreen_controller_view_entries">
-        <item>Ninguno</item>
-        <item>Mando digital</item>
-        <item>Mando analógico unico</item>
-        <item>Mando analógico dual</item>
-        <item>Lightgun</item>
-    </string-array>
-    <string-array name="settings_audio_backend_entries">
-        <item>Nulo (Sin Salida)</item>
-        <item>Cubeb</item>
-        <item>OpenSL ES (Recomendado)</item>
-    </string-array>
-    <string-array name="settings_audio_buffer_size_entries">
-        <item>1024 Fotogramas (23.22ms)</item>
-        <item>2048 Fotogramas (46.44ms, Recomendado)</item>
-        <item>3072 Fotogramas (69.66ms)</item>
-        <item>4096 Fotogramas (92.88ms)</item>
-    </string-array>
-    <string-array name="settings_log_level_entries">
-        <item>Ninguno</item>
-        <item>Error</item>
-        <item>Alerta</item>
-        <item>Alertas de Rendimiento</item>
-        <item>Información</item>
-        <item>Detalles</item>
-        <item>Desarrollador</item>
-        <item>Perfil</item>
-        <item>Depurar</item>
-        <item>Seguimiento</item>
-    </string-array>
-    <string-array name="settings_tabs">
-        <item>General</item>
-        <item>Pantalla</item>
-        <item>Audio</item>
-        <item>Mejoras</item>
-        <item>Logros</item>
-        <item>Avanzado</item>
-    </string-array>
-    <string-array name="settings_gpu_msaa_entries">
-        <item>Deshabilitado</item>
-        <item>2x MSAA</item>
-        <item>4x MSAA</item>
-        <item>8x MSAA</item>
-        <item>2x SSAA</item>
-        <item>4x SSAA</item>
-        <item>8x SSAA</item>
-    </string-array>
-    <string-array name="settings_advanced_display_fps_limit_entries">
-        <item>Ilimitado (Mostrar fotogramas)</item>
-        <item>10 FPS</item>
-        <item>15 FPS</item>
-        <item>30 FPS</item>
-        <item>45 FPS</item>
-        <item>60 FPS</item>
-        <item>75 FPS</item>
-        <item>90 FPS</item>
-    </string-array>
-    <string-array name="settings_emulation_speed_entries">
-        <item>Ilimitado</item>
-        <item>10% [6 FPS (NTSC) / 5 FPS (PAL)]</item>
-        <item>20% [12 FPS (NTSC) / 10 FPS (PAL)]</item>
-        <item>30% [18 FPS (NTSC) / 15 FPS (PAL)]</item>
-        <item>40% [24 FPS (NTSC) / 20 FPS (PAL)]</item>
-        <item>50% [30 FPS (NTSC) / 25 FPS (PAL)]</item>
-        <item>60% [36 FPS (NTSC) / 30 FPS (PAL)]</item>
-        <item>70% [42 FPS (NTSC) / 35 FPS (PAL)]</item>
-        <item>80% [48 FPS (NTSC) / 40 FPS (PAL)]</item>
-        <item>90% [54 FPS (NTSC) / 45 FPS (PAL)]</item>
-        <item>100% [60 FPS (NTSC) / 50 FPS (PAL), Defecto]</item>
-        <item>125% [75 FPS (NTSC) / 62 FPS (PAL)]</item>
-        <item>150% [90 FPS (NTSC) / 75 FPS (PAL)]</item>
-        <item>175% [105 FPS (NTSC) / 87 FPS (PAL)]</item>
-        <item>200% [120 FPS (NTSC) / 100 FPS (PAL)]</item>
-        <item>250% [150 FPS (NTSC) / 125 FPS (PAL)]</item>
-        <item>300% [180 FPS (NTSC) / 150 FPS (PAL)]</item>
-        <item>350% [210 FPS (NTSC) / 175 FPS (PAL)]</item>
-        <item>400% [240 FPS (NTSC) / 200 FPS (PAL)]</item>
-        <item>450% [270 FPS (NTSC) / 225 FPS (PAL)]</item>
-        <item>500% [300 FPS (NTSC) / 250 FPS (PAL)]</item>
-        <item>600% [360 FPS (NTSC) / 300 FPS (PAL)]</item>
-        <item>700% [420 FPS (NTSC) / 350 FPS (PAL)]</item>
-        <item>800% [480 FPS (NTSC) / 400 FPS (PAL)]</item>
-        <item>900% [540 FPS (NTSC) / 450 FPS (PAL)]</item>
-        <item>1000% [600 FPS (NTSC) / 500 FPS (PAL)]</item>
-    </string-array>
-    <string-array name="settings_advanced_cpu_overclock_entries">
-        <item>25% (8MHz)</item>
-        <item>50% (16MHz)</item>
-        <item>75% (24MHz)</item>
-        <item>100% (33MHz, Defecto)</item>
-        <item>125% (41MHz)</item>
-        <item>150% (49MHz)</item>
-        <item>175% (57MHz)</item>
-        <item>200% (66MHz)</item>
-        <item>225% (74MHz)</item>
-        <item>250% (82MHz)</item>
-        <item>275% (90MHz)</item>
-        <item>300% (99MHz)</item>
-        <item>350% (115MHz)</item>
-        <item>400% (132MHz)</item>
-        <item>450% (148MHz)</item>
-        <item>500% (165MHz)</item>
-        <item>500% (165MHz)</item>
-        <item>600% (198MHz)</item>
-        <item>700% (231MHz)</item>
-        <item>800% (264MHz)</item>
-        <item>900% (297MHz)</item>
-        <item>1000% (330MHz)</item>
-    </string-array>
-    <string-array name="settings_emulation_screen_orientation_entries">
-        <item>Usar configuración del dipositivo</item>
-        <item>Vertical</item>
-        <item>Horizontal</item>
-        <item>Sensor Based</item>
-    </string-array>
-    <string-array name="settings_theme_entries">
-        <item>Usar configuración del Sistema</item>
-        <item>Claro</item>
-        <item>Oscuro</item>
-    </string-array>
-    <string-array name="settings_downsample_mode_entries">
-        <item>Deshabilitado</item>
-        <item>Cuadro (Reducir Resolución 3D/Suavizar todo)</item>
-        <item>Adaptable (Preservar 3D/Suavizar 2D)</item>
-    </string-array>
-    <string-array name="settings_boolean_entries">
-        <item>Deshabilitado</item>
-        <item>Habilitado</item>
-    </string-array>
-</resources>
diff --git a/android/app/src/main/res/values-es/strings.xml b/android/app/src/main/res/values-es/strings.xml
deleted file mode 100644
index 7543266ad..000000000
--- a/android/app/src/main/res/values-es/strings.xml
+++ /dev/null
@@ -1,346 +0,0 @@
-<resources>
-    <string name="app_name">DuckStation</string>
-    <string name="action_settings">Configuraciones</string>
-    <string name="action_controller_mapping">Mapeado del Control</string>
-    <string name="title_activity_settings">Configuraciones</string>
-    <string name="settings_console_region">Región de Consola</string>
-    <string name="settings_console_tty_output">Habilitar Salida TTY</string>
-    <string name="settings_console_fast_boot">Inicio Rápido</string>
-    <string name="settings_osd_show_messages">Mostrar Mensajes</string>
-    <string name="settings_osd_show_speed">Mostrar Velocidad de Emulación</string>
-    <string name="settings_osd_show_show_fps">Mostrar velocidad de fotogramas del juego</string>
-    <string name="settings_osd_show_show_vps">Mostrar pantalla FPS</string>
-    <string name="settings_cpu_execution_mode">Modo de Ejecución de CPU</string>
-    <string name="settings_gpu_renderer">Renderizador de GPU</string>
-    <string name="settings_gpu_resolution_scale">Escala de Resolución</string>
-    <string name="title_activity_emulation">Actividad de Emulación</string>
-    <string name="settings_emulation_speed">Velocidad de Emulación</string>
-    <string name="settings_fast_forward_speed">Velocidad de Avance Rápido</string>
-    <string name="settings_save_state_on_exit">Guardar Estado al Salir</string>
-    <string name="settings_emulation_screen_orientation">Orientación de pantalla del Emulador</string>
-    <string name="settings_load_patch_codes">Cargar Códigos de Parche</string>
-    <string name="settings_summary_save_state_on_exit">Guarda automáticamente el estado del emulador al apagar o salir. Después puedes continuar desde donde lo dejaste la última vez.</string>
-    <string name="settings_summary_load_patch_codes"><![CDATA[Cargar Códigos de Parche de trucos/<game name>.cht en formato PCSXR. Los códigos pueden ser activados dentro del juego.]]></string>
-    <string name="settings_apply_compatibility_settings">Aplicar configuración de compatiblidad</string>
-    <string name="settings_summary_apply_compatibility_settings">Desactiva las mejoras automáticamente cuando no son compatibles con los juegos.</string>
-    <string name="settings_summary_video_sync">Habilita esta opción para coincidir la tasa de refresco de DuckStation con la de tu pantalla. La VSync se deshabilita automáticamente cuando no sea posible (ejemplo, no llegar al 100% de la velocidad).</string>
-    <string name="settings_video_sync">Sincronizar Video</string>
-    <string name="settings_cpu_overclocking">CPU Overclocking</string>
-    <string name="settings_cdrom_region_check">Chequeo Regional de CD-ROM</string>
-    <string name="settings_summary_cdrom_region_check">Evita que el emulador lea discos de regiones incorrectas. Comúnmente es seguro desactivarlo.</string>
-    <string name="settings_cdrom_preload_image_to_ram">Precargar imagen a RAM de CD-ROM</string>
-    <string name="settings_summary_preload_image_to_ram">Carga la imagen del juego en la RAM. Útil para cuando se usan directorios a través de una red. En algunas ocasiones puede eliminar las pausas que se generan cuando el juego inicia la reproducción de una pista de audio.</string>
-    <string name="settings_pgxp_vertex_cache">Caché de vértices PGXP</string>
-    <string name="settings_summary_pgxp_vertex_cache">Utiliza las coordenadas de la pantalla como respaldo cuando falla el seguimiento de vértices a través de la memoria. Puede mejorar la compatibilidad con PGXP.</string>
-    <string name="settings_pgxp_cpu_mode">Modo PGXP CPU</string>
-    <string name="settings_summary_pgxp_cpu_mode">Intenta rastrear la manipulación de vértices a través del CPU. Algunos juegos requieren esta opción para que PGXP sea efectivo. Muy lento e incompatible con el recompilador.</string>
-    <string name="settings_cpu_recompiler_icache">CPU Recompilado ICache</string>
-    <string name="settings_summary_cpu_recompiler_icache">Determina si la caché de instrucciones del CPU se simula en el recompilador. Mejora la precisión con un pequeño coste de rendimiento. Si los juegos corren demasiado rápido, intenta habilitar esta opción.</string>
-    <string name="settings_cpu_recompiler_fastmem">CPU Recompilador de acceso rápido a la memoria</string>
-    <string name="settings_summary_cpu_recompiler_fastmem">Hace que el acceso de memoria de los invitados sea más eficiente mediante el uso de errores de página y parches. Desactívalo si es inestable en tu dispositivo.</string>
-    <string name="settings_presented_frame_limit">Límite de fotogramas presentados</string>
-    <string name="settings_logging_level">Nivel de Registro</string>
-    <string name="settings_log_to_file">Registrar en Archivo</string>
-    <string name="settings_summary_log_to_file">Escribe los mensajes de registros duckstation.log en tu directorio de Usuario. Usarlo solamente para depurar, ya que ralentiza la emulación.</string>
-    <string name="settings_log_to_logcat">Registrar en Logcat</string>
-    <string name="settings_summary_log_to_logcat">Escribe los mensajes de registros en el registrador de mensajes de Android. Solo es útil cuando se conecta a una computadora con adb.</string>
-    <string name="settings_volume">Volumen</string>
-    <string name="settings_summary_volume">Controla el volumen de salida de audio del emulador.</string>
-    <string name="settings_fast_forward_volume">Volumen de Avance Rápido</string>
-    <string name="settings_summary_fast_forward_volume">Controla el volumen de salida de audio del emulador que durante el avance rápido.</string>
-    <string name="settings_mute_all_sound">Silenciar todo</string>
-    <string name="settings_summary_mute_all_sound">Evita que el emulador emita cualquier sonido.</string>
-    <string name="settings_mute_cd_audio">Silenciar audio de CD</string>
-    <string name="settings_summary_mute_cd_audio">Silecia a la fuerza el audio CD-DA y XA del CD-ROM. Puede usarse para deshabilitar la música de fondo en algunos juegos.</string>
-    <string name="settings_audio_backend">Motor de Audio</string>
-    <string name="settings_audio_buffer_size">Tamaño del Búfer de Audio</string>
-    <string name="settings_summary_audio_buffer_size">Determina la latencia entre el audio que se genera y de salida por altavoces. Los valores más pequeños reducen la latencia, pero las variaciones en la velocidad de emulación causarán problemas.</string>
-    <string name="settings_audio_sync">Sincronizar Audio</string>
-    <string name="settings_summary_audio_sync">Acelera la velocidad de la emulación basado en los fotogramas de audio enviados por el motor de audio. Esto ayuda a eliminar ruidos o distorsiones si la emulación es muy rápida. La sincronización se desabilitará automáticamente si la velocidad no es del 100%.</string>
-    <string name="settings_controller_type">Tipo de Control</string>
-    <string name="settings_enable_analog_mode_on_reset">Habilitar el Modo Analógico al Reiniciar</string>
-    <string name="settings_touchscreen_controller_view">Vista de Control de Pantalla Táctil</string>
-    <string name="settings_auto_hide_touchscreen_controller">Auto-Ocultar el control de pantalla táctil​</string>
-    <string name="settings_summary_auto_hide_touchscreen_controller">Oculta el control de pantalla táctil cuando un control externo es detectado.</string>
-    <string name="settings_vibrate_on_press">Vibrar al presionar</string>
-    <string name="settings_summary_vibrate_on_press">Permite una vibración corta cuando un botón en la pantalla táctil es presionado. Requiere que \"Vibrar al presionar\" esté habilitado en tu dispositivo.</string>
-    <string name="settings_enable_vibration">Activar Vibración</string>
-    <string name="settings_summary_enable_vibration">Reenvía el ruido del juego al motor de vibración del teléfono..</string>
-    <string name="settings_memory_card_1_type">Tarjeta de Memoria Tipo 1</string>
-    <string name="settings_memory_card_2_type">Tarjeta de Memoria Tipo 2</string>
-    <string name="settings_crop_mode">Modo de recorte</string>
-    <string name="settings_aspect_ratio">Relación de Aspecto</string>
-    <string name="settings_linear_upscaling">Escalado Lineal</string>
-    <string name="settings_integer_upscaling">Escalado Entero</string>
-    <string name="settings_summary_linear_upscaling">Suaviza la imagen al escalar la consola a la pantalla.</string>
-    <string name="settings_summary_integer_upscaling">Añade relleno en la pantalla para asegurarse que la relación entre los pixeles de la consola y del anfitrión es un número entero. Puede resultar en una imagen más nítida en algunos juegos 2D.</string>
-    <string name="settings_summary_osd_show_messages">Muestra mensajes en pantalla cuando ocurren eventos como crear o cargar estados guardados, tomar capturas, etc.</string>
-    <string name="settings_summary_osd_show_speed">Establece la velocidad de emulación de destino. No se asegura que esa velocidad se vaya a alcanzar, y de no hacerlo, el emulador va a correr lo más rápido que pueda.</string>
-    <string name="settings_summary_osd_show_fps">Muestra la velocidad de fotogramas interna del juego en la esquina superior derecha de la pantalla.</string>
-    <string name="settings_summary_osd_show_vps">Muestra el número de fotogramas (o sincronizaciones verticales) mostradas por segundo por el sistema en la esquina superior derecha de la pantalla.</string>
-    <string name="settings_cdrom_read_speedup">CD-ROM Aceleración de lectura</string>
-    <string name="settings_summary_cdrom_read_speedup">Acelera la lectura del CD-ROM para el valor especificado. Sólo se aplica a lecturas de doble velocidad, y se ignora cuando se está reproduciendo audio. Puede mejorar las velocidades de carga en algunos juegos, mientras que puede interrumpir otros.</string>
-    <string name="settings_summary_console_fast_boot">Omite el BIOS shell/intro, iniciando directamente en el juego. Normalmente es seguro habilitarlo, pero algunos juegos se tildan.</string>
-    <string name="settings_msaa">Anti-aliasing de muestreo múltiple</string>
-    <string name="settings_true_color">Renderizado de color verdadero (24-bit, deshabilita el tramado)</string>
-    <string name="settings_summary_true_color">Esto produce mejores gradientes al costo de hacer algunos colores diferentes. Deshabilitar esta opción también activa el tramado. La mayoría de los juegos son compatibles con esta opción.</string>
-    <string name="settings_scaled_dithering">Escalado de tramado (escalar patrón de tramado a resolución)</string>
-    <string name="settings_summary_scaled_dithering">Escala el patrón del tramado a la escala de resolución de la GPU emulada. Esto disimula el tramado en altas resoluciones. Usualmente es seguro habilitarlo, y sólo está soportado por los renderizadores de hardware.</string>
-    <string name="settings_disable_interlacing">Deshabilitar tramado (fuerza progresivamente renderizado/escaneo)</string>
-    <string name="settings_summary_disable_interlacing">Fuerza el renderizado y visualización de fotogramas en modo progresivo. Esto elimina el efecto \"peine\" visto en juegos con 480i renderizándolos en 480p. Normalmente es seguro habilitarlo.</string>
-    <string name="settings_texture_filtering">Filtrado de textura</string>
-    <string name="settings_force_ntsc_timings">Forzar tiempos NTSC (60hz en PAL)</string>
-    <string name="settings_summary_force_ntsc_timings">Usa los tiempos de fotograma del modo NTSC cuando la consola está en modo PAL, forzando los juegos PAL a correr a 60Hz.</string>
-    <string name="settings_widescreen_hack">Hack de Pantalla Panorámica</string>
-    <string name="settings_summary_widescreen_hack">Escala las posiciones de vértices en pantalla a una relación de aspecto panorámica, incrementando el campo de visión de 4:3 a 16:9 en juegos 3D. Tal vez no sea compatible con todos los juegos.</string>
-    <string name="settings_force_4_3_for_24bit">Forzar 4:3 para escenas 24-bit</string>
-    <string name="settings_summary_force_4_3_for_24bit">Cambia al modo de pantalla 4:3 cuando se muestra contenido de 24-bit, generalmente FMVs.</string>
-    <string name="settings_chroma_smoothing_24bit">Suavizado de croma para escenas 24-bit</string>
-    <string name="settings_summary_chrome_smoothing_24bit">Suaviza el efecto pixelado que se produce entre las transiciones de colores en contenido de 24-bit, generalmente en FMVs. Sólo se aplica a los renderizadores de hardware.</string>
-    <string name="settings_pgxp_geometry_correction">PGXP Corrección de Geometría</string>
-    <string name="settings_summary_pgxp_geometry_correction"><![CDATA[Reduce los polígonos \"temblorosos\" y las texturas \"deformadas\" que son comunes en juegos de PS1. >Solo funciona con los renderizadores de hardware. Tal vez no sea compatible con todos los juegos.]]></string>
-    <string name="settings_pgxp_culling_correction">PGXP Correción de Culling</string>
-    <string name="settings_summary_pgxp_culling_correction">Incrementa la precisión del culling de polígonos, reduciendo el número de huecos en la geometría. Requiere la correción de geometría activada.</string>
-    <string name="settings_pgxp_texture_correction">PGXP Corrección de Texturas</string>
-    <string name="settings_summary_pgxp_texture_correction">Usa interpolación con perspectiva correcta para las coordenadas de texturas y colores, enderezando texturas deformadas. Requiere la correción de geometría activada.</string>
-    <string name="settings_pgxp_preserve_projection_precision">PGXP Conservar la precisión de proyección</string>
-    <string name="settings_summary_pgxp_preserve_projection_precision">Permite precisión adicional para PGXP. Puede mejorar las imágenes en algunos juegos pero fallar en otros.</string>
-    <string name="settings_pgxp_depth_buffer">PGXP Búfer de Profundidad</string>
-    <string name="settings_summary_pgxp_depth_buffer">Intenta reducir los polígonos en el eje Z probando píxeles con los valores de profundidad de PGXP. Tiene baja compatibilidad, pero puede funcionar bien en algunos juegos.</string>
-    <string name="menu_main_resume_last_session">Reanudar la última sesión</string>
-    <string name="menu_main_start_file">Iniciar Archivo</string>
-    <string name="menu_main_start_bios">Iniciar BIOS</string>
-    <string name="menu_main_edit_game_directories">Editar Directorios de Juego</string>
-    <string name="menu_main_scan_for_new_games">Escanear para juegos nuevos</string>
-    <string name="menu_main_rescan_all_games">Reescanear todos los juegos</string>
-    <string name="menu_main_import_bios">Importar BIOS</string>
-    <string name="menu_main_show_version">Mostrar Versión</string>
-    <string name="menu_main_github_repository">Repositorio de GitHub</string>
-    <string name="menu_main_discord_server">Servidor de Discord</string>
-    <string name="menu_game_list_entry_start_game">Iniciar Juego</string>
-    <string name="menu_game_list_entry_resume_game">Reanudar Juego</string>
-    <string name="android_progress_callback_please_wait">Cargando...</string>
-    <string name="android_progress_callback_ok">OK</string>
-    <string name="android_progress_callback_information">Información</string>
-    <string name="android_progress_callback_confirmation">Confirmación</string>
-    <string name="android_progress_callback_yes">Si</string>
-    <string name="android_progress_callback_no">No</string>
-    <string name="emulation_activity_error">Error</string>
-    <string name="emulation_activity_ok">OK</string>
-    <string name="emulation_activity_import_patch_codes">Importar códigos de parche...</string>
-    <string name="emulation_activity_patch_on">(ENCENDIDO)</string>
-    <string name="emulation_activity_patch_off">(APAGADO)</string>
-    <string name="emulation_activity_choose_patch_code_file">Seleccionar Archivo con Códigos de Parche</string>
-    <string name="emulation_activity_failed_to_import_patch_codes">Fallo al importar códigos de parche. Asegúrese de seleccionar un archivo con formato PCSXR o Libretro.</string>
-    <string name="main_activity_choose_directory">Elegir Directorio</string>
-    <string name="main_activity_error">Error</string>
-    <string name="main_activity_get_path_from_file_error">No se pudo obtener la ruta del archivo seleccionado. Asegúrese de que el archivo esté un almacenamiento interno/externo.\n\nToque el botón que sobresale en el selector de directorio.\nSeleccione "Mostrar Almacenamiento Interno".\nToque el botón de menú y seleccione el nombre de su dispositivo o tarjeta SD .</string>
-    <string name="main_activity_ok">OK</string>
-    <string name="main_activity_get_path_from_directory_error">No se pudo obtener la ruta del directorio seleccionado. Asegúrese de que el directorio esté un almacenamiento interno/externo.\n\nToque el botón que sobresale en el selector de directorio.\nSeleccione \"Mostrar Almacenamiento Interno\".\nToque el botón de menú y seleccione el nombre de su dispositivo o tarjeta SD .</string>
-    <string name="main_activity_external_storage_permissions_error">Se requieren permisos de almacenamiento externo para usar DuckStation.</string>
-    <string name="main_activity_choose_disc_image">Seleccionar Imagen de Disco</string>
-    <string name="main_activity_missing_bios_image_prompt">No se encontró ninguna imagen de BIOS en el directorio BIOS de DuckStation. ¿Quiere localizar e importar una imagen de BIOS ahora?</string>
-    <string name="main_activity_missing_bios_image">Imagen BIOS Ausente</string>
-    <string name="main_activity_yes">Si</string>
-    <string name="main_activity_no">No</string>
-    <string name="main_activity_choose_bios_image">Elegir Imagen BIOS</string>
-    <string name="main_activity_failed_to_open_bios_image">Fallo al cargar la imagen BIOS.</string>
-    <string name="main_activity_failed_to_read_bios_image_prefix">\"Fallo al leer la imagen BIOS: \"</string>
-    <string name="main_activity_bios_image_too_large">La imagen de BIOS es demasiado grande. Debes seleccionar una imagen de BIOS, no un juego, y debe tener un tamaño de 512 KB.</string>
-    <string name="main_activity_invalid_error">Esta Imagen BIOS es incorrecta, o ya ha sido importado.</string>
-    <string name="main_activity_show_version_title">Version</string>
-    <string name="main_activity_copy">Copiar</string>
-    <string name="settings_gpu_thread">Renderizado de GPU con Hilos</string>
-    <string name="settings_summary_gpu_thread">Usa un segundo hilo para dibujar los gráficos. Actualmente solo está disponible para el renderizador por software, pero puede dar un aumento significante de velocidad, y es seguro de usar.</string>
-    <string name="settings_gpu_threaded_presentation">Presentación de GPU con subprocesos</string>
-    <string name="settings_summary_gpu_threaded_presentation">Presenta fotogramas en un hilo de fondo cuando el Avance Rápido o VSync está desactivado. Esto puede mejorar considerablemente el rendimiento en el renderizador Vulkan.</string>
-    <string name="settings_language">Idioma (reiniciar para aplicar)</string>
-    <string name="touchscreen_controller_stop_editing">Dejar de editar</string>
-    <string name="touchscreen_controller_reset_layout">Reiniciar Modelo</string>
-    <string name="emulation_activity_touchscreen_controller_not_active">El control de pantalla táctil no está activo.</string>
-    <string name="settings_theme">Tema</string>
-    <string name="settings_controller_mapping_summary">Permite asignar botones/ejes del control externo al controlador emulado.</string>
-    <string name="settings_controller_mapping">Mapeado de Control</string>
-    <string name="controller_binding_dialog_message">Presiona un botón del control para seleccionar una nueva asignación.\n\nAsignación Actual: %s</string>
-    <string name="controller_binding_dialog_no_binding"><![CDATA[<Sin Asignar>]]></string>
-    <string name="controller_binding_dialog_cancel">Cancelar</string>
-    <string name="controller_binding_dialog_clear">Limpiar</string>
-    <string name="controller_mapping_activity_title">Mapeado de Control</string>
-    <string name="controller_mapping_activity_no_profiles_found">No se encontraron perfiles.</string>
-    <string name="controller_mapping_activity_select_input_profile">Seleccionar perfil de control</string>
-    <string name="controller_mapping_activity_failed_to_load_profile">Fallo al cargar el perfil \'%s\'</string>
-    <string name="controller_mapping_activity_input_profile_name">Ingrese Nombre de Perfil:</string>
-    <string name="controller_mapping_activity_save">Guardar</string>
-    <string name="controller_mapping_activity_name_must_be_provided">Debe proporcionarse un nombre.</string>
-    <string name="controller_mapping_activity_failed_to_save_input_profile">Fallo al guardar perfil de control.</string>
-    <string name="controller_mapping_activity_input_profile_saved">Perfil de control \'%s\' guardado.</string>
-    <string name="controller_mapping_activity_cancel">Cancelar</string>
-    <string name="settings_use_analog_sticks_for_dpad">Usar las palancas analógicas como cruceta en el modo digital</string>
-    <string name="settings_summary_enable_analog_mode_on_reset">Fuerza el control al modo analógico cuando la consola se reinicia/enciende</string>
-    <string name="settings_summary_use_analog_sticks_for_dpad">Te permite usar las palancas analógicas para controlar la cruceta y los botones en modo digital.</string>
-    <string name="settings_disable_all_enhancements">Desactiva todas las mejoras</string>
-    <string name="settings_summary_disable_all_enhancements">Temporalmente desactiva todas las mejoras, el cual puede ser útil al depurar problemas.</string>
-    <string name="settings_downsample_mode">Submuestreo</string>
-    <string name="activity_game_properties">Propiedades del Juego</string>
-    <string name="game_properties_preference_use_global_setting">Usar configuración global</string>
-    <string name="settings_input_profile">Perfil de Control</string>
-    <string name="game_properties_tab_summary">Resumen</string>
-    <string name="game_properties_tab_game_settings">Configuraciones de juego</string>
-    <string name="game_properties_tab_controller_settings">Configuraciones de Control</string>
-    <string name="settings_audio_resampling">Remuestreo de Audio</string>
-    <string name="settings_summary_audio_resampling">Cuando se ejecuta por encima del 100% de velocidad, vuelve a muestrear el audio de la velocidad objetivo en lugar de eliminar fotogramas. Produce un audio de avance/desaceleración mucho más agradable a un pequeño costo del rendimiento.</string>
-    <string name="settings_general_sync_to_host_refresh_rate">Sincronizar con la velocidad de actualización del anfitrión</string>
-    <string name="settings_summary_general_sync_to_host_refresh_rate">Ajusta la velocidad de emulación para que la frecuencia de actualización de la consola coincida con la frecuencia de actualización del anfitrión cuando las configuraciones de VSync y Remuestreo de audio estén habilitados. Esto da como resultado las animaciones más suaves posibles, a costa de aumentar potencialmente la velocidad de emulación en menos del 1%.</string>
-    <string name="settings_sustained_performance_mode">Modo de Rendimiento Sostenido</string>
-    <string name="settings_summary_sustained_performance_mode">Habilita el Modo de Rendimiento Sostenido por Android. Puede resultar en velocidades de fotogramas más consistentes para sesiones largas en algunos dispositivos.</string>
-    <string name="title_activity_game_directories">Editar Directorio de juegos</string>
-    <string name="settings_game_directories">Directorio de juegos</string>
-    <string name="settings_summary_game_directories">Cambia la lista de directorio que se utiliza para buscar juegos.</string>
-    <string name="game_directories_scanning_subdirectories">Escaneo de subdirectorios.</string>
-    <string name="game_directories_not_scanning_subdirectories">No escanear subdirectorios.</string>
-    <string name="settings_display_all_frames">Optimizar Frame Pacing</string>
-    <string name="settings_summary_display_all_frames">Habilitar esta opción asegurará que cada fotograma que la consola renderice se muestre en la pantalla, para un ritmo de fotograma óptimo. Si tiene dificultades para mantener la velocidad máxima o problemas de audio, intente desactivar esta opción.</string>
-    <string name="menu_edit_game_directories_add_directory">Agregar directorio</string>
-    <string name="menu_edit_game_directories_add_path">Agregar ruta</string>
-    <string name="edit_game_directories_add_path">Agregar ruta</string>
-    <string name="edit_game_directories_add_path_summary">Ingrese la ruta completa al directorio con juegos. \n\nEsto lo puedes obtener de un administrador de archivos.\n\nEjemplo: /storage/emulated/0/games</string>
-    <string name="save_state_info_slot_is_empty">Ranura vacia</string>
-    <string name="save_state_info_game_save_n">Juego guardado en %d</string>
-    <string name="save_state_info_global_save_n">Guardado global %d</string>
-    <string name="save_state_info_quick_save">Guardado rápido</string>
-    <string name="settings_osd_show_show_resolution">Mostrar resolución</string>
-    <string name="settings_summary_osd_show_resolution">Muestra la resolución a la que se está corriendo el juego en la esquina superior derecha de la pantalla.</string>
-    <string name="settings_summary_display_stretch">Estira la pantalla activa para llenar la pantalla.</string>
-    <string name="settings_display_stretch">Estirar para rellenar</string>
-    <string name="settings_category_global">Configuración Global</string>
-    <string name="settings_category_display">Mostrar configuración en Pantalla</string>
-    <string name="settings_category_audio">Configuración de Audio</string>
-    <string name="settings_category_console">Configuración de consola</string>
-    <string name="settings_category_cpu">Configuración de CPU</string>
-    <string name="settings_category_gpu">Configuración de GPU</string>
-    <string name="settings_category_logging">Configuración de registro</string>
-    <string name="dialog_done">Terminado</string>
-    <string name="dialog_touchscreen_controller_type">Tipo de control de pantalla táctil</string>
-    <string name="dialog_touchscreen_controller_opacity">Opacidad del control de pantalla táctil</string>
-    <string name="dialog_touchscreen_controller_buttons">Botones del control de pantalla táctil</string>
-    <string name="dialog_touchscreen_controller_settings">Configuración del control de pantalla táctil</string>
-    <string name="settings_summary_console_tty_output">Registra mensajes de depuración de los juegos.</string>
-    <string name="action_show_game_list">Vista por lista</string>
-    <string name="action_show_game_grid">Vista por grilla</string>
-    <string name="settings_touch_gliding">Toque deslizamiento</string>
-    <string name="settings_summary_touch_gliding">Le permite presionar varios botones frontales del control arrastrando el dedo por la pantalla. </string>
-    <string name="menu_game_list_entry_game_properties">Propiedades del Juego</string>
-    <string name="emulation_activity_change_disc_select_new_file">Seleccionar nuevo archivo...</string>
-    <string name="settings_achievements_enable">Habilitar RetroAchievements</string>
-    <string name="settings_summary_achievements_enable">Cuando está habilitado y logueado, DuckStation buscará logros al iniciarse.</string>
-    <string name="settings_achievements_challenge_mode">Habilitar modo Hardcore</string>
-    <string name="settings_summary_achievements_challenge_mode">Modo de Desafío. Desactiva el estado de guardado, los trucos y las funciones de ralentización, pero recibes el doble de puntos de logros. No se puede alternar en el juego.</string>
-    <string name="settings_achievements_rich_presence">Habilitar Rich Presence</string>
-    <string name="settings_summary_achievements_rich_presence">La información de Rich presence se recopilará y enviará información al servidor donde sea compatible</string>
-    <string name="settings_achievements_username">Nombre de Usuario</string>
-    <string name="settings_achievements_token_generation_time">Tiempo de generación del Token</string>
-    <string name="settings_achievements_login">Inicio de sesión</string>
-    <string name="settings_summary_achievements_login">Inicia sesión en tu cuenta para registrar logros.</string>
-    <string name="settings_achievements_register">Registro</string>
-    <string name="settings_summary_achievements_register">Abre un enlace para crear una nueva cuenta.</string>
-    <string name="settings_achievements_logout">Cerrar sesión</string>
-    <string name="settings_summary_achievements_logout">Cierra sesión en su cuenta. No se registrarán nuevos logros.</string>
-    <string name="settings_achievements_view_profile">Ver Perfil</string>
-    <string name="settings_summary_achievements_view_profile">Abre un enlace a tu perfil.</string>
-    <string name="settings_achievements_test_mode">Habilitar el modo Test</string>
-    <string name="settings_summary_achievements_test_mode">Cuando está habilitado, DuckStation asumirá que todos los logros están bloqueados y no enviará notificaciones de desbloqueo al servidor.</string>
-    <string name="settings_achievements_use_first_disc_from_playlist">Usar el primer disco de la Lista</string>
-    <string name="settings_summary_achievements_use_first_disc_from_playlist">Cuando está habilitado, el primer disco de una lista se utilizará para los logros, independientemente del disco que esté activo.</string>
-    <string name="achievement_settings_login_title">Inicio de sesión en RetroAchievements</string>
-    <string name="achievement_settings_login_help">Ingrese el nombre de usuario y password de retroachievements.org. Su contraseña no será guardada en DuckStation, en su lugar se generará y se utilizará un token de acceso.</string>
-    <string name="achievement_settings_login_username_hint">Usuario</string>
-    <string name="achievement_settings_login_password_hint">Contraseña</string>
-    <string name="achievement_settings_login_login_button">Loguearse</string>
-    <string name="achievement_settings_login_cancel_button">Cancelar</string>
-    <string name="achievement_settings_login_failed">Fallo al iniciar sesión. Chequear que el nombre de usuario y contraseña estén bien escritos e intentelo nuevamente.</string>
-    <string name="achievement_points_format_string">%d puntos</string>
-    <string name="achievement_summary_format_string">Has desbloqueado %1$d de %2$d logros y has obtenido %3$d de %4$d puntos posibles.</string>
-    <string name="achievement_title_challenge_mode_format_string">%s (Modo Hardcore)</string>
-    <string name="settings_achievements_disclaimer">DuckStation utiliza RetroAchievements (retroachievements.org) como base de datos de logros y para realizar un seguimiento del progreso.</string>
-    <string name="settings_achievements_confirm_logout_title">Confirmar cierre de sesión</string>
-    <string name="settings_achievements_confirm_logout_message">Después de cerrar la sesión, no se desbloquearán más logros hasta que vuelva a iniciar sesión. Los logros desbloqueados no se perderán.</string>
-    <string name="controller_binding_device_for_vibration">Dispositivo para vibración</string>
-    <string name="controller_settings_tab_settings">Configuración</string>
-    <string name="controller_settings_tab_hotkeys">Hotkeys</string>
-    <string name="controller_settings_category_button_bindings">Asignación de botones</string>
-    <string name="controller_settings_category_axis_bindings">Asignación de ejes</string>
-    <string name="controller_settings_category_settings">Configuración</string>
-    <string name="controller_settings_category_touchscreen_controller">Control de pantalla táctil</string>
-    <string name="controller_settings_category_ports">Puertos</string>
-    <string name="controller_settings_main_port_format">Puerto %d</string>
-    <string name="controller_settings_sub_port_format">Puerto %1$d%2$c</string>
-    <string name="action_switch_view">Cambiar vista</string>
-    <string name="title_activity_memory_card_editor">Editor de Tarjeta de Memoria</string>
-    <string name="action_memory_card_editor">Editar Tarjeta de Memoria</string>
-    <string name="action_memory_card_editor_import_card">Importar Tarjeta</string>
-    <string name="action_memory_card_editor_open_card">Abrir Tarjeta</string>
-    <string name="action_memory_card_editor_new_card">Nueva Tarjeta</string>
-    <string name="action_memory_card_editor_format_card">Formatear Tarjeta</string>
-    <string name="action_memory_card_editor_delete_card">Borrar Tarjeta</string>
-    <string name="memory_card_editor_no_cards_found">No se encontraron tarjetas de memoria.</string>
-    <string name="memory_card_editor_card_already_open">Esta tarjeta ya está abierta.</string>
-    <string name="memory_card_editor_failed_to_open_card">Error al abrir o leer la tarjeta de memoria.</string>
-    <string name="memory_card_editor_must_have_at_least_two_cards_to_copy">Debe tener al menos dos tarjetas abiertas para copiar.</string>
-    <string name="memory_card_editor_copy_save_to">Copiar %s a...</string>
-    <string name="memory_card_editor_select_card">Seleccionar tarjeta</string>
-    <string name="memory_card_editor_error">Error</string>
-    <string name="memory_card_editor_copy_insufficient_blocks">Este archivo requiere %1$d bloques, pero solo tiene %2$d bloques libres.</string>
-    <string name="memory_card_editor_copy_already_exists">El archivo \'%s\' ya existe en la tarjeta de destino.</string>
-    <string name="memory_card_editor_copy_read_failed">Error al leer el archivo \'%s\' de la tarjeta seleccionada.</string>
-    <string name="memory_card_editor_copy_write_failed">Error al escribir el archivo \'%s\' en la tarjeta de destino.</string>
-    <string name="memory_card_editor_copy_success">Copiado \'%1$s\' a \'%2$s\'.</string>
-    <string name="memory_card_editor_delete_confirm">¿Estás seguro de borrar el estado guardado \'%s\'?</string>
-    <string name="memory_card_editor_delete_success">Borrado estado guardado \'%s\'.</string>
-    <string name="memory_card_editor_delete_failed">Error al eliminar el archivo \'%s\'.</string>
-    <string name="memory_card_editor_no_card_selected">No se ha seleccionado una tarjeta.</string>
-    <string name="memory_card_editor_import_failed">Error al importar la tarjeta de memoria. Puede que no sea un formato compatible.</string>
-    <string name="memory_card_editor_delete_card_confirm_message">La tarjeta de memoria \'%s\' se eliminará y no se podra recuperar. ¿Estás seguro de eliminarlo?</string>
-    <string name="memory_card_editor_delete_card_failed">Fallo al borrar \'%s\'.</string>
-    <string name="memory_card_editor_delete_card_success">Tarjeta borrada \'%s\'.</string>
-    <string name="memory_card_editor_format_card_confirm_message">La tarjeta de memoria \'%s\' será formateada borrando todos los estados guardados. ¿Estás seguro de formatearlo?</string>
-    <string name="memory_card_editor_format_card_failed">Error al formatear \'%s\'.</string>
-    <string name="memory_card_editor_format_card_success">Tarjeta formateada \'%s\'.</string>
-    <string name="memory_card_editor_import_card_confirm_message">La importación de \'%1$s\' eliminará todos los archivos guardados en \'%2$s\'. ¿Deseas continuar?</string>
-    <string name="memory_card_editor_import_card_read_failed">Error al leer \'%s\'.</string>
-    <string name="memory_card_editor_import_card_failed">Error al importar la tarjeta \'%s\'. Puede que no sea un formato compatible.</string>
-    <string name="memory_card_editor_import_card_success">Tarjeta importada \'%s\'.</string>
-    <string name="menu_game_list_entry_choose_cover_image">Selecciona una imagen de tapa</string>
-    <string name="controller_settings_vibration_unsupported">El dispositivo seleccionado no soporta vibración.</string>
-    <string name="controller_settings_automatic_mapping">Realizar mapeo automático</string>
-    <string name="controller_settings_summary_automatic_mapping">Intenta vincular automáticamente todos los botones/ejes a un control conectado.</string>
-    <string name="controller_settings_clear_controller_bindings">Limpiar asignaciones</string>
-    <string name="controller_settings_summary_clear_controller_bindings">Desvincula todos los botones/ejes de este control.</string>
-    <string name="controller_settings_clear_controller_bindings_confirm">¿Está seguro de que desea borrar todas las asignaciones? Esto no se puede revertir.</string>
-    <string name="controller_settings_clear_controller_bindings_done">Todas las asignaciones fueron borradas para el control %d.</string>
-    <string name="controller_auto_mapping_no_devices">No se encontraron dispositivos adecuados. La asignación automática solo admite dispositivos de mando, pero aún puede vincular otros tipos de dispositivos manualmente.</string>
-    <string name="controller_auto_mapping_select_device">Seleccione el dispositivo</string>
-    <string name="controller_auto_mapping_results">Resultados de asignación automática</string>
-    <string name="main_activity_empty_game_list_title">No se encontraron juegos. Agregue un directorio con juegos o seleccione manualmente un archivo.</string>
-    <string name="main_activity_empty_game_list_supported_formats">Formatos admitidos: %s</string>
-    <string name="main_activity_empty_game_list_add_directory">Añadir directorio de juegos</string>
-    <string name="main_activity_empty_game_list_start_file">Iniciar archivo</string>
-    <string name="update_notes_title">Notas de actualización</string>
-    <string name="update_notes_message_version_controller_update">Esta actualización de DuckStation incluye soporte para múltiples controles con vibración y dispositivos vinculantes como teclados/botones de volumen.\n\nDebe volver a re-asignar sus controles, de lo contrario dejarán de funcionar. ¿Quieres hacer esto ahora?</string>
-    <string name="settings_osd_show_show_inputs">Mostrar entrada del control</string>
-    <string name="settings_summary_osd_show_inputs">Muestra el estado actual del control del sistema en la esquina inferior izquierda de la pantalla.</string>
-    <string name="touchscreen_controller_edit_menu">Editar menu</string>
-    <string name="settings_achievements_category">Cuenta</string>
-    <string name="settings_achievements_global_settings">Configuración global</string>
-    <string name="settings_category_achievements">Configuración de logros</string>
-    <string name="settings_multitap_mode">Modo Multitap</string>
-    <string name="emulation_menu_load_state">Cargar partida</string>
-    <string name="emulation_menu_save_state">Guardar partida</string>
-    <string name="emulation_menu_toggle_fast_forward">Activar avance rápido</string>
-    <string name="emulation_menu_achievements">Logros</string>
-    <string name="emulation_menu_patch_codes">Códigos de parche</string>
-    <string name="emulation_menu_change_disc">Cambiar disco</string>
-    <string name="emulation_menu_touchscreen_controller_settings">Configuración del control de pantalla táctil</string>
-    <string name="emulation_menu_toggle_analog_mode">Activar modo de control analógico</string>
-    <string name="emulation_menu_reset_console">Reiniciar consola</string>
-    <string name="emulation_menu_exit_game">Salir del juego</string>
-</resources>
diff --git a/android/app/src/main/res/values-it/arrays.xml b/android/app/src/main/res/values-it/arrays.xml
deleted file mode 100644
index 1fef79048..000000000
--- a/android/app/src/main/res/values-it/arrays.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<resources>
-    <string-array name="settings_console_region_entries">
-        <item>Auto-Rileva</item>
-        <item>NTSC-J (Giappone)</item>
-        <item>NTSC-U (US, Canada)</item>
-        <item>PAL (Europa, Australia)</item>
-    </string-array>
-    <string-array name="settings_cpu_execution_mode_entries">
-        <item>Interprete (Il più lento)</item>
-        <item>Cached Interpreter (Più veloce)</item>
-        <item>Recompiler (Il più veloce)</item>
-    </string-array>
-    <string-array name="settings_cpu_fastmem_mode_entries">
-        <item>Disabilitato (Il più lento)</item>
-        <item>MMap (Hardware, il più veloce, Solo 64-Bit)</item>
-        <item>LUT (Più veloce)</item>
-    </string-array>
-    <string-array name="gpu_renderer_entries">
-        <item>Hardware (OpenGL)</item>
-        <item>Hardware (Vulkan)</item>
-        <item>Software</item>
-    </string-array>
-    <string-array name="settings_gpu_resolution_scale_entries">
-        <item>1x</item>
-        <item>2x</item>
-        <item>3x (per 720p)</item>
-        <item>4x</item>
-        <item>5x (per 1080p)</item>
-        <item>6x (per 1440p)</item>
-        <item>7x</item>
-        <item>8x</item>
-        <item>9x (per 4K)</item>
-        <item>10x</item>
-        <item>11x</item>
-        <item>12x</item>
-        <item>13x</item>
-        <item>14x</item>
-        <item>15x</item>
-        <item>16x</item>
-    </string-array>
-    <string-array name="settings_display_crop_mode_entries">
-        <item>None</item>
-        <item>Solo area di Overscan</item>
-        <item>Tutti i bordi</item>
-    </string-array>
-    <string-array name="settings_display_aspect_ratio_names">
-        <item>Auto (Game Native)</item>
-        <item>Auto (Match Display)</item>
-        <item>Custom</item>
-        <item>4:3</item>
-        <item>16:9</item>
-        <item>19:9</item>
-        <item>20:9</item>
-        <item>PAR 1:1</item>
-    </string-array>
-    <string-array name="settings_gpu_texture_filter_names">
-        <item>Nearest-Neighbor</item>
-        <item>Bilineare</item>
-        <item>Bilineare (No Blending Bordi)</item>
-        <item>JINC2</item>
-        <item>JINC2 (No Blending Bordi)</item>
-        <item>xBR</item>
-        <item>xBR (No Blending Bordi)</item>
-    </string-array>
-    <string-array name="settings_controller_type_entries">
-        <item>None</item>
-        <item>Controller Digitale (Gamepad)</item>
-        <item>Controller Analogico (DualShock)</item>
-        <item>Analog Joystick</item>
-        <item>NeGcon</item>
-        <item>GunCon</item>
-    </string-array>
-    <string-array name="settings_memory_card_mode_entries">
-        <item>No Memory Card</item>
-        <item>Condivisa fra tutti i giochi</item>
-        <item>MC separata per ogni gioco (Codice Gioco)</item>
-        <item>MC separata per ogni gioco (Titolo Gioco)</item>
-    </string-array>
-    <string-array name="settings_cdrom_read_speedup_entries">
-        <item>Nessuna Velocità Doppia)</item>
-        <item>2x (Velocità Quadrupla</item>
-        <item>3x (Velocità 6x)</item>
-        <item>4x (Velocità 8x)</item>
-        <item>5x (Velocità 10x)</item>
-        <item>6x (Velocità 12x)</item>
-        <item>7x (Velocità 14x)</item>
-        <item>8x (Velocità 16x)</item>
-        <item>9x (Velocità 18x)</item>
-        <item>10x (Velocità 20x)</item>
-    </string-array>
-    <string-array name="settings_touchscreen_controller_view_entries">
-        <item>Nessuno</item>
-        <item>Pad Digitale</item>
-        <item>Pad Analogico Singolo</item>
-        <item>Pad Analogico Doppio</item>
-        <item>Lightgun</item>
-    </string-array>
-    <string-array name="settings_audio_backend_entries">
-        <item>Null (No Output)</item>
-        <item>Cubeb</item>
-        <item>OpenSL ES (Raccomandato)</item>
-    </string-array>
-    <string-array name="settings_audio_buffer_size_entries">
-        <item>1024 Fotogrammi (23.22ms)</item>
-        <item>2048 Fotogrammi (46.44ms, Raccomandato)</item>
-        <item>3072 Fotogrammi (69.66ms)</item>
-        <item>4096 Fotogrammi (92.88ms)</item>
-    </string-array>
-    <string-array name="settings_log_level_entries">
-        <item>None</item>
-        <item>Error</item>
-        <item>Warning</item>
-        <item>Performance Warnings</item>
-        <item>Information</item>
-        <item>Verbose</item>
-        <item>Developer</item>
-        <item>Profile</item>
-        <item>Debug</item>
-        <item>Trace</item>
-    </string-array>
-    <string-array name="settings_tabs">
-        <item>Generali</item>
-        <item>Display</item>
-        <item>Audio</item>
-        <item>Miglioramenti</item>
-        <item>Achievements</item>
-        <item>Avanzate</item>
-    </string-array>
-    <string-array name="settings_gpu_msaa_entries">
-        <item>Disabilitato</item>
-        <item>2x MSAA</item>
-        <item>4x MSAA</item>
-        <item>8x MSAA</item>
-        <item>2x SSAA</item>
-        <item>4x SSAA</item>
-        <item>8x SSAA</item>
-    </string-array>
-    <string-array name="settings_advanced_display_fps_limit_entries">
-        <item>Senza Limite (Mostra tutti i fotogrammi)</item>
-        <item>10 FPS</item>
-        <item>15 FPS</item>
-        <item>30 FPS</item>
-        <item>45 FPS</item>
-        <item>60 FPS</item>
-        <item>75 FPS</item>
-        <item>90 FPS</item>
-    </string-array>
-    <string-array name="settings_emulation_speed_entries">
-        <item>Senza Limite</item>
-        <item>10% [6 FPS (NTSC) / 5 FPS (PAL)]</item>
-        <item>20% [12 FPS (NTSC) / 10 FPS (PAL)]</item>
-        <item>30% [18 FPS (NTSC) / 15 FPS (PAL)]</item>
-        <item>40% [24 FPS (NTSC) / 20 FPS (PAL)]</item>
-        <item>50% [30 FPS (NTSC) / 25 FPS (PAL)]</item>
-        <item>60% [36 FPS (NTSC) / 30 FPS (PAL)]</item>
-        <item>70% [42 FPS (NTSC) / 35 FPS (PAL)]</item>
-        <item>80% [48 FPS (NTSC) / 40 FPS (PAL)]</item>
-        <item>90% [54 FPS (NTSC) / 45 FPS (PAL)]</item>
-        <item>100% [60 FPS (NTSC) / 50 FPS (PAL), Default]</item>
-        <item>125% [75 FPS (NTSC) / 62 FPS (PAL)]</item>
-        <item>150% [90 FPS (NTSC) / 75 FPS (PAL)]</item>
-        <item>175% [105 FPS (NTSC) / 87 FPS (PAL)]</item>
-        <item>200% [120 FPS (NTSC) / 100 FPS (PAL)]</item>
-        <item>250% [150 FPS (NTSC) / 125 FPS (PAL)]</item>
-        <item>300% [180 FPS (NTSC) / 150 FPS (PAL)]</item>
-        <item>350% [210 FPS (NTSC) / 175 FPS (PAL)]</item>
-        <item>400% [240 FPS (NTSC) / 200 FPS (PAL)]</item>
-        <item>450% [270 FPS (NTSC) / 225 FPS (PAL)]</item>
-        <item>500% [300 FPS (NTSC) / 250 FPS (PAL)]</item>
-        <item>600% [360 FPS (NTSC) / 300 FPS (PAL)]</item>
-        <item>700% [420 FPS (NTSC) / 350 FPS (PAL)]</item>
-        <item>800% [480 FPS (NTSC) / 400 FPS (PAL)]</item>
-        <item>900% [540 FPS (NTSC) / 450 FPS (PAL)]</item>
-        <item>1000% [600 FPS (NTSC) / 500 FPS (PAL)]</item>
-    </string-array>
-    <string-array name="settings_advanced_cpu_overclock_entries">
-        <item>25% (8MHz)</item>
-        <item>50% (16MHz)</item>
-        <item>75% (24MHz)</item>
-        <item>100% (33MHz, Default)</item>
-        <item>125% (41MHz)</item>
-        <item>150% (49MHz)</item>
-        <item>175% (57MHz)</item>
-        <item>200% (66MHz)</item>
-        <item>225% (74MHz)</item>
-        <item>250% (82MHz)</item>
-        <item>275% (90MHz)</item>
-        <item>300% (99MHz)</item>
-        <item>350% (115MHz)</item>
-        <item>400% (132MHz)</item>
-        <item>450% (148MHz)</item>
-        <item>500% (165MHz)</item>
-        <item>500% (165MHz)</item>
-        <item>600% (198MHz)</item>
-        <item>700% (231MHz)</item>
-        <item>800% (264MHz)</item>
-        <item>900% (297MHz)</item>
-        <item>1000% (330MHz)</item>
-    </string-array>
-    <string-array name="settings_emulation_screen_orientation_entries">
-        <item>Usa Impostazione Dispositivo</item>
-        <item>Verticale</item>
-        <item>Orizzontale</item>
-        <item>Sensor Based</item>
-    </string-array>
-</resources>
diff --git a/android/app/src/main/res/values-it/strings.xml b/android/app/src/main/res/values-it/strings.xml
deleted file mode 100644
index edcd29639..000000000
--- a/android/app/src/main/res/values-it/strings.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<resources>
-    <string name="app_name">DuckStation</string>
-    <string name="action_settings">Impostazioni</string>
-    <string name="title_activity_settings">Impostazioni</string>
-    <string name="settings_console_region">Regione Console</string>
-    <string name="settings_console_tty_output">Abilita TTY Output</string>
-    <string name="settings_console_fast_boot">Avvio Rapido</string>
-    <string name="settings_osd_show_messages">Mostra Messaggi</string>
-    <string name="settings_osd_show_speed">Mostra Velocità Emulazione</string>
-    <string name="settings_osd_show_show_fps">Mostra la frequenza dei fotogrammi del gioco</string>
-    <string name="settings_osd_show_show_vps">Mostra FPS di visualizzazione</string>
-    <string name="settings_cpu_execution_mode">Modalità di Esecuzione CPU</string>
-    <string name="settings_gpu_renderer">GPU Renderer</string>
-    <string name="settings_gpu_resolution_scale">Scala di Risoluzione</string>
-    <string name="title_activity_emulation">EmulationActivity</string>
-</resources>
diff --git a/android/app/src/main/res/values-night/colors.xml b/android/app/src/main/res/values-night/colors.xml
deleted file mode 100644
index 6801baa94..000000000
--- a/android/app/src/main/res/values-night/colors.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <color name="colorPrimary">#000000</color>
-    <color name="colorPrimaryDark">#000000</color>
-    <color name="colorAccent">#03A9F4</color>
-    <color name="colorNavigation">#000000</color>
-
-    <color name="black_overlay">#66000000</color>
-    <color name="fab_background">#222222</color>
-
-    <color name="emulationActivityPauseBackground">#cc000000</color>
-</resources>
diff --git a/android/app/src/main/res/values-nl/arrays.xml b/android/app/src/main/res/values-nl/arrays.xml
deleted file mode 100644
index 4f0cdfedb..000000000
--- a/android/app/src/main/res/values-nl/arrays.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<resources>
-    <string-array name="settings_console_region_entries">
-        <item>Automatisch Detecteren</item>
-        <item>NTSC-J (Japan)</item>
-        <item>NTSC-U (VS)</item>
-        <item>PAL (Europa, Australië)</item>
-    </string-array>
-    <string-array name="settings_cpu_execution_mode_entries">
-        <item>Interpreter (Langzaamst)</item>
-        <item>Cached Interpreter (Sneller)</item>
-        <item>Recompiler (Snelst)</item>
-    </string-array>
-    <string-array name="settings_cpu_fastmem_mode_entries">
-        <item>Uitgeschakeld (Langzaamst)</item>
-        <item>MMap (Hardware, Snelst, Alleen 64-Bit)</item>
-        <item>LUT (Sneller)</item>
-    </string-array>
-    <string-array name="gpu_renderer_entries">
-        <item>Hardware (OpenGL)</item>
-        <item>Hardware (Vulkan)</item>
-        <item>Software</item>
-    </string-array>
-    <string-array name="settings_gpu_resolution_scale_entries">
-        <item>1x</item>
-        <item>2x</item>
-        <item>3x (voor 720p)</item>
-        <item>4x</item>
-        <item>5x (voor 1080p)</item>
-        <item>6x (voor 1440p)</item>
-        <item>7x</item>
-        <item>8x</item>
-        <item>9x (voor 4K)</item>
-        <item>10x</item>
-        <item>11x</item>
-        <item>12x</item>
-        <item>13x</item>
-        <item>14x</item>
-        <item>15x</item>
-        <item>16x</item>
-    </string-array>
-    <string-array name="settings_display_crop_mode_entries">
-        <item>Geen</item>
-        <item>Alleen Overscangebied</item>
-        <item>Alle Randen</item>
-    </string-array>
-    <string-array name="settings_display_aspect_ratio_names">
-        <item>Auto (Game Native)</item>
-        <item>Auto (Match Display)</item>
-        <item>Custom</item>
-        <item>4:3</item>
-        <item>16:9</item>
-        <item>19:9</item>
-        <item>20:9</item>
-        <item>PAR 1:1</item>
-    </string-array>
-    <string-array name="settings_gpu_texture_filter_names">
-        <item>Dichtstbijzijde</item>
-        <item>Bilineair</item>
-        <item>Bilineair (Geen Edge Blending)</item>
-        <item>JINC2</item>
-        <item>JINC2 (Geen Edge Blending)</item>
-        <item>xBR</item>
-        <item>xBR (Geen Edge Blending)</item>
-    </string-array>
-    <string-array name="settings_controller_type_entries">
-        <item>None</item>
-        <item>Digitale Controller (Gamepad)</item>
-        <item>Analoge Controller (DualShock)</item>
-        <item>Analog Joystick</item>
-        <item>NeGcon</item>
-        <item>GunCon</item>
-    </string-array>
-    <string-array name="settings_memory_card_mode_entries">
-        <item>Geen Geheugenkaart</item>
-        <item>Gedeeld Tussen Alle Spellen</item>
-        <item>Aparte Kaart Per Spel (Spelcode)</item>
-        <item>Aparte Kaart Per Spel (Speltitel)</item>
-    </string-array>
-    <string-array name="settings_cdrom_read_speedup_entries">
-        <item>Geen (Dubbele Snelheid)</item>
-        <item>2x (Vierdubbele Snelheid)</item>
-        <item>3x (6x Snelheid)</item>
-        <item>4x (8x Snelheid)</item>
-        <item>5x (10x Snelheid)</item>
-        <item>6x (12x Snelheid)</item>
-        <item>7x (14x Snelheid)</item>
-        <item>8x (16x Snelheid)</item>
-        <item>9x (18x Snelheid)</item>
-        <item>10x (20x Snelheid)</item>
-    </string-array>
-    <string-array name="settings_touchscreen_controller_view_entries">
-        <item>Geen</item>
-        <item>Digitale Pad</item>
-        <item>Enekele Analoge Pad</item>
-        <item>Dubbele Analoge Pad</item>
-        <item>Lightgun</item>
-    </string-array>
-    <string-array name="settings_audio_backend_entries">
-        <item>Null (Geen Output)</item>
-        <item>Cubeb</item>
-        <item>OpenSL ES (Aanbevolen)</item>
-    </string-array>
-    <string-array name="settings_audio_buffer_size_entries">
-        <item>1024 Frames (23.22ms)</item>
-        <item>2048 Frames (46.44ms, Recommended)</item>
-        <item>3072 Frames (69.66ms)</item>
-        <item>4096 Frames (92.88ms)</item>
-    </string-array>
-    <string-array name="settings_log_level_entries">
-        <item>Geen</item>
-        <item>Fout</item>
-        <item>Waarschuwing</item>
-        <item>Uitgebreid</item>
-        <item>Prestatie Waarschuwingen</item>
-        <item>Informatie</item>
-        <item>Ontwikkelaar</item>
-        <item>Profiel</item>
-        <item>Debug</item>
-        <item>Trace</item>
-    </string-array>
-    <string-array name="settings_tabs">
-        <item>Algemeen</item>
-        <item>Weergave</item>
-        <item>Audio</item>
-        <item>Verbeteringen</item>
-        <item>Achievements</item>
-        <item>Geavanceerd</item>
-    </string-array>
-    <string-array name="settings_gpu_msaa_entries">
-        <item>Uitgeschakeld</item>
-        <item>2x MSAA</item>
-        <item>4x MSAA</item>
-        <item>8x MSAA</item>
-        <item>2x SSAA</item>
-        <item>4x SSAA</item>
-        <item>8x SSAA</item>
-    </string-array>
-    <string-array name="settings_advanced_display_fps_limit_entries">
-        <item>Onbegrensd (Alle Frames Weergeven)</item>
-        <item>10 FPS</item>
-        <item>15 FPS</item>
-        <item>30 FPS</item>
-        <item>45 FPS</item>
-        <item>60 FPS</item>
-        <item>75 FPS</item>
-        <item>90 FPS</item>
-    </string-array>
-    <string-array name="settings_emulation_speed_entries">
-        <item>Onbegrensd</item>
-        <item>10% [6 FPS (NTSC) / 5 FPS (PAL)]</item>
-        <item>20% [12 FPS (NTSC) / 10 FPS (PAL)]</item>
-        <item>30% [18 FPS (NTSC) / 15 FPS (PAL)]</item>
-        <item>40% [24 FPS (NTSC) / 20 FPS (PAL)]</item>
-        <item>50% [30 FPS (NTSC) / 25 FPS (PAL)]</item>
-        <item>60% [36 FPS (NTSC) / 30 FPS (PAL)]</item>
-        <item>70% [42 FPS (NTSC) / 35 FPS (PAL)]</item>
-        <item>80% [48 FPS (NTSC) / 40 FPS (PAL)]</item>
-        <item>90% [54 FPS (NTSC) / 45 FPS (PAL)]</item>
-        <item>100% [60 FPS (NTSC) / 50 FPS (PAL), Default]</item>
-        <item>125% [75 FPS (NTSC) / 62 FPS (PAL)]</item>
-        <item>150% [90 FPS (NTSC) / 75 FPS (PAL)]</item>
-        <item>175% [105 FPS (NTSC) / 87 FPS (PAL)]</item>
-        <item>200% [120 FPS (NTSC) / 100 FPS (PAL)]</item>
-        <item>250% [150 FPS (NTSC) / 125 FPS (PAL)]</item>
-        <item>300% [180 FPS (NTSC) / 150 FPS (PAL)]</item>
-        <item>350% [210 FPS (NTSC) / 175 FPS (PAL)]</item>
-        <item>400% [240 FPS (NTSC) / 200 FPS (PAL)]</item>
-        <item>450% [270 FPS (NTSC) / 225 FPS (PAL)]</item>
-        <item>500% [300 FPS (NTSC) / 250 FPS (PAL)]</item>
-        <item>600% [360 FPS (NTSC) / 300 FPS (PAL)]</item>
-        <item>700% [420 FPS (NTSC) / 350 FPS (PAL)]</item>
-        <item>800% [480 FPS (NTSC) / 400 FPS (PAL)]</item>
-        <item>900% [540 FPS (NTSC) / 450 FPS (PAL)]</item>
-        <item>1000% [600 FPS (NTSC) / 500 FPS (PAL)]</item>
-    </string-array>
-    <string-array name="settings_advanced_cpu_overclock_entries">
-        <item>25% (8MHz)</item>
-        <item>50% (16MHz)</item>
-        <item>75% (24MHz)</item>
-        <item>100% (33MHz, Default)</item>
-        <item>125% (41MHz)</item>
-        <item>150% (49MHz)</item>
-        <item>175% (57MHz)</item>
-        <item>200% (66MHz)</item>
-        <item>225% (74MHz)</item>
-        <item>250% (82MHz)</item>
-        <item>275% (90MHz)</item>
-        <item>300% (99MHz)</item>
-        <item>350% (115MHz)</item>
-        <item>400% (132MHz)</item>
-        <item>450% (148MHz)</item>
-        <item>500% (165MHz)</item>
-        <item>500% (165MHz)</item>
-        <item>600% (198MHz)</item>
-        <item>700% (231MHz)</item>
-        <item>800% (264MHz)</item>
-        <item>900% (297MHz)</item>
-        <item>1000% (330MHz)</item>
-    </string-array>
-    <string-array name="settings_emulation_screen_orientation_entries">
-        <item>Apparaatinstellingen Gebruiken</item>
-        <item>Portret</item>
-        <item>Landschap</item>
-        <item>Sensor Based</item>
-    </string-array>
-</resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values-nl/strings.xml b/android/app/src/main/res/values-nl/strings.xml
deleted file mode 100644
index 8c17c4277..000000000
--- a/android/app/src/main/res/values-nl/strings.xml
+++ /dev/null
@@ -1,152 +0,0 @@
-<resources>
-    <string name="app_name">DuckStation</string>
-    <string name="action_settings">Instellingen</string>
-    <string name="title_activity_settings">Instellingen</string>
-    <string name="settings_console_region">Console Gebied</string>
-    <string name="settings_console_tty_output">TTY Output Aanzetten</string>
-    <string name="settings_console_fast_boot">Snel Starten</string>
-    <string name="settings_osd_show_messages">Toon Berichten</string>
-    <string name="settings_osd_show_speed">Toon Emulatiesnelheid</string>
-    <string name="settings_osd_show_show_fps">Framesnelheid van games weergeven</string>
-    <string name="settings_osd_show_show_vps">Toon weergave FPS</string>
-    <string name="settings_cpu_execution_mode">CPU Executie Modus</string>
-    <string name="settings_gpu_renderer">GPU Renderer</string>
-    <string name="settings_gpu_resolution_scale">Resolutie Schaal</string>
-    <string name="title_activity_emulation">Emulatie Activiteit</string>
-    <string name="settings_emulation_speed">Emulatie Snelheid</string>
-    <string name="settings_fast_forward_speed">Doorspoelsnelheid</string>
-    <string name="settings_save_state_on_exit">Staat Opslaan Bij Afsluiten</string>
-    <string name="settings_emulation_screen_orientation">Emulatie Schermorientatie</string>
-    <string name="settings_load_patch_codes">Laad Patch Codes</string>
-    <string name="settings_summary_save_state_on_exit">Slaat automatisch de emulator staat op bij afsluiten. Je kan dan de volgende keer verder vanaf waar je gebleven was.</string>
-    <string name="settings_summary_load_patch_codes"><![CDATA[Laad patch codes van cheats/<game name>.cht in PCSXR formaat. Codes kunnen aan- en uitgeschakeld worden in-game.]]></string>
-    <string name="settings_apply_compatibility_settings">Pas Compatibiliteitsinstellingen Toe</string>
-    <string name="settings_summary_apply_compatibility_settings">Schakelt automatisch verbeteringen uit wanneer ze niet door spellen ondersteund worden.</string>
-    <string name="settings_summary_video_sync">Schakel deze optie in om DuckStation\'s verversingssnelheid te synchroniseren met je scherm. VSync is automatisch uitegeschakeld wanneer dit niet mogelijk is (bijvoorbeeld wanneer er niet op 100% snelheid gespeeld wordt).</string>
-    <string name="settings_video_sync">Video Sync</string>
-    <string name="settings_cpu_overclocking">CPU Overclocken</string>
-    <string name="settings_cdrom_region_check">CD-ROM Regio Check</string>
-    <string name="settings_summary_cdrom_region_check">Voorkomt dat discs uit incorrecte regio\'s geladen worden door de emulator. Over het algemeen veilig om uit te schakelen.</string>
-    <string name="settings_cdrom_preload_image_to_ram">CD-ROM Image Voorladen naar RAM</string>
-    <string name="settings_summary_preload_image_to_ram">Laadt de image van het spel in RAM. Handig voor netwerkpaden die instabiel kunnen worden tijdens het spelen van het spelen. Kan soms ook haperingen voorkomen wanneer spellen audio instellen.</string>
-    <string name="settings_pgxp_vertex_cache">PGXP Vertex Cache</string>
-    <string name="settings_summary_pgxp_vertex_cache">Gebruikt schermcoordinaten als terugval wanneer vertices niet door het geheugen getraceerd kunnen worden. Kan PGXP compatibiliteit verbeteren.</string>
-    <string name="settings_pgxp_cpu_mode">PGXP CPU Modus</string>
-    <string name="settings_summary_pgxp_cpu_mode">Probeert vertex manupulatie te traceren door de CPU. Sommige spellen vereisen deze optie om PGXP te gebruiken. Heel langzaam, en incompatibel met de recompiler.</string>
-    <string name="settings_cpu_recompiler_icache">CPU Recompiler ICache</string>
-    <string name="settings_summary_cpu_recompiler_icache">Bepaalt of de CPU\'s instructie cache gesimuleerd wordt in de recompiler. Verbetert precisie, maar kost een klein beetje prestatie. Als games te snel afspelen, probeer dan deze optie aan te zetten.</string>
-    <string name="settings_cpu_recompiler_fastmem">CPU Recompiler Fast Memory Access</string>
-    <string name="settings_summary_cpu_recompiler_fastmem">Maakt geheugentoegang van het gesimuleerde systeem meer efficient door page faults en backpatching te gebruiken. Schakel dit uit als het instabiel is op je systeem.</string>
-    <string name="settings_presented_frame_limit">Getoonde Frame Begrenzing</string>
-    <string name="settings_logging_level">Logging Niveau</string>
-    <string name="settings_log_to_file">Log Naar Bestand</string>
-    <string name="settings_summary_log_to_file">Schrijft de log naar duckstation.log in je gebruikersfolder. Gebruik dit alleen voor debuggen, want het kan vertraagt de emulatie.</string>
-    <string name="settings_log_to_logcat">Log Naar Logcat</string>
-    <string name="settings_summary_log_to_logcat">Schrijft logberichten naar de Android berichtenlog. Alleen nuttig wanneer gebruikt in combinatie met een computer met adb.</string>
-    <string name="settings_volume">Volume</string>
-    <string name="settings_summary_volume">Bedient het volume van de emulator.</string>
-    <string name="settings_mute_all_sound">Alles Dempen</string>
-    <string name="settings_summary_mute_all_sound">Voorkomt dat de emulator geluid produceert.</string>
-    <string name="settings_mute_cd_audio">CD Audio Dempen</string>
-    <string name="settings_summary_mute_cd_audio">Dempt zowel CD-DA en XA audio van de CD-ROM. Kan gebruikt worden om achtergrondmuziek uit te schakelen in sommige spellen.</string>
-    <string name="settings_audio_backend">Audio Backend</string>
-    <string name="settings_audio_buffer_size">Audio Buffer Grootte</string>
-    <string name="settings_summary_audio_buffer_size">Bepaald de vertraging tussen de audiogeneratie en de output van de speakers. Kleinere waardes kunnen vertraging verkleinen, maar variaties in emulatiesnelheid kunnen voor haperingen zorgen.</string>
-    <string name="settings_audio_sync">Audio Sync</string>
-    <string name="settings_summary_audio_sync">Beperkt de emulatiesnelheid gebaseerd op hoe snel de audio backend samples opvraagt. Dit helpt om ruis en kraken te voorkomen wanneer de emulator te snel gaat. Wordt automatisch uitgeschakeld wanneer er niet op 100% snelheid afgespeeld wordt.</string>
-    <string name="settings_controller_type">Controller Type</string>
-    <string name="settings_enable_analog_mode_on_reset">Analoge Modus Bij Reset.</string>
-    <string name="settings_touchscreen_controller_view">Touchscreen Controller Beeld</string>
-    <string name="settings_auto_hide_touchscreen_controller">Automatisch Touchscreen Controller Verbergen</string>
-    <string name="settings_summary_auto_hide_touchscreen_controller">Verbergt de touchscreen controller wanneer een externe controller gedetecteerd wordt.</string>
-    <string name="settings_vibrate_on_press">Vibreren Bij Indrukking</string>
-    <string name="settings_summary_vibrate_on_press">Schakelt een kleine trilling in wanneer een touchscreenknop ingedrukt wordt. Vereist dat \"Trillen bij aanraking\" ingeschakeld is op je apparaat.</string>
-    <string name="settings_enable_vibration">Vibratie Inschakelen</string>
-    <string name="settings_summary_enable_vibration">Vibreert de telefoon wanneer de spel dit voor een controller doet.</string>
-    <string name="settings_memory_card_1_type">Geheugenkaart 1 Type</string>
-    <string name="settings_memory_card_2_type">Geheugenkaart 2 Type</string>
-    <string name="settings_crop_mode">Knip Modus</string>
-    <string name="settings_aspect_ratio">Schermverhouding</string>
-    <string name="settings_linear_upscaling">Lineaire Opschaling</string>
-    <string name="settings_integer_upscaling">Integer Opschaling</string>
-    <string name="settings_summary_linear_upscaling">Interpoleert tussen pixels wanneer het beeld opgeschaald wordt naar het apparaat.</string>
-    <string name="settings_summary_integer_upscaling">Voegt randen toe aan het beeld zodat de verhouding tussen pixels op het apparaat, en pixels van de console een geheel getal is. Kan voor een scherper beeld zorgen in sommige 2D games.</string>
-    <string name="settings_summary_osd_show_messages">Toont berichten op het scherm wanneer gebeurtenissen als het opslaan/laden van een spelstatus, schermafbeeldingen maken, etc. gebeuren.</string>
-    <string name="settings_summary_osd_show_speed">Zet een doelsnelheid voor de emulatie. Het is niet gegarandeerd dat deze snelheid behaald wordt. Zo niet, dan gaat de emulator zo snel als hij kan.</string>
-    <string name="settings_summary_osd_show_fps">Toont de interne framesnelheid van het spel in de rechter bovenhoek van het scherm.</string>
-    <string name="settings_summary_osd_show_vps">Toont het aantal frames (of v-syncs) van het systeem in de rechter bovenhoek van het scherm.</string>
-    <string name="settings_cdrom_read_speedup">CD-ROM Leesversnelling</string>
-    <string name="settings_summary_cdrom_read_speedup">Versnelt de CD-ROM leessnelheid met de gegeven factor. Alleen van toepassing op dubbele-snelheids leesoperaties, en genegeerd wanneer audio afspeelt. Kan laadsnelheden vergroten bij sommige spellen, maar kan andere spellen niet goed laten werken.</string>
-    <string name="settings_summary_console_fast_boot">Slaat de BIOS intro over, en start direct het spel. Over het algemeen veilig om in te schakelen, maar sommige spellen werken niet goed meer.</string>
-    <string name="settings_msaa">Multisample Antialiasing</string>
-    <string name="settings_true_color">True Color Rendering (24-bit, schakelt dithering uit)</string>
-    <string name="settings_summary_true_color">Dit produceert mooiere gradienten, maar kan sommige kleuren een klein beetje verkleuren. Uitschakelen schakelt ook dithering uit. De meeste spellen zijn compatibel met deze optie.</string>
-    <string name="settings_scaled_dithering">Geschaalde Dithering (schaal dither patrron naar resolutie)</string>
-    <string name="settings_summary_scaled_dithering">Schaalt het dither patroon naar de resolutieschaal van de geëmuleerde GPU. Dit maakt het ditherpatroon minder duidelijk bij hogere resoluties. Over het algemeen veilig in te schakelen. Werkt alleen bij hardware renderers.</string>
-    <string name="settings_disable_interlacing">Interlacing Uitschakelen(forceer progressieve render/scan)</string>
-    <string name="settings_summary_disable_interlacing">Forceert het renderen en weergeven van frames naar de progressieve modus. Dit verwijdert het \"kam\" effect gezien in 480i spellen door ze in 480p te rendreren. Meestal veilig om in te schakelen.</string>
-    <string name="settings_texture_filtering">Texture Filtering</string>
-    <string name="settings_force_ntsc_timings">Forceer NTSC Timings (60hz-on-PAL)</string>
-    <string name="settings_summary_force_ntsc_timings">Gebruikt NTSC frame timings wanneer de console in PAL modus is. Dwingt PAL spellen om in 60hz af te spelen.</string>
-    <string name="settings_widescreen_hack">Widescreen Hack</string>
-    <string name="settings_summary_widescreen_hack">Schaalt vertex posities in schermruimte op naar een breedbeeldverhouding, wat in essentie het gezichtsveld van 4:3 naar 16:9 verhoogt in 3D spellen. Niet compatibel met alle spellen.</string>
-    <string name="settings_force_4_3_for_24bit">Forceer 4:3 Voor 24-Bit Schermen</string>
-    <string name="settings_summary_force_4_3_for_24bit">Gaat terug naar een 4:3 schermverhouding wanneer 24-bit inhoud weergeven wordt, meestal FMVs.</string>
-    <string name="settings_chroma_smoothing_24bit">Chroma Smoothing Voor 24-Bit Schermen</string>
-    <string name="settings_summary_chrome_smoothing_24bit">Vermindert de blokkerigheid bij kleurtransities van 24-bit inhoud, meestal FMVs. Alleen van toepassing bij hardware renderers.</string>
-    <string name="settings_pgxp_geometry_correction">PGXP Geometry Correction</string>
-    <string name="settings_summary_pgxp_geometry_correction"><![CDATA[Vermindert \"wiebelige\" polygons en \"vervormde\" textures die vaak in PS1 spellen voorkomen. >Werkt alleen met hardware renderers. Mogelijk niet compatibel met alle spellen.]]></string>
-    <string name="settings_pgxp_culling_correction">PGXP Culling Correction</string>
-    <string name="settings_summary_pgxp_culling_correction">Verhoogt de precisie van polygon culling, vermindert het aantal gaten in objecten. Vereist dat \"geometry correction\" ingeschakeld is.</string>
-    <string name="settings_pgxp_texture_correction">PGXP Texture Correction</string>
-    <string name="settings_summary_pgxp_texture_correction">Gebruikt perspectief-correcte interpolatie voor texture coordinaten en kleuren, maakt vervormde textures weer glad. Vereist dat \"geometry correction\" ingeschakeld is.</string>
-    <string name="settings_pgxp_preserve_projection_precision">PGXP Behoud Projectie Precisie</string>
-    <string name="settings_summary_pgxp_preserve_projection_precision">Schakelt extra precisie in voor PGXP. Kan beeld verbeteren in sommige spellen, maar kan andere minder goed laten werken.</string>
-    <string name="menu_main_resume_last_session">Hervat Vorige Sessie</string>
-    <string name="menu_main_start_file">Start Bestand</string>
-    <string name="menu_main_start_bios">Start BIOS</string>
-    <string name="menu_main_edit_game_directories">Bewerk Gamemappen</string>
-    <string name="menu_main_scan_for_new_games">Scan Naar Nieuwe Spellen</string>
-    <string name="menu_main_rescan_all_games">Alle Spellen Opnieuw Scannen</string>
-    <string name="menu_main_import_bios">Importeer BIOS</string>
-    <string name="menu_main_show_version">Toon Versie</string>
-    <string name="menu_main_github_repository">GitHub Repository</string>
-    <string name="menu_main_discord_server">Discord Server</string>
-    <string name="menu_game_list_entry_start_game">Start Spel</string>
-    <string name="menu_game_list_entry_resume_game">Hervat Spel</string>
-    <string name="android_progress_callback_please_wait">Wachten alstublieft...</string>
-    <string name="android_progress_callback_ok">Oké</string>
-    <string name="android_progress_callback_information">Informatie</string>
-    <string name="android_progress_callback_confirmation">Bevestiging</string>
-    <string name="android_progress_callback_yes">Ja</string>
-    <string name="android_progress_callback_no">Nee</string>
-    <string name="emulation_activity_error">Fout</string>
-    <string name="emulation_activity_ok">Oké</string>
-    <string name="emulation_activity_import_patch_codes">Importeer Patch Codes...</string>
-    <string name="emulation_activity_patch_on">(AAN)</string>
-    <string name="emulation_activity_patch_off">(UIT)</string>
-    <string name="emulation_activity_choose_patch_code_file">Kies Een Patch Code Bestand</string>
-    <string name="emulation_activity_failed_to_import_patch_codes">Patch codes importeren mislukt. Selecteer een PCSXR of Libretro formaat bestand.</string>
-    <string name="main_activity_choose_directory">Kies folder</string>
-    <string name="main_activity_error">Fout</string>
-    <string name="main_activity_get_path_from_file_error">Mislukt om het bestand op te halen. Zorg ervoor dat het bestand in de interne/externe opslag is.\n\nTik op de overflow knop in de folderselectie.\nSelecteer "Toon Interne Opslag".\nTik op de menuknop en selecteer uw apparaat of SD kaart.</string>
-    <string name="main_activity_ok">Oké</string>
-    <string name="main_activity_get_path_from_directory_error">Pad van folder ophalen mislukt.Zorg ervoor dat de folder in de interne/externe opslag is.\n\nTik op de overflow knop in de folderselectie.\nSelecteer "Toon Interne Opslag".\nTik op de menuknop en selecteer uw apparaat of SD kaart.</string>
-    <string name="main_activity_external_storage_permissions_error">Toegang tot externe opslag nodig om DuckStation te gebruiken.</string>
-    <string name="main_activity_choose_disc_image">Kies Disc Image</string>
-    <string name="main_activity_missing_bios_image_prompt">Er was geen BIOS image was gevonden in DuckStation\'s bios folder. Wilt u nu een BIOS image importeren?</string>
-    <string name="main_activity_missing_bios_image">Ontbrekende BIOS Image</string>
-    <string name="main_activity_yes">Ja</string>
-    <string name="main_activity_no">Nee</string>
-    <string name="main_activity_choose_bios_image">Kies BIOS Image</string>
-    <string name="main_activity_failed_to_open_bios_image">BIOS image openen mislukt.</string>
-    <string name="main_activity_failed_to_read_bios_image_prefix">\"BIOS image lezen mislukt: \"</string>
-    <string name="main_activity_bios_image_too_large">BIOS-image is te groot. U moet een BIOS-image selecteren, geen game, en deze moet 512 KB groot zijn.</string>
-    <string name="main_activity_invalid_error">Deze BIOS image is ongeldig, of is al geimporteerd.</string>
-    <string name="main_activity_show_version_title">Versie</string>
-    <string name="main_activity_copy">Kopieer</string>
-    <string name="settings_fast_forward_volume">Doorspoel Volume</string>
-    <string name="settings_summary_fast_forward_volume">Bedient het volume van de emulator wanneer het spel sneller afgespeeld wordt.</string>
-    <string name="settings_gpu_thread">Threaded GPU Rendering</string>
-    <string name="settings_summary_gpu_thread">Gebruikt een tweede thread voor het renderen van graphics. Op het moment alleen beschikbaar voor software renderers, maar kan een significante snelheidsverbetering opleveren, en is veilig te gebruiken.</string>
-</resources>
diff --git a/android/app/src/main/res/values-pt-rBR/arrays.xml b/android/app/src/main/res/values-pt-rBR/arrays.xml
deleted file mode 100644
index 21379782a..000000000
--- a/android/app/src/main/res/values-pt-rBR/arrays.xml
+++ /dev/null
@@ -1,264 +0,0 @@
-<resources>
-    <string-array name="settings_console_region_entries">
-        <item>Auto-Detectar</item>
-        <item>NTSC-J (Japão)</item>
-        <item>NTSC-U (US)</item>
-        <item>PAL (Europa, Austrália)</item>
-    </string-array>
-    <string-array name="settings_cpu_execution_mode_entries">
-        <item>Interpretador (Mais Lento)</item>
-        <item>Interpretador Armazenado (Rápido)</item>
-        <item>Recompilador (Mais Rápido)</item>
-    </string-array>
-    <string-array name="settings_cpu_fastmem_mode_entries">
-        <item>Desabilitado (Lento)</item>
-        <item>MMap (Hardware, Mais Rápido, (Dispositivos 64-Bits)</item>
-        <item>LUT (Rápido)</item>
-    </string-array>
-    <string-array name="gpu_renderer_entries">
-        <item>Dedicado (OpenGL)</item>
-        <item>Dedicado (Vulkan)</item>
-        <item>Aplicativo</item>
-    </string-array>
-    <string-array name="settings_gpu_resolution_scale_entries">
-        <item>1x</item>
-        <item>2x</item>
-        <item>3x (para 720p)</item>
-        <item>4x</item>
-        <item>5x (para 1080p)</item>
-        <item>6x (para 1440p)</item>
-        <item>7x</item>
-        <item>8x</item>
-        <item>9x (para 4K)</item>
-        <item>10x</item>
-        <item>11x</item>
-        <item>12x</item>
-        <item>13x</item>
-        <item>14x</item>
-        <item>15x</item>
-        <item>16x</item>
-    </string-array>
-    <string-array name="settings_display_crop_mode_entries">
-        <item>Nenhum</item>
-        <item>Área Renderizada</item>
-        <item>Todas as Bordas</item>
-    </string-array>
-    <string-array name="settings_display_aspect_ratio_names">
-      <item>Auto (Nativo)</item>
-      <item>Auto (Corresponder a Janela)</item>
-      <item>Custom</item>
-      <item>4:3</item>
-      <item>16:9</item>
-      <item>19:9</item>
-      <item>20:9</item>
-      <item>PAR 1:1</item>
-    </string-array>
-    <string-array name="settings_gpu_texture_filter_names">
-        <item>Nearest-Neighbor</item>
-        <item>Bilinear</item>
-        <item>Bilinear (Sem AA)</item>
-        <item>JINC2</item>
-        <item>JINC2 (Sem AA)</item>
-        <item>xBR</item>
-        <item>xBR (Sem AA)</item>
-    </string-array>
-    <string-array name="settings_controller_type_entries">
-        <item>Nenhum</item>
-        <item>Controle Digital (Gamepad)</item>
-        <item>Controle Analógico (DualShock)</item>
-        <item>Joystick Analógico</item>
-        <item>NeGcon</item>
-        <item>GunCon</item>
-    </string-array>
-    <string-array name="settings_memory_card_mode_entries">
-        <item>Sem Cartão de Memória</item>
-        <item>Compartilhada entre Jogos</item>
-        <item>Separado Por Jogo (Cód. Jogo)</item>
-        <item>Separado Por Jogo (Título Jogo)</item>
-    </string-array>
-    <string-array name="emulation_touchscreen_menu">
-		<item>Mudar</item>
-		<item>Ajustar Visibilidade</item>
-		<item>Adicionar/Remover botões</item>
-        <item>Mover Botões</item>
-        <item>Redimensionar Botões</item>
-        </string-array>
-    <string-array name="touchscreen_layout_menu">
-        <item>Mudar Opacidade</item>
-        <item>Adicionar/Remover Botões</item>
-        <item>Mover Botões</item>
-        <item>Redimensionar Botões</item>
-        <item>Redefinir Posição</item>
-        <item>Sair</item>
-    </string-array>
-    <string-array name="settings_cdrom_read_speedup_entries">
-        <item>Nenhum</item>
-        <item>2x (4x Veloz)</item>
-        <item>3x (6x Veloz)</item>
-        <item>4x (8x Veloz)</item>
-        <item>5x (10x Veloz)</item>
-        <item>6x (12x Veloz)</item>
-        <item>7x (14x Veloz)</item>
-        <item>8x (16x Veloz)</item>
-        <item>9x (18x Veloz)</item>
-        <item>10x(20x Veloz)</item>
-    </string-array>
-    <string-array name="settings_touchscreen_controller_view_entries">
-        <item>Nenhum</item>
-        <item>Digital D-Pad</item>
-        <item>1 Analógico</item>
-        <item>2 Analógicos</item>
-        <item>Lightgun</item>
-    </string-array>
-    <string-array name="settings_audio_backend_entries">
-         <item>Mudo</item>
-        <item>Cubeb</item>
-        <item>SLES (Recomendado)</item>
-    </string-array>
-    <string-array name="settings_audio_buffer_size_entries">
-        <item>1024 Quadros (23.22ms)</item>
-        <item>2048 Quadros (46.44ms, Recomendado)</item>
-        <item>3072 Quadros (69.66ms)</item>
-        <item>4096 Quadros (92.88ms)</item>
-    </string-array>
-    <string-array name="settings_log_level_entries">
-        <item>Nenhum</item>
-        <item>Erro</item>
-        <item>Alerta</item>
-        <item>Alertas de Performance</item>
-        <item>Informação</item>
-        <item>Detalhado</item>
-        <item>Desenvolvedor</item>
-        <item>Perfil</item>
-        <item>Depuração</item>
-        <item>Rota</item>
-    </string-array>
-    <string-array name="settings_tabs">
-        <item>Geral</item>
-        <item>Vídeo</item>
-        <item>Áudio</item>
-        <item>Melhorias</item>
-        <item>Conquistas</item>
-        <item>Avançado</item>
-    </string-array>
-    <string-array name="settings_gpu_msaa_entries">
-        <item>Desativado</item>
-        <item>2x MSAA</item>
-        <item>4x MSAA</item>
-        <item>8x MSAA</item>
-        <item>2x SSAA</item>
-        <item>4x SSAA</item>
-        <item>8x SSAA</item>
-    </string-array>
-    <string-array name="settings_advanced_display_fps_limit_entries">
-        <item>Sem limite mostrar quadros)</item>
-        <item>10 FPS</item>
-        <item>15 FPS</item>
-        <item>30 FPS</item>
-        <item>45 FPS</item>
-        <item>60 FPS</item>
-        <item>75 FPS</item>
-        <item>90 FPS</item>
-    </string-array>
-    <string-array name="settings_emulation_speed_entries">
-        <item>Sem Limite</item>
-        <item>10% [6 FPS (NTSC) / 5 FPS (PAL)]</item>
-        <item>20% [12 FPS (NTSC) / 10 FPS (PAL)]</item>
-        <item>30% [18 FPS (NTSC) / 15 FPS (PAL)]</item>
-        <item>40% [24 FPS (NTSC) / 20 FPS (PAL)]</item>
-        <item>50% [30 FPS (NTSC) / 25 FPS (PAL)]</item>
-        <item>60% [36 FPS (NTSC) / 30 FPS (PAL)]</item>
-        <item>70% [42 FPS (NTSC) / 35 FPS (PAL)]</item>
-        <item>80% [48 FPS (NTSC) / 40 FPS (PAL)]</item>
-        <item>90% [54 FPS (NTSC) / 45 FPS (PAL)]</item>
-        <item>100% [60 FPS (NTSC) / 50 FPS (PAL), Padrão]</item>
-        <item>125% [75 FPS (NTSC) / 62 FPS (PAL)]</item>
-        <item>150% [90 FPS (NTSC) / 75 FPS (PAL)]</item>
-        <item>175% [105 FPS (NTSC) / 87 FPS (PAL)]</item>
-        <item>200% [120 FPS (NTSC) / 100 FPS (PAL)]</item>
-        <item>250% [150 FPS (NTSC) / 125 FPS (PAL)]</item>
-        <item>300% [180 FPS (NTSC) / 150 FPS (PAL)]</item>
-        <item>350% [210 FPS (NTSC) / 175 FPS (PAL)]</item>
-        <item>400% [240 FPS (NTSC) / 200 FPS (PAL)]</item>
-        <item>450% [270 FPS (NTSC) / 225 FPS (PAL)]</item>
-        <item>500% [300 FPS (NTSC) / 250 FPS (PAL)]</item>
-        <item>600% [360 FPS (NTSC) / 300 FPS (PAL)]</item>
-        <item>700% [420 FPS (NTSC) / 350 FPS (PAL)]</item>
-        <item>800% [480 FPS (NTSC) / 400 FPS (PAL)]</item>
-        <item>900% [540 FPS (NTSC) / 450 FPS (PAL)]</item>
-        <item>1000% [600 FPS (NTSC) / 500 FPS (PAL)]</item>
-    </string-array>
-    <string-array name="settings_advanced_cpu_overclock_entries">
-        <item>25% (8MHz)</item>
-        <item>50% (16MHz)</item>
-        <item>75% (24MHz)</item>
-        <item>100% (33MHz, Padrão)</item>
-        <item>125% (41MHz)</item>
-        <item>150% (49MHz)</item>
-        <item>175% (57MHz)</item>
-        <item>200% (66MHz)</item>
-        <item>225% (74MHz)</item>
-        <item>250% (82MHz)</item>
-        <item>275% (90MHz)</item>
-        <item>300% (99MHz)</item>
-        <item>350% (115MHz)</item>
-        <item>400% (132MHz)</item>
-        <item>450% (148MHz)</item>
-        <item>500% (165MHz)</item>
-        <item>500% (165MHz)</item>
-        <item>600% (198MHz)</item>
-        <item>700% (231MHz)</item>
-        <item>800% (264MHz)</item>
-        <item>900% (297MHz)</item>
-        <item>1000% (330MHz)</item>
-    </string-array>
-    <string-array name="settings_emulation_screen_orientation_entries">
-        <item>Padrão do Dispositivo</item>
-        <item>Retrato</item>
-        <item>Paisagem</item>
-        <item>Baseado no sensor de movimento</item>
-    </string-array>
-	<string-array name="settings_language_entries">
-        	<item>Mesmo do sistema</item>
-        	<item>Inglês</item>
-			<item>Português (Brasil)</item>
-        	<item>Italiano</item>
-        	<item>Holandês</item>
-        	<item>Espanhol</item>
-        	<item>Russo</item>
- 	</string-array>
-    <string-array name="settings_theme_entries">
-        <item>Padrão do Sistema</item>
-		<item>Claro</item>
-        <item>Escuro</item>
-    </string-array>
-    <string-array name="settings_downsample_mode_entries">
-        <item>Desabilitado</item>
-		<item>Misto (Reduz 3D / Suaviza Tudo)</item>
-        <item>Adaptativo (Preserva o 3D / Suaviza 2D)</item>
-    </string-array>
-	<string-array name="settings_boolean_entries">
-		<item>Desligado</item>
-		<item>Ligado</item>
-	</string-array>
-	<string-array name="settings_multitap_mode_entries">
-        	<item>Desativado</item>
-        	<item>Conectado à porta 1</item>
-        	<item>Conectado à porta 2</item>
-        	<item>Conectado à porta 1 e 2</item>
-    	</string-array>
-		<string-array name="memory_card_editor_save_menu">
-     		<item>Copiar salvar</item>
-     		<item>Excluir salvar</item>
-        </string-array>
-		<string-array name="settings_touchscreen_controller_port_entries">
-               <item>Porta 1</item>
-               <item>Porta 2</item>
-               <item>Multitap 3</item>
-               <item>Multitap 4</item>
-               <item>Multitap 5</item>
-               <item>Multitap 6</item>
-               <item>Multitap 7</item>
-               <item>Multitap 8</item>
-        </string-array>
-</resources>
diff --git a/android/app/src/main/res/values-pt-rBR/strings.xml b/android/app/src/main/res/values-pt-rBR/strings.xml
deleted file mode 100644
index b4c92179f..000000000
--- a/android/app/src/main/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,368 +0,0 @@
-<resources>
-    <string name="app_name">DuckStation</string>
-    <string name="action_settings">Configurações</string>
-    <string name="action_controller_mapping">Configurações de Controle</string>
-    <string name="title_activity_settings">Configurações</string>
-    <string name="settings_console_region">Região do Console</string>
-    <string name="settings_console_tty_output">Ativar saída TTY</string>
-    <string name="settings_console_fast_boot">Inicio Rápido</string>
-    <string name="settings_osd_show_messages">Mostrar Mensagens</string>
-    <string name="settings_osd_show_speed">Mostrar velocidade da emulação</string>
-    <string name="settings_osd_show_show_fps">Mostrar FPS do Jogo</string>
-    <string name="settings_osd_show_show_vps">Mostrar VPS do Jogo</string>
-    <string name="settings_cpu_execution_mode">Modo de execução CPU</string>
-    <string name="settings_gpu_renderer">Renderizado por GPU</string>
-    <string name="settings_gpu_resolution_scale">Escala de Resolução</string>
-    <string name="title_activity_emulation">Atividade da Emulação</string>
-    <string name="settings_emulation_speed">Velocidade da Emulação</string>
-    <string name="settings_fast_forward_speed">Velocidade de Avanço Rápido</string>
-    <string name="settings_save_state_on_exit">Salvar estado ao Sair</string>
-    <string name="settings_emulation_screen_orientation">Orientação de Tela</string>
-    <string name="settings_load_patch_codes">Carregar Trapaças</string>
-    <string name="settings_summary_save_state_on_exit">Salvar automaticamente o estado da emulação ao desligar</string>
-    <string name="settings_summary_load_patch_codes"><![CDATA[Loads Carrega códigos de trapaça no formato .cht e ou PCSXR. Códigos podem ser alternados durante o jogo.]]></string>
-    <string name="settings_apply_compatibility_settings">Aplicar Configurações de Compatibilidade</string>
-    <string name="settings_summary_apply_compatibility_settings">Desativar automaticamente melhorias quando não são suportadas.</string>
-    <string name="settings_summary_video_sync">Ative essa opção para que o emulador sincronize a taxa de FPS de acordo com a taxa do seu aparelho.</string>
-    <string name="settings_video_sync">Sincronização Vertical</string>
-    <string name="settings_cpu_overclocking">Aumento de Velocidade CPU (Overclock)</string>
-    <string name="settings_cdrom_region_check">Checagem de Região do CD-ROM</string>
-    <string name="settings_summary_cdrom_region_check">Previne que discos de regiões incorretas sejam lidos pelo emulador. Pode ser Desligado.</string>
-    <string name="settings_cdrom_preload_image_to_ram">Carregar CD-ROM para memória RAM</string>
-    <string name="settings_summary_preload_image_to_ram">Carrega o jogo todo na RAM. Útil para prevenir instabilidades durante o jogo. Em alguns casos também elimina travamentos durante os carregamentos.</string>
-    <string name="settings_pgxp_vertex_cache">PGXP - Vértice Armazenado</string>
-    <string name="settings_summary_pgxp_vertex_cache">Reduz as oscilações nos poligonos tentando preservar os mesmos na hora da transferência para a RAM.</string>
-    <string name="settings_pgxp_cpu_mode">PGXP - Modo CPU</string>
-    <string name="settings_summary_pgxp_cpu_mode">Tenta reduzir oscilações nos poligonos preservando-os na hora da transferência para o CPU. Alguns jogos se beneficiam com esta opção junto com o PGXP para que funcione corretamente. Muito lento, e imcompativel com o modo recompilador.</string>
-    <string name="settings_cpu_recompiler_icache">Recompilador CPU Modo ICache</string>
-    <string name="settings_summary_cpu_recompiler_icache">Determina se a instrução enviada ao CPU emulado fica armazenada no recompilador. Melhor a precisão ao pequeno custo de performance. Se os jogos estão rodando muito rápido, tente ativar esta opção.</string>
-    <string name="settings_cpu_recompiler_fastmem">Recompilador CPU Modo FASTMEM</string>
-    <string name="settings_summary_cpu_recompiler_fastmem">Torna o acesso à memória mais eficiente. Desative se estiver instável em seu aparelho.</string>
-    <string name="settings_presented_frame_limit">Limite do quadro Atual</string>
-    <string name="settings_logging_level">Nível de Registro</string>
-    <string name="settings_log_to_file">Registro para Arquivo</string>
-    <string name="settings_summary_log_to_file">Escreve mensagens em um arquivo duckstation.log em seu diretório raiz. Use só para depuração isto deixará o emulador lento.</string>
-    <string name="settings_log_to_logcat">Registro em Linha de Comando</string>
-    <string name="settings_summary_log_to_logcat">Escreve um arquivo de registro em um arquivo no Android. Só útil quando atrelado ao PC com adb.</string>
-    <string name="settings_volume">Volume</string>
-    <string name="settings_summary_volume">Controla o volume do emulador.</string>
-    <string name="settings_fast_forward_volume">Volume do Avanço Rápido</string>
-    <string name="settings_summary_fast_forward_volume">Controla o volume do áudio quando o avanço rápido é usado.</string>
-    <string name="settings_mute_all_sound">Silenciar Tudo</string>
-    <string name="settings_summary_mute_all_sound">Silencia totalmente o emulador.</string>
-    <string name="settings_mute_cd_audio">Silenciar CDs de Áudio</string>
-    <string name="settings_summary_mute_cd_audio">Silencia de forma forçada tanto para CDs de música quanto em jogos.</string>
-    <string name="settings_audio_backend">Opções de Áudio</string>
-    <string name="settings_audio_buffer_size">Latência do Volume</string>
-    <string name="settings_summary_audio_buffer_size">Determina a latência entre o áudio. Valores menores reduzem a latência (atraso), pode causar engasgos quando jogos são acelerados.</string>
-    <string name="settings_audio_sync">Sincronia de Áudio</string>
-    <string name="settings_summary_audio_sync">Limita a velocidade de emulação com base na opção escolhida. Isso ajuda a remover ruídos ou estalos se a emulação for muito rápida. A sincronização será automaticamente desativada se não funcionar a 100%.</string>
-    <string name="settings_controller_type">Tipo de Controle</string>
-    <string name="settings_enable_analog_mode_on_reset">Ativa modo analógico ao reiniciar</string>
-    <string name="settings_touchscreen_controller_view">Visualização do controle em tela</string>
-    <string name="settings_auto_hide_touchscreen_controller">Auto ocultar controles em tela</string>
-    <string name="settings_summary_auto_hide_touchscreen_controller">Esconde controles em tela quando um controle externo é detectado.</string>
-    <string name="settings_vibrate_on_press">Vibrar ao Pressionar</string>
-    <string name="settings_summary_vibrate_on_press">Ativa vibração quando um botão da tela de toque é pressionado. Requer \"Vibrar ao Tocar\" ativado nas opções do seu dispositivo para funcionar.</string>
-    <string name="settings_enable_vibration">Ativa Vibração</string>
-    <string name="settings_summary_enable_vibration">Encaminha vibração do jogo para o motor do aparelho.</string>
-    <string name="settings_memory_card_1_type">Tipo de Cartão de Memória 1</string>
-    <string name="settings_memory_card_2_type">Tipo de Cartão de Memória 2</string>
-    <string name="settings_crop_mode">Modo de Corte</string>
-    <string name="settings_aspect_ratio">Razão de Aspecto</string>
-    <string name="settings_linear_upscaling">Escalonamento Linear</string>
-    <string name="settings_integer_upscaling">Escalonamento Integro</string>
-    <string name="settings_summary_linear_upscaling">Suaviza a imagem ao aumentar a resolução da emulação.</string>
-    <string name="settings_summary_integer_upscaling">Adiciona preenchimento a área exibida para garantir a proporção entre os pixels. Pode resultar em uma imagem mais nítida em jogos 2D.</string>
-    <string name="settings_summary_osd_show_messages">Mostra mensagens em tela ao salvar, carregar, carregar trapaças ou quando eventos e alertas ocorrerem.</string>
-    <string name="settings_summary_osd_show_speed">Mostra a velocidadea atual da emulação no topo superior direito da tela..</string>
-    <string name="settings_summary_osd_show_fps">Mostra a velocidade atual dos quadros FPS no topo da tela.</string>
-    <string name="settings_summary_osd_show_vps">Mostra a velocidade atual dos quadros VPS no topo da tela.</string>
-    <string name="settings_cdrom_read_speedup">Velocidade de leitura CD-Rom</string>
-    <string name="settings_summary_cdrom_read_speedup">Aumenta a velocidade de leitura do CD-Rom. Só se aplica a velocidade de leitura em 2x para cima, configuração será ignorada quando usado para tocar CD\'s de música. Pode aumentar a velocidade de leitura em telas de carregamento em alguns jogos, ao custo de quebrar outros..</string>
-    <string name="settings_summary_console_fast_boot">Pula a tela de abertura clássica da Sony seguro ativar porém alguns raros jogos podem quebrar.</string>
-    <string name="settings_msaa">Filtro Anti-serrilhado</string>
-    <string name="settings_true_color">Renderizar em 24 Cores (desativa dithering)</string>
-    <string name="settings_summary_true_color">Produz gradientes de aparência mais agradável ao custo de fazer algumas cores ficarem ligeiramente diferentes. A maioria dos jogos são compatíveis com esta opção.</string>
-    <string name="settings_scaled_dithering">Efeito Dithering Escalado (escala pontilhados para resolução)</string>
-    <string name="settings_summary_scaled_dithering">Escala o dithering para a resolução da GPU emulada. Torna o padrão do pontilhado muito menos óbvio em resoluções mais altas.</string>
-    <string name="settings_disable_interlacing">Desativar Entrelaçamento (força redenrização progressiva)</string>
-    <string name="settings_summary_disable_interlacing">Força a renderização e exibição de quadros para o modo progressivo. Remove o efeito de \'alisamento\' visto em jogos 480i renderizando sempre em 480, seguro deixar ativo.</string>
-    <string name="settings_texture_filtering">Filtragem de textura</string>
-    <string name="settings_force_ntsc_timings">Força renderização em NTSC (60hz-em-PAL)</string>
-    <string name="settings_summary_force_ntsc_timings">Usa temporizadores de quadro NTSC forçando os jogos PAL vulgo Europeus, a rodarem a 60 Hz.</string>
-    <string name="settings_widescreen_hack">Hack de tela panorâmica</string>
-    <string name="settings_summary_widescreen_hack">Dimensiona as posições dos vértices da tela para a proporção mais larga (Panoramicas), basicamente aumenta o campo de visão de 4:3 para 16:09 em jogos 3D. Não é compatível com todos os jogos.</string>
-    <string name="settings_force_4_3_for_24bit">Forçar 4:3 para telas 24-bits</string>
-    <string name="settings_summary_force_4_3_for_24bit">Volta a tela para 4:3 (Desativa efeito esticado em FMVs).</string>
-    <string name="settings_chroma_smoothing_24bit">Suavização de Croma</string>
-    <string name="settings_summary_chrome_smoothing_24bit">Suavização de Croma (reduz artefatos em cenas FMV).</string>
-    <string name="settings_pgxp_geometry_correction">Correção Geométrica PGXP</string>
-    <string name="settings_summary_pgxp_geometry_correction"><![CDATA[Reduz as "oscilações" nos polígonos tentando preservar os mesmos na hora da transferência para a memória. Funciona apenas se rederizado por hardware e pode não ser compatível com todos os jogos Não compativel com todos os jogos.]]></string>
-    <string name="settings_pgxp_culling_correction">PGXP - Correção de Curvas</string>
-    <string name="settings_summary_pgxp_culling_correction">Aumenta a precisão das curvas nos polígonos, reduzindo o número de buracos na geometria do mesmo. Requer a Correção Geometrica ativada. Requer que a correção geométrica esteja ativada.</string>
-    <string name="settings_pgxp_texture_correction">PGXP - Correção de Textura</string>
-    <string name="settings_summary_pgxp_texture_correction">Utiliza interpolação corretiva em perspetiva para coordenadas e das cores na textura, endireitando as que estiverem distorcidas. Requer que a correção geométrica esteja ativada.</string>
-    <string name="settings_pgxp_preserve_projection_precision">PGXP - Preserva Precisão de Projeção</string>
-    <string name="settings_summary_pgxp_preserve_projection_precision">Permite precisão adicional para PGXP; Pode melhorar o visual em alguns jogos e prejudicar outros.</string>
-    <string name="settings_pgxp_depth_buffer">PGXP - Modo Polimento (Z)</string>
-    <string name="settings_summary_pgxp_depth_buffer">Tenta reduzir os poligonos no eixo Z (parte inferior ou cantos em alguns casos) ajustando os limites dos valores para que não haja conflitos na renderização de poligonos 3D. Gerando um efeito de buracos ou quadrados piscando. Tem pouca compatibilidade no geral, mas pode funcionar bem em alguns jogos. Outros precisam ser ajustados via limitador.</string>
-    <string name="menu_main_resume_last_session">Resumir Jogo</string>
-    <string name="menu_main_start_file">Iniciar Arquivo</string>
-    <string name="menu_main_start_bios">Iniciar BIOS</string>
-    <string name="menu_main_edit_game_directories">Editar Diretórios de Jogos</string>
-    <string name="menu_main_scan_for_new_games">Escanear por Jogos Novos</string>
-    <string name="menu_main_rescan_all_games">Rescanear Tudo</string>
-    <string name="menu_main_import_bios">Importar BIOS</string>
-    <string name="menu_main_show_version">Mostrar Versão</string>
-    <string name="menu_main_github_repository">Repositório no Github</string>
-    <string name="menu_main_discord_server">Servidor no Discord</string>
-    <string name="menu_game_list_entry_start_game">Iniciar Jogo</string>
-    <string name="menu_game_list_entry_resume_game">Resumir Jogo</string>
-    <string name="android_progress_callback_please_wait">Aguarde...</string>
-    <string name="android_progress_callback_ok">OK</string>
-    <string name="android_progress_callback_information">Informação</string>
-    <string name="android_progress_callback_confirmation">Confirmação</string>
-    <string name="android_progress_callback_yes">Sim</string>
-    <string name="android_progress_callback_no">Não</string>
-    <string name="emulation_activity_error">Erro</string>
-    <string name="emulation_activity_ok">OK</string>
-    <string name="emulation_activity_import_patch_codes">Importar Trapaças...</string>
-    <string name="emulation_activity_patch_on">(Ligado)</string>
-    <string name="emulation_activity_patch_off">(Desligado)</string>
-    <string name="emulation_activity_choose_patch_code_file">Escolher Arquivo de Trapaça</string>
-    <string name="emulation_activity_failed_to_import_patch_codes">Falha ao importar trapaça. Tenha certeza de ter escolhido o formato PCSXR ou Libretro CHT.</string>
-    <string name="main_activity_choose_directory">Escolher Diretório</string>
-    <string name="main_activity_error">Erro</string>
-    <string name="main_activity_get_path_from_file_error">Falha ao obter o caminho para o arquivo selecionado. Certifique-se de que o arquivo esteja no armazenamento interno / externo.\n\nTap.\nSelect "Mostrar armazenamento interno".\nTap selecione o nome do seu dispositivo ou cartão SD.</string>
-    <string name="main_activity_ok">OK</string>
-    <string name="main_activity_get_path_from_directory_error">Falha ao obter o caminho para o arquivo selecionado. Certifique-se de que o arquivo esteja no armazenamento interno / externo. \n\nTap the overflow button in the directory selector.\nSelect \"Mostrar armazenamento interno\".\nTap selecione o nome do seu dispositivo ou cartão SD.</string>
-    <string name="main_activity_external_storage_permissions_error">Permissões de armazenamento externo são necessárias para usar o DuckStation.</string>
-    <string name="main_activity_choose_disc_image">Escolha Arquivo de Jogo</string>
-    <string name="main_activity_missing_bios_image_prompt">Nenhum BIOS foi encontrada no diretório de BIOS do DuckStation. Deseja localizar e importar o BIOS agora?</string>
-    <string name="main_activity_missing_bios_image">BIOS ausente</string>
-    <string name="main_activity_yes">Sim</string>
-    <string name="main_activity_no">Não</string>
-    <string name="main_activity_choose_bios_image">Escolher BIOS</string>
-    <string name="main_activity_failed_to_open_bios_image">Falha ao Abrir BIOS</string>
-    <string name="main_activity_failed_to_read_bios_image_prefix">\"Falha ao ler BIOS: \"</string>
-    <string name="main_activity_bios_image_too_large">Aqruivo BIOS muito grande. Você deve selecionar uma imagem do BIOS, não um jogo, e deve ter 512 KB de tamanho.</string>
-    <string name="main_activity_invalid_error">Esse BIOS não é válido, ou já foi importado.</string>
-    <string name="main_activity_show_version_title">Versão</string>
-    <string name="main_activity_copy">Copiar</string>
-    <string name="settings_gpu_thread">Renderização Sequencial - GPU</string>
-    <string name="settings_summary_gpu_thread">Usa um segundo processo para desenhar gráficos em tela. Atualmente só disponível para renderizadores por software, pode fornecer uma melhoria significativa na velocidade, pode ser usado a vontade.</string>
-    <string name="settings_gpu_threaded_presentation">Apresentação Sequencial - GPU</string>
-    <string name="settings_summary_gpu_threaded_presentation">Apresenta quadros sequêncialmente em segundo plano quando o avanço rápido ou sincronizador vertical (Vsync) está desativado Isso pode melhorar o desempenho no renderizador Vulkan.</string>
-    <string name="settings_language">Linguagem (Necessário Reiniciar)</string>
-    <string name="touchscreen_controller_stop_editing">Terminado</string>
-    <string name="touchscreen_controller_reset_layout">Redefinir</string>
-    <string name="emulation_activity_touchscreen_controller_not_active">Controle em tela não Ativado.</string>
-    <string name="settings_theme">Tema</string>
-    <string name="settings_controller_mapping_summary">Permite configurar e atribuir os botões de seu controle externo ao emulador.</string>
-    <string name="settings_controller_mapping">Mapear Controles</string>
-    <string name="controller_binding_dialog_message">Pressione os botões para atribuí-los ao controle.\n\nAtribuição Atual: %s</string>
-    <string name="controller_binding_dialog_no_binding"><![CDATA[<Nenhuma Atribuição>]]></string>
-    <string name="controller_binding_dialog_cancel">Cancelar</string>
-    <string name="controller_binding_dialog_clear">Limpar</string>
-    <string name="controller_mapping_activity_title">Mapear Controle</string>
-    <string name="controller_mapping_activity_no_profiles_found">Perfil não encontrado.</string>
-    <string name="controller_mapping_activity_select_input_profile">Escolha o Perfil de Entrada</string>
-    <string name="controller_mapping_activity_failed_to_load_profile">Falha ao carregar o perfil \'%s\'</string>
-    <string name="controller_mapping_activity_input_profile_name">Nome do Perfil:</string>
-    <string name="controller_mapping_activity_save">Salvar</string>
-    <string name="controller_mapping_activity_name_must_be_provided">Um nome deve ser escolhido.</string>
-    <string name="controller_mapping_activity_failed_to_save_input_profile">Falha ao salvar perfil.</string>
-    <string name="controller_mapping_activity_input_profile_saved">Perfil \'%s\' salvo.</string>
-    <string name="controller_mapping_activity_cancel">Cancelar</string>
-    <string name="settings_use_analog_sticks_for_dpad">Usar Analógicos como D-Pad no Modo Digital</string>
-    <string name="settings_summary_enable_analog_mode_on_reset">Força os controles ao modo analógico quando emulador é reiniciado.</string>
-    <string name="settings_summary_use_analog_sticks_for_dpad">Permite usar os analógicos como um direcional (D-Pad) no modo digital, assim como os botões.</string>
-    <string name="settings_disable_all_enhancements">Desativar todos os aprimoramentos</string>
-    <string name="settings_summary_disable_all_enhancements">Desliga temporariamente todos os aprimoramentos, útil para achar problemas de performance..</string>
-    <string name="settings_downsample_mode">Suavização da Imagem</string>
-    <string name="activity_game_properties">Propriedades do Jogo</string>
-    <string name="game_properties_preference_use_global_setting">Usar configuração global</string>
-    <string name="settings_input_profile">Perfil de controle</string>
-    <string name="game_properties_tab_summary">Sumário</string>
-    <string name="game_properties_tab_game_settings">Configuração de Jogo</string>
-    <string name="game_properties_tab_controller_settings">Configurações de Controle</string>
-    <string name="settings_audio_resampling">Ajuste de Áudio</string>
-    <string name="settings_summary_audio_resampling">Quando estiver rodando fora dos 100% da velocidade, o áudio será ajustado para que não haja queda de quadros. Produz uma melhor qualidade do avanço rápido no áudio ao custo pequeno de perda de performance.</string>
-    <string name="settings_general_sync_to_host_refresh_rate">Sincronizar taxa de atualização</string>
-    <string name="settings_summary_general_sync_to_host_refresh_rate">Ajusta a velocidade da emulação de acordo com a mesma taxa de atualização do dispositivo.</string>
-    <string name="settings_sustained_performance_mode">Desempenho Contínuo</string>
-    <string name="settings_summary_sustained_performance_mode">Ativa o modo contínuo de perfomance do Android. Resulta em um melhor desempenho de quadros e perfomance por longos periodos em alguns dispositivos..</string>
-    <string name="title_activity_game_directories">Editar Diretório de Jogos</string>
-    <string name="settings_game_directories">Diretório de Jogos</string>
-    <string name="settings_summary_game_directories">Altera a lista de diretórios usados ​​para pesquisar jogos.</string>
-    <string name="game_directories_scanning_subdirectories">Ler subdiretórios.</string>
-    <string name="game_directories_not_scanning_subdirectories">Não ler subdiretórios.</string>
-    <string name="settings_display_all_frames">Otimização de Quadros</string>
-    <string name="settings_summary_display_all_frames">Garante que cada quadro renderizado será mostrado em tela, no seu rtimo adequado. Se estiver tendo dificuldades ao manter uma boa velocidade, ou estiver enfrentando algumas falhas de áudio tente desativar esta opção.</string>
-    <string name="menu_edit_game_directories_add_directory">Adicionar Diretório</string>
-    <string name="menu_edit_game_directories_add_path">Adicionar Caminho</string>
-    <string name="edit_game_directories_add_path">Editar Caminho</string>
-    <string name="edit_game_directories_add_path_summary">Insira o caminho completo dos seus jogos.\n\nUse um gerenciador de arquivos para ver o caminho.\n\nExemplo: /storage/emulated/0/games</string>
-    <string name="save_state_info_slot_is_empty">Espaço Vazio</string>
-    <string name="save_state_info_game_save_n">Id do Jogo %d</string>
-    <string name="save_state_info_global_save_n">Espaço Global %d</string>
-    <string name="save_state_info_quick_save">Salvamento Rápido</string>
-    <string name="settings_osd_show_show_resolution">Mostrar Resolução</string>
-    <string name="settings_summary_osd_show_resolution">Mostra resolução do jogo no canto superior direito da tela.</string>
-    <string name="settings_summary_display_stretch">Estica a imagem para preencher toda a tela.</string>
-    <string name="settings_display_stretch">Esticar para Preencher</string>
-    <string name="settings_category_global">Configurações Básicas</string>
-    <string name="settings_category_display">Configurações de Tela</string>
-    <string name="settings_category_audio">Configurações de Áudio</string>
-    <string name="settings_category_console">Configurações do Console</string>
-    <string name="settings_category_cpu">Configurações de CPU</string>
-    <string name="settings_category_gpu">Configurações de GPU</string>
-    <string name="settings_category_logging">Configurações de Rastreio</string>
-    <string name="dialog_done">Salvar</string>
-    <string name="dialog_touchscreen_controller_type">Ver Controle em Tela</string>
-    <string name="dialog_touchscreen_controller_opacity">Visibilidade do Controle</string>
-    <string name="dialog_touchscreen_controller_buttons">Botões do Controle</string>
-    <string name="dialog_touchscreen_controller_settings">Configurações do controle em Tela</string>
-    <string name="settings_summary_console_tty_output">Informações de Depuração.</string>
-    <string name="action_show_game_list">Modo Lista</string>
-    <string name="action_show_game_grid">Modo Grade</string>
-    <string name="settings_touch_gliding">Deslizar por toque</string>
-    <string name="settings_summary_touch_gliding">Permite que você pressione combinações de botões deslizando o dedo pela tela.</string>
-    <string name="menu_game_list_entry_game_properties">Propriedades</string>
-    <string name="emulation_activity_change_disc_select_new_file">Escolha um arquivo...</string>
-    <string name="settings_achievements_enable">Ativar Conquistas</string>
-    <string name="settings_summary_achievements_enable">Quando ativado e logado com sua conta, Ducstation irá procurar e baixar as conquistas se hovuerem ao iniciar o jogo.</string>
-    <string name="settings_achievements_challenge_mode">Modo Dificílimo (Hardcore)</string>
-    <string name="settings_summary_achievements_challenge_mode">Modo Dificílimo (hardcore). Desativa salvamentos rápidos, carregamento de trapaças e funções de velocidade, mas você receberá o dobro de pontos de conquistas em troca.</string>
-    <string name="settings_achievements_rich_presence">Ativar presença Rica (Discord)</string>
-    <string name="settings_summary_achievements_rich_presence">Quando ativado, a informação do que estiver sendo jogado será enviado ao servidor se suportado.</string>
-    <string name="settings_achievements_username">Nome de Usuário</string>
-    <string name="settings_achievements_token_generation_time">Token Gerado</string>
-    <string name="settings_achievements_login">Usuário</string>
-    <string name="settings_summary_achievements_login">Entre para obter Conquistas</string>
-    <string name="settings_achievements_register">Registrar-se</string>
-    <string name="settings_summary_achievements_register">Acesse para registrar-se.</string>
-    <string name="settings_achievements_logout">Sair</string>
-    <string name="settings_summary_achievements_logout">Sair da sua conta. Novas conquistas não serão registradas.</string>
-    <string name="settings_achievements_view_profile">Ver Perfil</string>
-    <string name="settings_summary_achievements_view_profile">Ver Peril...</string>
-    <string name="settings_achievements_test_mode">Ativar Modo Teste</string>
-    <string name="settings_summary_achievements_test_mode">Quando ativado, DuckStation entenderá que todas as Conquistas deverão ficar travadas e não mandará uma notificação para o servidor não marcando a mesma como destravada.</string>
-    <string name="settings_achievements_use_first_disc_from_playlist">Usar primeiro Disco (Playlist)</string>
-    <string name="settings_summary_achievements_use_first_disc_from_playlist">Quando ativado, o primeiro disco em uma lista de reprodução será usado para conquistas, independente de qual disco está ativo.</string>
-    <string name="achievement_settings_login_title">Credenciais do RetroAchievements</string>
-    <string name="achievement_settings_login_help">Por favor entre com um nome de usuário e senha para se autenticar no retroachievements.org conforme abaixo. Suas credenciais não serão salvas no emulador. Será criado um token único de acesso para autenticação.</string>
-    <string name="achievement_settings_login_username_hint">Usuário</string>
-    <string name="achievement_settings_login_password_hint">Senha</string>
-    <string name="achievement_settings_login_login_button">Entrar</string>
-    <string name="achievement_settings_login_cancel_button">Cancelar</string>
-    <string name="achievement_settings_login_failed">Falha na entrada, verifique seu usuário e senha e tente novamente</string>
-    <string name="achievement_points_format_string">%d pontos</string>
-    <string name="achievement_summary_format_string">Você obteve %1$d de %2$d conquistas, ganhando %3$d pontos de %4$d disponiveis.</string>
-    <string name="achievement_title_challenge_mode_format_string">%s (Modo Hardcore)</string>
-    <string name="settings_achievements_disclaimer">DuckStation usa o RetroAchievements como base de dados para as conquistas. Para usar esta função, considere fazer sua conta em:(https://retroachievements.org).</string>
-    <string name="settings_achievements_confirm_logout_title">Confirmar Sair</string>
-    <string name="settings_achievements_confirm_logout_message">O encerramento de uma sessão desabilitará as conquistas até que entre novamente. Conquistas abertas anteriormente não serão perdidas.</string>
-    <string name="controller_binding_device_for_vibration">Vibração do Dispositivo</string>
-    <string name="controller_settings_tab_settings">Configurações</string>
-    <string name="controller_settings_tab_hotkeys">Atalhos</string>
-    <string name="controller_settings_category_button_bindings">Atribuição de Botões</string>
-    <string name="controller_settings_category_axis_bindings">Atribuição de Eixos</string>
-    <string name="controller_settings_category_settings">Configurações</string>
-    <string name="controller_settings_category_touchscreen_controller">Controles de toque</string>
-    <string name="controller_settings_category_ports">Portas</string>
-    <string name="controller_settings_main_port_format">Porta %d</string>
-    <string name="controller_settings_sub_port_format">Porta %1$d%2$c</string>
-    <string name="action_switch_view">Mudar visualização</string>
-    <string name="title_activity_memory_card_editor">Editor de Cartão de Memória</string>
-    <string name="action_memory_card_editor">Editor de Cartão de Memória</string>
-    <string name="action_memory_card_editor_import_card">Importar Cartão</string>
-    <string name="action_memory_card_editor_open_card">Abrir Cartão</string>
-    <string name="action_memory_card_editor_new_card">Novo Cartão</string>
-    <string name="action_memory_card_editor_format_card">Formartar Cartão</string>
-    <string name="action_memory_card_editor_delete_card">Apagar Cartão</string>
-    <string name="memory_card_editor_no_cards_found">Nenhum Cartão de Memória encontrado.</string>
-    <string name="memory_card_editor_card_already_open">Este cartão já está aberto.</string>
-    <string name="memory_card_editor_failed_to_open_card">Falha ao abrir ou ler o cartão de memória.</string>
-    <string name="memory_card_editor_must_have_at_least_two_cards_to_copy">Necessário que tenha pelo menos 2 cartões para abrir e copiar.</string>
-    <string name="memory_card_editor_copy_save_to">Coppiar %s para...</string>
-    <string name="memory_card_editor_select_card">Escolher Cartão</string>
-    <string name="memory_card_editor_error">Erro</string>
-    <string name="memory_card_editor_copy_insufficient_blocks">Este arquivo precisa de %1$d blocos, mas só restam %2$d livres.</string>
-    <string name="memory_card_editor_copy_already_exists">Arquivo \'%s\' já existente no cartão destino.</string>
-    <string name="memory_card_editor_copy_read_failed">Falha ao ler \'%s\' do cartão origem.</string>
-    <string name="memory_card_editor_copy_write_failed">Falha ao escrever \'%s\' no cartão destino.</string>
-    <string name="memory_card_editor_copy_success">Copiado \'%1$s\' para \'%2$s\'.</string>
-    <string name="memory_card_editor_delete_confirm">Tem certeza que quer apagar o save \'%s\'?</string>
-    <string name="memory_card_editor_delete_success">Apagar save \'%s\'.</string>
-    <string name="memory_card_editor_delete_failed">Falha ao apagar arquivo \'%s\'.</string>
-    <string name="memory_card_editor_no_card_selected">Nenhum cartão selecionado.</string>
-    <string name="memory_card_editor_import_failed">Falha ao importar cartão. Pode não ter o formato correto.</string>
-    <string name="memory_card_editor_delete_card_confirm_message">Cartao de Memória \'%s\' será apagado, e não poderá ser recuperado. Tem certeza que quer apagá-lo?</string>
-    <string name="memory_card_editor_delete_card_failed">Falha ao deletar \'%s\'.</string>
-    <string name="memory_card_editor_delete_card_success">Cartão Apagado \'%s\'.</string>
-    <string name="memory_card_editor_format_card_confirm_message">Cartão de Memória \'%s\' será formatado, limpando tudo. Tem certeza que quer formatar?</string>
-    <string name="memory_card_editor_format_card_failed">Falha ao formatar \'%s\'.</string>
-    <string name="memory_card_editor_format_card_success">Cartão formatado \'%s\'.</string>
-    <string name="memory_card_editor_import_card_confirm_message">Importando \'%1$s\' removerá todos os saves \'%2$s\'. Quer mesmo continuar?</string>
-    <string name="memory_card_editor_import_card_read_failed">Falha ao ler \'%s\'.</string>
-    <string name="memory_card_editor_import_card_failed">Falha ao importar cartão \'%s\'. Pode não conter um formato válido.</string>
-    <string name="memory_card_editor_import_card_success">Cartão Importado \'%s\'.</string>
-    <string name="menu_game_list_entry_choose_cover_image">Escolha um arquivo de Capa</string>
-    <string name="controller_settings_vibration_unsupported">O dispositivo escolhido não tem suporte a vibração.</string>
-    <string name="controller_settings_automatic_mapping">Executar mapeamento automático</string>
-    <string name="controller_settings_summary_automatic_mapping">Tentará mapear os botões de forma automática ao controle conectado.</string>
-    <string name="controller_settings_clear_controller_bindings">Limpar atribuições</string>
-    <string name="controller_settings_summary_clear_controller_bindings">Remove todas as atribuições para o controle conectado.</string>
-    <string name="controller_settings_clear_controller_bindings_confirm">Tem certeza de que quer remover as atribuições para o controle, isto não poderá ser desfeito.</string>
-    <string name="controller_settings_clear_controller_bindings_done">Todas as atribuições de botões removidas para o controle %d.</string>
-    <string name="controller_auto_mapping_no_devices">Nenhum controle com suporte disponível encontrado. A atribuição automática não pôde ser feita, mas você pode ainda atribuir os botões manualmente..</string>
-    <string name="controller_auto_mapping_select_device">Escolha o dispositivo</string>
-    <string name="controller_auto_mapping_results">Resultados da atribuição automática</string>
-    <string name="main_activity_empty_game_list_title">Nenhum jogo encontrado. Adicione o diretório contendo jogos para iniciar.</string>
-    <string name="main_activity_empty_game_list_supported_formats">Os formatos suportados são:\n\n%s\n\nJogos no formato .bin precisam obrigatoriamente do arquvio .cue para iniciar.</string>
-    <string name="main_activity_empty_game_list_add_directory">Adicionar diretório de jogos</string>
-    <string name="main_activity_empty_game_list_start_file">Iniciar arquivo</string>
-    <string name="update_notes_title">Atualizar Notas</string>
-    <string name="update_notes_message_version_controller_update">Esta atualização inclui suporte para multiplos controles com vibração, e suporte a atribuição de botões comos os de volume.\n\nVocê deverá reatribuir seus controles, caso contrário eles não irão mais funcionar. Quer continuar ?</string>
-    <string name="settings_osd_show_show_inputs">Mostrar entrada de controle</string>
-    <string name="settings_summary_osd_show_inputs">Mostra quais botões estão sendo pressionados no canto inferior esquerdo da tela.</string>
-    <string name="touchscreen_controller_edit_menu">Editar Menu</string>
-    <string name="settings_achievements_category">Conta</string>
-    <string name="settings_achievements_global_settings">Configuração Global</string>
-    <string name="settings_category_achievements">Configuração de Conquista</string>
-    <string name="settings_multitap_mode">Modo Multitap</string>
-    <string name="settings_touchscreen_controller_port">Porta do controle em tela</string>
-    <string name="emulation_menu_load_state">Carregar Estado</string>
-    <string name="emulation_menu_save_state">Salvar Estado</string>
-    <string name="emulation_menu_toggle_fast_forward">Alternar Avanço Rápido</string>
-    <string name="emulation_menu_achievements">Conquistas</string>
-    <string name="emulation_menu_patch_codes">Trapaças</string>
-    <string name="emulation_menu_change_disc">Mudar Disco</string>
-    <string name="emulation_menu_touchscreen_controller_settings">Configuração do controle em tela</string>
-    <string name="emulation_menu_toggle_analog_mode">Alternar modo analógico do controle</string>
-    <string name="emulation_menu_reset_console">Reiniciar Console</string>
-    <string name="emulation_menu_exit_game">Sair do Jogo</string>
-    <string name="settings_use_software_renderer_for_readbacks">Usar rederizador por software para releituras</string>
-    <string name="settings_summary_use_software_renderer_for_readbacks">Executa o modo software em paralelo para releituras na memória de vídeo. Em alguns sistemas, pode resultar em maior desempenho ao usar aprimoramentos gráficos com o renderizador por hardware..</string>
-    <string name="settings_use_software_renderer">Usar modo Software</string>
-    <string name="settings_disable_widescreen">Desativar Hack de tela panorâmica</string>
-    <string name="settings_cdrom_seek_speedup">Velocidade de busca CD-ROM</string>
-    <string name="settings_summary_cdrom_seek_speedup">Aumenta a velocidade de leitura do CD-Rom. Só se aplica a velocidade de leitura em 2x para cima, configuração será ignorada quando usado para tocar CD\'s de música. Pode aumentar a velocidade de leitura em telas de carregamento em alguns jogos, ao custo de quebrar outros.</string>
-    <string name="settings_custom_aspect_ratio">Proporção da imagem customizada</string>
-    <string name="settings_summary_custom_aspect_ratio">Usada para quando a proporção de imagem é definida como customizada.</string>
-    <string name="controller_settings_category_auto_fire_buttons">Botões de auto disparo</string>
-    <string name="controller_settings_category_auto_fire_bindings">Botões de auto disparo (Gatilho)</string>
-    <string name="controller_settings_auto_fire_n_button">Auto disparo botão %d</string>
-    <string name="controller_settings_auto_fire_n_frequency">Auto disparo botão %d Frequência/Intervalo</string>
-    <string name="controller_binding_auto_fire_n">Auto disparo %d</string>
-    <string name="settings_category_cdrom">Configurações de CD-ROM</string>	
-    <string name="settings_cdrom_read_thread">Usar Leitura Assíncrona</string>	
-    <string name="settings_summary_read_thread">Reduz engasgos na emulação lendo / descomprimindo os arquivos da midia de forma assíncrona.</string>
-    <string name="settings_cdrom_load_image_patches">Aplicar Modificações</string>	
-    <string name="settings_summary_load_image_patches">Aplica automaticamente \'modificações\' em jogos quando presentes no mesmo diretório. Atualmente só são aceitos modificações do tipo PPF.</string>
-    <string name="menu_edit_game_directories_force_saf">Forçar armazenamento com escopo</string>	
-    <string name="settings_expand_to_cutout">Expandir para área cortada</string>
-    <string name="settings_summary_expand_to_cutout">Expande a área de exibição para incluir partes que foram removidas da imagem. Útil para telas curvas em que parte da imagem acaba de perdendo.</string>
-</resources>
diff --git a/android/app/src/main/res/values-ru/arrays.xml b/android/app/src/main/res/values-ru/arrays.xml
deleted file mode 100644
index 522bd81b7..000000000
--- a/android/app/src/main/res/values-ru/arrays.xml
+++ /dev/null
@@ -1,277 +0,0 @@
-<resources>
-	<string-array name="settings_console_region_entries">
-		<item>Автоопределение</item>
-		<item>NTSC-J (Япония)</item>
-		<item>NTSC-U (США)</item>
-		<item>PAL (Европа, Австралия)</item>
-	</string-array>
-	<string-array name="settings_cpu_execution_mode_entries">
-		<item>Интерпретатор (самый медленный)</item>
-		<item>Кэшированный интерпретатор (быстрее)</item>
-		<item>Рекомпилятор (самый быстрый)</item>
-	</string-array>
-	<string-array name="settings_cpu_fastmem_mode_entries">
-		<item>Выключен (самый медленный)</item>
-		<item>MMap (аппаратный, самый быстрый, только для 64-бит)</item>
-		<item>LUT (быстрее)</item>
-	</string-array>
-	<string-array name="gpu_renderer_entries">
-		<item>Аппаратный (OpenGL)</item>
-		<item>Аппаратный (Vulkan)</item>
-		<item>Программный</item>
-	</string-array>
-	<string-array name="settings_gpu_resolution_scale_entries">
-		<item>1x</item>
-		<item>2x</item>
-		<item>3x (720p)</item>
-		<item>4x</item>
-		<item>5x (1080p)</item>
-		<item>6x (1440p)</item>
-		<item>7x</item>
-		<item>8x</item>
-		<item>9x (4K)</item>
-		<item>10x</item>
-		<item>11x</item>
-		<item>12x</item>
-		<item>13x</item>
-		<item>14x</item>
-		<item>15x</item>
-		<item>16x</item>
-	</string-array>
-	<string-array name="settings_display_crop_mode_entries">
-		<item>Нет</item>
-		<item>Только вылеты развёртки</item>
-		<item>Все границы</item>
-	</string-array>
-	<string-array name="settings_display_aspect_ratio_names">
-   		<item>Автонастройка (нативно игре)</item>
-    		<item>Автонастройка (под экран)</item>
-    		<item>Вручную</item>
-    		<item>4:3</item>
-    		<item>16:9</item>
-    		<item>19:9</item>
-    		<item>20:9</item>
-    		<item>PAR 1:1</item>
-	</string-array>
-	<string-array name="settings_gpu_texture_filter_names">
-		<item>Метод ближайшего соседа</item>
-		<item>Билинейная</item>
-		<item>Билинейная (без сглаживания краёв)</item>
-		<item>JINC2</item>
-		<item>JINC2 (без сглаживания краёв)</item>
-		<item>xBR</item>
-		<item>xBR (без сглаживания краёв)</item>
-	</string-array>
-	<string-array name="settings_controller_type_entries">
-		<item>Нет</item>
-		<item>Цифровой</item>
-		<item>Аналоговый (DualShock)</item>
-		<item>Аналоговый джойстик</item>
-		<item>NeGcon</item>
-		<item>GunCon</item>
-	</string-array>
-	<string-array name="settings_memory_card_mode_entries">
-		<item>Без карты памяти</item>
-		<item>Общая для всех игр</item>
-		<item>Своя карта для каждой игры (по коду)</item>
-		<item>Своя карта для каждой игры (по названию)</item>
-	</string-array>
-	<string-array name="emulation_touchscreen_menu">
-		<item>Сменить вид</item>
-		<item>Настроить видимость</item>
-		<item>Добавить/убрать кнопки</item>
-		<item>Положение кнопок</item>
-		<item>Размер кнопок</item>
-	</string-array>
-	<string-array name="touchscreen_layout_menu">
-		<item>Настроить видимость</item>
-		<item>Добавить/убрать кнопки</item>
-		<item>Положение кнопок</item>
-		<item>Размер кнопок</item>
-		<item>Сбросить макет</item>
-		<item>Закрыть редактор</item>
-	</string-array>
-	<string-array name="settings_cdrom_read_speedup_entries">
-		<item>Нет (двойная скорость)</item>
-		<item>2x (скорость 4x)</item>
-		<item>3x (скорость 6x)</item>
-		<item>4x (скорость 8x)</item>
-		<item>5x (скорость 10x)</item>
-		<item>6x (скорость 12x)</item>
-		<item>7x (скорость 14x)</item>
-		<item>8x (скорость 16x)</item>
-		<item>9x (скорость 18x)</item>
-		<item>10x (скорость 20x)</item>
-	</string-array>
-	<string-array name="settings_touchscreen_controller_view_entries">
-		<item>Нет</item>
-		<item>Цифровой</item>
-		<item>Аналоговый, один стик</item>
-		<item>Аналоговый, два стика</item>
-		<item>Световой пистолет</item>
-	</string-array>
-	<string-array name="settings_audio_backend_entries">
-		<item>Нет (без звука)</item>
-		<item>Cubeb</item>
-		<item>OpenSL ES (рекомендовано)</item>
-	</string-array>
-	<string-array name="settings_audio_buffer_size_entries">
-		<item>1024 блока (23.22 мс)</item>
-		<item>2048 блоков (46.44 мс, рекомендовано)</item>
-		<item>3072 блока (69.66 мс)</item>
-		<item>4096 блоков (92.88 мс)</item>
-	</string-array>
-	<string-array name="settings_log_level_entries">
-		<item>Нет</item>
-		<item>Error</item>
-		<item>Warning</item>
-		<item>Performance Warnings</item>
-		<item>Information</item>
-		<item>Verbose</item>
-		<item>Developer</item>
-		<item>Profile</item>
-		<item>Debug</item>
-		<item>Trace</item>
-	</string-array>
-	<string-array name="settings_tabs">
-		<item>Основные</item>
-		<item>Экран</item>
-		<item>Звук</item>
-		<item>Улучшения</item>
-		<item>Достижения</item>
-		<item>Расширенные</item>
-	</string-array>
-	<string-array name="settings_gpu_msaa_entries">
-		<item>Выключен</item>
-		<item>2x MSAA</item>
-		<item>4x MSAA</item>
-		<item>8x MSAA</item>
-		<item>2x SSAA</item>
-		<item>4x SSAA</item>
-		<item>8x SSAA</item>
-	</string-array>
-	<string-array name="settings_advanced_display_fps_limit_entries">
-		<item>Без ограничения (выводить все кадры)</item>
-		<item>10 FPS</item>
-		<item>15 FPS</item>
-		<item>30 FPS</item>
-		<item>45 FPS</item>
-		<item>60 FPS</item>
-		<item>75 FPS</item>
-		<item>90 FPS</item>
-	</string-array>
-	<string-array name="settings_emulation_speed_entries">
-		<item>Без ограничения</item>
-		<item>10% [6 FPS (NTSC) / 5 FPS (PAL)]</item>
-		<item>20% [12 FPS (NTSC) / 10 FPS (PAL)]</item>
-		<item>30% [18 FPS (NTSC) / 15 FPS (PAL)]</item>
-		<item>40% [24 FPS (NTSC) / 20 FPS (PAL)]</item>
-		<item>50% [30 FPS (NTSC) / 25 FPS (PAL)]</item>
-		<item>60% [36 FPS (NTSC) / 30 FPS (PAL)]</item>
-		<item>70% [42 FPS (NTSC) / 35 FPS (PAL)]</item>
-		<item>80% [48 FPS (NTSC) / 40 FPS (PAL)]</item>
-		<item>90% [54 FPS (NTSC) / 45 FPS (PAL)]</item>
-		<item>100% [60 FPS (NTSC) / 50 FPS (PAL), по умолчанию]</item>
-		<item>125% [75 FPS (NTSC) / 62 FPS (PAL)]</item>
-		<item>150% [90 FPS (NTSC) / 75 FPS (PAL)]</item>
-		<item>175% [105 FPS (NTSC) / 87 FPS (PAL)]</item>
-		<item>200% [120 FPS (NTSC) / 100 FPS (PAL)]</item>
-		<item>250% [150 FPS (NTSC) / 125 FPS (PAL)]</item>
-		<item>300% [180 FPS (NTSC) / 150 FPS (PAL)]</item>
-		<item>350% [210 FPS (NTSC) / 175 FPS (PAL)]</item>
-		<item>400% [240 FPS (NTSC) / 200 FPS (PAL)]</item>
-		<item>450% [270 FPS (NTSC) / 225 FPS (PAL)]</item>
-		<item>500% [300 FPS (NTSC) / 250 FPS (PAL)]</item>
-		<item>600% [360 FPS (NTSC) / 300 FPS (PAL)]</item>
-		<item>700% [420 FPS (NTSC) / 350 FPS (PAL)]</item>
-		<item>800% [480 FPS (NTSC) / 400 FPS (PAL)]</item>
-		<item>900% [540 FPS (NTSC) / 450 FPS (PAL)]</item>
-		<item>1000% [600 FPS (NTSC) / 500 FPS (PAL)]</item>
-	</string-array>
-	<string-array name="settings_advanced_cpu_overclock_entries">
-		<item>25% (8 МГц)</item>
-		<item>50% (16 МГц)</item>
-		<item>75% (24 МГц)</item>
-		<item>100% (33 МГц, по умолчанию)</item>
-		<item>125% (41 МГц)</item>
-		<item>150% (49 МГц)</item>
-		<item>175% (57 МГц)</item>
-		<item>200% (66 МГц)</item>
-		<item>225% (74 МГц)</item>
-		<item>250% (82 МГц)</item>
-		<item>275% (90 МГц)</item>
-		<item>300% (99 МГц)</item>
-		<item>350% (115 МГц)</item>
-		<item>400% (132 МГц)</item>
-		<item>450% (148 МГц)</item>
-		<item>500% (165 МГц)</item>
-		<item>500% (165 МГц)</item>
-		<item>600% (198 МГц)</item>
-		<item>700% (231 МГц)</item>
-		<item>800% (264 МГц)</item>
-		<item>900% (297 МГц)</item>
-		<item>1000% (330 МГц)</item>
-	</string-array>
-	<string-array name="settings_emulation_screen_orientation_entries">
-		<item>По выбору системы</item>
-		<item>Портретная</item>
-		<item>Ландшафтная</item>
-		<item>По датчику положения</item>
-	</string-array>
-	<string-array name="settings_language_entries">
-        	<item>По выбору системы</item>
-        	<item>Английский</item>
-		<item>Бразильский португальский</item>
-        	<item>Итальянский</item>
-        	<item>Нидерландский</item>
-        	<item>Испанский</item>
-        	<item>Русский</item>
- 	</string-array>
-	<string-array name="settings_theme_entries">
-		<item>По выбору системы</item>
-		<item>Светлая</item>
-		<item>Тёмная</item>
-	</string-array>
-	<string-array name="settings_downsample_mode_entries">
-		<item>Выключен</item>
-		<item>Прямоугольный (понижать 3D/сглаживать всё)</item>
-		<item>Адаптивный (не понижать 3D/сглаживать 2D)</item>
-	</string-array>
-	<string-array name="settings_boolean_entries">
-		<item>Выключено</item>
-		<item>Включено</item>
-	</string-array>
-	<string-array name="settings_multitap_mode_entries">
-        	<item>Отключен</item>
-        	<item>Подключен к порту 1</item>
-        	<item>Подключен к порту 2</item>
-        	<item>Подключен к портам 1 и 2</item>
-    	</string-array>
- 	<string-array name="memory_card_editor_save_menu">
-     		<item>Скопировать сохранение</item>
-     		<item>Удалить сохранение</item>
-        </string-array>
-        <string-array name="settings_touchscreen_controller_port_entries">
-               <item>Порт 1</item>
-               <item>Порт 2</item>
-               <item>Multitap 3</item>
-               <item>Multitap 4</item>
-               <item>Multitap 5</item>
-               <item>Multitap 6</item>
-               <item>Multitap 7</item>
-               <item>Multitap 8</item>
-        </string-array>
-	<string-array name="settings_cdrom_seek_speedup_entries">
-               <item>Нет (обычная скорость)</item>
-               <item>Без задержки</item>
-               <item>2x</item>
-               <item>3x</item>
-               <item>4x</item>
-               <item>5x</item>
-               <item>6x</item>
-               <item>7x</item>
-               <item>8x</item>
-               <item>9x</item>
-               <item>10x</item>
-        </string-array>
-</resources>
diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml
deleted file mode 100644
index c88009189..000000000
--- a/android/app/src/main/res/values-ru/strings.xml
+++ /dev/null
@@ -1,368 +0,0 @@
-<resources>
-	<string name="app_name">DuckStation</string>
-	<string name="action_settings">Настройки</string>
-	<string name="action_controller_mapping">Настройки управления</string>
-	<string name="title_activity_settings">Настройки</string>
-	<string name="settings_console_region">Регион консоли</string>
-	<string name="settings_console_tty_output">Вывод в TTY</string>
-	<string name="settings_console_fast_boot">Быстрый запуск</string>
-	<string name="settings_osd_show_messages">Показывать сообщения</string>
-	<string name="settings_osd_show_speed">Показывать скорость эмуляции</string>
-	<string name="settings_osd_show_show_fps">Показывать частоту кадров в игре</string>
-	<string name="settings_osd_show_show_vps">Показывать частоту кадров дисплея</string>
-	<string name="settings_cpu_execution_mode">Режим работы CPU</string>
-	<string name="settings_gpu_renderer">Графический движок</string>
-	<string name="settings_gpu_resolution_scale">Масштаб разрешения</string>
-	<string name="title_activity_emulation">EmulationActivity</string>
-	<string name="settings_emulation_speed">Скорость эмуляции</string>
-	<string name="settings_fast_forward_speed">Скорость перемотки</string>
-	<string name="settings_save_state_on_exit">Сохранять при выходе</string>
-	<string name="settings_emulation_screen_orientation">Ориентация экрана эмуляции</string>
-	<string name="settings_load_patch_codes">Загружать чит-коды</string>
-	<string name="settings_summary_save_state_on_exit">Автоматически сохранять состояние эмулятора при выходе. Позволяет продолжить игру с места остановки.</string>
-	<string name="settings_summary_load_patch_codes">Загружать чит-коды из cheats/&lt;название игры&gt;.cht в формате PCSXR или Libretro. Коды можно активировать после запуска игры.</string>
-	<string name="settings_apply_compatibility_settings">Применять настройки совместимости</string>
-	<string name="settings_summary_apply_compatibility_settings">Автоматически отключать улучшения, которые не поддерживаются играми.</string>
-	<string name="settings_summary_video_sync">Включите для синхронизации частоты обновления DuckStation с частотой экрана устройства. Синхронизация автоматически выключится, если скорость эмуляции не равна 100%.</string>
-	<string name="settings_video_sync">Видеосинхронизация</string>
-	<string name="settings_cpu_overclocking">Разгон CPU</string>
-	<string name="settings_cdrom_region_check">Проверка региона CD-ROM</string>
-	<string name="settings_summary_cdrom_region_check">Снижает вероятность некорректного определения региона диска эмулятором. Как правило, не влияет на стабильность.</string>
-	<string name="settings_cdrom_preload_image_to_ram">Предзагрузка образа CD-ROM в ОЗУ</string>
-	<string name="settings_summary_preload_image_to_ram">Загружать образ диска в оперативную память. Полезно при запуске игр с ненадёжных сетевых ресурсов. В некоторых случаях помогает устранить замедления при запуске игрой аудиодорожек.</string>
-	<string name="settings_pgxp_vertex_cache">Вершинный кэш PGXP</string>
-	<string name="settings_summary_pgxp_vertex_cache">Использовать координаты экрана в качестве резервных при отслеживании вершин с помощью отказов памяти. Может улучшать совместимость PGXP.</string>
-	<string name="settings_pgxp_cpu_mode">Режим CPU PGXP</string>
-	<string name="settings_summary_pgxp_cpu_mode">Пытаться отслеживать смещения вершин с помощью CPU. Требуется для правильной работы PGXP в некоторых играх. Существенно влияет на производительность.</string>
-	<string name="settings_cpu_recompiler_icache">Рекомпиляция кэша команд CPU</string>
-	<string name="settings_summary_cpu_recompiler_icache">Включить симуляцию кэша команд CPU в рекомпиляторе. Повышает точность, незначительно снижая производительность. Попробуйте включить, если игры идут слишком быстро.</string>
-	<string name="settings_cpu_recompiler_fastmem">Быстрый доступ к памяти в рекомпиляторе CPU</string>
-	<string name="settings_summary_cpu_recompiler_fastmem">Повышает эффективность доступа к гостевой памяти с помощью бэкпатчей и ошибок страниц. Отключите при нестабильной работе на устройстве.</string>
-	<string name="settings_presented_frame_limit">Ограничение частоты кадров</string>
-	<string name="settings_logging_level">Уровень логирования</string>
-	<string name="settings_log_to_file">Лог в файл</string>
-	<string name="settings_summary_log_to_file">Записывать сообщения лога в duckstation.log в папке эмулятора. Из-за снижения скорости эмуляции используйте только для отладки.</string>
-	<string name="settings_log_to_logcat">Лог в Logcat</string>
-	<string name="settings_summary_log_to_logcat">Записывать сообщения лога в журнал отладки Android. Полезно только при подключении к компьютеру с adb.</string>
-	<string name="settings_volume">Громкость</string>
-	<string name="settings_summary_volume">Изменение громкости звука эмулятора.</string>
-	<string name="settings_fast_forward_volume">Громкость при ускорении</string>
-	<string name="settings_summary_fast_forward_volume">Изменение громкости звука при ускоренной перемотке.</string>
-	<string name="settings_mute_all_sound">Отключить звук</string>
-	<string name="settings_summary_mute_all_sound">Отключает вывод звука в эмуляторе.</string>
-	<string name="settings_mute_cd_audio">Отключить CD аудио</string>
-	<string name="settings_summary_mute_cd_audio">Принудительное отключение CD-DA и XA дорожек диска. Может использоваться для отключения фоновой музыки в играх.</string>
-	<string name="settings_audio_backend">Аудио бэкенд</string>
-	<string name="settings_audio_buffer_size">Размер аудио буфера</string>
-	<string name="settings_summary_audio_buffer_size">Определяет задержку звука между обработкой и выводом. Меньшие значения снижают задержку, но вызывают треск при нестабильной скорости эмуляции.</string>
-	<string name="settings_audio_sync">Аудиосинхронизация</string>
-	<string name="settings_summary_audio_sync">Ускоряет эмуляцию в зависимости от скорости вывода блоков бэкендом. Помогает устранить искажения звука, если эмуляция идёт слишком быстро. Синхронизация автоматически выключается, если скорость эмуляции не равна 100%.</string>
-	<string name="settings_controller_type">Тип контроллера</string>
-	<string name="settings_enable_analog_mode_on_reset">Аналоговый режим при сбросе</string>
-	<string name="settings_touchscreen_controller_view">Вид экранного геймпада</string>
-	<string name="settings_auto_hide_touchscreen_controller">Автоотключение экранного геймпада</string>
-	<string name="settings_summary_auto_hide_touchscreen_controller">Скрывать экранный геймпад при подключении внешнего устройства ввода.</string>
-	<string name="settings_vibrate_on_press">Вибрация при касании</string>
-	<string name="settings_summary_vibrate_on_press">Включить короткую вибрацию при нажатии экранных кнопок. Виброотклик должен быть включен в настройках системы.</string>
-	<string name="settings_enable_vibration">Включить вибрацию</string>
-	<string name="settings_summary_enable_vibration">Перенаправлять отдачу в игре на вибромотор смартфона.</string>
-	<string name="settings_memory_card_1_type">Тип карты памяти 1</string>
-	<string name="settings_memory_card_2_type">Тип карты памяти 2</string>
-	<string name="settings_crop_mode">Режим обрезки</string>
-	<string name="settings_aspect_ratio">Соотношение сторон</string>
-	<string name="settings_linear_upscaling">Линейное масштабирование</string>
-	<string name="settings_integer_upscaling">Целочисленное масштабирование</string>
-	<string name="settings_summary_linear_upscaling">Сглаживает картинку при масштабировании изображения с консоли под экран.</string>
-	<string name="settings_summary_integer_upscaling">Добавляет пустое пространство к изображению, чтобы пиксельное соотношение устройства и консоли равнялось целому числу. Позволяет получить более чёткую картинку в 2D-играх.</string>
-	<string name="settings_summary_osd_show_messages">Выводить на экран сообщения о системных событиях, таких как сохранение/загрузка, снимок экрана и т.д.</string>
-	<string name="settings_summary_osd_show_speed">Показывать скорость эмуляции в процентах в правом верхнем углу экрана.</string>
-	<string name="settings_summary_osd_show_fps">Показывать внутреннюю частоту кадров игры в правом верхнем углу экрана.</string>
-	<string name="settings_summary_osd_show_vps">Показывать количество кадров (синхронизаций) в секунду в правом верхнем углу экрана.</string>
-	<string name="settings_cdrom_read_speedup">Ускорение чтения CD-ROM</string>
-	<string name="settings_summary_cdrom_read_speedup">Повышает скорость считывания диска на заданный множитель. Применяется только в режиме чтения с удвоенной скоростью и не учитывается при воспроизведении аудио. Ускоряет загрузки в некоторых играх, но может приводить к ошибкам.</string>
-	<string name="settings_summary_console_fast_boot">Пропускать заставку BIOS, загружаясь прямо в игру. Как правило, не влияет на стабильность.</string>
-	<string name="settings_msaa">Мультисэмплинг</string>
-	<string name="settings_true_color">Рендеринг в True Color (24-бита, без дизеринга)</string>
-	<string name="settings_summary_true_color">Обеспечивает более качественные градиенты, но меняет отображение некоторых цветов. Отключение опции также включает дизеринг. Совместимо с большинством игр.</string>
-	<string name="settings_scaled_dithering">Масштабировать дизеринг</string>
-	<string name="settings_summary_scaled_dithering">Масштабировать паттерн дизеринга под разрешение эмулируемого GPU, маскируя эффект зашумления на высоких разрешениях. Поддерживается только аппаратными рендерами и обычно не влияет на стабильность.</string>
-	<string name="settings_disable_interlacing">Отключить чересстрочность</string>
-	<string name="settings_summary_disable_interlacing">Принудительный рендеринг и вывод кадров в прогрессивной развёртке. Убирает эффект \"гребёнки\" для игр в 480i. Как правило, не влияет на стабильность.</string>
-	<string name="settings_texture_filtering">Фильтрация текстур</string>
-	<string name="settings_force_ntsc_timings">Принудительный NTSC-тайминг (PAL в 60 Гц)</string>
-	<string name="settings_summary_force_ntsc_timings">Использовать NTSC-тайминги кадра когда консоль в режиме PAL, тем самым принудительно запуская игры PAL в 60 Гц.</string>
-	<string name="settings_widescreen_hack">Широкоформатный хак</string>
-	<string name="settings_summary_widescreen_hack">Масштабировать позиции вершин в пространстве экрана до широкоформатных соотношений сторон, расширяя область обзора в 3D-играх с 4:3 до 16:9. Несовместимо с некоторыми играми.</string>
-	<string name="settings_force_4_3_for_24bit">Использовать 4:3 для 24-бит</string>
-	<string name="settings_summary_force_4_3_for_24bit">Переключаться обратно на соотношение сторон 4:3 при выводе 24-битного контента, например видео.</string>
-	<string name="settings_chroma_smoothing_24bit">Сглаживание цвета для 24-бит</string>
-	<string name="settings_summary_chrome_smoothing_24bit">Сглаживать блочность цветовых переходов в 24-битном контенте, например видео. Поддерживается только аппаратными рендерами.</string>
-	<string name="settings_pgxp_geometry_correction">Коррекция геометрии PGXP</string>
-	<string name="settings_summary_pgxp_geometry_correction">Уменьшает дрожание и неровность текстур, характерные для PS1. Поддерживается только аппаратными рендерами. Несовместимо с некоторыми играми.</string>
-	<string name="settings_pgxp_culling_correction">Коррекция выборки PGXP</string>
-	<string name="settings_summary_pgxp_culling_correction">Повышает точность отбраковки полигонов, снижая количество провалов в геометрии. Требуется включение коррекции геометрии.</string>
-	<string name="settings_pgxp_texture_correction">Коррекция текстур PGXP</string>
-	<string name="settings_summary_pgxp_texture_correction">Использовать перспективно-корректную интерполяцию координат текстур и цветов для выпрямления неровности текстур. Должна быть включена коррекция геометрии.</string>
-	<string name="settings_pgxp_preserve_projection_precision">Точность проекции PGXP</string>
-	<string name="settings_summary_pgxp_preserve_projection_precision">Включает повышенную точность PGXP. Может улучшать графику в некоторых играх, но в других вызывать ошибки.</string>
-	<string name="settings_pgxp_depth_buffer">Буфер глубины PGXP</string>
-	<string name="settings_summary_pgxp_depth_buffer">Пытаться устранять наложения полигонов проверкой пикселей по значениям глубины PGXP. Обладает низкой совместимостью, но в ряде игр даёт хороший эффект.</string>
-	<string name="menu_main_resume_last_session">Продолжить сеанс</string>
-	<string name="menu_main_start_file">Открыть файл</string>
-	<string name="menu_main_start_bios">Запустить BIOS</string>
-	<string name="menu_main_edit_game_directories">Настроить каталоги игр</string>
-	<string name="menu_main_scan_for_new_games">Обновить список игр</string>
-	<string name="menu_main_rescan_all_games">Проверить игры в списке</string>
-	<string name="menu_main_import_bios">Импортировать BIOS</string>
-	<string name="menu_main_show_version">Версия приложения</string>
-	<string name="menu_main_github_repository">Репозиторий GitHub</string>
-	<string name="menu_main_discord_server">Сервер Discord</string>
-	<string name="menu_game_list_entry_start_game">Запустить</string>
-	<string name="menu_game_list_entry_resume_game">Продолжить</string>
-	<string name="android_progress_callback_please_wait">Пожалуйста, подождите...</string>
-	<string name="android_progress_callback_ok">OK</string>
-	<string name="android_progress_callback_information">Информация</string>
-	<string name="android_progress_callback_confirmation">Подтверждение</string>
-	<string name="android_progress_callback_yes">Да</string>
-	<string name="android_progress_callback_no">Нет</string>
-	<string name="emulation_activity_error">Ошибка</string>
-	<string name="emulation_activity_ok">OK</string>
-	<string name="emulation_activity_import_patch_codes">Импорт чит-кодов...</string>
-	<string name="emulation_activity_patch_on">(ВКЛ)</string>
-	<string name="emulation_activity_patch_off">(ВЫКЛ)</string>
-	<string name="emulation_activity_choose_patch_code_file">Выберите файл с чит-кодами</string>
-	<string name="emulation_activity_failed_to_import_patch_codes">Не удалось импортировать чит-коды. Убедитесь, что выбранный файл в формате PCSXR или Libretro.</string>
-	<string name="main_activity_choose_directory">Выберите каталог</string>
-	<string name="main_activity_error">Ошибка</string>
-	<string name="main_activity_get_path_from_file_error">Не удалось получить путь к указанному файлу. Пожалуйста, убедитесь, что файл присутствует во внутреннем/внешнем хранилище. Нажмите значок настроек в окне выбора каталога. Включите отображение внутренней памяти. Нажмите кнопку меню и выберите устройство или SD-карту.</string>
-	<string name="main_activity_ok">OK</string>
-	<string name="main_activity_get_path_from_directory_error">Не удалось получить путь к указанному каталогу. Пожалуйста, убедитесь, что каталог присутствует во внутреннем/внешнем хранилище. Нажмите значок настроек в окне выбора каталога. Включите отображение внутренней памяти. Нажмите кнопку меню и выберите устройство или SD-карту.</string>
-	<string name="main_activity_external_storage_permissions_error">DuckStation требуется разрешение для доступа к внешнему хранилищу.</string>
-	<string name="main_activity_choose_disc_image">Выберите образ диска</string>
-	<string name="main_activity_missing_bios_image_prompt">Не найдены образы BIOS в папке bios эмулятора. Указать путь и импортировать образ BIOS сейчас?</string>
-	<string name="main_activity_missing_bios_image">Отсутствует образ BIOS</string>
-	<string name="main_activity_yes">Да</string>
-	<string name="main_activity_no">Нет</string>
-	<string name="main_activity_choose_bios_image">Выберите образ BIOS</string>
-	<string name="main_activity_failed_to_open_bios_image">Не удалось открыть образ BIOS.</string>
-	<string name="main_activity_failed_to_read_bios_image_prefix">\"Не удалось прочитать образ BIOS: \"</string>
-	<string name="main_activity_bios_image_too_large">Образ BIOS слишком большой. Вы должны выбрать образ BIOS, а не игру, и он должен быть размером 512 KB.</string>
-	<string name="main_activity_invalid_error">Образ BIOS неправильный или уже был импортирован.</string>
-	<string name="main_activity_show_version_title">Версия</string>
-	<string name="main_activity_copy">Копировать</string>
-	<string name="settings_gpu_thread">Рендеринг GPU в отдельном потоке</string>
-	<string name="settings_summary_gpu_thread">Использовать второй поток для отрисовки графики. В настоящее время поддерживается только программным рендерингом, существенно повышая производительность и не влияя на стабильность.</string>
-	<string name="settings_gpu_threaded_presentation">Вывод с GPU в отдельном потоке</string>
-	<string name="settings_summary_gpu_threaded_presentation">Выводить кадры в фоновом потоке когда не используется ускорение или видеосинхронизация. Может значительно повысить производительность при рендеринге на Vulkan.</string>
-	<string name="settings_language">Язык (требуется перезапуск)</string>
-	<string name="touchscreen_controller_stop_editing">Закрыть редактор</string>
-	<string name="touchscreen_controller_reset_layout">Сбросить макет</string>
-	<string name="emulation_activity_touchscreen_controller_not_active">Экранный геймпад неактивен.</string>
-	<string name="settings_theme">Тема</string>
-	<string name="settings_controller_mapping_summary">Настроить привязки подключенного геймпада к кнопкам и осям эмулируемого контроллера.</string>
-	<string name="settings_controller_mapping">Настройка геймпада</string>
-	<string name="controller_binding_dialog_message">Нажмите кнопку геймпада для установки новой привязки.\n\nТекущая привязка: %s</string>
-	<string name="controller_binding_dialog_no_binding">&lt;Нет привязки&gt;</string>
-	<string name="controller_binding_dialog_cancel">Отмена</string>
-	<string name="controller_binding_dialog_clear">Удалить</string>
-	<string name="controller_mapping_activity_title">Управление</string>
-	<string name="controller_mapping_activity_no_profiles_found">Профили не найдены.</string>
-	<string name="controller_mapping_activity_select_input_profile">Профиль устройства ввода</string>
-	<string name="controller_mapping_activity_failed_to_load_profile">Не удалось загрузить профиль \'%s\'</string>
-	<string name="controller_mapping_activity_input_profile_name">Имя профиля ввода:</string>
-	<string name="controller_mapping_activity_save">Сохранить</string>
-	<string name="controller_mapping_activity_name_must_be_provided">Требуется ввести имя.</string>
-	<string name="controller_mapping_activity_failed_to_save_input_profile">Не удалось сохранить профиль ввода.</string>
-	<string name="controller_mapping_activity_input_profile_saved">Профиль ввода \'%s\' сохранён.</string>
-	<string name="controller_mapping_activity_cancel">Отмена</string>
-	<string name="settings_use_analog_sticks_for_dpad">Джойстик как d-pad в цифровом режиме</string>
-	<string name="settings_summary_enable_analog_mode_on_reset">Переключить контроллер в аналоговый режим при включении/перезагрузке консоли.</string>
-	<string name="settings_summary_use_analog_sticks_for_dpad">Использовать аналоговый джойстик как d-pad в цифровом режиме DualShock.</string>
-	<string name="settings_disable_all_enhancements">Отключить улучшения</string>
-	<string name="settings_summary_disable_all_enhancements">Временно отключить все улучшения. Используйте для отладки.</string>
-	<string name="settings_downsample_mode">Даунсэмплинг</string>
-	<string name="activity_game_properties">Свойства</string>
-	<string name="game_properties_preference_use_global_setting">Глобальная настройка</string>
-	<string name="settings_input_profile">Профиль ввода</string>
-	<string name="game_properties_tab_summary">Сведения</string>
-	<string name="game_properties_tab_game_settings">Настройки игры</string>
-	<string name="game_properties_tab_controller_settings">Настройки контроллера</string>
-	<string name="settings_audio_resampling">Аудио ресэмплинг</string>
-	<string name="settings_summary_audio_resampling">Изменять частоту звука вместо пропуска блоков, если скорость эмуляции отличается от 100%. Улучшает звук при ускорении/замедлении, незначительно влияя на производительность.</string>
-	<string name="settings_general_sync_to_host_refresh_rate">Синхронизировать с частотой хоста</string>
-	<string name="settings_summary_general_sync_to_host_refresh_rate">Подстраивать скорость эмуляции для совпадения частоты обновления консоли с частотой хоста, если включены Видеосинхронизация и Аудио ресэмплинг. Обеспечивает наиболее плавную анимацию за счёт возможного завышения скорости менее чем на 1%.</string>
-	<string name="settings_sustained_performance_mode">Режим устойчивой производительности</string>
-	<string name="settings_summary_sustained_performance_mode">Включить режим устойчивой производительности Андроид. Обеспечивает стабильный фреймрейт при продолжительных сеансах игры на некоторых устройствах.</string>
-	<string name="title_activity_game_directories">Настройка каталогов игр</string>
-	<string name="settings_game_directories">Каталоги игр</string>
-	<string name="settings_summary_game_directories">Редактировать список каталогов для поиска игр.</string>
-	<string name="game_directories_scanning_subdirectories">Сканировать подкаталоги.</string>
-	<string name="game_directories_not_scanning_subdirectories">Не сканировать подкаталоги.</string>
-	<string name="settings_display_all_frames">Оптимальное распределение кадров</string>
-	<string name="settings_summary_display_all_frames">Включение настройки гарантирует вывод всех кадров с консоли на экран для оптимального распределения. Попробуйте отключить, если не получается достичь полной скорости или есть проблемы со звуком.</string>
-	<string name="menu_edit_game_directories_add_directory">Добавить каталог</string>
-    	<string name="menu_edit_game_directories_add_path">Добавить путь</string>
-    	<string name="edit_game_directories_add_path">Добавить путь</string>
-    	<string name="edit_game_directories_add_path_summary">Введите полный путь к каталогу с играми.\n\nВы можете уточнить его с помощью файлового менеджера.\n\nПример: /storage/emulated/0/games</string>
-        <string name="save_state_info_slot_is_empty">Свободный слот</string>
-    	<string name="save_state_info_game_save_n">Сохранение %d</string>
-    	<string name="save_state_info_global_save_n">Глобальное сохранение %d</string>
-    	<string name="save_state_info_quick_save">Быстрое сохранение</string>
-	<string name="settings_osd_show_show_resolution">Показывать разрешение</string>
-        <string name="settings_summary_osd_show_resolution">Показывать разрешение рендеринга игры в правом верхнем углу экрана.</string>
-	<string name="settings_summary_display_stretch">Растягивать изображение до границ экрана.</string>
-    	<string name="settings_display_stretch">Растягивать на весь экран</string>
-    	<string name="settings_category_global">Основные настройки</string>
-    	<string name="settings_category_display">Настройки экрана</string>
-    	<string name="settings_category_audio">Настройки звука</string>
-    	<string name="settings_category_console">Настройки консоли</string>
-    	<string name="settings_category_cpu">Настройки CPU</string>
-    	<string name="settings_category_gpu">Настройки GPU</string>
-    	<string name="settings_category_logging">Настройки логирования</string>
-    	<string name="dialog_done">Сохранить</string>
-    	<string name="dialog_touchscreen_controller_type">Вид экранного геймпада</string>
-    	<string name="dialog_touchscreen_controller_opacity">Видимость экранного геймпада</string>
-    	<string name="dialog_touchscreen_controller_buttons">Кнопки экранного геймпада</string>
-	<string name="dialog_touchscreen_controller_settings">Настройки экранного геймпада</string>
-	<string name="settings_summary_console_tty_output">Выводить отладочную информацию по игре в консоль.</string>
-        <string name="action_show_game_list">Вид списка</string>
-        <string name="action_show_game_grid">Вид сетки</string>
-        <string name="settings_touch_gliding">Скольжение касаний</string>
-        <string name="settings_summary_touch_gliding">Позволяет нажимать комбинации кнопок скольжением пальца по экрану.</string>
-	<string name="menu_game_list_entry_game_properties">Свойства</string>
-	<string name="emulation_activity_change_disc_select_new_file">Выбрать файл...</string>
-	<string name="settings_achievements_enable">Включить достижения</string>
-    	<string name="settings_summary_achievements_enable">Если опция включена и выполнен вход в учётную запись, DuckStation будет искать достижения при запуске игр.</string>
-    	<string name="settings_achievements_challenge_mode">Режим хардкора</string>
-    	<string name="settings_summary_achievements_challenge_mode">Соревновательный режим. Отключает сохранение состояния, чит-коды, возможность замедления, но удваивает количество получаемых очков достижений. Нельзя включить во время игры.</string>
-    	<string name="settings_achievements_rich_presence">Расширенный статус</string>
-    	<string name="settings_summary_achievements_rich_presence">Если поддерживается, собирать и отсылать на сервер расширенную информацию.</string>
-    	<string name="settings_achievements_username">Имя пользователя</string>
-    	<string name="settings_achievements_token_generation_time">Время генерации маркера доступа</string>
-    	<string name="settings_achievements_login">Вход</string>
-    	<string name="settings_summary_achievements_login">Войти в учётную запись для получения достижений.</string>
-    	<string name="settings_achievements_register">Регистрация</string>
-    	<string name="settings_summary_achievements_register">Открыть ссылку для создания новой учётной записи.</string>
-    	<string name="settings_achievements_logout">Выход</string>
-    	<string name="settings_summary_achievements_logout">Выйти из аккаунта. Получение достижений будет остановлено.</string>
-    	<string name="settings_achievements_view_profile">Просмотр профиля</string>
-    	<string name="settings_summary_achievements_view_profile">Открыть ссылку на ваш профиль.</string>
-    	<string name="settings_achievements_test_mode">Тестовый режим</string>
-    	<string name="settings_summary_achievements_test_mode">Если включено, DuckStation будет считать, что все достижения закрыты и не будет отправлять уведомления об открытии на сервер.</string>
-    	<string name="settings_achievements_use_first_disc_from_playlist">Использовать первый диск в плейлисте</string>
-    	<string name="settings_summary_achievements_use_first_disc_from_playlist">Если включено, для получения достижений будет использоваться первый диск в плейлисте, независимо от активного диска.</string>
-    	<string name="achievement_settings_login_title">Вход в RetroAchievements</string>
-    	<string name="achievement_settings_login_help">Пожалуйста, введите логин и пароль для retroachievements.org. Ваш пароль не хранится в DuckStation. Вместо этого будет сгенерирован маркер доступа.</string>
-    	<string name="achievement_settings_login_username_hint">Логин</string>
-    	<string name="achievement_settings_login_password_hint">Пароль</string>
-    	<string name="achievement_settings_login_login_button">Вход</string>
- 	<string name="achievement_settings_login_cancel_button">Отмена</string>
-    	<string name="achievement_settings_login_failed">Ошибка входа. Пожалуйста, проверьте логин и пароль и повторите попытку.</string>
-    	<string name="achievement_points_format_string">%d очков</string>
-    	<string name="achievement_summary_format_string">Вы открыли %1$d из %2$d достижений, заработав %3$d очков из %4$d возможных.</string>
-    	<string name="achievement_title_challenge_mode_format_string">%s (Режим хардкора)</string>
-    	<string name="settings_achievements_disclaimer">DuckStation использует RetroAchievements (retroachievements.org) для отслеживания прогресса и получения данных о достижениях.</string>
-    	<string name="settings_achievements_confirm_logout_title">Подтвердите выход</string>
-    	<string name="settings_achievements_confirm_logout_message">Завершение сеанса отключит получение достижений до следующего входа в учётную запись. Открытые ранее достижения не будут утеряны.</string>
-	<string name="controller_binding_device_for_vibration">Вибрация для устройства</string>
-    	<string name="controller_settings_tab_settings">Настройки</string>
-    	<string name="controller_settings_tab_hotkeys">Горячие клавиши</string>
-    	<string name="controller_settings_category_button_bindings">Привязки кнопок</string>
-    	<string name="controller_settings_category_axis_bindings">Привязки осей</string>
-    	<string name="controller_settings_category_settings">Настройки</string>
-    	<string name="controller_settings_category_touchscreen_controller">Экранный геймпад</string>
-    	<string name="controller_settings_category_ports">Порты</string>
-    	<string name="controller_settings_main_port_format">Порт %d</string>
-    	<string name="controller_settings_sub_port_format">Порт %1$d%2$c</string>
-        <string name="action_switch_view">Сменить вид</string>
-	<string name="title_activity_memory_card_editor">Редактор карт памяти</string>
-	<string name="action_memory_card_editor">Редактор карт памяти</string>
-	<string name="action_memory_card_editor_import_card">Импорт карты</string>
-	<string name="action_memory_card_editor_open_card">Открыть карту</string>
-	<string name="action_memory_card_editor_new_card">Новая карта</string>
-	<string name="action_memory_card_editor_format_card">Форматировать</string>
-	<string name="action_memory_card_editor_delete_card">Удалить карту</string>
-	<string name="memory_card_editor_no_cards_found">Карты памяти не найдены.</string>
-	<string name="memory_card_editor_card_already_open">Данная карта уже открыта.</string>
-	<string name="memory_card_editor_failed_to_open_card">Не удалось открыть или прочитать карту памяти.</string>
-	<string name="memory_card_editor_must_have_at_least_two_cards_to_copy">Для копирования требуется открыть минимум две карты памяти.</string>
-	<string name="memory_card_editor_copy_save_to">Скопировать %s в...</string>
-	<string name="memory_card_editor_select_card">Выбор карты</string>
-	<string name="memory_card_editor_error">Ошибка</string>
-	<string name="memory_card_editor_copy_insufficient_blocks">Для данного файла требуется %1$d блока, но свободно только %2$d.</string>
-	<string name="memory_card_editor_copy_already_exists">Файл \'%s\' уже создан на целевой карте памяти.</string>
-	<string name="memory_card_editor_copy_read_failed">Не удалось прочитать файл \'%s\' с исходной карты памяти.</string>
-	<string name="memory_card_editor_copy_write_failed">Не удалось записать файл \'%s\' на целевую карту памяти.</string>
-	<string name="memory_card_editor_copy_success">\'%1$s\' скопировано в \'%2$s\'.</string>
-	<string name="memory_card_editor_delete_confirm">Вы действительно хотите удалить сохранение \'%s\'?</string>
-	<string name="memory_card_editor_delete_success">Сохранение \'%s\' удалено.</string>
-	<string name="memory_card_editor_delete_failed">Не удалось удалить файл \'%s\'.</string>
-	<string name="memory_card_editor_no_card_selected">Карта не выбрана.</string>
-	<string name="memory_card_editor_import_failed">Не удалось импортировать карту памяти. Возможно, формат не поддерживается.</string>
-	<string name="memory_card_editor_delete_card_confirm_message">Карта памяти \'%s\' будет удалена без возможности восстановления. Вы действительно хотите удалить данную карту?</string>
-	<string name="memory_card_editor_delete_card_failed">Не удалось удалить \'%s\'.</string>
-	<string name="memory_card_editor_delete_card_success">Карта \'%s\' удалена.</string>
-	<string name="memory_card_editor_format_card_confirm_message">Карта памяти \'%s\' будет отформатирована с удалением всех сохранений. Вы действительно хотите отформатировать данную карту?</string>
-	<string name="memory_card_editor_format_card_failed">Не удалось отформатировать \'%s\'.</string>
-	<string name="memory_card_editor_format_card_success">Карта \'%s\' отформатирована.</string>
-	<string name="memory_card_editor_import_card_confirm_message">Импортирование \'%1$s\' удалит все сохранения на \'%2$s\'. Продолжить?</string>
-	<string name="memory_card_editor_import_card_read_failed">Не удалось прочитать \'%s\'.</string>
-	<string name="memory_card_editor_import_card_failed">Не удалось импортировать карту \'%s\'. Возможно, формат не поддерживается.</string>
-	<string name="memory_card_editor_import_card_success">Карта \'%s\' импортирована.</string>
-	<string name="menu_game_list_entry_choose_cover_image">Обложка</string>
-	<string name="controller_settings_vibration_unsupported">Данное устройство не поддерживает вибрацию.</string>
-	<string name="controller_settings_automatic_mapping">Выполнить автонастройку</string>
-	<string name="controller_settings_summary_automatic_mapping">Попытаться автоматически привязать все кнопки/оси для подключенного устройства.</string>
-	<string name="controller_settings_clear_controller_bindings">Сброс привязок</string>
-	<string name="controller_settings_summary_clear_controller_bindings">Удалить привязки для всех кнопок и осей текущего устройства.</string>
-	<string name="controller_settings_clear_controller_bindings_confirm">Вы действительно хотите удалить все привязки? Это действие нельзя отменить.</string>
-	<string name="controller_settings_clear_controller_bindings_done">Удалены привязки для устройства %d.</string>
-	<string name="controller_auto_mapping_no_devices">Подходящие устройства не найдены. Автонастройка поддерживается только для геймпадов. Вы можете настроить прочие устройства вручную.</string>
-	<string name="controller_auto_mapping_select_device">Выбор устройства</string>
-	<string name="controller_auto_mapping_results">Результаты автонастройки</string>
-	<string name="main_activity_empty_game_list_title">Игры не найдены. Пожалуйста, добавьте каталог с играми или выберите файл вручную.</string>
-	<string name="main_activity_empty_game_list_supported_formats">Поддерживаемые форматы:\n\n%s\n\nДля игр в формате bin требуется наличие файла разметки (.cue).</string>
-	<string name="main_activity_empty_game_list_add_directory">Добавить каталог с играми</string>
-	<string name="main_activity_empty_game_list_start_file">Открыть файл</string>
-	<string name="update_notes_title">Примечание к обновлению</string>
-	<string name="update_notes_message_version_controller_update">В данном обновлении DuckStation добавлена возможность подключения нескольких геймпадов с поддержкой отдачи, поддержка клавиатур, возможность привязки действий к кнопкам громкости.\n\nТребуется перенастроить привязки геймпадов, иначе они перестанут функционировать. Выполнить это сейчас?</string>
-	<string name="settings_osd_show_show_inputs">Показывать нажатия контроллера</string>
-    	<string name="settings_summary_osd_show_inputs">Показывать системное состояние контроллера в левом нижнем углу экрана.</string>
-	<string name="touchscreen_controller_edit_menu">Меню редактора</string>
-    	<string name="settings_achievements_category">Учётная запись</string>
-    	<string name="settings_achievements_global_settings">Глобальные настройки</string>
-    	<string name="settings_category_achievements">Настройки достижений</string>
-    	<string name="settings_multitap_mode">Режим Multitap</string>
-        <string name="settings_touchscreen_controller_port">Порт экранного геймпада</string>
-	<string name="emulation_menu_load_state">Загрузить состояние</string>
-   	<string name="emulation_menu_save_state">Сохранить состояние</string>
- 	<string name="emulation_menu_toggle_fast_forward">Вкл./выкл. ускорение</string>
-	<string name="emulation_menu_achievements">Достижения</string>
-	<string name="emulation_menu_patch_codes">Чит-коды</string>
-   	<string name="emulation_menu_change_disc">Сменить диск</string>
-  	<string name="emulation_menu_touchscreen_controller_settings">Экранный геймпад</string>
-   	<string name="emulation_menu_toggle_analog_mode">Режим контроллера</string>
-   	<string name="emulation_menu_reset_console">Сброс консоли</string>
-	<string name="emulation_menu_exit_game">Закрыть игру</string>
-	<string name="settings_use_software_renderer_for_readbacks">Софт-рендер для обратных считываний</string>
-	<string name="settings_summary_use_software_renderer_for_readbacks">Запускать параллельно программный рендер для обратных считываний VRAM. На некоторых устройствах может существенно повысить скорость при использовании улучшений на аппаратном рендеринге.</string>
-    	<string name="settings_use_software_renderer">Использовать программный рендер</string>
-    	<string name="settings_disable_widescreen">Отключить широкоформатный режим</string>
-	<string name="settings_cdrom_seek_speedup">Ускорение поиска по CD-ROM</string>
-        <string name="settings_summary_cdrom_seek_speedup">Повышает скорость поиска по диску на указанный множитель. В некоторых играх ускоряет подгрузки, но может приводить к ошибкам.</string>
-	<string name="settings_custom_aspect_ratio">Ручная установка соотношения сторон</string>
-     	<string name="settings_summary_custom_aspect_ratio">Применяется, если для соотношения сторон выбрана ручная настройка.</string>
-    	<string name="controller_settings_category_auto_fire_buttons">Турбо-кнопки</string>
-    	<string name="controller_settings_category_auto_fire_bindings">Активаторы турбо</string>
-    	<string name="controller_settings_auto_fire_n_button">Турбо-кнопка %d</string>
-    	<string name="controller_settings_auto_fire_n_frequency">Частота/интервал турбо %d</string>
-    	<string name="controller_binding_auto_fire_n">Турбо %d</string>
-	<string name="settings_category_cdrom">Настройки CD-ROM</string>
-        <string name="settings_cdrom_read_thread">Производить чтение в потоке (асинхронно)</string>
-        <string name="settings_summary_read_thread">Уменьшает задержки в эмуляции с помощью асинхронного чтения/распаковки данных диска в рабочем потоке.</string>
-        <string name="settings_cdrom_load_image_patches">Применять патчи к образам</string>
-        <string name="settings_summary_load_image_patches">Автоматически применять патчи к образам дисков при их наличии. В настоящее время поддерживается только формат PPF.</string>
-        <string name="menu_edit_game_directories_force_saf">Вкл. Scoped Storage</string>
-	<string name="settings_expand_to_cutout">Добавлять область выреза</string>
-    	<string name="settings_summary_expand_to_cutout">Расширяет изображение, используя область выреза.</string>
-</resources>
diff --git a/android/app/src/main/res/values/arrays.xml b/android/app/src/main/res/values/arrays.xml
deleted file mode 100644
index 4d214c260..000000000
--- a/android/app/src/main/res/values/arrays.xml
+++ /dev/null
@@ -1,525 +0,0 @@
-<resources>
-    <string-array name="settings_console_region_entries">
-        <item>Auto-Detect</item>
-        <item>NTSC-J (Japan)</item>
-        <item>NTSC-U (US)</item>
-        <item>PAL (Europe, Australia)</item>
-    </string-array>
-    <string-array name="settings_console_region_values">
-        <item>Auto</item>
-        <item>NTSC-J</item>
-        <item>NTSC-U</item>
-        <item>PAL</item>
-    </string-array>
-    <string-array name="settings_cpu_execution_mode_entries">
-        <item>Interpreter (Slowest)</item>
-        <item>Cached Interpreter (Faster)</item>
-        <item>Recompiler (Fastest)</item>
-    </string-array>
-    <string-array name="settings_cpu_execution_mode_values">
-        <item>Interpreter</item>
-        <item>CachedInterpreter</item>
-        <item>Recompiler</item>
-    </string-array>
-    <string-array name="settings_cpu_fastmem_mode_entries">
-        <item>Disabled (Slowest)</item>
-        <item>MMap (Hardware, Fastest, 64-Bit Only)</item>
-        <item>LUT (Faster)</item>
-    </string-array>
-    <string-array name="settings_cpu_fastmem_mode_values">
-        <item>Disabled</item>
-        <item>MMap</item>
-        <item>LUT</item>
-    </string-array>
-    <string-array name="gpu_renderer_entries">
-        <item>Hardware (OpenGL)</item>
-        <item>Hardware (Vulkan)</item>
-        <item>Software</item>
-    </string-array>
-    <string-array name="gpu_renderer_values">
-        <item>OpenGL</item>
-        <item>Vulkan</item>
-        <item>Software</item>
-    </string-array>
-    <string-array name="settings_gpu_resolution_scale_entries">
-        <item>1x</item>
-        <item>2x</item>
-        <item>3x (for 720p)</item>
-        <item>4x</item>
-        <item>5x (for 1080p)</item>
-        <item>6x (for 1440p)</item>
-        <item>7x</item>
-        <item>8x</item>
-        <item>9x (for 4K)</item>
-        <item>10x</item>
-        <item>11x</item>
-        <item>12x</item>
-        <item>13x</item>
-        <item>14x</item>
-        <item>15x</item>
-        <item>16x</item>
-    </string-array>
-    <string-array name="settings_gpu_resolution_scale_values">
-        <item>1</item>
-        <item>2</item>
-        <item>3</item>
-        <item>4</item>
-        <item>5</item>
-        <item>6</item>
-        <item>7</item>
-        <item>8</item>
-        <item>9</item>
-        <item>10</item>
-        <item>11</item>
-        <item>12</item>
-        <item>13</item>
-        <item>14</item>
-        <item>15</item>
-        <item>16</item>
-    </string-array>
-    <string-array name="settings_display_crop_mode_entries">
-        <item>None</item>
-        <item>Only Overscan Area</item>
-        <item>All Borders</item>
-    </string-array>
-    <string-array name="settings_display_crop_mode_values">
-        <item>None</item>
-        <item>Overscan</item>
-        <item>Borders</item>
-    </string-array>
-    <string-array name="settings_display_aspect_ratio_names">
-        <item>Auto (Game Native)</item>
-        <item>Auto (Match Display)</item>
-        <item>Custom</item>
-        <item>4:3</item>
-        <item>16:9</item>
-        <item>19:9</item>
-        <item>20:9</item>
-        <item>PAR 1:1</item>
-    </string-array>
-    <string-array name="settings_display_aspect_ratio_values">
-        <item>Auto (Game Native)</item>
-        <item>Auto (Match Window)</item>
-        <item>Custom</item>
-        <item>4:3</item>
-        <item>16:9</item>
-        <item>19:9</item>
-        <item>20:9</item>
-        <item>PAR 1:1</item>
-    </string-array>
-    <string-array name="settings_gpu_texture_filter_names">
-        <item>Nearest-Neighbor</item>
-        <item>Bilinear</item>
-        <item>Bilinear (No Edge Blending)</item>
-        <item>JINC2</item>
-        <item>JINC2 (No Edge Blending)</item>
-        <item>xBR</item>
-        <item>xBR (No Edge Blending)</item>
-    </string-array>
-    <string-array name="settings_gpu_texture_filter_values">
-        <item>Nearest</item>
-        <item>Bilinear</item>
-        <item>BilinearBinAlpha</item>
-        <item>JINC2</item>
-        <item>JINC2BinAlpha</item>
-        <item>xBR</item>
-        <item>xBRBinAlpha</item>
-    </string-array>
-    <string-array name="settings_controller_type_entries">
-        <item>None</item>
-        <item>Digital Controller (Gamepad)</item>
-        <item>Analog Controller (DualShock)</item>
-        <item>Analog Joystick</item>
-        <item>NeGcon</item>
-        <item>GunCon</item>
-    </string-array>
-    <string-array name="settings_controller_type_values">
-        <item>None</item>
-        <item>DigitalController</item>
-        <item>AnalogController</item>
-        <item>AnalogJoystick</item>
-        <item>NeGcon</item>
-        <item>NamcoGunCon</item>
-    </string-array>
-    <string-array name="settings_memory_card_mode_entries">
-        <item>No Memory Card</item>
-        <item>Shared Between All Games</item>
-        <item>Separate Card Per Game (Game Code)</item>
-        <item>Separate Card Per Game (Game Title)</item>
-    </string-array>
-    <string-array name="settings_memory_card_mode_values">
-        <item>None</item>
-        <item>Shared</item>
-        <item>PerGame</item>
-        <item>PerGameTitle</item>
-    </string-array>
-    <string-array name="emulation_touchscreen_menu">
-        <item>Change Type</item>
-        <item>Change Opacity</item>
-        <item>Add/Remove Buttons</item>
-        <item>Move Buttons</item>
-        <item>Resize Buttons</item>
-    </string-array>
-    <string-array name="touchscreen_layout_menu">
-        <item>Change Opacity</item>
-        <item>Add/Remove Buttons</item>
-        <item>Move Buttons</item>
-        <item>Resize Buttons</item>
-        <item>Reset Layout</item>
-        <item>Exit Editor</item>
-    </string-array>
-    <string-array name="settings_cdrom_read_speedup_entries">
-        <item>None (Double Speed)</item>
-        <item>2x (Quad Speed)</item>
-        <item>3x (6x Speed)</item>
-        <item>4x (8x Speed)</item>
-        <item>5x (10x Speed)</item>
-        <item>6x (12x Speed)</item>
-        <item>7x (14x Speed)</item>
-        <item>8x (16x Speed)</item>
-        <item>9x (18x Speed)</item>
-        <item>10x (20x Speed)</item>
-    </string-array>
-    <string-array name="settings_cdrom_read_speedup_values">
-        <item>1</item>
-        <item>2</item>
-        <item>3</item>
-        <item>4</item>
-        <item>5</item>
-        <item>6</item>
-        <item>7</item>
-        <item>8</item>
-        <item>9</item>
-        <item>10</item>
-    </string-array>
-    <string-array name="settings_touchscreen_controller_view_entries">
-        <item>None</item>
-        <item>Digital Pad</item>
-        <item>Single Analog Pad</item>
-        <item>Dual Analog Pad</item>
-        <item>Lightgun</item>
-    </string-array>
-    <string-array name="settings_touchscreen_controller_view_values">
-        <item>none</item>
-        <item>digital</item>
-        <item>analog_stick</item>
-        <item>analog_sticks</item>
-        <item>lightgun</item>
-    </string-array>
-    <string-array name="settings_audio_backend_entries">
-        <item>Null (No Output)</item>
-        <item>Cubeb</item>
-        <item>OpenSL ES (Recommended)</item>
-    </string-array>
-    <string-array name="settings_audio_backend_values">
-        <item>Null</item>
-        <item>Cubeb</item>
-        <item>OpenSLES</item>
-    </string-array>
-    <string-array name="settings_audio_buffer_size_entries">
-        <item>1024 Frames (23.22ms)</item>
-        <item>2048 Frames (46.44ms, Recommended)</item>
-        <item>3072 Frames (69.66ms)</item>
-        <item>4096 Frames (92.88ms)</item>
-    </string-array>
-    <string-array name="settings_audio_buffer_size_values">
-        <item>1024</item>
-        <item>2048</item>
-        <item>3072</item>
-        <item>4096</item>
-    </string-array>
-    <string-array name="settings_log_level_entries">
-        <item>None</item>
-        <item>Error</item>
-        <item>Warning</item>
-        <item>Performance Warnings</item>
-        <item>Information</item>
-        <item>Verbose</item>
-        <item>Developer</item>
-        <item>Profile</item>
-        <item>Debug</item>
-        <item>Trace</item>
-    </string-array>
-    <string-array name="settings_log_level_values">
-        <item>None</item>
-        <item>Error</item>
-        <item>Warning</item>
-        <item>Perf</item>
-        <item>Info</item>
-        <item>Verbose</item>
-        <item>Dev</item>
-        <item>Profile</item>
-        <item>Debug</item>
-        <item>Trace</item>
-    </string-array>
-    <string-array name="settings_tabs">
-        <item>General</item>
-        <item>Display</item>
-        <item>Audio</item>
-        <item>Enhancements</item>
-        <item>Achievements</item>
-        <item>Advanced</item>
-    </string-array>
-    <string-array name="settings_gpu_msaa_entries">
-        <item>Disabled</item>
-        <item>2x MSAA</item>
-        <item>4x MSAA</item>
-        <item>8x MSAA</item>
-        <item>2x SSAA</item>
-        <item>4x SSAA</item>
-        <item>8x SSAA</item>
-    </string-array>
-    <string-array name="settings_gpu_msaa_values">
-        <item>1</item>
-        <item>2</item>
-        <item>4</item>
-        <item>8</item>
-        <item>2-ssaa</item>
-        <item>4-ssaa</item>
-        <item>8-ssaa</item>
-    </string-array>
-    <string-array name="settings_advanced_display_fps_limit_entries">
-        <item>Unlimited (Display All Frames)</item>
-        <item>10 FPS</item>
-        <item>15 FPS</item>
-        <item>30 FPS</item>
-        <item>45 FPS</item>
-        <item>60 FPS</item>
-        <item>75 FPS</item>
-        <item>90 FPS</item>
-    </string-array>
-    <string-array name="settings_advanced_display_fps_limit_values">
-        <item>0</item>
-        <item>10</item>
-        <item>15</item>
-        <item>30</item>
-        <item>45</item>
-        <item>60</item>
-        <item>75</item>
-        <item>90</item>
-    </string-array>
-    <string-array name="settings_emulation_speed_entries">
-        <item>Unlimited</item>
-        <item>10% [6 FPS (NTSC) / 5 FPS (PAL)]</item>
-        <item>20% [12 FPS (NTSC) / 10 FPS (PAL)]</item>
-        <item>30% [18 FPS (NTSC) / 15 FPS (PAL)]</item>
-        <item>40% [24 FPS (NTSC) / 20 FPS (PAL)]</item>
-        <item>50% [30 FPS (NTSC) / 25 FPS (PAL)]</item>
-        <item>60% [36 FPS (NTSC) / 30 FPS (PAL)]</item>
-        <item>70% [42 FPS (NTSC) / 35 FPS (PAL)]</item>
-        <item>80% [48 FPS (NTSC) / 40 FPS (PAL)]</item>
-        <item>90% [54 FPS (NTSC) / 45 FPS (PAL)]</item>
-        <item>100% [60 FPS (NTSC) / 50 FPS (PAL), Default]</item>
-        <item>125% [75 FPS (NTSC) / 62 FPS (PAL)]</item>
-        <item>150% [90 FPS (NTSC) / 75 FPS (PAL)]</item>
-        <item>175% [105 FPS (NTSC) / 87 FPS (PAL)]</item>
-        <item>200% [120 FPS (NTSC) / 100 FPS (PAL)]</item>
-        <item>250% [150 FPS (NTSC) / 125 FPS (PAL)]</item>
-        <item>300% [180 FPS (NTSC) / 150 FPS (PAL)]</item>
-        <item>350% [210 FPS (NTSC) / 175 FPS (PAL)]</item>
-        <item>400% [240 FPS (NTSC) / 200 FPS (PAL)]</item>
-        <item>450% [270 FPS (NTSC) / 225 FPS (PAL)]</item>
-        <item>500% [300 FPS (NTSC) / 250 FPS (PAL)]</item>
-        <item>600% [360 FPS (NTSC) / 300 FPS (PAL)]</item>
-        <item>700% [420 FPS (NTSC) / 350 FPS (PAL)]</item>
-        <item>800% [480 FPS (NTSC) / 400 FPS (PAL)]</item>
-        <item>900% [540 FPS (NTSC) / 450 FPS (PAL)]</item>
-        <item>1000% [600 FPS (NTSC) / 500 FPS (PAL)]</item>
-    </string-array>
-    <string-array name="settings_emulation_speed_values">
-        <item>0.0</item>
-        <item>0.1</item>
-        <item>0.2</item>
-        <item>0.3</item>
-        <item>0.4</item>
-        <item>0.5</item>
-        <item>0.6</item>
-        <item>0.7</item>
-        <item>0.8</item>
-        <item>0.9</item>
-        <item>1.0</item>
-        <item>1.25</item>
-        <item>1.5</item>
-        <item>1.75</item>
-        <item>2.0</item>
-        <item>2.5</item>
-        <item>3.0</item>
-        <item>3.5</item>
-        <item>4.0</item>
-        <item>4.5</item>
-        <item>5.0</item>
-        <item>6.0</item>
-        <item>7.0</item>
-        <item>8.0</item>
-        <item>9.0</item>
-        <item>10.0</item>
-    </string-array>
-    <string-array name="settings_advanced_cpu_overclock_entries">
-        <item>25% (8MHz)</item>
-        <item>50% (16MHz)</item>
-        <item>75% (24MHz)</item>
-        <item>100% (33MHz, Default)</item>
-        <item>125% (41MHz)</item>
-        <item>150% (49MHz)</item>
-        <item>175% (57MHz)</item>
-        <item>200% (66MHz)</item>
-        <item>225% (74MHz)</item>
-        <item>250% (82MHz)</item>
-        <item>275% (90MHz)</item>
-        <item>300% (99MHz)</item>
-        <item>350% (115MHz)</item>
-        <item>400% (132MHz)</item>
-        <item>450% (148MHz)</item>
-        <item>500% (165MHz)</item>
-        <item>500% (165MHz)</item>
-        <item>600% (198MHz)</item>
-        <item>700% (231MHz)</item>
-        <item>800% (264MHz)</item>
-        <item>900% (297MHz)</item>
-        <item>1000% (330MHz)</item>
-    </string-array>
-    <string-array name="settings_advanced_cpu_overclock_values">
-        <item>25</item>
-        <item>50</item>
-        <item>75</item>
-        <item>100</item>
-        <item>125</item>
-        <item>150</item>
-        <item>175</item>
-        <item>200</item>
-        <item>225</item>
-        <item>250</item>
-        <item>275</item>
-        <item>300</item>
-        <item>350</item>
-        <item>400</item>
-        <item>450</item>
-        <item>500</item>
-        <item>500</item>
-        <item>600</item>
-        <item>700</item>
-        <item>800</item>
-        <item>900</item>
-        <item>1000</item>
-    </string-array>
-    <string-array name="settings_emulation_screen_orientation_entries">
-        <item>Use Device Setting</item>
-        <item>Portrait</item>
-        <item>Landscape</item>
-        <item>Sensor Based</item>
-    </string-array>
-    <string-array name="settings_emulation_screen_orientation_values">
-        <item>unspecified</item>
-        <item>portrait</item>
-        <item>landscape</item>
-        <item>sensor</item>
-    </string-array>
-    <string-array name="settings_language_entries">
-        <item>Use Device Setting</item>
-        <item>English</item>
-        <item>Portuguese (pt) in Brazil (BR)</item>
-        <item>Italian (it)</item>
-        <item>Dutch (nl)</item>
-        <item>Spanish (es)</item>
-        <item>Russian (ru)</item>
-    </string-array>
-    <string-array name="settings_language_values">
-        <item>none</item>
-        <item>en-EN</item>
-        <item>pt-rBR</item>
-        <item>it-IT</item>
-        <item>nl-NL</item>
-        <item>es-ES</item>
-        <item>ru-RU</item>
-    </string-array>
-    <string-array name="settings_theme_entries">
-        <item>Follow System</item>
-        <item>Light</item>
-        <item>Dark</item>
-    </string-array>
-    <string-array name="settings_theme_values">
-        <item>follow_system</item>
-        <item>light</item>
-        <item>dark</item>
-    </string-array>
-    <string-array name="settings_downsample_mode_entries">
-        <item>Disabled</item>
-        <item>Box (Downsample 3D/Smooth All)</item>
-        <item>Adaptive (Preserve 3D/Smooth 2D)</item>
-    </string-array>
-    <string-array name="settings_downsample_mode_values">
-        <item>Disabled</item>
-        <item>Box</item>
-        <item>Adaptive</item>
-    </string-array>
-    <string-array name="settings_boolean_entries">
-        <item>Disabled</item>
-        <item>Enabled</item>
-    </string-array>
-    <string-array name="settings_boolean_values">
-        <item>false</item>
-        <item>true</item>
-    </string-array>
-    <string-array name="settings_multitap_mode_entries">
-        <item>Disabled</item>
-        <item>Enable on Port 1 Only</item>
-        <item>Enable on Port 2 Only</item>
-        <item>Enable on Ports 1 and 2</item>
-    </string-array>
-    <string-array name="settings_multitap_mode_values">
-        <item>Disabled</item>
-        <item>Port1Only</item>
-        <item>Port2Only</item>
-        <item>BothPorts</item>
-    </string-array>
-    <string-array name="memory_card_editor_save_menu">
-        <item>Copy Save</item>
-        <item>Delete Save</item>
-    </string-array>
-    <string-array name="settings_touchscreen_controller_port_entries">
-        <item>Port 1</item>
-        <item>Port 2</item>
-        <item>Multitap 3</item>
-        <item>Multitap 4</item>
-        <item>Multitap 5</item>
-        <item>Multitap 6</item>
-        <item>Multitap 7</item>
-        <item>Multitap 8</item>
-    </string-array>
-    <string-array name="settings_touchscreen_controller_port_values">
-        <item>0</item>
-        <item>1</item>
-        <item>2</item>
-        <item>3</item>
-        <item>4</item>
-        <item>5</item>
-        <item>6</item>
-        <item>7</item>
-    </string-array>
-    <string-array name="settings_cdrom_seek_speedup_entries">
-        <item>None (Normal Speed)</item>
-        <item>Infinite/Instantaneous</item>
-        <item>2x</item>
-        <item>3x</item>
-        <item>4x</item>
-        <item>5x</item>
-        <item>6x</item>
-        <item>7x</item>
-        <item>8x</item>
-        <item>9x</item>
-        <item>10x</item>
-    </string-array>
-    <string-array name="settings_cdrom_seek_speedup_values">
-        <item>1</item>
-        <item>0</item>
-        <item>2</item>
-        <item>3</item>
-        <item>4</item>
-        <item>5</item>
-        <item>6</item>
-        <item>7</item>
-        <item>8</item>
-        <item>9</item>
-        <item>10</item>
-    </string-array>
-</resources>
diff --git a/android/app/src/main/res/values/attrs.xml b/android/app/src/main/res/values/attrs.xml
deleted file mode 100644
index 7ce840eb6..000000000
--- a/android/app/src/main/res/values/attrs.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<resources>
-
-    <!-- Declare custom theme attributes that allow changing which styles are
-         used for button bars depending on the API level.
-         ?android:attr/buttonBarStyle is new as of API 11 so this is
-         necessary to support previous API levels. -->
-    <declare-styleable name="ButtonBarContainerTheme">
-        <attr name="metaButtonBarStyle" format="reference" />
-        <attr name="metaButtonBarButtonStyle" format="reference" />
-    </declare-styleable>
-
-</resources>
diff --git a/android/app/src/main/res/values/attrs_touchscreen_controller_button_view.xml b/android/app/src/main/res/values/attrs_touchscreen_controller_button_view.xml
deleted file mode 100644
index e9dacf26a..000000000
--- a/android/app/src/main/res/values/attrs_touchscreen_controller_button_view.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<resources>
-    <declare-styleable name="TouchscreenControllerButtonView">
-        <attr name="unpressedDrawable" format="color|reference" />
-        <attr name="pressedDrawable" format="color|reference" />
-    </declare-styleable>
-</resources>
diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml
deleted file mode 100644
index a66a016b2..000000000
--- a/android/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <color name="colorPrimary">#6200EE</color>
-    <color name="colorPrimaryDark">#3700B3</color>
-    <color name="colorAccent">#D81B60</color>
-    <color name="colorNavigation">#000000</color>
-
-    <color name="black_overlay">#66000000</color>
-    <color name="fab_background">#ffffffff</color>
-
-    <color name="emulationActivityPauseBackground">#eeffffff</color>
-</resources>
diff --git a/android/app/src/main/res/values/dimens.xml b/android/app/src/main/res/values/dimens.xml
deleted file mode 100644
index 59a0b0c4f..000000000
--- a/android/app/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<resources>
-    <dimen name="fab_margin">16dp</dimen>
-</resources>
diff --git a/android/app/src/main/res/values/ic_launcher_background.xml b/android/app/src/main/res/values/ic_launcher_background.xml
deleted file mode 100644
index c5d5899fd..000000000
--- a/android/app/src/main/res/values/ic_launcher_background.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <color name="ic_launcher_background">#FFFFFF</color>
-</resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
deleted file mode 100644
index e3ddc5a3a..000000000
--- a/android/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,368 +0,0 @@
-<resources>
-    <string name="app_name">DuckStation</string>
-    <string name="action_settings">Settings</string>
-    <string name="action_controller_mapping">Controller Settings</string>
-    <string name="title_activity_settings">Settings</string>
-    <string name="settings_console_region">Console Region</string>
-    <string name="settings_console_tty_output">Enable TTY Output</string>
-    <string name="settings_console_fast_boot">Fast Boot</string>
-    <string name="settings_osd_show_messages">Show Messages</string>
-    <string name="settings_osd_show_speed">Show Emulation Speed</string>
-    <string name="settings_osd_show_show_fps">Show Game Frame Rate</string>
-    <string name="settings_osd_show_show_vps">Show Display FPS</string>
-    <string name="settings_cpu_execution_mode">CPU Execution Mode</string>
-    <string name="settings_gpu_renderer">GPU Renderer</string>
-    <string name="settings_gpu_resolution_scale">Resolution Scale</string>
-    <string name="title_activity_emulation">EmulationActivity</string>
-    <string name="settings_emulation_speed">Emulation Speed</string>
-    <string name="settings_fast_forward_speed">Fast Forward Speed</string>
-    <string name="settings_save_state_on_exit">Save State On Exit</string>
-    <string name="settings_emulation_screen_orientation">Emulation Screen Orientation</string>
-    <string name="settings_load_patch_codes">Load Patch Codes</string>
-    <string name="settings_summary_save_state_on_exit">Automatically saves the emulator state when powering down or exiting. You can then resume directly from where you left off next time.</string>
-    <string name="settings_summary_load_patch_codes"><![CDATA[Loads patch codes from cheats/<game name>.cht in PCSXR format. Codes can be toggled while ingame.]]></string>
-    <string name="settings_apply_compatibility_settings">Apply Compatibility Settings</string>
-    <string name="settings_summary_apply_compatibility_settings">Automatically disable enhancements when they are not supported by games.</string>
-    <string name="settings_summary_video_sync">Enable this option to match DuckStation\'s refresh rate with your current monitor or screen. VSync is automatically disabled when it is not possible (e.g. running at non-100% speed).</string>
-    <string name="settings_video_sync">Video Sync</string>
-    <string name="settings_cpu_overclocking">CPU Overclocking</string>
-    <string name="settings_cdrom_region_check">Region Check</string>
-    <string name="settings_summary_cdrom_region_check">Prevents discs from incorrect regions being read by the emulator. Usually safe to disable.</string>
-    <string name="settings_cdrom_preload_image_to_ram">Preload Image to RAM</string>
-    <string name="settings_summary_preload_image_to_ram">Loads the game image into RAM. Useful for network paths that may become unreliable during gameplay. In some cases also eliminates stutter when games initiate audio track playback.</string>
-    <string name="settings_pgxp_vertex_cache">PGXP Vertex Cache</string>
-    <string name="settings_summary_pgxp_vertex_cache">Uses screen coordinates as a fallback when tracking vertices through memory fails. May improve PGXP compatibility.</string>
-    <string name="settings_pgxp_cpu_mode">PGXP CPU Mode</string>
-    <string name="settings_summary_pgxp_cpu_mode">Tries to track vertex manipulation through the CPU. Some games require this option for PGXP to be effective. Very high performance penalty.</string>
-    <string name="settings_cpu_recompiler_icache">CPU Recompiler ICache</string>
-    <string name="settings_summary_cpu_recompiler_icache">Determines whether the CPU\'s instruction cache is simulated in the recompiler. Improves accuracy at a small cost to performance. If games are running too fast, try enabling this option.</string>
-    <string name="settings_cpu_recompiler_fastmem">CPU Recompiler Fast Memory Access</string>
-    <string name="settings_summary_cpu_recompiler_fastmem">Makes guest memory access more efficient by using page faults and backpatching. Disable if it is unstable on your device.</string>
-    <string name="settings_presented_frame_limit">Presented Frame Limit</string>
-    <string name="settings_logging_level">Logging Level</string>
-    <string name="settings_log_to_file">Log To File</string>
-    <string name="settings_summary_log_to_file">Writes log messages to duckstation.log in your user directory. Only use for debugging as it slows down emulation.</string>
-    <string name="settings_log_to_logcat">Log To Logcat</string>
-    <string name="settings_summary_log_to_logcat">Writes log messages to the Android message logger. Only useful when attached to a computer with adb.</string>
-    <string name="settings_volume">Volume</string>
-    <string name="settings_summary_volume">Controls the volume of the emulator\'s sound output.</string>
-    <string name="settings_fast_forward_volume">Fast Forward Volume</string>
-    <string name="settings_summary_fast_forward_volume">Controls the volume of the emulator\'s sound output when fast forwarding.</string>
-    <string name="settings_mute_all_sound">Mute All Sound</string>
-    <string name="settings_summary_mute_all_sound">Prevents the emulator from emitting any sound.</string>
-    <string name="settings_mute_cd_audio">Mute CD Audio</string>
-    <string name="settings_summary_mute_cd_audio">Forcibly mutes both CD-DA and XA audio from the CD-ROM. Can be used to disable background music in some games.</string>
-    <string name="settings_audio_backend">Audio Backend</string>
-    <string name="settings_audio_buffer_size">Audio Buffer Size</string>
-    <string name="settings_summary_audio_buffer_size">Determines the latency between audio being generated and output to speakers. Smaller values reduce latency, but variations in emulation speed will cause hitches.</string>
-    <string name="settings_audio_sync">Audio Sync</string>
-    <string name="settings_summary_audio_sync">Throttles the emulation speed based on the audio backend pulling audio frames. This helps to remove noises or crackling if emulation is too fast. Sync will automatically be disabled if not running at 100% speed.</string>
-    <string name="settings_controller_type">Controller Type</string>
-    <string name="settings_enable_analog_mode_on_reset">Enable Analog Mode On Reset</string>
-    <string name="settings_touchscreen_controller_view">Touchscreen Controller View</string>
-    <string name="settings_auto_hide_touchscreen_controller">Auto-Hide Touchscreen Controller</string>
-    <string name="settings_summary_auto_hide_touchscreen_controller">Hides the touchscreen controller when an external controller is detected.</string>
-    <string name="settings_vibrate_on_press">Vibrate On Press</string>
-    <string name="settings_summary_vibrate_on_press">Enables a short vibration when a touchscreen button is pressed. Requires \"Vibrate on Touch\" to be enabled on your device.</string>
-    <string name="settings_enable_vibration">Device Vibration</string>
-    <string name="settings_summary_enable_vibration">Forwards rumble from the game to the phone\'s vibration motor.</string>
-    <string name="settings_memory_card_1_type">Memory Card 1 Type</string>
-    <string name="settings_memory_card_2_type">Memory Card 2 Type</string>
-    <string name="settings_crop_mode">Crop Mode</string>
-    <string name="settings_aspect_ratio">Aspect Ratio</string>
-    <string name="settings_linear_upscaling">Linear Upscaling</string>
-    <string name="settings_integer_upscaling">Integer Upscaling</string>
-    <string name="settings_summary_linear_upscaling">Smooths out the image when upscaling the console to the screen.</string>
-    <string name="settings_summary_integer_upscaling">Adds padding to the display area to ensure that the ratio between pixels on the host to pixels in the console is an integer number. May result in a sharper image in some 2D games.</string>
-    <string name="settings_summary_osd_show_messages">Shows on-screen-display messages when events occur such as save states being created/loaded, screenshots being taken, etc.</string>
-    <string name="settings_summary_osd_show_speed">Shows the current emulation speed of the system in the top-right corner of the display as a percentage.</string>
-    <string name="settings_summary_osd_show_fps">Shows the internal frame rate of the game in the top-right corner of the display.</string>
-    <string name="settings_summary_osd_show_vps">Shows the number of frames (or v-syncs) displayed per second by the system in the top-right corner of the display.</string>
-    <string name="settings_cdrom_read_speedup">CD-ROM Read Speedup</string>
-    <string name="settings_summary_cdrom_read_speedup">Speeds up CD-ROM reads by the specified factor. Only applies to double-speed reads, and is ignored when audio is playing. May improve loading speeds in some games, at the cost of breaking others.</string>
-    <string name="settings_summary_console_fast_boot">Skips the BIOS shell/intro, booting directly into the game. Usually safe to enable, but some games break.</string>
-    <string name="settings_msaa">Multisample Antialiasing</string>
-    <string name="settings_true_color">True Color Rendering (24-bit, disables dithering)</string>
-    <string name="settings_summary_true_color">This produces nicer looking gradients at the cost of making some colours look slightly different. Disabling the option also enables dithering. Most games are compatible with this option.</string>
-    <string name="settings_scaled_dithering">Scaled Dithering (scale dither pattern to resolution)</string>
-    <string name="settings_summary_scaled_dithering">Scales the dither pattern to the resolution scale of the emulated GPU. This makes the dither pattern much less obvious at higher resolutions. Usually safe to enable, and only supported by the hardware renderers.</string>
-    <string name="settings_disable_interlacing">Disable Interlacing (force progressive render/scan)</string>
-    <string name="settings_summary_disable_interlacing">Forces the rendering and display of frames to progressive mode. This removes the \"combing\" effect seen in 480i games by rendering them in 480p. Usually safe to enable.</string>
-    <string name="settings_texture_filtering">Texture Filtering</string>
-    <string name="settings_force_ntsc_timings">Force NTSC Timings (60hz-on-PAL)</string>
-    <string name="settings_summary_force_ntsc_timings">Uses NTSC frame timings when the console is in PAL mode, forcing PAL games to run at 60hz.</string>
-    <string name="settings_widescreen_hack">Widescreen Hack</string>
-    <string name="settings_summary_widescreen_hack">Scales vertex positions in screen-space to a widescreen aspect ratio, essentially increasing the field of view from 4:3 to 16:9 in 3D games. Not be compatible with all games.</string>
-    <string name="settings_force_4_3_for_24bit">Force 4:3 For 24-Bit Display</string>
-    <string name="settings_summary_force_4_3_for_24bit">Switches back to 4:3 display aspect ratio when displaying 24-bit content, usually FMVs.</string>
-    <string name="settings_chroma_smoothing_24bit">Chroma Smoothing For 24-Bit Display</string>
-    <string name="settings_summary_chrome_smoothing_24bit">Smooths out blockyness between colour transitions in 24-bit content, usually FMVs. Only applies to the hardware renderers.</string>
-    <string name="settings_pgxp_geometry_correction">PGXP Geometry Correction</string>
-    <string name="settings_summary_pgxp_geometry_correction"><![CDATA[Reduces \"wobbly\" polygons and \"warping\" textures that are common in PS1 games. >Only works with the hardware renderers. May not be compatible with all games.]]></string>
-    <string name="settings_pgxp_culling_correction">PGXP Culling Correction</string>
-    <string name="settings_summary_pgxp_culling_correction">Increases the precision of polygon culling, reducing the number of holes in geometry. Requires geometry correction enabled.</string>
-    <string name="settings_pgxp_texture_correction">PGXP Texture Correction</string>
-    <string name="settings_summary_pgxp_texture_correction">Uses perspective-correct interpolation for texture coordinates and colors, straightening out warped textures. Requires geometry correction enabled.</string>
-    <string name="settings_pgxp_preserve_projection_precision">PGXP Preserve Projection Precision</string>
-    <string name="settings_summary_pgxp_preserve_projection_precision">Enables additional precision for PGXP. May improve visuals in some games but break others.</string>
-    <string name="settings_pgxp_depth_buffer">PGXP Depth Buffer</string>
-    <string name="settings_summary_pgxp_depth_buffer">Attempts to reduce polygon Z-fighting by testing pixels against the depth values from PGXP. Low compatibility, but can work well in some games.</string>
-    <string name="menu_main_resume_last_session">Resume Last Session</string>
-    <string name="menu_main_start_file">Start File</string>
-    <string name="menu_main_start_bios">Start BIOS</string>
-    <string name="menu_main_edit_game_directories">Edit Game Directories</string>
-    <string name="menu_main_scan_for_new_games">Scan For New Games</string>
-    <string name="menu_main_rescan_all_games">Rescan All Games</string>
-    <string name="menu_main_import_bios">Import BIOS</string>
-    <string name="menu_main_show_version">Show Version</string>
-    <string name="menu_main_github_repository">GitHub Repository</string>
-    <string name="menu_main_discord_server">Discord Server</string>
-    <string name="menu_game_list_entry_start_game">Start Game</string>
-    <string name="menu_game_list_entry_resume_game">Resume Game</string>
-    <string name="android_progress_callback_please_wait">Please wait...</string>
-    <string name="android_progress_callback_ok">OK</string>
-    <string name="android_progress_callback_information">Information</string>
-    <string name="android_progress_callback_confirmation">Confirmation</string>
-    <string name="android_progress_callback_yes">Yes</string>
-    <string name="android_progress_callback_no">No</string>
-    <string name="emulation_activity_error">Error</string>
-    <string name="emulation_activity_ok">OK</string>
-    <string name="emulation_activity_import_patch_codes">Import Patch Codes...</string>
-    <string name="emulation_activity_patch_on">(ON)</string>
-    <string name="emulation_activity_patch_off">(OFF)</string>
-    <string name="emulation_activity_choose_patch_code_file">Choose Patch Code File</string>
-    <string name="emulation_activity_failed_to_import_patch_codes">Failed to import patch codes. Make sure you selected a PCSXR or Libretro format file.</string>
-    <string name="main_activity_choose_directory">Choose directory</string>
-    <string name="main_activity_error">Error</string>
-    <string name="main_activity_get_path_from_file_error">Failed to get path for the selected file. Please make sure the file is in internal/external storage.\n\nTap the overflow button in the directory selector.\nSelect "Show Internal Storage".\nTap the menu button and select your device name or SD card.</string>
-    <string name="main_activity_ok">OK</string>
-    <string name="main_activity_get_path_from_directory_error">Failed to get path for the selected directory. Please make sure the directory is in internal/external storage.\n\nTap the overflow button in the directory selector.\nSelect \"Show Internal Storage\".\nTap the menu button and select your device name or SD card.</string>
-    <string name="main_activity_external_storage_permissions_error">External storage permissions are required to use DuckStation.</string>
-    <string name="main_activity_choose_disc_image">Choose Disc Image</string>
-    <string name="main_activity_missing_bios_image_prompt">No BIOS image was found in DuckStation\'s bios directory. Do you wish to locate and import a BIOS image now?</string>
-    <string name="main_activity_missing_bios_image">Missing BIOS Image</string>
-    <string name="main_activity_yes">Yes</string>
-    <string name="main_activity_no">No</string>
-    <string name="main_activity_choose_bios_image">Choose BIOS Image</string>
-    <string name="main_activity_failed_to_open_bios_image">Failed to open BIOS image.</string>
-    <string name="main_activity_failed_to_read_bios_image_prefix">\"Failed to read BIOS image: \"</string>
-    <string name="main_activity_bios_image_too_large">BIOS image is too large. You must select a BIOS image, not a game, and it should be 512KB in size.</string>
-    <string name="main_activity_invalid_error">This BIOS image is invalid, or has already been imported.</string>
-    <string name="main_activity_show_version_title">Version</string>
-    <string name="main_activity_copy">Copy</string>
-    <string name="settings_gpu_thread">Threaded GPU Rendering</string>
-    <string name="settings_summary_gpu_thread">Uses a second thread for drawing graphics. Currently only available for the software renderer, but can provide a significant speed improvement, and is safe to use.</string>
-    <string name="settings_gpu_threaded_presentation">Threaded GPU Presentation</string>
-    <string name="settings_summary_gpu_threaded_presentation">Presents frames on a background thread when fast forwarding or vsync is disabled. This can measurably improve performance in the Vulkan renderer.</string>
-    <string name="settings_language">Language (restart to apply)</string>
-    <string name="touchscreen_controller_stop_editing">Stop Editing</string>
-    <string name="touchscreen_controller_reset_layout">Reset Layout</string>
-    <string name="emulation_activity_touchscreen_controller_not_active">Touchscreen controller is not active.</string>
-    <string name="settings_theme">Theme</string>
-    <string name="settings_controller_mapping_summary">Allows you bind external controller buttons/axises to the emulated controller.</string>
-    <string name="settings_controller_mapping">Controller Mapping</string>
-    <string name="controller_binding_dialog_message">Press button on controller to set new binding.\n\nCurrent Binding: %s</string>
-    <string name="controller_binding_dialog_no_binding"><![CDATA[<No Binding>]]></string>
-    <string name="controller_binding_dialog_cancel">Cancel</string>
-    <string name="controller_binding_dialog_clear">Clear</string>
-    <string name="controller_mapping_activity_title">Controller Settings</string>
-    <string name="controller_mapping_activity_no_profiles_found">No profiles found.</string>
-    <string name="controller_mapping_activity_select_input_profile">Select Input Profile</string>
-    <string name="controller_mapping_activity_failed_to_load_profile">Failed to load profile \'%s\'</string>
-    <string name="controller_mapping_activity_input_profile_name">Input Profile Name:</string>
-    <string name="controller_mapping_activity_save">Save</string>
-    <string name="controller_mapping_activity_name_must_be_provided">A name must be provided.</string>
-    <string name="controller_mapping_activity_failed_to_save_input_profile">Failed to save input profile.</string>
-    <string name="controller_mapping_activity_input_profile_saved">Input profile \'%s\' saved.</string>
-    <string name="controller_mapping_activity_cancel">Cancel</string>
-    <string name="settings_use_analog_sticks_for_dpad">Use Analog Sticks for D-Pad in Digital Mode</string>
-    <string name="settings_summary_enable_analog_mode_on_reset">Forces the controller to analog mode when the console is reset/powered on.</string>
-    <string name="settings_summary_use_analog_sticks_for_dpad">Allows you to use the analog sticks to control the d-pad in digital mode, as well as the buttons.</string>
-    <string name="settings_disable_all_enhancements">Disable All Enhancements</string>
-    <string name="settings_summary_disable_all_enhancements">Temporarily disables all enhancements, which can be useful when debugging issues.</string>
-    <string name="settings_downsample_mode">Downsampling</string>
-    <string name="activity_game_properties">Game Properties</string>
-    <string name="game_properties_preference_use_global_setting">Use Global Setting</string>
-    <string name="settings_input_profile">Input Profile</string>
-    <string name="game_properties_tab_summary">Summary</string>
-    <string name="game_properties_tab_game_settings">Game Settings</string>
-    <string name="game_properties_tab_controller_settings">Controller Settings</string>
-    <string name="settings_audio_resampling">Audio Resampling</string>
-    <string name="settings_summary_audio_resampling">When running outside of 100% speed, resamples audio from the target speed instead of dropping frames. Produces much nicer fast forward/slowdown audio at a small cost to performance.</string>
-    <string name="settings_general_sync_to_host_refresh_rate">Sync To Host Refresh Rate</string>
-    <string name="settings_summary_general_sync_to_host_refresh_rate">Adjusts the emulation speed so the console\'s refresh rate matches the host\'s refresh rate, when VSync and Audio Resampling is enabled. This results in the smoothest animations possible, at the cost of potentially increasing the emulation speed by less than 1%.</string>
-    <string name="settings_sustained_performance_mode">Sustained Performance Mode</string>
-    <string name="settings_summary_sustained_performance_mode">Enables Android\'s sustained performance mode. May result in more consistent framerates for long sessions on some devices.</string>
-    <string name="title_activity_game_directories">Edit Game Directories</string>
-    <string name="settings_game_directories">Game Directories</string>
-    <string name="settings_summary_game_directories">Change the list of directories used to search for games.</string>
-    <string name="game_directories_scanning_subdirectories">Scanning subdirectories.</string>
-    <string name="game_directories_not_scanning_subdirectories">Not scanning subdirectories.</string>
-    <string name="settings_display_all_frames">Optimal Frame Pacing</string>
-    <string name="settings_summary_display_all_frames">Enable this option will ensure every frame the console renders is displayed to the screen, for optimal frame pacing. If you are having difficulties maintaining full speed, or are getting audio glitches, try disabling this option.</string>
-    <string name="menu_edit_game_directories_add_directory">Add Directory</string>
-    <string name="menu_edit_game_directories_add_path">Add Path</string>
-    <string name="edit_game_directories_add_path">Add Path</string>
-    <string name="edit_game_directories_add_path_summary">Enter the full path to the directory with games.\n\nYou can get this from a file manager app.\n\nExample: /storage/emulated/0/games</string>
-    <string name="save_state_info_slot_is_empty">Slot Is Empty</string>
-    <string name="save_state_info_game_save_n">Game Save %d</string>
-    <string name="save_state_info_global_save_n">Global Save %d</string>
-    <string name="save_state_info_quick_save">Quick Save</string>
-    <string name="settings_osd_show_show_resolution">Show Resolution</string>
-    <string name="settings_summary_osd_show_resolution">Shows the resolution the game is rendering at in the top-right corner of the display.</string>
-    <string name="settings_summary_display_stretch">Stretches the active display to fill the screen.</string>
-    <string name="settings_display_stretch">Stretch To Fill</string>
-    <string name="settings_category_global">Global Settings</string>
-    <string name="settings_category_display">Display Settings</string>
-    <string name="settings_category_audio">Audio Settings</string>
-    <string name="settings_category_console">Console Settings</string>
-    <string name="settings_category_cpu">CPU Settings</string>
-    <string name="settings_category_gpu">GPU Settings</string>
-    <string name="settings_category_logging">Logging Settings</string>
-    <string name="dialog_done">Done</string>
-    <string name="dialog_touchscreen_controller_type">Touchscreen Controller Type</string>
-    <string name="dialog_touchscreen_controller_opacity">Touchscreen Controller Opacity</string>
-    <string name="dialog_touchscreen_controller_buttons">Touchscreen Controller Buttons</string>
-    <string name="dialog_touchscreen_controller_settings">Touchscreen Controller Settings</string>
-    <string name="settings_summary_console_tty_output">Logs debug messages printed by games.</string>
-    <string name="action_show_game_list">List View</string>
-    <string name="action_show_game_grid">Grid View</string>
-    <string name="settings_touch_gliding">Touch Gliding</string>
-    <string name="settings_summary_touch_gliding">Allows you to press multiple controller face buttons by dragging your finger along the screen.</string>
-    <string name="menu_game_list_entry_game_properties">Game Properties</string>
-    <string name="emulation_activity_change_disc_select_new_file">Select New File...</string>
-    <string name="settings_achievements_enable">Enable RetroAchievements</string>
-    <string name="settings_summary_achievements_enable">When enabled and logged in, DuckStation will scan for achievements on startup.</string>
-    <string name="settings_achievements_challenge_mode">Enable Hardcore Mode</string>
-    <string name="settings_summary_achievements_challenge_mode">Challenge mode. Disables save states, patch code, and slowdown functions, but you receive double the achievement points. Cannot be toggled while ingame.</string>
-    <string name="settings_achievements_rich_presence">Enable Rich Presence</string>
-    <string name="settings_summary_achievements_rich_presence">Rich presence information will be collected and sent to the server where supported.</string>
-    <string name="settings_achievements_username">User Name</string>
-    <string name="settings_achievements_token_generation_time">Token Generation Time</string>
-    <string name="settings_achievements_login">Login</string>
-    <string name="settings_summary_achievements_login">Logs in to your account to record achievements.</string>
-    <string name="settings_achievements_register">Register</string>
-    <string name="settings_summary_achievements_register">Opens a link to create a new account.</string>
-    <string name="settings_achievements_logout">Logout</string>
-    <string name="settings_summary_achievements_logout">Logs out of your account. No new achievements will be recorded.</string>
-    <string name="settings_achievements_view_profile">View Profile</string>
-    <string name="settings_summary_achievements_view_profile">Opens a link to your profile.</string>
-    <string name="settings_achievements_test_mode">Enable Test Mode</string>
-    <string name="settings_summary_achievements_test_mode">When enabled, DuckStation will assume all achievements are locked and not send any unlock notifications to the server.</string>
-    <string name="settings_achievements_use_first_disc_from_playlist">Use First Disc From Playlist</string>
-    <string name="settings_summary_achievements_use_first_disc_from_playlist">When enabled, the first disc in a playlist will be used for achievements, regardless of which disc is active.</string>
-    <string name="achievement_settings_login_title">RetroAchievements Login</string>
-    <string name="achievement_settings_login_help">Please enter user name and password for retroachievements.org below. Your password will not be saved in DuckStation, an access token will be generated and used instead.</string>
-    <string name="achievement_settings_login_username_hint">Username</string>
-    <string name="achievement_settings_login_password_hint">Password</string>
-    <string name="achievement_settings_login_login_button">Login</string>
-    <string name="achievement_settings_login_cancel_button">Cancel</string>
-    <string name="achievement_settings_login_failed">Login failed. Please check your username and password, and try again.</string>
-    <string name="achievement_points_format_string">%d points</string>
-    <string name="achievement_summary_format_string">You have unlocked %1$d of %2$d achievements, earning %3$d of %4$d possible points.</string>
-    <string name="achievement_title_challenge_mode_format_string">%s (Hardcore Mode)</string>
-    <string name="settings_achievements_disclaimer">DuckStation uses RetroAchievements (retroachievements.org) as an achievement database and for tracking progress.</string>
-    <string name="settings_achievements_confirm_logout_title">Confirm Logout</string>
-    <string name="settings_achievements_confirm_logout_message">After logging out, no more achievements will be unlocked until you log back in again. Achievements already unlocked will not be lost.</string>
-    <string name="controller_binding_device_for_vibration">Device for Vibration</string>
-    <string name="controller_settings_tab_settings">Settings</string>
-    <string name="controller_settings_tab_hotkeys">Hotkeys</string>
-    <string name="controller_settings_category_button_bindings">Button Bindings</string>
-    <string name="controller_settings_category_axis_bindings">Axis Bindings</string>
-    <string name="controller_settings_category_settings">Settings</string>
-    <string name="controller_settings_category_touchscreen_controller">Touchscreen Controller</string>
-    <string name="controller_settings_category_ports">Ports</string>
-    <string name="controller_settings_main_port_format">Port %d</string>
-    <string name="controller_settings_sub_port_format">Port %1$d%2$c</string>
-    <string name="action_switch_view">Switch View</string>
-    <string name="title_activity_memory_card_editor">Memory Card Editor</string>
-    <string name="action_memory_card_editor">Memory Card Editor</string>
-    <string name="action_memory_card_editor_import_card">Import Card</string>
-    <string name="action_memory_card_editor_open_card">Open Card</string>
-    <string name="action_memory_card_editor_new_card">New Card</string>
-    <string name="action_memory_card_editor_format_card">Format Card</string>
-    <string name="action_memory_card_editor_delete_card">Delete Card</string>
-    <string name="memory_card_editor_no_cards_found">No memory cards found.</string>
-    <string name="memory_card_editor_card_already_open">This card is already open.</string>
-    <string name="memory_card_editor_failed_to_open_card">Failed to open or read memory card.</string>
-    <string name="memory_card_editor_must_have_at_least_two_cards_to_copy">Must have at least two cards open to copy.</string>
-    <string name="memory_card_editor_copy_save_to">Copy %s to...</string>
-    <string name="memory_card_editor_select_card">Select Card</string>
-    <string name="memory_card_editor_error">Error</string>
-    <string name="memory_card_editor_copy_insufficient_blocks">This file requires %1$d blocks, but only %2$d blocks are free.</string>
-    <string name="memory_card_editor_copy_already_exists">File \'%s\' already exists on destination card.</string>
-    <string name="memory_card_editor_copy_read_failed">Failed to read file \'%s\' from source card.</string>
-    <string name="memory_card_editor_copy_write_failed">Failed to write file \'%s\' to destination card.</string>
-    <string name="memory_card_editor_copy_success">Copied \'%1$s\' to \'%2$s\'.</string>
-    <string name="memory_card_editor_delete_confirm">Are you sure you want to delete the save \'%s\'?</string>
-    <string name="memory_card_editor_delete_success">Deleted save \'%s\'.</string>
-    <string name="memory_card_editor_delete_failed">Failed to delete file \'%s\'.</string>
-    <string name="memory_card_editor_no_card_selected">No card is selected.</string>
-    <string name="memory_card_editor_import_failed">Failed to import card. It may not be a supported format.</string>
-    <string name="memory_card_editor_delete_card_confirm_message">Memory card \'%s\' will be deleted, and cannot be recovered. Are you sure you want to delete this card?</string>
-    <string name="memory_card_editor_delete_card_failed">Failed to delete \'%s\'.</string>
-    <string name="memory_card_editor_delete_card_success">Deleted card \'%s\'.</string>
-    <string name="memory_card_editor_format_card_confirm_message">Memory card \'%s\' will be formatted, clearing all saves. Are you sure you want to format this card?</string>
-    <string name="memory_card_editor_format_card_failed">Failed to format \'%s\'.</string>
-    <string name="memory_card_editor_format_card_success">Formatted card \'%s\'.</string>
-    <string name="memory_card_editor_import_card_confirm_message">Importing \'%1$s\' will remove all saves in \'%2$s\'. Do you want to continue?</string>
-    <string name="memory_card_editor_import_card_read_failed">Failed to read \'%s\'.</string>
-    <string name="memory_card_editor_import_card_failed">Failed to import card \'%s\'. It may not be a supported format.</string>
-    <string name="memory_card_editor_import_card_success">Imported card \'%s\'.</string>
-    <string name="menu_game_list_entry_choose_cover_image">Choose Cover Image</string>
-    <string name="controller_settings_vibration_unsupported">The selected device does not support vibration.</string>
-    <string name="controller_settings_automatic_mapping">Perform Automatic Mapping</string>
-    <string name="controller_settings_summary_automatic_mapping">Attempts to automatically bind all buttons/axes to a connected controller.</string>
-    <string name="controller_settings_clear_controller_bindings">Clear Bindings</string>
-    <string name="controller_settings_summary_clear_controller_bindings">Unbinds all buttons/axes for this controller.</string>
-    <string name="controller_settings_clear_controller_bindings_confirm">Are you sure you want to clear all bindings? This cannot be reversed.</string>
-    <string name="controller_settings_clear_controller_bindings_done">All bindings cleared for Controller %d.</string>
-    <string name="controller_auto_mapping_no_devices">No suitable devices found. Automatic binding only supports gamepad devices, but you can still bind other device types manually.</string>
-    <string name="controller_auto_mapping_select_device">Select Device</string>
-    <string name="controller_auto_mapping_results">Automatic Binding Results</string>
-    <string name="main_activity_empty_game_list_title">No games were found. Please add a directory with games to begin.</string>
-    <string name="main_activity_empty_game_list_supported_formats">Supported formats are:\n\n%s\n\nGames in bin format require a cuesheet (.cue) to start.</string>
-    <string name="main_activity_empty_game_list_add_directory">Add Game Directory</string>
-    <string name="main_activity_empty_game_list_start_file">Start File</string>
-    <string name="update_notes_title">Update Notes</string>
-    <string name="update_notes_message_version_controller_update">This DuckStation update includes support for multiple controllers with vibration, and binding devices such as keyboards/volume buttons.\n\nYou must re-bind your controllers, otherwise they will no longer function. Do you want to do this now?</string>
-    <string name="settings_osd_show_show_inputs">Show Controller Input</string>
-    <string name="settings_summary_osd_show_inputs">Shows the current controller state of the system in the bottom-left corner of the display.</string>
-    <string name="touchscreen_controller_edit_menu">Edit Menu</string>
-    <string name="settings_achievements_category">Account</string>
-    <string name="settings_achievements_global_settings">Global Settings</string>
-    <string name="settings_category_achievements">Achievement Settings</string>
-    <string name="settings_multitap_mode">Multitap Mode</string>
-    <string name="settings_touchscreen_controller_port">Touchscreen Controller Port</string>
-    <string name="emulation_menu_load_state">Load State</string>
-    <string name="emulation_menu_save_state">Save State</string>
-    <string name="emulation_menu_toggle_fast_forward">Toggle Fast Forward</string>
-    <string name="emulation_menu_achievements">Achievements</string>
-    <string name="emulation_menu_patch_codes">Patch Codes</string>
-    <string name="emulation_menu_change_disc">Change Disc</string>
-    <string name="emulation_menu_touchscreen_controller_settings">Touchscreen Controller Settings</string>
-    <string name="emulation_menu_toggle_analog_mode">Toggle Controller Analog Mode</string>
-    <string name="emulation_menu_reset_console">Reset Console</string>
-    <string name="emulation_menu_exit_game">Exit Game</string>
-    <string name="settings_use_software_renderer_for_readbacks">Use Software Renderer For Readbacks</string>
-    <string name="settings_summary_use_software_renderer_for_readbacks">Runs the software renderer in parallel for VRAM readbacks. On some devices, this may result in greater performance when using graphical enhancements with the hardware renderer.</string>
-    <string name="settings_use_software_renderer">Use Software Renderer</string>
-    <string name="settings_disable_widescreen">Disable Widescreen</string>
-    <string name="settings_cdrom_seek_speedup">CD-ROM Seek Speedup</string>
-    <string name="settings_summary_cdrom_seek_speedup">Speeds up CD-ROM seeks by the specified factor. May improve loading speeds in some games, at the cost of breaking others.</string>
-    <string name="settings_custom_aspect_ratio">Custom Aspect Ratio</string>
-    <string name="settings_summary_custom_aspect_ratio">Used when aspect ratio is set to Custom.</string>
-    <string name="controller_settings_category_auto_fire_buttons">Auto Fire Buttons</string>
-    <string name="controller_settings_category_auto_fire_bindings">Auto Fire Triggers</string>
-    <string name="controller_settings_auto_fire_n_button">Auto Fire %d Button</string>
-    <string name="controller_settings_auto_fire_n_frequency">Auto Fire %d Frequency/Interval</string>
-    <string name="controller_binding_auto_fire_n">Auto Fire %d</string>
-    <string name="settings_category_cdrom">CD-ROM Settings</string>
-    <string name="settings_cdrom_read_thread">Use Read Thread (Asynchronous)</string>
-    <string name="settings_summary_read_thread">Reduces hitches in emulation by reading/decompressing CD data asynchronously on a worker thread.</string>
-    <string name="settings_cdrom_load_image_patches">Apply Image Patches</string>
-    <string name="settings_summary_load_image_patches">Automatically applies patches to disc images when they are present, currently only PPF is supported.</string>
-    <string name="menu_edit_game_directories_force_saf">Force Scoped Storage</string>
-    <string name="settings_expand_to_cutout">Expand To Cutout Area</string>
-    <string name="settings_summary_expand_to_cutout">Expands the display area to include the cutout (or notch) area.</string>
-</resources>
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index 83f0c72bb..000000000
--- a/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<resources>
-
-    <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
-        <!-- Customize your theme here. -->
-        <item name="colorPrimary">@color/colorPrimary</item>
-        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
-        <item name="colorAccent">@color/colorAccent</item>
-        <item name="android:navigationBarColor">@color/colorNavigation</item>
-    </style>
-
-    <style name="AppTheme.NoActionBar">
-        <item name="windowActionBar">false</item>
-        <item name="windowNoTitle">true</item>
-    </style>
-
-    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
-
-    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.DayNight" />
-
-    <style name="FullscreenTheme" parent="AppTheme">
-        <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
-        <item name="android:windowActionBarOverlay">true</item>
-        <item name="android:windowBackground">@null</item>
-        <item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
-        <item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
-    </style>
-
-    <style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">
-        <item name="android:background">@color/black_overlay</item>
-    </style>
-
-    <style name="TabTextAppearance" parent="TextAppearance.Design.Tab">
-        <item name="textAllCaps">false</item>
-        <item name="android:textAllCaps">false</item>
-    </style>
-
-    <style name="EmulationActivityOverlay" parent="ThemeOverlay.AppCompat.Dark">
-        <item name="android:windowNoTitle">true</item>
-        <item name="android:windowBackground">@color/emulationActivityPauseBackground</item>
-        <item name="android:colorBackgroundCacheHint">@null</item>
-        <item name="android:windowIsTranslucent">true</item>
-        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
-    </style>
-</resources>
diff --git a/android/app/src/main/res/xml/achievement_preferences.xml b/android/app/src/main/res/xml/achievement_preferences.xml
deleted file mode 100644
index 29901275b..000000000
--- a/android/app/src/main/res/xml/achievement_preferences.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <PreferenceCategory app:title="@string/settings_achievements_global_settings" app:iconSpaceReserved="false">
-        <SwitchPreferenceCompat
-            app:key="Cheevos/Enabled"
-            app:title="@string/settings_achievements_enable"
-            app:summary="@string/settings_summary_achievements_enable"
-            app:defaultValue="false"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Cheevos/ChallengeMode"
-            app:title="@string/settings_achievements_challenge_mode"
-            app:summary="@string/settings_summary_achievements_challenge_mode"
-            app:dependency="Cheevos/Enabled"
-            app:defaultValue="false"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Cheevos/RichPresence"
-            app:title="@string/settings_achievements_rich_presence"
-            app:summary="@string/settings_summary_achievements_rich_presence"
-            app:dependency="Cheevos/Enabled"
-            app:defaultValue="true"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-
-    <PreferenceCategory app:title="@string/settings_achievements_category" app:iconSpaceReserved="false">
-        <Preference
-            app:key="Cheevos/Username"
-            app:title="@string/settings_achievements_username"
-            app:iconSpaceReserved="false" />
-        <Preference
-            app:key="Cheevos/LoginTokenTime"
-            app:title="@string/settings_achievements_token_generation_time"
-            app:iconSpaceReserved="false" />
-        <PreferenceScreen
-            app:key="Cheevos/Login"
-            app:title="@string/settings_achievements_login"
-            app:summary="@string/settings_summary_achievements_login"
-            app:iconSpaceReserved="false" />
-        <PreferenceScreen
-            app:key="Cheevos/Register"
-            app:title="@string/settings_achievements_register"
-            app:summary="@string/settings_summary_achievements_register"
-            app:iconSpaceReserved="false" />
-        <PreferenceScreen
-            app:key="Cheevos/Logout"
-            app:title="@string/settings_achievements_logout"
-            app:summary="@string/settings_summary_achievements_logout"
-            app:iconSpaceReserved="false" />
-        <PreferenceScreen
-            app:key="Cheevos/ViewProfile"
-            app:title="@string/settings_achievements_view_profile"
-            app:summary="@string/settings_summary_achievements_view_profile"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-    <PreferenceCategory app:title="@string/settings_achievements_disclaimer" app:iconSpaceReserved="false">
-    </PreferenceCategory>
-</PreferenceScreen>
\ No newline at end of file
diff --git a/android/app/src/main/res/xml/advanced_preferences.xml b/android/app/src/main/res/xml/advanced_preferences.xml
deleted file mode 100644
index 7187e34c9..000000000
--- a/android/app/src/main/res/xml/advanced_preferences.xml
+++ /dev/null
@@ -1,256 +0,0 @@
-<!--
-  ~ Copyright 2018 The app Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
-    <PreferenceCategory app:title="@string/settings_category_global" app:iconSpaceReserved="false">
-        <SwitchPreferenceCompat
-            app:key="Main/AutoLoadCheats"
-            app:title="@string/settings_load_patch_codes"
-            app:defaultValue="true"
-            app:summary="@string/settings_summary_load_patch_codes"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Main/ApplyGameSettings"
-            app:title="@string/settings_apply_compatibility_settings"
-            app:defaultValue="true"
-            app:summary="@string/settings_summary_apply_compatibility_settings"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Main/DisableAllEnhancements"
-            app:title="@string/settings_disable_all_enhancements"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_disable_all_enhancements"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Main/SustainedPerformanceMode"
-            app:title="@string/settings_sustained_performance_mode"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_sustained_performance_mode"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-
-    <PreferenceCategory app:title="@string/settings_category_display" app:iconSpaceReserved="false">
-        <SwitchPreferenceCompat
-            app:key="Display/VSync"
-            app:title="@string/settings_video_sync"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_video_sync"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Main/SyncToHostRefreshRate"
-            app:title="@string/settings_general_sync_to_host_refresh_rate"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_general_sync_to_host_refresh_rate"
-            app:dependency="Display/VSync"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Display/DisplayAllFrames"
-            app:title="@string/settings_display_all_frames"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_display_all_frames"
-            app:iconSpaceReserved="false" />
-        <ListPreference
-            app:key="Display/MaxFPS"
-            app:title="@string/settings_presented_frame_limit"
-            app:defaultValue="60"
-            app:entries="@array/settings_advanced_display_fps_limit_entries"
-            app:entryValues="@array/settings_advanced_display_fps_limit_values"
-            app:useSimpleSummaryProvider="true"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="GPU/UseSoftwareRendererForReadbacks"
-            app:title="@string/settings_use_software_renderer_for_readbacks"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_use_software_renderer_for_readbacks"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-
-    <PreferenceCategory app:title="@string/settings_category_audio" app:iconSpaceReserved="false">
-        <ListPreference
-            app:key="Audio/Backend"
-            app:title="@string/settings_audio_backend"
-            app:entries="@array/settings_audio_backend_entries"
-            app:entryValues="@array/settings_audio_backend_values"
-            app:defaultValue="OpenSLES"
-            app:useSimpleSummaryProvider="true"
-            app:iconSpaceReserved="false" />
-        <ListPreference
-            app:key="Audio/BufferSize"
-            app:title="@string/settings_audio_buffer_size"
-            app:entries="@array/settings_audio_buffer_size_entries"
-            app:entryValues="@array/settings_audio_buffer_size_values"
-            app:defaultValue="2048"
-            app:summary="@string/settings_summary_audio_buffer_size"
-            app:useSimpleSummaryProvider="true"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Audio/Sync"
-            app:title="@string/settings_audio_sync"
-            app:defaultValue="true"
-            app:summary="@string/settings_summary_audio_sync"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Audio/Resampling"
-            app:title="@string/settings_audio_resampling"
-            app:defaultValue="true"
-            app:summary="@string/settings_summary_audio_resampling"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-
-    <PreferenceCategory app:title="@string/settings_category_console" app:iconSpaceReserved="false">
-        <ListPreference
-            app:key="Console/Region"
-            app:title="@string/settings_console_region"
-            app:entries="@array/settings_console_region_entries"
-            app:entryValues="@array/settings_console_region_values"
-            app:defaultValue="Auto"
-            app:useSimpleSummaryProvider="true"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-
-    <PreferenceCategory app:title="@string/settings_category_cdrom" app:iconSpaceReserved="false">
-        <SwitchPreferenceCompat
-            app:key="CDROM/ReadThread"
-            app:title="@string/settings_cdrom_read_thread"
-            app:defaultValue="true"
-            app:summary="@string/settings_summary_read_thread"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="CDROM/RegionCheck"
-            app:title="@string/settings_cdrom_region_check"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_cdrom_region_check"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="CDROM/LoadImageToRAM"
-            app:title="@string/settings_cdrom_preload_image_to_ram"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_preload_image_to_ram"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="CDROM/LoadImagePatches"
-            app:title="@string/settings_cdrom_load_image_patches"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_load_image_patches"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-
-    <PreferenceCategory app:title="@string/settings_category_cpu" app:iconSpaceReserved="false">
-        <ListPreference
-            app:key="CPU/ExecutionMode"
-            app:title="@string/settings_cpu_execution_mode"
-            app:entries="@array/settings_cpu_execution_mode_entries"
-            app:entryValues="@array/settings_cpu_execution_mode_values"
-            app:defaultValue="Recompiler"
-            app:useSimpleSummaryProvider="true"
-            app:iconSpaceReserved="false" />
-        <ListPreference
-            app:key="CPU/Overclock"
-            app:title="@string/settings_cpu_overclocking"
-            app:defaultValue="100"
-            app:entries="@array/settings_advanced_cpu_overclock_entries"
-            app:entryValues="@array/settings_advanced_cpu_overclock_values"
-            app:useSimpleSummaryProvider="true"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="CPU/RecompilerICache"
-            app:title="@string/settings_cpu_recompiler_icache"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_cpu_recompiler_icache"
-            app:iconSpaceReserved="false" />
-        <ListPreference
-            app:key="CPU/FastmemMode"
-            app:title="@string/settings_cpu_recompiler_fastmem"
-            app:entries="@array/settings_cpu_fastmem_mode_entries"
-            app:entryValues="@array/settings_cpu_fastmem_mode_values"
-            app:useSimpleSummaryProvider="true"
-            app:defaultValue="MMap"
-            app:summary="@string/settings_summary_cpu_recompiler_fastmem"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-
-    <PreferenceCategory app:title="@string/settings_category_gpu" app:iconSpaceReserved="false">
-        <SwitchPreferenceCompat
-            app:key="GPU/UseThread"
-            app:title="@string/settings_gpu_thread"
-            app:defaultValue="true"
-            app:summary="@string/settings_summary_gpu_thread"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="GPU/ThreadedPresentation"
-            app:title="@string/settings_gpu_threaded_presentation"
-            app:defaultValue="true"
-            app:summary="@string/settings_summary_gpu_threaded_presentation"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="GPU/PGXPVertexCache"
-            app:title="@string/settings_pgxp_vertex_cache"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_pgxp_vertex_cache"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="GPU/PGXPCPU"
-            app:title="@string/settings_pgxp_cpu_mode"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_pgxp_cpu_mode"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-
-    <PreferenceCategory app:title="@string/settings_category_logging" app:iconSpaceReserved="false">
-        <ListPreference
-            app:key="Logging/LogLevel"
-            app:title="@string/settings_logging_level"
-            app:defaultValue="Warning"
-            app:entries="@array/settings_log_level_entries"
-            app:entryValues="@array/settings_log_level_values"
-            app:useSimpleSummaryProvider="true"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Logging/LogToFile"
-            app:title="@string/settings_log_to_file"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_log_to_file"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Logging/LogToDebug"
-            app:title="@string/settings_log_to_logcat"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_log_to_logcat"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="BIOS/PatchTTYEnable"
-            app:title="@string/settings_console_tty_output"
-            app:defaultValue="false"
-            app:summary="@string/settings_summary_console_tty_output"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-
-    <PreferenceCategory app:title="@string/settings_category_achievements" app:iconSpaceReserved="false">
-        <SwitchPreferenceCompat
-            app:key="Cheevos/TestMode"
-            app:title="@string/settings_achievements_test_mode"
-            app:summary="@string/settings_summary_achievements_test_mode"
-            app:defaultValue="false"
-            app:iconSpaceReserved="false" />
-        <SwitchPreferenceCompat
-            app:key="Cheevos/UseFirstDiscFromPlaylist"
-            app:title="@string/settings_achievements_use_first_disc_from_playlist"
-            app:summary="@string/settings_summary_achievements_use_first_disc_from_playlist"
-            app:defaultValue="true"
-            app:iconSpaceReserved="false" />
-    </PreferenceCategory>
-
-</PreferenceScreen>
diff --git a/android/app/src/main/res/xml/audio_preferences.xml b/android/app/src/main/res/xml/audio_preferences.xml
deleted file mode 100644
index 53e64ca38..000000000
--- a/android/app/src/main/res/xml/audio_preferences.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<!--
-  ~ Copyright 2018 The app Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-
-    <SeekBarPreference
-        app:key="Audio/OutputVolume"
-        app:title="@string/settings_volume"
-        app:summary="@string/settings_summary_volume"
-        app:defaultValue="100"
-        android:max="100"
-        app:min="0"
-        app:iconSpaceReserved="false"
-        app:showSeekBarValue="true" />
-    <SeekBarPreference
-        app:key="Audio/FastForwardVolume"
-        app:title="@string/settings_fast_forward_volume"
-        app:summary="@string/settings_summary_fast_forward_volume"
-        app:defaultValue="100"
-        android:max="100"
-        app:min="0"
-        app:iconSpaceReserved="false"
-        app:showSeekBarValue="true" />
-    <SwitchPreferenceCompat
-        app:key="Audio/OutputMuted"
-        app:title="@string/settings_mute_all_sound"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_mute_all_sound"
-        app:iconSpaceReserved="false" />
-    <SwitchPreferenceCompat
-        app:key="CDROM/MuteCDAudio"
-        app:title="@string/settings_mute_cd_audio"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_mute_cd_audio"
-        app:iconSpaceReserved="false" />
-
-</PreferenceScreen>
diff --git a/android/app/src/main/res/xml/controllers_preferences.xml b/android/app/src/main/res/xml/controllers_preferences.xml
deleted file mode 100644
index 8b0654dcc..000000000
--- a/android/app/src/main/res/xml/controllers_preferences.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<!--
-  ~ Copyright 2018 The app Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
-
-    <PreferenceCategory
-        app:iconSpaceReserved="false"
-        app:title="@string/controller_settings_category_touchscreen_controller">
-        <ListPreference
-            app:defaultValue="digital"
-            app:entries="@array/settings_touchscreen_controller_view_entries"
-            app:entryValues="@array/settings_touchscreen_controller_view_values"
-            app:iconSpaceReserved="false"
-            app:key="Controller1/TouchscreenControllerView"
-            app:title="@string/settings_touchscreen_controller_view"
-            app:useSimpleSummaryProvider="true" />
-        <ListPreference
-            app:defaultValue="0"
-            app:entries="@array/settings_touchscreen_controller_port_entries"
-            app:entryValues="@array/settings_touchscreen_controller_port_values"
-            app:iconSpaceReserved="false"
-            app:key="TouchscreenController/PortIndex"
-            app:title="@string/settings_touchscreen_controller_port"
-            app:useSimpleSummaryProvider="true" />
-        <SwitchPreferenceCompat
-            app:defaultValue="false"
-            app:iconSpaceReserved="false"
-            app:key="Controller1/AutoHideTouchscreenController"
-            app:summary="@string/settings_summary_auto_hide_touchscreen_controller"
-            app:title="@string/settings_auto_hide_touchscreen_controller" />
-        <SwitchPreferenceCompat
-            app:defaultValue="false"
-            app:iconSpaceReserved="false"
-            app:key="Controller1/TouchGliding"
-            app:summary="@string/settings_summary_touch_gliding"
-            app:title="@string/settings_touch_gliding" />
-        <SwitchPreferenceCompat
-            app:defaultValue="false"
-            app:iconSpaceReserved="false"
-            app:key="Controller1/HapticFeedback"
-            app:summary="@string/settings_summary_vibrate_on_press"
-            app:title="@string/settings_vibrate_on_press" />
-        <SwitchPreferenceCompat
-            app:defaultValue="false"
-            app:iconSpaceReserved="false"
-            app:key="Controller1/Vibration"
-            app:summary="@string/settings_summary_enable_vibration"
-            app:title="@string/settings_enable_vibration" />
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        app:iconSpaceReserved="false"
-        app:title="@string/controller_settings_category_ports">
-        <ListPreference
-            app:defaultValue="Disabled"
-            app:entries="@array/settings_multitap_mode_entries"
-            app:entryValues="@array/settings_multitap_mode_values"
-            app:iconSpaceReserved="false"
-            app:key="ControllerPorts/MultitapMode"
-            app:title="@string/settings_multitap_mode"
-            app:useSimpleSummaryProvider="true" />
-        <ListPreference
-            app:defaultValue="PerGameTitle"
-            app:entries="@array/settings_memory_card_mode_entries"
-            app:entryValues="@array/settings_memory_card_mode_values"
-            app:iconSpaceReserved="false"
-            app:key="MemoryCards/Card1Type"
-            app:title="@string/settings_memory_card_1_type"
-            app:useSimpleSummaryProvider="true" />
-        <ListPreference
-            app:defaultValue="None"
-            app:entries="@array/settings_memory_card_mode_entries"
-            app:entryValues="@array/settings_memory_card_mode_values"
-            app:iconSpaceReserved="false"
-            app:key="MemoryCards/Card2Type"
-            app:title="@string/settings_memory_card_2_type"
-            app:useSimpleSummaryProvider="true" />
-    </PreferenceCategory>
-
-</PreferenceScreen>
diff --git a/android/app/src/main/res/xml/display_preferences.xml b/android/app/src/main/res/xml/display_preferences.xml
deleted file mode 100644
index 2d55a57ed..000000000
--- a/android/app/src/main/res/xml/display_preferences.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-<!--
-  ~ Copyright 2018 The app Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
-
-    <ListPreference
-        app:key="Display/CropMode"
-        app:title="@string/settings_crop_mode"
-        app:entries="@array/settings_display_crop_mode_entries"
-        app:entryValues="@array/settings_display_crop_mode_values"
-        app:defaultValue="Overscan"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-
-    <ListPreference
-        app:key="Display/AspectRatio"
-        app:title="@string/settings_aspect_ratio"
-        app:entries="@array/settings_display_aspect_ratio_names"
-        app:entryValues="@array/settings_display_aspect_ratio_values"
-        app:defaultValue="Auto (Game Native)"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-
-    <com.github.stenzek.duckstation.RatioPreference
-        numeratorKey="Display/CustomAspectRatioNumerator"
-        defaultNumerator="4"
-        minimumNumerator="1"
-        maximumNunerator="100"
-        denominatorKey="Display/CustomAspectRatioDenominator"
-        defaultDenominator="3"
-        minimumDenominator="1"
-        maximumDenominator="100"
-        app:title="@string/settings_custom_aspect_ratio"
-        app:summary="@string/settings_summary_custom_aspect_ratio"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-
-    <ListPreference
-        app:key="GPU/DownsampleMode"
-        app:title="@string/settings_downsample_mode"
-        app:entries="@array/settings_downsample_mode_entries"
-        app:entryValues="@array/settings_downsample_mode_values"
-        app:defaultValue="Disabled"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="Display/IntegerScaling"
-        app:title="@string/settings_integer_upscaling"
-        app:defaultValue="false"
-        app:disableDependentsState="true"
-        app:summary="@string/settings_summary_integer_upscaling"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="Display/LinearFiltering"
-        app:title="@string/settings_linear_upscaling"
-        app:defaultValue="true"
-        app:dependency="Display/IntegerScaling"
-        app:summary="@string/settings_summary_linear_upscaling"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="Display/Stretch"
-        app:title="@string/settings_display_stretch"
-        app:defaultValue="false"
-        app:dependency="Display/IntegerScaling"
-        app:summary="@string/settings_summary_display_stretch"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="Display/ExpandToCutout"
-        app:title="@string/settings_expand_to_cutout"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_expand_to_cutout"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="Display/ShowOSDMessages"
-        app:title="@string/settings_osd_show_messages"
-        app:defaultValue="true"
-        app:summary="@string/settings_summary_osd_show_messages"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="Display/ShowSpeed"
-        app:title="@string/settings_osd_show_speed"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_osd_show_speed"
-        app:iconSpaceReserved="false" />
-    <SwitchPreferenceCompat
-        app:key="Display/ShowVPS"
-        app:title="@string/settings_osd_show_show_vps"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_osd_show_vps"
-        app:iconSpaceReserved="false" />
-    <SwitchPreferenceCompat
-        app:key="Display/ShowFPS"
-        app:title="@string/settings_osd_show_show_fps"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_osd_show_fps"
-        app:iconSpaceReserved="false" />
-    <SwitchPreferenceCompat
-        app:key="Display/ShowResolution"
-        app:title="@string/settings_osd_show_show_resolution"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_osd_show_resolution"
-        app:iconSpaceReserved="false" />
-    <SwitchPreferenceCompat
-        app:key="Display/ShowInputs"
-        app:title="@string/settings_osd_show_show_inputs"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_osd_show_inputs"
-        app:iconSpaceReserved="false" />
-
-</PreferenceScreen>
diff --git a/android/app/src/main/res/xml/enhancements_preferences.xml b/android/app/src/main/res/xml/enhancements_preferences.xml
deleted file mode 100644
index a0621cfd9..000000000
--- a/android/app/src/main/res/xml/enhancements_preferences.xml
+++ /dev/null
@@ -1,154 +0,0 @@
-<!--
-  ~ Copyright 2018 The app Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
-    <ListPreference
-        app:key="CDROM/ReadSpeedup"
-        app:title="@string/settings_cdrom_read_speedup"
-        app:entries="@array/settings_cdrom_read_speedup_entries"
-        app:entryValues="@array/settings_cdrom_read_speedup_values"
-        app:defaultValue="1"
-        app:summary="@string/settings_summary_cdrom_read_speedup"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-    <ListPreference
-        app:key="CDROM/SeekSpeedup"
-        app:title="@string/settings_cdrom_seek_speedup"
-        app:entries="@array/settings_cdrom_seek_speedup_entries"
-        app:entryValues="@array/settings_cdrom_seek_speedup_values"
-        app:defaultValue="1"
-        app:summary="@string/settings_summary_cdrom_seek_speedup"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-    <SwitchPreferenceCompat
-        app:key="BIOS/PatchFastBoot"
-        app:title="@string/settings_console_fast_boot"
-        app:defaultValue="true"
-        app:summary="@string/settings_summary_console_fast_boot"
-        app:iconSpaceReserved="false" />
-    <ListPreference
-        app:key="GPU/ResolutionScale"
-        app:title="@string/settings_gpu_resolution_scale"
-        app:entries="@array/settings_gpu_resolution_scale_entries"
-        app:entryValues="@array/settings_gpu_resolution_scale_values"
-        app:defaultValue="1"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-    <ListPreference
-        app:key="GPU/MSAA"
-        app:title="@string/settings_msaa"
-        app:entries="@array/settings_gpu_msaa_entries"
-        app:entryValues="@array/settings_gpu_msaa_values"
-        app:defaultValue="1"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-    <SwitchPreferenceCompat
-        app:key="GPU/TrueColor"
-        app:title="@string/settings_true_color"
-        app:summary="@string/settings_summary_true_color"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="GPU/ScaledDithering"
-        app:title="@string/settings_scaled_dithering"
-        app:defaultValue="true"
-        app:summary="@string/settings_summary_scaled_dithering"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="GPU/DisableInterlacing"
-        app:title="@string/settings_disable_interlacing"
-        app:defaultValue="true"
-        app:summary="@string/settings_summary_disable_interlacing"
-        app:iconSpaceReserved="false" />
-
-    <ListPreference
-        app:key="GPU/TextureFilter"
-        app:title="@string/settings_texture_filtering"
-        app:entries="@array/settings_gpu_texture_filter_names"
-        app:entryValues="@array/settings_gpu_texture_filter_values"
-        app:defaultValue="Nearest"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="GPU/ForceNTSCTimings"
-        app:title="@string/settings_force_ntsc_timings"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_force_ntsc_timings"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="GPU/WidescreenHack"
-        app:title="@string/settings_widescreen_hack"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_widescreen_hack"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="Display/Force4_3For24Bit"
-        app:title="@string/settings_force_4_3_for_24bit"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_force_4_3_for_24bit"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="GPU/ChromaSmoothing24Bit"
-        app:title="@string/settings_chroma_smoothing_24bit"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_chrome_smoothing_24bit"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="GPU/PGXPEnable"
-        app:title="@string/settings_pgxp_geometry_correction"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_pgxp_geometry_correction"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="GPU/PGXPCulling"
-        app:title="@string/settings_pgxp_culling_correction"
-        app:dependency="GPU/PGXPEnable"
-        app:defaultValue="true"
-        app:summary="@string/settings_summary_pgxp_culling_correction"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="GPU/PGXPTextureCorrection"
-        app:title="@string/settings_pgxp_texture_correction"
-        app:dependency="GPU/PGXPEnable"
-        app:defaultValue="true"
-        app:summary="@string/settings_summary_pgxp_texture_correction"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="GPU/PGXPPreserveProjFP"
-        app:title="@string/settings_pgxp_preserve_projection_precision"
-        app:dependency="GPU/PGXPEnable"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_pgxp_preserve_projection_precision"
-        app:iconSpaceReserved="false" />
-
-    <SwitchPreferenceCompat
-        app:key="GPU/PGXPDepthBuffer"
-        app:title="@string/settings_pgxp_depth_buffer"
-        app:dependency="GPU/PGXPEnable"
-        app:defaultValue="false"
-        app:summary="@string/settings_summary_pgxp_depth_buffer"
-        app:iconSpaceReserved="false" />
-
-</PreferenceScreen>
diff --git a/android/app/src/main/res/xml/general_preferences.xml b/android/app/src/main/res/xml/general_preferences.xml
deleted file mode 100644
index 917b543f2..000000000
--- a/android/app/src/main/res/xml/general_preferences.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<!--
-  ~ Copyright 2018 The app Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:android="http://schemas.android.com/apk/res/android">
-    <Preference
-        app:title="@string/settings_game_directories"
-        app:summary="@string/settings_summary_game_directories"
-        app:iconSpaceReserved="false">
-        <intent
-            android:action="android.intent.action.VIEW"
-            android:targetClass="com.github.stenzek.duckstation.GameDirectoriesActivity"
-            android:targetPackage="com.github.stenzek.duckstation" />
-    </Preference>
-    <ListPreference
-        app:key="Main/EmulationSpeed"
-        app:title="@string/settings_emulation_speed"
-        app:entries="@array/settings_emulation_speed_entries"
-        app:entryValues="@array/settings_emulation_speed_values"
-        app:defaultValue="1.0"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-    <ListPreference
-        app:key="Main/FastForwardSpeed"
-        app:title="@string/settings_fast_forward_speed"
-        app:entries="@array/settings_emulation_speed_entries"
-        app:entryValues="@array/settings_emulation_speed_values"
-        app:defaultValue="0.0"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-    <ListPreference
-        app:key="Main/EmulationScreenOrientation"
-        app:title="@string/settings_emulation_screen_orientation"
-        app:entries="@array/settings_emulation_screen_orientation_entries"
-        app:entryValues="@array/settings_emulation_screen_orientation_values"
-        app:defaultValue="unspecified"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-    <SwitchPreferenceCompat
-        app:key="Main/SaveStateOnExit"
-        app:title="@string/settings_save_state_on_exit"
-        app:defaultValue="true"
-        app:summary="@string/settings_summary_save_state_on_exit"
-        app:iconSpaceReserved="false" />
-    <ListPreference
-        app:key="GPU/Renderer"
-        app:title="@string/settings_gpu_renderer"
-        app:entries="@array/gpu_renderer_entries"
-        app:entryValues="@array/gpu_renderer_values"
-        app:defaultValue="OpenGL"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-    <ListPreference
-        app:key="Main/Language"
-        app:title="@string/settings_language"
-        app:defaultValue="none"
-        app:entries="@array/settings_language_entries"
-        app:entryValues="@array/settings_language_values"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-    <ListPreference
-        app:key="Main/Theme"
-        app:title="@string/settings_theme"
-        app:entries="@array/settings_theme_entries"
-        app:entryValues="@array/settings_theme_values"
-        app:defaultValue="follow_system"
-        app:useSimpleSummaryProvider="true"
-        app:iconSpaceReserved="false" />
-
-</PreferenceScreen>
diff --git a/android/app/src/main/res/xml/network_security_config.xml b/android/app/src/main/res/xml/network_security_config.xml
deleted file mode 100644
index f86a16beb..000000000
--- a/android/app/src/main/res/xml/network_security_config.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<network-security-config>
-    <domain-config cleartextTrafficPermitted="true">
-        <domain includeSubdomains="true">i.retroachievements.org</domain>
-    </domain-config>
-</network-security-config>
diff --git a/android/app/src/test/java/com/github/stenzek/duckstation/ExampleUnitTest.java b/android/app/src/test/java/com/github/stenzek/duckstation/ExampleUnitTest.java
deleted file mode 100644
index b90ac4a49..000000000
--- a/android/app/src/test/java/com/github/stenzek/duckstation/ExampleUnitTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.github.stenzek.duckstation;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
- */
-public class ExampleUnitTest {
-    @Test
-    public void addition_isCorrect() {
-        assertEquals(4, 2 + 2);
-    }
-}
\ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
deleted file mode 100644
index 0be6f99d2..000000000
--- a/android/build.gradle
+++ /dev/null
@@ -1,25 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
-    repositories {
-        google()
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:4.2.1'
-        
-        // NOTE: Do not place your application dependencies here; they belong
-        // in the individual module build.gradle files
-    }
-}
-
-allprojects {
-    repositories {
-        google()
-        mavenCentral()
-    }
-}
-
-task clean(type: Delete) {
-    delete rootProject.buildDir
-}
diff --git a/android/gradle.properties b/android/gradle.properties
deleted file mode 100644
index 199d16ede..000000000
--- a/android/gradle.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Project-wide Gradle settings.
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx1536m
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
-# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app's APK
-# https://developer.android.com/topic/libraries/support-library/androidx-rn
-android.useAndroidX=true
-# Automatically convert third-party libraries to use AndroidX
-android.enableJetifier=true
-
diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index f6b961fd5a86aa5fbfe90f707c3138408be7c718..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 54329
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
F{|7XC?P&l2

diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 7b61d1ea9..000000000
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Sun Jun 06 12:33:06 AEST 2021
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
diff --git a/android/gradlew b/android/gradlew
deleted file mode 100755
index cccdd3d51..000000000
--- a/android/gradlew
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env sh
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
-    echo "$*"
-}
-
-die () {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-  NONSTOP* )
-    nonstop=true
-    ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-    JAVACMD=`cygpath --unix "$JAVACMD"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Escape application args
-save () {
-    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
-    echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
-  cd "$(dirname "$0")"
-fi
-
-exec "$JAVACMD" "$@"
diff --git a/android/gradlew.bat b/android/gradlew.bat
deleted file mode 100644
index e95643d6a..000000000
--- a/android/gradlew.bat
+++ /dev/null
@@ -1,84 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/android/settings.gradle b/android/settings.gradle
deleted file mode 100644
index 7f5ee4013..000000000
--- a/android/settings.gradle
+++ /dev/null
@@ -1,2 +0,0 @@
-include ':app'
-rootProject.name='DuckStation'