feat(ldn): Implement missing Account and LDN services from SwitchBrew documentation #2

Merged
Zephyron merged 1 commit from acc-ldn-switchbrew-implementation into main 2025-10-30 09:33:29 +00:00
Owner

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:

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

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>
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>
Zephyron deleted branch acc-ldn-switchbrew-implementation 2025-10-30 09:33:29 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Citron/Emulator!2
No description provided.