| Age | Commit message (Collapse) | Author |
|
|
|
Returns the raw bytes of the NACP file. Needed for GetApplicationControlData which returns the raw, unprocessed NACP to the game.
|
|
* remove unnecessary if-statements
* Addressed feedback
|
|
vfs: Remove InterpretAsDirectory and related functions
|
|
Prevents a potential bug when using RLE records in an IPS patch.
|
|
Also gets rid of an unused variable.
|
|
patch_manager: Add support for LayeredFS on DLC RomFS
|
|
When writing VFS, it initally seemed useful to include a function to in-place convert container files into directories in one homogenous directory structure, but re-evaluating it now there have been plenty of chances to use it and there has always been a better way. Removing as it is unused and likely will not be used.
|
|
content_archive: Minor reorganization changes
|
|
XCI: Add function for checking the existence of the program NCA
|
|
|
|
savedata_factory: Add DeviceSaveData and fix TemporaryStorage
|
|
Prevents a Entry from appearing in the list twice if the user has it installed in two places (e.g. User NAND and SDMC)
|
|
|
|
std::move doesn't actually dereference the data, so it doesn't matter
whether or not the type is null.
|
|
This is only ever used within the cpp file, so it can just be an
internal function.
|
|
This is the same as using std::any_of with an inverted predicate.
|
|
The constructor alone is pretty large, the reading code should be split
into its consistuent parts to make it easier to understand it without
having to build a mental model of a 300+ line function.
|
|
Each header is 512 bytes in size, which is kind of an excessive amount
to copy all the time when it's possible to avoid doing so.
|
|
The only reason the getter existed was to check whether or not the
program NCA was null. Instead, we can just provide a function to query
for the existence of it, instead of exposing it entirely.
|
|
content_archive/patch_manager: Lower log levels to eliminate some unnecessary logs
|
|
Required for TemporaryStorage saves (in addition to SaveDataType)
|
|
Uses the same path as SaveData except with UID 0. Adds a warning if UID is not 0.
|
|
shared_ptrs where applicable
The data retrieved in these cases are ultimately chiefly owned by either
the RegisteredCache instance itself, or the filesystem factories. Both
these should live throughout the use of their contained data. If they
don't, it should be considered an interface/design issue, and using
shared_ptr instances here would mask that, as the data would always be
prolonged after the main owner's lifetime ended.
This makes the lifetime of the data explicit and makes it harder to
accidentally create cyclic references. It also makes the interface
slightly more flexible than the previous API, as a shared_ptr can be
created from a unique_ptr, but not the other way around, so this allows
for that use-case if it ever becomes necessary in some form.
|
|
These are just the size of the data being passed in, so we can specify
that via the size() member function.
|
|
Falls back to title ID + 0x1000, which is what HOS does.
|
|
Normal Program-type patches will still be logged to aid in debugging, but for others (mainly Control), it was moved to Debug.
|
|
Avoids printing live keys in the general log.
|
|
crypto: Add support for full key derivation
|
|
ips_layer: Silence truncation and conversion warnings
|
|
patch_manager: Return a std::unique_ptr from ParseControlNCA() and GetControlMetadata() instead of a std::shared_ptr
|
|
GetControlMetadata() instead of a std::shared_ptr
Neither of these functions require the use of shared ownership of the
returned pointer. This makes it more difficult to create reference
cycles with, and makes the interface more generic, as std::shared_ptr
instances can be created from a std::unique_ptr, but the vice-versa
isn't possible. This also alters relevant functions to take NCA
arguments by const reference rather than a const reference to a
std::shared_ptr. These functions don't alter the ownership of the memory
used by the NCA instance, so we can make the interface more generic by
not assuming anything about the type of smart pointer the NCA is
contained within and make it the caller's responsibility to ensure the
supplied NCA is valid.
|
|
We can just compare the existing std::vector instance with a constexpr
std::array containing the desired match. This is lighter resource-wise,
as we don't need to allocate on the heap.
|
|
Makes the layout of the array consistent, by making all elements match,
instead of special-casing the first one.
|
|
Adds missing includes to prevent potential compilation issues in the
future. Also moves the definition of a struct into the cpp file, so that
some includes don't need to be introduced within the header.
|
|
We don't need to make a copy of the read data, so we can std::move it
into the make_shared call here.
|
|
Makes type conversions explicit to avoid compiler warnings.
|
|
fsmitm_romfsbuild: Add support for stubbing and IPS patches in LFS
|
|
ips_layer: Add support for IPSwitch executable patches
|
|
|
|
|
|
Reads as Update (NSP) in add-ons
|
|
Will prefer any installed update over the packed version.
|
|
|
|
|
|
|
|
Specifically bugs/crashes that arise when putting them in positions that are legal but not typical, such as midline, between patch data, or between patch records.
|
|
|
|
More accurately follows IPSwitch specification.
|
|
|