Commit Graph

739 Commits

Author SHA1 Message Date
Michael Scire
944ff3d5f6 ncm: fix two comments 2023-10-16 12:30:44 -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
Liam
8d495c256e fs: add missing stub for GetProgramId 2023-10-16 12:30:44 -07:00
Michael Scire
132558c338 erpt: amend min-version for latest CreateReportWithAttachments 2023-10-12 09:22:33 -07:00
Michael Scire
5d5699a7e8 ncm: work around change in Nintendo save handling behavior
Static save files do not require an entry in the save data indexer to mount.
Prior to 17.0.0, save data files were considered static if userid was 0.
In 17.0.0+, only 8000000000000000 is static.

However, some users using cfw do not have an entry for 8000000000000120 in the indexer,
for various reasons (but mostly manual nand-restore, I think). Thus, on boot of 17.0.0+,
FS will say 8000000000000120 is not present (not in indexer), and NCM will create it anew.

The 8000000000000120 save will then be empty, and then the firmware can't boot.

To workaround this, logic has been re-enabled on 17.0.0+ for building the content meta database.
Thus, if the user encounters this error, the 8000000000000120 save will be emptied, but then
it will be automatically reconstructed, fixing the problem.
2023-10-12 09:22:32 -07:00
Michael Scire
338d7ce940 bpc.mitm/exo: support pmic reboot/shutdown on mariko (thanks @CTCaer) 2023-10-12 09:22:32 -07:00
Michael Scire
77ae1814ff erpt: remove deprecated fields, they didn't actually change IDs, just the mapping between id and name table index 2023-10-12 09:22:32 -07:00
Michael Scire
054eeddc0c erpt: Add basic (TODO-impl post-prerelease) support for 17.0.0 changes 2023-10-12 09:22:30 -07:00
Michael Scire
ee56715f3f fs: update OpenCodeFileSystem abi for 17.0.0 2023-10-12 09:22:30 -07:00
Michael Scire
c9a576e990 ncm: update for new 17.0.0 apis 2023-10-12 09:22:29 -07:00
Michael Scire
38cc50294b exo/spl: Add new EsCommonKeyType 2023-10-12 09:22:29 -07:00
Michael Scire
5c8a8adc9a fusee/exo: implement the usual changes for new firmware support 2023-10-12 09:22:28 -07:00
Liam
540ca1351a dmnt.gen2: enable attach to arbitrary program id 2023-10-12 09:22:20 -07:00
Michael Scire
c3dc418a28 ams: add enum recognition for 16.1.0 2023-08-21 17:26:50 -07:00
Michael Scire
ea17b60da6 fssystem: fix typo error in BucketTree::Visitor::MoveNext 2023-08-21 17:26:50 -07:00
Liam
05852b0ffd libstrat: comment fixes for fssystem 2023-08-21 17:26:50 -07:00
Michael Scire
450218773f libstrat: fix more minor style issues pointed out by Pharynx 2023-08-21 17:26:49 -07:00
Michael Scire
f6abe32331 fssystem: fix stupid issue in NodeBuffer move-ctor
Code compiles with this constructor deleted, so it wasn't used, but even so...
2023-08-21 17:26:49 -07:00
Michael Scire
390356cd9e mitm: fix errant include on non-hos 2023-08-21 17:26:49 -07:00
SciresM
4e7ae82b38 romfs/ams.mitm/pm: refactor to dynamically steal heap for certain games. (#2122)
* fs.mitm: skeleton the use of special allocation in romfs build

* pm: add api for ams.mitm to steal application memory

* pm/mitm: okay, that api won't work, try a different one

* romfs: revert memory usage increases; we'll handle torture games case-by-case.

* pm/romfs: first (broken?) pass at dynamic heap.

I cannot wait to figure out all the ways this is wrong.

* Release the dynamic heap a little more eagerly

* romfs: animal crossing is also not a nice game

* romfs: fix issues in close-during-build

* romfs: zelda is a blight upon this earth
2023-05-14 03:16:42 -07:00
Michael Scire
cd0fc2c1d5 ams: recognize 16.0.3('s FS) 2023-05-08 18:06:09 -07:00
Michael Scire
5d883f22c8 ams: fix compilation with gcc 13 2023-05-08 18:06:07 -07:00
Michael Scire
ecc8b18111 ams: add 16.0.2 enum 2023-04-17 20:40:16 -07:00
Michael Scire
7340e2eaba docs: bump version, 16.0.1 exists too 2023-04-17 14:19:32 -07:00
Michael Scire
db46d9d45e settings: add os guard 2023-03-13 17:17:09 -07:00
ndeadly
2f6ea652d7 Add system setting to mirror bluetooth pairing database to sd card (#1787)
* ams_mitm: add ability to mirror bluetooth device pairing database to sd card via a system setting

* ams_mitm: address requested stylistic changes

* ams_mitm: make use of R_SUCCEED macro

* ams_mitm: use settings::BluetoothDevicesSettings instead of libnx type

* ams_mitm: fix logic error when truncating pairing database on read

* Update .ini comment

* ams_mitm: missing R_TRY around call to fs::FlushFile

* stratosphere: remove union from BluetoothDevicesSettings type

---------

Co-authored-by: ndeadly <24677491+ndeadly@users.noreply.github.com>
2023-03-13 17:17:08 -07:00
Michael Scire
a1e186b715 windows: re-enable lto for os/fs libraries 2023-03-13 17:17:07 -07:00
Michael Scire
099982f909 windows: add brave new mingw compat hook for gcc 12.2.0+ 2023-03-13 17:17:06 -07:00
Michael Scire
51e932c88f os: add UnsafeMemory apis 2023-03-13 17:17:04 -07:00
Michael Scire
6cb324a89c erpt: update server code for 16.0.0 logic changes 2023-03-13 17:17:03 -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
7a77f2ac8d ncm: fix inversion in activation skipping 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
8cdda02e4d ncm: fix copy/paste error in switch case 2023-02-23 09:00:36 -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
c93b437ad7 erpt: update for new ids 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
429f3aa49d kern: better divide non-secure size, don't waste fatal memory unless necessary 2023-02-23 09:00:33 -07:00
Michael Scire
712c21a744 gpio: really not sure how this works before, lol 2023-02-23 09:00:26 -07:00
Michael Scire
5ba19935cb erpt: fix multiple issues with automatic report cleanup (thanks @yellows8)
* Setting retrieval was performed before the call that used the setting.
* Call to detect number of files passed incomplete path and was guaranteed to fail.
* Call to delete reports passed incomplete path and was guaranteed to do nothing.
2023-01-24 14:39:17 -07:00
Michael Scire
b2232894f3 ncm: update enums, refactor comparison operators 2022-10-18 11:10:46 -07:00
Michael Scire
363fba0cf3 lr: new AOC commands use MapAlias for paths... 2022-10-12 09:15:52 -07:00
Michael Scire
cfe81a7eb3 kern: update for new device map semantics 2022-10-12 09:15:49 -07:00
Michael Scire
d408819335 os: update os namespace for 15.0.0, loader/ro: update to use csrng, spl: bump max sessions 2022-10-12 09:15:47 -07:00
Michael Scire
9d15378a54 boot2: launch new eth sysmodule after bsdsockets 2022-10-12 09:15:47 -07:00
Michael Scire
c75c993bf3 erpt: update IDs for 15.0.0 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
07494b1d42 lr: add support for location resolver disable commands 2022-10-12 09:15:45 -07:00
Michael Scire
bbb682ea36 ncm: GetContentAccessibilities, GetContentInfo* 2022-10-12 09:15:44 -07:00
Michael Scire
101b637afd ams/fuse: update version numbers, update DramId read logic 2022-10-12 09:15:44 -07:00
Michael Scire
11cad64de1 diag: fix process name cache 2022-10-12 09:15:43 -07:00
Michael Scire
f660acb0cd fs/emummc: fix DirectoryRedirectionFileSystem not stripping prefix 2022-10-12 09:15:43 -07:00
Michael Scire
5e73321aec os: pthread_yield is deprecated, don't use it on linux 2022-10-12 09:15:41 -07:00
Michael Scire
d421817c86 os: silence warning building with gcc 12 on windows 2022-10-12 09:15:41 -07:00
Michael Scire
0ae75a5fd4 fs: add extension GetEntryList to AesCtrCounterExtendedStorage 2022-10-12 09:15:40 -07:00
Michael Scire
83aaf4904b os: fix whoops in SetMemoryPermission on windows 2022-10-12 09:15:40 -07:00
Michael Scire
019a7600c7 os: implement MemoryHeapManager, SetMemoryAttribute 2022-10-12 09:15:40 -07:00
Michael Scire
932db3b92e ams: address some warnings when building with gcc-12 2022-10-12 09:15:38 -07:00
Michael Scire
696cfb4862 lr: update capacity constants to reflect 12.0.0 changes 2022-10-12 09:15:37 -07:00
Michael Scire
95b3d39918 strat: update for code changes found in boot (closes #1797) 2022-10-12 09:15:37 -07:00
Michael Scire
b91294d3b9 ams: fs accuracy fixes, bump to 1.3.2 2022-04-29 16:14:24 -07:00
Michael Scire
01848bf7ac os: fix various regressions since 1.3.1 2022-04-29 16:14:23 -07:00
Michael Scire
ee0cb14b97 os: fix minor bug (and simplify) MapProcessCodeMemory 2022-04-29 16:14:22 -07:00
Michael Scire
2702120d79 ro/os: use os primitives for MapProcessCodeMemory 2022-04-29 16:14:22 -07:00
Michael Scire
e5051619b6 loader: update for changes in 14.0.0 2022-04-29 16:14:21 -07:00
Michael Scire
aecf739a7c loader: use os apis for interacting with process memory 2022-04-29 16:14:21 -07:00
Michael Scire
1ac83a92e5 strat: fix linux clang build 2022-04-29 16:14:20 -07:00
Michael Scire
91ef9bb92c fs: fix null check in AesXtsStorageExternal 2022-04-29 16:14:19 -07:00
Michael Scire
0841242371 os: silence a maybe-uninit warning 2022-04-29 16:14:19 -07:00
Michael Scire
738f57cd37 os: refactor multi wait apis to better match Nintendo's latest implementation 2022-04-29 16:14:18 -07:00
Michael Scire
a6c096e833 fs: QueryEntry uses NonSecure buffers 2022-04-29 16:14:18 -07:00
Michael Scire
a309a1273e fs: fix memory leak when path is reallocated (closes #1842) 2022-04-29 16:14:17 -07:00
Michael Scire
6d0e0bc135 os: broadcast, not signal, on release more than 1 sema 2022-04-29 16:14:17 -07:00
Michael Scire
590cdaf022 ams: add enum recognition for 14.1.0 2022-04-04 17:47:04 -07:00
Michael Scire
ddd98cb20b util: update some bit utility logic 2022-04-04 17:47:04 -07:00
Michael Scire
0a6fec909b fs: update signature for VerifySign1 2022-04-04 17:47:03 -07:00
Michael Scire
1aa71e6e44 fssystem: add unique lock apis 2022-04-04 17:47:03 -07:00
Michael Scire
08787303a2 fs: update romfs types 2022-04-04 17:47:02 -07:00
Michael Scire
8127091934 fs: remove dead code 2022-04-04 17:47:02 -07:00
Michael Scire
37089309b2 fs: update LocalFileSystem 2022-04-04 17:47:01 -07:00
Michael Scire
f2480c7b33 fs: fixup all OperateRange implementations 2022-04-04 17:47:01 -07:00
Michael Scire
b4da4ddb7e os: add DetachIoRegionHandle 2022-04-04 17:47:01 -07:00
Michael Scire
bcaf3e8cd9 util: LockFreeAtomicType (for time) 2022-04-04 17:47:00 -07:00
Michael Scire
d47c54c70b strat: add windows socket api, linux/macos TODO 2022-04-04 17:47:00 -07:00
Michael Scire
87f3e02042 fs: also update comment, for locking 2022-04-04 17:46:59 -07:00
Michael Scire
08c3748b87 fs: fix inverted optional-lock condition 2022-04-04 17:46:59 -07:00
Michael Scire
45db9a519b fs: implement new 14.0.0 spl-ctr dispatch semantics 2022-04-04 17:46:58 -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
99fba44125 fs: update IStorage::Check functions for 14.0.0 2022-04-04 17:46:57 -07:00
Michael Scire
e7d6626ef6 fs: update a few loose missed results 2022-04-04 17:46:56 -07:00
Michael Scire
cdadb5e9a2 fs: update nca drivers (and dependents/callees) for 14.0.0 changes 2022-04-04 17:46:56 -07:00
Michael Scire
05fdf2ae75 fs: update HashGeneratorFactorySelector to reflect 14.0.0 2022-04-04 17:46:55 -07:00
SciresM
974526f708 fs: reduce path size 0x28 -> 0x18
This implements two optimizations on fs::Path, which N added in 12.0.0.

The current structure looks like: 

```cpp
struct Path {
    const char *m_str; // Points to the read-only path string
    char *m_write_buffer_buffer; // Part of std::unique_ptr<char[], ams::fs::impl::Deleter>
    ams::fs::impl::Deleter m_write_buffer_deleter; // Parse of std::unique_ptr<char[], ams::fs::impl::Deleter>, stores the size of the buffer.
    size_t m_write_buffer_length; // Copy of the write buffer's size accessible to the Path() structure.
    bool m_is_normalized; // Whether the path buffer is normalized
};
```

This is pretty wasteful. The write buffer size is stored twice, wasting 8 bytes, because one copy of the size isn't accessible to the path.

In addition, due to alignment, the bool wastes 7 padding bytes.

This commit:

* Encodes normalized in the low bit of the write buffer length, saving 8 bytes.
* Use a custom WriteBuffer class rather than generic unique_ptr, to avoid needing to store the WriteBuffer twice.


These each save 8 bytes, for a final size of 0x18 rather than 0x28.
2022-04-04 17:46:55 -07:00
Michael Scire
7a0bfc4397 util: add pointer utils, use to constrain fs pointers 2022-04-04 17:46:54 -07:00
Michael Scire
2c630d5514 fs: fix removed include 2022-04-04 17:46:53 -07:00
Michael Scire
0f8ae6e04b fs: for my sanity, begin tracking version where code was last checked for accuracy 2022-04-04 17:46:53 -07:00
Michael Scire
726a7efddf fs: fix out of bounds access when parsing directory paths 2022-03-23 13:45:36 -07:00
Michael Scire
652828c4f3 strat: fix clang build 2022-03-23 11:25:20 -07:00