aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys/registered_cache.h
Commit message (Collapse)AuthorAgeFilesLines
* [fs] share parent resources with bundled programs (#4319)xbzk2026-09-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - [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>
* [common] Switch to boost::unordered_flat containers (#4326)crueter2026-08-311-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Replaces all instances of ankerl's unordered map/set with boost's `unordered_flat_*` classes. This uses std::hash since boost::hash is actually a lot slower. Also adds an abstraction layer in `Common` so future changes are quicker and easier. Other implementation details: - ankerl provided hash specializations for tuple and pair, so those were ported here - std::erase_if doesn't work on boost, so just used the ADL'd erase_if This should be about equal or superior performance as unordered_dense for everything except iteration. Signed-off-by: crueter <crueter@eden-emu.dev> - [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. ------------------- Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4326 Reviewed-by: Lizzie and Samuel <lizzie@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
* [nce, fs] tico support, fix FS bug that would nuke entire 'switch' folder ↵xbzk2026-07-231-0/+1
| | | | | | | | | | | | | | | (#4086) Contains the minimal set of functionalities to allow tico installer succeed, and tico work normally EXCEPT for game launching (which me or someone else will investigate later) First three commits are from PR 4012. The other six, kinda dizzy to explain each one. All were implemented based on tico source, switchbrew and libnx. Hopefully the commit messages will do. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4086 Reviewed-by: Lizzie <lizzie@eden-emu.dev> Reviewed-by: Maufeat <sahyno1996@gmail.com>
* [android/fs] external content loader + nca/xci patches (#3596)xbzk2026-03-041-2/+3
| | | | | | | | | | | | | | | | | | | | Foreword: WHY DON'T EVERYBODY USE ONE FOLDER FOR EACH GAME+CONTENTS? AIN'T THIS THE FORMAT GAMES COME WHEN YOU BUE THEM? DO YOU LIVE WITH ALL YOUR FRIENDS AND HAVE A 2ND HOUSE FOR ALL THE CHILDREN? Nice, i feel better now. This feat extends Maufeat's work on external content loading. It harmonically additions: "...also, if in each game folder X, you find a folder Y, and in this folder Y you detect ONLY a single game, then mount all external content for that game found in that folder Y and its subfolders." Permanent (not toggleable). External Content folders are supported equally. Also: -Reworked several routines for preserving single source of truth between android and other systems; -Fixed the annoying unknown format error for content files, by providing proper format detection. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3596 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: Lizzie <lizzie@eden-emu.dev> Co-authored-by: xbzk <xbzk@eden-emu.dev> Co-committed-by: xbzk <xbzk@eden-emu.dev>
* [vfs] remove usage of 'dynamic_cast', use ankerl::map for files (#3594)lizzie2026-02-211-17/+16
| | | | | | | | | | | | | | Do I need to writeout everything wrong with `dynamic_cast`? Also the usual std::map -> `ankerl::unordered_dense::map` conversion, seems to work just fine - but of course test that updates/DLCs/mods/cheats/etc are still being applied :) Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3594 Reviewed-by: DraVee <dravee@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
* [fs/core] Load external content without NAND install (#2862)Maufeat2026-02-061-1/+56
| | | | | | | | | | | | | 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
|
* qt: add verification for installed contentsLiam2023-09-121-0/+5
|
* general: fix spelling mistakesLiam2023-03-121-1/+1
|
* 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.
* main: Prevent installing base titles into NANDMorph2021-05-161-0/+1
| | | | Many users have been installing their base titles into NAND instead of adding them into the games list. This prevents users from installing any base titles and warns the user about the action.
* file_sys: Resolve cases of variable shadowingLioncash2021-05-021-1/+1
| | | | Brings us closer to enabling -Wshadow as an error in the core code.
* file_sys/registered_cache: Silence virtual functions without override warningsReinUsesLisp2021-01-091-4/+4
|
* General: Tidy up clang-format warnings part 2Lioncash2020-08-131-3/+3
|
* registered_cache: Add support for removing folder ncasMorph2020-07-291-3/+3
|
* clang formatMorph2020-07-151-3/+3
|
* Remove global system instance and address feedbackMorph2020-07-151-1/+1
|
* registered_cache: Remove previous update/dlc if it exists on installMorph2020-07-151-3/+7
| | | | - This checks for and removes old updates or dlc based on title id. If a content meta nca exists within the registered cache, it will attempt to remove all the ncas associated with the content meta before installing a new update/dlc
* key_manager: Correct casing of instance()Lioncash2020-07-011-1/+1
| | | | Our codebase uppercases member function names.
* crypto: Make KeyManager a singleton classFearlessTobi2020-05-201-1/+1
| | | | | | Previously, we were reading the keys everytime a KeyManager object was created, causing yuzu to reread the keys file multiple hundreds of times when loading the game list. With this change, it is only loaded once. On my system, this decreased game list loading times by a factor of 20.
* registered_cache: Implement PlaceholderCache to manage placeholder and ↵Zach Hilman2019-09-211-0/+25
| | | | installing content
* registered_cache: Add getter to determine source slot in content provider unionZach Hilman2019-06-241-0/+3
| | | | Used to determine StorageId source for application data.
* file_sys: Create ContentProvider interface and default implementationsZach Hilman2019-03-261-52/+104
|
* file_sys/registered_cache: Remove unused <map> includeLioncash2018-11-271-1/+0
|
* file_sys/registered_cache: Use regular const references instead of ↵Lioncash2018-11-271-5/+4
| | | | | | | | | | | | std::shared_ptr for InstallEntry() These parameters don't need to utilize a shared lifecycle directly in the interface. Instead, the caller should provide a regular reference for the function to use. This also allows the type system to flag attempts to pass nullptr and makes it more generic, since it can now be used in contexts where a shared_ptr isn't being used (in other words, we don't constrain the usage of the interface to a particular mode of memory management).
* file_sys: Use common KeyManager in NCA container typesZach Hilman2018-11-011-0/+3
| | | | Creates a single KeyManager for the entire container and then passes it into the NCA constructor, eliminating several unnecessary KeyManager reads.
* global: Use std::optional instead of boost::optional (#1578)Frederic L2018-10-301-13/+10
| | | | | | | | | | | | | | | | * 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
* qt: Add support for dumping a DLC Data RomFSZach Hilman2018-10-171-0/+1
|
* registered_cache: Deduplicate results of ListEntry and ListEntryFilterZach Hilman2018-10-171-2/+5
| | | | Prevents a Entry from appearing in the list twice if the user has it installed in two places (e.g. User NAND and SDMC)
* file_sys/registered_cache: Use unique_ptr and regular pointers instead of ↵Lioncash2018-10-161-6/+6
| | | | | | | | | | | | | | | | | 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.
* qt: Add UI elements for LayeredFS and related toolsZach Hilman2018-09-211-1/+1
|
* bktr: Fix missing includes and optimize styleZach Hilman2018-09-041-1/+1
|
* registration: Add RegisteredCacheUnionZach Hilman2018-09-041-0/+40
| | | | Aggregates multiple caches into one interface
* main: Only show DRD deprecation warning onceZach Hilman2018-09-041-0/+1
|
* registration: Add support for installing NSP filesZach Hilman2018-09-041-2/+4
|
* file_sys: Replace includes with forward declarations where applicableLioncash2018-09-031-4/+7
| | | | | Cuts down on include dependencies, resulting in less files that need to be rebuilt when certain things are changed.
* file_sys: Cut down on includes and copiesZach Hilman2018-08-231-0/+1
|
* registration: Add GetEntryUnparsed methodsZach Hilman2018-08-231-0/+3
| | | | Returns the file before calling parser on it.
* registration: Add support for force overwrite of installedZach Hilman2018-08-111-5/+15
|
* registration: Take RawCopy function as parameterZach Hilman2018-08-111-3/+6
| | | | Instead of defaulting to VfsRawCopy
* file_sys: Comply to style guidelinesZach Hilman2018-08-111-5/+8
|
* file_sys: Add RegisteredCacheZach Hilman2018-08-111-0/+108
Manages NAND NCA get and install.