atmosphere-1.7.1 整合包
atmosphere 1.7.1
fusee 1.7.1
hekate_ctcaer v6.2.2 Hekate + Nyx 简体中文
CommonProblemResolver v0.3.5 Hekate下删除主题和关闭插件自动启动
Switch_90DNS_tester 联网检测是否屏蔽任天堂服务器
DBI 720ru 游戏安装,存档管理和文件传输工具
Awoo-Installer 1.4.0 游戏安装和文件传输工具
HekateToolbox v4.0.3 深海工具箱
NX-Activity-Log 游戏游玩时间记录工具
NXThemesInstaller v4.7.1 主题安装工具
JKSV 11/05/2024 游戏存档管理工具
tencent-switcher-gui 0.1.1 系统切换工具
aio-switch-updater 2.23.2 多工具合一任天堂Switch更新器,用于下载和更新CFW、FW 和作弊码
wiliwili v1.5.0 第三方B站客户端
SimpleModDownloader 2.1.0 Mod下载器
Switchfin 0.5.3 Jellyfin客户端
Moonlight-Switch v1.2.2 串流工具
NX-Shell 文件管理
appstore v2.3.2 黑商店
daybreak_x 系统升级工具
themes 主题破解
nx-ovlloader Ultrahand 加载器
lang v1.8.2 Ultrahand 中文
ovlmenu v1.8.2 Ultrahand 菜单
sigpatches Sigpatches AMS
logo 菜单图标美化
EdiZon 金手指工具
ovl-sysmodules 系统模块
StatusMonitor 系统监视
ReverseNX-RT 掌机底座模式切换
ldn_mitm 局域网联机
emuiibo 虚拟Amiibo
QuickNTP 时间同步
Fizeau 色彩调整
Zing 金手指工具
sys-tune v2.0.0 系统补丁
sys-patch v1.5.4 后台音乐
MissionControl v0.12.0 蓝牙手柄插件
Atmosphère 1.8.0
**1.8.0** is Atmosphère's eightieth official release.
**Please be sure to update fusee when upgrading to 1.8.0**. fusee-primary no longer exists, and will not work any more.
**Please note**: Atmosphère 1.8.0 is currently in pre-release, and issues may be found that need to be fixed before full release.
* If any bugs are reported while Atmosphère is in pre-release, they will be fixed and the build will be updated.
* 1.8.0 will transition to release after a short amount of time has passed without pressing bug reports.
With thanks to the @switchbrew team, Atmosphère 1.8.0 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.4, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.6.0.
The following was changed since the last release:
* Basic support was added for 19.0.0.
* The console should boot and atmosphère should be fully functional. However, not all modules have been fully updated to reflect the latest changes.
* There shouldn't be anything user visible resulting from this, but it will be addressed in a future atmosphère update. There is still one action item from 18.0.0 to be addressed, as well.
* `exosphère` was updated to reflect the latest official secure monitor behavior.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `loader` was updated to reflect the latest official behavior.
* `pm` was updated to reflect the latest official behavior.
* `ro` was updated to reflect the latest official behavior.
* `creport`'s file acces patterns were optimized, greatly improving performance when generating a crash report.
* Atmosphère now uses `relr` relocations where possible.
* This reduces the filesize of a number of atmosphère's modules.
* A number of minor issues were fixed and improvements were made, including:
* Support was fixed for running Atmosphère on newer units with specific Hynix/Micron DRAM chips.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.8, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.8.0-prerelease).
Atmosphère 1.7.1
**1.7.1** is Atmosphère's seventy-ninth official release.
**Please be sure to update fusee when upgrading to 1.7.1**. fusee-primary no longer exists, and will not work any more.
**Note**: `fusee.bin` was updated on 2024/06/11 at 10:30 AM PDT to fix a failure to apply nogc patches on 18.1.0. The updated fusee hash a sha256 hash prefix of `6c0445649c...`
With thanks to the @switchbrew team, Atmosphère 1.7.1 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.4, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.6.0.
The following was changed since the last release:
* Support was added for 18.1.0.
* Atmosphère was updated to use GCC 14/newlib (latest devkitA64/devkitARM releases).
* Further changes were for 18.0.0:
* `loader` was updated to reflect the latest official behavior.
* General system stability improvements to enhance the user's experience.
And the following was changed in 1.7.0:
* Basic support was added for 18.0.0.
* The console should boot and atmosphère should be fully functional. However, not all modules have been fully updated to reflect the latest changes.
* There shouldn't be anything user visible resulting from this, but it will be addressed in a future atmosphère update, once I am not traveling so much.
* `exosphère` was updated to reflect the latest official secure monitor behavior.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `spl` was updated to reflect the latest official behavior.
* `fusee` no longer supports applying IPS patches to KIPs.
* The only KIPs that are ever present are a) atmosphère modules, b) custom system modules, or c) FS.
* The IPS subsystem was originally designed to make nogc patches work for FS, but these are now internal, and it appears the literal only kip patches that exist are for piracy.
* I could not find any kip patches posted anywhere made for any other purpose.
* It fundamentally does not make sense to slow down boot for every normal user for a feature that has no actual use-case, especially when `fusee` seeks to be a minimal bootloader.
* Minor improvements were made to atmosphere's gdbstub, including:
* Support was added for QStartNoAckMode.
* An issue was fixed that could cause a fatal error when creating too many breakpoints.
* A number of minor issues were fixed and improvements were made, including:
* `pt-BR` (`PortugueseBr`) is now accepted as a valid language when overriding game locales.
* A bug was fixed that could cause atmosphere to incorrectly serialize output object IDs over IPC when using domain objects.
* A bug was fixed in `pm`'s resource limit boost logic that could potentially cause legitimate boosts to fail in certain circumstances.
* `loader`/`ro` will now throw a fatal error when using invalid IPS patches that go out of bounds, instead of corrupting memory.
* Support was fixed for booting using a memory configuration of half of the true available memory (e.g. forcing a 4GB configuration on an 8GB board).
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.7, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.7.0-prerelease).
Atmosphère 1.7.0
**1.7.0** is Atmosphère's seventy-eighth official release.
**Please be sure to update fusee when upgrading to 1.7.0**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.7.0 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.4, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.6.0.
The following was changed since the last release:
* Basic support was added for 18.0.0.
* The console should boot and atmosphère should be fully functional. However, not all modules have been fully updated to reflect the latest changes.
* There shouldn't be anything user visible resulting from this, but it will be addressed in a future atmosphère update, once I am not traveling so much.
* `exosphère` was updated to reflect the latest official secure monitor behavior.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `spl` was updated to reflect the latest official behavior.
* `fusee` no longer supports applying IPS patches to KIPs.
* The only KIPs that are ever present are a) atmosphère modules, b) custom system modules, or c) FS.
* The IPS subsystem was originally designed to make nogc patches work for FS, but these are now internal, and it appears the literal only kip patches that exist are for piracy.
* I could not find any kip patches posted anywhere made for any other purpose.
* It fundamentally does not make sense to slow down boot for every normal user for a feature that has no actual use-case, especially when `fusee` seeks to be a minimal bootloader.
* Minor improvements were made to atmosphere's gdbstub, including:
* Support was added for QStartNoAckMode.
* An issue was fixed that could cause a fatal error when creating too many breakpoints.
* A number of minor issues were fixed and improvements were made, including:
* `pt-BR` (`PortugueseBr`) is now accepted as a valid language when overriding game locales.
* A bug was fixed that could cause atmosphere to incorrectly serialize output object IDs over IPC when using domain objects.
* A bug was fixed in `pm`'s resource limit boost logic that could potentially cause legitimate boosts to fail in certain circumstances.
* `loader`/`ro` will now throw a fatal error when using invalid IPS patches that go out of bounds, instead of corrupting memory.
* Support was fixed for booting using a memory configuration of half of the true available memory (e.g. forcing a 4GB configuration on an 8GB board).
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.7, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.7.0-prerelease).
Atmosphère 1.7.0
**1.7.0** is Atmosphère's seventy-eighth official release.
**Please be sure to update fusee when upgrading to 1.7.0**. fusee-primary no longer exists, and will not work any more.
**Please note**: Atmosphère 1.7.0 is currently in pre-release, and issues may be found that need to be fixed before full release.
* If any bugs are reported while Atmosphère is in pre-release, they will be fixed and the build will be updated.
* 1.7.0 will transition to release after a short amount of time has passed without pressing bug reports.
With thanks to the @switchbrew team, Atmosphère 1.7.0 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.4, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.6.0.
The following was changed since the last release:
* Basic support was added for 18.0.0.
* The console should boot and atmosphère should be fully functional. However, not all modules have been fully updated to reflect the latest changes.
* There shouldn't be anything user visible resulting from this, but it will be addressed in a future atmosphère update, once I am not traveling so much.
* `exosphère` was updated to reflect the latest official secure monitor behavior.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `spl` was updated to reflect the latest official behavior.
* `fusee` no longer supports applying IPS patches to KIPs.
* The only KIPs that are ever present are a) atmosphère modules, b) custom system modules, or c) FS.
* The IPS subsystem was originally designed to make nogc patches work for FS, but these are now internal, and it appears the literal only kip patches that exist are for piracy.
* I could not find any kip patches posted anywhere made for any other purpose.
* It fundamentally does not make sense to slow down boot for every normal user for a feature that has no actual use-case, especially when `fusee` seeks to be a minimal bootloader.
* Minor improvements were made to atmosphere's gdbstub, including:
* Support was added for QStartNoAckMode.
* An issue was fixed that could cause a fatal error when creating too many breakpoints.
* A number of minor issues were fixed and improvements were made, including:
* `pt-BR` (`PortugueseBr`) is now accepted as a valid language when overriding game locales.
* A bug was fixed that could cause atmosphere to incorrectly serialize output object IDs over IPC when using domain objects.
* A bug was fixed in `pm`'s resource limit boost logic that could potentially cause legitimate boosts to fail in certain circumstances.
* `loader`/`ro` will now throw a fatal error when using invalid IPS patches that go out of bounds, instead of corrupting memory.
* Support was fixed for booting using a memory configuration of half of the true available memory (e.g. forcing a 4GB configuration on an 8GB board).
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.7, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.7.0-prerelease).
Atmosphère 1.6.2
**1.6.2** is Atmosphère's seventy-seventh official release.
**Please be sure to update fusee when upgrading to 1.6.2**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.6.2 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.4, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.6.0.
The following was changed since the last release:
* Support was finished for 17.0.0.
* `erpt` was updated to support the latest official behavior.
* `jpegdec` was updated to support the latest official behavior.
* `pm` was updated to support the latest official behavior.
* General system stability improvements to enhance the user's experience.
And the following was changed in 1.6.1:
* An improved solution to [the problem that would cause consoles which had previously re-built their SYSTEM partition to brick on update-to-17.0.0](https://gist.github.com/SciresM/2ddb708c812ed585c4d99f54e25205ff) was added.
* In particular, booting atmosphère will now automatically detect the problem and unbrick any consoles which have fallen into this state.
* Some improvements were made to `haze`, including:
* Performance was greatly improved:
* Support was added for GetObjectPropList, which decreases the amount of requests made by ~8x.
* Haze now performs rendering on the GPU, freeing up the CPU to respond to requests in a more timely manner.
* An issue was fixed with how `haze` configures `bMaxPacketSize0` which improves support for USB3.
* General system stability improvements to enhance the user's experience.
And the following was changed in 1.6.0:
* Basic support was added for 17.0.0.
* The console should boot and atmosphère should be fully functional. However, not all modules have been fully updated to reflect the latest changes.
* There shouldn't be anything user visible resulting from this, but it will be addressed in a soon-to-come atmosphère update.
* `exosphère` was updated to reflect the latest official secure monitor behavior.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `ncm` was updated to reflect the latest official behavior.
* `erpt` was partially updated to support the latest official behavior.
* Atmosphere's gdbstub now supports waiting to attach to a specific program id on launch (as opposed to any application).
* The monitor command for this is `monitor wait <hex program id>`, where program id can optionally have an `0x` prefix.
* Support was added to `haze` for editing files in-place and performing 64-bit transfers (files larger than 4 GB).
* `bpc.mitm` was enabled on Mariko units, and now triggers pmic-based shutdowns/reboots (thanks @CTCaer).
* This should cause the console to no longer wake ~15 seconds after shutdown on Mariko.
* A number of minor issues were fixed and improvements were made, including:
* A workaround was added for a change in 17.0.0 that would cause consoles which had previously re-built their SYSTEM partition to brick on update-to-17.0.0.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.6, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.6.0-prerelease).
Atmosphère 1.6.1
"Atmosphère 1.6.1 预发布
1.6.1 是 Atmosphère 的第七十六个官方版本。
在升级到 1.6.1 时,请务必更新 fusee。fusee-primary 不再存在,将不再起作用。
注意:在 2023 年 10 月 16 日下午 3:40 PDT,发布 zip 中进行了更新,以修复 Windows 上可能无法运行 haze 的问题。更新后的 zip 具有构建哈希值“7f4450f93”。switch/haze.nro
请注意:Atmosphère 1.6.1 目前处于预发布阶段,可能会发现需要在正式发布之前修复的问题。
如果在 Atmosphère 处于预发布阶段时报告了任何错误,它们将被修复并构建将被更新。
1.6.1 将在一段时间内没有重要错误报告的情况下过渡到正式发布。
感谢 @switchbrew 团队,Atmosphère 1.6.1 捆绑了 hbl 2.4.3 和 hbmenu 3.5.1。
自上次发布以来以下内容已更改:
改进了先前可能导致那些之前重建其系统分区的控制台在升级到 17.0.0 时出现故障的问题的解决方案。
特别是,现在启动 Atmosphère 将自动检测问题并修复任何陷入此状态的控制台。
对某些部分进行了改进,包括:haze
性能大幅改进:
添加了对 GetObjectPropList 的支持,减少了请求次数约 8 倍。
Haze 现在在 GPU 上执行渲染,释放 CPU 以更及时地响应请求。
已修复配置方式的问题,以提高对 USB3.haze 最大包大小 0 的支持
一般系统稳定性改进以增强用户体验。
以下是 1.6.0 中的更改:
增加了对 17.0.0 的基本支持。
控制台应该能够启动,Atmosphère 应该能够完全正常运行。但是,并非所有模块都已完全更新以反映最新更改。
用户不应该看到任何可见的结果,但这将在不久的将来的 Atmosphère 更新中解决。
更新 exosphère 以反映最新的官方安全监控行为。
更新 mesosphère 以反映最新的官方内核行为。
更新 ncm 以反映最新的官方行为。
部分更新 erpt 以支持最新的官方行为。
Atmosphere 的 gdbstub 现在支持在启动时等待附加到特定程序 ID(而不是任何应用程序)。
此功能的监视命令是 monitor wait <十六进制程序 ID>,其中程序 ID 可以选择性地带有前缀 0x。
添加了对原地编辑文件和执行 64 位传输(大于 4 GB 的文件)的支持。haze
在 Mariko 单元上启用了 bpc.mitm,并现在触发了基于 pmic 的关闭/重启(感谢 @CTCaer)。
这应该导致控制台在关闭后不再在约 15 秒后唤醒。
修复了一些小问题并进行了改进,包括:
添加了一个解决方案,以应对 17.0.0 中的变化,该变化会导致那些之前重建其系统分区的控制台在升级到 17.0.0 时出现故障。
一般系统稳定性改进以增强用户体验。
有关 1.6 版本支持的功能集的详细信息,请参阅官方发布说明。"
Atmosphère 1.6.0
"**1.6.0** 是 Atmosphère 的第七十五个官方版本。
**在升级到 1.6.0 时,请务必更新 fusee**。fusee-primary 不再存在,将不再起作用。
**请注意**:Atmosphère 1.6.0 目前处于预发布阶段,可能会发现需要在正式发布之前修复的问题。
* 如果在 Atmosphère 处于预发布阶段时报告了任何错误,它们将被修复并构建将被更新。
* 1.6.0 将在一段时间内没有重要错误报告的情况下过渡到正式发布。
感谢 @switchbrew 团队,Atmosphère 1.6.0 捆绑了[hbl](https://github.com/switchbrew/nx-hbloader) 2.4.3 和 [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.1。
自上次发布以来以下内容已更改:
* 增加了对 17.0.0 的基本支持。
* 控制台应该能够启动,Atmosphère应该能够完全正常运行。但是,并非所有模块都已完全更新以反映最新的更改。
* 用户不应该看到任何可见的结果,但这将在不久的将来的 Atmosphère 更新中解决。
* `exosphère` 更新以反映最新的官方安全监控行为。
* `mesosphère` 更新以反映最新的官方内核行为。
* `ncm` 更新以反映最新的官方行为。
* 部分更新 `erpt` 以支持最新的官方行为。
* Atmosphere 的 gdbstub 现在支持在启动时等待附加到特定程序 ID(而不是任何应用程序)。
* 用于此的监视命令是 `monitor wait <十六进制程序 ID>`,程序 ID 可以选择性地带有 `0x` 前缀。
* 添加了对 `haze` 的支持,以原地编辑文件并执行 64 位传输(大于 4 GB 的文件)。
* 在 Mariko 单元上启用了 `bpc.mitm`,并且现在触发了基于 pmic 的关闭/重启(感谢 @CTCaer)。
* 这应该导致控制台在 Mariko 上关闭后不再在约 15 秒后唤醒。
* 解决了一些小问题并进行了改进,包括:
* 添加了解决方案,以解决 17.0.0 中的更改,该更改会导致那些之前重建其系统分区的控制台在升级到 17.0.0 时出现故障。
* 一般系统稳定性改进以增强用户的体验。
有关 1.6 版本支持的功能集的详细信息,请参阅[官方发布说明](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.6.0-prerelease)。"
Atmosphère 1.5.5
"**1.5.5** 是 Atmosphère 的第七十四个官方版本。
**在升级到 1.5.5 时,请务必更新 fusee**。fusee-primary 不再存在,将不再起作用。
感谢 @switchbrew 团队,Atmosphère 1.5.5 捆绑了[hbl](https://github.com/switchbrew/nx-hbloader) 2.4.3 和 [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.1。
自上次发布以来以下内容已更改:
* 添加了对 16.1.0 的支持。
* 一般系统稳定性改进以增强用户的体验。
有关 1.5 版本支持的功能集的详细信息,请参阅[官方发布说明](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.5.0-prerelease)。"
Atmosphère 1.5.4
**1.5.4** is Atmosphère's seventy-third official release.
**Please be sure to update fusee when upgrading to 1.5.4**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.5.4 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.3, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.1.
The following was changed since the last release:
* Experimental new functionality was implemented to prevent crashing when building romfs for certain games with obscene file counts.
* This includes both Fire Emblem: Engage (~190000 files), and The Legend of Zelda: Tears of the Kingdom (~300000) files.
* The solution involved adding functionality to ams.mitm/pm to dynamically steal memory from the application (and system) pool as needed when the games have romfs mods.
* No memory is taken, and there is no cost to this functionality when playing without mods (or with overrides disabled).
* The Legend of Zelda: Tears of the Kingdom is currently the absolute worst case game, requiring ~48 MB of memory to build a romfs image to play with mods.
* Right now, the memory is sourced as follows: 32 MB (base ams.mitm heap), 10 MB (stolen from application pool), 8 MB (dynamically stolen from system pool).
* This is 50 MB, which allows a little overhead in the worst case (prevents crashing due to exhausting the heap for other allocations in ams.mitm).
* Zelda is remarkably sensitive to memory being stolen from the application pool, tolerating no more than 16 MB on 1.0.0 and 12 MB on 1.1.0. I have chosen to steal 10 MB, to be safe, for now.
* This may break on a future game update, but I will fix it if and when that happens. There is no perfect solution; the game simply requires too much memory to support mods flawlessly, and I am forced to compromise.
* As usual, if you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact `SciresM#0524`.
* "I am jinxing myself by saying this, but it's really hard to imagine any game being worse than The Legend of Zelda: Tears of the Kingdom, but if it happens again I will drop everything to fix it as usual".
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.5, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.5.0-prerelease).
Atmosphère 1.5.3
**1.5.3** is Atmosphère's seventy-second official release.
**Please be sure to update fusee when upgrading to 1.5.3**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.5.3 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.3, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.1.
The following was changed since the last release:
* Support was added for 16.0.3.
* Atmosphère was updated to use GCC 13/newlib 4.3.0 (latest devkitA64/devkitARM releases).
* **Please note**: This introduces a known issue, which is currently being worked on.
* As you may recall from the 1.4.1 changelog, Fire Emblem: Engage requires enormous amounts of memory to support using layeredfs mods with the game.
* Latest newlib slightly increases malloc overhead size, which makes the previous memory increase insufficient.
* A general-case solution to this is in the works, which should hopefully fix the problem in a way that doesn't jinx me for the future.
* A number of minor issues were fixed and improvements were made, including:
* An issue was fixed that caused system font replacement to not work on 16.0.0+.
* An minor accuracy issue was addressed in mesosphere's management of certain memory ranges; this issue would have had zero visible impact to the end-user.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.5, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.5.0-prerelease).
Atmosphère 1.5.2
**1.5.2** is Atmosphère's seventy-first official release.
**Please be sure to update fusee when upgrading to 1.5.2**. fusee-primary no longer exists, and will not work any more.
Note: `switch/haze.nro` was updated in the release zip on 2023/04/18 at 10:15 PM PDT to fix an issue where haze would create files on the device 12 bytes larger than they should be. The updated zip has "-fix1" in its name.
With thanks to the @switchbrew team, Atmosphère 1.5.2 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.3, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.1.
The following was changed since the last release:
* A homebrew application (`haze`) was added for performing USB file transfer (with thanks to @liamwhite for both design and implementation).
* `haze` is included with atmosphère, and provides access to the SD card via the PTP/MTP protocol.
* **Please note**: haze will show inside the homebrew menu under the name "USB File Transfer".
* **Please note**: Atmosphère cannot be updated at runtime, and trying to install an atmosphère update via haze will fail as usual.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.5, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.5.0-prerelease).
Atmosphère 1.5.1
**1.5.1** is Atmosphère's seventieth official release.
**Please be sure to update fusee when upgrading to 1.5.1**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.5.1 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.3, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.1.
The following was changed since the last release:
* `fatal` was updated to reduce memory footprint.
* Starting in 16.0.0, official `fatal` has no framebuffer or rendering logic, and instead calls other system service commands to draw the screen.
* However, these commands aren't usable by atmosphère (too small rendering window, bad color support).
* To reduce the relative memory footprint differential between atmosphère and official code, the framebuffer (2 MB) is now dynamically allocated when needed.
* This will try to allocate from multiple pools (preferring System > System_NonSecure > Application).
* This technically requires that 2 MB be available in at least one of these pools for the fatal screen to render (otherwise, a reboot-to-black-and-white-fatal will occur), but this should be a non-issue in almost all cases.
* A feature was added to optionally mirror the bluetooth pairing database to the SD card (thanks @ndeadly).
* This allows device pairings to be automatically kept in-sync across sysmmc/all emummcs.
* This is opt-in, and can be controlled by setting `atmosphere!enable_external_bluetooth_db = u8!0x1`.
* When enabled, the pairing database will be synchronized to `/atmosphere/bluetooth_devices.db`.
* General system stability improvements to enhance the user's experience.
And the following was changed in 1.5.0:
* Support was added for 16.0.0
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `ncm` was updated to reflect the latest official behavior.
* Many FS apis were updated under the hood to reflect the latest official behavior.
* **Please Note**: 16.0.0 made breaking changes to a number of system APIs, including in FS/NCM/Shared Font commands that some homebrew programs may use.
* These programs may encounter strange errors, and may need to be recompiled with a libnx updated to support 16.0.0's changes to function properly.
* If you are an impacted developer, please contact `SciresM#0524` on discord for assistance.
* A number of minor issues were fixed and improvements were made, including:
* An issue was fixed that could cause GPIO outputs to be misconfigured under certain circumstances.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.5, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.5.0-prerelease).
Atmosphère 1.5.0
**1.5.0** is Atmosphère's sixty-ninth official release.
**Please be sure to update fusee when upgrading to 1.5.0**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.5.0 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.3, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.1.
The following was changed since the last release:
* Support was added for 16.0.0
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `ncm` was updated to reflect the latest official behavior.
* Many FS apis were updated under the hood to reflect the latest official behavior.
* **Please Note**: 16.0.0 made breaking changes to a number of system APIs, including in FS/NCM/Shared Font commands that some homebrew programs may use.
* These programs may encounter strange errors, and may need to be recompiled with a libnx updated to support 16.0.0's changes to function properly.
* If you are an impacted developer, please contact `SciresM#0524` on discord for assistance.
* A number of minor issues were fixed and improvements were made, including:
* An issue was fixed that could cause GPIO outputs to be misconfigured under certain circumstances.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.5, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.5.0).
Atmosphère 1.4.1
**1.4.1** is Atmosphère's sixty-eighth official release.
**Please be sure to update fusee when upgrading to 1.4.1**. fusee-primary no longer exists, and will not work any more.
Note: The release build was updated on 2023/01/24 at 7:00 PM PST to fix a crash when closing WebApplets. The updated zip has a build hash of "-7a69f2f06".
With thanks to the @switchbrew team, Atmosphère 1.4.1 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.3, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.1.
The following was changed since the last release:
* A number of minor issues were fixed and improvements were made, including:
* `dmnt` cheat toggle files are no longer ignored when they are missing a trailing newline.
* The mechanism for automatically cleaning up `erpt_reports` added in 1.3.0 was fixed.
* This was actually just very fundamentally broken and has never worked, but it is verified working now.
* **Please note**: Your first boot into 1.4.1 may take much longer than usual (showing only a black screen), if the automatic cleanup mechanism is triggered and thousands of files are deleted. This should be one-time and not more than a minute or so, if it occurs.
* Minor fixes were made in `mesosphère` to match official kernel behavior (spin lock assembly was corrected, wrong result on failure in in GetProcessId was corrected).
* A missing call to GetSdStatus when initializing SD cards at non uhs-i mode was added in the sdmmc driver.
* `ams.mitm`'s memory usage was increased by 16 MB, to prevent crashing when building romfs for games with obscene file counts.
* To quote the changelog for 1.2.3: "Animal Crossing's 2.0.0 update contains >99000 files [...] It's really hard to imagine any game being worse than Animal Crossing".
* As it turns out, Fire Emblem: Engage has ~186000 files, and is approximately twice as bad as animal crossing.
* Half of the additional memory here is taken from the applet pool; no issues are expected to arise from this, but please report anything you may run into.
* As usual, if you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact `SciresM#0524`.
* I am jinxing myself by saying this, but it's really hard to imagine any game being worse than Fire Emblem: Engage, but if it happens again I will drop everything to fix it as usual.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.4, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.4.0).
Atmosphère 1.4.0
**1.4.0** is Atmosphère's sixty-seventh official release.
**Please be sure to update fusee when upgrading to 1.4.0**. fusee-primary no longer exists, and will not work any more.
**Note**: The following was changed since pre-release:
* A bug was fixed in fusee that would cause a black screen when booting with nogc patches on and exFAT-supporting firmware installed.
* A bug was fixed that could cause the gdbstub to report the wrong file/module name when debugging homebrew.
* [hbl](https://github.com/switchbrew/nx-hbloader) was updated to version 2.4.3.
With thanks to the @switchbrew team, Atmosphère 1.4.0 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.3, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.1.
The following was changed since the last release:
* Support was added for 15.0.0.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `ncm` was updated to reflect the latest official kernel behavior.
* A number of minor issues were fixed and improvements were made, including:
* The capacity limit on registered add-on contents was fixed in NCM to reflect the increase that occurred in 12.0.0.
* An off-by-one was fixed in mesosphere when computing the new value for an address arbiter signaled with ModifyByWaitingCountIfEqual.
* dmnt.gen2's gdbstub now sanitizes thread names to prevent invalid characters from breaking gdb.
* dmnt.gen2's gdbstub now reports the architecture tag correctly when attached to 32-bit processes.
* Support for program-specific html manual content overrides was added for non-hbl takeover context.
* A bug was fixed in how emummc constructed the alternate Nintendo directory path.
* Previously, this was using `/*/Nintendo/Nintendo` instead of `/*/Nintendo`.
* Code was added to automatically move the old folders to the new ones when booting into emummc.
* A bug was fixed in boot that caused an incorrectly low input voltage limit to be set.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.4, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.4.0).
Atmosphère 1.3.2
**1.3.2** is Atmosphère's sixty-sixth official release.
**Please be sure to update fusee when upgrading to 1.3.2**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.3.2 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.1.
The following was changed since the last release:
* Support was improved for 14.0.0+.
* `loader` was updated to reflect the latest official behaviors.
* `ro` was updated to reflect the latest official behaviors.
* A number of minor issues were fixed and improvements were made, including:
* A memory leak was fixed in filesystem path management; this could cause a crash when launching games ~100 times, or when deleting/re-downloading games.
* A bug was fixed that could cause threads to not see a newly signaled semaphore.
* A number of minor inaccuracies were fixed in the updated FileSystem APIs.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.3, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.3.0).
Atmosphère 1.3.1
**1.3.1** is Atmosphère's sixty-fifth official release.
**Please be sure to update fusee when upgrading to 1.3.1**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.3.1 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.0.
The following was changed since the last release:
* Support was added for 14.1.0.
* A number of minor under the hood improvements to accuracy were made to better reflect latest official system module behavior, particularly around FS apis.
* General system stability improvements to enhance the user's experience.
And the following was changed in 1.3.0:
* Support was added for 14.0.0.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `erpt` was updated to reflect the latest official behaviors.
* `pm` was updated to reflect the latest official behaviors.
* `fatal` was updated to reflect the latest official behaviors.
* A mechanism for automatically cleaning up `erpt_reports` was added.
* When booting, if the console has more than 1000 reports inside `/atmosphere/erpt_reports`, the folder will be cleaned to empty.
* This behavior can be disabled by setting `erpt!disable_automatic_report_cleanup` = u8!0x1 in system_settings.ini.
* Atmosphère's build system was re-written, and now allows globally building for various builds/configs.
* All boards now automatically support release/debugging/auditing targets; it is now possible to build a full debugging/auditing build of atmosphère for the first time.
* Support was added for compiling libstratosphère to run on PC.
* The currently implemented/tested targets are Windows (x64), Linux (x64, arm64), macOS (x64, arm64).
* If you are a developer interested in adding support for another target, please reach out to `SciresM#0524` on discord.
* This is intended to finally allow sanely testing Atmosphère's code, by allowing most of it to run on a PC (with access to a debugger) instead of on game console hardware.
* In addition, this will allow making PC tools which reuse code written for Atmosphère directly..
* **Please Note**: This has no relation to interacting with official software on PC whatsoever. This really allows for making tests and self-contained atmosphère-based command-line tools; the Atmosphère project continues to have zero interest in attempting to run official software of any kind.
* In the course of adding this support (and working on tooling using it), a number of fairly major revisions were made to stratosphere (particularly surrounding filesystem code).
* **Please Note**: A number of changes made for this (and ones necessary in the process of adding support for 14.0.0) are api-breaking.
* If you're a developer and any of this caused your code to break, please feel free to contact `SciresM#0524` for help updating your program.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.3, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.3.0).
Atmosphère 1.3.0
**1.3.0** is Atmosphère's sixty-fourth official release. Who doesn't love round numbers?
**Please be sure to update fusee when upgrading to 1.3.0**. fusee-primary no longer exists, and will not work any more.
**Please note**: Atmosphère 1.3.0 is currently in pre-release, and issues may be found that need to be fixed before full release.
* If any bugs are reported while Atmosphère is in pre-release, they will be fixed and the build will be updated.
* 1.3.0 will transition to release after a short amount of time has passed without pressing bug reports.
**Note**: The fatal system module was updated in the pre-release zip on 2022/03/23 at 7:20 PM PDT to fix failure to detect the power button (and to auto-reboot) from the `fatal` system module error screen. The updated zip has a build hash of "-b69fa1357".
With thanks to the @switchbrew team, Atmosphère 1.3.0 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.0.
The following was changed since the last release:
* Support was added for 14.0.0.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `erpt` was updated to reflect the latest official behaviors.
* `pm` was updated to reflect the latest official behaviors.
* `fatal` was updated to reflect the latest official behaviors.
* A mechanism for automatically cleaning up `erpt_reports` was added.
* When booting, if the console has more than 1000 reports inside `/atmosphere/erpt_reports`, the folder will be cleaned to empty.
* This behavior can be disabled by setting `erpt!disable_automatic_report_cleanup` = u8!0x1 in system_settings.ini.
* Atmosphère's build system was re-written, and now allows globally building for various builds/configs.
* All boards now automatically support release/debugging/auditing targets; it is now possible to build a full debugging/auditing build of atmosphère for the first time.
* Support was added for compiling libstratosphère to run on PC.
* The currently implemented/tested targets are Windows (x64), Linux (x64, arm64), macOS (x64, arm64).
* If you are a developer interested in adding support for another target, please reach out to `SciresM#0524` on discord.
* This is intended to finally allow sanely testing Atmosphère's code, by allowing most of it to run on a PC (with access to a debugger) instead of on game console hardware.
* In addition, this will allow making PC tools which reuse code written for Atmosphère directly..
* **Please Note**: This has no relation to interacting with official software on PC whatsoever. This really allows for making tests and self-contained atmosphère-based command-line tools; the Atmosphère project continues to have zero interest in attempting to run official software of any kind.
* In the course of adding this support (and working on tooling using it), a number of fairly major revisions were made to stratosphere (particularly surrounding filesystem code).
* **Please Note**: A number of changes made for this (and ones necessary in the process of adding support for 14.0.0) are api-breaking.
* If you're a developer and any of this caused your code to break, please feel free to contact `SciresM#0524` for help updating your program.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.3, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.3.0).
Atmosphère 1.2.6
**1.2.6** is Atmosphère's sixty-third official release.
**Please be sure to update fusee when upgrading to 1.2.6**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.2.6 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.0.
The following was changed since the last release:
* Support was added for 13.2.1.
* A number of minor issues were fixed and improvements were made, including:
* A minor performance improvement was implemented in service table dispatch by sorting and binary-searching the service command table instead of using linear search.
* Static initialization logic in Atmosphere was made much more regular.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.2, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.2.0).
Atmosphère 1.2.5
**1.2.5** is Atmosphère's sixty-second official release.
**Please be sure to update fusee when upgrading to 1.2.5**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.2.5 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.0.
The following was changed since the last release:
* Support was added for 13.2.0.
* A number of minor issues were fixed and improvements were made, including:
* A bug was fixed that caused `mesosphère` to underreport the total memory size by 8MB for certain games which use newer system-resource-size memory management.
* This caused FIFA 19 to crash, and possibly other issues.
* Memory management changes were made to `sm` that save 0x5000 of memory.
* A microoptimization was made to the way `mesosphère` manages updating the debug register for hardware single-step support.
* Support was fixed for enabling `usb!usb30_force_enabled` on 13.0.0+.
* The work-in-progress unit testing framework was updated to use doctest instead of catch2.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.2, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.2.0).
Atmosphère 1.2.4
**1.2.4** is Atmosphère's sixty-first official release.
**Please be sure to update fusee when upgrading to 1.2.4**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.2.4 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.0.
The following was changed since the last release:
* Changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
* Cache management (to avoid unnecessary rebuild) was revised, to add a grace period of ~500ms-1s between process closing romfs image and ams.mitm needing to rebuild if romfs is re-opened.
* This makes our cache much more effective, previously we were re-building romfs several times.
* RomFS image ownership was overhauled, with a new reference-counting implementation added (used to implement the above grace period).
* Certain games (e.g. Puyo Puyo Tetris 2, probably others) were sensitive to this timing, and could use access patterns which would trigger creation of romfs image while previous romfs image was in the middle of destructor.
* This could cause a fatal error, because the destructor for the old image could run simultaneously with building the new image.
* This also provides a speedup versus the 1.2.3 code, with Animal Crossing now taking ~8 fewer seconds to get past the Nintendo Switch logo.
* General system stability improvements to enhance the user's experience.
And the following was changed in 1.2.3:
* Because ams.TMA is taking longer to develop than expected, experimental support for Atmosphère's gdbstub as a standalone is now available.
* **Please Note**: The GDBstub is new and may have bugs/need work. If you find issues, please report them to `SciresM#0524` -- all help finding/fixing bugs is appreciated, here.
* Generally speaking, if you would like to report information about fixes needed/discuss development of the gdbstub, join ReSwitched's #dev-support channel.
* To enable it, set `atmosphere!enable_standalone_gdbstub` = u8!0x1 in system_settings.ini.
* The standalone also requires `atmosphere!enable_htc` = u8!0x0, but this should be the case for everyone since ams.TMA isn't actually usable yet.
* Once enabled, open the devkitPro provided-gdb (`aarch64-none-elf-gdb` for 64-bit or `arm-none-eabi-gdb` for 32-bit).
* The standalone stub exposes itself on port 22225 -- so the command to connect is `target extended-remote <ip address>:22225`.
* Type `info os processes` to get a list of process IDs that can be attached to.
* The stub should work on both system programs, games, and homebrew -- but please note that debugging certain processes (like sockets) can cause hang due to the stub using them itself.
* Software break-points, hardware break-points, hardware watch-points, and hardware single-step are all supported/implemented.
* The following monitor commands are currently supported:
* `monitor get info`: Get process info, address space layout, and information on modules.
* `monitor get mappings`: Get all memory mappings.
* `monitor get mapping <addr>`: Get the memory mapping for a specific address.
* `monitor wait application`: Causes the stub to wait for an application to be launched. The next application will be started suspended.
* User is expected to send `attach <pid>` after launching, which will cause attach-on-first-instruction. Failure to attach may cause system instability, this probably needs work.
* Changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
* Animal Crossing's 2.0.0 update contains >99000 files, and has tables so big that we ran out of memory even after the optimizations made in 0.10.5.
* Previously, we used fixed-sized 0x40000 work buffers for file/directory tables and simultaneously built hash/content tables in one loop over files/directories.
* We now iterate over the file/directory tables multiple times, first once to determine the hash table indices, then repeatedly to build hash tables, then once to build content tables.
* We also now allow smaller-than-0x40000 work buffers, trying half-as-big buffers until allocation succeeds (or work buffer would be <0x4000, which is a safeguard against truly horrible performance).
* There is a slight speed penalty to these changes, but it's on the order of seconds for the worst case (Animal Crossing) and trivial for most games with reasonable tables.
* If you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact `SciresM#0524`.
* It's really hard to imagine any game being worse than Animal Crossing, but if it happens again I will drop everything to fix it as usual.
* `creport` now attempts to parse symbol tables if present.
* If a game executable has a symbol for a given address, the function-relative-offset will now be printed after the module-relative-offset.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.2, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.2.0).
Atmosphère 1.2.3
**1.2.3** is Atmosphère's sixtieth official release.
**Please be sure to update fusee when upgrading to 1.2.3**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.2.3 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.0.
The following was changed since the last release:
* Because ams.TMA is taking longer to develop than expected, experimental support for Atmosphère's gdbstub as a standalone is now available.
* **Please Note**: The GDBstub is new and may have bugs/need work. If you find issues, please report them to `SciresM#0524` -- all help finding/fixing bugs is appreciated, here.
* Generally speaking, if you would like to report information about fixes needed/discuss development of the gdbstub, join ReSwitched's #dev-support channel.
* To enable it, set `atmosphere!enable_standalone_gdbstub` = u8!0x1 in system_settings.ini.
* The standalone also requires `atmosphere!enable_htc` = u8!0x0, but this should be the case for everyone since ams.TMA isn't actually usable yet.
* Once enabled, open the devkitPro provided-gdb (`aarch64-none-elf-gdb` for 64-bit or `arm-none-eabi-gdb` for 32-bit).
* The standalone stub exposes itself on port 22225 -- so the command to connect is `target extended-remote <ip address>:22225`.
* Type `info os processes` to get a list of process IDs that can be attached to.
* The stub should work on both system programs, games, and homebrew -- but please note that debugging certain processes (like sockets) can cause hang due to the stub using them itself.
* Software break-points, hardware break-points, hardware watch-points, and hardware single-step are all supported/implemented.
* The following monitor commands are currently supported:
* `monitor get info`: Get process info, address space layout, and information on modules.
* `monitor get mappings`: Get all memory mappings.
* `monitor get mapping <addr>`: Get the memory mapping for a specific address.
* `monitor wait application`: Causes the stub to wait for an application to be launched. The next application will be started suspended.
* User is expected to send `attach <pid>` after launching, which will cause attach-on-first-instruction. Failure to attach may cause system instability, this probably needs work.
* Changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
* Animal Crossing's 2.0.0 update contains >99000 files, and has tables so big that we ran out of memory even after the optimizations made in 0.10.5.
* Previously, we used fixed-sized 0x40000 work buffers for file/directory tables and simultaneously built hash/content tables in one loop over files/directories.
* We now iterate over the file/directory tables multiple times, first once to determine the hash table indices, then repeatedly to build hash tables, then once to build content tables.
* We also now allow smaller-than-0x40000 work buffers, trying half-as-big buffers until allocation succeeds (or work buffer would be <0x4000, which is a safeguard against truly horrible performance).
* There is a slight speed penalty to these changes, but it's on the order of seconds for the worst case (Animal Crossing) and trivial for most games with reasonable tables.
* If you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact `SciresM#0524`.
* It's really hard to imagine any game being worse than Animal Crossing, but if it happens again I will drop everything to fix it as usual.
* `creport` now attempts to parse symbol tables if present.
* If a game executable has a symbol for a given address, the function-relative-offset will now be printed after the module-relative-offset.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.2, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.2.0).
Atmosphère 1.2.2
**1.2.2** is Atmosphère's fifty-ninth official release.
**Please be sure to update fusee when upgrading to 1.2.2**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.2.2 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.5.0.
The following was changed since the last release:
* A number of fixes were made to Atmosphère's implementation of the new "sprofile" service added in 13.0.0.
* Nintendo is finally transmitting data over the internet to certain consoles, which has allowed for validating our service implementation.
* Unfortunately, there were several problems, and if your console began trying to use the new services atmosphère would show a fatal error with code 0xCAF6 (sprofile::ResultInvalidState()).
* With actual test data in hand, a test program was written and it was verified that our implementation can successfully import/access profile data now.
* Hopefully there are no more issues, and I sincerely apologize to anyone who got an 0xCAF6 fatal due to this.
* A number of minor improvements were made to `mesosphère`, including:
* KThread::GetContextForSchedulerLoop was implemented in assembly (using static assertions to verify offset-of-context-in-struct is correct).
* This saves an unnecessary function call in the middle of the scheduler hot loop, replacing it with an addition instruction, which should improve microperformance.
* Mesosphère's hardware maintenance instructions were audited via a script and now directly match Nintendo's kernels.
* Notably, this inserts a missing instruction synchronization barrier when validating that slab heaps may be constructed.
* This missing ISB could cause an abort on certain (see: particularly sensitive) hardware on boot if the relevant codepath was speculatively executed (it normally only executes on game launch...)
* The SVC handlers for performing light IPC (normally unused) from 32-bit process were fixed.
* A bug was fixed that would cause the register x27 to be overwritten with the contents of x26 when returning from a user exception handler.
* A bug was fixed that would cause the kernel to use the userland stack pointer instead of the kernel stack pointer while generating an error report for a kernel abort.
* General system stability improvements to enhance the user's experience.
And the following was changed in 1.2.1:
* Support was implemented for 13.1.0.
* `mesosphère` was updated to reflect the kernel behavioral changes made in 13.1.0.
* KScheduler now issues a data memory barrier when unlocking the scheduler lock and when early-returning due to top-thread-is-current during scheduling.
* `erpt` was updated to reflect the latest official behaviors.
* The new service added in 13.0.0 ("sprofile") was revised, and the data formats it expects was changed.
* This still appears to be (possibly(?)) untestable due to data not being transmitted yet, but I have greater confidence things will go smoothly than I did when 1.1.0 released.
* A number of improvements were made to `mesosphère`, including:
* A build target was created to build targeting the qemu `virt` board.
* This facilitates writing unit tests for the kernel (and other atmosphère components) and running them under PC.
* **Please Note**: Official system software will not work at all under this, and the Atmosphère project has zero interest in attempting to run official software of any kind. This is unit testing machinery, and explicitly not more than that.
* This should hopefully allow us to have greater confidence that all of atmosphère's components work the way they're theoretically supposed to in the future.
* **Please Note**: If you are a developer who is familiar with the Horizon operating system (or capable of becoming familiar), I would greatly appreciate help writing tests and improving the testing framework.
* Please contact `SciresM#0524` if you are capable and interested.
* Really, if you are actually a developer who would like to help me get this off the ground, I would deeply appreciate it.
* That said, if you are not a developer but want to be one, this probably isn't the best opportunity; I expect it to be highly technical.
* Consider the ReSwitched discord's #hack-n-all channel for your educational purposes.
* We are (at least for now) using [catch2](https://github.com/catchorg/Catch2) for unit tests.
* Almost all virtual calls in the kernel are now resolved statically.
* This eliminates substantial virtual call overhead, and should lead to improved kernel microperformance in pretty much every function.
* The remaining red black tree find operations which weren't using the optimized "find key" variant are now using the optimized version.
* Custom assembly was written to improve tick-to-timespan conversion.
* This works around gcc emitting suboptimal assembly at -Os (it emits good assembly at -O3, clang is fine at both -O3 and -Os).
* KThread and KSession structures were updated to optimize member layout, saving 0x10 bytes per KThread/KSession object.
* Rather than unnecessarily zero-ing all data in kernel objects only to overwrite members later, we now only initialize the members we need to in kernel object constructors.
* This is what Nintendo was doing already.
* A set of custom optimized atomic primitives were implemented and are used in place of std::atomic<>
* This works around a gcc bug which downgrades specified memory order to seq_cst, and introduces clrex in places where it is appropriate.
* This should strictly improve microperformance of many system calls.
* An compile-time toggleable extension was added to support 40-bit physical addresses in MapRange capabilities (using currently reserved bits).
* A number of minor bugs were fixed, including:
* Initial cache management now better reflects official behavior.
* This fixes an issue that caused certain hardware with cache sensitivity to produce cryptic kernel panics during boot.
* Incorrect logic when checking thread priority capabilities was fixed to reflect official behavior.
* The scheduler was updated to reflect latest official behavior, and a number of minor bugs involving clz/ctz were fixed.
* Accesses to the processes local region were fixed to properly use kernel linear region, not userland pointers.
* The cache SVCs exposed for 32-bit processes now better reflect official core mask request semantics.
* A bug was fixed that could cause a kernel panic if SvcArbitrateLock was called on a thread with exactly one reference in the middle of handling a user-mode exception.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.2, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.2.0).
Atmosphère 1.2.1 (tagged pre-release due to bug on 10/29/2021)
**1.2.1** is Atmosphère's fifty-eighth official release.
** Please Note ** You should avoid using Atmosphère 1.2.1 if possible in favor of Atmosphère 1.2.2 or newer, due to a bug in the "sprofile" service implementation that can cause a fatal error upon connection to the internet.
**Please be sure to update fusee when upgrading to 1.2.1**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.2.1 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.1.
The following was changed since the last release:
* Support was implemented for 13.1.0.
* `mesosphère` was updated to reflect the kernel behavioral changes made in 13.1.0.
* KScheduler now issues a data memory barrier when unlocking the scheduler lock and when early-returning due to top-thread-is-current during scheduling.
* `erpt` was updated to reflect the latest official behaviors.
* The new service added in 13.0.0 ("sprofile") was revised, and the data formats it expects was changed.
* This still appears to be (possibly(?)) untestable due to data not being transmitted yet, but I have greater confidence things will go smoothly than I did when 1.1.0 released.
* A number of improvements were made to `mesosphère`, including:
* A build target was created to build targeting the qemu `virt` board.
* This facilitates writing unit tests for the kernel (and other atmosphere components) and running them under PC.
* **Please Note**: Official system software will not work at all under this, and the Atmosphère project has zero interest in attempting to run official software of any kind. This is unit testing machinery, and explicitly not more than that.
* This should hopefully allow us to have greater confidence that all of atmosphere's components work the way they're theoretically supposed to in the future.
* **Please Note**: If you are a developer who is familiar with the Horizon operating system (or capable of becoming familiar), I would greatly appreciate help writing tests and improving the testing framework.
* Please contact `SciresM#0524` if you are capable and interested.
* Really, if you are actually a developer who would like to help me get this off the ground, I would deeply appreciate it.
* That said, if you are not a developer but want to be one, this probably isn't the best opportunity; I expect it to be highly technical.
* Consider the ReSwitched discord's #hack-n-all channel for your educational purposes.
* We are (at least for now) using [catch2](https://github.com/catchorg/Catch2) for unit tests.
* Almost all virtual calls in the kernel are now resolved statically.
* This eliminates substantial virtual call overhead, and should lead to improved kernel microperformance in pretty much every function.
* The remaining red black tree find operations which weren't using the optimized "find key" variant are now using the optimized version.
* Custom assembly was written to improve tick-to-timespan conversion.
* This works around gcc emitting suboptimal assembly at -Os (it emits good assembly at -O3, clang is fine at both -O3 and -Os).
* KThread and KSession structures were updated to optimize member layout, saving 0x10 bytes per KThread/KSession object.
* Rather than unnecessarily zero-ing all data in kernel objects only to overwrite members later, we now only initialize the members we need to in kernel object constructors.
* This is what Nintendo was doing already.
* A set of custom optimized atomic primitives were implemented and are used in place of std::atomic<>
* This works around a gcc bug which downgrades specified memory order to seq_cst, and introduces clrex in places where it is appropriate.
* This should strictly improve microperformance of many system calls.
* An compile-time toggleable extension was added to support 40-bit physical addresses in MapRange capabilities (using currently reserved bits).
* A number of minor bugs were fixed, including:
* Initial cache management now better reflects official behavior.
* This fixes an issue that caused certain hardware with cache sensitivity to produce cryptic kernel panics during boot.
* Incorrect logic when checking thread priority capabilities was fixed to reflect official behavior.
* The scheduler was updated to reflect latest official behavior, and a number of minor bugs involving clz/ctz were fixed.
* Accesses to the processes local region were fixed to properly use kernel linear region, not userland pointers.
* The cache SVCs exposed for 32-bit processes now better reflect official core mask request semantics.
* A bug was fixed that could cause a kernel panic if SvcArbitrateLock was called on a thread with exactly one reference in the middle of handling a user-mode exception.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.2, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.2.0).
Atmosphère 1.2.0 (pre-release)
**1.2.0** is Atmosphère's fifty-seventh official release.
**Please be sure to update fusee when upgrading to 1.2.0**. fusee-primary no longer exists, and will not work any more.
**Please note**: Atmosphère 1.2.0 is currently in pre-release, and issues may be found that need to be fixed before full release.
* If any bugs are reported while Atmosphère is in pre-release, they will be fixed and the build will be updated.
* 1.2.0 will transition to release after a short amount of time has passed without pressing bug reports.
**Note**: The pre-release build was updated on 2021/10/18 at 11:20 AM PST to fix a hang when booting "Super Mario 3D All-Stars" and possibly other titles. The updated zip has a build hash of "-692247b26".
With thanks to the @switchbrew team, Atmosphère 1.2.0 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.1.
The following was changed since the last release:
* `boot` was updated to reflect the latest official behavior for display/battery management.
* This should fix any issues that might result from running older releases on the OLED model, if you're somehow in a position to do so.
* The "target firmware" system was changed to allow the bootloader to specify an approximation, rather than the true target firmware.
* Previously we expected compliant bootloaders to inspect SYSTEM:/ to determine the specific target firmware.
* Now, we only require an approximate version, with major version == true major version and approximate version <= true version.
* This greatly simplifies bootloader requirements, and correspondingly all code for accessing SYSTEM has been removed from fusee.
* This should result in a substantial speedup when booting emummc with fusee, as SYSTEM accesses were the most expensive thing done previously.
* This should resolve any inconsistency in firmware detection when booting via fusee vs hekate.
* This should also improve our compatibility with micro firmware releases, making it more likely that atmosphere "just works" if nothing important has changed.
* Dynamic resource limit determination logic was implemented in `pm` to match latest official behavior.
* This greatly simplifies/makes consistent the resource limits on older firmwares, as well.
* An enormous amount of refactoring was performed under the hood, including:
* **Please Note**: If you are a developer who uses Atmosphere-libs, a number of changes here are breaking.
* Feel free to contact SciresM#0524 for help updating your program.
* The OS namespace had many primitives implemented/made more accurate.
* Since mesosphere is now always-on, os::LightEvent (which required newer SVCs) is now globally usable (and used by stratosphere where relevant).
* Assertions are now true no-ops when building for release.
* Stratosphere is now built with -Wextra/-Werror.
* Most "common" logic in system module main.cpp files was moved into libstratosphere.
* **Please Note**: main.cpp files for prior atmosphere-libs will no longer work, for a really large number of reasons.
* A number of longstanding code style issues were corrected.
* Mesosphere now uses util::BitFlagSet for SVC permissions.
* Mesosphere now puts its relocation table inside .bss, which allows that memory to be reclaimed after relocations are performed.
* These changes save ~16KB of memory in the kernel, all said and done.
* A number of locations in stratosphere where memory could be saved were spotted and taken advantage of, leading to ~150-200KB of saved memory.
* The `spl` and `loader` system module was refactored to better reflect official logic.
* `sf` ipc server code was updated to only emit mitm/defer logic when that logic is actually required somewhere in process.
* `tipc` ipc server code was updated to reflect changes to official logic made in 13.0.0.
* Many, many other minor changes, please talk to SciresM#0524 or read the relevant commits if you want to know more.
* A number of minor issues were fixed, including:
* Mesosphere's handling of SVC permissions on thread pin/unpin was updated to reflect official kernel behavior.
* util::CountTrailingZeroes() was fixed to calculate the correct value when used at compile-time.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.2, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.2.0).
Atmosphère 1.1.1
**1.1.1** is Atmosphère's fifty-sixth official release.
**Please be sure to update fusee when upgrading to 1.1.1**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.1.1 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.1.
The following was changed since the last release:
* A bug was fixed which caused some memory to leak when launching a game with mods enabled, eventually causing a crash after enough game launches without rebooting.
* General system stability improvements to enhance the user's experience.
And the following was changed in 1.1.0:
* Support was implemented for 13.0.0.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `ncm` was updated to reflect the latest official behaviors.
* `erpt` was updated to reflect the latest official behaviors.
* Two new services ("sprofile") were added to `erpt`, and have been fully reimplemented.
* **Please Note**: These services provide a way for settings to be pushed to consoles over the internet without system update.
* Because there appear to be no settings pushed out yet, this implementation fundamentally cannot be fully tested right now, but hopefully there are no issues once settings begin being distributed.
* The `LogManager` system module was reimplemented.
* This system module provides services that some games use for logging.
* Atmosphere's reimplementation supports logging to the SD card (if `lm!enable_sd_card_logging` is true) and to ams.TMA.
* To control the directory where logs are saved, modify the `lm!sd_card_log_output_directory` setting.
* Atmosphere's reimplementation is disabled by default (in order to save memory), but can be enabled by setting `lm!enable_log_manager` to true.
* This will allow reading over logs from games which use the services (or potentially logging from homebrew in the future), which can be useful to developers.
* Please note that when TMA is fully implemented in the future, enabling TMA will forcibly enable `LogManager`.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.1, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.1.0).
Atmosphère 1.1.0 (pre-release)
**1.1.0** is Atmosphère's fifty-fifth official release.
**Please be sure to update fusee when upgrading to 1.1.0**. fusee-primary no longer exists, and will not work any more.
**Please note**: Atmosphère 1.1.0 is currently in pre-release, and issues may be found that need to be fixed before full release.
* If any bugs are reported while Atmosphère is in pre-release, they will be fixed and the build will be updated.
* 1.1.0 will transition to release after a short amount of time has passed without pressing bug reports.
With thanks to the @switchbrew team, Atmosphère 1.1.0 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.1.
The following was changed since the last release:
* Support was implemented for 13.0.0.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `ncm` was updated to reflect the latest official behaviors.
* `erpt` was updated to reflect the latest official behaviors.
* Two new services ("sprofile") were added to `erpt`, and have been fully reimplemented.
* **Please Note**: These services provide a way for settings to be pushed to consoles over the internet without system update.
* Because there appear to be no settings pushed out yet, this implementation fundamentally cannot be fully tested right now, but hopefully there are no issues once settings begin being distributed.
* The `LogManager` system module was reimplemented.
* This system module provides services that some games use for logging.
* Atmosphere's reimplementation supports logging to the SD card (if `lm!enable_sd_card_logging` is true) and to ams.TMA.
* To control the directory where logs are saved, modify the `lm!sd_card_log_output_directory` setting.
* Atmosphere's reimplementation is disabled by default (in order to save memory), but can be enabled by setting `lm!enable_log_manager` to true.
* This will allow reading over logs from games which use the services (or potentially logging from homebrew in the future), which can be useful to developers.
* Please note that when TMA is fully implemented in the future, enabling TMA will forcibly enable `LogManager`.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.1, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.1.0).
Atmosphère 1.0.0
**1.0.0** is Atmosphère's fifty-fourth official release.
**Please be sure to update fusee when upgrading to 1.0.0**. fusee-primary no longer exists, and will not work any more.
With thanks to the @switchbrew team, Atmosphère 1.0.0 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.1.
The following was changed since the last release:
* `fusee` was completely re-written in C++ to use the same atmosphere-libs APIs as the rest of atmosphere's code.
* The rewrite was performed with a big emphasis on ensuring a good boot speed, and generally boot should be much faster than it was previously.
* Depending on SD card/environment, boot speed may now be slightly faster than, roughly the same as, or slightly slower than when booting with hekate.
* The obvious low-hanging fruit for performance improvements has been picked, so hopefully the improved performance is to everybody's liking.
* SD card compatibility was improved: fusee should now have SD card compatibility identical to the official OS driver.
* **Please Note**: various components were renamed (fusee-primary.bin -> fusee.bin, fusee-secondary.bin -> package3).
* If you use another bootloader (like hekate), you may need to update your configuration to use the new layout.
* **Please Note**: BCT.ini no longer exists, nogc configuration has been moved to `/atmosphere/config/stratosphere.ini`.
* If you rely on custom nogc configuration, please be sure to update accordingly.
* Custom splash screen BMP parsing is no longer supported (as it slows down boot for 99% of users).
* To compensate for this, a script to insert a custom splash screen into a `package3` binary has been added to the `utilities` folder of the atmosphere repository.
* The release build should be equivalent to running the following command from the root of the atmosphere repository: `python utilities/insert_splash_screen.py img/splash.png fusee/package3`
* A number of pending changes were made, following the end of the relevant testing periods:
* `mesosphere` is no longer opt-out, and stratosphere code will begin depending on its being present/in use.
* `NCM` is no longer opt-out.
* The cleanup to ease the transition from < 0.19.0 to 0.19.0 has been removed.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 1.0, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.0.0).
Atmosphère 0.20.1
**0.20.1** is Atmosphère's fifty-third official release.
fusee-primary was last updated in: **0.20.1**. **Please be sure to update fusee-primary when upgrading to 0.20.1**.
With thanks to the @switchbrew team, Atmosphère 0.20.1 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.1.
The following was changed since the last release:
* An issue was fixed that caused severely degraded performance after wake-from-sleep on Mariko hardware.
* This was due to Mariko MTC resulting in a frequency of 1599.999MHz instead of 1600MHz.
* Due to this off-by-one, Nintendo's EMC management code failed to initialize/take over, and after wake from sleep RAM would be in a strange state.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 0.20, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.20.0).
Atmosphère 0.20.0
**0.20.0** is Atmosphère's fifty-second official release.
fusee-primary was last updated in: **0.20.0**.
With thanks to the @switchbrew team, Atmosphère 0.20.0 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.1.
The following was changed since the last release:
* DRAM training (MTC) was implemented for Mariko hardware, increasing RAM speed from 204MHz to 1600MHz.
* This significantly optimizes Mariko boot speed, cutting boot time roughly in half.
* Typical boot time reductions (measured as "select fusee" to "home menu visible"):
* Normal (Iowa): ~35 seconds -> ~18 seconds.
* Lite (Hoag): ~65 seconds -> ~30 seconds.
* NOTE: Work is being started on a re-written `fusee` component, with an eye specifically towards ensuring a good boot speed.
* With any luck, boot will be much much faster on all units (Mariko and Erista) in an upcoming release.
* Sept was replaced, and deleted from the repository.
* Erista units now use a custom TSEC firmware to manage key derivation.
* For more details, contact `SciresM#0524` on discord.
* This has a number of benefits, including:
* This greatly simplifies key derivation logic by making it consistent on all firmwares.
* Fusee no longer accesses/uses keyblobs at all, so units which have accidentally destroyed/lost keyblobs can boot without them.
* This greatly increases stability (sept was the biggest source of boot failures).
* This improves boot speed (sept rebooted multiple times, performed hardware init multiple times, and was generally very slow).
* Atmosphère build process is now much saner.
* A number of improvements were made to the dmnt cheat engine.
* Cheats which take in a memory region operand may now use types "2" or "3" to perform accesses relative to the alias/aslr regions, respectively.
* Support was added for an "else" opcode in the cheat engine, to make writing certain conditional logic more natural.
* Support was added for a cheat orchestrator homebrew (like edizon) to detach from a cheat process/set the master cheat programmatically.
* Daybreak now provides a warning when attempting to install a firmware newer than the highest version atmosphère knows it supports.
* To facilitate this, exosphere now exposes the supported HOS version via an extension ConfigItem.
* A number of minor issues were fixed, including:
* Several mesosphere debug SVC implementations were updated to reflect the semantics of the latest kernel.
* Support was fixed for deriving BIS encryption keys on certain prototype hardware.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 0.20, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.20.0).
Atmosphère 0.19.5
**0.19.5** is Atmosphère's fifty-first official release.
fusee-primary was last updated in: **0.19.3**.
With thanks to the @switchbrew team, Atmosphère 0.19.5 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.0.
The following was changed since the last release:
* Support was added for 12.1.0.
* LayeredFS support was added for OpenDataStorageWithProgramIndex commands.
* Certain games using newer (7.0.0+ APIs) which include multiple programs under a single title previously could not be modified.
* These are now supported as normal, and LayeredFS should have 100% compatibility again.
* A number of minor issues were fixed, including:
* The Reboot to Payload NRO was updated to allow the OS to save state prior to rebooting (thanks @AuroraWright)!
* An issue was fixed that could cause dns.mitm to fail when games requested resolution of an empty string.
* An issue was fixed that caused a memory leak in the erpt system module.
* This would eventually cause a system crash after ~540 reports were generated without rebooting.
* A number of minor improvements were made to improve mesosphere's accuracy.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 0.19, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.19.0).
Atmosphère 0.19.4
**0.19.4** is Atmosphère's fiftieth official release.
fusee-primary was last updated in: **0.19.3**.
With thanks to the @switchbrew team, Atmosphère 0.19.4 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.0.
The following was changed since the last release:
* Support was added for 12.0.3.
* A number of minor issues were fixed, including:
* An issue was fixed that could cause heap memory corruption when allocation was highly contended.
* An issue was fixed that could cause sleep to fail under certain conditions.
* An issue was fixed that could cause a scheduler slow path to be taken more often than necessary.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 0.19, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.19.0).
Atmosphère 0.19.3
**0.19.3** is Atmosphère's forty-ninth official release.
fusee-primary was last updated in: **0.19.3**.
With thanks to the @switchbrew team, Atmosphère 0.19.3 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.0.
The following was changed since the last release:
* Support was added for 12.0.2.
* A number of minor issues were fixed, including:
* An issue was fixed in dns.mitm that caused a crash when games attempted to resolve the IP address of nullptr.
* An issue was fixed in erpt that would cause an abort when booting without having ever booted stock previously.
* An issue was fixed in (file-based) emummc that caused an error on system format/downloading certain games.
* General system stability improvements to enhance the user's experience.
For information on the featureset supported by 0.19, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.19.0).
Atmosphère 0.19.2
**0.19.2** is Atmosphère's forty-eighth official release.
fusee-primary was last updated in: **0.19.2**.
With thanks to the @switchbrew team, Atmosphère 0.19.2 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.0.
**Note**: The erpt build in the 0.19.0 zip was updated on 2021/04/30 at 2:50 PM PST to fix a crash when booting without a pre-existing erpt savefile. The updated zip has a build hash of "-14ed4e40".
The following was changed since the last release:
+ Atmosphère's components were further updated to reflect latest official behaviors as of 12.0.0.
+ Notably, `erpt` was updated to implement the new forced shutdown detection feature.
+ When a forced-shutdown occurs, an erpt_report will be generated and saved to the SD card on the next boot.
+ Atmosphere-libs was updated to use GCC 11 (latest devkitA64/devkitARM releases).
+ Initial inspections show mild-to-moderate optimizer improvements in several important places (kernel is 0x3000 smaller).
+ General system stability improvements to enhance the user's experience.
+ A number of minor issues were fixed, including:
+ A bug was fixed that caused a black screen when attempting to boot firmware versions 2.0.0-4.1.0.
+ A bug was fixed that caused sm to abort when at the session limit, rather than returning error codes.
+ A bug was fixed that allowed for resource exhaustion on 12.0.0, under certain circumstances.
+ Several issues were fixed, and usability and stability were improved.
For information on the featureset supported by 0.19, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.19.0).
Atmosphère 0.19.1
**0.19.1** is Atmosphère's forty-seventh official release.
fusee-primary was last updated in: **0.17.0**.
With thanks to the @switchbrew team, Atmosphère 0.19.1 is bundled with [hbl](https://github.com/switchbrew/nx-hbloader) 2.4.1, and [hbmenu](https://github.com/switchbrew/nx-hbmenu) 3.4.0.
The following was changed since the last release:
* An issue was fixed that caused a fatal error when using official `migration` services to transfer data between consoles.
* An issue was fixed in `ncm` that caused an error when the OS tried to enumerate installed SD card content.
* Several issues were fixed, and usability and stability were improved.
And the following was changed in 0.19.0:
* Support was added for 12.0.0.
* `mesosphère` was updated to reflect the latest official kernel behavior.
* `sm`, `boot2`, `pgl` were updated to reflect the latest official behaviors.
* **Please Note**: 12.0.0 added a new protocol for IPC ("tipc"), which has been freshly reimplemented in its entirety.
* It is possible there may be as of yet unfound issues; if there are, please send the appropriate crash reports to SciresM (`SciresM#0524` on discord).
* Homebrew which uses atmosphere extensions (including the mitm API) will need to be re-compiled in order to function on 0.19.0.
* I apologize for this, but it's unavoidable for technical reasons. If you're affected by this and mad about it, please contact SciresM to complain.
* `erpt` was partially updated to reflect the latest official behaviors.
* New features were added to erpt to track the activity of running applets, and to detect when a forced shutdown occurs.
* These behaviors have been temporarily stubbed, as they are not necessary for 12.0.0 to run (and their outputs won't be saved anywhere).
* A future atmosphère update will implement these behaviors, in the interest of reflecting official logic as faithfully as we can.
* Atmosphère no longer uses the /contents/ folder for its own programs.
* Atmosphère's system modules are now bundled together in the single file "stratosphere.romfs".
* For those working on developing for atmosphère, executables inside the /contents/ directory will be preferred to those in "stratosphere.romfs".
* **Please Note**: In order to facilitate this change (and the desired behavior), the first time you boot after extracting a release zip, atmosphère system modules inside /contents/ will be deleted.
* This will have no impact on user programs (it only removes programs with specific program ids).
* Improvements were made to mesosphere, including:
* An extension InfoType was added for getting the current process handle, without having to spawn a thread and do IPC with oneself.
* An issue was fixed in SvcSetDebugThreadContext.
* An issue was fixed when doing IPC with user buffers.
* Support was fixed for toggling the custom setting `usb!usb30_force_enabled` on 9.0.0+.
* This was broken by Nintendo's introducing a dependency that made USB a requirement to launch before custom settings are parsed.
* Since the fix, you can now toggle the setting (as you could prior to atmosphère 0.9.4), and it will work as expected.
* **Please Note**: Enabling USB 3.0 often severely impacts wireless communications.
* Because of this, the setting will default to off. If you experience issues with it enabled, consider disabling it.
* A warning was added to daybreak when resetting the console to factory settings.
* Substantial work was completed towards atmosphere's upcoming implementation of the host target connection protocol.
* Once completed, users will be able to interact with a Switch running atmosphère via a PC application ("Starlink") currently under development.
* Planned eventual features for connected consoles include a gdbstub, interacting with memory (for cheat development), streaming gameplay audio and video, and accessing the Switch's SD card filesystem.
* Switch homebrew will also have access to a (configurable and sandboxed) filesystem on the host PC, while connected.
* Towards this end, the following was accomplished:
* The "htc" system module was reimplemented completely.
* The system module which provides remote access to the SD card was reimplemented completely.
* This is currently the active focus of atmosphère's development.
* **Please Note**: Support is not yet completed, and users are disadvised from interacting with the related settings for the time being, unless they particularly know what they're doing.
* A number of minor issues were fixed, including:
* A bug was fixed in `dmnt` that could cause a fatal when launching certain games with cheats active.
* An issue was fixed that could cause an abort in `sm` when using a large number of custom system modules.
* An issue was fixed that prevented launching gamecards on 1.0.0.
* Minor issues were fixed in the cheat virtual machine's behavior.
* Several issues were fixed, and usability and stability were improved.
For information on the featureset supported by 0.19, please see [the official release notes](https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.19.0).