Atmosphere

Atmosphère is a work-in-progress customized firmware for the Nintendo Switch.

GPL-2.0 License

Stars
13.8K
Committers
74

Bot releases are visible (Hide)

Atmosphere - Atmosphère 0.15.0

Published by SciresM almost 4 years ago

0.15.0 is Atmosphère's thirty-eighth official release.

fusee-primary was last updated in: 0.15.0.

With thanks to the @switchbrew team, Atmosphère 0.15.0 is bundled with hbl 2.3.4, and hbmenu 3.3.0.

Note: The ams.mitm and fatal sysmodules inside the 0.15.0 release build were updated on 2020/10/27 at 11 AM PDT to fix a bug that prevented ftpd and similar applications from listing contents in the atmosphere directory. The updated zip has a build hash of "-1c71d12d".

The following was changed since the last release:

  • 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 "cool kids" zip ("atmosphere-EXPERIMENTAL-").
      • Users who do not wish to use mesosphere should continue using the normal zip ("atmosphere-").
    • 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.

For information on the featureset supported by 0.15, please see the official release notes.

Atmosphere - Atmosphère 0.14.4

Published by SciresM about 4 years ago

0.14.4 is Atmosphère's thirty-seventh official release.

fusee-primary was last updated in: 0.14.0.

With thanks to the @switchbrew team, Atmosphère 0.14.4 is bundled with hbl 2.3.4, and hbmenu 3.3.0.

The following was changed since the last release:

  • 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.
      • This prevented processes using jit from being able to exit, causing a full system freeze.
    • The sm atmosphere extension to not unregister services when the server's connection is closed was special-case disabled for jit:u.
      • This extension is normally desirable in order to allow more concurrent processes to exist (as only 0x40 sm connections may ever be concurrently open), but official jit sysmodule relies on the behavior.
      • This would cause crashes on attempts to launch a program using jit services more than once per reboot.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.14, please see the official release notes.

Atmosphere - Atmosphère 0.14.3

Published by SciresM about 4 years ago

0.14.3 is Atmosphère's thirty-sixth official release.

fusee-primary was last updated in: 0.14.0.

With thanks to the @switchbrew team, Atmosphère 0.14.3 is bundled with hbl 2.3.4, and hbmenu 3.3.0.

The following was changed since the last release:

  • Support was added for 10.2.0.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.14, please see the official release notes.

Atmosphere - Atmosphère 0.14.2

Published by SciresM about 4 years ago

0.14.2 is Atmosphère's thirty-fifth official release.

fusee-primary was last updated in: 0.14.0.

With thanks to the @switchbrew team, Atmosphère 0.14.2 is bundled with hbl 2.3.4, and hbmenu 3.3.0.

The following was changed since the last release:

  • A bug was fixed that could cause a deadlock when installing mitm services.
    • Fixing this required a breaking change to the client behavior when installing a mitm service, and so custom sysmodules which use mitm will need to be re-compiled to function properly.
  • A bug was fixed that caused atmosphere sysmodules to respond incorrectly when receiving invalid messages.
  • A bug was fixed that caused fatal auto-reboot timing to work improperly.
  • Support was added to fusee for loading binaries for mesosphere, atmosphère's reimplementation of the Nintendo Switch kernel.
    • 0.14.2 does not include mesosphere, but those who are especially interested can build and test mesosphere themselves.
    • In the future, to enable a sufficient testing period Atmosphère releases will distribute two zips for some time.
      • One zip will use mesosphere, and the other will not.
      • This will allow users who are interested to opt-in to mesosphere usage before it has been tested to be stable.
    • When mesosphere is stable and well-tested, it will be enabled by default and Atmosphère's version will transition to 1.0.0.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.14, please see the official release notes.

Atmosphere - Atmosphère 0.14.1

Published by SciresM about 4 years ago

0.14.1 is Atmosphère's thirty-fourth official release.

fusee-primary was last updated in: 0.14.0.

With thanks to the @switchbrew team, Atmosphère 0.14.1 is bundled with hbl 2.3.4, and hbmenu 3.3.0.

The following was changed since the last release:

  • An issue was fixed in 0.14.0 that would cause a black screen on boot when the INI1's size was not aligned to 8 bytes.
  • General system stability improvements to enhance the user's experience.

The changelog for the previous release, 0.14.0 is as follows:

  • An API (ams:su) was added to allow homebrew to safely install system upgrades or downgrades.
    • This is a re-implementation of the logic that ns uses to install gamecard system updates.
    • Nintendo (and now atmosphère) uses an installation process that can recover no matter where a failure occurs, which should significantly improve the safety of custom system update installation.
  • Support was added to exosphère for running on Mariko hardware.
    • Please note: Atmosphère still does not support Mariko, and should not be run on Mariko yet.
      • Certain stratosphere components do not handle mariko-specific logic fully correctly yet, and may initialize or interact with hardware incorrectly.
      • This will be fixed and support will be added over the remainder of the Summer.
  • A homebrew application (daybreak) was added that uses the system updater API (with thanks to @Adubbz for both design and implementation).
    • daybreak is included with atmosphère, and functions as a safer/more accurate equivalent to e.g. ChoiDujourNX.
    • Upgrades/downgrades can be installed from a folder containing the update NCAs on the SD card.
    • Because the update logic functions identically to Nintendo's, daybreak will be safe to use on Mariko when the rest of atmosphère has support.
    • Please note: Daybreak requires that meta (.cnmt) NCAs have the correct extension .cnmt.nca.
      • This is because gamecard system update logic uses extension to determine whether to mount the content.
      • Several scripts have been made by community members to automatically rename folders with incorrect extensions.
  • A bug was fixed that would cause file-based emummc to throw an error (showing a hexdump) on boot.
    • Major thanks to @hexkyz for tracking down and resolving this.
  • A number of minor issues were resolved, including:
    • fusee now prints information to the screen when an error occurs, instead of getting stuck trying to initialize the display.
    • A race condition in Horizon was worked around that could prevent boot under certain circumstances.
    • A bug was fixed that would cause atmosphère modules to open ten copies of certain filesystems instead of one.
      • This could cause object exhaustion under certain circumstances.
  • For those interested in atmosphère's future development plans, the project's roadmap was updated.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.14, please see the official release notes.

