Commit Graph

1141 Commits

Author SHA1 Message Date
OpenSauce
e035bd3a21
android: Fix rename + move behaviour for Google Play build (#1545)
* android: Fix rename + move behaviour for Google Play build

* android_storage: Handle rename/move with same source and destination
2025-12-29 17:55:51 +00:00
OpenSauce04
6751c20f52 android: Implemented googlePlay build variants 2025-12-29 15:00:34 +00:00
PabloMK7
4085ce6bf8
core: Add SMDH region free patch setting (#1541) 2025-12-29 01:20:26 +01:00
OpenSauce04
5f5ba99168 common: Move playtime tracker file to sysdata directory 2025-12-24 12:48:06 +00:00
OpenSauce
c0a04cef39
android: Begin migration to raw fs access, starting with Rename reimplementation (#1511)
* Add setup step to grant `MANAGE_EXTERNAL_STORAGE`

* WIP re-implementation of Android `Rename` using native filesystem manipulation

* Applied clang-format and updated license headers

* Support user directories on removable storage devices

* If `MANAGE_EXTERNAL_STORAGE` is lost, re-request it

* Fix missing permission dialog appearing during initial setup

* Added empty code branches to prep for old Android support

* Fixed permission setup completion not accounting for external storage permission

* Implement code for Android <11

* Fixed emulation error if a renamed file is then opened for R/W

* Detect if the current user directory cannot be located, and prompt re-selection

* If an invalid user directory is selected, reject and re-prompt
2025-12-24 12:18:13 +00:00
Marcin Serwin
254ab96b63
cmake: Don't install zstd_seekable and use header from externals (#1305)
* Use zstd_seekable header from externals

Specifying the full path relies on the system installed header.

Signed-off-by: Marcin Serwin <marcin@serwin.dev>

* Don't install zstd_seekable

Signed-off-by: Marcin Serwin <marcin@serwin.dev>

---------

Signed-off-by: Marcin Serwin <marcin@serwin.dev>
2025-12-06 18:59:32 +01:00
OpenSauce04
4574b91561 Move VSync setting key from use_vsync_new to use_vsync
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
This resets the VSync setting for all existing user configurations. Note in changelog.
2025-11-29 14:38:32 +00:00
lannoene
0be78e9550
Improve DLP and multiplayer compatability (#1375)
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
* Added NWM spectator mode (DLP now partially working), fixed debug assert, added applet utility cmd fallback

* Reverted AppletUtility command change

* Fixed inconsistent mac address

* Enabled DLP Child authorization

* Added the DLP module to recommended online modules

* Clean up

* Changed the returned number of words on GetProgramInfoFromCia to 7 insteead of 8, futher reverted AppletUtility function to match its original form
2025-09-20 19:59:54 +02:00
RedBlackAka
6483b33ee1
Improve consistency of capitalization and colon usage in UI (#1306)
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
* frontend: Improve consistency of capitalization and : usage in UI

* Additional adjustments

* Further adjustments

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-01 01:43:54 +01:00
David Griswold
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 <opensauce04@gmail.com>
2025-08-08 21:41:52 +01:00
OpenSauce
885bb71da8
Use MacOS-specific refresh rate check to avoid SDL race condition (#1262)
* Use MacOS-specific refresh rate check to avoid SDL race condition

* IsLowRefreshRate: Change back to `SDL_Init` just to be safe
2025-08-01 16:45:07 +01:00
RedBlackAka
3b0542f188 Capitalize first letter of builtin shaders 2025-07-31 16:12:49 +01:00
PabloMK7
00c0f01e73 Z3DS: Add title info and smdh to metadata
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-build / ios (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2025-07-27 17:13:32 +02:00
PabloMK7
db8aaacb35 Z3DS: Fix minor issues and add Android cia compress setting 2025-07-27 17:13:32 +02:00
PabloMK7
8dafecd528 loader: Add compressed ROM (Z3DS) support 2025-07-27 17:13:32 +02:00
OpenSauce
7c278f9701
android: Implement play time tracking (#813)
* android: Implement play time tacking

Co-Authored-By: Reg Tiangha <rtiangha@users.noreply.github.com>

* Moved playtime manager from `citra_qt` to `common`

* Reimplemented Android play time to use existing logic from desktop

* Updated license headers

* When getting current game ID fails, silently error rather than crashing

* playTimeManagerStart: Check that `play_time_manager` is initialized before using it

---------

Co-authored-by: Kleidis <167202775+kleidis@users.noreply.github.com>
Co-authored-by: Reg Tiangha <rtiangha@users.noreply.github.com>
2025-07-12 13:01:46 +01:00
OpenSauce04
df134acefe math_util.cpp: Don't set GCC novector pragma when using GCC <14 2025-07-09 20:02:48 +01:00
OpenSauce
df3c0c18e4
renderer_vulkan: Disable FIFO when refresh rate is lower than ~60hz or Apple low power mode is enabled (#1193)
* renderer_vulkan: Disable FIFO when refresh rate is lower than ~60hz

Also disables FIFO when Apple low power mode is enabled, as it can limit the application framerate to 30fps

* renderer_vulkan.cpp: Put `IsLowRefreshRate` into anon namespace + make static
2025-06-29 21:06:44 +01:00
PabloMK7
cf87efa3c0 video_core: Vectorize RasterizerAccelerated::AnalyzeVertexArray
Uses SIMD operations on the RasterizerAccelerated::AnalyzeVertexArray
function, which is hot code. Slightly reduces GPU processing time
on all games.

This idea was suggested by an anonymous contributor.

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-05-31 11:12:28 +00:00
PabloMK7
88b3dff278 citra_common: Enable SSE4.2 on x86_64 builds
Enables the use of SSE4.2 instructions on x86_64 CPUs, allowing
compilers to automatically vectorize some loops on citra_common.
A CMake toggle ENABLE_SSE42 (ON by default) has been added
to enable this behaviour.

This change breaks compatibility with CPUs that do not have
SSE4.2 instructions. All modern CPUs (from 2011 onwards) should
always have these instructions. Manual compilation will be
needed for older CPUs.

A message has been added to report if the CPU is incompatible
when starting the emulator.

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-05-31 11:12:28 +00:00
PabloMK7
ae43740690
Fix disable spirv optimizer option not saving (#1084) 2025-05-29 18:11:33 +02:00
PabloMK7
fd2ce82b6e
Add toggle to disable SPIRV optimization pass (#1080)
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-build / ios (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
* 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 <opensauce04@gmail.com>
2025-05-28 21:22:59 +01:00
PabloMK7
e83b81ec98
Add setting to toggle RPC server (disabled by default) (#1047)
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-build / ios (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2025-05-18 17:27:37 +02:00
OpenSauce04
d878bfec3b file_util.cpp: Removed unnecessary definitions 2025-05-16 17:11:21 +01:00
OpenSauce04
33889fec1d file_util.cpp: Use _stat64 instead of stat where appropriate
Avoids compile failures introduced in an MSYS2 update
2025-05-16 17:11:21 +01:00
Briar
580d46e3d6
android: Add aspect ratio setting for single screen layout mode (#913)
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (push) Has been cancelled
citra-build / ios (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
* android: Add aspect ratio setting for single screen layout mode

Co-Authored-By: Morph <39850852+Morph1984@users.noreply.github.com>

* Partial rewrite to address issues and improve readability

---------

Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-05-12 19:58:01 +01:00
OpenSauce04
975ad17442 Internally rename turbo_speed and similar to turbo_limit
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-build / ios (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
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 Griswold
8e477e35bb
android: Original Portrait Layout (#625)
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-build / ios (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
* 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 <opensauce04@gmail.com>
2025-04-11 18:23:07 +01:00
OpenSauce04
c69b642f54 Corrected minor license header inconsistency 2025-04-11 12:31:16 +01:00
OpenSauce
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 <167202775+kleidis@users.noreply.github.com>
2025-04-11 12:29:07 +01:00
PabloMK7
d8077fdea6 Fix fatal error caused by auto-detect region
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-build / ios (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2025-03-26 22:06:36 +00:00
PabloMK7
7e9b5743fb Fix temporary frame limit
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-build / ios (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2025-03-22 00:23:40 +01:00
Taylor Rodríguez
d82be7ac7c
Fix bug where log file was not generated on first run (#729)
* Fix bug where log file was not generated on first run

This fix resolves issue #727.

On first start, Log::Initialize attempts to create the `azahar-emu/log/`
directory. However, it fails because `azahar-emu/` does not exist. Using
FileUtil::CreateFullPath instead will create both `azahar-emu` and
`log/`.

* Update license header
2025-03-20 11:49:51 +00:00
PabloMK7
0eb4a71720
Implement framebuffer vertical flip flag (#699)
* Implement framebuffer vertical flip flag

* Make VerticalMirror const
2025-03-17 19:39:55 +00: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
OpenSauce
ac7671e247
qt: Implement migration prompt to bring data from Citra/Lime3DS (#638)
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-build / ios (push) Waiting to run
citra-build / release (push) Blocked by required conditions
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2025-03-09 12:10:02 +00:00
PabloMK7
8149302187
Use NEON intrinsics in Vec4 dot operation (#598)
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-build / ios (push) Waiting to run
citra-build / release (push) Blocked by required conditions
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2025-03-01 23:24:19 +01:00
PabloMK7
76a929346a Fix CreateFullPath not working with windows paths 2025-03-01 12:16:26 +00:00
PabloMK7
8ad53ca705
Encrypt downloaded apps with a console unique key 2025-03-01 12:12:52 +00:00
OpenSauce
9abcb4d520
Fix various build issues (#572)
Co-authored-by: PabloMK7 <hackyglitch2@gmail.com>
2025-02-27 22:02:33 +00:00
PabloMK7
dc1ebb63cb Major revamps to match game loading decisions.
- Allow downloading titles from eshop and system settings
- Remove encrypted game support
2025-02-27 14:22:50 +01:00
OpenSauce04
08f820089e Updated a myriad of user-facing strings to refer to Azahar, not Citra 2024-11-21 23:30:29 +00:00
OpenSauce04
97207ec574 Rebranded log file to azahar_log 2024-11-21 22:33:33 +00:00
OpenSauce04
f94e28335c Changed old log filename extension from .txt.old.txt to just .old.txt 2024-11-21 21:35:14 +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