Go to file
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
2025-08-23 18:53:24 +07:00
2024-01-08 09:34:32 -05:00
2025-10-07 10:10:06 +00:00
2024-02-25 17:17:01 +00:00
2023-11-04 18:26:49 +00:00
2025-10-30 00:12:17 +00:00
2025-10-03 15:05:41 +10:00
2025-10-30 00:23:09 +00:00

Citron - Nintendo Homebrew Emulator 🍋

Welcome to Citron, a cutting-edge Nintendo Homebrew emulator designed to deliver an optimized experience for playing your favorite games and exploring new ones. Citron is a high-performance and easy-to-use emulator, tailored for enthusiasts and developers alike.

Disclaimer: Citron is intended strictly for legal homebrew use and is not affiliated with or endorsed by Nintendo. Use of Citron for pirated or unauthorized copies of games is strictly prohibited. Please respect game developers and support them by purchasing legitimate copies of their games.

Features 🛠️

  • High Performance: Optimized for speed and smooth gameplay.
  • User-Friendly: Clean and intuitive interface.
  • Cross-Platform: Available on multiple platforms.
  • Homebrew Support: Fully supports legal homebrew games and applications.
  • Ongoing Development: Stay tuned for frequent updates as Citron evolves!

Download 🚀

Ready to experience Citron? Download the latest version and dive into your favorite Nintendo homebrew titles!

Getting Started 💡

  1. Check the System Requirements: Head over to this link to check the requirements to run this emulator system requirements page
  2. Download and Install: Head over to the downloads page to grab the latest release.
  3. Add Homebrew Games: Citron is built to play homebrew games. Add them to your game directory and enjoy!
  4. Configure Your Settings: Customize your emulator settings to suit your performance needs.

Source Code 🔧

Citron is an open-source project. You can find the source code on our official Git repository:

We welcome contributions! Check out the repository and feel free to submit issues or pull requests to help improve Citron.

Citron is a homebrew emulator designed to support legally created and distributed homebrew software. It does not support piracy, nor is it intended for illegal purposes. Using Citron to play pirated copies of games is a violation of copyright law. Citron is not affiliated with or endorsed by Nintendo, and all Nintendo trademarks and copyrights are the property of their respective owners.

We highly encourage users to respect intellectual property rights and to only use Citron with legal, homebrew content.

License 📄

Citron is licensed under the GPL License. See the full license in the LICENSE file for more details.

Contributing

We are always looking for developers, testers, and enthusiasts to contribute to Citron. Whether you want to submit a pull request, report an issue, or suggest new features, all contributions are welcome. Please follow our contributing guidelines to get started.

Contact Us 📬

For any inquiries or to follow Citron's development journey, reach out to us:

Made with 💚 by Zephyron | Source Code

Description
No description provided
Readme GPL-3.0 120 MiB
Languages
C++ 65.6%
cpp 29.9%
Kotlin 2.7%
CMake 0.8%
GLSL 0.4%
Other 0.4%