Atmosphere - Atmosphère 0.14.0

Published by SciresM about 4 years ago

0.14.0 is Atmosphère's thirty-third official release.

fusee-primary was last updated in: 0.14.0.

With thanks to the @switchbrew team, Atmosphère 0.14.0 is bundled with hbl 2.3.4, and hbmenu 3.3.0.

The following was changed since the last release:

  • An API (ams:su) was added to allow homebrew to safely install system upgrades or downgrades.
    • This is a re-implementation of the logic that ns uses to install gamecard system updates.
    • Nintendo (and now atmosphère) uses an installation process that can recover no matter where a failure occurs, which should significantly improve the safety of custom system update installation.
  • Support was added to exosphère for running on Mariko hardware.
    • Please note: Atmosphère still does not support Mariko, and should not be run on Mariko yet.
      • Certain stratosphere components do not handle mariko-specific logic fully correctly yet, and may initialize or interact with hardware incorrectly.
      • This will be fixed and support will be added over the remainder of the Summer.
  • A homebrew application (daybreak) was added that uses the system updater API (with thanks to @Adubbz for both design and implementation).
    • daybreak is included with atmosphère, and functions as a safer/more accurate equivalent to e.g. ChoiDujourNX.
    • Upgrades/downgrades can be installed from a folder containing the update NCAs on the SD card.
    • Because the update logic functions identically to Nintendo's, daybreak will be safe to use on Mariko when the rest of atmosphère has support.
    • Please note: Daybreak requires that meta (.cnmt) NCAs have the correct extension .cnmt.nca.
      • This is because gamecard system update logic uses extension to determine whether to mount the content.
      • Several scripts have been made by community members to automatically rename folders with incorrect extensions.
  • A bug was fixed that would cause file-based emummc to throw an error (showing a hexdump) on boot.
    • Major thanks to @hexkyz for tracking down and resolving this.
  • A number of minor issues were resolved, including:
    • fusee now prints information to the screen when an error occurs, instead of getting stuck trying to initialize the display.
    • A race condition in Horizon was worked around that could prevent boot under certain circumstances.
    • A bug was fixed that would cause atmosphère modules to open ten copies of certain filesystems instead of one.
      • This could cause object exhaustion under certain circumstances.
  • For those interested in atmosphère's future development plans, the project's roadmap was updated.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.14, please see the official release notes.

Atmosphere - Atmosphère 0.13.0

Published by SciresM over 4 years ago

0.13.0 is Atmosphère's thirty-second official release.

fusee-primary was last updated in: 0.13.0.

With thanks to the @switchbrew team, Atmosphère 0.13.0 is bundled with hbl 2.3.3, and hbmenu 3.3.0.

The following was changed since the last release:

  • exosphère, atmosphère's secure monitor re-implementation, was completely re-written.
    • exosphère was the first component authored for the project in early 2018. It is written in C, and in a style very different from the rest of atmosphère's code.
      • This has made the codebase difficult to maintain as time has gone on.
    • exosphère was also written to conform to constraints and assumptions that simply no longer apply when cfw is not launched from the web browser, and when warmboothax is possible.
    • Even beyond these issues, exosphère used all but 1KB of the 64KB of space available to it. This was a problem for a few reasons:
      • Each new system update added requires additional space to support (to add new keys and reflect various changes); 10.0.0 support used up 3 of the 4KB we had left.
      • atmosphère will want to have software support for mariko hardware, and this is not possible to fit in 1 KB.
    • The exosphère rewrite (which was codenamed exosphère2 during development) solves these problems.
    • The new codebase is C++20 written in atmosphère's style.
      • This solves the maintainability problem, and should make understanding how the secure monitor works much easier for those interested in using the code as a reference implementation.
    • In addition, the new implementation currently uses ~59.5 of the 64KB available.
      • Several potential code changes are planned that can save/grant access to an additional ~2-3 KB if needed.
        • Unlike the first codebase, the new exosphère actually already has space allocated for future keys/etc. It is currently expected that the reserved space will never be required.
      • The previous implementation chose not to implement a number of "unimportant" secure monitor functions due to space concerns. The new code has enough breathing room that it can implement them without worries. :)
    • Finally, the groundwork for mariko support has been laid -- there are only a few minor changes needed for the new secure monitor implementation to work on both erista and mariko hardware.
      • Please note: exosphère is only one of many components, and many more need changes to support running on mariko hardware.
        • Software-side support for executing on mariko hardware is expected some time during Summer 2020, though it should also be noted that this is not a hard deadline.
    • Please note: The new exosphère binary is not abi-compatible with the old one. Users who boot using hekate should upgrade to hekate v5.3.0 before running 0.13.0 (or boot fusee-primary via hekate).
  • atmosphère's api for target firmware was changed. All minor/micro system versions are now recognized, instead of only major versions.
    • This was required in order to support firmware version 5.1.0, which made breaking changes to certain IPC APIs that caused atmosphère 0.12.0 to abort.
    • Please note: this is (unavoidably) a breaking change. System modules using atmosphere-libs will need to update to understand what firmware version they are running.
  • emummc was updated to include the new changes.
    • emummc now uses an updated/improved/faster SDMMC driver.
    • File-based emummc is now almost as fast as raw partition-based emummc.
  • For those interested in atmosphère's future development plans, the project's roadmap was updated.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.13, please see the official release notes.

