Commit Graph

27800 Commits

Author SHA1 Message Date
Collecting
bcf3dd36b8 fix/dynamic-themes
Helps change theme to update during emulation.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:32:21 +00:00
Collecting
c42a8ed7b8 fix/light-dark-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:31:15 +00:00
Collecting
c48744092d fix/light-dark-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:30:38 +00:00
Collecting
e4c1a003e3 fix/light-dark-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:29:43 +00:00
Collecting
02dec9f461 fix/light-dark-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:28:51 +00:00
Zephyron
988f294e94 chore: bump version to 0.10.0
Signed-off-by: Zephyron <zephyron@citron-emu.org>
0.10.0
2025-11-02 13:38:49 +10:00
Collecting
2fde88b2b5 Merge pull request 'fix(ui): Make configuration dialogs respect in-app theme choice' (#15) from fix/themes into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/15
2025-11-02 02:08:37 +00:00
Collecting
bccddc82b5 fix/themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 02:06:08 +00:00
Collecting
755286cbbc fix/themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 02:05:39 +00:00
Collecting
3f3956ed8a fix/themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 02:04:42 +00:00
Collecting
7410c760e6 fix/themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 02:04:10 +00:00
Zephyron
bd17537b93 chore(updater): Add logging to diagnose update helper script creation
Helps debug why apply_update.bat may not be created in update_staging.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-02 11:27:59 +10:00
Collecting
252bb81f63 Merge pull request 'feat(hotkeys): Add controller overlay hotkey and fix saving bug' (#14) from fix/hotkey-memory into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/14
2025-11-01 21:11:19 +00:00
Collecting
ac777fabd9 fix/controller-overlay-toggle
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-01 21:06:32 +00:00
Collecting
60f314daef add/controller-overlay-toggle
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-01 21:03:34 +00:00
Collecting
0d5506030b fix/hotkey-memory
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-01 21:02:55 +00:00
Collecting
45cfbbeb6b fix/hotkeys
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-01 21:02:21 +00:00
Collecting
e495ef5148 fix/hotkeys
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-01 21:01:39 +00:00
Zephyron
d2f2d50e28 build: add Qt6 TLS plugin copying to CopyCitronQt6Deps
- Configure Qt6_TLS_DIR and TLS destination paths
- Copy TLS plugins using windows_copy_files utility
- Support Debug and Release configurations

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-01 23:17:54 +10:00
Zephyron
5af5ba2d0e chore(CMake): Remove
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-01 22:10:50 +10:00
Zephyron
3d0ccc1db1 Fix Windows auto updater with deferred update helper and TLS support
Windows auto updater failed due to:
1. File locking - can't overwrite running .exe files
2. Missing Qt 6 TLS plugins - can't connect via HTTPS

Solution:
- Implement helper batch script that applies updates after app exits
- Automate TLS plugin copying in CMake (qschannelbackend.dll, qopensslbackend.dll)
- Add enhanced SSL debugging and error messages

Windows updates now work. Linux continues to work as before.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-01 21:56:37 +10:00
Zephyron
ef14da5014 Merge pull request 'Fix Windows auto updater file locking issue' (#12) from fix/windows-updater-helper into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/12
2025-11-01 09:19:18 +00:00
Zephyron
0ce89925a2 Fix Windows auto updater file locking issue
Implement deferred update mechanism using a helper batch script that applies
updates after the application exits, avoiding Windows file locking issues.

On Windows, the updater now:
- Stages update files and creates a helper batch script
- Launches the script as a detached process
- Exits the application
- The script waits for app closure, applies updates, and restarts Citron

Linux AppImage updates continue to work as before with the existing method.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-01 19:19:02 +10:00
Zephyron
a462e66927 Merge pull request 'hle: Improve network service implementations and add newer firmware stubs' (#11) from feature/network-service-enhancements into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/11
2025-11-01 08:47:46 +00:00
Zephyron
ec670d881c hle: Improve network service implementations and add newer firmware stubs
AM (Application Manager):
- Implement GetPseudoDeviceId with deterministic UUID generation
- Generate persistent device ID based on program ID for online play

LDN (Local Network):
- Implement stub for Reject (cmd 205)
- Implement stub for ClearAcceptFilter (cmd 209)
- Implement stub for ConnectPrivate (cmd 303)

NIFM (Network Interface):
- Fix RequestState enum values (Invalid=0, Free=1) per switchbrew
- Add ConnectionConfirmationOption enum
- Update NotSubmitted references to Free state
- Implement 13 new stub functions for firmware 18.0.0-20.0.0+
- Reduce log verbosity for frequently-called functions

BSD (Sockets):
- Improve RegisterClient to parse LibraryConfigData structure
- Enhance socket operation logging (Socket, Bind, Connect)
- Add detailed error logging for bind/connect failures
- Implement stubs for Unknown36-38 (18.0.0+)
- Add firmware version comments for commands

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-01 18:47:15 +10:00
Zephyron
9a5b75db83 video_core: Add mip level clamping for CTGP-DX compatibility
Fixes crashes when games/mods request more than MAX_MIP_LEVELS (14).

Implements defensive clamping at four critical points in the texture
cache (CalculateLevelSizes, CalculateMipLevelOffsets,
CalculateMipLevelSizes, CalculateLevelBytes) to gracefully handle
excessive mip level requests.

When >14 mip levels are requested:
- Logs informative warning (debug builds)
- Clamps to MAX_MIP_LEVELS
- Continues execution safely

This improves upon Eden's solution by adding actual bounds checking
instead of just converting ASSERT to ASSERT_MSG.

Fixes: CTGP-DX (Mario Kart 8 Deluxe mod)

Co-authored-by: JPikachu <jpikachu.eden@gmail.com>
Co-authored-by: JPikachu <jpikachu@eden-emu.dev>
Co-authored-by: MaranBr <maranbr@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-01 16:22:25 +10:00
Zephyron
6143dec02a Merge pull request 'kernel: Implement code address offset for Skyline compatibility' (#10) from kernel/skyline-32bit-code-offset into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/10
2025-11-01 05:45:48 +00:00
Zephyron
76e963bfe7 kernel: Implement code address offset for Skyline compatibility
Add support for the Skyline 32-bit modding framework by implementing
a code address offset and improving memory state verification.

Changes:
- Add CodeStartOffset constant (0x500000) applied to 32-bit code
  address space types (Is32Bit and Is32BitNoMap) in KProcess::LoadFromMetadata
- Add debug logging for 32-bit syscall argument tracking in
  SetProcessMemoryPermission, MapProcessCodeMemory, and
  UnmapProcessCodeMemory wrapper functions
- Replace CheckMemoryStateContiguous with CheckMemoryState in
  KPageTableBase::UnmapCodeMemory for more flexible memory state
  verification

This implementation enables compatibility with:
- Skyline 32-bit modding framework
- CTGP-DX (Mario Kart 8 Deluxe mod)
- Other homebrew using 32-bit Skyline

Based on similar fixes in Ryujinx (commit 5e9678c8fe) and Eden emulator.

Co-authored-by: JPikachu <jpikachu.eden@gmail.com>
Co-authored-by: JPikachu <jpikachu@eden-emu.dev>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-01 15:44:21 +10:00
Collecting
5b3a7301a9 Merge pull request 'feat(qt): Adapt configuration dialogs to system theme' (#9) from feat/light-dark-fix into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/9
2025-11-01 03:09:52 +00:00
Collecting
84035e9bc2 fix/configuration-light-dark
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-01 03:06:31 +00:00
Collecting
66b150f78d fix/properties-light-dark
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-01 03:05:50 +00:00
Collecting
0068a8a0a5 fix/properties-light-dark
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-01 03:04:37 +00:00
Collecting
d3bfde9579 fix/dialog-light-dark
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-01 03:03:48 +00:00
Collecting
7af2e7e6f5 Merge pull request 'feat(input): Add Controller Color Customization & Gyro Toggle for Controller Overlay' (#5) from feat/controller-custom-color into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/5
2025-10-31 05:44:21 +00:00
Collecting
de4b93d147 feat: Toggle Gyro for Controller Overlay
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-10-31 05:41:29 +00:00
Collecting
35e27a52c4 feat: Choose Controller Color & Toggle Gyro
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-10-31 05:40:39 +00:00
Collecting
dc82d22e48 feat: Toggle Gyro for Controller Overlay
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-10-31 05:39:33 +00:00
Collecting
e1f4815c0c feat: Add Controller Color & Toggle Gyro
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-10-31 05:38:22 +00:00
Collecting
bb98468168 feat: Controller Color & Toggle Overlay
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-10-31 05:37:03 +00:00
Collecting
a6b038df43 feat: Toggle Gyro for Controller Overlay 2025-10-31 05:36:09 +00:00
Collecting
59bba7848d feat/fix: Choose Color, Toggle Gyro & Deadzone Fix
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-10-31 05:35:35 +00:00
Collecting
1315e238b1 feat: Add Choose Color & Toggle Gyro for Controller Overlay
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-10-31 05:34:41 +00:00
Collecting
141d9add2e Feat: Custom Controller Colors & Toggle Gyro
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-10-31 05:33:41 +00:00
Collecting
65fd31f275 feat: Gyro Toggle & Choose Color
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-10-31 05:32:24 +00:00
Zephyron
453fc0d8af cmake: Fix Android external download URL to use main branch
The fix simplifies the logic to always use the main branch for Android
builds, since architecture is already encoded in the package filenames.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-31 15:07:45 +10:00
Zephyron
237413fceb Update README.md
Signed-off-by: Zephyron <zephyron@noreply.localhost>
2025-10-30 10:48:39 +00:00
Zephyron
07aa8db9dd Merge pull request 'feat(ldn): Implement missing Account and LDN services from SwitchBrew documentation' (#2) from acc-ldn-switchbrew-implementation into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/2
2025-10-30 09:33:28 +00:00
Zephyron
68a8b07f78 feat(ldn): Implement missing Account and LDN services from SwitchBrew documentation
Implements 150+ missing functions across Account (acc:*) and LDN (ldn:*, lp2p:*)
services based on official SwitchBrew documentation.

Account Services (acc:su, acc:e, acc:u0, acc:u1, acc:e:u1, acc:e:u2, dauth:0):
- Add 70+ missing functions including notifiers, async operations, and OAuth procedures
- Implement GetUserRegistrationNotifier, GetUserStateChangeNotifier, GetProfileUpdateNotifier
- Add thumbnail management (LoadSaveDataThumbnail, GetSaveDataThumbnailExistence)
- Implement user management (DeleteUser, SetUserPosition, CancelUserRegistration)
- Add Nintendo Account procedures (CreateFloatingRegistrationRequest, etc.)
- Implement device migration functions (19.0.0+, 20.0.0+)
- Add debug functions for user qualification and token cache management

IManagerForApplication/SystemService (19.0.0+ compatibility):
- Rename LoadIdTokenCache (cmd 3) to LoadIdTokenCacheDeprecated
- Add new LoadIdTokenCache (cmd 4) with updated signature
- Add GetNintendoAccountUserResourceCache (cmd 136)

LDN Services (ldn:m, ldn:s, ldn:u):
- Add 80+ missing functions across all LDN interfaces
- Implement CreateClientProcessMonitor (cmd 1) for ldn:s and ldn:u (18.0.0+)
- Create IClientProcessMonitor service with RegisterClient function
- Implement IMonitorService functions (GetNetworkInfoForMonitor, GetIpv4AddressForMonitor, etc.)
- Implement ISystemLocalCommunicationService (GetState, Scan, Connect, Initialize, etc.)

LP2P Services (lp2p:app, lp2p:sys, lp2p:m):
- Implement ISfService functions (Initialize, Scan, CreateGroup, etc.)
- Implement ISfServiceMonitor (GetGroupInfo, GetMembers, AttachJoinEvent, etc.)
- Implement ISfMonitorService (GetLinkLevel)

Technical Changes:
- Change non-domain (C<>) to domain (D<>) functions in LDN to fix crashes
- Add enhanced error messaging to cmif_serialization.h for debugging
- Create client_process_monitor.cpp/.h for IClientProcessMonitor
- Add concrete async context implementations (EnsureSignedDeviceIdentifierCacheAsyncInterface, etc.)
- Add Kernel::KReadableEvent forward declarations

All functions properly stubbed with appropriate logging for future implementation.

References:
- https://switchbrew.org/wiki/Account_services
- https://switchbrew.org/wiki/LDN_services

Fixes 'Pokemon: Legends Z-A' LDN initialization crashes and improves compatibility
with games using Account and Local Network services.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-30 19:32:07 +10:00
Zephyron
57783503d1 DownloadExternals: use new raw/branch URLs select Android branch by ABI
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-30 17:27:23 +10:00
Collecting
981436bfc0 refactor/main.cpp
Compiler errors with a couple different indentations in the file alongside me accidentally adding the LOG_INFO (which *did* compile for Linux, but was alerted by MSVC) either way, done

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-10-30 05:38:52 +00:00