From 2ee2a4f1ac04bc7f15de8be8d57ad04d7e73f735 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Mon, 26 Oct 2020 15:59:09 -0700 Subject: [PATCH] docs/fatal error: update for 0.15.0 --- docs/changelog.md | 27 +++++++++++++++++++ docs/features/configurations.md | 8 +++--- .../nintendo/nx/kern_k_system_control.cpp | 13 +++++++++ .../source/ams/ams_environment.cpp | 5 +++- 4 files changed, 48 insertions(+), 5 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 758a15a5d..c1f0d7c37 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,4 +1,31 @@ # Changelog +## 0.15.0 ++ fusee-primary's panic display was updated to automatically identify and give suggestions to resolve many of the most common errors users encounter. ++ Having been tested as well as I can alone, `mesosphere` (atmosphère's reimplementation of the Nintendo Switch kernel) is now available for users interested in trying it. + + Beginning in this release and until it is stable and well-tested, atmosphère will distribute two zips. + + Users who wish to opt-in to mesosphere should download and extract the "atmosphere-EXPERIMENTAL" zip. + + Users who do not wish to use mesosphere should continue using the normal "atmosphere" zip. + + Users may detect whether mesosphere is active in system settings. + + When mesosphere is active, the system version string will display "M.15.0" rather than "0.15.0", and so on for future releases. + + Crash reports and the like will contain information on whether or not the user is using mesosphere, as well. + + There are "probably" no material user-facing benefits to using mesosphere at this time. + + Developers may be interested in the fact that mesosphere provides many newer SVC APIs even when on lower firmware versions. + + The primary benefit to using mesosphere is that any issues you may encounter and report to me will be fixed. + + All users who choose to opt in to using mesosphere have my deepest gratitude. + + **Note:** If using hekate instead of fusee-primary, you will have to wait for the next hekate release for mesosphere to function, as hekate's support has not yet been included in an official release build. + + This will be updated in the release notes when hekate provides a new release. + + As mentioned in previous release notes, when mesosphere is stable and well-tested, it will be enabled by default and atmosphère's version will transition to 1.0.0. ++ Having been tested sufficiently over the last half-year, Atmosphere's NCM implementation is now opt-out, rather than opt in. + + In the unlikely event that any issues are encountered, please report them to @SciresM. + + Users interested in opting out of using our implementation should set `stratosphere!disable_ncm = 1` in BCT.ini. + + The NCM implementation will stop being opt-out in a future update, probably around the same time that mesosphere becomes opt-out instead of opt-in. ++ Several bugs were fixed, including: + + Loader now sets HBL's thread priority to a higher value when loading it in applet mode. + + This fixes an extremely-slow launch ("hang") when using applet-HBL with certain games that do not suspend while inactive (e.g. Super Mario Sunshine). + + set.mitm now caches user language configuration much more heavily. + + This severely reduces lag in certain games which misuse the "nn::oe::GetDesiredLanguage()" API. + + A bug was fixed that could cause erpt to fatal when loading an official save file that had error report attachments in it. ++ General system stability improvements to enhance the user's experience. ## 0.14.4 + Several bugs were fixed involving the official jit sysmodule added in 10.0.0. + A Process handle leak was fixed when JitPlugin NRRs were registered with the `ro` sysmodule. diff --git a/docs/features/configurations.md b/docs/features/configurations.md index 858ec443c..f7f4cd111 100644 --- a/docs/features/configurations.md +++ b/docs/features/configurations.md @@ -9,7 +9,7 @@ This file is located under the `/atmosphere/config/` folder on your SD card and Atmosphère provides its own default splashscreen which is displayed at boot time. However, this can be replaced at will. The boot splashscreen must be a BMP file, it must be 720x1280 (1280x720 rotated 90 degrees left/counterclockwise/anti-clockwise) resolution, and be in 32-bit ARGB format. You can use image editing software such as GIMP or Photoshop to export the image in this format. - + Add the following lines to BCT.ini and change the value of `custom_splash` to the actual path and filename of your boot splashscreen: ``` [stage2] @@ -29,11 +29,11 @@ nogc = X 0 = force-disable nogc, so Atmosphère will always enable the Game Card reader. ``` -### NCM opt-in -Atmosphère provides a reimplementation of the [ncm](../components/modules/ncm.md) system module, but currently this is not enabled by default. If you wish to enable this reimplementation add the following line to the `stratosphere` section: +### NCM opt-out +Atmosphère provides a reimplementation of the [ncm](../components/modules/ncm.md) system module. If you wish to disable this reimplementation add the following line to the `stratosphere` section: ``` [stratosphere] -enable_ncm = 1 +disable_ncm = 1 ``` ### Logging diff --git a/libraries/libmesosphere/source/board/nintendo/nx/kern_k_system_control.cpp b/libraries/libmesosphere/source/board/nintendo/nx/kern_k_system_control.cpp index 0441af3f3..6f4987ed9 100644 --- a/libraries/libmesosphere/source/board/nintendo/nx/kern_k_system_control.cpp +++ b/libraries/libmesosphere/source/board/nintendo/nx/kern_k_system_control.cpp @@ -308,6 +308,15 @@ namespace ams::kern::board::nintendo::nx { g_secure_applet_memory_used = false; } + u64 GetVersionIdentifier() { + u64 value = kern::GetTargetFirmware(); + value |= static_cast(ATMOSPHERE_RELEASE_VERSION_MICRO) << 32; + value |= static_cast(ATMOSPHERE_RELEASE_VERSION_MINOR) << 40; + value |= static_cast(ATMOSPHERE_RELEASE_VERSION_MAJOR) << 48; + value |= static_cast('M') << 56; + return value; + } + } /* Initialization. */ @@ -557,6 +566,10 @@ namespace ams::kern::board::nintendo::nx { /* Set module base. */ f_ctx->module_base = KMemoryLayout::GetKernelCodeRegionExtents().GetAddress(); + /* Set afsr1. */ + f_ctx->afsr0 = 0; + f_ctx->afsr1 = GetVersionIdentifier(); + /* Copy registers. */ for (size_t i = 0; i < util::size(e_ctx->x); ++i) { f_ctx->gprs[i] = e_ctx->x[i]; diff --git a/libraries/libstratosphere/source/ams/ams_environment.cpp b/libraries/libstratosphere/source/ams/ams_environment.cpp index 67e60b853..3a0bb3ed9 100644 --- a/libraries/libstratosphere/source/ams/ams_environment.cpp +++ b/libraries/libstratosphere/source/ams/ams_environment.cpp @@ -74,7 +74,10 @@ namespace ams { ams_ctx.pc = ctx->pc.x; ams_ctx.pstate = ctx->pstate; ams_ctx.afsr0 = ctx->afsr0; - ams_ctx.afsr1 = ctx->afsr1; + ams_ctx.afsr1 = (static_cast(::ams::exosphere::GetVersion(ATMOSPHERE_RELEASE_VERSION)) << 32) | static_cast(hos::GetVersion()); + if (svc::IsKernelMesosphere()) { + ams_ctx.afsr1 |= (static_cast('M') << (BITSIZEOF(u64) - BITSIZEOF(u8))); + } ams_ctx.far = ctx->far.x; ams_ctx.report_identifier = armGetSystemTick();