Atmosphere - Atmosphère 0.12.0

Published by SciresM over 4 years ago

0.12.0 is Atmosphère's thirty-first official release.

fusee-primary was last updated in: 0.12.0.

With thanks to the @switchbrew team, Atmosphère 0.12.0 is bundled with hbl 2.3.1, and hbmenu 3.3.0.

The following was changed since the last release:

  • Configuration for exosphere was moved to sd:/exosphere.ini.
    • This is to facilitate BIS protection changes described below.
    • Hopefully having this outside of the Atmosphere folder will prevent accidental deletion, since this now contains important settings.
  • Atmosphere's bis protection policy for the PRODINFO partition was substantially reworked.
    • Support was added for "automatically" performing a "blanking" operation to PRODINFO without actually modifying NAND.
      • This is equivalent to using the "incognito" homebrew tool, but NAND is never actually modified.
      • This can be turned on in sysmmc by setting blank_prodinfo_sysmmc=1 in exosphere.ini, and in emummc by setting blank_prodinfo_emummc=1 in exosphere.ini.
      • Please note: This is not known to be safe. There is a lack of research on whether the information blanked out is cached elsewhere in the system.
        • Usage of this option is not encouraged for this reason.
    • Support was added for writing to the PRODINFO partition, if a verified encrypted backup has been made.
      • PRODINFO is the only system data that cannot be recovered if not backed up, and thus Atmosphere has backed it up to the SD card on boot for some time now.
      • Users who wish to modify their calibration data may now do so unconditionally in emummc, and in sysmmc if allow_writing_to_cal_sysmmc=1 is set in exosphere.ini.
        • Please note: This is heavily discouraged, and the typical user will almost never want to do this.
        • Setting this option will cause Atmosphere to attempt to verify (or create) an encrypted backup of the PRODINFO data to an unused region in the partition.
          • The backup is encrypted with per-console keys that Atmosphere's developers do not know.
        • If the backup is not verified or created, writes will not work. Users who have corrupted their PRODINFO in the past are encouraged to flash a good backup to allow use of this setting.
        • Reads and writes to the region used for the securely encrypted backup will appear to succeed, but will actually read/write from a buffer filled with garbage in memory.
    • Support will be investigated in the future for supporting booting with fully blanked calibration.
      • This is desirable to allow boot to succeed for users who lost their calibration data due to bricking homebrew before bis protection was implemented.
  • creport has been updated to use the new screenshot APIs added in 9.0.0+.
    • On 10.0.0+, if a crash occurs in an application (not applet or sysmodule) a screenshot will now be automatically saved to the SD card.
    • If the user applies a patch to vi on 9.0.0 (as the command this uses was previously for dev-units only), this can also work on 9.0.0.
  • The new sysmodule pgl added in 10.0.0 was reimplemented.
    • pgl ("Program Launcher", probably) is responsible for managing launched user-processes, previously this was handled by NS.
    • The most exciting thing about pgl is that it finally provides an API for multiple clients to subscribe to process events.
    • Using these new APIs, system modules / other homebrew can subscribe to be notified whenever a process event occurs.
      • This means action can be taken on process launch, process exit, process crash, etc.
    • A slight concern with Nintendo's implementation is that each subscriber object uses 0x448 bytes of memory, and N only reserves 8KB for all allocations in pgl.
    • Atmosphere's implementation uses a 32KB heap, which should not be exhaustible.
    • Atmosphere's implementation has a total memory footprint roughly 0x28000 bytes smaller than Nintendo's.
  • A reimplementation was added for the jpegdec system module (thanks @HookedBehemoth)!
    • This allows two sessions instead of 1, so homebrew can now use it for software jpeg decoding in addition to the OS itself.
    • As usual the implementation has a very slightly smaller memory footprint than Nintendo's.
  • dmnt's Cheat VM was extended to add three new opcodes.
    • The first new opcode, "ReadWriteStaticRegister", allows for cheats to read from a bank of 128 read-only static registers, and write to a bank of 128 write-only static registers.
      • This can be used in concert with new IPC commands that allow a cheat manager to read or write the value of these static registers to have "dynamic" cheats.
        • As an example, a cheat manager could write a value to a static register that a cheat to control how many of an item to give in a game.
        • As another example, a cheat manager could read a static register that a cheat writes to to learn how many items a player has.
  • The second and third opcodes are a pair, "PauseProcess" and "ResumeProcess".
    • Executing pause process in a cheat will pause the game (it will be frozen) until a resume process opcode is used.
      • These are also available over IPC, for cheat managers or system modules that want to pause or resume the attached cheat process.
    • This allows a cheat to know that the game won't modify or access data the cheat is accessing.
      • For example, this can be used to prevent Pokemon from seeing a pokemon a cheat is in the middle of injecting and turning it into a bad egg.
  • A bug was fixed that would cause the console to crash when connected to Wi-Fi on versions between 3.0.0 and 4.1.0 inclusive.
  • A bug was fixed that could cause boot to fail sporadically due to cache/tlb mismanagement when doing physical ASLR of the kernel.
  • A number of other minor issues were addressed (and more of Atmosphere was updated to reflect other changes in 10.0.x).
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.12, please see the official release notes.

