aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys/patch_manager.h
Commit message (Collapse)AuthorAgeFilesLines
* [fs] share parent resources with bundled programs (#4319)xbzk2026-09-181-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md) - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- Normal games are Applications; Bundled games are Application + Programs; We've been treating both as the same thing, calling both programs, and making programs unable to see settings and saves from application. References: https://switchbrew.org/wiki/Filesystem_services https://switchbrew.org/wiki/NCM_services#ApplicationId https://switchbrew.org/wiki/Super_Mario_3D_All-Stars Ryujinx.HLE/HOS/ApplicationLoader.cs:GetMultiProgramInfo UPDATE: The first version was a big rework to make AppId/ProgId concepts proper, and it was successful in most tests, but it caused a regression with applets, which are programs that breed straight from no application. In order to simplify things i've reverted all the rework, added a helper to identify whether a program has a parent Application and bounded it to it's proper stores. Although this is no big deal coz it doesn't have impact on emulation, it permeates to several routines, so it needs to be tested broadly. Applets, Normal games, Bundled games, Blobbed NSPs/XCIs, Mods, Updates, Saves, DLCs,. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4319 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: lizzie <lizzie@eden-emu.dev>
* [core/file_sys] implement IApplicationFunctions::GetPseudoDeviceId; common ↵lizzie2026-08-041-0/+3
| | | | | | | | | | | | | | | | PatchManager::GetNACP for base|updates (#4159) a bit of refactoring so there's less code duplication... probably a good idea to make it a lambda anyways maybe this is why QLauncher didn't have proper DLCs and updates? either way "GetPseudoDeviceId" is now implemented (still stubbed) with a proper hash instead of just 0 Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4159 Reviewed-by: Maufeat <sahyno1996@gmail.com> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
* [android] patches bin button + version bug fixes (#3691)xbzk2026-03-091-0/+1
| | | | | | | | | | | | | | | This fixed the delete button enabled for external content (which is auto handled and the proper way to get rid of them is either by removing its folder from ext content list, or removing the file itself) by streaming patch source thru jni. Along the way stumbled upon another bug: If you have an external content update installed (say latest version for example) and you NAND install a previous update (like in silksong's hard mode update), the newest update version string would leak to the previous one. Did videos for both. Fixed both. Seems good to go. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3691 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: Lizzie <lizzie@eden-emu.dev> Reviewed-by: DraVee <chimera@dravee.dev> Co-authored-by: xbzk <xbzk@eden-emu.dev> Co-committed-by: xbzk <xbzk@eden-emu.dev>
* [desktop] Allow deletion of add-ons from the add-on menu (#3626)crueter2026-02-251-0/+1
| | | | | | | | | | | | | Adds a location param to the Patch struct which can be used to delete any installed mods at the user's request. You can delete multiple at once too, or just one by right-clicking You are not able to delete game updates, DLC, or SDMC mods. Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3626 Reviewed-by: DraVee <dravee@eden-emu.dev> Reviewed-by: Maufeat <sahyno1996@gmail.com>
* [fs/core] Load external content without NAND install (#2862)Maufeat2026-02-061-0/+12
| | | | | | | | | | | | | Adds the capability to add DLC and Updates without installing them to NAND. This was tested on Windows only and needs Android integration. Co-authored-by: crueter <crueter@eden-emu.dev> Co-authored-by: wildcard <wildcard@eden-emu.dev> Co-authored-by: nekle <nekle@protonmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2862 Reviewed-by: DraVee <dravee@eden-emu.dev> Reviewed-by: crueter <crueter@eden-emu.dev> Co-authored-by: Maufeat <sahyno1996@gmail.com> Co-committed-by: Maufeat <sahyno1996@gmail.com>
* vfs: Move vfs files to their own directoryFearlessTobi2024-01-251-1/+1
|
* android: Add addon delete buttont8952024-01-191-4/+13
| | | | Required some refactoring of retrieving patches in order for the frontend to pass the right information to ContentManager for deletion.
* core: improve debug workflowLiam2023-09-141-1/+1
|
* vfs: expand support for NCA readingLiam2023-08-151-2/+2
|
* 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: Do not apply LayeredFS mods when dumpingMorph2021-06-281-1/+2
| | | | We should not apply any mods when dumping a game's RomFS.
* patch_manager: Remove usages of the global system instanceLioncash2020-11-181-2/+11
| | | | | | | With this, only 19 usages of the global system instance remain within the core library. We're almost there.
* patch_manager: Make use of type aliasesLioncash2020-09-141-16/+20
| | | | | 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-141-12/+0
| | | | | These functions are only used within this translation unit, so we can make them internally linked.
* file_sys/patch_manager: Add missing includeReinUsesLisp2020-09-031-0/+1
| | | | Fixes build issues
* file_sys: Replace inclusions with forward declarations where applicableLioncash2020-08-231-3/+2
| | | | Same behavior, minus unnecessary inclusions where not necessary.
* Address requested changeslat9nq2020-05-281-1/+1
|
* *nix systems can read any-case patch directorieslat9nq2020-05-271-0/+5
| | | | | | 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-2/+2
| | | | - helpful to disambiguate Kernel::Memory namespace.
* patch_manager: Update cheat parsing for new VMZach Hilman2019-09-211-3/+3
|
* glue: Correct missing bytes in ApplicationLaunchParameterZach Hilman2019-06-251-0/+3
|
* patch_manager: Add getter for title versionZach Hilman2019-06-241-2/+4
|
* patch_manager: Dump NSO name with build IDZach Hilman2019-03-271-1/+1
|
* file_sys/cheat_engine: Remove use of global system accessorsLioncash2019-03-221-1/+6
| | | | | Instead, pass in the core timing instance and make the dependency explicit in the interface.
* patch_manager: Add support for loading cheats listsZach Hilman2019-03-041-0/+4
| | | | 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: Obey disabled add-ons list when patching gameZach Hilman2018-12-031-0/+5
|
* patch_manager: Return a std::unique_ptr from ParseControlNCA() and ↵Lioncash2018-10-091-3/+2
| | | | | | | | | | | | | | | | 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.
* Merge pull request #1424 from DarkLordZach/ips-witchbunnei2018-10-081-0/+1
|\ | | | | ips_layer: Add support for IPSwitch executable patches
| * ips_layer: Add support for escape sequences and midline commentsZach Hilman2018-10-041-0/+1
| | | | | | | | More accurately follows IPSwitch specification.
* | romfs_factory: Extract packed update setter to new functionZach Hilman2018-10-051-1/+2
| |
* | patch_manager: Add support for packed updatesZach Hilman2018-10-051-1/+2
|/ | | | Will prefer any installed update over the packed version.
* nso: Optimize loading of IPS patchesZach Hilman2018-10-021-1/+1
| | | | Avoid resource-heavy classes and remove quasi-duplicated code.
* patch_manager: Add PatchNSO functionZach Hilman2018-10-011-0/+8
| | | | 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-10/+2
|
* patch_manager: Add DLC recognition to PatchManagerZach Hilman2018-09-301-0/+1
|
* patch_manager: Add LayeredFS mods supportZach Hilman2018-09-211-0/+2
|
* file-sys: Default heavy-weight class destructors in the cpp fileLioncash2018-09-191-0/+1
| | | | | | | | | | 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.
* file_sys/patch_manager: Add missing includesLioncash2018-09-061-0/+1
| | | | These includes were previously being satisfied indirectly.
* bktr: Fix bucket overlap errorZach Hilman2018-09-041-1/+0
|
* patch_manager: Centralize Control-type NCA parsingZach Hilman2018-09-041-2/+11
|
* game_list: Fix version display on non-NAND titlesZach Hilman2018-09-041-1/+1
|
* bktr: Add logging on successful patchZach Hilman2018-09-041-1/+6
|
* bktr: Fix missing includes and optimize styleZach Hilman2018-09-041-1/+8
|
* file_sys: Add class to manage game patchesZach Hilman2018-09-041-0/+42
Right now only includes Updates, but should eventually contain all of the other patches we need.