summaryrefslogtreecommitdiffstats
path: root/src/core/file_sys/patch_manager.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* patch_manager: apply manual HTML patches when presentLiam2023-08-211-1/+8
|
* vfs: expand support for NCA readingLiam2023-08-151-18/+21
|
* configure_system: Implement with for looplat9nq2023-07-211-2/+2
|
* patch_manager: remove unnecessary GetSize callsLiam2023-06-161-5/+4
|
* Merge pull request #10591 from keve1227/localized-game-iconsliamwhite2023-06-071-1/+32
|\ | | | | Localize game icons
| * Fix typoKevin Sundqvist Norlén2023-06-031-1/+1
| | | | | | Co-authored-by: liamwhite <liamwhite@users.noreply.github.com>
| * Pick game icon based on the configured system languageKeve12272023-06-031-1/+32
| |
* | vfs: add vfs_cached for romfs buildLiam2023-06-031-2/+3
|/
* core/file_sys: fix alignment of BuildIdLiam2022-08-211-2/+2
|
* core/file_sys: fix BuildId paddingLiam2022-08-191-8/+6
|
* general: Convert source file copyright comments over to SPDXMorph2022-04-231-3/+2
| | | | | 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.
* patch_manager: Apply layered exefs patches from 'atmosphere' SD directorytech-ticks2022-04-071-25/+38
|
* general: Fix clang/gcc build errorsameerj2022-03-201-0/+4
|
* core: Reduce unused includesameerj2022-03-191-1/+0
|
* Dump patched exefs rather than baseKelebek12022-02-151-9/+9
|
* patch_manager: Do not apply LayeredFS mods when dumpingMorph2021-06-281-2/+4
| | | | We should not apply any mods when dumping a game's RomFS.
* core: Simplify SDMC mod loadinglat9nq2021-06-281-19/+6
| | | | | | | | | | 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>
* core: Support LayeredFS mod from SDMC directorylat9nq2021-06-281-2/+29
| | | | | | Enables loading a mod directly from `[yuzu data directory]/sdmc/atmosphere/contents/[title_id]`. For use with some homebrew mod managers.
* common: fs: Rework the Common Filesystem interface to make use of std::filesystem (#6270)Morph2021-05-261-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* common: Move settings to common from core.bunnei2021-04-151-1/+1
| | | | - Removes a dependency on core and input_common from common.
* file_sys: Consolidate common Title ID operationsMorph2020-12-081-2/+2
|
* patch_manager: Remove usages of the global system instanceLioncash2020-11-181-44/+37
| | | | | | | With this, only 19 usages of the global system instance remain within the core library. We're almost there.
* core/CMakeLists: Make some warnings errorsLioncash2020-10-131-1/+1
| | | | | | | | | 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.
* cheat_engine: Remove unnecessary system argument to CheatParser's Parse functionLioncash2020-09-151-9/+5
| | | | | This isn't used within the function at all in any implementations, so we can remove it entirely.
* patch_manager: Resolve implicit truncations in FormatTitleVersion()Lioncash2020-09-151-3/+4
| | | | | | 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 :<)
* patch_manager: Make use of type aliasesLioncash2020-09-151-53/+59
| | | | | 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.
* patch_manager: Make a few functions internally linkedLioncash2020-09-151-3/+12
| | | | | These functions are only used within this translation unit, so we can make them internally linked.
* file_sys: Replace inclusions with forward declarations where applicableLioncash2020-08-231-2/+1
| | | | Same behavior, minus unnecessary inclusions where not necessary.
* patch_manager: Resolve -Wignored-qualifier warningsLioncash2020-08-031-2/+2
| | | | | Top level const will always be ignored in this case, so it can be removed.
* Make copying directory string more conciselat9nq2020-05-281-2/+1
|
* Address requested changeslat9nq2020-05-281-3/+3
|
* *nix systems can read any-case patch directorieslat9nq2020-05-281-8/+27
| | | | | | 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'.
* core: memory: Move to Core::Memory namespace.bunnei2020-04-171-4/+4
| | | | - helpful to disambiguate Kernel::Memory namespace.
* CMakeLists: Specify -Wextra on linux buildsLioncash2020-04-161-1/+2
| | | | | | | | | | | 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.
* file_sys: patch_manager: Return early when there are no layers to apply.bunnei2020-04-141-0/+6
|
* patch_manager: Adds check for disabled cheats to prevent them from being enabled (#3178)Morph2019-11-281-5/+11
| | | | | | * Adds check for disabled cheats to prevent them from being added to the CheatList * Address feedback
* dmnt_cheat_vm: Default initialize structure valuesZach Hilman2019-09-221-2/+1
|
* patch_manager: Update cheat parsing for new VMZach Hilman2019-09-221-12/+17
|
* yuzu: Port old usages of Filesystem namespace to FilesystemControllerZach Hilman2019-09-211-8/+16
|
* patch_manager: Add short-circuit edge-case to GetPatchVersionNamesZach Hilman2019-09-211-0/+2
| | | If title ID is 0, there are no add ons, prevents wasting time looking for them.
* patch_manager: Add error checking to load dir to prevent crashesZach Hilman2019-09-211-0/+15
| | | Prevents a crash if the load dir would be nullptr, instead logs an error and returns appropriately.
* patch_manager: Add getter for title versionZach Hilman2019-06-251-0/+10
|
* common/hex_util: Combine HexVectorToString() and HexArrayToString()Lioncash2019-06-121-4/+4
| | | | | | 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.
* patch_manager: Dump NSO name with build IDZach Hilman2019-03-281-4/+5
|
* core: Port current uses of RegisteredCache to ContentProviderZach Hilman2019-03-271-6/+7
|
* Merge pull request #2280 from lioncash/nsobunnei2019-03-231-14/+11
|\ | | | | loader/nso: Minor refactoring
| * file_sys/patch_manager: Deduplicate NSO headerLioncash2019-03-221-14/+8
| | | | | | | | | | | | 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
| * file_sys/patch_manager: Remove two magic valuesLioncash2019-03-221-2/+5
| | | | | | | | These correspond to the NSOBuildHeader.
* | file_sys/cheat_engine: Remove use of global system accessorsLioncash2019-03-221-7/+7
|/ | | | | Instead, pass in the core timing instance and make the dependency explicit in the interface.
* patch_manager: Display cheats in game list add-onsZach Hilman2019-03-051-0/+2
|
* patch_manager: Add support for loading cheats listsZach Hilman2019-03-051-0/+52
| | | | Uses load/<title_id>/<mod_name>/cheats as root dir, file name is all upper or lower hex first 8 bytes build ID.
* patch_manager: Prevent use of a dangling pointer within PatchRomFSLioncash2018-12-111-4/+3
| | | | | | | | | | | 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.
* patch_manager: Obey disabled add-ons list when patching gameZach Hilman2018-12-031-11/+45
|
* filesystem: De-globalize registered_cache_unionLioncash2018-12-021-10/+9
| | | | | | | | | 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.
* patch_manager: Show LayeredExeFS patch in add-ons columnZach Hilman2018-11-211-3/+14
| | | 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.
* patch_manager: Apply LayeredExeFS patchesZach Hilman2018-11-201-0/+25
| | | | 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.
* settings: Add option to dump ExeFS of games upon launchZach Hilman2018-11-201-0/+9
| | | | When enabled, all exefs(es) will be copied to yuzu/dump/<title_id>/exefs.
* Merge pull request #1618 from DarkLordZach/dump-nsobunnei2018-11-151-0/+13
|\ | | | | patch_manager: Add support for dumping uncompressed NSOs
| * patch_manager: Add support for dumping decompressed NSOsZach Hilman2018-10-291-0/+13
| | | | | | | | 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.
* | global: Use std::optional instead of boost::optional (#1578)Frederic L2018-10-301-5/+4
|/ | | | | | | | | | | | | | | | * 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
* file_sys/patch_manager: Remove unnecessary if-statements (#1586)Frederic L2018-10-281-7/+6
| | | | | | * remove unnecessary if-statements * Addressed feedback
* patch_manager: Add support for using LayeredFS with DataZach Hilman2018-10-171-2/+3
|
* Merge pull request #1443 from DarkLordZach/lower-loader-logs-1bunnei2018-10-161-2/+8
|\ | | | | content_archive/patch_manager: Lower log levels to eliminate some unnecessary logs
| * patch_manager: Move non-Program RomFS patch log to DebugZach Hilman2018-10-131-2/+8
| | | | | | | | Normal Program-type patches will still be logged to aid in debugging, but for others (mainly Control), it was moved to Debug.
* | file_sys/registered_cache: Use unique_ptr and regular pointers instead of shared_ptrs where applicableLioncash2018-10-161-1/+1
|/ | | | | | | | | | | | | | | 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.
* patch_manager: Return a std::unique_ptr from ParseControlNCA() and GetControlMetadata() instead of a std::shared_ptrLioncash2018-10-091-8/+7
| | | | | | | | | | | | | | 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.
* Merge pull request #1423 from DarkLordZach/romfs-file-extsbunnei2018-10-081-1/+9
|\ | | | | fsmitm_romfsbuild: Add support for stubbing and IPS patches in LFS
| * patch_manager: Avoid romfs_ext requirement for patchingZach Hilman2018-10-041-4/+1
| |
| * fsmitm_romfsbuild: Extract stubs and IPS to romfs_ext dirZach Hilman2018-10-041-1/+12
| |
* | Merge pull request #1424 from DarkLordZach/ips-witchbunnei2018-10-081-23/+59
|\ \ | | | | | | ips_layer: Add support for IPSwitch executable patches
| * | ips_layer: Fix inaccuracies with comments and flagsZach Hilman2018-10-041-1/+1
| | | | | | | | | 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.
| * | ips_layer: Deduplicate resource usageZach Hilman2018-10-041-2/+4
| | |
| * | patch_manager: Add support for IPSwitch format patchesZach Hilman2018-10-041-22/+56
| |/
* | romfs_factory: Extract packed update setter to new functionZach Hilman2018-10-051-3/+4
| |
* | patch_manager: Add support for NSP packed updatesZach Hilman2018-10-051-2/+2
| | | | | | | | Reads as Update (NSP) in add-ons
* | patch_manager: Add support for packed updatesZach Hilman2018-10-051-3/+12
|/ | | | Will prefer any installed update over the packed version.
* nso: Optimize loading of IPS patchesZach Hilman2018-10-021-44/+37
| | | | Avoid resource-heavy classes and remove quasi-duplicated code.
* patch_manager: Add PatchNSO functionZach Hilman2018-10-011-0/+94
| | | | While PatchExeFS operated on the entire directory, this function operates on the uncompressed NSO. Avoids copying decompression code to PatchManager.
* patch_manager: Use strings for patch type instead of enumZach Hilman2018-10-011-19/+31
|
* aoc_u: Extract AccumulateAOCTitleIDs to separate functionZach Hilman2018-10-011-1/+2
|
* aoc_u: Implement GetAddOnContentBaseIdZach Hilman2018-10-011-2/+3
| | | Command #5
* patch_manager: Add DLC recognition to PatchManagerZach Hilman2018-10-011-0/+26
|
* patch_manager: Invert conditionals within ApplyLayeredFS()Lioncash2018-09-261-27/+30
| | | | | Avoids the need to nest code quite a bit by early-exiting in error cases.
* vfs_concat/vfs_layered: Remove friend declarations from ConcatenatedVfsFileLioncash2018-09-261-3/+2
| | | | | | 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.
* fsmitm: Cleanup and modernize fsmitm portZach Hilman2018-09-241-31/+35
|
* patch_manager: Add LayeredFS mods supportZach Hilman2018-09-221-1/+42
|
* file-sys: Default heavy-weight class destructors in the cpp fileLioncash2018-09-201-0/+2
| | | | | | | | | | 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.
* Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi2018-09-151-2/+2
|
* file_sys/patch_manager: Add missing includesLioncash2018-09-061-0/+4
| | | | These includes were previously being satisfied indirectly.
* bktr: Fix bucket overlap errorZach Hilman2018-09-041-0/+3
|
* patch_manager: Centralize Control-type NCA parsingZach Hilman2018-09-041-20/+55
|
* game_list: Fix version display on non-NAND titlesZach Hilman2018-09-041-6/+22
|
* bktr: Add logging on successful patchZach Hilman2018-09-041-5/+17
|
* bktr: Fix missing includes and optimize styleZach Hilman2018-09-041-19/+16
|
* file_sys: Add class to manage game patchesZach Hilman2018-09-041-0/+90
Right now only includes Updates, but should eventually contain all of the other patches we need.