Atmosphere - Atmosphère 0.11.1

Published by SciresM over 4 years ago

0.11.1 is Atmosphère's thirtieth official release.

fusee-primary was last updated in: 0.11.1.

With thanks to the @switchbrew team, Atmosphère 0.11.1 is bundled with hbl 2.3.1, and hbmenu 3.3.0.

The following was changed since the last release:

  • A bug was fixed that could cause owls to flicker under certain circumstances.
    • For those interested in technical details, in 10.0.0 kernelldr/kernel no longer set cpuactlr_el1, assuming that it was set correctly by the secure monitor.
    • However, exosphere did not set cpuactlr_el1. This meant that the register held the reset value going into boot.
    • This caused a variety of highly erratic symptoms, including causing basically any game to crash seemingly randomly.
  • A number of other major inaccuracies in exosphere were corrected.
  • General system stability improvements to enhance the user's experience.

The changelog for the previous release, 0.11.0 is as follows:

  • Support was added for 10.0.0.
    • Exosphere has been updated to reflect the new key import semantics in 10.0.0.
    • kernel_ldr now implements physical ASLR for the kernel's backing pages.
    • Loader, NCM, and PM have been updated to reflect the changes Nintendo made in 10.0.0.
    • Creport was updated to use the new pgl service to terminate processes instead of ns:dev.
  • A reimplementation of the erpt (error reports) system module was added.
    • In previous versions of Atmosphere, a majority of error reports were prevented via a combination of custom creport, fatal, and stubbed eclct.
    • However, error reports were still generated via some system actions.
      • Most notably, any time the error applet appeared, an error report was generated.
      • By default, atmosphere disabled the uploading of error reports, but going online in OFW after an error report occurred in Atmosphere could lead to undesirable telemetry.
    • Atmosphere's erpt reimplementation allows the system to interact with existing error reports as expected.
    • However, all new error reports are instead saved to the sd card (/atmosphere/erpt_reports), and are not committed to the system savegame.
      • Users curious about what kind of telemetry is being prevented can view the reports as they're generated in there.
      • Reports are saved as msgpack (as this is what Nintendo uses).
    • Please note, not all telemetry is disabled. Play reports and System reports will continue to function unmodified.
    • With atmosphere's erpt implementation, homebrew can now use the native error applet to display errors without worrying about generating undesirable telemetry.
  • libstratosphere and libvapours received a number of improvements.
    • With thanks to @Adubbz for his work, the NCM namespace now has client code.
      • This lays the groundwork for first-class system update/downgrade homebrew support in the near future.
    • In particular, code implementing the os namespace is significantly more accurate.
    • In addition, Nintendo's allocators were implemented, allowing for identical memory efficiency versus Nintendo's implementations.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.11, please see the official release notes.

Atmosphere - Atmosphère 0.11.0 (pre-release)

Published by SciresM over 4 years ago

0.11.0 is Atmosphère's twenty-ninth official release.

fusee-primary was last updated in: 0.11.0.

With thanks to the @switchbrew team, Atmosphère 0.11.0 is bundled with hbl 2.3.1, and hbmenu 3.3.0.

Please note: Atmosphère 0.11.0 is currently in pre-release.

  • If any bugs are reported while Atmosphère is in pre-release, they will be fixed and the build will be updated.
  • 0.11.0 will transition to release after a short amount of time has passed without pressing bug reports.

The following was changed since the last release:

  • Support was added for 10.0.0.
    • Exosphere has been updated to reflect the new key import semantics in 10.0.0.
    • kernel_ldr now implements physical ASLR for the kernel's backing pages.
    • Loader, NCM, and PM have been updated to reflect the changes Nintendo made in 10.0.0.
    • Creport was updated to use the new pgl service to terminate processes instead of ns:dev.
  • A reimplementation of the erpt (error reports) system module was added.
    • In previous versions of Atmosphere, a majority of error reports were prevented via a combination of custom creport, fatal, and stubbed eclct.
    • However, error reports were still generated via some system actions.
      • Most notably, any time the error applet appeared, an error report was generated.
      • By default, atmosphere disabled the uploading of error reports, but going online in OFW after an error report occurred in Atmosphere could lead to undesirable telemetry.
    • Atmosphere's erpt reimplementation allows the system to interact with existing error reports as expected.
    • However, all new error reports are instead saved to the sd card (/atmosphere/erpt_reports), and are not committed to the system savegame.
      • Users curious about what kind of telemetry is being prevented can view the reports as they're generated in there.
      • Reports are saved as msgpack (as this is what Nintendo uses).
    • Please note, not all telemetry is disabled. Play reports and System reports will continue to function unmodified.
    • With atmosphere's erpt implementation, homebrew can now use the native error applet to display errors without worrying about generating undesirable telemetry.
  • libstratosphere and libvapours received a number of improvements.
    • With thanks to @Adubbz for his work, the NCM namespace now has client code.
      • This lays the groundwork for first-class system update/downgrade homebrew support in the near future.
    • In particular, code implementing the os namespace is significantly more accurate.
    • In addition, Nintendo's allocators were implemented, allowing for identical memory efficiency versus Nintendo's implementations.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.11, please see the official release notes.

