diff --git a/docs/changelog.md b/docs/changelog.md index d3f22406f..c6c1a5ce9 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,4 +1,16 @@ # Changelog +## 0.10.5 ++ Changes were made to the way fs.mitm builds images when providing a layeredfs romfs. + + Building romfs metadata previously had a memory cost of about ~4-5x the file table size. + + This caused games that have particularly enormous file metadata tables (> 4 MB) to exhaust fs.mitm's 16 MB memory pool. + + The code that creates romfs images was thus changed to be significantly more memory efficient, again. + + Memory requirements have been lowered from ~4x file table size to ~2x file table size + 0.5 MB. + + There is a slight speed penalty to this, but testing on Football Manager 2020 only took an extra ~1.5 seconds for the game to boot with many modded files. + + This shouldn't be noticeable thanks to the async changes made in 0.10.2. + + If you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact SciresM. + + Romfs building can be made even more memory efficient, but unless games show up with even more absurdly huge file tables it seems not worth the speed trade-off. ++ A bug was fixed that caused Atmosphere's fatal error context to not dump TLS for certain processes. ++ General system stability improvements to enhance the user's experience. ## 0.10.4 + With major thanks to @Adubbz for his work, the NCM system module has now been re-implemented. + This was a major stepping stone towards the goal of having implementations everything in the Switch's package1/package2 firmware. diff --git a/libraries/libstratosphere/source/ams/ams_bpc.c b/libraries/libstratosphere/source/ams/ams_bpc.c index 7f46a7c65..d04a69b72 100644 --- a/libraries/libstratosphere/source/ams/ams_bpc.c +++ b/libraries/libstratosphere/source/ams/ams_bpc.c @@ -38,9 +38,9 @@ Service *amsBpcGetServiceSession(void) { Result amsBpcRebootToFatalError(void *ctx) { /* Note: this takes in an sts::ams::FatalErrorContext. */ - /* static_assert(sizeof() == 0x350) is done at type definition. */ + /* static_assert(sizeof() == 0x450) is done at type definition. */ return serviceDispatch(&g_amsBpcSrv, 65000, .buffer_attrs = { SfBufferAttr_In | SfBufferAttr_HipcMapAlias | SfBufferAttr_FixedSize }, - .buffers = { { ctx, 0x350 } }, + .buffers = { { ctx, 0x450 } }, ); } diff --git a/libraries/libvapours/include/vapours/ams/ams_api_version.h b/libraries/libvapours/include/vapours/ams/ams_api_version.h index b443a5972..986ac169d 100644 --- a/libraries/libvapours/include/vapours/ams/ams_api_version.h +++ b/libraries/libvapours/include/vapours/ams/ams_api_version.h @@ -17,7 +17,7 @@ #define ATMOSPHERE_RELEASE_VERSION_MAJOR 0 #define ATMOSPHERE_RELEASE_VERSION_MINOR 10 -#define ATMOSPHERE_RELEASE_VERSION_MICRO 4 +#define ATMOSPHERE_RELEASE_VERSION_MICRO 5 #define ATMOSPHERE_RELEASE_VERSION ATMOSPHERE_RELEASE_VERSION_MAJOR, ATMOSPHERE_RELEASE_VERSION_MINOR, ATMOSPHERE_RELEASE_VERSION_MICRO