Commit Graph

11047 Commits

Author SHA1 Message Date
NovaChild 7e98003789 Bugfix: All desktop hotkeys now work in dual-window mode (#1967)
* Bugfix: All desktop hotkeys now work in dual-window mode.

The fullscreen hotkey now works differently. It always changes
the fullscreen setting, and attempts to fullscreen both windows
in dual-screen mode *if* they are on different screens. Othewise
it only fullscreens the main screen for consistency between layouts.

Geometry is always saved and restored from UISettings for more
consistency.

* return to single-window fullscreening behavior
2026-07-11 00:48:14 +02:00
OpenSauce 9aa53c6223 android: Add various network/room related capabilities (private/public room creation/joining and public lobby browsing) (#830)
* network: Replace NetSettings with Settings for web service configuration

* qt: Add network configuration options for username, API URL, and token

* qt: Rename tab from "Web" to "Network" in configuration dialog

* Update default configuration for network username and web api url

* qt: Rename configuration_web to "configuration_network"

* android: Add network configuration options for username, API URL, and token

* remove network_username setting and use the one from cfg

* Initial network room creation/joining support on Android

Co-Authored-By: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com>
Co-Authored-By: zhang wei <zwdreams@gmail.com>

* Make multiplayer.cpp a class and init on `MainActivity`

* Add public lobby browsing and joining support

* NetPlayManager.kt: Fix multiple networking deprecations

* Use ip_address instead of a blank string for room creation (again)

* Add the ability to select preferred game from room creation

* Fix format and licensing

* Do not use username setting

* Fix bugs related to public room browsing

---------

Co-authored-by: Kleidis <167202775+kleidis@users.noreply.github.com>
Co-authored-by: PabloMK7 <hackyglitch2@gmail.com>
Co-authored-by: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com>
Co-authored-by: zhang wei <zwdreams@gmail.com>
Co-authored-by: Reg Tiangha <rtiangha@users.noreply.github.com>
2026-07-10 23:36:21 +02:00
ADAS2024 9975eeb63b android: Improve combo icon (#2266)
* add new combo button images

* use updated images

* Improve buttons

---------

Co-authored-by: PabloMK7 <hackyglitch2@gmail.com>
2026-07-10 21:36:58 +02:00
OpenSauce 812f8d0ebe android: Implement update checker functionality mirroring the Qt frontend (#2265)
* update_checker.cpp: Tiny correctness adjustment

* android: Initial UpdateChecker object implementation

No actual frontend functionality yet

* android: Very initial implementation of frontend update checker notifications

* android: Fix UpdateChecker returnning incorrectly formatted tag when using stable channel

* android: Add downgrade mitigation to update checker, mirroring Qt

* Display new version number in Android update check notification

* android: Fix update checker notification not having a cancel button

* android: Add user-configurable options to control update checker behaviour

* android: Auto-disable update checker for debug builds

* Don't show update checker settings when using Google Play build

Not like they would do anything anyway, but they shouldn't be visible

* android: Improve hardiness of tag decoding in update checker
2026-07-10 20:31:05 +01:00
PabloMK7 d85caf745b qt: Add open NAND and SDMC folder options (#2279) 2026-07-10 20:20:01 +02:00
RedBlackAka 86826dce32 UI: Replace all archive links with Azahar wiki pages (#1881)
* UI: Replace all archive links with Azahar wiki pages

* Fix rebase

* Link to Cemuhook on Cemu's wiki
2026-07-10 19:35:03 +02:00
NovaChild 38e6e79024 Desktop: Controller improvements - readable labels, controller hotkeys, option to apply profiles to all controllers (#1717)
* controller hotkey support and SDL refactor to use GameController API,
which adds more user-readable names to controller input maps

* Add "Press A (right) button" command to input automap that will map in nintendo layout if the user has a nintendo layout / prefers to match letters rather than position.

* honor shortcut context with controller hotkeys

* fix profiles not saving correctly

* analog_from_keyboard display fix, build error fix

* attempt to fix event_queue bugs

* Do not signal savestate if system is powered off

---------

Co-authored-by: PabloMK7 <hackyglitch2@gmail.com>
2026-07-10 17:09:34 +02:00
OpenSauce04 9ae4c8ba1c ci: Build ARM64 macOS before x86_64 macOS
Should produce faster build failures when something is wrong due to the native architecture building faster
2026-07-10 14:12:37 +01:00
OpenSauce04 a2a71ebb60 qt: Use generated setting keys for uisettings instead of hardcoded string literals 2026-07-10 14:10:52 +01:00
OpenSauce04 f0115effff jni/default_ini.h: Use Settings::Keys directly rather than using a namespace alias(?) 2026-07-10 14:10:52 +01:00
OpenSauce04 312c83e005 android: Disable enforced formatting check in pre-build stage
This turned out to be more annoying than helpful
2026-07-10 12:42:24 +01:00
Ryan McClelland 0c19c33bd3 libretro: scope Vulkan case to fix MSVC C2360 (#2267)
MSVC with /permissive- /WX rejects the switch in retro_load_game:
the static vk_negotiation initializer in the Vulkan case is crossed
by the next case label (C2360, initialization skipped by case). Wrap
the Vulkan case body in a block so its scope ends before that label,
and add a comment noting why the braces are required there. The other
cases are wrapped in blocks too for visual consistency, though only
the Vulkan case strictly needs it. GCC/clang and the MXE cross-build
accept the original; this only affects native MSVC builds. No
behaviour change.
2026-07-09 14:44:37 +02:00
PabloMK7 bda4671be6 core: gsp: General improvements to GSP service accuracy (#2273) 2026-07-09 14:19:36 +02:00
PabloMK7 c2dd5f3bea core: Change default value of simulate GPU timings to false (#2274) 2026-07-09 13:58:07 +02:00
PabloMK7 31e4ecea58 core: apt: Restore captured framebuffers on libapplet closure 2026-07-09 09:07:02 +02:00
PabloMK7 49ba2e8d5f core: apt: Implement GetAppletProgramInfo 2026-07-09 09:07:02 +02:00
PabloMK7 b64040b5fa video_core: Fix fill surface downloading (#2270) 2026-07-08 23:44:03 +02:00
ApfelTeeSaft 64a967b4a8 core/arm: model ARM11 MPCore timing per TRM (#2262)
* feat: make per instruction cycle table optional

makes the nov 2022 change regarding the instruction cycle table thing toggleable inside Debug->CPU Settings.

* 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

* Revert accidental push of diagnosig logic.

* Fix license and format

---------

Co-authored-by: PabloMK7 <hackyglitch2@gmail.com>
2026-07-08 20:23:22 +02:00
OpenSauce04 7e976e852c android: Flag AndroidLintUseKtx lint as style suggestion instead of warning 2026-07-08 15:24:01 +01:00
PabloMK7 ad0dde0725 common: Detect and print AppData folder get failures (#2259) 2026-07-05 00:00:57 +02:00
PabloMK7 d61801ad76 qt: gdb: Do not change GDB settings when the gdbport arg is used (#2257) 2026-07-05 00:00:32 +02:00
OpenSauce04 9a0f0e3caf citra_qt.cpp: Deduplicate 3DS system file setup dialog strings 2026-07-04 18:43:23 +01:00
OpenSauce04 4f63caf5fc android: Fix misplaced Inappropriate Scale messages + Fix crash with inappropriate values 2026-07-04 18:35:18 +01:00
OpenSauce04 2a39345e4b android: Fix Turbo button not appearing in Adjust Scale menu 2026-07-04 18:35:18 +01:00
ADAS2024 209173fa0c [Android] Add Combo Button (#1244)
* Base starting commit for Feature Impl

* Base commit 2 (off of closed PR, impl details of the actual button will likely be different.)

* Added Combo Button Bool setting to use for later implementation.

* Added Combo Button Submenu and associated strings. Need to implement button displaying for user to interact with.

* Added layout file for combo settings for potential impl

* Removed combo settings as it wasn't liked. Starting Multi Choice impl

* Added Multi Choice Impl. Need to Refactor OnClick for MultiChoice and debug Impl when adding combo button.

* Change List<> in Multi Files to be MutableSet<> to allow adds while prevent potential duplicates. Finished primary multi choice backend impl.

* used correct lisencing procedure for multi files

* Added code in arrays.xml to display the buttons.
This code has the buttons display but clicking on them crashes the app. Will debug further.
Also replaced setSelectedValues with add and remove SelectedValue for clarity purposes.

* Deleted Int Combo Value array in arrays.xml as it was not needed. Able to Click multiple buttons at once but unchecking them causes app to crash. (within the MultiChoice OnClick for SettingsAdapter.kt)

Also debating whether to remove the normal MultiChoice addition as it wasn't added.

* Attempt to deal with merge conflicts

* Moved OnSettingChange after I add or remove selected vals to fix crashing issue.

* Displayed combo button in both landscape and portrait

* WIP on Button Impl, made combo button setting run time editable

* Changed the combo_key string into button_combo, added functionality (impl could be better), added combo key as an input bindable setting within the buttons tab

* Moved Combo Settings into just controls instead of having its own submenu

* Made ComboHelper code more readable and added the key setting to be toggleable in game

* Edited Layout integers of combo button. Made Combo Button display properly in normal portrait mode.

* Code Cleanup and Start of Reimplementation based off #1430

* Progress commit for better impl, need to have the pop up menu show up to select buttons

* Code cleanup and bug fix to properly map values.

* Deleted Multi String Setting, added basic error handling, added comment explaining hardcoded size

* Changed Combo Button to be a HotKey, changed impl to be default multi choice, and removed StringMultiChoice details

* Remove Commented Code

* Changed ComboHelper.kt to use Native Button ints, removed rest of initial implementation traces

* Commented out debug logging, added back missing TODO statement regarding magic numbers

* Cleanup

* Changed Combo Key to Combo Button in kotlin code (will need to test)

* Trying to integrate combo button as a SettingsKey setting. Running into issues with malformed/missing key

* latest changes (added setting to default ini). Still debugging file issue

* added possible fix to touchscreen latency issue, will need to test

* Reverted MultiChoice code to original, removed unused strings and variables and ensured consistent naming, fixed latency issues with button,

* reverted int list setting change as its no longer needed.

* `combo_buttons` --> `combo_button_buttons`

* default_ini.h: Adjust ini comment for combo_button_buttons

* Fix "Reset Overlay" not affecting combo button

* Better center default position of combo button in portrait layout

* `combo_button_options` --> `combo_button_settings`

Better reflects string content

* Last-minute minor string nitpicks

---------

Co-authored-by: OpenSauce <opensauce04@gmail.com>
2026-07-04 15:11:06 +01: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
PabloMK7 77cb5cecd8 Remove unintended leftover scripts 2026-07-02 21:40:19 +02:00
Malachi 6b197e2c04 renderer_vulkan: Fix screenshot color channels on RGBA swapchain formats (#2170) 2026-07-02 09:40:33 +02:00
Filipe Fortunato 384913be70 video_core: vulkan: Fix crash on color fill before framebuffer setup (#2241) 2026-07-01 20:32:38 +02:00
Andrey Kurlin 307f558d28 Refresh game list after uninstalling installed titles (#2237)
Signed-off-by: Andrey Kurlin <superkurlin2013@yandex.ru>
2026-07-01 20:20:56 +02:00
Wunk d93adebb16 renderer_gl: Fix OpenGL texture unit state tracking (#2242)
* video_core: Implement texture-layer clears

Allow specific texture-layers to be targetted for clears rather than just defaulting to the first layer, or clearing all layers after in the case of Vulkan. Allows specific faces of a cubemap to be cleared.

* video_core: Initialize `NULL_SURFACE_CUBE_ID`

Properly initialize the `NULL_SURFACE_CUBE_ID` texture to ensure that all 6 of its faces are black-transparent.

* renderer_gl: Add explicit texture-unit target state tracking

The `.target` field can be either a `GL_TEXTURE_2D` or a
`GL_TEXTURE_CUBE_MAP` and must be explicitly set when assigning the
`.texture_2d` or there is a risk of leaking a previous texture state
into the current one in the case that a texture-cube was binded into
slot 0 and it becomes a texture-2d sometime after.
2026-07-01 17:25:03 +02:00
OpenSauce04 7c225c6abb qt: Fix macOS freeze-on-boot caused by unprocessed events
As far as I can tell the line added here really shouldn't be necessary and wasn't until a relatively recent change in either Qt or macOS. The exact reason behind the original issue is unclear, but by educated guess it could have been caused by some kind of race condition within Qt?
2026-06-29 14:34:22 +01:00
asyync1024 93143bcb15 audio_core: Add '#include <cstring>' to cubeb_sink and cubeb_input.cpp (#2232)
* audio_core: Add '#include <cstring>' to cubeb_sink and cubeb_input.cpp

This fixes a build failure encountered when compiling: https://pastebin.com/JQ4mbhyu

* Fix: License header
2026-06-24 20:54:06 +02:00
PabloMK7 32fd435928 core: Add HLE HTTP URL replacement functionality 2026-06-24 17:43:04 +02:00
PabloMK7 1d59c9a0fc core: Fix HTTPC behaviour when post data is pending 2026-06-24 17:43:04 +02:00
PabloMK7 9293767e1d dynarmic: Update to latest commit (#2236) 2026-06-24 16:11:31 +02:00
Daniel López Guimaraes c9d2593c2c apt: Properly implement app ID checks (#2225)
The IsSystemAppletId and IsApplicationAppletId checks were prone to
collisions due to the way they were implemented. For example, the
application app ID would pass IsSystemAppletId since 0x300 & 0x100 != 0

To account for masking collisions, add a generic `TypeMask` enum value
used to mask the app ID type correctly, and then match the masked value
with the app ID we're looking for.

Fixes issues with system applets that use objects from the caller
applications, since the edge case for sysapplet parameters being sent to
applications was also passing the other way around.
2026-06-19 23:56:06 +02:00
PabloMK7 9e43e451d1 core: Implement APT:MapProgramIdForDebug (#2224) 2026-06-19 09:00:33 +02:00
PabloMK7 0a269688a3 core: Implement CFG:TranslateCountryInfo (#2223) 2026-06-19 09:00:08 +02:00
OpenSauce04 3a77813821 Updated translations via Transifex 2126.0-alpha2 2026-06-17 21:50:43 +01:00
OpenSauce04 fbeb53c25f Fix enabling Discord RPC causing linker warnings about minimum macOS version 2026-06-17 17:17:21 +01:00
OpenSauce04 1137d530b0 Rename USE_DISCORD_PRESENCE option and def to ENABLE_DISCORD_RPC 2026-06-17 17:17:21 +01:00
Sergei Golishnikov 04f3a93854 macos: fix Vulkan/Metal renderer on macOS 26+ and bump MoltenVK (#2149)
* macos: fix Vulkan/Metal renderer on macOS 26+ and bump MoltenVK

Four related changes that together let the Vulkan backend boot a game
on Apple Silicon Macs running macOS 26.x. Each is needed independently;
the combination was tested on a Mac16,6 (M4 Max) / macOS 26.4.1.

CMakeModules/DownloadExternals.cmake:
  Bump bundled MoltenVK from v1.2.9 to v1.4.1. v1.2.9 does not
  recognize macOS 26 surface objects and traps with an Objective-C
  "unrecognized selector" inside vkGetPhysicalDeviceSurfaceCapabilitiesKHR.

src/video_core/renderer_vulkan/vk_instance.cpp:
  Disable VK_EXT_tooling_info on MoltenVK. MoltenVK advertises the
  extension but does not expose vkGetPhysicalDeviceToolPropertiesEXT
  through its dispatcher, so the call inside CollectToolingInfo()
  trips a vulkan-hpp assertion in Debug and dereferences NULL in
  Release.

src/citra_qt/bootmanager.cpp:
  Force-install a fresh CAMetalLayer on the NSView before handing it
  to createMetalSurfaceEXT. Qt 6.11's QWindow::MetalSurface does not
  always back the view with a CAMetalLayer on macOS 26, and MoltenVK
  1.3+ aborts in MVKSurface::getNaturalExtent() if the layer is not
  the right class. Implemented via objc_msgSend so no .mm conversion
  is needed.

src/citra_meta/CMakeLists.txt:
  Gate LaunchScreen.storyboard behind 'if (IOS)'. The storyboard is
  iOS-only and previously broke the Xcode generator on macOS with
  "iOS storyboards do not support target device type 'mac'."

* Move Metal layer creation logic into MetalUtil::CreateMetalLayer ObjC++ function

This change makes the code much more readable, as the logic is now in its native language

---------

Co-authored-by: SergeyMild <>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2026-06-17 16:15:42 +01:00
Cobalt 28960bf166 Fix loadTranslation for QT 6 older than 6.7 (#2200)
* language fix for QT pre 6.7

haha funny number

* be more explicit

* make clang-format happy
2026-06-17 14:37:55 +01:00
OpenSauce04 176cd5cf14 qt: Fix <System> selection becoming blank when selected 2026-06-17 14:04:55 +01:00
0x48kirenh 735c63174c core/memory: Fix undefined behavior and optimize Luma alias path (#2202)
* core/memory: Fix undefined behavior and optimize Luma alias path

* chore: clean up Luma mapping comments

* style: fix clang-format formatting
2026-06-17 09:13:56 +02:00
OpenSauce04 f015a208e5 qt: Use upstream Qt Base translations when available 2026-06-16 22:46:24 +01:00
OpenSauce04 deb130cdb7 ci: Add libretro- prefix to libretro CI jobs
Makes it easier to different standalone build jobs from libretro build jobs
2026-06-16 17:28:38 +01: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