Commit Graph

68 Commits

Author SHA1 Message Date
Michael Scire
2f9b9d5e7f ams: basic support for compiling with gcc 15 2025-05-09 12:10:11 -07:00
Michael Scire
20ae7f3037 fs.mitm: add and use memlet module to temporarily steal applet memory while building romfs images.
Starting in 20.0.0, the browser needs more applet memory to function, so we can't steal as much any more.
Thus, we now steal 14 MB on 20.0.0+ instead of 40MB.

However, since this reduces memory available for custom system modules, we are adjusting to compensate.
ams.mitm's heap size has been reduced from 32MB to 12MB (recovering 20MB).
In addition, fs.mitm now uses a new mechanism for stealing memory from the applet pool while romfs is being built.

On net, we are compromising:
    * Custom sysmodules lose memory available to them.
        On 19.0.0/AMS 1.8.0, there was 30 MB available for custom sysmodules.
        Stealing 14 MB instead of 40 MB, we lose 26 MB of that. Reducing ams.mitm's usage will gain us back 20.
        Nintendo also appears to...use 4 extra MB, in 20.0.0, from my test homebrew.
        So on 20.0.0/AMS 1.9.0, there should be 20 MB available for custom sysmodules.
        On the bright side, on <20.0.0/AMS 1.9.0, I guess there will be 50 MB available for custom sysmodules now?
    * totk mods will lose the ability to...put every file in the romfs on sd card. There will be some unknown maximum filecount for totk mods.
        On the bright side, implementing the transient memory stealing should improve compatibility for some mods which strictly add files?
