From 8d46d901d9106ac84c595641942af819ed363668 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Thu, 17 Sep 2020 21:18:44 -0700 Subject: [PATCH] ams: make mesosphere usage user-visible in display version --- .../ams_mitm/source/set_mitm/setsys_mitm_service.cpp | 10 +++++++++- stratosphere/creport/source/creport_crash_report.cpp | 4 ++++ stratosphere/fatal/source/fatal_task_screen.cpp | 4 +++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/stratosphere/ams_mitm/source/set_mitm/setsys_mitm_service.cpp b/stratosphere/ams_mitm/source/set_mitm/setsys_mitm_service.cpp index 7f21d3c28..b1b49fe91 100644 --- a/stratosphere/ams_mitm/source/set_mitm/setsys_mitm_service.cpp +++ b/stratosphere/ams_mitm/source/set_mitm/setsys_mitm_service.cpp @@ -56,10 +56,18 @@ namespace ams::mitm::settings { const auto api_info = exosphere::GetApiInfo(); const char emummc_char = emummc::IsActive() ? 'E' : 'S'; + /* NOTE: While Mesosphere is in experimental/opt-in, we will display it as part of the firmware. */ + const char mesosphere_char = svc::IsKernelMesosphere() ? 'M' : '0'; + + /* TODO: Remove separate display for mesosphere vs not mesosphere in Atmosphere 1.0.0. */ + AMS_ABORT_UNLESS(api_info.GetMajorVersion() == 0); + /* NOTE: We have carefully accounted for the size of the string we print. */ /* No truncation occurs assuming two-digits for all version number components. */ char display_version[sizeof(g_ams_firmware_version.display_version)]; - std::snprintf(display_version, sizeof(display_version), "%s|AMS %u.%u.%u|%c", g_ams_firmware_version.display_version, api_info.GetMajorVersion(), api_info.GetMinorVersion(), api_info.GetMicroVersion(), emummc_char); + + std::snprintf(display_version, sizeof(display_version), "%s|AMS %c.%u.%u|%c", g_ams_firmware_version.display_version, mesosphere_char, api_info.GetMinorVersion(), api_info.GetMicroVersion(), emummc_char); + std::memcpy(g_ams_firmware_version.display_version, display_version, sizeof(display_version)); } diff --git a/stratosphere/creport/source/creport_crash_report.cpp b/stratosphere/creport/source/creport_crash_report.cpp index 01a468385..9b1b93517 100644 --- a/stratosphere/creport/source/creport_crash_report.cpp +++ b/stratosphere/creport/source/creport_crash_report.cpp @@ -351,6 +351,10 @@ namespace ams::creport { void CrashReport::SaveToFile(ScopedFile &file) { file.WriteFormat("Atmosphère Crash Report (v1.5):\n"); + + /* TODO: Remove in Atmosphere 1.0.0. */ + file.WriteFormat("Mesosphere: %s\n", svc::IsKernelMesosphere() ? "Enabled" : "Disabled"); + file.WriteFormat("Result: 0x%X (2%03d-%04d)\n\n", this->result.GetValue(), this->result.GetModule(), this->result.GetDescription()); /* Process Info. */ diff --git a/stratosphere/fatal/source/fatal_task_screen.cpp b/stratosphere/fatal/source/fatal_task_screen.cpp index 327904f9d..1e6730cfa 100644 --- a/stratosphere/fatal/source/fatal_task_screen.cpp +++ b/stratosphere/fatal/source/fatal_task_screen.cpp @@ -214,7 +214,9 @@ namespace ams::fatal::srv { font::AddSpacingLines(0.5f); font::PrintFormatLine( "Program: %016lX", static_cast(this->context->program_id)); font::AddSpacingLines(0.5f); - font::PrintFormatLine("Firmware: %s (Atmosphère %u.%u.%u-%s)", config.GetFirmwareVersion().display_version, ATMOSPHERE_RELEASE_VERSION, ams::GetGitRevision()); + + /* TODO: Remove Mesosphere identifier in 1.0.0. */ + font::PrintFormatLine("Firmware: %s (Atmosphère%s %u.%u.%u-%s)", config.GetFirmwareVersion().display_version, svc::IsKernelMesosphere() ? " M" : "", ATMOSPHERE_RELEASE_VERSION, ams::GetGitRevision()); font::AddSpacingLines(1.5f); if (!exosphere::ResultVersionMismatch::Includes(this->context->result)) { font::Print(config.GetErrorDescription());