mirror of
https://git.eden-emu.dev/archive/citron
synced 2026-03-24 10:29:35 -04:00
This commit implements comprehensive firmware 20.0.0 through 21.0.0 support for Citron, including: - Updated firmware version constants to 21.0.0 in api_version.h - Updated HID service firmware version string to 21.0.0 - Added IPC command stubs for firmware 20.0.0+ in: * ISystemSettingsServer (commands 263, 264, 282, 283, 289, 300, 301, 306, 307) * IFirmwareDebugSettingsServer (command 24) * IApplicationFunctions (command 330) * IOlscServiceForSystemService (command 914) * IRemoteStorageController (commands 28, 901) * IService (migration) (commands 2250, 2260) * IAudioController (command 10200) - Created new service interfaces with proper stubs: * IContinuousRecorder (grcsrv) - command 5 [20.2.0+] with 0x20-byte input * IDownloadContext (news) - command 4 [20.0.0+] * INotifyService (pdm:ntfy) - commands 100, 101 [20.0.0+] returning outinterfaces - Added all new source files to CMakeLists.txt build system - Fixed logging tag usage (Service_Migration instead of Service_MIG) - Added required CMIF serialization headers for proper template instantiation All stubs return success explicitly, eliminating the need for auto-stubbing. All implementations follow Switchbrew documentation as closely as possible. Based on Switchbrew documentation: - https://switchbrew.org/wiki/21.0.0 - https://switchbrew.org/wiki/20.5.0 - https://switchbrew.org/wiki/20.4.0 - https://switchbrew.org/wiki/20.3.0 - https://switchbrew.org/wiki/20.2.0 - https://switchbrew.org/wiki/20.1.5 - https://switchbrew.org/wiki/20.1.1 - https://switchbrew.org/wiki/20.1.0 - https://switchbrew.org/wiki/20.0.1 - https://switchbrew.org/wiki/20.0.0 Signed-off-by: Zephyron <zephyron@citron-emu.org>
48 lines
1.4 KiB
C++
48 lines
1.4 KiB
C++
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
|
// SPDX-FileCopyrightText: Copyright 2025 citron Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include "common/common_types.h"
|
|
|
|
// This file contains citron's HLE API version constants.
|
|
|
|
namespace HLE::ApiVersion {
|
|
|
|
// Horizon OS version constants.
|
|
|
|
constexpr u8 HOS_VERSION_MAJOR = 21;
|
|
constexpr u8 HOS_VERSION_MINOR = 0;
|
|
constexpr u8 HOS_VERSION_MICRO = 0;
|
|
|
|
// NintendoSDK version constants.
|
|
|
|
constexpr u8 SDK_REVISION_MAJOR = 1;
|
|
constexpr u8 SDK_REVISION_MINOR = 0;
|
|
|
|
constexpr char PLATFORM_STRING[] = "NX";
|
|
constexpr char VERSION_HASH[] = "f6b2425b6888a66590db104fc734891696e0ecb3";
|
|
constexpr char DISPLAY_VERSION[] = "21.0.0";
|
|
constexpr char DISPLAY_TITLE[] = "NintendoSDK Firmware for NX 21.0.0-1.0";
|
|
|
|
// Atmosphere version constants.
|
|
|
|
constexpr u8 ATMOSPHERE_RELEASE_VERSION_MAJOR = 1;
|
|
constexpr u8 ATMOSPHERE_RELEASE_VERSION_MINOR = 0;
|
|
constexpr u8 ATMOSPHERE_RELEASE_VERSION_MICRO = 0;
|
|
|
|
constexpr u32 AtmosphereTargetFirmwareWithRevision(u8 major, u8 minor, u8 micro, u8 rev) {
|
|
return u32{major} << 24 | u32{minor} << 16 | u32{micro} << 8 | u32{rev};
|
|
}
|
|
|
|
constexpr u32 AtmosphereTargetFirmware(u8 major, u8 minor, u8 micro) {
|
|
return AtmosphereTargetFirmwareWithRevision(major, minor, micro, 0);
|
|
}
|
|
|
|
constexpr u32 GetTargetFirmware() {
|
|
return AtmosphereTargetFirmware(HOS_VERSION_MAJOR, HOS_VERSION_MINOR, HOS_VERSION_MICRO);
|
|
}
|
|
|
|
} // namespace HLE::ApiVersion
|