Atmosphere 1.2.2

SciresM sort en catastrophe une nouvelle version de son Custom Firmware, afin de corriger certains bugs irritants. Notamment le nouveau service « sprofil » qui, s’il était utilisé, provoquait une erreur « 0xCAF6 (sprofile::ResultInvalidState()) ». Celui-ci est accompagné de la dernière version 3.5.0 de Homebrew Menu, les sigpatches non officielles sont quant à elles déjà disponibles.

↓ Nouveautés / Corrections (cliquer pour voir) ↓'

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.
  • 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.

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