- Add acc:e service with full account management functionality
- Add acc:e:u1 service (minimal implementation)
- Add acc:e:u2 service with extended functionality including PIN code support
- Add dauth:0 device authentication service
- Update acc_su function mappings to match newer firmware versions
- Move TrySelectUserWithoutInteraction from ID 51 to 52 with deprecated fallback
These services provide additional account management interfaces used by
newer Switch firmware versions and some games that require extended
account functionality.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Addition of all documented commands for `INpnsSystem` and `INpnsUser` as `nullptr` stubs. This includes newly added commands and ensures all known commands have a placeholder.
- Introduction of empty class definitions for `INotificationReceiver`, `ICreateTokenAsyncContext`, `ISubscriptionUpdateNotifier`, and `IFuture` interfaces as specified in the documentation.
- Reversion of the previous change that made `nullptr` stubs call an `UnimplementedMethod` that returned success. Stubs are now back to being `nullptr`.
- Update of the copyright year in `npns.cpp`.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit introduces support for a 32:9 aspect ratio throughout Citron.
Key changes include:
- **Enum Updates**: Added `R32_9` to `Settings::AspectRatio` and `Layout::AspectRatio` enums, ensuring consistent integer mapping for casting between them.
- **Core Logic**:
- Modified `UISettings::CalculateWidth` to correctly compute width for the 32:9 ratio.
- Updated `Layout::EmulationAspectRatio` to handle the new `R32_9` case and return the appropriate float value (9.0f / 32.0f).
- **Android Integration**:
- Updated `EmulationFragment.kt` and `EmulationActivity.kt` (for Picture-in-Picture) to recognize and apply the 32:9 aspect ratio (mapping setting value `4` to `Rational(32, 9)`).
- **UI Configuration**:
- Added "Force 32:9" to the aspect ratio selection in the graphics settings UI via `shared_translation.cpp`. This string is translatable.
This enhancement allows users to utilize ultra-widescreen 32:9 displays for a more immersive experience.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Adds implementations for missing nsd:u and nsd:a services
as documented in SwitchBrew. This includes:
- Defining necessary data structures (Url, SettingName, DeviceId, Fqdn,
NasServiceSetting, NasServiceName, SaveData, TestParameter, DeleteMode,
ImportMode) in nsd.cpp.
- Adding declarations for new service methods to nsd.h.
- Implementing basic stub logic for each new service method in nsd.cpp,
including logging, returning default success/error codes, and handling
output buffers where applicable.
- Implementing checks for nsd:a specific functions using a new
IsNsdA() helper.
- Updating the copyright year in nsd.h.
This provides a complete interface for the nsd service, allowing
further development and reducing unknown service calls.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Adds implementations for missing `sfdnsres` (nn::socket::resolver::IResolver) service functions and corrects command ID mappings to align with Switchbrew documentation.
Key changes:
- Implemented stubs for the following `sfdnsres` functions:
- `SetDnsAddresses` (Cmd 0)
- `GetDnsAddressList` (Cmd 1)
- `GetHostByAddrRequest` (Cmd 4, deprecated)
- `GetHostStringError` (Cmd 5)
- `CancelRequest` (Cmd 7)
- `GetOptions` (Cmd 9)
- `GetAddrInfoRequestRaw` (Cmd 11)
- Updated the command registration table in the `SFDNSRES` constructor to use correct Switchbrew command IDs and map them to the appropriate existing or new (stubbed) implementations.
- Retained and stubbed `GetNameInfoRequest` and `GetNameInfoRequestWithOptions` with placeholder IDs, as they were present in the previous command table.
- Corrected usage of `GetAddrInfoError` constants in stubs to use valid members (e.g., `GetAddrInfoError::AGAIN` instead of a non-standard `INTERNAL`).
This significantly expands the implemented interface for the `sfdnsres` service, bringing it closer to the documented functionality and resolving related compilation errors.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Adds implementations for all `bsdcfg` (aliased as `ifcfg`) service functions as listed in the existing codebase and supplemented by Switchbrew documentation.
The following functions have been added to the `BSDCFG` service:
- `SetIfUp` (Cmd 0)
- `SetIfUpWithEvent` (Cmd 1)
- `CancelIf` (Cmd 2)
- `SetIfDown` (Cmd 3)
- `GetIfState` (Cmd 4)
- `DhcpRenew` (Cmd 5)
- `AddStaticArpEntry` (Cmd 6)
- `RemoveArpEntry` (Cmd 7)
- `LookupArpEntry` (Cmd 8)
- `LookupArpEntry2` (Cmd 9)
- `ClearArpEntries` (Cmd 10)
- `ClearArpEntries2` (Cmd 11)
- `PrintArpEntries` (Cmd 12)
- `Unknown13` (Cmd 13)
- `Unknown14` (Cmd 14)
- `Unknown15` (Cmd 15)
These functions are initially stubbed to log a warning and return `EOPNOTSUPP`.
Command handlers have been updated in the `BSDCFG` constructor.
Additionally, this commit corrects the logging category in these new `BSDCFG` stubs from an undefined `Service_BSDCFG` to the existing `Service` category, resolving compilation errors.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Adds implementations for several previously unimplemented BSD socket service functions, as documented in Switchbrew. REF: https://switchbrew.org/wiki/Sockets_services#bsd:u.2C_bsd:s.2C_bsd:a
The following functions have been added to the `bsd:u`, `bsd:s`, and `bsd:a` services:
* `SocketExempt` (Cmd 3)
* `Open` (Cmd 4)
* `Sysctl` (Cmd 7)
* `Ioctl` (Cmd 19)
* `ShutdownAllSockets` (Cmd 23)
* `GetResourceStatistics` (Cmd 28)
* `RecvMMsg` (Cmd 29)
* `SendMMsg` (Cmd 30)
* `RegisterResourceStatisticsName` (Cmd 32)
* `RegisterClientShared` (Cmd 33) (replaces the placeholder `Initialize2`)
* `GetSocketStatistics` (Cmd 34)
* `NifIoctl` (Cmd 35)
* `SetThreadCoreMask` (Cmd 200)
* `GetThreadCoreMask` (Cmd 201)
These functions are initially set to log a warning and return an appropriate error code (typically `EOPNOTSUPP` or `ENOTTY`), or success in the case of registration-type functions.
The command handlers have been registered in the BSD service constructor.
This resolves various compilation errors encountered during the implementation process related to IPC response generation and enum usage.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
1. Update NASM from 2.16.01 to 2.16.03 and use the official nasm.us download URL
2. Update clang-format from version 15 to version 20
3. Change all repository URLs from yuzu-mirror GitHub to Citron's self-hosted Git server
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Boost.Process is not compatible with Android platform, causing build failures. This change conditionally includes the package only on non-Android platforms.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Updates UDP client code to use boost::asio::io_context instead of the
deprecated boost::asio::io_service, fixing compilation errors with newer
Boost versions.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Add an implementation for function 92 (SetGestureOutputRanges) in the HID service.
This fixes a crash in Donkey Kong Country Returns HD which occurs when the game
attempts to access this unimplemented function. The function is now properly
registered and returns success while logging the call.
The specific error that was occurring:
"Unknown / unimplemented function '92': port='hid'"
According to the official Switch documentation, this function was introduced in
firmware 18.0.0+ and is used for setting gesture output ranges for touch/gesture
controls.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Implements the ssl:s service alongside various SSL-related functionality that
was causing Xenoblade Chronicles X: Definitive Edition to crash. The changes
include:
- Add the ssl:s service with proper command handlers
- Add InfoType::TLSCapability (0x1C) to the system call handler
- Implement a stub SSL backend for basic network operations
- Add FlushSessionCache functionality to both ssl and ssl:s services
These changes resolve the "TLS initialization failed" crash and the "Unknown
function '5': port='ssl:s'" error that were preventing the game from starting.
The implementation is mostly stubbed, allowing network requests to pass through
unencrypted but enabling games to proceed without crashing.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Add implementation for the missing nim:ecas service documented in SwitchBrew.
Provide stub implementations of critical NIM service functions that games might call:
- System update related functions (CreateSystemUpdateTask, GetSystemUpdateTaskInfo)
- Network installation functions (RequestNetworkInstallTaskRun, GetNetworkInstallTaskInfo)
- Local communication for system updates and applications
- Delta update related functions (CreateApplyDeltaTask, GetApplyDeltaTaskInfo)
- RequestDownloadTicketForPrepurchasedContents for DLC content access
Fix compilation error in GetDownloadedSystemDataPath by using ctx.WriteBuffer
instead of unsupported rb.PushString.
These changes prevent games from crashing due to missing NIM service functions and
allow proper handling of system updates, network installations, and DLC content.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Specifically:
- Add 11 missing methods to IGeneralService including network profile, scan, and WoWL functionality
- Implement 14 missing methods for IRequest class
- Complete implementation of IScanRequest class with all 5 required methods
- Update copyright notices to include citron Emulator Project
These additions should prevent games from crashing when accessing previously unimplemented network interface functions.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Changes:
- Remove special case for KeplerCompute inline methods that used unsafe reads in high
accuracy mode
- Add special case to use safe reads for KeplerCompute inline methods even in normal
accuracy mode
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Add implementations for all previously unimplemented IFriendService functions
- Create IDaemonSuspendSessionService class and implement CreateDaemonSuspendSessionService
- Restructure code to separate method declarations from implementations
- Add helper structs/payloads for various friend-related data structures
- Update function documentation and logging messages
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Updates the audio core revision number to match newer firmware requirements, allowing the emulator to properly handle audio features from more recent Switch software.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Changes the StartupWMClass from "citron" to "org.citron_emu.citron" to ensure proper icon display in GNOME and other desktop environments. Without this matching the application ID, a generic icon is displayed instead of the proper application icon.
Credit: Shikakiben (shikakiru)
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- This adds implementations for ioctl command 0x13 in both Ioctl1 and Ioctl3 functions, allowing newer titles like Super Mario Party Jamboree to boot by properly handling this command with a NotImplemented response rather than failing.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Updates the Discord application Client ID.
- Changes the game art source from static URLs on `citron-emu.org` to dynamically fetched images from `tinfoil.media` using the game's title ID.
- Removes the `GetGameString` function, as the URL formatting logic has changed.
- Modifies `UpdateGameStatus` and `Update` to accommodate the new image fetching mechanism and use the title ID.
- Adds new members to `DiscordImpl` to store title ID and cache image URLs.
- Updates copyright information in `discord_impl.cpp` and `discord_impl.h`.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- In `CMakeModules/DownloadExternals.cmake`:
- The `package_base_url` for bundled externals is changed from `citron-emu` to `yuzu-mirror`.
- In `CMakeLists.txt`:
- The `NASM_DOWNLOAD_URL` is updated to `yuzu-mirror`.
- The download URL for the compatibility list is changed from `api.citron-emu.org` to `api.yuzu-citron-emu.org`.
- The download URL for `clang-format` on Windows is updated to `yuzu-mirror`.
- Copyright years and project names are updated in both files.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Disables the `enable_telemetry` setting by default.
- Updates the `web_api_url` to "https://api.ynet-fun.xyz".
- Updates the copyright year and project name.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Bumps HOS version from 12.1.0 to 20.0.1.
- Updates the corresponding `VERSION_HASH`, `DISPLAY_VERSION`, and
`DISPLAY_TITLE` strings.
- Updates the copyright year and project name.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Add Citron logo in multiple formats:
- .bmp for legacy support
- .ico for Windows applications
- .svg for scalable graphics
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Updates the copyright year and project name in `telemetry_session.cpp`.
- Adjusts the size of the `personalization` array for telemetry ID generation to correctly accommodate the "citron Telemetry ID" string, preventing potential truncation.
Signed-off-by: Zephyron <zephyron@citron-emu.org>