Atmosphere - Atmosphère 0.10.5

Published by SciresM over 4 years ago

0.10.5 is Atmosphère's twenty-eighth official release.

fusee-primary was last updated in: 0.10.4.

With thanks to the @switchbrew team, Atmosphère 0.10.5 is bundled with hbl 2.3, and hbmenu 3.2.0.

The following was changed since the last release:

  • Changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
    • Building romfs metadata previously had a memory cost of about ~4-5x the file table size.
    • This caused games that have particularly enormous file metadata tables (> 4 MB) to exhaust fs.mitm's 16 MB memory pool.
    • The code that creates romfs images was thus changed to be significantly more memory efficient, again.
    • Memory requirements have been lowered from ~4x file table size to ~2x file table size + 0.5 MB.
    • There is a slight speed penalty to this, but testing on Football Manager 2020 only took an extra ~1.5 seconds for the game to boot with many modded files.
      • This shouldn't be noticeable thanks to the async changes made in 0.10.2.
    • If you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact SciresM.
      • Romfs building can be made even more memory efficient, but unless games show up with even more absurdly huge file tables it seems not worth the speed trade-off.
  • A bug was fixed that caused Atmosphere's fatal error context to not dump TLS for certain processes.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10, please see the official release notes.

Atmosphere - Atmosphère 0.10.4

Published by SciresM over 4 years ago

0.10.4 is Atmosphère's twenty-seventh official release.

fusee-primary was last updated in: 0.10.4.

With thanks to the @switchbrew team, Atmosphère 0.10.4 is bundled with hbl 2.3, and hbmenu 3.2.0.

The following was changed since the last release:

  • With major thanks to @Adubbz for his work, the NCM system module has now been re-implemented.
    • This was a major stepping stone towards the goal of having implementations of everything in the Switch's package1/package2 firmware.
    • This also lays the groundwork for libstratosphere providing bindings for changing the installed version of the Switch's OS.
    • Please Note: The NCM implementation will initially be opt-in.
      • The Atmosphere team is confident in our NCM implementation (and we have tested it on every firmware version).
      • That said, this is our first system module that manages NAND savegames -- and caution is a habit.
      • We do not anticipate any issues that didn't come up in testing, so this is just our being particularly careful.
      • Users interested in opting in to using our implementation should set stratosphere!ncm_enabled = 1 in BCT.ini.
        • In the unlikely event that any issues are encountered, please report them to @SciresM.
      • The NCM implementation will stop being opt-in in a future update, after thorough testing has been done in practice.
  • A bug was fixed in emummc that caused Nintendo path to be corrupted on 1.0.0.
    • This manifested as the emummc folder being created inside the virtual NAND instead of the SD card.
    • It's unlikely there are any negative consequences to this in practice.
      • If you want to be truly sure, you can re-clone sysmmc before updating a 1.0.0 emummc to latest firmware.
  • Stratosphere system modules now use new Nintendo-style FS bindings instead of stdio.
    • This saves a modest amount of memory due to leaner code, and greatly increases the accuracy of several components.
    • These bindings will make it easier for other system modules using libstratosphere to interact with the filesystem.
    • This also lays the groundwork for changes necessary to support per-emummc Atmosphere folders in a future update.
  • Atmosphere's fatal error context now dumps 0x100 of TLS.
    • This will make it much easier to fix bugs when an error report is dumped for whatever caused the crash.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10, please see the official release notes.

Atmosphere - Atmosphère 0.10.3

Published by SciresM over 4 years ago

0.10.3 is Atmosphère's twenty-sixth official release.

fusee-primary was last updated in: 0.10.3.

With thanks to the @switchbrew team, Atmosphère 0.10.3 is bundled with hbl 2.3, and hbmenu 3.2.0.

The following was changed since the last release:

  • Support was added for 9.2.0.
  • Support was added for redirecting manual html content for games.
    • This works like normal layeredfs, replacing content placed in /atmosphere/contents/<program id>/manual_html/.
    • This allows for game mods/translations to provide custom manual content, if they so choose.
  • A number of improvements were made to Atmosphere's memory usage, including:
    • fatal now uses STB instead of freetype for rendering.
      • This saves around 1 MB of memory, and makes our fatal substantially leaner than Nintendo's.
    • sm no longer wastes 2 MiB unnecessarily.
  • fusee/sept's sdmmc access now better matches official behavior.
    • This improves compatibility with some SD cards.
  • ro has been updated to reflect changes made in 9.1.0.
  • The temporary auto-migration added in 0.10.0 has been removed, since the transitionary period is well over.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10.0, please see the official release notes.

Atmosphere - Atmosphère 0.10.2

Published by SciresM almost 5 years ago

0.10.2 is Atmosphère's twenty-fifth official release.

fusee-primary was last updated in: 0.10.2.

With thanks to the @switchbrew team, Atmosphère 0.10.2 is bundled with hbl 2.3, and hbmenu 3.2.0.

