Releases: Atmosphere-NX/Atmosphere
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 2.4.1, and 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.
- The standalone also requires
- Once enabled, open the devkitPro provided-gdb (
aarch64-none-elf-gdb
for 64-bit orarm-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.
- The standalone stub exposes itself on port 22225 -- so the command to connect is
- 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.
- User is expected to send
- Please Note: The GDBstub is new and may have bugs/need work. If you find issues, please report them to
- 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.
- 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.
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.
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 2.4.1, and 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.
- Nintendo is finally transmitting data over the internet to certain consoles, which has allowed for validating our service implementation.
- 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.
- KThread::GetContextForSchedulerLoop was implemented in assembly (using static assertions to verify offset-of-context-in-struct is correct).
- 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.
- The new service added in 13.0.0 ("sprofile") was revised, and the data formats it expects was changed.
- 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 for unit tests.
- Please contact
- This facilitates writing unit tests for the kernel (and other atmosphère components) and running them under PC.
- 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.
- Initial cache management now better reflects official behavior.
- A build target was created to build targeting the qemu
- 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.
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 2.4.1, and 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.
- The new service added in 13.0.0 ("sprofile") was revised, and the data formats it expects was changed.
- 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 for unit tests.
- Please contact
- This facilitates writing unit tests for the kernel (and other atmosphere components) and running them under PC.
- 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.
- Initial cache management now better reflects official behavior.
- A build target was created to build targeting the qemu
- 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.
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 2.4.1, and 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
andloader
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.
- Please Note: If you are a developer who uses Atmosphere-libs, a number of changes here are breaking.
- 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.
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 2.4.1, and 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.
- Two new services ("sprofile") were added to
- 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.
- To control the directory where logs are saved, modify the
- 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.
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 2.4.1, and 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.
- Two new services ("sprofile") were added to
- 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.
- To control the directory where logs are saved, modify the
- 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.
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 2.4.1, and 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 theutilities
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
- To compensate for this, a script to insert a custom splash screen into a
- 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.
- 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.
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 2.4.1, and 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.
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 2.4.1, and 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.
- For more details, contact
- 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.
- This greatly simplifies key derivation logic by making it consistent on all firmwares.
- Erista units now use a custom TSEC firmware to manage key derivation.
- 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.
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 2.4.1, and 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.