aboutsummaryrefslogtreecommitdiff
path: root/src/core/loader/loader.h
Commit message (Collapse)AuthorAgeFilesLines
* loader: add NUP (Unencrypted (Archival) Package) container supporta55uka2 days1-0/+3
|
* loader: read a loose dump's display version from its own filesTakoroka4 days1-0/+9
| | | | | | | | | Mario Kart World 1.8.0 reported 1.0.0: GetDisplayVersion only knew installed titles' metadata, and a loose ExeFS/RomFS dump has none. The dump's version now comes from its control.nacp (in ExeFS, or up to three directories above it), else from RomFS System/Resource/ResourceSizeTable.Product.NNN (Mario Kart World has no NACP; Product.180 is 1.8.0). Folder names are never parsed.
* [core] Support block-compressed NSZ and XCZ (#4552)PavelBARABANOV9 days1-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md). - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- - Add NCZBLOCK (nsz -B / .xcz) reader: each read decodes only the covered blocks and re-encrypts CTR sections, no disk output. - Allow installing solid .nsz to NAND via DecompressNCZForInstall (lazy, incremental decode with frontier, O(n) instead of O(n^2)). - Accept BKTR updates with thousands of sections (MaxSectionCount = 0x10000). - Wire .nsz/.xcz into loader, registered cache, scanner, and NAND install (content_manager.h), and reject solid NCZ from the game list. - Bump the pinned zstd to 33618c8 in cpmfile.json, which includes the upstream AArch64 revert ([33618c89](https://github.com/facebook/zstd/commit/33618c89e511637f8a6ef955b3501766d71feb53)) for a ZSTD_decodeSequence branch optimization that could corrupt data on ARM64; without it, solid NCZ decoding on Android fails with "Data corruption detected". NCZ format and CTR counter semantics follow the reference nsz tool and its Rust port: - https://github.com/nicoboss/nsz (Decompressor.py, BlockDecompressorReader.py) - https://docs.rs/nsz-rs/0.3.0/src/nsz_rs/decompress.rs.html The last-block edge case (decompressed size is an exact multiple of block size) is handled as described in https://github.com/nicoboss/nsz/issues/210 Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4552 Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
* [android/fs] external content loader + nca/xci patches (#3596)xbzk2026-03-041-1/+21
| | | | | | | | | | | | | | | | | | | | Foreword: WHY DON'T EVERYBODY USE ONE FOLDER FOR EACH GAME+CONTENTS? AIN'T THIS THE FORMAT GAMES COME WHEN YOU BUE THEM? DO YOU LIVE WITH ALL YOUR FRIENDS AND HAVE A 2ND HOUSE FOR ALL THE CHILDREN? Nice, i feel better now. This feat extends Maufeat's work on external content loading. It harmonically additions: "...also, if in each game folder X, you find a folder Y, and in this folder Y you detect ONLY a single game, then mount all external content for that game found in that folder Y and its subfolders." Permanent (not toggleable). External Content folders are supported equally. Also: -Reworked several routines for preserving single source of truth between android and other systems; -Fixed the annoying unknown format error for content files, by providing proper format detection. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3596 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: Lizzie <lizzie@eden-emu.dev> Co-authored-by: xbzk <xbzk@eden-emu.dev> Co-committed-by: xbzk <xbzk@eden-emu.dev>
* vfs: Move vfs files to their own directoryFearlessTobi2024-01-251-1/+1
|
* core: implement basic integrity verificationLiam2023-09-061-0/+10
|
* vfs: expand support for NCA readingLiam2023-08-151-12/+0
|
* file_sys/content_archive: Detect compressed NCAs (#11047)Tobias2023-07-121-0/+2
|
* core/loader: remove ELF loaderLiam2022-08-011-1/+0
|
* general: Convert source file copyright comments over to SPDXMorph2022-04-231-3/+2
| | | | | This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
* general: Replace NonCopyable struct with equivalentsLioncash2022-02-021-1/+5
|
* file_sys: Support load game collection (#6582)Feng Chen2021-07-201-1/+12
| | | Adds support for loading games with multiple programs embedded within such as the Dragon Quest 1+2+3 Collection
* core: Make variable shadowing a compile-time errorLioncash2021-05-161-1/+1
| | | | | | 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.
* hle: kernel: Rename Process to KProcess.bunnei2021-05-051-2/+2
|
* loader: Resolve instances of variable shadowingLioncash2021-04-271-16/+41
| | | | | Eliminates variable shadowing cases across all the loaders to bring us closer to enabling variable shadowing as an error in core.
* main: Resolve error string not displayingLioncash2021-01-031-0/+1
| | | | | | | | | During the transition to make the error dialog translatable, I accidentally got rid of the conversion to ResultStatus, which prevented operator<< from being invoked during formatting. This adds a function to directly retrieve the result status string instead so that it displays again.
* core: loader: Implement support for loading indexed programs.bunnei2020-11-241-1/+3
|
* patch_manager: Remove usages of the global system instanceLioncash2020-11-181-3/+6
| | | | | | | With this, only 19 usages of the global system instance remain within the core library. We're almost there.
* core/loader: Remove dependencies on the global system instanceLioncash2020-09-161-1/+6
| | | | | | | | | Now all that remains is: 18 instances in file_sys code 14 instances in GDB stub code (this can be tossed wholesale) 4 instances in HLE code 2 instances in settings code.
* Merge pull request #2546 from DarkLordZach/kipsbunnei2019-06-211-0/+5
|\ | | | | loader, file_sys: Add support for parsing and loading KIP (Kernel Internal Process) files
| * loader: Add recognition for KIP file typeZach Hilman2019-06-051-0/+1
| |
| * loader: Add KIP and INI file parser-specific errorsZach Hilman2019-06-051-0/+4
| |
* | Merge pull request #2482 from DarkLordZach/prepobunnei2019-06-211-0/+6
|\ \ | | | | | | core: Add detailed local reporting feature for development
| * | loader: Move NSO module tracking to AppLoaderZach Hilman2019-05-261-0/+6
| |/ | | | | Also cleanup of general stuff
* / core/loader: Remove LoadKernelSystemModeLioncash2019-05-281-11/+0
|/ | | | This is a hold-over from Citra and doesn't apply to yuzu.
* core/core: Move process execution start to System's Load()Lioncash2019-04-111-1/+7
| | | | | | | | | This gives us significantly more control over where in the initialization process we start execution of the main process. Previously we were running the main process before the CPU or GPU threads were initialized (not good). This amends execution to start after all of our threads are properly set up.
* loader: Propagate NCA logo section to ReadBanner and ReadLogoZach Hilman2019-01-151-0/+4
|
* loader: Add accessor for Manual RomFSZach Hilman2018-12-281-0/+9
|
* Merge pull request #1928 from lioncash/capsbunnei2018-12-271-0/+2
|\ | | | | kernel: Handle kernel capability descriptors
| * kernel/process: Hook up the process capability parser to the process itselfLioncash2018-12-211-0/+2
| | | | | | | | | | While we're at it, we can also toss out the leftover capability parsing from Citra.
* | loader: Add accessor for game control dataZach Hilman2018-12-271-3/+7
|/
* Merge pull request #1819 from DarkLordZach/disable-addonsbunnei2018-12-101-0/+10
|\ | | | | patch_manager: Add support for disabling patches
| * loader: Add support for reading the name of game's developerZach Hilman2018-12-031-0/+10
| |
* | loaders: Make GetFileType() a const qualified member functionLioncash2018-12-051-1/+1
|/ | | | | | No implementations actually modify instance state (and it would be questionable to do that in the first place given the name), so we can make this a const member function.
* global: Use std::optional instead of boost::optional (#1578)Frederic L2018-10-301-2/+3
| | | | | | | | | | | | | | | | * 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
* nso: Return an optional address from LoadModuleLioncash2018-10-151-0/+1
| | | | | If a malformed NSO is attempted to be loaded, we shouldn't continue onwards. We should be reporting an error and bailing out.
* loader: Add getter for packed updateZach Hilman2018-10-051-2/+12
| | | | Reads the update included with the game if it has one and adds the new ErrorNoPackedUpdate status.
* loader: Make the Load() function take a process as a regular reference, not ↵Lioncash2018-09-291-2/+1
| | | | | | | | | | a SharedPtr A process should never require being reference counted in this situation. If the handle to a process is freed before this function is called, it's definitely a bug with our lifetime management, so we can put the requirement in place for the API that the process must be a valid instance.
* bktr: Implement IVFC offset shiftingZach Hilman2018-09-041-0/+9
| | | | Fixes base game read errors
* bktr: Fix missing includes and optimize styleZach Hilman2018-09-041-1/+1
|
* loader: Add BKTR-specific error messages and codesZach Hilman2018-09-041-6/+14
|
* loader: Add NSP file type and NSP-specific errorsZach Hilman2018-09-041-0/+2
|
* vfs_real: Forward declare IOFileLioncash2018-09-021-4/+2
| | | | | | 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.
* loader: Add new NAX-specific errors and messagesZach Hilman2018-08-231-0/+13
|
* nax: Add AppLoader_NAX and update loader to support itZach Hilman2018-08-231-0/+1
|
* loader: Make ResultStatus directly compatible with fmtLioncash2018-08-151-2/+2
| | | | | | | | | 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.
* loader: Remove address mapping remnants from citraLioncash2018-08-141-7/+0
| | | | These mappings are leftovers from citra and don't apply to the Switch.
* made ResultStatus a u16David Marcec2018-08-121-1/+1
|
* loader: Add more descriptive errorsZach Hilman2018-08-091-9/+37
| | | Full list of new errors and descriptions in core/loader/loader.h
* loader: Remove unused IdentifyFile overloadZach Hilman2018-08-081-8/+0
|