| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Required some refactoring of retrieving patches in order for the frontend to pass the right information to ContentManager for deletion.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
Localize game icons
|
| |
| |
| | |
Co-authored-by: liamwhite <liamwhite@users.noreply.github.com>
|
| | |
|
|/ |
|
| |
|
| |
|
|
|
|
|
| |
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
We should not apply any mods when dumping a game's RomFS.
|
|
|
|
|
|
|
|
|
|
| |
If someone else wants to support other mod formats in the SDMC
directory, that can be added later. For now, just allow RomFS modding
here and force people to do other types of mods the old way.
Addresses review comments.
Co-authored-by: LC <mathew1800@gmail.com>
|
|
|
|
|
|
| |
Enables loading a mod directly from `[yuzu data
directory]/sdmc/atmosphere/contents/[title_id]`. For use with some
homebrew mod managers.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* common: fs: fs_types: Create filesystem types
Contains various filesystem types used by the Common::FS library
* common: fs: fs_util: Add std::string to std::u8string conversion utility
* common: fs: path_util: Add utlity functions for paths
Contains various utility functions for getting or manipulating filesystem paths used by the Common::FS library
* common: fs: file: Rewrite the IOFile implementation
* common: fs: Reimplement Common::FS library using std::filesystem
* common: fs: fs_paths: Add fs_paths to replace common_paths
* common: fs: path_util: Add the rest of the path functions
* common: Remove the previous Common::FS implementation
* general: Remove unused fs includes
* string_util: Remove unused function and include
* nvidia_flags: Migrate to the new Common::FS library
* settings: Migrate to the new Common::FS library
* logging: backend: Migrate to the new Common::FS library
* core: Migrate to the new Common::FS library
* perf_stats: Migrate to the new Common::FS library
* reporter: Migrate to the new Common::FS library
* telemetry_session: Migrate to the new Common::FS library
* key_manager: Migrate to the new Common::FS library
* bis_factory: Migrate to the new Common::FS library
* registered_cache: Migrate to the new Common::FS library
* xts_archive: Migrate to the new Common::FS library
* service: acc: Migrate to the new Common::FS library
* applets/profile: Migrate to the new Common::FS library
* applets/web: Migrate to the new Common::FS library
* service: filesystem: Migrate to the new Common::FS library
* loader: Migrate to the new Common::FS library
* gl_shader_disk_cache: Migrate to the new Common::FS library
* nsight_aftermath_tracker: Migrate to the new Common::FS library
* vulkan_library: Migrate to the new Common::FS library
* configure_debug: Migrate to the new Common::FS library
* game_list_worker: Migrate to the new Common::FS library
* config: Migrate to the new Common::FS library
* configure_filesystem: Migrate to the new Common::FS library
* configure_per_game_addons: Migrate to the new Common::FS library
* configure_profile_manager: Migrate to the new Common::FS library
* configure_ui: Migrate to the new Common::FS library
* input_profiles: Migrate to the new Common::FS library
* yuzu_cmd: config: Migrate to the new Common::FS library
* yuzu_cmd: Migrate to the new Common::FS library
* vfs_real: Migrate to the new Common::FS library
* vfs: Migrate to the new Common::FS library
* vfs_libzip: Migrate to the new Common::FS library
* service: bcat: Migrate to the new Common::FS library
* yuzu: main: Migrate to the new Common::FS library
* vfs_real: Delete the contents of an existing file in CreateFile
Current usages of CreateFile expect to delete the contents of an existing file, retain this behavior for now.
* input_profiles: Don't iterate the input profile dir if it does not exist
Silences an error produced in the log if the directory does not exist.
* game_list_worker: Skip parsing file if the returned VfsFile is nullptr
Prevents crashes in GetLoader when the virtual file is nullptr
* common: fs: Validate paths for path length
* service: filesystem: Open the mod load directory as read only
|
|
|
|
| |
- Removes a dependency on core and input_common from common.
|
| |
|
|
|
|
|
|
|
| |
With this, only 19 usages of the global system instance remain within
the core library.
We're almost there.
|
|
|
|
|
|
|
|
|
| |
Makes our error coverage a little more consistent across the board by
applying it to Linux side of things as well. This also makes it more
consistent with the warning settings in other libraries in the project.
This also updates httplib to 0.7.9, as there are several warning
cleanups made that allow us to enable several warnings as errors.
|
|
|
|
|
| |
This isn't used within the function at all in any implementations, so we
can remove it entirely.
|
|
|
|
|
|
| |
We make it explicit that we're truncating arithmetic here to resolve
compiler warnings (even if the sizes weren't u32/u64 arithmetic
generally promotes to int :<)
|
|
|
|
|
| |
We can use these to avoid typing the same type redundantly. This way, if
these ever change, only a single location needs to be modified.
|
|
|
|
|
| |
These functions are only used within this translation unit, so we can
make them internally linked.
|
|
|
|
| |
Same behavior, minus unnecessary inclusions where not necessary.
|
|
|
|
|
| |
Top level const will always be ignored in this case, so it can be
removed.
|
| |
|
| |
|
|
|
|
|
|
| |
Changes many patch_manager functions to use a case-less variant of
GetSubdirectory. Fixes patches not showing up on *nix systems when
patch directories are named with odd cases, i.e. `exeFS'.
|
|
|
|
| |
- helpful to disambiguate Kernel::Memory namespace.
|
|
|
|
|
|
|
|
|
|
|
| |
Allows reporting more cases where logic errors may exist, such as
implicit fallthrough cases, etc.
We currently ignore unused parameters, since we currently have many
cases where this is intentional (virtual interfaces).
While we're at it, we can also tidy up any existing code that causes
warnings. This also uncovered a few bugs as well.
|
| |
|
|
|
|
|
|
| |
* Adds check for disabled cheats to prevent them from being added to the CheatList
* Address feedback
|
| |
|
| |
|
| |
|
|
|
| |
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.
|