Commit Graph
89 Commits
Author SHA1 Message Date
ApfelTeeSaft 934c846d12 core/arm: model ARM11 MPCore timing per TRM
This Commit also reverts my initial "reimplementation / revertion" of the legacy "1 tick : 1 instruction" cpu cycling.

- Fix a bug related to the Get<field> helper. It performed a parallel bit deposit where an extract was required

- Branch prediction stuff

- Charge now loads/stores their 1-cycle issue cost instead of flat interlock penalty

Add VFP11 costs (was VFP -> decay to 1 cycle generic entry)

- Implement Thumb dispatch
2026-07-07 16:33:36 +02:00
ApfelTeeSaft 3eb504d67c feat: make per instruction cycle table optional
makes the nov 2022 change regarding the instruction cycle table thing toggleable inside Debug->CPU Settings.
2026-07-06 17:46:23 +02:00
KojoZero 8c4e8b77b2 Add Skip Presenting Duplicate Frames Feature (#1867)
* added basic skip duplicate frames implementation

* fix secondary display and attempt to fix lcd color fill
2026-07-03 12:37:27 +02:00
PabloMK7 fcb10fb899 core: Make PICA debugging a toggleable feature (#2254) 2026-07-03 11:00:56 +02:00
OpenSauce04 4687226fa5 android: Force use of Vulkan if OpenGL renderer is ANGLE
This commit also renames the AndroidStorage namespace and related files to AndroidUtils, and merges `jni/utils.cpp`/`.h` into it.
2026-06-16 17:27:33 +01:00
NovaChildandOpenSauce04 8a6d597dec android: Secondary Layout and Menu Improvements (#1385)
* Add a new Secondary Display Layout option on android that makes the secondary display honor swap button

* add quick menu option for secondary layout

* fix icon

* added other secondary layouts

* Add a new Secondary Display Layout option on android that makes the secondary display honor swap button

# Conflicts:
#	src/core/frontend/framebuffer_layout.cpp

* add quick menu option for secondary layout

* fix icon

* added other secondary layouts

* updated secondary menu with functionality to switch external displays

 Conflicts:
	src/android/app/src/main/java/org/citra/citra_emu/display/SecondaryDisplay.kt

* safety checks for crash prevention

* make secondary menu only appear if a secondary display is available

* update default displayid behavior to exclude "Built"

* update odin 2 bugfix to handle other languages

* Apply clang-format

* Rename "Opposite of Primary Display" option for brevity

* Rename menu_secondary_layout_reverse_primary for consistency

* Rename SecondaryDisplayLayout::ReversePrimary for consistency

* first round of code fixes based on review

* Added android-side enable_secondary_display boolean setting, replacing secondary_display_layout = none on the android side. Exposed it in Layout settings, and secondary display layout is now only selectable if it is enabled.  Support for the old option is still in the code, but should no longer be selectable.

Also renamed opposite to reverse_primary in a few other places.

* Update framebuffer layout and renderers to correctly render hybrid mode on both primary and secondary displays

* Apply clang format

* Re-apply terminology changes which were undone by a recent commit

* Removed unused string emulation_secondary_display_default

---------

Co-authored-by: OpenSauce04 <[email protected]>
2026-06-14 17:37:32 +01:00
PabloMK7 929a51afc6 audio: Add option to simulate headphones plugged in (#2099) 2026-05-08 15:19:53 +02:00
PabloMK7 260f08c497 core: Add async filesystem operations (#2098) 2026-05-08 11:35:47 +02:00
PabloMK7 b540725090 Revamp GDB implemenation and add a some minor debug features (#2086) 2026-05-07 13:48:35 +02:00
PabloMK7 5ddbaeae23 gsp: Fix GPU interrupt queue and add GPU timing emulation (#2095) 2026-05-07 01:36:21 +02:00
OpenSauce04 c650473fdc Default to Vulkan renderer on Android 2026-04-06 18:58:52 +01:00
David Griswold 1febb83942 qt: Add controller touchpad support (#777) 2026-03-12 00:21:17 +01:00
PabloMK7 2207be30a9 core: Add "toggle unique data console type" option (#1826) 2026-03-06 01:23:35 +01:00
OpenSauce 068d6598bc Configuration backend improvements Pt. 1 (#1762)
* Convert all setting keys in settings.h into hana strings

* Derive libretro setting keys from common/settings.h hana strings

* settings.h: Reduce code repetition in key definitions via macro

* Implemented mechanism to pass our C++ setting keys to Android/Kotlin

None of the Android keys have been moved over as of this commit, this is just prep work

* jni_settings_keys.cpp.in: Removed redundant code

* Migrate (almost) all Android setting string keys over to SettingKeys

Also some slight cleanup

* Updated license headers

* Fixed top custom width erroneously being used in place of top custom height

* Migrate (probably) all setting string keys to Settings::QKeys

* Migrated several previously missed string keys to generated keys

* SettingKeys.kt: Visually seperate shared and Android-exclusive keys, similar to GenerateSettingKeys.cmake

* android: sdl2_config --> android_config

Not sure why these values are named this way. Hold-over from SDL2 frontend?

* android: Generate and validate default config.ini dynamically

* Settings: Assume C-style string keys by default

Relative to the previous commit, the following names have changed:
- Settings::Keys --> Settings::HKeys
- Settings::CKeys --> Settings::Keys

* default_ini.h: Fixed formatting warning

* Comment cleanup

* android: Fixed compilation failure due to incorrect namespace

* config.cpp: Use ASSERT_MSG instead of LOG_ERROR and ASSERT(false)
2026-03-02 23:26:43 +00:00
David Griswold b477ba09c1 Ability to select which layouts to cycle with the cycle layout hotkey (#1430) 2026-02-27 13:21:53 +01:00
David Griswold 3255620934 Implement integer scaling (#1400) 2026-02-26 13:33:13 +01:00
OpenSauce04 0c478d7614 Add "Enable display refresh rate detection" setting on desktop 2026-02-09 20:08:34 +00:00
OpenSauce04 d48d51828e android: Fix desynced default value for use_vsync setting 2026-01-20 22:51:03 +00:00
David Griswold 4bdcf342b6 video_core: Stereo Settings Improvements: Full Width SBS, Swap Eyes, Select which display(s) to render on (#1212) 2026-01-03 21:40:59 +01:00
PabloMK7 4085ce6bf8 core: Add SMDH region free patch setting (#1541) 2025-12-29 01:20:26 +01:00
OpenSauce04 4574b91561 Move VSync setting key from use_vsync_new to use_vsync
This resets the VSync setting for all existing user configurations. Note in changelog.
2025-11-29 14:38:32 +00:00
RedBlackAkaandOpenSauce04 6483b33ee1 Improve consistency of capitalization and colon usage in UI (#1306)
* frontend: Improve consistency of capitalization and : usage in UI

* Additional adjustments

* Further adjustments

---------

Co-authored-by: OpenSauce04 <[email protected]>
2025-09-01 01:43:54 +01:00
David GriswoldandOpenSauce04 aca8b45664 android: Implement secondary display support (#617)
* Enable the SecondScreenPresentation class

* Update everything to enable second screen on android under GL and Vulkan. Still some issues!

* Some attempts to enable surface changes

* OpenGL is working on surface change, vulkan still no

* release surfaces (also fixed vulkan?)

* added and enabled layout setting

* resolve merge conflict

* rearrange switch cases to satisfy linux compiler

* openGL is working!

* several vk changes to try to fix crashes

* maybe vulkan is working?

* removing unnecessary code attempts

* Simplified secondscreen for better performance

* vk_platform.cpp: Fixed build failure caused by bad rebase

* vk_present_window.h: Removed stray newline

* Applied clang-format

* bug fix for odin 2

* Applied clang-format

* Updated license headers

* Moved SecondScreen class to org.citra.citra_emu.display

* Various formatting and readability improvements

* Added brackets where previously absent for readability

* Additional readability improvement

* RendererVulkan::NotifySurfaceChanged: Simplified condition checking

* change all references to "secondary screen" to "secondary display" to limit confusion with top screen / bottom screen

* rename main_window to main_present_window and second_window to secondary_present_window

* Reverted accidentally downgraded compatibility list submodule

* Removed unnecessary log message

* Applied clang-format

* Added a description to the Secondary Display Screen Layout setting

* Added `_ptr` suffix to `secondary_present_window`

This distinguishes it as a pointer, as `main_present_window` isn't a pointer, so there could be confusion on whether to use `.` or `->`

---------

Co-authored-by: OpenSauce04 <[email protected]>
2025-08-08 21:41:52 +01:00
RedBlackAka 3b0542f188 Capitalize first letter of builtin shaders 2025-07-31 16:12:49 +01:00
PabloMK7 8dafecd528 loader: Add compressed ROM (Z3DS) support 2025-07-27 17:13:32 +02:00
PabloMK7andOpenSauce04 fd2ce82b6e Add toggle to disable SPIRV optimization pass (#1080)
* Add toggle to disable SPIRV optimization pass

* vk_shader_util.cpp: Nitpicky comment tweak

* Consistently refer to "optimizer" instead of "optimization"

---------

Co-authored-by: OpenSauce04 <[email protected]>
2025-05-28 21:22:59 +01:00
PabloMK7 e83b81ec98 Add setting to toggle RPC server (disabled by default) (#1047) 2025-05-18 17:27:37 +02:00
580d46e3d6 android: Add aspect ratio setting for single screen layout mode (#913)
* android: Add aspect ratio setting for single screen layout mode

Co-Authored-By: Morph <[email protected]>

* Partial rewrite to address issues and improve readability

---------

Co-authored-by: Morph <[email protected]>
Co-authored-by: OpenSauce04 <[email protected]>
2025-05-12 19:58:01 +01:00
OpenSauce04 975ad17442 Internally rename turbo_speed and similar to turbo_limit
This aligns with the pre-existing `frame_limit` value
2025-04-23 16:59:28 +01:00
OpenSauce04 dcbf79df14 Overhaul turbo speed implementation to use temporary_frame_limit 2025-04-23 16:59:28 +01:00
David Griswold 967263fc80 Implement screen gap setting (#622)
* implement screen gap

* type conversion fix for windows

* int setting
2025-04-16 19:05:46 +01:00
David GriswoldandOpenSauce04 8e477e35bb android: Original Portrait Layout (#625)
* Original Portrait Layout

Original Portrait Layout

* type conversion fix for win

* Updated license headers

* Applied clang-format

* android: Reordered Portrait Screen Layout menu

Custom Layout is now at the bottom of the list

---------

Co-authored-by: OpenSauce04 <[email protected]>
2025-04-11 18:23:07 +01:00
OpenSauceandkleidis 0e0137a9ff Add turbo speed hotkey (#605)
* Add the turbo slider

* [WIP] Add fast forward toggle hotkey

* Make Increase/Decrease speed hotkeys change turbo key instead of `frame_limit`

* Allow non-runtime editable settings on `general` settings tab`

* `frame_limit` is now  non-runtime-editable

* Disable `toggle per game speed limit` if turbo mode is set

* Reset `frame_limit` back to initial value once the emulator closes

* Improve `AdjustSpeedLimit`

- Set frameskip value directly
- Bypass if turbo mode isn't active

* Some code cleanup

* Move `turbo_speed_slider` from UISettings to CommonSettings

Also rename to just `turbo_speed`

* android: Add turbo mode hotkey

* Fixed build failure + Applied clang-format

* configure_general.ui Make padding on right side of sliders consistent

Not sure why there's a difference here, so I just threw in a spacer

* android: Corrected build failures caused by bad merge

* Updated `turbo_speed_description` to be a little more descriptive

* android: Corrected turbo crash caused by bad JNI function names

* Updated license headers

* HotkeyFunctions.kt: Fixed minor fomatting irregularities

* Applied clang-format

---------

Co-authored-by: kleidis <[email protected]>
2025-04-11 12:29:07 +01:00
PabloMK7 7e9b5743fb Fix temporary frame limit 2025-03-22 00:23:40 +01:00
PabloMK7 d5745cae8f Add LLE modules for online features option + AM Refactor w/ various improvements/fixes
- Added option to enable required LLE modules for online features.
- (Android) Fixed bug that would cause FS RenameFile to fail sometimes on Android.
- (Android) Moved New 3DS mode and LLE applets to system settings tab on Android.
- (Android) Fixed cfg save data related issues (mostly Console ID).
- Made AM title scanning asynchronous, which makes game boot way faster on Android on most cases.
- Made more AM functions asynchronous, to prevent stutter.
- Fixed bug in SOC that could cause the emulator to crash when disconnecting.
- Fixed keys not being initialized when processing console unique files.
2025-03-13 21:17:32 +00:00
PabloMK7 db168cfac4 Various savestate bugfixes 2025-03-12 20:50:51 +01:00
PabloMK7 e3a21c8ef1 Add 'Set Up System Files' option (#642)
* Add 'Set Up System Files' option

* Fix CIA installation and HLE module loading when no console unique data provided.
2025-03-10 10:48:11 +00:00
PabloMK7 758ded7fae renderer: Add disable right eye performance hack 2024-11-19 16:36:24 +00:00
OpenSauce04 fd55b4fd6c Applied clang-format-18 to codebase 2024-11-10 21:02:54 +00:00
43c4d3981d Added "Small Screen Position" feature
* error checking for layout value from older config

* rename enum and update aspect ratio code

* rewrite LargeFrameLayout to support multiple positions

* add settings for smallscreenposition, fix minsize function

* fixed framebuffer from res scale (screenshots)

* add desktop UI for small screen position

* small screen position submenu on desktop

* fix int-float conversion warning

* rename Above and Below to hopefully fix linux issue

* Add Small Screen Position Setting to android settings menu

* fix sliders to work with floats, mostly

* fix android slider textinput ui

* change None enums in settings and cam_params

* Apply clang-format-18

* SettingsAdapter.kt: Make more null pointer exception resistant

* Updated license headers

* Code formatting nitpicks

* fix bug in main.ui that was hiding menu

* replace default layout with a special call to LargeFrame (like SideBySide does)

* fix bug when "large screen" is actually narrower

* edit documentation for LargeScreenLayout

* update PortraitTopFullFrameLayout to use LargeFrameLayout

* fix unary minus on unsigned int bug

* Applied formatting correction

* Added `const`s where appropriate

* android: Add mention of the bottom-right small screen position being the default

* review fixes + more constants

* refactor all Upright calculations to a reverseLayout method, simplifying code and reducing bugs

* Removed stray extra newline

* SettingsAdapter.kt: Fixed some strange indentation

* Removed unnecessary `if` in favour of direct value usage

---------

Co-authored-by: Reg Tiangha <[email protected]>
Co-authored-by: OpenSauce04 <[email protected]>
2024-11-10 20:41:28 +00:00
OpenSauce04 9da0b8f9ad Added "Reverse Side by Side" Sterioscopic 3D mode 2024-11-10 18:16:50 +00:00
OpenSauce04 3e5306e347 Store frame_limit config value as a double
This allows fractional values to be used for the game speed
2024-11-10 18:16:50 +00:00
David Griswold 42a0a72c96 android: Refactor layout code to use LargeScreen layout instead of MobileLandscape 2024-11-10 18:16:50 +00:00
David GriswoldandOpenSauce04 e884d5f3f3 android: Implemented custom layout customization GUI
This commit also changes the name of the 'Portrait' landscape layout to 'Original'

Co-authored-by: OpenSauce04 <[email protected]>
2024-11-10 18:16:50 +00:00
David Griswold b293a253f5 Refactored layout code in preparation for Android custom layout GUI 2024-11-10 18:16:50 +00:00
David Griswold c78e893cd7 android: Updated custom layout coordinate system to match desktop 2024-11-10 18:16:50 +00:00
David Griswold 6cb61c8ff7 android: Added portrait-specific config values for custom layouts 2024-11-10 18:16:50 +00:00
OpenSauce04 539fff882b Added Single Screen layout configuration options
These settings also affect the Separate Windows layout

This commit also restructures the Layout tab of the configuration menu
2024-11-10 18:16:49 +00:00
OpenSauce04 794a12c3f6 android: Fixed landscape layouts not displaying correctly 2024-11-10 18:16:49 +00:00
OpenSauce04 da1f0f43d0 Updated default custom layout values to account for new coordinate system 2024-11-10 18:16:49 +00:00