The following was changed since the last release:

  • hbl configuration was made more flexible.
    • Up to eight specific program ids can now be specified to have their own override keys.
    • This allows designating both the album applet and a specific game as hbl by default as desired.
    • Configuration targeting a specific program is now mutually exclusive with override-any-app for that program.
      • This fixes unintuitive behavior when override key differed for an application specific program.
  • Loader's external content fileystem support was fixed (thanks @misson20000!).
  • KernelLdr was reimplemented.
    • This is the first step towards developing mesosphere, Atmosphere's planned reimplementation of the Switch's Kernel.
    • The typical user won't notice anything different, as there are no extensions, but a lot of groundwork was laid for future development.
  • Improvements were made to the way Atmosphere's buildsystem detects source code files.
    • This significantly reduces compilation time (saving >30 seconds) on the machine that builds official releases.
  • Certain device code was cleaned up and made more correct in fusee/sept/exosphere (thanks @hexkyz!).
  • A number of changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
    • Some games (Resident Evil 6, Football Manager 2020 Touch, possibly others) have enormous numbers of files.
    • Attempting to create a layeredfs mod for these games actually caused fs.mitm to run out of memory, causing a fatal error.
    • The code that creates these images was changed to be significantly more memory efficient.
    • However, these changes also cause a significant slowdown in the romfs building code (~2-5x).
    • This introduced a noticeable stutter when launching a game, because the UI thread would block on the romfs creation.
    • To solve this, fs.mitm now lazily initializes the image in a background thread.
    • This fixes stutter issues, however some games may be slightly slower (~1-2s in the worst cases) to transition from the "loading" GIF to gameplay now.
      • Please note: the slowdown is not noticeable in the common case where games don't have tons of files (typical is ~0.1-0.2 seconds).
      • Once the image has been built, there is no further speed penalty at runtime -- only when the game is launched.
  • A number of other bugs were fixed, including:
    • Several minor logic inversions that could have caused fatal errors when modding games.
    • Atmosphere's new-ipc code did not handle "automatic" recvlist buffers correctly, so some non-libnx homebrew could crash.
    • fs.mitm now correctly mitms sdb, which makes redirection of certain system data archives work again.
      • In 0.10.0/0.10.1, changing the system font/language did not work correctly due to this.
    • A bug was fixed in process cleanup that caused the system to hang on < 5.0.0.
  • The temporary hid-mitm added in Atmosphere 0.9.0 was disabled by default.
    • Please ensure your homebrew is updated.
    • For now, users may re-enable this mitm by use of a custom setting (atmosphere!enable_deprecated_hid_mitm) to ease the transition process some.
      • As usual, edit the atmosphere section of /atmosphere/config/system_settings.ini if you wish to do so.
    • Please note: support for this setting may be removed to save memory in a future atmosphere release.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10.0, please see the official release notes.

Atmosphere - Atmosphère 0.10.1

Published by SciresM almost 5 years ago

0.10.1 is Atmosphère's twenty-fourth official release.

fusee-primary was last updated in: 0.10.0.

With thanks to the @switchbrew team, Atmosphère 0.10.1 is bundled with hbl 2.3, and hbmenu 3.2.0.

The following was changed since the last release:

  • A bug was fixed that caused memory reallocation to the system pool to work improperly on firmware 5.0.0 and above.

    • Atmosphere was always trying to deallocate memory away from the applet pool and towards the system pool.
      • The intent of this is to facilitate running more custom sysmodules/atmosphere binaries.
    • However, while memory was always successfully taken away from the applet pool, on 5.0.0+ granting it to the system pool did not work for technical reasons.
      • If you are interested in the technical details, talk to SciresM.
    • This has now been fixed by adding new kernel patches, and memory is correctly granted to the system pool as intended.
  • Atmosphere's library system has been overhauled:

    • libstratosphere's repository has been rebranded, more generally, to "Atmosphere-libs".
      • In addition to libstratosphere, a new general library for not-stratosphere-specific code has been added.
        • This is currently named libvapours.
      • In the future, kernel functionality will be available as libmesosphere.
    • The build system for stratosphere system modules has been similarly overhauled.
  • The boot system module is now loaded into non-secure memory.

    • This helps somewhat to prevent fragmentation of the system memory heap.
  • A number of other bugs were fixed, including:

    • A bug was fixed that could cause memory corruption when redirecting certain Romfs content.
    • A bug was fixed that could cause an infinite loop when redirecting certain Romfs content.
    • A bug was fixed that could cause certain NROs to fail to load.
      • This caused the latest version of Super Smash Bros to display "An error has occurred" on launch.
    • A bug was fixed that caused input/output array sizes for certain circumstances to be calculated incorrectly.
      • This caused cheats to fail to function properly.
    • C++ exception code is now more thoroughly removed from stratosphere executables.
      • This saves a minor amount of memory.
    • A number of minor logic inversions were fixed in libstratosphere.
      • These did not affect any code currently used by released Atmosphere binaries.
  • Please note: Because this update is releasing so soon after 0.10.0, the removal of the temporary hid-mitm has been postponed to 0.10.2.

    • Please ensure your homebrew is updated.
  • Random number generation now uses TinyMT instead of XorShift.

  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10.0, please see the official release notes.

Atmosphere - Atmosphère 0.10.0

Published by SciresM almost 5 years ago

0.10.0 is Atmosphère's twenty-third official release.

fusee-primary was last updated in: 0.10.0.

With thanks to the @switchbrew team, Atmosphère 0.10.0 is bundled with hbl 2.2, and hbmenu 3.1.1.

  • Please note: Atmosphère 0.10.0 is currently in pre-release.
    • If any bugs are reported while Atmosphère is in pre-release, they will be fixed and the build will be updated.
    • 0.10.0 will transition to release after a short amount of time has passed without pressing bug reports.

