diff --git a/include/stratosphere/firmware_version.hpp b/include/stratosphere/firmware_version.hpp index 75089223..7032edb5 100644 --- a/include/stratosphere/firmware_version.hpp +++ b/include/stratosphere/firmware_version.hpp @@ -41,3 +41,5 @@ enum AtmosphereTargetFirmware : u32 { }; FirmwareVersion GetRuntimeFirmwareVersion(); + +void SetFirmwareVersionForLibnx(); \ No newline at end of file diff --git a/source/firmware_version.cpp b/source/firmware_version.cpp index 821e53f7..4245d151 100644 --- a/source/firmware_version.cpp +++ b/source/firmware_version.cpp @@ -83,3 +83,48 @@ FirmwareVersion GetRuntimeFirmwareVersion() { _CacheValues(); return g_firmware_version; } + +void SetFirmwareVersionForLibnx() { + u32 major = 0, minor = 0, micro = 0; + switch (GetRuntimeFirmwareVersion()) { + case FirmwareVersion_100: + major = 1; + minor = 0; + micro = 0; + break; + case FirmwareVersion_200: + major = 2; + minor = 0; + micro = 0; + break; + case FirmwareVersion_300: + major = 3; + minor = 0; + micro = 0; + break; + case FirmwareVersion_400: + major = 4; + minor = 0; + micro = 0; + break; + case FirmwareVersion_500: + major = 5; + minor = 0; + micro = 0; + break; + case FirmwareVersion_600: + major = 6; + minor = 0; + micro = 0; + break; + case FirmwareVersion_700: + major = 7; + minor = 0; + micro = 0; + break; + default: + std::abort(); + break; + } + hosversionSet(MAKEHOSVERSION(major, minor, micro)); +}