Collecting
44e8e2a630
fix(multiplayer): Ensure Node = 1 and not 0
...
Signed-off-by: Collecting <collecting@noreply.localhost >
2026-01-22 05:32:45 +01:00
Collecting
2b810e766a
fix(multiplayer): Add mutable to packet_mutex
...
Signed-off-by: Collecting <collecting@noreply.localhost >
2026-01-22 05:32:14 +01:00
Zephyron
c720e354d2
service/ldn: Implement SetProtocol and SetWirelessAudioPolicy commands
...
Adds support for LDN service commands introduced in firmware 20.0.0+:
- Command 105: SetWirelessAudioPolicy (stubbed)
- Command 106: SetProtocol
This enables ACNH Update 3.0 and other games using newer SDK versions
to properly initialize LDN for local multiplayer functionality.
Signed-off-by: Zephyron <zephyron@citron-emu.org >
2026-01-19 16:29:46 +10:00
Collecting
bd32690a76
revert c575341d1e
...
revert Merge pull request 'fix(multiplayer): Race Condition during Packet Discovery' (#101 ) from fix/lan_discovery_race_condition into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/101
2026-01-18 00:01:51 +00:00
collecting
5905d0bcff
fix(multiplayer): Race Condition during Packet Discovery
2026-01-16 18:26:21 -05:00
Zephyron
14c97aebb7
fix(ldn): improve packet validation and debug logging
...
- Add size validation before memcpy for Connect/Disconnect packets
- Allow empty data for Scan packets (Type 0) which have no payload
- Add debug logging for ScanResp packets including BSSID and results
- Fix MacAddress indexing to use .raw[] instead of [] operator
Signed-off-by: Zephyron <zephyron@citron-emu.org >
2025-12-26 16:53:26 +10:00
Zephyron
a1b317a15e
fix: add Module 56 error support and improve error handling
...
- Add Module56 to ErrorModule enum for error code 2056-2306
- Add Module 56 error handling in fatal error reporting
- Define Module 56 error codes in ldn_results.h
- Improve error reporting for unknown modules
This allows the emulator to properly handle error code 2056-2306
reported by Minecraft and other games, preventing undefined
behavior when encountering unknown module errors.
Signed-off-by: Zephyron <zephyron@citron-emu.org >
2025-11-13 20:14:04 +10:00
Zephyron
be5c2f772c
fix: Multiplayer network fixes and airplane mode
...
- Auto-select network interface for direct connect/host room
- Always recreate ENet client on join for fresh bindings
- Add airplane mode toggle (Desktop & Android)
- Fix JWT verification with empty verify_uid
- Improve content-type handling for JWT endpoints
Signed-off-by: Zephyron <zephyron@citron-emu.org >
2025-11-10 17:16:45 +10: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
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
5e16e20427
chore: update project branding to Citron
...
Signed-off-by: Zephyron <zephyron@citron-emu.org >
2025-05-06 16:08:59 +10:00
Liam
4050242cf3
ldn: return no connection from GetStateForMonitor
2024-02-24 22:56:08 -05:00
Narr the Reg
2053ff96fc
service: ldn: Migrate and refractor service to new IPC
2024-02-11 13:11:11 -06:00
FrozenAra
cb004d1ba1
Implemented qlaunch version of the controller applet
2023-11-19 18:38:58 +01:00
Narr the Reg
f1f3d490ef
service: ldn: Implement lp2p:m and stub IMonitorService
2023-10-01 11:38:30 -06:00
Liam
65be230fdd
service: move hle_ipc from kernel
2023-03-01 10:39:49 -05:00
Liam
a936972614
service: refactor server architecture
...
Converts services to have their own processes
2023-02-21 12:19:25 -05:00
ameerj
2d2522693e
Revert "Merge pull request #9718 from yuzu-emu/revert-9508-hle-ipc-buffer-span"
...
This reverts commit 25fc5c0e11 , reversing
changes made to af20e25081 .
2023-02-03 00:08:45 -05:00
liamwhite
b01698775b
Revert "hle_ipc: Use std::span to avoid heap allocations/copies when calling ReadBuffer"
2023-02-02 15:53:28 -05:00
ameerj
a1490d77ac
hle_ipc: Rename ReadBufferSpan to ReadBuffer
2022-12-28 18:46:54 -05:00
ameerj
7ffd624248
service: Use ReadBufferSpan where it is trivial to do so
2022-12-25 17:04:02 -05:00
Lioncash
97f273e94e
service: Make use of buffer element count helpers
2022-11-23 13:43:20 -05:00
Liam
a9ace6856d
kernel: remove KWritableEvent
2022-10-12 20:29:29 -04:00
FearlessTobi
4213f1c126
Address some review comments
2022-09-20 19:36:32 +02:00
FearlessTobi
f5e635adda
ldn: Initial implementation
2022-09-09 14:30:22 +02:00
FearlessTobi
65718e2876
Address review comments
2022-09-02 00:50:32 +02:00
FearlessTobi
6791301d9a
core/ldn_types: Minor corrections and additions
2022-08-27 04:49:10 +02:00
german77
56115f7732
core: ldn: Address review comments part 2
2022-08-11 23:12:32 -05:00
Narr the Reg
8eb2c73381
core: ldn: Address review comments
2022-08-08 12:49:48 -05:00
FearlessTobi
12dc05032b
ldn: Add better stubs and more data types
...
Co-Authored-By: Narr the Reg <5944268+german77@users.noreply.github.com >
Co-Authored-By: Morph <39850852+Morph1984@users.noreply.github.com >
2022-08-07 23:54:51 +02:00
german77
a7d9be1384
core: Replace all instances of ResultCode with Result
2022-06-26 20:21:37 -05:00
Morph
99ceb03a1c
general: Convert source file copyright comments over to SPDX
...
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00
Morph
12c1766997
general: Replace RESULT_SUCCESS with ResultSuccess
...
Transition to PascalCase for result names.
2021-06-02 00:39:27 -04:00
german77
65e20f424a
ldn: Add and stub lp2p:sys lp2p:app INetworkServiceMonitor INetworkService
2021-05-26 10:06:00 -05:00
bunnei
ab65cb499d
core: hle: ldn: Error out on call to Initialization.
...
- Since we do not emulate LDN, returning an error here makes more sense.
2021-02-27 11:59:29 -08:00
bunnei
d9a8060ce3
hle: service: ldn: IUserLocalCommunicationService: Improve the stub.
2021-02-13 21:45:09 -08:00
bunnei
51c13606d6
hle: service: ldn: IUserLocalCommunicationService: Indicate that LDN is disabled.
...
- Fixes crash on Pokemon Sword/Shield when pressing 'Y'.
2021-02-13 20:11:26 -08:00
Lioncash
1a954b2a59
service: Eliminate usages of the global system instance
...
Completely removes all usages of the global system instance within the
services code by passing in the using system instance to the services.
2020-11-26 20:03:11 -05:00
VolcaEM
b9be484a51
ldn: Update function table
...
This was based on Switchbrew page: https://switchbrew.org/wiki/LDN_services
2020-06-27 12:50:56 +02:00
Nguyen Dac Nam
5257a83ebe
IUserLocalCommunicationService: add function Initialize2
2020-02-16 13:24:34 +07:00
Nguyen Dac Nam
6c0eb6026b
HLE: correct function name of IUserLocalCommunicationService
...
402: function name should be Initialize2 (7.0.0+) not SetOperationMode
Follow by: https://switchbrew.org/wiki/LDN_services#IUserLocalCommunicationService
2020-02-16 13:14:06 +07:00
Lioncash
ca96dc4676
service: Update service function tables
...
Updates function tables based off information from SwitchBrew.
2019-04-11 02:47:00 -04:00
David Marcec
a2cc3b10bb
Changed logging to be "Log before execution", Added more error logging, all services should now log on some level
2018-11-26 17:06:13 +11:00
Lioncash
8781beaf0d
service: Add ldn services
...
Adds ldn services based off information provided by Switch Brew.
2018-07-26 01:48:06 -04:00