The following was changed since the last release:

  • Support was added for 9.1.0
    • Please note: The temporary hid-mitm added in Atmosphere 0.9.x will be removed in Atmosphere 0.10.1.
      • Please ensure your homebrew is updated.
  • The Stratosphere rewrite was completed.
    • libstratosphere was rewritten as part of Stratosphere's refactor.
      • Code responsible for providing and managing IPC services was greatly improved.
        • The new code is significantly more accurate (it is bug-for-bug compatible with Nintendo's code), and significantly faster.
    • ams.mitm was rewritten as part of Stratosphere's refactor.
      • Saves redirected to the SD card are now separated for sysmmc vs emummc.
      • Please note: If you find any bugs, please report them so they can be fixed.
  • Thanks to the rewrite, Atmosphere now uses significantly less memory.
    • Roughly 10 additional megabytes are now available for custom system modules to use.
    • This means you can potentially run more custom system modules simultaneously.
      • If system modules are incompatible, please ask their authors to reduce their memory footprints.
  • Atmosphere's configuration layout has had major changes.
    • Configuration now lives inside /atmosphere/config/.
    • Atmosphere code now knows what default values should be, and includes them in code.
      • It is no longer an error if configuration inis are not present.
    • Correspondingly, Atmosphere no longer distributes default configuration inis.
      • Templates are provided in /atmosphere/config_templates.
    • loader.ini was renamed to override_config.ini.
    • This fixes the longstanding problem that atmosphere updates overwrote user configuration when extracted.
  • Atmosphere's process override layout was changed.
    • Atmosphere now uses the /atmosphere/contents directory, instead of /atmosphere/titles.
      • This goes along with a refactoring to remove all reference to "title id" from code, as Nintendo does not use the term.
    • To make this transition easier, a temporary functionality has been added that migrates folders to the new directory.
      • When booting into 0.10.0, Atmosphere will rename /atmosphere/titles/<program id> to /atmosphere/contents/<program id>.
        • This functionality may or may not be removed in some future update.
      • This should solve any transition difficulties for the typical user.
      • Please make sure that any future mods you install extract to the correct directory.
  • Support for configuring override keys for hbl was improved.
    • The key used to override applications versus a specific program can now be different.
      • The key to override a specific program can be managed via override_key.
      • The key to override any app can be managed via override_any_app_key.
    • Default override behavior was changed.
      • By default, atmosphere will now override the album applet with hbl unless R is held.
      • By default, atmosphere will now override any application with hbl only if R is held.
  • The default amount of applet memory reserved has been slightly increased.
    • This allows the profile selector applet to work by default in applet mode.
  • The way process override status is captured was changed.
    • Process override keys are now captured exactly once, when the process is created.
      • This fixes the longstanding issue where letting go of the override button partway into the process launch could cause problems.
    • The Mitm API was changed to pass around override status.
      • Mitm services now know what keys were held when the client was created, as well as whether the client is HBL/should override contents.
    • An extension was added to pm:info to allow querying a process's override status.
  • Thanks to process override capture improvements, hbl html behavior has been greatly improved.
    • Web applets launched by hbl will now always see the /atmosphere/hbl_html filesystem
  • Support was added to exosphere for enabling usermode access to the PMU registers.
    • This can be controlled via exosphere!enable_user_pmu_access in BCT.ini.
  • An enormous number of minor bugs were fixed.
    • dmnt's cheat VM had a fix for an inversion in opcode behavior.
    • An issue was fixed in fs.mitm's management of domain object IDs that could lead to system corruption in rare cases.
    • The Mitm API no longer silently fails when attempting to handle commands passing C descriptors.
      • On previous atmosphere versions, certain commands to FS would silently fail due to this...
        • No users reported any visible errors, but it was definitely a problem behind the scenes.
      • These commands are now handled correctly.
    • Atmosphere can now display a fatal error screen significantly earlier in the boot process, if things go wrong early on.
    • The temporary hid mitm will no longer sometimes cause games to fail to detect input.
    • Mitm Domain object ID management no longer desynchronizes from the host process.
    • An issue was fixed that could cause service acquisition to hang forever if certain sm commands were called in a precise order.
    • An off-by-one was fixed that could cause memory corruption in server memory management.
    • ... and too many more bugs fixed to reasonably list them all :)
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10.0, please see the official release notes.

Atmosphere - Atmosphère 0.9.4

Published by SciresM about 5 years ago

0.9.4 is Atmosphère's twenty-second official release.

fusee-primary was last updated in: 0.9.3.

With thanks to the @switchbrew team, Atmosphère 0.9.4 is bundled with hbl 2.2, and hbmenu 3.1.1.

The following was changed since the last release:

  • Support was added for 9.0.0.
    • Please note: 9.0.0 made a number of changes that may cause some issues with homebrew. Details:
    • 9.0.0 changed HID in a way that causes libnx to be unable to detect button input.
      • Homebrew should be recompiled with newest libnx to fix this.
      • Atmosphere now provides a temporary hid-mitm that will cause homebrew to continue to work as expected.
        • This mitm will be removed in a future Atmosphere revision once homebrew has been updated, to allow users to use a custom hid mitm again if they desire.
    • 9.0.0 introduced an dependency in FS on the USB system module in order to launch the SD card.
      • This means the USB system module must now be launched before the SD card is initialized.
      • Correspondingly, the USB system module can no longer be IPS patched, and its settings cannot be reliably mitm'd.
      • We know this is frustrating, so we'll be looking into whether there is some way of addressing this in the future.
    • Please note: 9.0.0 updated the switch's gamecart controller ("lotus") firmware.
      • To prevent the burning of lotus fuses, Atmosphere now applies nogc patches when booting into 9.0.0 with fuses below 9.0.0.
      • If you wish to play gamecarts on 9.0.0 (but forever prevent yourself from playing them on < 9.0.0), set nogc = 0 in BCT.ini.
  • An off-by-one error was fixed in boot system module's pinmux initialization.
    • This could theoretically have caused issues with HdmiCec communication.
    • No users reported issues, so it's unclear if this was a problem in practice.
  • A bug was fixed that could cause webapplet launching homebrew to improperly set the accessible url whitelist.
  • BIS key generation has been fixed for newer hardware.
    • Newer hardware uses new, per-firmware device key to generate BIS keys instead of the first device key, so previously the wrong keys were generated as backup.
    • This only affects units manufactured after ~5.0.0.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.9.0, please see the official release notes.