2025-05-09 12:10:10 -07:00
Michael Scire
b6ea249224 ncm: update to implement new ContentMetaDatabase function for 20.0.0 2025-05-09 12:10:08 -07:00
Michael Scire
2125f3c404 ncm: better detect + fix 17 brick after-the-fact
This adds detection for missing-save or empty-save, and rebuilds in either case.
2023-10-16 12:30:44 -07:00
Michael Scire
c9a576e990 ncm: update for new 17.0.0 apis 2023-10-12 09:22:29 -07:00
Michael Scire
af0d008900 ncm: alignment was changed for PlaceHolderId/ContentId in 16.0.0 2023-02-23 09:00:38 -07:00
Michael Scire
f4a976c2c7 ncm: Add IntegratedContent*Impl 2023-02-23 09:00:37 -07:00
Michael Scire
a203daa849 ncm: first pass at ContentManagerImpl refactor (missing the IntegratedImpls, won't link) 2023-02-23 09:00:37 -07:00
Michael Scire
1465b1447b libstrat: make build with new ncm/fs api changes (sysmodules probably fail to build) 2023-02-23 09:00:35 -07:00
Michael Scire
3cba51b85f boot2: update for 16.0.0 2023-02-23 09:00:35 -07:00
Michael Scire
b2232894f3 ncm: update enums, refactor comparison operators 2022-10-18 11:10:46 -07:00
Michael Scire
9d15378a54 boot2: launch new eth sysmodule after bsdsockets 2022-10-12 09:15:47 -07:00
Michael Scire
e3da8b8cb1 ncm: update for new add on content/attr changes 2022-10-12 09:15:45 -07:00
Michael Scire
bbb682ea36 ncm: GetContentAccessibilities, GetContentInfo* 2022-10-12 09:15:44 -07:00
Michael Scire
932db3b92e ams: address some warnings when building with gcc-12 2022-10-12 09:15:38 -07:00
Michael Scire
6a5d2ced4b ams: globally prefer R_RETURN to return for ams::Result 2022-04-04 17:46:58 -07:00
Michael Scire
6f4618ea60 ams: use R_SUCCEED, R_THROW globally 2022-04-04 17:46:57 -07:00
Michael Scire
797a6deaf3 ncm: hot take, uninitialized data bad 2022-03-23 09:16:03 -07:00
Michael Scire
396a63e5bb boot2: launch omm before am 2022-03-23 09:16:02 -07:00
Michael Scire
ac73be8eae sf: add new debug-interface-id in cmif out header 2022-03-23 09:15:59 -07:00
Michael Scire
7325bd608e libstrat: misc fixes for unused arg warnings 2022-03-23 09:15:58 -07:00
Michael Scire
39047de5c2 ncm: update client code to better reflect latest sysupdate 2022-03-23 09:15:56 -07:00
Michael Scire
d7a9c7ec4c ams: support building unit test programs on windows/linux/macos 2022-03-23 09:15:46 -07:00
Michael Scire
960c5c19f9 ams: improve offsetof style consistency 2021-10-26 01:11:10 -07:00
Michael Scire
3bef5b7d5a ams: allow bootloader to merely approximate correct target firmware 2021-10-15 23:54:37 -07:00
Michael Scire
11e9dcfe11 os: add FlushDataCache 2021-10-15 23:54:36 -07:00
Michael Scire
3e33fb6361 strat: use m_ for member variables 2021-10-15 23:54:35 -07:00
Michael Scire
3b5f56ab9f ams: replace most remaining operator & with std::addressof 2021-10-15 23:54:34 -07:00
Michael Scire
e2df2f98a3 strat: always use explicit result namespacing 2021-10-15 23:54:33 -07:00
Adubbz
ea0bb620f2 settings: implement KeyValueStore (#1659)
* settings: implement KeyValueStore and dependencies

* settings: update KeyValueStore for recent refactoring

* settings: address feedback
2021-10-15 23:54:33 -07:00
Michael Scire
843dc8e521 libstrat: fix compilation without pre-compiled header/without lto 2021-10-07 23:06:28 -07:00
Michael Scire
002422d5dc ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-07 23:06:25 -07:00
Michael Scire
c68298a00e stratosphere: use SdkMutex/SdkRecursiveMutex over Mutex 2021-10-07 23:06:22 -07:00
Adubbz
4afce6965f ncm: updated to 13.0.0 2021-09-19 10:35:35 -07:00
Adubbz
66104b830a ncm: skeleton new commands 2021-09-19 10:35:34 -07:00
Michael Scire
9eeafc6919 fix dmnt.gen2 title id (not sure how I typo'd this) 2021-09-19 10:35:26 -07:00
Michael Scire
f29660c335 boot2: launch dmnt.gen2 over dmnt, when using htc 2021-09-19 10:35:26 -07:00
SciresM
277d2193e2 LogManager: implement system module, client api, logging api (#1617)
Some notes:

* Unless `atmosphere!enable_log_manager` is true, Nintendo's log manager will be used instead.
  * This prevents paying memory costs for LM when not enabling logging.
  * To facilitate this, Atmosphere's log manager has a different program id from Nintendo's.
  * `atmosphere!enable_htc` implies `atmosphere!enable_log_manager`.
* LogManager logs to tma, and the SD card (if `lm!enable_sd_card_logging` is true, which it is by default).
* Binary logs are saved to `lm!sd_card_log_output_directory`, which is `atmosphere/binlogs` by default.
2021-09-19 10:35:25 -07:00
Michael Scire
dc3f54a713 ams: std::optional -> util::optional 2021-07-12 01:59:51 -07:00
Michael Scire
2fe065b590 tipc/sm: various fixes for issues 2021-04-11 03:59:24 -07:00
Michael Scire
1861791c1c ams: remove TYPED_STORAGE() macro in favor of template 2021-04-11 03:59:03 -07:00
Michael Scire
b70fea933c tio: add stub sysmodule to host target io server 2021-04-11 03:58:56 -07:00
Michael Scire
1a5134d2d2 htc: skeleton main file/sysmodule dir 2021-04-11 03:58:27 -07:00
Michael Scire
28d9b78ff8 ncm: update for new sf semantics 2021-02-02 12:16:22 -08:00
Michael Scire
637c44f64d libstrat: convert to experimental new (super-accurate) sf allocation semantics 2021-02-02 12:16:20 -08:00
Michael Scire
1aa8a27f17 fs: move file storage to common 2020-12-11 03:48:57 -08:00
Michael Scire
9f8f932383 ncm: loosen FirmwareVariation restrictions. 2020-08-01 15:30:59 -07:00
VolcaEM
2b3859e187 ncm: Mark two variables as const (#1078)
ncm: Mark two variables as const
2020-08-01 15:30:58 -07:00
Michael Scire
ffc68d133f ncm: rights ids were added in 2.0.0 2020-08-01 15:30:58 -07:00
SciresM
ecf8389efd sf: Change interface definition methodology (#1074)
* sf: Begin experimenting with new interface declaration format

* sf: convert fs interfaces to new format

* sf: finish conversion of libstrat to new definitions

* sf: convert loader to new format

* sf: convert spl to new format

* sf: update ncm for new format

* sf: convert pm to new format

* sf: convert ro/sm to new format

* sf: update fatal for new format

* sf: support building dmnt under new scheme

* sf: update ams.mitm for new format

* sf: correct invocation def for pointer holder

* fs: correct 10.x+ user bindings for Get*SpaceSize
2020-08-01 15:30:56 -07:00