summaryrefslogtreecommitdiffstats
path: root/src/core/file_sys (unfollow)
Commit message (Collapse)AuthorFilesLines
2023-03-12general: fix spelling mistakesLiam4-11/+11
2023-02-14remove static from pointer sized or smaller types for aesthetics, change constexpr static to static constexpr for consistencyarades793-6/+6
Signed-off-by: arades79 <scravers@protonmail.com>
2023-02-14add static lifetime to constexpr values to force compile time evaluation where possiblearades793-6/+6
Signed-off-by: arades79 <scravers@protonmail.com>
2023-02-14general: rename CurrentProcess to ApplicationProcessLiam1-1/+1
2023-01-01vfs: Replace cstr concat with char concatMerry1-3/+3
2022-11-23general: fix compile for Apple ClangLiam1-0/+1
2022-10-24file_sys: Priority display of game titles in the current languageFengChen2-12/+37
2022-10-22general: Resolve -Wunused-lambda-capture and C5233Morph1-2/+2
2022-10-22general: Enforce C4800 everywhere except in video_coreMorph1-1/+1
2022-10-17savedata_factory: Detect future save data pathsMorph2-9/+53
Enable compatibility for new account/device save paths planned on a future implementation.
2022-09-03core: ns: Implement pl:s serviceNarr the Reg1-1/+1
2022-08-21core/file_sys: fix alignment of BuildIdLiam2-3/+3
2022-08-19core/file_sys: fix BuildId paddingLiam2-11/+7
2022-08-12ips_layer: Delimit parsed hex value stringMorph1-1/+2
Delimits the hex value string on spaces, slashes, carriage returns or newlines, allowing for comments to be added in-line.
2022-07-27chore: make yuzu REUSE compliantAndrea Pappacoda1-3/+2
[REUSE] is a specification that aims at making file copyright information consistent, so that it can be both human and machine readable. It basically requires that all files have a header containing copyright and licensing information. When this isn't possible, like when dealing with binary assets, generated files or embedded third-party dependencies, it is permitted to insert copyright information in the `.reuse/dep5` file. Oh, and it also requires that all the licenses used in the project are present in the `LICENSES` folder, that's why the diff is so huge. This can be done automatically with `reuse download --all`. The `reuse` tool also contains a handy subcommand that analyzes the project and tells whether or not the project is (still) compliant, `reuse lint`. Following REUSE has a few advantages over the current approach: - Copyright information is easy to access for users / downstream - Files like `dist/license.md` do not need to exist anymore, as `.reuse/dep5` is used instead - `reuse lint` makes it easy to ensure that copyright information of files like binary assets / images is always accurate and up to date To add copyright information of files that didn't have it I looked up who committed what and when, for each file. As yuzu contributors do not have to sign a CLA or similar I couldn't assume that copyright ownership was of the "yuzu Emulator Project", so I used the name and/or email of the commit author instead. [REUSE]: https://reuse.software Follow-up to 01cf05bc75b1e47beb08937439f3ed9339e7b254
2022-06-27core: Replace all instances of ResultCode with Resultgerman771-9/+9
2022-06-14general: fix compilation on GCC 12Liam1-1/+1
2022-06-14common: Change semantics of UNREACHABLE to unconditionally crashLiam3-3/+3
2022-04-23general: Convert source file copyright comments over to SPDXMorph79-277/+158
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.
2022-04-07patch_manager: Apply layered exefs patches from 'atmosphere' SD directorytech-ticks1-25/+38
2022-03-27registered_cache: Prevent nullptr dereference when accumulating filesMorph1-2/+4
For whatever reason, nca_file/dir can be nullptr in the list of files/dirs. I have not determined the cause of this yet, so add a nullptr check for these prior to dereferencing them.
2022-03-20general: Fix clang/gcc build errorsameerj1-0/+4
2022-03-19common: Reduce unused includesameerj1-0/+2
2022-03-19core: Reduce unused includesameerj2-2/+0
2022-02-15Dump patched exefs rather than baseKelebek11-9/+9
2022-02-13program_metadata: Unpack FileAccessHeader and FileAccessControllat9nq2-15/+51
Avoids a reference binding to a misaligned addresses. Unpacking one requires unpacking the other, otherwise there'll be a misaligned address on the leftover one.
2022-02-02general: Replace NonCopyable struct with equivalentsLioncash1-3/+15
2021-11-11program_metadata: Add default ThreadInfo kernel capabilityOatmealDome1-1/+4
2021-11-04general: Get the current process program id directly from the systemMorph1-2/+1
This allows us to avoid including KProcess' header file in files that only need to get the current process' program id.
2021-11-04general: Rename GetTitleID to GetProgramIDMorph1-1/+1
2021-11-04core: Fix transitive include build errorsameerj1-0/+2
2021-11-04core: Remove unused includesameerj12-12/+0
2021-11-02general: Remove MakeResult helpersMorph3-9/+7
This is made obsolete by the presence of implicit constructors.
2021-10-29file_sys: control_metadata: Add BrazilianPortugueseMorph2-2/+4
2021-09-29style: Remove extra space preceding the :: operatorMorph1-1/+1
2021-09-29file_sys: Remove vfs_libzipMorph2-101/+0
2021-09-14vfs: Partially implement GetFileTimeStampRawMorph5-0/+46
Gets rid of homebrew warnings using this func
2021-09-11file_sys/kernel_executable: Add missing <string> includeMorph1-0/+1
2021-07-20file_sys: Support load game collection (#6582)Feng Chen4-46/+57
Adds support for loading games with multiple programs embedded within such as the Dragon Quest 1+2+3 Collection
2021-07-12content_archive: Remove unnecessary include to <ranges>ReinUsesLisp1-1/+0
Fixes build issues on clang.
2021-06-28patch_manager: Do not apply LayeredFS mods when dumpingMorph2-3/+6
We should not apply any mods when dumping a game's RomFS.
2021-06-28filesystem: Open a read-only directory for SDMC modsMorph2-14/+16
This prevents mod files from being locked due to the read-only share flag in Windows.
2021-06-28core: Simplify SDMC mod loadinglat9nq2-20/+8
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>
2021-06-28core: Support LayeredFS mod from SDMC directorylat9nq3-2/+37
Enables loading a mod directly from `[yuzu data directory]/sdmc/atmosphere/contents/[title_id]`. For use with some homebrew mod managers.
2021-06-23General: Resolve fmt specifiers to adhere to 8.0.0 API where applicableLioncash1-5/+8
Also removes some deprecated API usages.
2021-06-22vfs_real: Fix Mode to FileAccessMode conversionMorph1-6/+1
These enforce requiring the file to exist prior to opening.
2021-06-16hle: api_version: Add HLE API version constantsMorph1-33/+15
2021-06-13general: Remove extraneous includesMorph2-2/+0
2021-06-10Fix GCC undefined behavior sanitizer.Markus Wick1-1/+3
* Wrong alignment in u64 LOG_DEBUG -> memcpy. * Huge shift exponent in stride calculation for linear buffer, unused result -> skipped. * Large shift in buffer cache if word = 0, skip checking for set bits. Non of those were critical, so this should not change any behavior. At least with the assumption, that the last one used masking behavior, which always yield continuous_bits = 0.
2021-06-03fspsrv: Implement DisableAutoSaveDataCreation (#6355)Chloe2-1/+8
- Used by Mii Edit
2021-06-02general: Replace RESULT_UNKNOWN with ResultUnknownMorph2-5/+5
Transition to PascalCase for result names.
2021-05-26common: fs: Rework the Common Filesystem interface to make use of std::filesystem (#6270)Morph10-140/+136
* 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
2021-05-16main: Prevent installing base titles into NANDMorph2-0/+8
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.
2021-05-16core: Make variable shadowing a compile-time errorLioncash12-25/+34
Now that we have most of core free of shadowing, we can enable the warning as an error to catch anything that may be remaining and also eliminate this class of logic bug entirely.
2021-05-06hle: kernel: Rename Process to KProcess.bunnei2-2/+2
2021-05-02file_sys: Resolve cases of variable shadowingLioncash21-114/+132
Brings us closer to enabling -Wshadow as an error in the core code.
2021-05-01service: filesystem: Return proper error codes for CreateFileMorph1-0/+1
This improves the accuracy of CreateFile by returning the correct error codes on certain conditions (parent directory does not exist, path already exists). This fixes saving and the loading of existing saves in New Pokemon Snap
2021-04-23program_metadata: Set a default resource size when a NPDM is not presentMorph2-3/+6
Sets a default size of 0x1FE00000 bytes (510 MiB) for the system_resource_size when a NPDM is not present.
2021-04-23program_metadata: Explicitly specify copy/move functionsLioncash1-0/+6
The generation of the copy assignment operators are deprecated on being generated when a user-provided destructor is present. We can explicitly specify that we desire this behavior to keep the class forward compatible with future standards.
2021-04-15common: Move settings to common from core.bunnei1-1/+1
- Removes a dependency on core and input_common from common.
2021-03-26pctl: Rework how pctl works to be more accurateChloe Marcec2-0/+10
Introduces the usage of compatibilities to allow it the module to be closer to how it works on hardware.
2021-03-14system_version: Update to 11.0.1Morph1-5/+5
2021-03-14system_archive: Update NgWord archive versionMorph1-2/+2
2021-01-23vfs_real: When moving files or directories, don't assume file opening will succeedcomex1-4/+10
Found this via a warning, but it's a substantive fix. Since this is only for a cache, it should be safe to silently drop the entry if opening fails. I think.
2021-01-15core: Silence Wclass-memaccess warningsReinUsesLisp1-2/+2
This requires making several types trivial and properly initialize them whenever they are called.
2021-01-15common/common_funcs: Rename INSERT_UNION_PADDING_{BYTES,WORDS} to _NOINITReinUsesLisp1-12/+12
INSERT_PADDING_BYTES_NOINIT is more descriptive of the underlying behavior.
2021-01-09file_sys/registered_cache: Silence virtual functions without override warningsReinUsesLisp1-4/+4
2021-01-05core: Silence warnings when compiling without assertsReinUsesLisp2-2/+3
2020-12-18system_archive: Add + and - buttons to the Nintendo Extended OSS fontMorph2-315/+343
2020-12-17system_archive: Update Nintendo Extended OSS fontMorph2-182/+347
Co-authored-by: Its-Rei <kupfel@gmail.com>
2020-12-12Revert "Merge pull request #5176 from Morph1984/fix-createfile"Morph1-6/+2
This reverts commit 6d6115475b4edccdf1bb4e96ecc3d3b1be319e76, reversing changes made to 5fe55b16a11d9ec607fb8a3fdddc77a4393cd96a.
2020-12-10vfs: Use existing type aliases consistentlyLioncash19-127/+133
Makes use of the VirtualDir and VirtualFile aliases across the board instead of having a few isolated places that don't use it.
2020-12-09vfs_real: Fix CreateFile for files without a file extensionMorph1-2/+6
2020-12-08fsp_srv: Implement OpenDataStorageWithProgramIndexMorph2-0/+26
- Used by RollerCoaster Tycoon 3: Complete Edition
2020-12-08file_sys: Consolidate common Title ID operationsMorph2-2/+58
2020-12-08core: Remove unnecessary enum casts in log callsLioncash1-8/+11
Follows the video core PR. fmt doesn't require casts for enum classes anymore, so we can remove quite a few casts.
2020-12-05video_core: Resolve more variable shadowing scenarios pt.3Lioncash1-6/+6
Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors.
2020-12-05system_version: Update to 11.0.0Chloe Marcec1-6/+6
2020-11-27savedata_factory: Eliminate usage of the global system instanceLioncash2-11/+18
Now there's only two meaningful instances left in core.
2020-11-25core: loader: Implement support for loading indexed programs.bunnei4-7/+10
2020-11-18patch_manager: Remove usages of the global system instanceLioncash3-48/+52
With this, only 19 usages of the global system instance remain within the core library. We're almost there.
2020-10-21Revert "core: Fix clang build"bunnei5-37/+23
2020-10-18core: Fix clang buildLioncash5-23/+37
Recent changes to the build system that made more warnings be flagged as errors caused building via clang to break. Fixes #4795
2020-10-13core/CMakeLists: Make some warnings errorsLioncash4-7/+9
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.
2020-09-24submission_package: Fix updates integrated into cartridge images.Morph1-3/+22
2020-09-22General: Make use of std::nullopt where applicableLioncash4-14/+18
Allows some implementations to avoid completely zeroing out the internal buffer of the optional, and instead only set the validity byte within the structure. This also makes it consistent how we return empty optionals.
2020-09-22ips_layer: Eliminate a redundant copy in Parse()Lioncash1-2/+4
Prevents unnecessary copying of the line being parsed.
2020-09-18submission_package: Account for multi-content NSPsMorph1-5/+5
Previously we assumed a submission package can only contain one Program NCA with a single TitleID. However, Super Mario 3D All-Stars contains four Program NCAs, each with their unique TitleIDs. This accounts for the existence of multi-content games such as this one. - Fixes booting Super Mario 3D All-Stars from the games list.
2020-09-17control_metadata: Resolve typo in Portuguese language nameLioncash1-1/+1
This isn't used anywhere, so this is a trivial fix.
2020-09-17file_sys/romfs_factory: Eliminate usage of the global system accessorLioncash2-28/+43
2020-09-17file_sys/bis_factory: Eliminate usage of the global system accessorLioncash2-6/+6
2020-09-15nca_patch: Significantly reduce the stack usage size within SearchBucketEntry()Lioncash1-4/+4
Previously this function was using ~16KB of stack (16528 bytes), which was caused by the function arguments being taken by value rather than by reference. We can make this significantly lighter on the stack by taking them by reference.
2020-09-15nca_patch: Make SearchBucketEntry() internally linkedLioncash2-44/+43
This is only used internally and doesn't depend on any class state, so we can make it fully internal.
2020-09-15cheat_engine: Remove unnecessary system argument to CheatParser's Parse functionLioncash1-9/+5
This isn't used within the function at all in any implementations, so we can remove it entirely.
2020-09-15patch_manager: Resolve implicit truncations in FormatTitleVersion()Lioncash1-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 :<)
2020-09-15patch_manager: Make use of type aliasesLioncash2-69/+79
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.
2020-09-15patch_manager: Make a few functions internally linkedLioncash2-15/+12
These functions are only used within this translation unit, so we can make them internally linked.
2020-09-03file_sys/patch_manager: Add missing includeReinUsesLisp1-0/+1
Fixes build issues
2020-08-23file_sys: Replace inclusions with forward declarations where applicableLioncash25-37/+64
Same behavior, minus unnecessary inclusions where not necessary.
2020-08-23registered_cache: Make use of ends_with for string suffix checkingLioncash1-2/+1
Simplifies code.
2020-08-23registered_cache: Make use of designated initializersLioncash1-15/+15
Removes the need for comments to indicate the fields being assigned.
2020-08-18vfs_real: Resolve sign conversion warningsLioncash1-2/+2
2020-08-18vfs_real: Avoid redundant map lookupsLioncash1-30/+46
Avoids some trivially avoidable map lookups by keeping the result of find operations around and querying them.
2020-08-16common/fileutil: Convert namespace to Common::FSLioncash7-119/+130
Migrates a remaining common file over to the Common namespace, making it consistent with the rest of common files. This also allows for high-traffic FS related code to alias the filesystem function namespace as namespace FS = Common::FS; for more concise typing.
2020-08-13General: Tidy up clang-format warnings part 2Lioncash1-3/+3
2020-08-05vfs_vector: Make creation of array vfs files less verboseLioncash4-41/+41
We can add a helper function to make creation of these files nicer. While we're at it, we can eliminate an unnecessary std::array copy in the constructor. This makes the overhead on some of these functions way less intensive, given some arrays were quite large. e.g. The timezone location names are 9633 bytes in size.
2020-08-03aes_util: Allow SetIV to be non-allocatingLioncash2-4/+6
In a few places, the data to be set as the IV is already within an array. We shouldn't require this data to be heap-allocated if it doesn't need to be. This allows certain callers to reduce heap churn.
2020-08-03time_zone_binary: Make use of designated initializersLioncash1-17/+25
2020-08-03file_sys/mode: Make use of DECLARE_ENUM_FLAG_OPERATORS with ModeLioncash2-18/+21
Same behavior, minus a hand-rolled operator.
2020-08-03patch_manager: Resolve -Wignored-qualifier warningsLioncash1-2/+2
Top level const will always be ignored in this case, so it can be removed.
2020-08-03registered_cache: Resolve -Wmaybe_uninitialized warningsLioncash1-10/+15
While we're at it, we can avoid a redundant map lookup.
2020-07-30fs: Rename SaveDataDescriptor to SaveDataAttributeMorph2-29/+51
2020-07-29xts_archive: Check if the file is nullptr prior to parsingMorph1-5/+9
Fixes an access violation where the file no longer exists at the specified path while being parsed.
2020-07-29registered_cache: Add support for removing folder ncasMorph2-53/+54
2020-07-18file_sys/nsp: Make SetTicketKeys actually do somethingFearlessTobi2-32/+30
Previously, the method wasn't modifying any class state and therefore not having any effects when called. Since this has been the case for a very long time now, I'm not sure if we couldn't just remove this method altogether.
2020-07-16Check for empty section0 and CNMT prior to installMorph1-3/+19
2020-07-15clang formatMorph1-3/+3
2020-07-15Use proper install result when overwriting filesMorph1-1/+1
2020-07-15Remove global system instance and address feedbackMorph2-14/+10
2020-07-15registered_cache: Remove previous update/dlc if it exists on installMorph2-13/+83
- 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
2020-07-12fs: Fix RomFS building when zero byte files are presentMorph4-10/+10
When zero byte files are present, the key (offset) for that file is identical to the file right after. A std::map isn't able to fit key-value pairs with identical keys (offsets), therefore, the solution is to use std::multimap which permits multiple entries with the same key. This most prominently fixes Pokemon Sword and Shield weather with any RomFS mod applied.
2020-07-10vfs_real: Fix MoveFileMorph1-10/+17
The file wasn't closed prior to being renamed / moved, throwing an error that states "The process cannot access the file because it is being used by another process." Fix this by closing the file prior to a rename / move operation. Fixes saving in Luigi's Mansion 3 and KATANA KAMI: A Way of the Samurai Story.
2020-07-10bis_factory: Set User NAND free space to be 1 MiB less than total.Morph1-1/+3
2020-07-10sdmc_factory: Set the SDMC total size to 1 TiBMorph1-1/+3
We should not be limited by the SDMC's partition size, set this to 1 TiB. Hardware is limited to the max allowed by the MBR partition table which is 2 TiB.
2020-07-10bis_factory: Use hardware default NAND partition sizesMorph1-10/+11
Sets the total space of user and system partitions to their hardware defaults. Furthermore, return the total space as free space for the user partition to prevent it from reaching zero. Some games like Bioshock 2 check for the available free space prior to save creation, and we should not be limited by arbitrary limits.
2020-07-01key_manager: Correct casing of instance()Lioncash7-7/+7
Our codebase uppercases member function names.
2020-06-19mii_model: Remove redundant std::moveMerryMage1-1/+1
Named return value optimization automatically applies here.
2020-06-18shared_font: Service::NS::EncryptSharedFont takes a size_t&MerryMage1-1/+1
2020-05-28Make copying directory string more conciselat9nq1-2/+1
2020-05-28Address requested changeslat9nq2-4/+4
2020-05-28*nix systems can read any-case patch directorieslat9nq2-8/+32
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'.
2020-05-20crypto: Make KeyManager a singleton classFearlessTobi10-18/+16
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.
2020-05-16file_sys: Update SystemVersion archive to version 10.0.2David Marcec1-7/+7
2020-05-11file_sys: savefata_factory: Update to support DeviceSaveData.bunnei1-3/+6
2020-05-11file_sys: control_metadata: Expose device_save_data_size.bunnei2-0/+5
2020-04-21file_sys: program_metadata: Add a helper function for generating reasonable default metadata.bunnei2-1/+16
- We need this for homebrew process initialization.
2020-04-17core: memory: Move to Core::Memory namespace.bunnei2-6/+6
- helpful to disambiguate Kernel::Memory namespace.
2020-04-16CMakeLists: Specify -Wextra on linux buildsLioncash3-12/+18
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.
2020-04-14file_sys: patch_manager: Return early when there are no layers to apply.bunnei1-0/+6
2020-04-07file_sys: fix LayeredFS error when loading some games made with… (#3602)enler1-1/+2
* fix LayeredFS error when loading some games made with the Unity
2020-01-31Revert "system_archive: Fix Korean and Chinese fonts"bunnei5-880167/+27164
2020-01-24Disable clang-format for font filesFearlessTobi3-0/+6
2020-01-19system_archive: Fix Chinese fontFearlessTobi2-13582/+694524
Adds the proper OSS font for the Chinese language.
2020-01-19system_archive: Fix Korean fontFearlessTobi2-13582/+185637
Fixes Korean fonts when using Open-source system archives.
2020-01-04system_archive: Add a basic HLE implementation for time zone binary.bunnei3-1/+673
2019-11-28patch_manager: Adds check for disabled cheats to prevent them from being enabled (#3178)Morph1-5/+11
* Adds check for disabled cheats to prevent them from being added to the CheatList * Address feedback
2019-11-27filesys/romfs: Remove unused includesLioncash2-4/+2
These inclusions aren't used at all within the public interface, so they can be removed.
2019-11-27filesys/romfs: Make ProcessFile and ProcessDirectory internally linkedLioncash1-2/+3
These functions aren't used outside of this file, so we can place them within an anonymous namespace.
2019-11-27file_sys/directory: Make EntryType an enum classLioncash1-1/+1
This can trivially be an enum class rather than a regular enum, making it more strongly typed.
2019-11-13xts_archive: Remove redundant std::string constructorLioncash1-2/+1
We can just call the .data() member of path instead of constructing a completely new string.
2019-11-12core: Migrate off deprecated mbedtls functionsLioncash2-6/+6
These functions are marked for deprecation and it's recommended that the *_ret variants be used instead.
2019-11-12loader; Resolve sign conversion/truncation errorsLioncash3-6/+6
2019-11-12file_sys: Resolve sign conversion warningsLioncash4-12/+10
Resolves a few trivial sign conversion/mismatch errors.
2019-11-04common_func: Use std::array for INSERT_PADDING_* macros.bunnei2-30/+28
- Zero initialization here is useful for determinism.
2019-10-22savedata_factory: Automatically create certain savedataZach Hilman1-0/+12
After further hardware investigation, it appears that some games, perhaps those more lazily coded, will not call EnsureSaveData, meaning that they expect the normal (current) save to be automatically made. Additionally, some games do not create a cache or temporary save before use. In these 3 specific instances, the save is created automatically for the game if it doesn't exist.
2019-10-13card_image: Implement system update commands in XCIZach Hilman2-3/+37
2019-10-13pl_u: Fix mismatched rebase size error in font encryptionZach Hilman1-8/+6
2019-10-13pl_u: Use kernel physical memoryZach Hilman1-4/+7
2019-10-13pl_u: Use OSS system archives if real archives don't existZach Hilman1-2/+1
2019-10-13system_archive: Synthesize shared fonts system archivesZach Hilman3-5/+101
2019-10-13externals: Move OSS font data to file_sys in coreZach Hilman12-0/+73309
2019-10-06core: Remove Core::CurrentProcess()Lioncash1-2/+3
This only encourages the use of the global system instance (which will be phased out long-term). Instead, we use the direct system function call directly to remove the appealing but discouraged short-hand.
2019-10-06hle/service: Replace global system instance calls with instance-based onesLioncash2-3/+3
Migrates the HLE service code off the use of directly accessing the global system instance where trivially able to do so. This removes all usages of Core::CurrentProcess from the service code, only 8 occurrences of this function exist elsewhere. There's still quite a bit of "System::GetInstance()" being used, however this was able to replace a few instances.
2019-09-30bcat: Implement DeliveryCacheProgressImpl structureZach Hilman1-4/+4
Huge thanks to lioncash for re-ing this for me.
2019-09-30boxcat: Use Etag header names for file digestZach Hilman1-14/+10
2019-09-30filesystem: Add getter for BCAT temporary directoryZach Hilman2-0/+7
2019-09-30vfs: Add function to extract ZIP file into virtual filesystemZach Hilman2-0/+96
2019-09-23card_image: Add accessors for raw partitions in XCIZach Hilman2-0/+36
2019-09-23card_image: Lazily load partitions in XCIZach Hilman2-26/+41
2019-09-23pfs: Provide accessors for file sizes and offsetsZach Hilman2-0/+17
2019-09-22Revert "Merge pull request #2709 from DarkLordZach/oss-ext-fonts-1"David Marcec15-73412/+5
This reverts commit fa1c60c33ef88c6cd0b72da46842dc9098db712d, reversing changes made to e34899067b60a69bca02761bd1290c6824bb559a.
2019-09-22pl_u: Use kernel physical memoryZach Hilman1-4/+7
2019-09-22dmnt_cheat_vm: Default initialize structure valuesZach Hilman1-2/+1
2019-09-22pl_u: Use OSS system archives if real archives don't existZach Hilman1-2/+1
2019-09-22patch_manager: Update cheat parsing for new VMZach Hilman2-15/+20
2019-09-22cheat_engine: Move to memory and strip VMZach Hilman2-726/+0
This is to go with the Atmosphere VM port, now it just contains the callbacks needed for the interface between DmntCheatVm and yuzu, along with the cheat parsers.
2019-09-22system_archive: Synthesize shared fonts system archivesZach Hilman3-5/+101
2019-09-22externals: Move OSS font data to file_sys in coreZach Hilman12-0/+73309
2019-09-22configure_debug: Move reporting option to loggingZach Hilman1-4/+4
2019-09-21filesystem: Add const qualification to various accessorsZach Hilman6-12/+15
2019-09-21yuzu: Port old usages of Filesystem namespace to FilesystemControllerZach Hilman3-11/+25
2019-09-21card_image: Add accessors for gamecard certificateZach Hilman2-0/+9
Used by fsp-srv/IDeviceOperator
2019-09-21card_image: Add functions to query gamecard update partitionZach Hilman2-0/+24
Includes version and meta title ID, used by fsp-srv/IDeviceOperator
2019-09-21content_archive: Add accessors for Rights ID and SDK VersionZach Hilman2-0/+10
2019-09-21sdmc_factory: Add SD Card size gettersZach Hilman2-0/+12
2019-09-21bis_factory: Add getters for NAND partition sizesZach Hilman2-0/+38
2019-09-21submisson_package: Fix edge case with improperly sized filenamesZach Hilman1-1/+2
Prevents a crash if the filename is less than 9 characters long.
2019-09-21sdmc_factory: Add accessor for SDMC Album directoryZach Hilman2-0/+6
2019-09-21sdmc_factory: Add accessor for SDMC PlaceholderCacheZach Hilman2-1/+10
2019-09-21sdmc_factory: Add accessor for content directoryZach Hilman2-0/+7
2019-09-21savedata_factory: Implement savedata creation and don't create dir on openZach Hilman2-26/+40
Matches hardware behavior and eliminates some nasty behavior we were doing that wasn't hw-accurate at all.
2019-09-21patch_manager: Add short-circuit edge-case to GetPatchVersionNamesZach Hilman1-0/+2
If title ID is 0, there are no add ons, prevents wasting time looking for them.
2019-09-21patch_manager: Add error checking to load dir to prevent crashesZach Hilman1-0/+15
Prevents a crash if the load dir would be nullptr, instead logs an error and returns appropriately.
2019-09-21registered_cache: Process *.cnmt.nca filesZach Hilman1-16/+23
Needed to use the RegisteredCache/PlaceholderCache on gamecards.
2019-09-21registered_cache: Implement PlaceholderCache to manage placeholder and installing contentZach Hilman2-0/+175
2019-09-21bis_factory: Fix mod loader edge-case with homebrew title IDsZach Hilman1-1/+1
Fixes a bug where homebrew that has a title ID with the update bit set can cause issues with the PatchManager
2019-09-21bis_factory: Add accessors for BIS placeholder cachesZach Hilman2-1/+20
2019-09-21bis_factory: Add accessor for NAND Image DirectoryZach Hilman2-0/+6
2019-09-21bis_factory: Add accessors for BIS content directoriesZach Hilman2-0/+11
2019-09-21bis_factory: Add accessors for BIS partitionsZach Hilman2-0/+61
2019-07-10system_archive: Add open-source reimplementation of MiiModel dataZach Hilman3-1/+61
2019-07-07Implement MapPhysicalMemory/UnmapPhysicalMemoryMichael Scire2-1/+7
This implements svcMapPhysicalMemory/svcUnmapPhysicalMemory for Yuzu, which can be used to map memory at a desired address by games since 3.0.0. It also properly parses SystemResourceSize from NPDM, and makes information available via svcGetInfo. This is needed for games like Super Smash Bros. and Diablo 3 -- this PR's implementation does not run into the "ASCII reads" issue mentioned in the comments of #2626, which was caused by the following bugs in Yuzu's memory management that this PR also addresses: * Yuzu's memory coalescing does not properly merge blocks. This results in a polluted address space/svcQueryMemory results that would be impossible to replicate on hardware, which can lead to game code making the wrong assumptions about memory layout. * This implements better merging for AllocatedMemoryBlocks. * Yuzu's implementation of svcMirrorMemory unprotected the entire virtual memory range containing the range being mirrored. This could lead to games attempting to map data at that unprotected range/attempting to access that range after yuzu improperly unmapped it. * This PR fixes it by simply calling ReprotectRange instead of Reprotect.
2019-07-02file_sys: Rename other ContentRecordType membersBakugo2-3/+3
2019-07-01file_sys/registered_cache: Improve missing metadata errorBakugo1-2/+2
This can happen when installing NSPs too, not just XCIs.
2019-07-01file_sys/submission_package: Don't warn about missing DeltaFragment NCAsBakugo1-4/+7
DeltaFragments are not useful to us and are often not included in patch NSPs.
2019-07-01file_sys/registered_cache: Ignore DeltaFragment NCAs during installationBakugo1-0/+3
DeltaFragments are only used to download and apply partial patches on a real console, and are not useful to us at all. Most patch NSPs do not include them, and when they do, it's a waste of space to install them.
2019-07-01file_sys: Rename ContentRecordType::Patch to DeltaFragmentBakugo1-1/+1
Avoids potential confusion, since patches and DeltaFragments are not the same thing. Actual full patches are listed under the Program type.
2019-06-26glue: Correct missing bytes in ApplicationLaunchParameterZach Hilman2-7/+10
2019-06-25registered_cache: Add getter to determine source slot in content provider unionZach Hilman2-0/+17
Used to determine StorageId source for application data.
2019-06-25patch_manager: Add getter for title versionZach Hilman2-2/+14
2019-06-20Update content_archive.cppjonsn0w1-2/+2
log clutter in debug logs when theres really no need
2019-06-17Addressed issuesDavid Marcec1-1/+1
2019-06-16Impl'd IsUserAccountSwitchLocked, SetAudioOutVolume, GetAudioOutVolume & Partial impl of GetAccumulatedSuspendedTickChangedEventDavid Marcec2-1/+7
IPC-100 was changed to InitializeApplicationInfoOld instead of InitializeApplicationInfo. IPC-150 makes an indentical call to IPC-100 however does extra processing. They should not have the same name as it's quite confusing to debug.
2019-06-13file_sys/ips_layer: Remove unnecessary reserve() callLioncash1-1/+0
Given 'replace' is assigned to on the following line, this isn't necessary, given the underlying data is going to be overwritten entirely.
2019-06-12common/hex_util: Combine HexVectorToString() and HexArrayToString()Lioncash5-17/+22
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.
2019-06-12file_sys/card_image: Remove obsolete TODOLioncash1-1/+1
We already support Rev 1+.
2019-06-11file_sys/nca_metadata: Update CNMT structuresLioncash1-2/+7
Names a few more entries in relevant structures. Information based off SwitchBrew and my own RE.
2019-06-11file_sys/card_image: Deduplicate casts within AddNCAFromPartition()Lioncash1-3/+6
Makes for nicer reading.
2019-06-11file_sys/card_image: Make bracing consistentLioncash1-4/+8
Makes for more consistent reading.
2019-06-11file_sys/card_image: Assign collapsed NCA contents directly to ncas memberLioncash1-3/+1
Same thing, significantly less noisy.
2019-06-11file_sys/card_image: Deduplicate type castLioncash1-4/+6
Same thing, less duplication. We can also std::move raw into the PartitionFilesystem constructor.
2019-06-11file_sys/card_image: Get rid of a magic numberLioncash1-1/+1
We can just use the size of the array to dehardcode it.
2019-06-11file_sys/card_image: Use std::array deduction guidesLioncash1-1/+6
Same thing, less code.
2019-06-10nsp: Correct status codes for extracted NSPsZach Hilman1-0/+5
Avoids all extracted NSPs being marked as error file type because they don't have program NCAs.
2019-06-10nsp: Use title ID from NPDM metadata for extracted type NSPsZach Hilman1-0/+21
Avoids 0 being used as title ID for all extracted NSPs.
2019-06-07kernel_executable: Optimize BLZ decompressionZach Hilman1-6/+5
2019-06-05game_list: Accept *.kip as a file extension of executablesZach Hilman1-1/+1
2019-06-05program_metadata: Add function to load meta from raw parametersZach Hilman2-0/+20
Needed for KIP loading as KIPs do not have an NPDM but do have the essential parts of the data within.
2019-06-05file_sys: Add classes to parse KIP1 and INI1 filesZach Hilman2-0/+328
2019-05-23Implement IApplicationFunctions::GetDesiredLanguageMichael Scire2-0/+5
2019-04-05file_sys/program_metadata: Remove obsolete TODOsLioncash2-15/+14
BitField has been trivially copyable since e99a14862841841d74be8d0ea9426c2d23546b5e, so we can eliminate these TODO comments and use ReadObject() directly instead of memcpying the data.
2019-04-05file_sys/nca_metadata: Remove unnecessary comparison operators for TitleTypeLioncash2-11/+0
enum class elements from the same enum can already be compared against one another without the need for explicitly defined comparison operators.
2019-04-05file_sys/fsmitm_romfsbuild: Utilize a string_view in romfs_calc_path_hash()Lioncash1-1/+3
The given string instance doesn't need to be copied entirely, we can just use a view instead.
2019-04-05service/fsp_srv: Don't pass SaveDataDescriptor instances by value.Lioncash2-2/+2
Passing around a 64 byte data struct by value is kind of wasteful, instead pass a reference to the struct.
2019-04-05service/fsp_srv: Update SaveDataInfo and SaveDataDescriptor structsLioncash2-3/+12
I realized that I updated the documentation on SwitchBrew a while ago, but never actually updated the structs within yuzu.
2019-04-04file_sys/control_metadata: Amend naming of membersLioncash2-12/+24
Quite a bit of these were out of sync with Switchbrew (and in some cases entirely wrong). While we're at it, also expand the section of named members. A segment within the control metadata is used to specify maximum values for the user, device, and cache storage max sizes and journal sizes. These appear to be generally used by the am service (e.g. in CreateCacheStorage, etc).
2019-03-28patch_manager: Dump NSO name with build IDZach Hilman2-5/+6
2019-03-27core: Port current uses of RegisteredCache to ContentProviderZach Hilman4-17/+22
2019-03-27file_sys: Create ContentProvider interface and default implementationsZach Hilman2-152/+279
2019-03-24core/cheat_engine: Make MemoryReadImpl and MemoryWriteImpl internally linkedLioncash1-0/+2
These don't need to be visible outside of the translation unit, so they can be enclosed within an anonymous namespace.
2019-03-22file_sys/cheat_engine: Silence truncation and sign-conversion warningsLioncash2-5/+6
2019-03-22file_sys/cheat_engine: Remove use of global system accessorsLioncash4-37/+45
Instead, pass in the core timing instance and make the dependency explicit in the interface.
2019-03-22file_sys/patch_manager: Deduplicate NSO headerLioncash1-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
2019-03-22file_sys/patch_manager: Remove two magic valuesLioncash1-2/+5
These correspond to the NSOBuildHeader.
2019-03-19file_sys/content_archive: Amend name of Data_Unknown5 enum entryLioncash2-2/+15
While we're at it, give each entry some documentation.
2019-03-11set_sys: Use official nintendo version stringZach Hilman3-8/+18
2019-03-11system_version: Correct sizes on VectorVfsFile constructionZach Hilman1-4/+4
2019-03-10set_sys: Implement GetFirmwareVersion(2) for libnx hosversionZach Hilman3-1/+63
Uses the synthesized system archive 9 (SystemVersion) and reports v5.1.0-0.0
2019-03-05vm_manager: Remove cheat-specific ranges from VMManagerZach Hilman2-37/+44
2019-03-05cheat_engine: Add parser and interpreter for game cheatsZach Hilman2-0/+713
2019-03-05patch_manager: Display cheats in game list add-onsZach Hilman1-0/+2
2019-03-05patch_manager: Add support for loading cheats listsZach Hilman2-0/+56
Uses load/<title_id>/<mod_name>/cheats as root dir, file name is all upper or lower hex first 8 bytes build ID.
2019-02-25file_sys/vfs_vector: Fix ignored offset on WriteFrederic L1-1/+1
2019-01-18file_sys/directory: Remove unused DirectoryBackend classLioncash1-23/+0
This isn't used at all, so we can just get rid of it.
2019-01-15content_archive: Add getter for logo section of NCAZach Hilman2-0/+16
2018-12-28romfs: Add SingleDiscard extraction typeZach Hilman2-2/+6
Needed for manual RomFS extraction, as Full generates an extra directory and Truncated generates variable results.
2018-12-28file_sys/program_metadata: Print out more descriptive address space descriptionsLioncash1-3/+7
Provides extra information that makes it easier to tell if an executable being run is using a 36-bit address space or a 39-bit address space. While we don't support AArch32 executables yet, this also puts in distinguishing information for the 32-bit address space types as well.
2018-12-27am: Implement GetSaveDataSize and ExtendSaveDataZach Hilman3-3/+3
These functions come in a pair and are needed by Smash Ultimate, Minecraft, and Skyrim, amongst others.
2018-12-27savedata_factory: Partially implement IVFC save sizes using filesZach Hilman2-0/+38
This stores a file in the save directory called '.yuzu_save_size' which stores the two save sizes (normal area and journaled area) sequentially as u64s.
2018-12-27control_metadata: Update NACP fields with latest Switchbrew dataZach Hilman2-6/+29
2018-12-27control_metadata: Use value member instead of unique_ptr to store structZach Hilman2-10/+13
Serves no actual purpose in this instance besides making NACP's copy assignment deleted, which is not intended behavior.
2018-12-27vfs: Add reinterpret_casts to WriteArray and ObjectZach Hilman1-2/+2
Allows these functions to compile when T is not u8.
2018-12-21kernel/process: Hook up the process capability parser to the process itselfLioncash2-0/+17
While we're at it, we can also toss out the leftover capability parsing from Citra.
2018-12-19Fixed uninitialized memory due to missing returns in canaryDavid Marcec1-0/+1
Functions which are suppose to crash on non canary builds usually don't return anything which lead to uninitialized memory being used.
2018-12-11patch_manager: Prevent use of a dangling pointer within PatchRomFSLioncash1-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.
2018-12-08file_sys/save_data_factory: Update SaveDataSpaceId enumLioncash1-1/+3
Amends it with missing values deduced from RE (ProperSystem being from SwitchBrew for naming) (SdCardUser wasn't that difficult to discern given it's used alongside SdCardSystem when creating the save data indexer, based off the usage of the string "saveDataIxrDbSd" nearby).
2018-12-07savedata_factory: Add support for CacheStorageZach Hilman1-0/+2
2018-12-07savedata_factory: Delete TemporaryStorage on startupZach Hilman1-1/+5
Mimics hardware behavior.
2018-12-06system_archive: Implement open source NgWord2Zach Hilman3-1/+41
2018-12-05ng_word: Deduplicate use of a constant valueLioncash1-1/+1
We've already given the constant to the vector itself, so we don't need to re-hardcode it in the array.
2018-12-05system_archive: Use a regular function pointer instead of std::function for file-scope system archive arrayLioncash1-3/+2
This allows the array to be constexpr. std::function is also allowed to allocate memory, which makes its constructor non-trivial, we definitely don't want to have all of these execute at runtime, taking up time before the application can actually load.
2018-12-03patch_manager: Obey disabled add-ons list when patching gameZach Hilman2-11/+50
2018-12-03file_sys/directory: Amend path buffer size for directory entriesLioncash1-2/+2
The path buffer is actually 0x301 (769) characters in length, with the extra character being intended for the null-terminator.
2018-12-02file_sys/registered_cache: Eliminate variable shadowingLioncash1-27/+26
Also inverts if statements where applicable to allow unindenting code a little bit.
2018-12-02filesystem: De-globalize registered_cache_unionLioncash2-11/+10
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.
2018-12-01file_sys: Override missing mutating functions to be stubbed out for ReadOnlyVfsDirectory by defaultLioncash2-0/+25
Ensures that read only indeed means read only.
2018-12-01service/fsp_srv: Implement CleanDirectoryRecursivelyLioncash2-4/+37
This is the same behavior-wise as DeleteDirectoryRecursively, with the only difference being that it doesn't delete the top level directory in the hierarchy, so given: root_dir/ - some_dir/ - File.txt - OtherFile.txt The end result is just: root_dir/
2018-11-27file_sys/registered_cache: Remove unused <map> includeLioncash1-1/+0
2018-11-27file_sys/registered_cache: Use regular const references instead of std::shared_ptr for InstallEntry()Lioncash2-27/+26
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).
2018-11-27control_metadata: Correct typo in language name (Portugese -> Portuguese)Lioncash1-7/+17
While we're at it, organize the array linearly, since clang formats the array elements quite wide length-wise with the addition of the missing 'u'. Technically also fixes patch lookup and icon lookup with Portuguese, though I doubt anyone has actually run into this issue.
2018-11-23file_sys: Implement system archive synthesizer for NgWord (806)Zach Hilman5-6/+61
2018-11-21patch_manager: Show LayeredExeFS patch in add-ons columnZach Hilman1-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.
2018-11-21file_sys/card_image: Provide named members for the GamecardInfo structLioncash1-1/+12
Fills out the struct according to information provided by SwitchBrew
2018-11-20patch_manager: Apply LayeredExeFS patchesZach Hilman1-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.
2018-11-20settings: Add option to dump ExeFS of games upon launchZach Hilman1-0/+9
When enabled, all exefs(es) will be copied to yuzu/dump/<title_id>/exefs.
2018-11-16file_sys/errors: Remove currently unused filesystem error codesLioncash1-10/+0
Rather than keeping around unused values, we can just introduce them as needed.
2018-11-16file_sys/errors: Get rid of the ErrCodes namespaceLioncash1-17/+5
There's no real point to keeping the separate enum around, especially given the name of the error code itself is supposed to document what the value actually represents.
2018-11-16file_sys/errors: Extract FS-related error codes to file_sys/errors.hLioncash1-1/+8
Keeps filesystem-related error codes in one spot.
2018-11-16file_sys: Add framework for synthesizing open source archivesZach Hilman2-0/+105
2018-11-16vfs_vector: Add VFS backend for std::arrayZach Hilman1-0/+52
Allows using constexpr/static const data with VFS.
2018-11-02file_sys: Use common KeyManager in NCA container typesZach Hilman6-7/+18
Creates a single KeyManager for the entire container and then passes it into the NCA constructor, eliminating several unnecessary KeyManager reads.
2018-11-02content_archive: Add optional KeyManager parameter to constructorZach Hilman2-3/+5
Allows resuing a common KeyManager when a large amount of NCAs are handled by the same class. Should the parameter not be provided, a new KeyManager will be constructed, as was the default behavior prior to this.
2018-10-30general: Remove unused boost inclusions where applicableLioncash1-1/+0
Cleans up unused includes and trims off some dependencies on externals.
2018-10-30global: Use std::optional instead of boost::optional (#1578)Frederic L11-84/+76
* 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
2018-10-29ns: Implement command 400: GetApplicationControlDataZach Hilman2-2/+2
Returns the raw NACP bytes and the raw icon bytes into a title-provided buffer. Pulls from Registration Cache for control data, returning all zeros should it not exist.
2018-10-29patch_manager: Add support for dumping decompressed NSOsZach Hilman1-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.
2018-10-29bis_factory: Add getter for mod dump root for a title IDZach Hilman2-2/+11
Equates to yuzu_dir/dump/<title id>/
2018-10-29savedata_factory: Expose accessors for SaveDataSpaceZach Hilman2-14/+21
2018-10-29control_metadata: Add GetRawBytes function to NACPZach Hilman2-0/+7
Returns the raw bytes of the NACP file. Needed for GetApplicationControlData which returns the raw, unprocessed NACP to the game.
2018-10-28file_sys/patch_manager: Remove unnecessary if-statements (#1586)Frederic L1-7/+6
* remove unnecessary if-statements * Addressed feedback
2018-10-25ips_layer: Use rle_size instead of data_size in RLE patch applicationZach Hilman1-1/+1
Prevents a potential bug when using RLE records in an IPS patch.
2018-10-24vfs: Handle failure of file reading within VfsRawCopy()Lioncash1-2/+6
Also gets rid of an unused variable.
2018-10-19vfs: Remove InterpretAsDirectory and related functionsZach Hilman17-95/+1
When writing VFS, it initally seemed useful to include a function to in-place convert container files into directories in one homogenous directory structure, but re-evaluating it now there have been plenty of chances to use it and there has always been a better way. Removing as it is unused and likely will not be used.
2018-10-18qt: Add support for dumping a DLC Data RomFSZach Hilman2-0/+5
2018-10-17registered_cache: Deduplicate results of ListEntry and ListEntryFilterZach Hilman2-2/+16
Prevents a Entry from appearing in the list twice if the user has it installed in two places (e.g. User NAND and SDMC)
2018-10-17patch_manager: Add support for using LayeredFS with DataZach Hilman1-2/+3
2018-10-16content_archive: Simpify assignment of bktr_base_romfs in the constructorLioncash1-2/+1
std::move doesn't actually dereference the data, so it doesn't matter whether or not the type is null.
2018-10-16content_archive: Make IsValidNCA() an internally linked functionLioncash2-3/+1
This is only ever used within the cpp file, so it can just be an internal function.
2018-10-16content_archive: Simplify rights ID checkLioncash1-2/+2
This is the same as using std::any_of with an inverted predicate.
2018-10-16content_archive: Split loading into separate functionsLioncash2-253/+290
The constructor alone is pretty large, the reading code should be split into its consistuent parts to make it easier to understand it without having to build a mental model of a 300+ line function.
2018-10-16content_archive: Pass and take NCASectionHeader instance by referenceLioncash2-3/+3
Each header is 512 bytes in size, which is kind of an excessive amount to copy all the time when it's possible to avoid doing so.
2018-10-16XCI: Add function for checking the existence of the program NCALioncash2-5/+7
The only reason the getter existed was to check whether or not the program NCA was null. Instead, we can just provide a function to query for the existence of it, instead of exposing it entirely.
2018-10-16savedata_factory: Add TemporaryStorage SaveDataSpaceIdZach Hilman1-1/+4
Required for TemporaryStorage saves (in addition to SaveDataType)
2018-10-16savedata_factory: Add support for DeviceSaveDataZach Hilman1-0/+8
Uses the same path as SaveData except with UID 0. Adds a warning if UID is not 0.
2018-10-16file_sys/registered_cache: Use unique_ptr and regular pointers instead of shared_ptrs where applicableLioncash7-30/+30
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.
2018-10-16file_sys/control_metadata: Get rid of magic constantsLioncash1-3/+6
These are just the size of the data being passed in, so we can specify that via the size() member function.
2018-10-15aoc: Read DLC base title ID from RegisteredCacheZach Hilman2-0/+5
Falls back to title ID + 0x1000, which is what HOS does.
2018-10-13patch_manager: Move non-Program RomFS patch log to DebugZach Hilman1-2/+8
Normal Program-type patches will still be logged to aid in debugging, but for others (mainly Control), it was moved to Debug.
2018-10-13content_archive: Move get key log to Trace levelZach Hilman1-1/+1
Avoids printing live keys in the general log.
2018-10-09patch_manager: Return a std::unique_ptr from ParseControlNCA() and GetControlMetadata() instead of a std::shared_ptrLioncash2-11/+9
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.
2018-10-09ips_layer: Avoid constructing std::vector instances where not necessaryLioncash1-6/+25
We can just compare the existing std::vector instance with a constexpr std::array containing the desired match. This is lighter resource-wise, as we don't need to allocate on the heap.
2018-10-09ips_layer: Remove unnecessary explicit std::pair constructor in std::arrayLioncash1-5/+13
Makes the layout of the array consistent, by making all elements match, instead of special-casing the first one.
2018-10-09ips_layer: Add missing includesLioncash2-7/+17
Adds missing includes to prevent potential compilation issues in the future. Also moves the definition of a struct into the cpp file, so that some includes don't need to be introduced within the header.
2018-10-09ips_layer: std::move data within PatchIPS() and Apply()Lioncash1-2/+5
We don't need to make a copy of the read data, so we can std::move it into the make_shared call here.
2018-10-09ips_layer: Silence truncation and conversion warningsLioncash1-3/+3
Makes type conversions explicit to avoid compiler warnings.
2018-10-07vfs: Move forward declarations to separate fileZach Hilman2-9/+22
2018-10-05romfs_factory: Extract packed update setter to new functionZach Hilman5-6/+15
2018-10-05patch_manager: Add support for NSP packed updatesZach Hilman1-2/+2
Reads as Update (NSP) in add-ons
2018-10-05patch_manager: Add support for packed updatesZach Hilman4-5/+18
Will prefer any installed update over the packed version.
2018-10-04patch_manager: Avoid romfs_ext requirement for patchingZach Hilman1-4/+1
2018-10-04fsmitm_romfsbuild: Extract stubs and IPS to romfs_ext dirZach Hilman5-21/+38
2018-10-04fsmitm_romfsbuild: Add support for stubbing and IPS patches in LFSZach Hilman1-0/+14
2018-10-04ips_layer: Fix inaccuracies with comments and flagsZach Hilman3-16/+51
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.
2018-10-04ips_layer: Deduplicate resource usageZach Hilman3-31/+37
2018-10-04ips_layer: Add support for escape sequences and midline commentsZach Hilman3-8/+41
More accurately follows IPSwitch specification.
2018-10-04patch_manager: Add support for IPSwitch format patchesZach Hilman1-22/+56
2018-10-04ips_layer: Add IPSwitchCompiler to process IPSwitch formatZach Hilman2-0/+168
2018-10-03submission_package: Avoid dangling std::string_view within SetTicketKeys()Lioncash1-2/+5
GetName() returns a std::string by value, not by reference, so after the std::string_view is constructed, it's not well defined to actually execute any member functions of std::string_view that attempt to access the data, as the std::string has already been destroyed. Instead, we can just use a std::string and erase the last four characters.
2018-10-03submission_package: Correct location of null check within SetTicketKeys()Lioncash1-3/+6
If a ticket file was ever a null pointer, we'd cause a null pointer dereference, as we were calling GetExtension() on the pointer instance.
2018-10-03submission_package: Use std::string's rfind() when looking for the extension in InitializeExeFSAndRomFS()Lioncash1-1/+1
When searching for a file extension, it's generally preferable to begin the search at the end of the string rather than the beginning, as the whole string isn't going to be walked just to check for something at the end of it.
2018-10-03submission_package: Ensure the 'extracted' member variable is always initializedLioncash2-3/+1
If an error occurs when constructing the PartitionFilesystem instance, the constructor would be exited early, which wouldn't initialize the extracted data member, making it possible for other code to perform an uninitialized read by calling the public IsExtractedType() member function. This prevents that.
2018-10-03submission_package: Move ExeFS and RomFS initialization to its own functionLioncash2-10/+18
Like the other two bits of factored out code, this can also be put within its own function. We can also modify the code so that it accepts a const reference to a std::vector of files, this way, we can deduplicate the file retrieval. Now the constructor for NSP isn't a combination of multiple behaviors in one spot. It's nice and separate.
2018-10-03submission_package: Move NCA reading code to its own functionLioncash2-43/+48
This too, is completely separate behavior from what is in the constructor, so we can move this to its own isolated function to keep everything self-contained.
2018-10-03submission_package: Move ticket key setting to its own functionLioncash1-21/+28
This behavior is entirely independent of the surrounding code, so it can be put in its own function to keep the behavior separate.
2018-10-03submission_package: Invert conditionals within NSP's constructor to reduce nestingLioncash1-45/+49
We can use early continues here to reduce the amount of nesting.
2018-10-03card_image: Ensure program_nca_status is always initializedLioncash1-1/+3
If any of the error paths before the NCA retrieval are taken, it'll result in program_nca_status being left in an inconsistent state. So we initialize it by default with a value indicating an error.
2018-10-02nso: Optimize loading of IPS patchesZach Hilman2-45/+38
Avoid resource-heavy classes and remove quasi-duplicated code.
2018-10-01patch_manager: Add PatchNSO functionZach Hilman2-0/+102
While PatchExeFS operated on the entire directory, this function operates on the uncompressed NSO. Avoids copying decompression code to PatchManager.
2018-10-01patch_manager: Use strings for patch type instead of enumZach Hilman2-29/+33
2018-10-01file_sys: Implement function to apply IPS patchesZach Hilman2-0/+103
2018-10-01aoc_u: Extract AccumulateAOCTitleIDs to separate functionZach Hilman1-1/+2
2018-10-01aoc_u: Implement GetAddOnContentBaseIdZach Hilman1-2/+3
Command #5
2018-10-01romfs_factory: Read from all locations with StorageId NoneZach Hilman1-26/+25
Previous behavior was to assert. Seems to mirror expected game behavior.
2018-10-01patch_manager: Add DLC recognition to PatchManagerZach Hilman2-0/+27
2018-09-30kernel/process: Make data member variables privateLioncash2-2/+2
Makes the public interface consistent in terms of how accesses are done on a process object. It also makes it slightly nicer to reason about the logic of the process class, as we don't want to expose everything to external code.
2018-09-26fsmitm_romfsbuild: std::move std::vector instances in Build()Lioncash1-2/+2
Avoids making copies of large std::vector instances where it's trivially avoidable to do so.
2018-09-26fsmitm_romfsbuild: Replace manual value aligning with Common::AlignUp()Lioncash1-12/+11
Theres no need to do explicit bitwise arithmetic here, when we have a function that does this with a more descriptive name.
2018-09-26patch_manager: Invert conditionals within ApplyLayeredFS()Lioncash1-27/+30
Avoids the need to nest code quite a bit by early-exiting in error cases.
2018-09-26vfs_vector: Amend initializer list order in VectorVfsFile's constructor initializer listLioncash1-1/+1
Orders the initializer list members to be in the same order that they would be initialized in. Avoids compiler warnings.
2018-09-26fsmitm_romfsbuild: Avoid type truncation warningsLioncash1-7/+10
Cast where explicitly necessary and in other cases we can simply modify the algorithm to accomodate larger data.
2018-09-26fsmitm_romfsbuild: Remove unnecessary constructors and initializers for RomFSBuildFileContext and RomFSBuildDirectoryContextLioncash1-5/+3
There's no need to duplicate in-class initializers with a constructor initializer list. std::strings also initialize to empty by default.
2018-09-26fsmitm_romfsbuild: Remove unnecessary loops in Build()Lioncash1-6/+0
The std::vector instances are already initially allocated with all entries having these values, there's no need to loop through and fill them with it again when they aren't modified.
2018-09-26fsmitm_romfsbuild: Make auto variable into a std::size_t variable within Build()Lioncash1-1/+1
auto x = 0; auto-deduces x to be an int. This is undesirable when working with unsigned values. It also causes sign conversion warnings. Instead, we can make it a proper unsigned value with the correct width that the following expressions operate on.
2018-09-26vfs/etc: Append std:: to size_t usagesLioncash6-22/+23
Given we just recently had a patch backport this from citra, let's try and keep the convention uniform.
2018-09-26vfs_concat/vfs_layered: Remove friend declarations from ConcatenatedVfsFileLioncash7-60/+58
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.
2018-09-25vfs_static: Remove template byte parameter from StaticVfsFileLioncash4-42/+42
This converts it into a regular constructor parameter. There's no need to make this a template parameter on the class when it functions perfectly well as a constructor argument. This also reduces the amount of code bloat produced by the compiler, as it doesn't need to generate the same code for multiple different instantiations of the same class type, but with a different fill value.
2018-09-24process/vm_manager: Amend API to allow reading parameters from NPDM metadataLioncash2-3/+7
Rather than hard-code the address range to be 36-bit, we can derive the parameters from supplied NPDM metadata if the supplied exectuable supports it. This is the bare minimum necessary for this to be possible. The following commits will rework the memory code further to adjust to this.
2018-09-24fsmitm: Cleanup and modernize fsmitm portZach Hilman20-376/+376
2018-09-22qt: Add UI elements for LayeredFS and related toolsZach Hilman2-2/+2
2018-09-22romfs: Implement CreateRomFSZach Hilman2-4/+25
2018-09-22file_sys: Port Atmosphere-NX fs_mitm implementationZach Hilman2-0/+474
2018-09-22bis_factory: Add mod directory VFS getterZach Hilman2-3/+14
2018-09-22patch_manager: Add LayeredFS mods supportZach Hilman2-1/+44
2018-09-22vfs_concat: Rewrite and fix ConcatenatedVfsFileZach Hilman2-14/+59
2018-09-22vfs_layered: Add LayeredVfsDirectoryZach Hilman2-0/+178
Reads multiple dirs through as if a waterfall.
2018-09-22vfs_vector: Add VectorVfsFileZach Hilman2-0/+75
Maps a vector into the VFS interface.
2018-09-22vfs_static: Add StaticVfsFileZach Hilman1-0/+77
Always returns the template argument byte for all reads. Doesn't support writes.
2018-09-22vfs: Add and rewite VfsRawCopy functionsZach Hilman2-6/+36
2018-09-22vfs: Add GetEntries methodZach Hilman4-0/+32
Maps name string to directory or file.
2018-09-20file-sys: Default heavy-weight class destructors in the cpp fileLioncash25-1/+45
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.
2018-09-20control_metadata: Remove unnecessary else within GetLanguageEntry()Lioncash1-8/+8
There's no need to indent the code here, given the if case contains a return statement at the end of it.
2018-09-20control_metadata: Move language name array definition to the cpp fileLioncash2-6/+9
This was used in two different translation units (deconstructed_rom_directory and patch_manager). This means we'd be pointlessly duplicating the whole array twice due to it being defined within the header.
2018-09-19xts_archive: Remove unused variables from CalculateHMAC256()Lioncash1-3/+0
These variables aren't used, which still has an impact, as std::vector cannot be optimized away by the compiler (it's constructor and destructor are both non-trivial), so this was just wasting memory.
2018-09-19xts_archive: Make AsNCA() return a std::unique_ptr instead of a std::shared_ptrLioncash2-3/+3
std::shared_ptr isn't strictly necessary here and is only ever used in contexts where the object doesn't depend on being shared. This also makes the interface more flexible, as it's possible to create a std::shared_ptr from a std::unique_ptr (std::shared_ptr has a constructor that accepts a std::unique_ptr), but not the other way around.
2018-09-19xts_archive: Ensure NAX's type member is always initializedLioncash1-1/+1
Ensures that the member always has a deterministic value.
2018-09-19xts_archive: Amend initializer order of NAX's constructorLioncash1-2/+2
Orders the initializer list in the same order the members would be initialized. Avoids compiler warnings.
2018-09-19savedata_factory: Add TemporaryStorage SaveDataTypeZach Hilman1-4/+7
Seems to be used by NSO NES Emulator
2018-09-15Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi21-128/+130
2018-09-06file_sys/nca_patch: Amend constructor initializer list orderLioncash1-2/+2
Orders the elements in the initializer list in the order they're specified in the class. This prevents compiler warnings about initialization order.
2018-09-06file_sys/nca_patch: Remove unnecessary includesLioncash2-2/+9
romfs.h doesn't need to be included in the header, the only real dependency here is common's swap.h that needs to be included.
2018-09-06file_sys/patch_manager: Add missing includesLioncash2-0/+5
These includes were previously being satisfied indirectly.
2018-09-05file_sys/submission_package: Correct constructor initialization list orderLioncash1-2/+2
Orders the elements in the sequence to match the order in which they'll actually be initialized in.
2018-09-05file_sys/submission_package: Replace includes with forward declarations where applicableLioncash2-6/+15
2018-09-04bktr: Fix bucket overlap errorZach Hilman5-6/+6
2018-09-04patch_manager: Centralize Control-type NCA parsingZach Hilman2-22/+66
2018-09-04nsp: Fix error masking issue with XCI filesZach Hilman3-6/+13
Now display correct error instead of catch-all MissingProgramNCA
2018-09-04game_list: Fix version display on non-NAND titlesZach Hilman2-7/+23
2018-09-04bktr: Add logging on successful patchZach Hilman3-7/+24
2018-09-04bktr: Implement IVFC offset shiftingZach Hilman5-8/+20
Fixes base game read errors
2018-09-04bktr: Fix missing includes and optimize styleZach Hilman6-96/+102
2018-09-04patch_manager: Add usages of patches to ExeFSZach Hilman2-1/+11
2018-09-04file_sys: Add class to manage game patchesZach Hilman2-0/+132
Right now only includes Updates, but should eventually contain all of the other patches we need.
2018-09-04file_sys: Add BKTR patching mechanismZach Hilman2-0/+352
2018-09-04content_archive: Add BKTR header parsing to NCAZach Hilman2-19/+160
2018-09-04registration: Add RegisteredCacheUnionZach Hilman2-0/+154
Aggregates multiple caches into one interface
2018-09-04main: Only show DRD deprecation warning onceZach Hilman5-2/+5
2018-09-04control_metadata: Use alternate language names if AmericanEnglish isn't availableZach Hilman2-4/+17
2018-09-04card_image: Add program title ID getterZach Hilman2-0/+6
2018-09-04nsp: Comply with style and performance guidelinesZach Hilman4-25/+37
2018-09-04registration: Add support for installing NSP filesZach Hilman2-10/+16
2018-09-04card_image: Parse XCI secure partition with NSPZach Hilman2-7/+33
Eliminated duplicate code and adds support for Rev1+ carts
2018-09-04file_sys: Add Nintendo Submission Package (NSP)Zach Hilman2-0/+296
2018-09-04file_sys: Replace includes with forward declarations where applicableLioncash17-21/+51
Cuts down on include dependencies, resulting in less files that need to be rebuilt when certain things are changed.
2018-09-02vfs_real: Forward declare IOFileLioncash4-7/+22
Eliminates the need to rebuild some source files if the file_util header ever changes. This also uncovered some indirect inclusions, which have also been fixed.
2018-08-31core/core: Replace includes with forward declarations where applicableLioncash2-0/+2
The follow-up to e2457418dae19b889b2ad85255bb95d4cd0e4bff, which replaces most of the includes in the core header with forward declarations. This makes it so that if any of the headers the core header was previously including change, then no one will need to rebuild the bulk of the core, due to core.h being quite a prevalent inclusion. This should make turnaround for changes much faster for developers.
2018-08-27vfs_real: Remove unused variable in CreateDirectoryRelative()Lioncash1-1/+0
2018-08-27registered_cache: Get rid of variable shadowing in ProcessFiles()Lioncash1-3/+3
Prevents compiler warnings.
2018-08-25file_sys/crypto: Fix missing/unnecessary includesZach Hilman4-0/+6
2018-08-24xci: Ignore NCA files with updates in secureZach Hilman1-0/+3
2018-08-24content_archive: Add update title detectionZach Hilman2-0/+11
This is needed because the title IDs of update NCAs will not use the update title ID. The only sure way to tell is to look for a partition with BKTR crypto.
2018-08-23key_manager: Create keys dir if it dosen't existZach Hilman1-0/+1
On call to WriteKeyToFile, so that the autogenerated file can be written.
2018-08-23file_sys: Cut down on includes and copiesZach Hilman3-0/+6
2018-08-23crypto: Eliminate magic constantsZach Hilman2-16/+19
2018-08-23file_sys: Implement NAX containersZach Hilman2-0/+232
2018-08-23registration: Add GetEntryUnparsed methodsZach Hilman2-0/+15
Returns the file before calling parser on it.
2018-08-23sdmc_factory: Add SDMC RegisteredCache getterZach Hilman2-1/+14
2018-08-23vfs: Add GetOrCreateDirectoryRelative methodZach Hilman3-9/+13
2018-08-23xts_encryption_layer: Implement XTSEncryptionLayerZach Hilman1-1/+1
2018-08-23xci: Fix error masking issueZach Hilman2-0/+11
Prevents NCA-related errors from being masked into MissingProgramNCA or MissingKeyFile
2018-08-21vfs: Replace mode.h include with forward declarations where applicableLioncash2-2/+4
Avoids the need to rebuild these source files if the mode header changes.
2018-08-21sdmc_factory: Remove unnecessary core includeLioncash2-1/+1
This doesn't require the central core header to be included, it just needs the vfs headers.
2018-08-21qt/main: Port part of citra(#3411), open savedata workstech4me2-4/+4
2018-08-21service/filesystem: Use forward declarations where applicableLioncash1-0/+1
Avoids the need to rebuild multiple source files if the filesystem code headers change. This also gets rid of a few instances of indirect inclusions being relied upon
2018-08-21romfs_factory: Remove unnecessary includes and use forward declarations where applicableLioncash3-3/+12
Avoids the need to rebuild whatever includes the romfs factory header if the loader header ever changes. We also don't need to include the main core header. We can instead include the headers we specifically need.
2018-08-20registration: Add Data_Unknown5 NCAContentTypeZach Hilman3-2/+3
2018-08-19filesystem: Add support for loading of system archivesZach Hilman3-4/+49
2018-08-16common: Namespace hex_util.h/.cppLioncash1-8/+10
It's in the common code, so it should be under the Common namespace like everything else.
2018-08-15loader: Make ResultStatus directly compatible with fmtLioncash1-2/+5
We can make the enum class type compatible with fmt by providing an overload of operator<<. While we're at it, perform proper bounds checking. If something exceeds the array, it should be a hard fail, because it's, without a doubt, a programmer error in this case.
2018-08-12vfs: Make VfsFilesystem constructor explicitLioncash1-1/+1
Makes it consistent with the other VFS interfaces and prevents implicit construction.
2018-08-12vfs: Make type hierarchy objects classes instead of structsLioncash3-9/+15
struct should be used when the data type is very simple or otherwise has no invariants associated with it. Given these are used to form a hierarchy, class should be used instead.
2018-08-12registration: Various style and documentation improvementsZach Hilman3-18/+22
Fix logic in RealVfsFilesystem Create methods Remove magic numbers Fix regex errors
2018-08-12vfs: Use sanitized paths within MoveFile() and MoveDirectory()Lioncash1-10/+10
Previously these were being unused (or partially unused). While we're at it, use better naming to make it visibly obvious which variant of the path is being used.
2018-08-12card_image: Use type aliases to shorten definitionsLioncash2-6/+6
We have the aliases, so we may as well use 'em.
2018-08-12card_image: Simplify return statement of GetSubdirectories()Lioncash1-1/+1
We don't need to write out the construction long-form, we can just let the language itself work it out off the return type.
2018-08-12made ResultStatus a u16David Marcec2-2/+2
2018-08-12registration: Add support for force overwrite of installedZach Hilman2-22/+48
2018-08-12vfs_real: Add CreateFullPath to Create* operationsZach Hilman2-13/+6
2018-08-12control_metadata: Remove unnecessary reference to base fileZach Hilman2-2/+1
2018-08-12romfs: Remove cyclic shared_ptr leak in romfs codeZach Hilman3-8/+8
2018-08-12registration: Update documentation and styleZach Hilman5-42/+69
2018-08-12nca_metadata: Remove unnecessary reference to base fileZach Hilman2-3/+2
2018-08-12bis_factory: Create NAND dirs if they don't existZach Hilman1-2/+9
2018-08-12registration: Take RawCopy function as parameterZach Hilman2-10/+15
Instead of defaulting to VfsRawCopy
2018-08-12registered_cache: Fix missing reading from yuzu_metaZach Hilman1-7/+16
2018-08-12file_sys: Comply to style guidelinesZach Hilman6-27/+38
2018-08-12qt: Add 'Install to NAND' option to menuZach Hilman1-1/+1
Prompts for title type on NCA files.
2018-08-12file_sys: Add RegisteredCacheZach Hilman2-0/+543
Manages NAND NCA get and install.
2018-08-12file_sys: Add support for parsing NCA metadata (CNMT)Zach Hilman2-0/+230
2018-08-12card_image: Add accessor for all NCAs in XCIZach Hilman2-0/+5
2018-08-12vfs_real: Add CreateFullPath to CreateFileZach Hilman1-3/+6
Fixes bugs with calling CreateFile when the immediate directory does not exist.
2018-08-12bis_factory: Add partial implementation of BISFactoryZach Hilman2-0/+54
Creates and stores RegisteredCaches for user and system NAND, as creation of a RegisteredCache is expensive.
2018-08-12vfs: Add ConcatenatedVfsFileZach Hilman2-0/+134
2018-08-10loader: Add more descriptive errorsZach Hilman5-35/+95
Full list of new errors and descriptions in core/loader/loader.h
2018-08-09vfs: Fix documentationZach Hilman1-2/+2
2018-08-09vfs: Fix typo in VfsFilesystem docsZach Hilman1-1/+1
2018-08-09file_util: Use enum instead of bool for specifing path behaviorZach Hilman1-17/+27
2018-08-09vfs: Use RealVfsFilesystem for fs-operations in RealVfsDirectoryZach Hilman1-2/+10
2018-08-09file_sys: Add missing include in savedata_factoryZach Hilman1-0/+1
2018-08-09vfs: Add unreachable assert to file permissions converterZach Hilman1-1/+3
2018-08-09vfs: Add RealVfsFilesystem implementationZach Hilman2-81/+290
2018-08-09vfs: Add VfsFilesystem interface and default implementationZach Hilman2-3/+211
2018-08-09fsp_srv: Use std::string_view's copy() function instead of strncpy()Lioncash1-3/+9
Given elements inserted into a vector are zeroed out, we can just copy MAX_LEN - 1 elements and the data will already be properly null terminated.
2018-08-07loader: Add icon and title support to XCIZach Hilman3-0/+6
2018-08-07Use const where applicableZach Hilman1-1/+1
2018-08-07Avoid parsing RomFS to directory in NCAZach Hilman1-0/+7
2018-08-04content_archive: Add support for titlekey cryptographyZach Hilman2-7/+39
2018-08-02vfs_vector: Remove unused variable in FindAndRemoveVectorElement()Lioncash1-2/+2
This wasn't being used for anything, so it can be removed.
2018-08-02vfs_vector: Avoid unnecessary copies where applicableLioncash1-2/+5
The lambda elements should be taken by const reference here, and we can move the virtual directory passed to ReplaceFileWithSubdirectory()
2018-08-01Add missing parameter to files.push_back()Zach Hilman1-5/+5
2018-08-01Use more descriptive error codes and messagesZach Hilman1-2/+8
2018-08-01Use ErrorEncrypted where applicable and fix no keys crashZach Hilman3-17/+33
2018-08-01Add missing includes and use const where applicableZach Hilman4-9/+14
2018-08-01Make XCI comply to review and style guidelinesZach Hilman4-45/+30
2018-08-01Extract mbedtls to cpp fileZach Hilman1-1/+2
2018-08-01Remove files that are not usedZach Hilman6-36/+425
2018-07-29partition_filesystem: Remove dynamic_cast in PrintDebugInfo()Lioncash1-3/+2
We shouldn't be upcasting our file instances. Given a PartitionFilesystem is currently designed to accept any arbitrary VfsFile instances, casting to a more specific type than that is just bad design, and shows an interface design issue.
2018-07-28RomFS ExtractionZach Hilman11-20/+347
2018-07-24VFS Regression and Accuracy Fixes (#776)Zach Hilman2-20/+33
* Regression and Mode Fixes * Review Fixes * string_view correction * Add operator& for FileSys::Mode * Return std::string from SanitizePath * Farming Simulator Fix * Use != With mode operator&
2018-07-24partition_filesystem: Use std::move where applicableLioncash1-3/+3
Avoids copying a std::string instance and avoids unnecessary atomic reference count incrementing and decrementing.
2018-07-23NRO Assets and NACP file formatZach Hilman2-0/+123
Cleanup Review fixes
2018-07-22vfs: Correct file_p variable usage within InterpretAsDirectory()Lioncash1-2/+5
ReplaceFileWithSubdirectory() takes a VirtualFile and a VirtualDir, but it was being passed a string as one of its arguments. The only reason this never caused issues is because this template isn't instantiated anywhere yet. This corrects an issue before it occurs.
2018-07-22file_util, vfs: Use std::string_view where applicableLioncash6-89/+150
Avoids unnecessary construction of std::string instances where applicable.
2018-07-22file_util: Use a u64 to represent number of entriesLioncash1-3/+3
This avoids a truncating cast on size. I doubt we'd ever traverse a directory this large, however we also shouldn't truncate sizes away.
2018-07-21file_sys/errors: Remove redundant object constructor callsLioncash1-8/+8
Given we're already constructing the error code, we don't need to call the constructor inside of it.
2018-07-21vfs_real: Remove redundant copying of std::vector instances in GetFiles() and GetSubdirectories()Lioncash1-2/+3
We already return by value, so we don't explicitly need to make the copy.
2018-07-21partition_filesystem, vfs_real: Add missing standard includesLioncash2-0/+4
2018-07-21partition_filesystem, vfs_real: Use std::move in ReplaceFileWithSubdirectory() where applicableLioncash2-2/+3
Avoids unnecessary atomic increment and decrement operations.
2018-07-21partition_filesystem, vfs_real: Use std::distance() instead of subtractionLioncash2-4/+10
This is a little bit more self-documenting on what is being done here.
2018-07-21vfs_offset: Simplify TrimToFit()Lioncash1-1/+2
We can simply use std::clamp() here, instead of using an equivalent with std::max() and std::min().
2018-07-21vfs: Make WriteBytes() overload taking a std::vector pass the std::vector by const referenceLioncash4-4/+4
Given the data is intended to be directly written, there's no need to take the std::vector by value and copy the data.
2018-07-21vfs: Use variable template variants of std::is_trivially_copyableLioncash1-13/+6
Provides the same behavior, but with less writing
2018-07-21vfs: Amend constness on pointers in WriteBytes() and WriteArrays() member functions to be const qualifiedLioncash1-3/+3
These functions don't modify the data being pointed to, so these can be pointers to const data
2018-07-20vfs_offset: std::move file and name parameters of OffsetVfsFileLioncash2-3/+5
Avoids potentially unnecessary atomic reference count incrementing and decrementing, as well as string copying.
2018-07-20partition_filesystem: Return pfs_dirs member variable within GetSubdirectories()Lioncash1-1/+1
This should be returned here, otherwise pfs_dirs is effectively only ever added to, but never read.
2018-07-19savedata_factory: Make SaveDataDescriptor's DebugInfo() function a const member functionLioncash2-2/+2
This function doesn't alter class state.
2018-07-19partition_filesystem: Ensure all class members of PartitionFilesystem are initializedLioncash2-24/+15
Previously is_hfs and pfs_header members wouldn't be initialized in the constructor, as they were stored in locals instead. This would result in things like GetName() and PrintDebugInfo() behaving incorrectly. While we're at it, initialize the members to deterministic values as well, in case loading ever fails.
2018-07-19content_archive: Make IsDirectoryExeFS() take a shared_ptr as a const referenceLioncash1-1/+1
There's no need to take this by value when it's possible to avoid unnecessary copies entirely like this.
2018-07-19content_archive: Add missing standard includesLioncash1-0/+5
2018-07-19content_archive: std::move VirtualFile in NCA's constructorLioncash1-1/+4
Gets rid of unnecessary atomic reference count incrementing and decrementing.
2018-07-19vfs: Deduplicate accumulation code in VfsDirectory's GetSize()Lioncash1-6/+6
We can just use a generic lambda to avoid writing the same thing twice.
2018-07-19Virtual Filesystem 2: Electric Boogaloo (#676)Zach Hilman30-1211/+1267
* Virtual Filesystem * Fix delete bug and documentate * Review fixes + other stuff * Fix puyo regression
2018-07-17General Filesystem and Save Data Fixes (#670)Zach Hilman8-106/+123
2018-07-14FileSys: Append the requested path to the filesystem base path in DeleteFile.Subv1-2/+4
We were trying to delete things in the current directory instead of the actual filesystem directory. This may fix some savedata issues in some games.
2018-07-08savedata_factory: Always create a save directory for games.bunnei1-0/+9
2018-07-08Revert "Virtual Filesystem (#597)"bunnei23-1127/+996
This reverts commit 77c684c1140f6bf3fb7d4560d06d2efb1a2ee5e2.
2018-07-06Virtual Filesystem (#597)Zach Hilman23-996/+1127
* Add VfsFile and VfsDirectory classes * Finish abstract Vfs classes * Implement RealVfsFile (computer fs backend) * Finish RealVfsFile and RealVfsDirectory * Finished OffsetVfsFile * More changes * Fix import paths * Major refactor * Remove double const * Use experimental/filesystem or filesystem depending on compiler * Port partition_filesystem * More changes * More Overhaul * FSP_SRV fixes * Fixes and testing * Try to get filesystem to compile * Filesystem on linux * Remove std::filesystem and document/test * Compile fixes * Missing include * Bug fixes * Fixes * Rename v_file and v_dir * clang-format fix * Rename NGLOG_* to LOG_* * Most review changes * Fix TODO * Guess 'main' to be Directory by filename
2018-07-03Update clang formatJames Rowe3-10/+8
2018-07-03Rename logging macro back to LOG_*James Rowe8-55/+55
2018-06-21Add support for decrypted NCA files (#567)Zach Hilman2-4/+16
* Start to add NCA support in loader * More nca stuff * More changes to nca.cpp * Now identifies decrypted NCA cont. * Game list fixes and more structs and stuff * More updates to Nca class * Now reads ExeFs (i think) * ACTUALLY LOADS EXEFS! * RomFS loads and games execute * Cleanup and Finalize * plumbing, cleanup and testing * fix some things that i didnt think of before * Preliminary Review Changes * Review changes for bunnei and subv
2018-06-20Build: Fixed some MSVC warnings in various parts of the code.Subv2-6/+6
2018-06-19Services/FS: Return the correct error code when trying to mount a nonexistent savedata.Subv1-0/+1
2018-05-02general: Make formatting of logged hex values more straightforwardLioncash1-9/+9
This makes the formatting expectations more obvious (e.g. any zero padding specified is padding that's entirely dedicated to the value being printed, not any pretty-printing that also gets tacked on).
2018-04-25file-sys: convert a StringFromFormat call into fmt::format in GetFullPath()Lioncash1-4/+1
Lessens the amount to read and gets rid of the PRIX64 macro, allowing us to use a single string for the whole path, making it easier to read.
2018-04-25file-sys: Move logging macros over to the new fmt-capable onesLioncash8-64/+58
2018-04-24Service/FS: implement IFileSystem::RenameFilemailwl5-7/+15
2018-04-20disk_filesystem: Remove unused total_entries_in_directory member from Disk_DirectoryLioncash1-1/+0
2018-04-20disk_filesystem: Remove redundant initializer in Disk_Directory's constructorLioncash1-1/+1
2018-04-20disk_filesystem: Make constructors explicit where applicableLioncash1-2/+2
2018-04-17file_sys: Use NGLOGshinyquagsire231-5/+5
2018-04-16file_sys: tweaksshinyquagsire232-6/+7
2018-04-16file_sys: Add HFS/PFS helper componentshinyquagsire232-0/+211
2018-04-15fsp_srv: Implement DeleteFile.bunnei5-8/+12
- Used by Binding of Isaac.
2018-03-31fsp_srv: Implement GetSize and SetSize.bunnei1-2/+3
2018-03-23FS: Move the file open mode calculation to a separate function.Subv1-7/+14
2018-03-21FS: Implemented IFileSystem::CreateDirectory.Subv5-7/+14
2018-03-20FS: Implement DiskFileSystem's OpenDirectory interface.Subv5-6/+19
2018-03-20FS: Implement DiskFileSystem::GetEntryType for existing files/directories.Subv1-2/+4
2018-03-20FS: Updated the Directory Entry structure to match the Switch.Subv5-30/+84
2018-03-20FS: Support the file Append open mode.Subv2-2/+23
2018-03-20FS: Added an SDMC archive factory and registered it to the SDMC archive on startup.Subv2-0/+71
2018-03-14core: Move process creation out of global state.bunnei1-1/+2
2018-03-04FS: Use the correct error code when trying to open files that don't exist.Subv2-26/+6
2018-03-04FS: Make EnsureSaveData create the savedata folder when called for the first time.Subv5-15/+30
2018-03-02SaveData: Use the current titleid when opening the savedata archive.Subv1-2/+3
2018-03-02Filesystem: Added a SaveData Factory and associated Disk_FileSystem.Subv7-14/+315
2018-02-26file_sys: Style tweaksshinyquagsire232-11/+5
Asdf
2018-02-25file_sys: Add support for parsing NPDM filesshinyquagsire232-0/+274
2018-01-21file_sys: Clang format fixes.bunnei3-4/+4
2018-01-21file_sys: Cleanup to better match Switch file system constructs.bunnei9-57/+128
file_sys: Add factory class for RomFS file system.
2018-01-21file_sys: Remove disk_archive, savedata_archive, and title_metadata.bunnei6-829/+0
2018-01-21archive_backend: Minor changes to match Switch IFileSystem.bunnei5-26/+26
2018-01-21file_sys: Repurpose 3DS IVFC code for Switch ROMFS.bunnei2-49/+41
2018-01-21Format: Run the new clang format on everythingJames Rowe1-1/+1
2018-01-17Update title_metadata.hN00byKing1-0/+1
2018-01-13core: Gut out cryptop, since it doesn't compile with C++17.bunnei1-50/+1
2017-11-01hle: Use Switch formatted result codes.bunnei3-74/+24
2017-10-15core: Refactor MakeMagic usage and remove dead code.bunnei2-697/+0
2017-10-13Remove lots more 3DS-specific code.bunnei18-1935/+0
2017-10-01file_sys, loader: add support for reading TMDs to determine app pathsshinyquagsire231-2/+13
2017-10-01file_sys: add class for Title Metadata (TMD)shinyquagsire232-0/+337
2017-10-01file_sys/ncch_container: add RomFS, ExeFS override to allow for backward compatibility with existing .romfs system archive dumpsshinyquagsire232-69/+206
2017-10-01file_sys/archive_ncch: use NCCHContainer instead of loading .romfs filesshinyquagsire231-6/+12
2017-09-30nso: Refactor and allocate .bss section.bunnei1-3/+6
2017-09-25HLE/Archives: Allow multiple loaded applications to access their SelfNCCH archive independently.Subv2-13/+39
The loaders now register each loaded ROM with the SelfNCCH factory, which keeps the data around for the duration of the emulation session. When opening the SelfNCCH archive, the factory queries the current program's programid and uses that as a key to the map that contains the NCCHData structure (RomFS, Icon, Banner, etc). 3dsx files do not have a programid and will use a default of 0 for this value, thus, only 1 3dsx file with RomFS is loadable at the same time.
2017-09-25Loader/NCCH: Add support for loading application updates (#2927)Max Thomas4-5/+587
* loader/ncch: split NCCH parsing into its own file * loader/ncch: add support for loading update NCCHs from the SD card * loader/ncch: fix formatting * file_sys/ncch_container: Return a value for OpenFile * loader/ncch: cleanup, always instantiate overlay_ncch to base_ncch * file_sys/ncch_container: better encryption checks, allow non-app NCCHs to load properly and for the existence of NCCH structures to be checked * file_sys/ncch_container: pass filepath as a const reference
2017-08-21Warnings: Add UNREACHABLE macros to switches that contemplate all possible values.Subv1-0/+2
2017-07-31Handle invalid filenames when renaming files/directoriesJames2-4/+78
2017-06-03Addressed Bunnei's review comments, and made some other tweaks:TheKoopaKingdom1-6/+6
- Deleted GetStatus() because it wasn't used anywhere outside of Core::System. - Fixed design flaw where the message bar status could be set despite the game being stopped.
2017-06-03Switched to the ERROR_NOT_FOUND constant from errors.h.TheKoopaKingdom1-2/+2
2017-06-03Moved whitelist checks from FS_User to the Archive_NCCH handler.TheKoopaKingdom1-1/+35
2017-06-03Made some changes from review comments:TheKoopaKingdom1-1/+2
- Made LoadKernelSystemMode return a pair consisting of a system mode and a result code (Could use review). - Deleted ErrorOpenGL error code in favor of just having ErrorVideoCore. - Made dialog messages more clear. - Compared archive ID in fs_user.cpp to ArchiveIdCode::NCCH as opposed to hex magic. - Cleaned up some other stuff.
2017-05-25FileSys: Move all result description to errors.hYuri Kunde Schlesner5-61/+96
2017-03-08file_sys: lower log level for setting host pathwwylele4-4/+4
2017-02-27Doxygen: Amend minor issues (#2593)Mat M1-1/+1
Corrects a few issues with regards to Doxygen documentation, for example: - Incorrect parameter referencing. - Missing @param tags. - Typos in @param tags. and a few minor other issues.
2017-02-13loader: use self NCCH archivewwylele2-81/+0
2017-02-13file_sys: add Self NCCH archivewwylele3-0/+312
2017-01-29core: fix savedata_archive.cpp warnings about unhandled enumeration values on OSXKloen1-0/+12
2017-01-29core: fix archive_sdmc.cpp warnings about unhandled enumeration value on OSXKloen1-0/+12
2017-01-29core: fix archive_extsavedata.cpp warning on OSXKloen1-0/+2
2016-12-22Address clang-format issues.bunnei1-4/+3
2016-12-22core: Remove HLE module, consolidate code & various cleanups.bunnei4-5/+5
2016-12-15archive_source_sd_savedata: Add static method to get a specific save data pathMerryMage2-0/+7
2016-12-07file_sys: Make a few single-argument constructors explicitLioncash8-10/+10
Prevents implicit conversions.
2016-11-29FileSys: Implement OtherSaveDatawwylele3-0/+200
2016-11-29FileSys: abstract SD save data archive sourcewwylele4-78/+132
2016-11-19FileSys: rename SaveDataCheck archive to NCCH archivewwylele2-15/+15
According to the observation from game and 3dbrew "Used for accessing general NCCH data"
2016-11-19FileSys: remove unused DiskArchivewwylele2-179/+0
All "subclasses" of DiskArchive are splitted out. This class is useless
2016-11-19FileSys: w->rw permission lift only happens in SDMC archivewwylele4-2/+14
2016-11-19FileSys: add SDMCWriteOnlyArchivewwylele3-0/+129
2016-11-19FileSys: add SDMCArchivewwylele3-1/+301
Now DiskArchive only serves for SDMC, then it should be just a "SDMCArchive"
2016-11-19FileSys: add ExtSaveDataArchivewwylele1-1/+114
ExtSaveData is more similar to SaveData, so let it be a subclass of SaveData
2016-11-19FileSys: add SaveDataArchivewwylele5-4/+359
The error checking of SaveDataArchive is completely different from DiskArchive, so it has to be a new class instead of a subclass of DiskArchive.
2016-11-19FileSys: remove Open from FileBackendwwylele4-64/+44
Same as directory, file shouldn't expose Open either.
2016-11-19FileSys: remove Open from DirectoryBackendwwylele4-25/+5
Open should not be an interface exposed by Directory because it is the Archive thats implement the methed to open the directory. The service API of 3DS also implies this - Open is not a function of directory service, but is of FS main service
2016-11-19FileSys: add PathParserwwylele2-0/+159
2016-11-01FileSys: make Archive interfaces return error codewwylele5-55/+82
and make the mode parameter a reference since it is a BitField union
2016-10-02fs: implement DeleteDirectoryRecursivelywwylele5-0/+19
2016-09-21Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner9-9/+9
2016-09-21Remove empty newlines in #include blocks.Emmanuel Gil Peyrot20-44/+9
This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
2016-09-19Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner8-43/+30
2016-09-18Sources: Run clang-format on everything.Emmanuel Gil Peyrot20-136/+217
2016-05-21FileSys/Path: Replace Memory::GetPointer with Memory::ReadBlockMerryMage1-6/+6
2016-04-05Common: Remove Common::make_unique, use std::make_uniqueMerryMage8-19/+17
2016-03-21archive_extsavedata: Fix member initialization orderLioncash1-1/+2
shared appears in the initializer list before mount_point
2016-03-20HLE/FS: Change the error code returned when an ExtSaveData archive is not found.Subv4-29/+37
This allows Fire Emblem to boot again.
2016-03-20HLE/FS: Corrected some style concerns.Subv4-8/+8
2016-03-20HLE/FS: Implemented GetFormatInfoSubv13-14/+130
Format information is currently only implemented for the ExtSaveData, SharedExtSaveData and SaveData archives, the information is stored in a file alongside the root folder of the archive.
2016-03-20HLE/FS: Return the proper error codes when opening files.Subv6-25/+39
2016-03-20HLE/FS: Return the proper error codes on file Read/Write operations.Subv5-16/+24
These operations are limited by the open flags specified while opening the file.
2016-03-20HLE/FS: Corrected the error codes for DeleteFileSubv5-8/+21
2016-03-20HLE/FS: Corrected the error codes for CreateFileSubv1-1/+4
2016-03-20HLE/FS: FS::CreateFile takes an u64 for the file size.Subv5-5/+5
2016-01-25archive_backend: Remove unnecessary const from return typesLioncash2-8/+8
This doesn't return by reference so const isn't really necessary
2016-01-16DiskDirectory: Initialize the directory member with valid info.Subv1-2/+4
2015-10-28Implement FS_User::GetFreeBytesarchshift5-0/+18
2015-09-30ivfc_archive: Fix a printf specifierLioncash1-1/+1
2015-09-10disk_archive: Remove unimplemented constructor declarationsLioncash1-2/+0
2015-08-29Services/FS: Correctly tell the guest app whether a file was correctly opened or not.Subv1-1/+1
Closes #1067
2015-07-14Archive: Correct a few incorrect types in function signaturesYuri Kunde Schlesner5-21/+21
Buffer lengths should be size_t, and file offsets should be u64.
2015-07-14Loader: Remove unnecessary pointer indirection to IOFileYuri Kunde Schlesner2-2/+2
2015-07-14FS: Stream RomFS from file instead of loading all of it to memorycondut5-23/+27
2015-07-12Core: Properly configure address space when loading a binaryYuri Kunde Schlesner1-2/+2
The code now properly configures the process image to match the loaded binary segments (code, rodata, data) instead of just blindly allocating a large chunk of dummy memory.
2015-06-28Core: Cleanup file_sys includes.Emmanuel Gil Peyrot17-30/+52
2015-06-28CitraQt: Cleanup includes.Emmanuel Gil Peyrot1-0/+1
2015-06-28Common: Cleanup memory and misc includes.Emmanuel Gil Peyrot1-0/+2
2015-06-28Common: Fix FileUtil includes, and everything relying on those.Emmanuel Gil Peyrot4-0/+4
2015-06-02ExtSavedata: Save the icon passed to CreateExtSaveData to the correct folder.Subv1-3/+6
Organize the ExtSaveData folders as they are stored in the console.
2015-05-29Remove every trailing whitespace from the project (but externals).Emmanuel Gil Peyrot3-5/+5
2015-05-15Memmap: Re-organize memory function in two filesYuri Kunde Schlesner1-1/+1
memory.cpp/h contains definitions related to acessing memory and configuring the address space mem_map.cpp/h contains higher-level definitions related to configuring the address space accoording to the kernel and allocating memory.
2015-05-09Kernel: Remove g_program_idYuri Kunde Schlesner1-2/+3
This has been obsoleted by the field in Process.
2015-05-07Common: Remove common.hYuri Kunde Schlesner8-1/+7
2015-05-07Clean-up includesYuri Kunde Schlesner2-4/+2
2015-05-07FileSys: De-inline Path membersYuri Kunde Schlesner2-125/+136
2015-05-07FileSys: Clean-up includes, de-inline destructorsYuri Kunde Schlesner3-7/+14
2015-04-14Headers: Add some forgotten overrides, thanks clang!Emmanuel Gil Peyrot1-1/+1
2015-03-14Services/FS: Implemented DeleteExtSaveData, CreateSystemSaveData and DeleteSystemSaveDataSubv4-2/+76
Also fixed a bug with CreateExtSaveData that made it unable to create ExtSaveData archives in the SDMC directory.
2015-02-26Archives: Properly implemented the SystemSaveData archive.Subv2-19/+28
Ported to the new factory pattern we have for archives.
2015-02-10FS: Allow multiple instances of the same archive type to be open at onceYuri Kunde Schlesner15-129/+163
2015-01-24Services: Stubbed more services.Subv2-2/+19
Implemented FSUser::CreateExtSaveData
2015-01-06Archives/Exdata: Don't set concrete_mount_point in the ctorSubv1-1/+1
2015-01-06Archives: Addressed some commentsSubv4-13/+13
2015-01-05SaveDataCheck: Fixed a typoSubv1-1/+1
2015-01-04Archives: Make SYSTEM_ID and SDCARD_ID stringsSubv4-5/+7
2015-01-04Archives: Changed the way paths are built for the archives.Subv6-12/+44
Each archive now takes a mount point of either NAND or SDMC, and builds its own directory structure there, trying to simulate an HLE-friendly hardware layout
2015-01-04SaveDataCheck: Move the files to nand/titleSubv1-1/+2
under /nand/title/high/low/content/00000000.app.romfs
2015-01-03FileSys: Fix crash bug in DiskFile exposed by #400Yuri Kunde Schlesner1-4/+0
2015-01-03FileSys: Fix a few memory leaksYuri Kunde Schlesner2-6/+7
2015-01-03Archives: Change the folder layout of some archives.Subv1-2/+1
This is to better represent the hardware layout, they are still aren't quite accurate, but this better and will help a bit when implementing the other archives like NAND-RO and NAND-RW
2015-01-03IVFCArchive: Use a critical log to notify of invalid operations.Subv1-9/+9
2015-01-03SaveDataCheck: Remove unneeded constructor from a classSubv1-2/+0
2015-01-03Archives: Added some documentation to IVFCArchiveSubv1-0/+5
2015-01-03Archives: Reduced duplicate code in RomFS and SaveCheck.Subv11-333/+229
Fixed a few warnings and cleaned up the code
2015-01-03SaveDataCheck: Preliminary work in this archive.Subv2-4/+28
This allows Steel Diver to boot further, some files are needed. This is still not ready and needs a big cleanup, this will possibly be delayed until the way we handle archives is fixed (with factory classes instead of ahead-of-time creation of archives)
2014-12-30Archives: Implemented ExtSaveData and SharedExtSaveDataSubv8-15/+168
They will be stored in /extsavedata/SDMC and /extsavedata/NAND respectively. Also redirect some APT_A functions to their APT_U equivalents. Implemented the gamecoin.dat file in SharedExtSaveData in the PTM module. Implemented formatting the savegame. Retake a previous savegame if it exists instead of reporting them as not formatted every time a game is loaded.
2014-12-24FileSys: Clean up according to the coding style, and remove redundant namespaced names.Emmanuel Gil Peyrot9-169/+97
2014-12-21CFG: Create a new subfolder cfg inside service to handle cfgSubv1-0/+1
Moved most of the shared CFG code there, implemented a few CFG:I functions
2014-12-21Style: Addressed some commentsSubv1-2/+7
2014-12-21CFG: Refactored how the config file works.Subv1-1/+1
It is now kept in memory as per 3dbrew, all updates happen on memory, then they can be saved using UpdateConfigNANDSavegame.
2014-12-21CFG: Implemented the GetConfigInfoBlk2 function.Subv3-3/+9
Added a "config" file to the CFG process service (CFG:U), and added a few default blocks to it. Implemented GetSystemModel and GetModelNintendo2DS
2014-12-21Added CreateFile to the FS_USER servicearchshift5-0/+44
Tested with hwtests.
2014-12-21License changepurpasmart9617-17/+17
2014-12-20Clean up some warningsChin1-1/+10
2014-12-20Common: Add a clone of std::make_uniqueYuri Kunde Schlesner1-2/+3
2014-12-18SystemSaveData: Added a TODO to move it to the NAND.Subv1-1/+3
Maybe sometime when we actually implement that
2014-12-18SaveData: Implemented the SystemSaveData archive.Subv3-2/+65
It will be stored in the /syssavedata folder. This archive is user by various Services and possibly games via the FS:U service.
2014-12-18Filesystem/Archives: Implemented the SaveData archiveSubv12-473/+344
The savedata for each game is stored in /savedata/<ProgramID> for NCCH files. ELF files and 3DSX files use the folder 0 because they have no ID information Got rid of the code duplication in File and Directory Files that deal with the host machine's file system now live in DiskFile, similarly for directories and DiskDirectory and archives with DiskArchive. FS_U: Use the correct error code when a file wasn't found
2014-12-16FS.Archive: Clean up treatment of archives and their handlesYuri Kunde Schlesner7-190/+21
- Refactor FS::Archive internals to make Archive creation and lifetime management clearer. - Remove the "Archive as a File" hack. - Implement 64-bit Archive handles.
2014-12-16Service.FS: Rename FileSys::File to FileBackendYuri Kunde Schlesner8-15/+15
2014-12-16Service.FS: Rename FileSys::Directory to DirectoryBackendYuri Kunde Schlesner8-15/+15
2014-12-16Service.FS: Rename FileSys::Archive to ArchiveBackendYuri Kunde Schlesner3-6/+6
2014-12-16Service.FS: Do archive registration using IdCode instead of nameYuri Kunde Schlesner3-25/+4
2014-12-13Convert old logging calls to new logging macrosYuri Kunde Schlesner5-24/+28
2014-12-08Kernel/File: Fixed file read/write hwtestsSubv1-3/+6
The 3DS allows the user to read from files opened with the Write access modifier, even if he did not specify the Read access modifier. Open the files in binary mode so that we can prevent CR/LF problems in Windows, where a line-end is replaced by these two bytes instead of just 0xA, this was causing problems with the GetSize test
2014-12-07Make OpenDirectory fail if the directory doesn't existarchshift6-3/+35
This is in line with what the hardware itself does. It does this by splitting the initial directory opening into Directory.Open(), which will return false if a stat fails. Then, Archive::OpenDirectory will return nullptr, and archive.cpp will return an error code .
2014-12-04Updated archive.cpp functions for proper error handlingarchshift2-24/+0
2014-11-27Fixed formatting and switch statement warningsvaguilar2-1/+3
2014-11-25Implemented RenameDirectory in FS:USERarchshift5-0/+45
2014-11-25Implemented RenameFile in FS:USERarchshift5-0/+45
2014-11-23Added DeleteFile and DeleteDirectory functions to FS:USER and the archives.archshift5-0/+80
2014-11-19Remove trailing spaces in every file but the ones imported from SkyEye, AOSP or generatedEmmanuel Gil Peyrot2-2/+2
2014-11-18directory_sdmc: Fix a signed/unsigned mismatch comparisonLioncash1-1/+1
2014-11-18Remove extraneous semicolonsLioncash3-3/+3
2014-11-18FileSys: Updated backend code to use FileSys::Path instead of string for paths.bunnei9-24/+24
2014-11-18FileSys: Added DebugStr method to Path class.bunnei1-0/+29
2014-11-13Use std::u16string for conversion between UTF-8 and UTF-16, FS:USER functionsarchshift1-0/+99
2014-11-02Added CreateDirectory function to service/fs.cpp, and in Archive.archshift5-0/+40
2014-10-30Fix some warningsSean2-2/+2
2014-10-23Use config files to store whether SDMC is enabled or notarchshift1-2/+8
Before, it used to use whether the directory actually existed. As a result, .citra-emu/sdmc was never auto-created (something quite confusing to me until I read through the logs).
2014-10-06Common: Add a helper function to generate a 8.3 filename from a long one.Emmanuel Gil Peyrot3-29/+27
Core: Fix the SDMC Directory implementation to make blargSnes work.
2014-10-06FileSys: Add static asserts for the Directory struct, and fix its fields position.Emmanuel Gil Peyrot1-2/+8
2014-10-06FileSys: split the constructor into an Open method, in order to notify the opener something went wrong.Emmanuel Gil Peyrot6-14/+54
Kernel: Return an invalid handle to OpenFile when it failed to open.
2014-10-06FileSys/Kernel: Implement SetSize service call for File objects.Emmanuel Gil Peyrot5-0/+41
2014-10-06FileSys: Add forgotten docstrings.Emmanuel Gil Peyrot7-4/+35
2014-09-28Fix warnings in core and commonLioncash1-1/+1
2014-09-17Core: Add a method to obtain a Directory from an Archive.Emmanuel Gil Peyrot5-0/+44
2014-09-17Core: Add a Directory object, with both a stub and a passthrough implementations.Emmanuel Gil Peyrot5-0/+259
2014-09-17Core: Add a passthrough backend for the filesystem, exposed as SDMC.Emmanuel Gil Peyrot4-0/+298
2014-09-17Core: Add a new File class, obtainable from an Archive, and a stub implementation.Emmanuel Gil Peyrot6-0/+205
2014-08-23Added FS functions to Archive and Archive_RomFSarchshift3-8/+57
2014-07-05Marked AppLoader_ELF, AppLoader_NCCH, and Archive_RomFS virtual functions as "override".bunnei1-4/+4
2014-07-05Marked AppLoader_ELF, AppLoader_NCCH, and Archive_RomFS classes as "final"bunnei1-1/+1
2014-07-05Loader: Updated read methods to be constbunnei2-2/+2
- Required "file" handle to be made local and explicitly opened/closed as needed
2014-07-05FileSys: Added preliminary support for applications reading the RomFS archive.bunnei4-138/+150
Archive: Fixed brace ugliness for neobrain :) FS: Commented out unused local variables to prevent warnings. ...But keeping them here for future use. archive_romfs: Removed unused #include.
2014-06-27Core: Removed unused directory_file_system and meta_file_system modules.bunnei4-1453/+0
Core: Updated CMakeLists.txt to remove directory_file_system and meta_file_system modules.
2014-04-23fixes to build on linuxbunnei2-22/+22
2014-04-09fixed project includes to use new directory structurebunnei5-20/+15
2014-04-09got rid of 'src' folders in each sub-projectbunnei5-0/+1596