| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
| |
If title ID is 0, there are no add ons, prevents wasting time looking for them.
|
|
|
| |
Prevents a crash if the load dir would be nullptr, instead logs an error and returns appropriately.
|
| |
|
|
|
|
|
|
| |
These can be generified together by using a concept type to designate
them. This also has the benefit of not making copies of potentially very
large arrays.
|
| |
|
| |
|
|\
| |
| | |
loader/nso: Minor refactoring
|
| |
| |
| |
| |
| |
| | |
This source file was utilizing its own version of the NSO header.
Instead of keeping this around, we can have the patch manager also use
the version of the header that we have defined in loader/nso.h
|
| |
| |
| |
| | |
These correspond to the NSOBuildHeader.
|
|/
|
|
|
| |
Instead, pass in the core timing instance and make the dependency
explicit in the interface.
|
| |
|
|
|
|
| |
Uses load/<title_id>/<mod_name>/cheats as root dir, file name is all upper or lower hex first 8 bytes build ID.
|
|
|
|
|
|
|
|
|
|
|
| |
fmt::format() returns a std::string instance by value, so calling
.c_str() on it here is equivalent to doing:
auto* ptr = std::string{}.c_str();
The data being pointed to isn't guaranteed to actually be valid anymore
after that expression ends. Instead, we can just take the string as is,
and provide the necessary formatting parameters.
|
| |
|
|
|
|
|
|
|
|
|
| |
We can just return a new instance of this when it's requested. This only
ever holds pointers to the existing registed caches, so it's not a large
object. Plus, this also gets rid of the need to keep around a separate
member function just to properly clear out the union.
Gets rid of one of five globals in the filesystem code.
|
|
|
| |
The decision was made to name them LayeredExeFS instead of just LayeredFS to differentiate from normal RomFS-based mods. The name may be long/unweildy, but conveys the meaning well.
|
|
|
|
| |
This will scan the <mod>/exefs dir for all files and then layer those on top of the game's exefs and use this as the new exefs. This allows for overriding of the compressed NSOs or adding new files. This does use the same dir as IPS/IPSwitch patch, but since the loader will not look for those they are ignored.
|
|
|
|
| |
When enabled, all exefs(es) will be copied to yuzu/dump/<title_id>/exefs.
|
|\
| |
| | |
patch_manager: Add support for dumping uncompressed NSOs
|
| |
| |
| |
| | |
When enabled in settings, PatchNSO will dump the unmodified NSO that it was passed to a file named <build id>.nso in the dump root for the current title ID.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* get rid of boost::optional
* Remove optional references
* Use std::reference_wrapper for optional references
* Fix clang format
* Fix clang format part 2
* Adressed feedback
* Fix clang format and MacOS build
|
|
|
|
|
|
| |
* remove unnecessary if-statements
* Addressed feedback
|
| |
|
|\
| |
| | |
content_archive/patch_manager: Lower log levels to eliminate some unnecessary logs
|
| |
| |
| |
| | |
Normal Program-type patches will still be logged to aid in debugging, but for others (mainly Control), it was moved to Debug.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| | |
fsmitm_romfsbuild: Add support for stubbing and IPS patches in LFS
|
| | |
|
| | |
|
|\ \
| | |
| | | |
ips_layer: Add support for IPSwitch executable patches
|
| | |
| | |
| | | |
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.
|
| | | |
|
| |/ |
|
| | |
|
| |
| |
| |
| | |
Reads as Update (NSP) in add-ons
|
|/
|
|
| |
Will prefer any installed update over the packed version.
|
|
|
|
| |
Avoid resource-heavy classes and remove quasi-duplicated code.
|
|
|
|
| |
While PatchExeFS operated on the entire directory, this function operates on the uncompressed NSO. Avoids copying decompression code to PatchManager.
|
| |
|
| |
|
|
|
| |
Command #5
|
| |
|
|
|
|
|
| |
Avoids the need to nest code quite a bit by early-exiting in error
cases.
|
|
|
|
|
|
| |
Given these are only added to the class to allow those functions to
access the private constructor, it's a better approach to just make them
static functions in the interface, to make the dependency explicit.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Several classes have a lot of non-trivial members within them, or don't
but likely should have the destructor defaulted in the cpp file for
future-proofing/being more friendly to forward declarations.
Leaving the destructor unspecified allows the compiler to inline the
destruction code all over the place, which is generally undesirable from
a code bloat perspective.
|
| |
|
|
|
|
| |
These includes were previously being satisfied indirectly.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
Right now only includes Updates, but should eventually contain all of the other patches we need.
|