Atmosphere - Atmosphère 0.9.3

Published by SciresM about 5 years ago

0.9.3 is Atmosphère's twenty-first official release.

fusee-primary was last updated in: 0.9.3.

With thanks to the @switchbrew team, Atmosphère 0.9.3 is bundled with hbl 2.2, and hbmenu 3.1.0.

The following was changed since the last release:

  • Thanks to hexkyz, fusee's boot sequence has been greatly optimized.
    • Memory training is now managed by a separate binary (fusee-mtc, loaded by fusee-primary before fusee-secondary).
    • Unnecessarily long splash screen display times were reduced.
    • The end result is that Atmosphere now boots significantly faster. :)
    • Note: This means fusee-primary must be updated for Atmosphere to boot successfully.
  • The version string was adjusted, and now informs users whether or not they are using emummc.
  • Atmosphere now automatically backs up the user's BIS keys on boot.
    • This should prevent a user from corrupting nand without access to a copy of the keys needed to fix it.
      • This is especially relevant on ipatched units, where the RCM vulnerability is not an option for addressing bricks.
  • The pm system module was rewritten as part of Stratosphere's ongoing refactor.
    • Support was added for forward-declaring a mitm'd service before a custom user sysmodule is launched.
      • This should help resolve dependency issues with service registration times.
    • SM is now informed of every process's title id, including built-in system modules.
  • The creport system module was rewritten as part of Stratosphere's ongoing refactor.
    • creport now dumps up to 0x100 of stack from each thread in the target process.
    • A few bugs were fixed, including one that caused creport to incorrectly dump process dying messages.
  • Defaults were added to system_settings.ini for controlling hbloader's memory usage in applet mode.
    • These defaults reserve enough memory so that homebrew can launch swkbd while in applet mode.
  • The fatal system module was rewritten as part of Stratosphere's ongoing refactor.
    • Incorrect display output ("2000-0000") has been fixed. Fatal will now correctly show 2162-0002 when this occurs.
    • A longstanding bug in how fatal manages the displays has been fixed, and official display init behavior is now matched precisely.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.9.0, please see the official release notes.

Atmosphere - Atmosphère 0.9.2

Published by SciresM over 5 years ago

0.9.2 is Atmosphère's twentieth official release.

fusee-primary was last updated in: 0.9.2.

With thanks to the @switchbrew team, Atmosphère 0.9.2 is bundled with hbl 2.1, and hbmenu 3.0.1.

The following was changed since the last release:

  • A number of emummc bugfixes were added (all thanks to @m4xw's hard work). The following is a summary of emummc changes:
    • Support for file-based emummc instances was fixed.
      • Please note: file-based emummc is still unoptimized, and so may be much slower than partition-based.
      • This speed differential should hopefully be made better in a future emummc update.
    • The way emummc handles power management was completely overhauled.
      • Emummc now properly handles init/de-init, and now supports low voltage mode.
      • Much better support for shutdown was added, which should assuage corruption/synchronization problems.
      • This should also improve support for more types of SD cards.
    • A bug was fixed that caused emummc to not work on lower system versions due to missing SVC access.
    • Please note: The configuration entries used for emummc have been changed.
      • emummc_ prefixes have been removed, since they are superfluous given the emummc category they are under.
      • As an example, emummc!emummc_enabled is now emummc!enabled.
      • INI configurations made by @CTCaer's tool (which is the recommended way to manage emummc) should automatically work as expected/be corrected.
        • If you do not wish to use the above, you will need to manually correct your configuration file.
    • General system stability improvements to enhance the user's experience.
  • Stratosphere is currently in the process of being re-written/refactored.
    • Stratosphere was my (SciresM's) first C++ project, ever -- the code written for it a year ago when I was learning C++ is/was of much lower quality than code written more recently.
    • Code is thus being re-written for clarity/style/to de-duplicate functionality, with much being moved into libstratosphere.
    • Stratosphere will, after the rewrite, globally use the sts:: namespace -- this should greatly enhancing libstratosphere's ability to provide functionality for system modules.
    • The rewritten modules consistently have lower memory footprints, and should be easier to maintain going forwards.
    • The sm, boot, spl, ro, and loader modules have been tackled so far.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.9.0, please see the official release notes.

Atmosphere - Atmosphère 0.9.1

Published by SciresM over 5 years ago

0.9.1 is Atmosphère's nineteenth official release.

fusee-primary was last updated in: 0.9.1.

With thanks to the @switchbrew team, Atmosphère 0.9.1 is bundled with hbl 2.1, and hbmenu 3.0.1.

The following was changed since the last release:

  • Support was added for 8.1.0.
  • Please note, emummc is still considered beta/experimental -- this is not the inevitable bugfix update for it, although some number of bugs have been fixed. :)
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.9.0, please see the official release notes.