aboutsummaryrefslogtreecommitdiff
path: root/src/core/loader
AgeCommit message (Collapse)Author
2018-10-12kernel/process: Make CodeSet a regular non-inherited objectLioncash
These only exist to ferry data into a Process instance and end up going out of scope quite early. Because of this, we can just make it a plain struct for holding things and just std::move it into the relevant function. There's no need to make this inherit from the kernel's Object type.
2018-10-09patch_manager: Return a std::unique_ptr from ParseControlNCA() and ↵Lioncash
GetControlMetadata() instead of a std::shared_ptr Neither of these functions require the use of shared ownership of the returned pointer. This makes it more difficult to create reference cycles with, and makes the interface more generic, as std::shared_ptr instances can be created from a std::unique_ptr, but the vice-versa isn't possible. This also alters relevant functions to take NCA arguments by const reference rather than a const reference to a std::shared_ptr. These functions don't alter the ownership of the memory used by the NCA instance, so we can make the interface more generic by not assuming anything about the type of smart pointer the NCA is contained within and make it the caller's responsibility to ensure the supplied NCA is valid.
2018-10-07nso/nro: Use default allocation size for arg_dataZach Hilman
2018-10-07cmd: Support passing game arguments from command lineZach Hilman
Uses -p (--program) and following string as args.
2018-10-07nso/nro: Add NSO arguments structure to data sectionZach Hilman
Only added if arguments string is non-empty and a pass is requested by loader.
2018-10-05romfs_factory: Extract packed update setter to new functionZach Hilman
2018-10-05loader: Add getter for packed updateZach Hilman
Reads the update included with the game if it has one and adds the new ErrorNoPackedUpdate status.
2018-10-05loader: Add ReadRomFSIVFCOffset to NSP, XCI, and NAX loadersZach Hilman
Fixes errors with certain updates
2018-10-02nso: Optimize loading of IPS patchesZach Hilman
Avoid resource-heavy classes and remove quasi-duplicated code.
2018-10-01deconstructed_rom_directory: Force NSO loader to patch NSOsZach Hilman
2018-10-01nso: Add framework to support patching of uncompressed NSOsZach Hilman
2018-10-01nso: Replace NSOHeader padding bytes with build IDZach Hilman
2018-09-30kernel/process: Make data member variables privateLioncash
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-29loader: Make the Load() function take a process as a regular reference, not ↵Lioncash
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.
2018-09-24memory: Dehardcode the use of fixed memory range constantsLioncash
The locations of these can actually vary depending on the address space layout, so we shouldn't be using these when determining where to map memory or be using them as offsets for calculations. This keeps all the memory ranges flexible and malleable based off of the virtual memory manager instance state.
2018-09-24process/vm_manager: Amend API to allow reading parameters from NPDM metadataLioncash
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-21Added support for uncompressed NSOs (#1374)David
* Added support for uncompressed NSOs * Moved compressed section check to NsoHeader
2018-09-19nax: Avoid re-parsing NAX data with GetFileType()Lioncash
An instance of the NAX apploader already has an existing NAX instance in memory. Calling directly into IdentifyType() directly would re-parse the whole file again into yet another NAX instance, only to toss it away again. This gets rid of unnecessary/redundant file parsing and allocations.
2018-09-19nax: Avoid unnecessary calls to AsNCA() in IdentifyType()Lioncash
AsNCA() allocates an NCA instance every time it's called. In the current manner it's used, it's quite inefficient as it's making a redundant allocation. We can just amend the order of the conditionals to make it easier to just call it once.
2018-09-15Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi
2018-09-13kernel/thread: Include thread-related enums within the kernel namespaceLioncash
Previously, these were sitting outside of the Kernel namespace, which doesn't really make sense, given they're related to the Thread class which is within the Kernel namespace.
2018-09-04bktr: Fix bucket overlap errorZach Hilman
2018-09-04drd: Parse title ID from program metadataZach Hilman
2018-09-04patch_manager: Centralize Control-type NCA parsingZach Hilman
2018-09-04game_list: Fix version display on non-NAND titlesZach Hilman
2018-09-04bktr: Implement IVFC offset shiftingZach Hilman
Fixes base game read errors
2018-09-04bktr: Fix missing includes and optimize styleZach Hilman
2018-09-04loader: Add BKTR-specific error messages and codesZach Hilman
2018-09-04loader: Ignore patches on NRO and DRDZach Hilman
2018-09-04patch_manager: Add usages of patches to ExeFSZach Hilman
2018-09-04main: Only show DRD deprecation warning onceZach Hilman
2018-09-04nsp: Comply with style and performance guidelinesZach Hilman
2018-09-04loader: Add AppLoader for NSP filesZach Hilman
2018-09-04card_image: Parse XCI secure partition with NSPZach Hilman
Eliminated duplicate code and adds support for Rev1+ carts
2018-09-04drd: Load title ID from program metadataZach Hilman
Previously only loaded from control metadata
2018-09-04loader: Add NSP file type and NSP-specific errorsZach Hilman
2018-09-02vfs_real: Forward declare IOFileLioncash
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 applicableLioncash
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-28kernel: Eliminate kernel global stateLioncash
As means to pave the way for getting rid of global state within core, This eliminates kernel global state by removing all globals. Instead this introduces a KernelCore class which acts as a kernel instance. This instance lives in the System class, which keeps its lifetime contained to the lifetime of the System class. This also forces the kernel types to actually interact with the main kernel instance itself instead of having transient kernel state placed all over several translation units, keeping everything together. It also has a nice consequence of making dependencies much more explicit. This also makes our initialization a tad bit more correct. Previously we were creating a kernel process before the actual kernel was initialized, which doesn't really make much sense. The KernelCore class itself follows the PImpl idiom, which allows keeping all the implementation details sealed away from everything else, which forces the use of the exposed API and allows us to avoid any unnecessary inclusions within the main kernel header.
2018-08-24file_sys/crypto: Fix missing/unnecessary includesZach Hilman
2018-08-23file_sys: Cut down on includes and copiesZach Hilman
2018-08-23loader: Add new NAX-specific errors and messagesZach Hilman
2018-08-23nax: Add AppLoader_NAX and update loader to support itZach Hilman
2018-08-23xci: Fix error masking issueZach Hilman
Prevents NCA-related errors from being masked into MissingProgramNCA or MissingKeyFile
2018-08-20service/filesystem: Use forward declarations where applicableLioncash
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-16Merge pull request #1075 from lioncash/includebunnei
loader/{nca, xci}: Remove unnecessary includes and unused member variables
2018-08-15Merge pull request #1005 from DarkLordZach/registered-fmtbunnei
file_sys: Add support for registration format
2018-08-15loader: Make ResultStatus directly compatible with fmtLioncash
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-15loader/nca: Remove unnecessary includes and member variablesLioncash
2018-08-15loader/xci: Remove unnecessary includes and member variablesLioncash
Many of these aren't necessary and will cause this file to be required to be recompiled whenever any changes to those files are made, which lengthens compile times for no reason. This also removes an unused metadata variable from AppLoader_XCI