aboutsummaryrefslogtreecommitdiff
path: root/src/core/loader
AgeCommit message (Collapse)Author
2019-04-11core/core: Move process execution start to System's Load()Lioncash
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.
2019-04-09Merge pull request #1957 from DarkLordZach/title-providerbunnei
file_sys: Provide generic interface for accessing game data
2019-04-04core: Add missing override specifiers where applicableLioncash
Applies the override specifier where applicable. In the case of destructors that are defaulted in their definition, they can simply be removed. This also removes the unnecessary inclusions being done in audin_u and audrec_u, given their close proximity.
2019-04-03Merge pull request #2093 from FreddyFunk/disk-cache-better-compressionbunnei
Better LZ4 compression utilization for the disk based shader cache and the yuzu build system
2019-04-01Merge pull request #2281 from lioncash/memorybunnei
kernel/codeset: Make CodeSet's memory data member a regular std::vector
2019-03-29Addressed feedbackunknown
2019-03-29core: Do not link LZ4 to core. Use common/data_compression for nso segment ↵unknown
decompression instead.
2019-03-27patch_manager: Dump NSO name with build IDZach Hilman
2019-03-23Merge pull request #2280 from lioncash/nsobunnei
loader/nso: Minor refactoring
2019-03-22kernel/codeset: Make CodeSet's memory data member a regular std::vectorLioncash
The use of a shared_ptr is an implementation detail of the VMManager itself when mapping memory. Because of that, we shouldn't require all users of the CodeSet to have to allocate the shared_ptr ahead of time. It's intended that CodeSet simply pass in the required direct data, and that the memory manager takes care of it from that point on. This means we just do the shared pointer allocation in a single place, when loading modules, as opposed to in each loader.
2019-03-22loader/nso: Place translation unit specific functions into an anonymous ↵Lioncash
namespace Makes it impossible to indirectly violate the ODR in some other translation unit due to these existing.
2019-03-22file_sys/cheat_engine: Remove use of global system accessorsLioncash
Instead, pass in the core timing instance and make the dependency explicit in the interface.
2019-03-22loader/nso: Clean up use of magic constantsLioncash
Now that the NSO header has the proper size, we can just use sizeof on it instead of having magic constants.
2019-03-22file_sys/patch_manager: Deduplicate NSO headerLioncash
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-22loader/nso: Fix definition of the NSO header structLioncash
The total struct itself is 0x100 (256) bytes in size, so we should be providing that amount of data. Without the data, this can result in omitted data from the final loaded NSO file.
2019-03-21Merge pull request #1933 from DarkLordZach/cheat-enginebunnei
file_sys: Implement parser and interpreter for game memory cheats
2019-03-20kernel: Move CodeSet structure to its own source filesLioncash
Given this is utilized by the loaders, this allows avoiding inclusion of the kernel process definitions where avoidable. This also keeps the loading format for all executable data separate from the kernel objects.
2019-03-19loader: Remove Linker classLioncash
Given the class is now currently unused, it can be removed.
2019-03-19loader: Remove Linker inheritance from NRO and NSO loadersLioncash
Neither the NRO or NSO loaders actually make use of the functions or members provided by the Linker interface, so we can just remove the inheritance altogether.
2019-03-05vm_manager: Remove cheat-specific ranges from VMManagerZach Hilman
2019-03-04loader/nso: Set main code region in VMManagerZach Hilman
For rom directories (and by extension, XCI/NSP/NAX/NCA) this is for the NSO with name 'main', for regular NSOs, this is the NSO.
2019-01-15loader: Propagate NCA logo section to ReadBanner and ReadLogoZach Hilman
2018-12-28web_browser: Add bounds checking to applet interfaceZach Hilman
2018-12-28loader: Add accessor for Manual RomFSZach Hilman
2018-12-27Merge pull request #1928 from lioncash/capsbunnei
kernel: Handle kernel capability descriptors
2018-12-27loader: Add accessor for game control dataZach Hilman
2018-12-21kernel/process: Hook up the process capability parser to the process itselfLioncash
While we're at it, we can also toss out the leftover capability parsing from Citra.
2018-12-10Merge pull request #1819 from DarkLordZach/disable-addonsbunnei
patch_manager: Add support for disabling patches
2018-12-05loaders: Make GetFileType() a const qualified member functionLioncash
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.
2018-12-03loader: Add support for reading the name of game's developerZach Hilman
2018-12-02loader/nso: Remove dependency on the System classLioncash
Similar to the NRO changes, we can also pass the process explicitly as a parameter from Load instead of indirecting through the System class.
2018-12-02loader/nro: Make the static LoadNro function internally linkedLioncash
This simply acts as a forwarding function for the Load() function, so this doesn't need to be directly exposed.
2018-12-02loader/nro: Remove dependency on the System classLioncash
Load() is already given the process instance as a parameter, so instead of coupling the class to the System class, we can just forward that parameter to LoadNro()
2018-11-18Merge pull request #1620 from DarkLordZach/ldr-robunnei
ldr_ro: Complete LDR:RO implementation
2018-11-15Merge pull request #1618 from DarkLordZach/dump-nsobunnei
patch_manager: Add support for dumping uncompressed NSOs
2018-11-15process: Make MirrorMemory take state to map new memory asZach Hilman
Credits to Subv
2018-11-13Merge pull request #1608 from DarkLordZach/save-data-readerbunnei
[ns|fsp_srv]: Implement various functions to boot Checkpoint
2018-10-30global: Use std::optional instead of boost::optional (#1578)Frederic L
* 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-29patch_manager: Add support for dumping decompressed NSOsZach Hilman
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-29loader/nro: Call RegisterRomFS from LoadZach Hilman
Allows NRO homebrew to use the RomFS in the ASET section.
2018-10-27loader/nsp: Move secondary loader initialization to constructorZach Hilman
Prevents nullptr bug when trying to dump the RomFS of an NSP resulting from secondary_loader not being initialized.
2018-10-25nro: Make LoadNro method accessible outside of apploader code.bunnei
2018-10-16XCI: Add function for checking the existence of the program NCALioncash
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-15nso: Return an optional address from LoadModuleLioncash
If a malformed NSO is attempted to be loaded, we shouldn't continue onwards. We should be reporting an error and bailing out.
2018-10-14nso: Make LoadModule take a VfsFile by const referenceLioncash
2018-10-14nro: Make LoadNro take a VfsFile by const referenceLioncash
This function doesn't need to care about ownership semantics, so we can just pass it a reference to the file itself, rather than a std::shared_ptr alias.
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.