diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 126aea75f..f3204fca1 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -272,6 +272,7 @@ enum class SystemInfoCitraInformation { HOST_TICK = 1, // Tick reference from the host in ns, unaffected by lag or cpu speed. BUILD_NAME = 10, // (ie: Nightly, Canary). BUILD_VERSION = 11, // Build version. + BUILD_PLATFORM = 12, // Build platform, see SystemInfoCitraPlatform. BUILD_DATE_PART1 = 20, // Build date first 7 characters. BUILD_DATE_PART2 = 21, // Build date next 7 characters. BUILD_DATE_PART3 = 22, // Build date next 7 characters. @@ -282,6 +283,17 @@ enum class SystemInfoCitraInformation { BUILD_GIT_DESCRIPTION_PART2 = 41, // Git description (commit) last 7 characters. }; +/** + * Current officially supported platforms. + */ +enum class SystemInfoCitraPlatform { + PLATFORM_UNKNOWN = 0, + PLATFORM_WINDOWS = 1, + PLATFORM_LINUX = 2, + PLATFORM_APPLE = 3, + PLATFORM_ANDROID = 4, +}; + /** * Accepted by the custom svcControlProcess. */ @@ -1743,9 +1755,9 @@ Result SVC::GetSystemInfo(s64* out, u32 type, s32 param) { *out = 1; break; case SystemInfoCitraInformation::HOST_TICK: - *out = (s64)std::chrono::duration_cast( - std::chrono::steady_clock::now().time_since_epoch()) - .count(); + *out = static_cast(std::chrono::duration_cast( + std::chrono::steady_clock::now().time_since_epoch()) + .count()); break; case SystemInfoCitraInformation::BUILD_NAME: CopyStringPart(reinterpret_cast(out), Common::g_build_name, 0, sizeof(s64)); @@ -1753,6 +1765,20 @@ Result SVC::GetSystemInfo(s64* out, u32 type, s32 param) { case SystemInfoCitraInformation::BUILD_VERSION: CopyStringPart(reinterpret_cast(out), Common::g_build_version, 0, sizeof(s64)); break; + case SystemInfoCitraInformation::BUILD_PLATFORM: { +#if defined(_WIN32) + *out = static_cast(SystemInfoCitraPlatform::PLATFORM_WINDOWS); +#elif defined(ANDROID) + *out = static_cast(SystemInfoCitraPlatform::PLATFORM_ANDROID); +#elif defined(__linux__) + *out = static_cast(SystemInfoCitraPlatform::PLATFORM_LINUX); +#elif defined(__APPLE__) + *out = static_cast(SystemInfoCitraPlatform::PLATFORM_APPLE); +#else + *out = static_cast(SystemInfoCitraPlatform::PLATFORM_UNKNOWN); +#endif + break; + } case SystemInfoCitraInformation::BUILD_DATE_PART1: CopyStringPart(reinterpret_cast(out), Common::g_build_date, (sizeof(s64) - 1) * 0, sizeof(s64));