summaryrefslogtreecommitdiffstats
path: root/src/core/loader (follow)
Commit message (Collapse)AuthorAgeFilesLines
* kernel/process: Make CodeSet a regular non-inherited objectLioncash2018-10-123-43/+31
| | | | | | | | 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.
* patch_manager: Return a std::unique_ptr from ParseControlNCA() and GetControlMetadata() instead of a std::shared_ptrLioncash2018-10-094-4/+4
| | | | | | | | | | | | | | 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.
* nso/nro: Use default allocation size for arg_dataZach Hilman2018-10-074-14/+20
|
* cmd: Support passing game arguments from command lineZach Hilman2018-10-072-2/+2
| | | | Uses -p (--program) and following string as args.
* nso/nro: Add NSO arguments structure to data sectionZach Hilman2018-10-074-3/+38
| | | | Only added if arguments string is non-empty and a pass is requested by loader.
* romfs_factory: Extract packed update setter to new functionZach Hilman2018-10-052-0/+11
|
* loader: Add getter for packed updateZach Hilman2018-10-056-3/+58
| | | | Reads the update included with the game if it has one and adds the new ErrorNoPackedUpdate status.
* loader: Add ReadRomFSIVFCOffset to NSP, XCI, and NAX loadersZach Hilman2018-10-056-6/+20
| | | | Fixes errors with certain updates
* nso: Optimize loading of IPS patchesZach Hilman2018-10-023-6/+5
| | | | Avoid resource-heavy classes and remove quasi-duplicated code.
* deconstructed_rom_directory: Force NSO loader to patch NSOsZach Hilman2018-10-011-1/+3
|
* nso: Add framework to support patching of uncompressed NSOsZach Hilman2018-10-012-2/+17
|
* nso: Replace NSOHeader padding bytes with build IDZach Hilman2018-10-011-2/+1
|
* kernel/process: Make data member variables privateLioncash2018-09-304-4/+4
| | | | | | | 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.
* loader: Make the Load() function take a process as a regular reference, not a SharedPtrLioncash2018-09-2917-41/+27
| | | | | | | | 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.
* memory: Dehardcode the use of fixed memory range constantsLioncash2018-09-254-22/+25
| | | | | | | | 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.
* process/vm_manager: Amend API to allow reading parameters from NPDM metadataLioncash2018-09-244-25/+4
| | | | | | | | | 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.
* Added support for uncompressed NSOs (#1374)David2018-09-211-3/+12
| | | | | | * Added support for uncompressed NSOs * Moved compressed section check to NsoHeader
* nax: Avoid re-parsing NAX data with GetFileType()Lioncash2018-09-192-13/+19
| | | | | | | | | 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.
* nax: Avoid unnecessary calls to AsNCA() in IdentifyType()Lioncash2018-09-191-4/+8
| | | | | | | | | 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.
* Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi2018-09-152-2/+2
|
* kernel/thread: Include thread-related enums within the kernel namespaceLioncash2018-09-132-2/+3
| | | | | | 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.
* bktr: Fix bucket overlap errorZach Hilman2018-09-041-2/+2
|
* drd: Parse title ID from program metadataZach Hilman2018-09-041-1/+8
|
* patch_manager: Centralize Control-type NCA parsingZach Hilman2018-09-042-33/+8
|
* game_list: Fix version display on non-NAND titlesZach Hilman2018-09-041-1/+10
|
* bktr: Implement IVFC offset shiftingZach Hilman2018-09-043-0/+16
| | | | Fixes base game read errors
* bktr: Fix missing includes and optimize styleZach Hilman2018-09-045-5/+5
|
* loader: Add BKTR-specific error messages and codesZach Hilman2018-09-042-7/+24
|
* loader: Ignore patches on NRO and DRDZach Hilman2018-09-044-0/+11
|
* patch_manager: Add usages of patches to ExeFSZach Hilman2018-09-043-8/+30
|
* main: Only show DRD deprecation warning onceZach Hilman2018-09-041-1/+1
|
* nsp: Comply with style and performance guidelinesZach Hilman2018-09-042-3/+10
|
* loader: Add AppLoader for NSP filesZach Hilman2018-09-042-0/+182
|
* card_image: Parse XCI secure partition with NSPZach Hilman2018-09-041-4/+3
| | | | Eliminated duplicate code and adds support for Rev1+ carts
* drd: Load title ID from program metadataZach Hilman2018-09-041-3/+1
| | | | Previously only loaded from control metadata
* loader: Add NSP file type and NSP-specific errorsZach Hilman2018-09-042-2/+14
|
* vfs_real: Forward declare IOFileLioncash2018-09-022-5/+6
| | | | | | 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.
* core/core: Replace includes with forward declarations where applicableLioncash2018-08-314-0/+4
| | | | | | | | | | | 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.
* kernel: Eliminate kernel global stateLioncash2018-08-294-7/+16
| | | | | | | | | | | | | | | | | | | | | | 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.
* file_sys/crypto: Fix missing/unnecessary includesZach Hilman2018-08-251-1/+0
|
* file_sys: Cut down on includes and copiesZach Hilman2018-08-232-4/+11
|
* loader: Add new NAX-specific errors and messagesZach Hilman2018-08-232-1/+27
|
* nax: Add AppLoader_NAX and update loader to support itZach Hilman2018-08-234-2/+121
|
* xci: Fix error masking issueZach Hilman2018-08-231-5/+6
| | | | Prevents NCA-related errors from being masked into MissingProgramNCA or MissingKeyFile
* service/filesystem: Use forward declarations where applicableLioncash2018-08-212-0/+2
| | | | | | | | 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
* Merge pull request #1075 from lioncash/includebunnei2018-08-164-35/+22
|\ | | | | loader/{nca, xci}: Remove unnecessary includes and unused member variables
| * loader/nca: Remove unnecessary includes and member variablesLioncash2018-08-152-20/+11
| |
| * loader/xci: Remove unnecessary includes and member variablesLioncash2018-08-152-15/+11
| | | | | | | | | | | | | | | | 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
* | Merge pull request #1005 from DarkLordZach/registered-fmtbunnei2018-08-161-0/+2
|\ \ | | | | | | file_sys: Add support for registration format
| * | loader: Recognize filename '00' as NCAZach Hilman2018-08-121-0/+2
| | | | | | | | | | | | Needed to avoid mismatch filetype warnings on split NAND NCAs
* | | loader: Make ResultStatus directly compatible with fmtLioncash2018-08-152-10/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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-156-17/+0
| |/ |/| | | | | These mappings are leftovers from citra and don't apply to the Switch.
* | made ResultStatus a u16David Marcec2018-08-121-1/+1
| |
* | Fixed invalid cast in loaderDavid Marcec2018-08-121-1/+1
|/ | | | GetMessageForResultStatus takes a u16, not a size_t.
* loader: Add more descriptive errorsZach Hilman2018-08-107-31/+111
| | | Full list of new errors and descriptions in core/loader/loader.h
* loader: Remove unused IdentifyFile overloadZach Hilman2018-08-092-12/+0
|
* Merge pull request #850 from DarkLordZach/icon-metabunnei2018-08-088-8/+115
|\ | | | | Add Icons and Metadata Support
| * loader: Add icon and title support to XCIZach Hilman2018-08-073-3/+37
| |
| * Use const where applicableZach Hilman2018-08-071-1/+1
| |
| * Avoid parsing RomFS to directory in NCAZach Hilman2018-08-076-6/+79
| |
* | loader: Fix scope error in DeconstructedRomDirectoryZach Hilman2018-08-071-1/+1
|/
* loader: Make AppLoader_NCA rely on directory loading codeZach Hilman2018-08-064-37/+24
| | | Eliminates duplicate code shared between their Load methods, after all the only difference is how the romfs is handled.
* Merge pull request #849 from DarkLordZach/xcibunnei2018-08-046-7/+145
|\ | | | | XCI and Encrypted NCA Support
| * Fix merge conflicts with opus and update docsZach Hilman2018-08-011-0/+2
| |
| * Use more descriptive error codes and messagesZach Hilman2018-08-012-2/+3
| |
| * Use ErrorEncrypted where applicable and fix no keys crashZach Hilman2018-08-011-0/+4
| |
| * Add missing includes and use const where applicableZach Hilman2018-08-011-0/+3
| |
| * Make XCI comply to review and style guidelinesZach Hilman2018-08-012-5/+5
| |
| * Remove files that are not usedZach Hilman2018-08-016-6/+134
| |
* | kernel/process: Use accessors instead of class members for referencing segment arrayLioncash2018-08-033-5/+5
| | | | | | | | | | | | | | Using member variables for referencing the segments array increases the size of the class in memory for little benefit. The same behavior can be achieved through the use of accessors that just return the relevant segment.
* | kernel: Move object class to its own source filesLioncash2018-08-025-5/+5
|/ | | | | | General moving to keep kernel object types separate from the direct kernel code. Also essentially a preliminary cleanup before eliminating global kernel state in the kernel code.
* deconstructed_rom_directory: Remove unused FindRomFS() functionLioncash2018-07-241-29/+0
|
* core: Make converting constructors explicit where applicableLioncash2018-07-242-2/+2
| | | | | Avoids unwanted implicit conversions. Thankfully, given the large amount of cleanup in past PRs, only this tiny amount is left over to cover.
* Merge pull request #784 from lioncash/loaderbunnei2018-07-241-1/+1
|\ | | | | loader: Minor cleanup
| * loader: Remove unnecessary constructor call in IdentifyFile()Lioncash2018-07-231-1/+1
| | | | | | | | | | | | RealVfsFile inherits from VfsFile, the instance from std::make_shared is already compatible with the function argument type, making the copy constructor call unnecessary.
* | Merge pull request #783 from lioncash/linkerbunnei2018-07-242-7/+4
|\ \ | | | | | | linker: Remove unused parameter from WriteRelocations()
| * | linker: Remove unused parameter from WriteRelocations()Lioncash2018-07-232-7/+4
| |/ | | | | | | | | is_jump_relocation is never used within the function, so we can just remove it.
* | nro: Replace inclusion with a forward declarationLioncash2018-07-232-1/+8
| | | | | | | | | | It's sufficient to use a forward declaration instead of a direct inclusion here.
* | nro: Make bracing consistentLioncash2018-07-231-10/+24
| | | | | | | | | | Makes the code more uniform, and also braces cases where the body of an unbraced conditional travels more than one line.
* | nro: Make constructor explicitLioncash2018-07-231-1/+1
| | | | | | | | | | Makes it consistent with the other Apploader constructors, and prevents implicit conversions.
* | nro: Remove unused forward declarationLioncash2018-07-231-2/+0
|/ | | | This isn't used anywhere in the header.
* NRO Assets and NACP file formatZach Hilman2018-07-232-1/+90
| | | | | | Cleanup Review fixes
* file_util, vfs: Use std::string_view where applicableLioncash2018-07-221-1/+2
| | | | | Avoids unnecessary construction of std::string instances where applicable.
* file_util: Use a u64 to represent number of entriesLioncash2018-07-221-1/+1
| | | | | 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.
* Merge pull request #752 from Subv/vfs_loadbunnei2018-07-211-5/+2
|\ | | | | Loader: Only print the module names and addresses if they actually exist.
| * Loader: Only print the module names and addresses if they actually exist.Subv2018-07-211-5/+2
| |
* | Merge pull request #737 from lioncash/movebunnei2018-07-202-2/+4
|\ \ | | | | | | filesys/loader: std::move VirtualFile instances in constructors where applicable
| * | loader/{nca, nro}: std::move VirtualFile in the constructors where applicableLioncash2018-07-202-2/+4
| |/ | | | | | | This avoids unnecessary atomic reference count increments and decrements
* | nso: Silence implicit sign conversion warningsLioncash2018-07-201-4/+6
| |
* | nso: Remove unused function ReadSegment()Lioncash2018-07-201-13/+0
|/
* Merge pull request #719 from lioncash/docsbunnei2018-07-202-5/+5
|\ | | | | loader: Amend Doxygen comments
| * loader: Amend Doxygen commentsLioncash2018-07-192-5/+5
| | | | | | | | These weren't adjusted when VFS was introduced
* | Merge pull request #718 from lioncash/readbunnei2018-07-201-4/+6
|\ \ | | | | | | loader/nso: Check if read succeeded in IdentifyFile() before checking magic value
| * | loader/nso: Check if read succeeded in IdentifyFile() before checking magic valueLioncash2018-07-191-4/+6
| |/ | | | | | | | | | | We should always assume the filesystem is volatile and check each IO operation. While we're at it reorganize checks so that early-out errors are near one another.
* | loader/nro: Resolve sign mismatch warningsLioncash2018-07-191-1/+1
| |
* | loader/nso: Remove unnecessary vector resizesLioncash2018-07-191-4/+2
| | | | | | | | We can just initialize these vectors directly via their constructor.
* | loader/nso: Resolve sign mismatch warningsLioncash2018-07-191-1/+1
|/
* Virtual Filesystem 2: Electric Boogaloo (#676)Zach Hilman2018-07-1912-525/+146
| | | | | | | | | | * Virtual Filesystem * Fix delete bug and documentate * Review fixes + other stuff * Fix puyo regression
* General Filesystem and Save Data Fixes (#670)Zach Hilman2018-07-173-5/+3
|
* More improvements to GDBStub (#653)Hedges2018-07-134-0/+15
| | | | | | | | | | | * More improvements to GDBStub - Debugging of threads should work correctly with source and assembly level stepping and modifying registers and memory, meaning threads and callstacks are fully clickable in VS. - List of modules is available to the client, with assumption that .nro and .nso are backed up by an .elf with symbols, while deconstructed ROMs keep N names. - Initial support for floating point registers. * Tidy up as requested in PR feedback * Tidy up as requested in PR feedback
* Revert "Virtual Filesystem (#597)"bunnei2018-07-0812-140/+540
| | | | This reverts commit 77c684c1140f6bf3fb7d4560d06d2efb1a2ee5e2.
* Virtual Filesystem (#597)Zach Hilman2018-07-0612-540/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Update clang formatJames Rowe2018-07-031-5/+5
|
* Rename logging macro back to LOG_*James Rowe2018-07-036-27/+27
|
* Add support for decrypted NCA files (#567)Zach Hilman2018-06-216-11/+434
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* general: Make formatting of logged hex values more straightforwardLioncash2018-05-022-4/+4
| | | | | | 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).
* general: Convert assertion macros over to be fmt-compatibleLioncash2018-04-271-1/+1
|
* loader: Move old logging macros over to new fmt-capable onesLioncash2018-04-255-26/+25
|
* Kernel: Use 0x2C as default main thread priority for homebrew and lone NRO/NSOsSubv2018-04-212-2/+2
|
* core, main.h: Abort on 32Bit ROMs (#309)N00byKing2018-04-062-0/+6
| | | | | | * core, main.h: Abort on 32Bit ROMs * main.cpp: Fix Grammar
* deconstructed_rom_directory.cpp: Fix TypoN00byKing2018-04-031-1/+1
|
* memory: Fix stack region.bunnei2018-03-313-3/+3
|
* Clean Warnings (?)N00byKing2018-03-191-1/+1
|
* kernel: Move stack region outside of application heap.bunnei2018-03-163-3/+3
|
* core: Move process creation out of global state.bunnei2018-03-144-9/+5
|
* Kernel: Store the program id in the Process class instead of the CodeSet class.Subv2018-03-025-12/+12
| | | | There may be many CodeSets per Process, so it's wasteful and overcomplicated to store the program id in each of them.
* loader: Check error on NPDM load, use TID for CodeSetshinyquagsire232018-02-253-6/+10
|
* loader: Use NPDM information when loading NSOsshinyquagsire232018-02-252-4/+15
|
* nso: Silence formatting specifier warningsLioncash2018-02-141-2/+4
|
* deconstructed_rom_directory: Silence formatting specifier warningsLioncash2018-02-141-3/+4
|
* Changed .istorage to .romfsDavid Marcec2018-02-052-5/+5
|
* deconstructed_rom_directory: Implement istorage loading for RomFS.bunnei2018-01-212-2/+71
|
* Merge pull request #92 from gdkchan/nro_refactorbunnei2018-01-211-2/+2
|\ | | | | Fix NRO entry point
| * Fix NRO Entry Pointgdkchan2018-01-181-2/+2
| |
* | loader: Minor style fix in deconstructed_rom_directoryRozlette2018-01-211-1/+0
| |
* | Merge pull request #117 from jroweboy/clang-formatbunnei2018-01-211-2/+3
|\ \ | | | | | | Clang format as a build target
| * | Format: Run the new clang format on everythingJames Rowe2018-01-211-2/+3
| |/
* | loader: Clean up ctors and includes.bunnei2018-01-2010-18/+22
| |
* | loader: Add DeconstructedRomDirectory for game dumps.bunnei2018-01-204-0/+154
| |
* | loader: Refactor to also pass filepath into IdentifyType.bunnei2018-01-208-19/+19
| |
* | nso: Remove code specific to directory loading.bunnei2018-01-202-17/+6
|/
* Fix NRO loadinggdkchan2018-01-181-20/+9
|
* Remove relocation on NSO/NROgdkchan2018-01-173-19/+2
|
* Merge pull request #44 from Rozelette/masterbunnei2018-01-161-3/+7
|\ | | | | nso: Modify .bss size calculation logic
| * nso: Modify .bss size calculation logicRozlette2018-01-161-3/+7
| |
* | clang-formatMerryMage2018-01-163-10/+8
|/
* nso: Load subsdk4 if available.bunnei2018-01-151-1/+1
|
* Add missing FileType declarations in GuessFromExtension and GetFileTypeStringThog2018-01-141-0/+8
|
* yuzu: Update license text to be consistent across project.bunnei2018-01-136-6/+6
|
* nso: Always load the filepath specified by the user.bunnei2018-01-071-1/+3
|
* nso: Load more common submodules.bunnei2017-10-231-15/+11
|
* memory: Support 32-bit paging, move heap address space up.bunnei2017-10-231-1/+1
|
* core: Refactor MakeMagic usage and remove dead code.bunnei2017-10-156-143/+10
|
* nso: Add a log for loading submodules.bunnei2017-10-141-0/+1
|
* Remove more 3DS-specific code.bunnei2017-10-131-2/+0
|
* Remove lots more 3DS-specific code.bunnei2017-10-136-774/+0
|
* Merge remote-tracking branch 'upstream/master' into nxbunnei2017-10-1011-495/+182
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # Conflicts: # src/core/CMakeLists.txt # src/core/arm/dynarmic/arm_dynarmic.cpp # src/core/arm/dyncom/arm_dyncom.cpp # src/core/hle/kernel/process.cpp # src/core/hle/kernel/thread.cpp # src/core/hle/kernel/thread.h # src/core/hle/kernel/vm_manager.cpp # src/core/loader/3dsx.cpp # src/core/loader/elf.cpp # src/core/loader/ncch.cpp # src/core/memory.cpp # src/core/memory.h # src/core/memory_setup.h
| * file_sys, loader: add support for reading TMDs to determine app pathsshinyquagsire232017-10-011-3/+14
| |
| * Loaders: Don't automatically set the current process every time we load an application.Subv2017-09-277-35/+36
| | | | | | | | The loaders will now just create a Kernel::Process, construct it and return it to the caller, which is responsible for setting it as the current process and configuring the global page table.
| * HLE/Archives: Allow multiple loaded applications to access their SelfNCCH archive independently.Subv2017-09-252-4/+2
| | | | | | | | | | | | | | | | 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.
| * Merge pull request #2952 from MerryMage/page-tablesB3n302017-09-253-3/+3
| |\ | | | | | | Switchable Page Tables
| | * memory: Add GetCurrentPageTable/SetCurrentPageTableMerryMage2017-09-243-3/+3
| | | | | | | | | | | | Don't expose Memory::current_page_table as a global.
| * | Loader/NCCH: Add support for loading application updates (#2927)Max Thomas2017-09-253-434/+82
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
| * Kernel/Memory: Give each Process its own page table.Subv2017-09-103-0/+3
| | | | | | | | The loader is in charge of setting the newly created process's page table as the main one during the loading process.
| * Added missing parts in libnetwork (#2838)B3n302017-08-191-0/+8
| | | | | | | | | | * Network: Set and send the game information over enet Added Callbacks for RoomMember and GetMemberList to Room in preparation for web_services.
| * loader: Expose program title.bunnei2017-08-043-12/+31
| |
* | loader: Various improvements for NSO/NRO loaders.bunnei2017-10-105-52/+34
| |
* | loader: Add support for NRO, as well as various fixes and shared linker.bunnei2017-10-068-146/+430
| |
* | nso: Fixes to support homebrew NSOs without a MOD header.bunnei2017-10-042-17/+23
| |
* | nso: Refactor and allocate .bss section.bunnei2017-09-305-119/+144
| |
* | loader: Add support for loading an NSO.bunnei2017-09-304-0/+340
| |
* | elf: Check if machine is ARM.bunnei2017-09-301-2/+9
|/
* telemetry: Log performance, configuration, and system data.bunnei2017-07-181-2/+4
|
* Addressed Bunnei's review comments, and made some other tweaks:TheKoopaKingdom2017-06-032-2/+2
| | | | | - 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.
* Created a whitelist of system archives to prevent false positives creating dialogs.TheKoopaKingdom2017-06-032-4/+2
|
* Made some changes from review comments:TheKoopaKingdom2017-06-033-15/+12
| | | | | | | | - 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.
* Fixed encrypted ROM error messages.TheKoopaKingdom2017-06-033-9/+19
|
* telemetry: Log a few simple data fields throughout core.bunnei2017-05-251-0/+3
|
* Remove ability to load symbol mapsYuri Kunde Schlesner2017-05-081-32/+0
| | | | | This was now mostly unused except by thread creation, which used a symbol of the entrypoint, if available, to name the thread.
* loader/ncch: less verbose log for loading game list. only log program ID when bootingwwylele2017-03-081-3/+6
|
* loader: lower file name logging levelwwylele2017-03-081-1/+1
|
* Doxygen: Amend minor issues (#2593)Mat M2017-02-271-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.
* loader: use self NCCH archivewwylele2017-02-132-6/+6
|
* loader: Add support for 3DSX special relocation types, fixes citra-emu/citra#2449Thomas Farr2017-01-181-9/+25
| | | | As per devkitPro/3dstools@47bea18
* Fix some warnings (#2399)Jonathan Hao2017-01-042-2/+2
|
* Merge pull request #2240 from wwylele/auto-regionbunnei2016-12-302-0/+25
|\ | | | | Config: auto-select region and language
| * Config: auto-select region and languagewwylele2016-12-072-0/+25
| |
* | loader: Remove duplicate docstrings.bunnei2016-12-223-56/+0
| |
* | loader: Implement ReadProgramIdMerryMage2016-12-153-0/+28
|/
* Kernel/Loader: Grab the system mode from the NCCH ExHeader.Subv2016-11-283-16/+17
| | | | | | | 3dsx and elf files default to system mode 2 (96MB allocated to the application). This allows Home Menu to boot without modifications. Closes #1849
* Kernel/Loader: Grab the system mode from the NCCH ExHeader.Subv2016-11-203-0/+27
| | | | | | | 3dsx and elf files default to system mode 2 (96MB allocated to the application). This allows Home Menu to boot without modifications. Closes #1849
* Fix typosRicardo de Almeida Gonzaga2016-10-202-2/+2
|
* Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner2016-09-214-4/+4
|
* Remove empty newlines in #include blocks.Emmanuel Gil Peyrot2016-09-2110-21/+4
| | | | | | | This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
* Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner2016-09-194-10/+5
|
* Sources: Run clang-format on everything.Emmanuel Gil Peyrot2016-09-189-208/+249
|
* Loader: Split SMDH into its own header and import helpers from QGameListEmmanuel Gil Peyrot2016-05-213-47/+136
| | | | Also rewrite Qt wrappers to use those.
* CitraQt: Simplify the game list loader codeEmmanuel Gil Peyrot2016-05-212-14/+12
|
* Loader: Add a GetFileType method to get the type of a loaded fileEmmanuel Gil Peyrot2016-05-214-0/+30
|
* Loader, Frontends: Refactor loader creation and game loadingEmmanuel Gil Peyrot2016-05-214-47/+21
| | | | | This allows frontends to keep a single loader and use it multiple times e.g. for code loading and SMDH parsing.
* Merge pull request #1766 from Subv/log_cpubunnei2016-05-081-0/+3
|\ | | | | Kernel/Threading: Warn when a thread can be scheduled in the Syscore (Core 1)
| * Kernel/Threading: Warn when a thread can be scheduled in the Syscore (Core 1).Subv2016-05-071-0/+3
| | | | | | | | We do not currently implement any cores other than the AppCore (Core 0).
* | fixup simple type conversions where possibleAlexander Laties2016-05-071-3/+3
| |
* | fix:return proper errorwwylele2016-05-061-2/+3
| |
* | add icon & title to game listwwylele2016-05-046-23/+149
| |
* | ncch: Use correct format specifier (for long long uint)Sam Spilsbury2016-04-231-1/+1
|/
* core: Clean out some unnecessary header includesLioncash2016-04-161-5/+1
|
* ncch:only decompress .code sectionwwylele2016-04-141-2/+2
|
* Merge pull request #1643 from MerryMage/make_uniqueMathew Maidment2016-04-062-4/+2
|\ | | | | Common: Remove Common::make_unique, use std::make_unique
| * Common: Remove Common::make_unique, use std::make_uniqueMerryMage2016-04-052-4/+2
| |
* | loader: Make MakeMagic constexprLioncash2016-03-211-1/+1
|/
* Merge pull request #1344 from LittleWhite-tb/error-outputbunnei2016-03-091-3/+3
|\ | | | | Output errors in GUI
| * Improve error report from Init() functionsLittleWhite2016-03-081-1/+0
| | | | | | | | Add error popup when citra initialization failed
| * Display errors in GUI when loading ROM failedLittleWhite2016-03-031-2/+3
| |
* | Loader/NCCH: Log the program ID during loadingYuri Kunde Schlesner2016-03-051-1/+2
|/ | | | | This is useful for all sorts of things, but mainly to identify save folders more easily.
* elf: Don't cast away constLioncash2016-01-251-3/+3
|
* Merge pull request #1199 from Gareth422/encryption-checkbunnei2015-10-203-20/+25
|\ | | | | Loader: Implement NCCH encryption check
| * Loader: Change NCCH header types to be explicitly little-endianGareth Poole2015-10-112-18/+17
| |
| * Loader: Implement encryption checkGareth Poole2015-10-113-2/+8
| |
* | CitraQt, SkyEye, Loader, VideoCore: Remove newlines in LOG_* calls.Emmanuel Gil Peyrot2015-10-091-2/+2
|/ | | | The LOG_* function itself already appends one.
* Merge pull request #1095 from archshift/game-listbunnei2015-10-022-13/+41
|\ | | | | Initial implementation of a game list
| * Expose loader helper functions for identifying files.archshift2015-10-012-13/+41
| |
* | Implement 3dsx RomFSCruel2015-09-213-3/+61
|/
* General: Fix up doxygen commentsLioncash2015-09-102-2/+4
|
* Properly indicate that CIA support is not implemented yetBenjamin Barenblat2015-08-151-0/+4
| | | | | Make `Loader::LoadFile` return an `ErrorNotImplemented` if you call it on a CIA file.
* Give CIA file type a nameBenjamin Barenblat2015-08-151-0/+2
| | | | | Make `GetFileTypeString` return ‘CIA’ for CIA (CTR Importable Archive) files.
* loader: Remove unnecessary else usagesLioncash2015-07-261-9/+9
|
* Core : Change variable typezawata2015-07-191-1/+1
| | | | and fix various warnings
* Loader: Fix variable type and remove unused variableYuri Kunde Schlesner2015-07-141-2/+1
|
* Loader: Remove unnecessary pointer indirection to IOFileYuri Kunde Schlesner2015-07-148-48/+48
|
* FS: Stream RomFS from file instead of loading all of it to memorycondut2015-07-144-9/+20
|
* Core: Properly configure address space when loading a binaryYuri Kunde Schlesner2015-07-123-27/+123
| | | | | | 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.
* Loader: Clean up 3dsx loader a bit, fixing a potential buffer overrunYuri Kunde Schlesner2015-07-121-13/+16
|
* Loader: Make 3dsx loader logs a bit less confusingYuri Kunde Schlesner2015-07-121-6/+3
|
* Merge pull request #876 from linkmauve/include-cleanupsYuri Kunde Schlesner2015-07-114-3/+13
|\ | | | | Cleanup includes, mostly in common
| * CitraQt: Cleanup includes.Emmanuel Gil Peyrot2015-06-283-3/+10
| |
| * Common: Cleanup key_map includes.Emmanuel Gil Peyrot2015-06-282-0/+2
| |
| * Common: Fix FileUtil includes, and everything relying on those.Emmanuel Gil Peyrot2015-06-281-0/+1
| |
* | Loader: Remove log line causing warningaroulin2015-07-081-1/+0
|/
* Remove every trailing whitespace from the project (but externals).Emmanuel Gil Peyrot2015-05-291-1/+1
|
* Core/ResourceLimits: Implemented the basic structure of ResourceLimits.Subv2015-05-153-0/+13
| | | | | | Implemented svcs GetResourceLimit, GetResourceLimitCurrentValues and GetResourceLimitLimitValues. Note that the resource limits do not currently keep track of used objects, since we have no way to distinguish between an object created by the application, and an object created by some HLE module once we're inside Kernel::T::Create.
* Memmap: Re-organize memory function in two filesYuri Kunde Schlesner2015-05-154-4/+3
| | | | | | | 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.
* Merge pull request #734 from yuriks/memmapTony Wasserka2015-05-092-3/+3
|\ | | | | Small memory map definitions cleanup
| * Memory: Re-organize and rename memory area address constantsYuri Kunde Schlesner2015-05-092-3/+3
| |
* | Loader: Add missing includeYuri Kunde Schlesner2015-05-091-0/+1
|/
* Loader: Remove .bin file supportYuri Kunde Schlesner2015-05-092-20/+0
| | | | | It is of very limited practical utility currently, and will soon be impossible to support due to more accurate memory map emulation.
* Process: Rename StaticAddressMapping => AddressMappingYuri Kunde Schlesner2015-05-094-5/+5
|
* Loader/NCCH: Fix formatting of bracesYuri Kunde Schlesner2015-05-091-9/+9
|
* Process: Support parsing of exheader kernel capsYuri Kunde Schlesner2015-05-093-0/+3
|
* Kernel: Remove g_program_idYuri Kunde Schlesner2015-05-093-11/+0
| | | | This has been obsoleted by the field in Process.
* Kernel: Introduce skeleton Process class to hold process dataYuri Kunde Schlesner2015-05-098-29/+88
|
* Common: Remove common.hYuri Kunde Schlesner2015-05-076-3/+11
|
* Services/Loader: Use more sensible log formats for certain functionspurpasmart962015-04-282-14/+37
| | | | along with more info being logged.
* NCCH: Minor updates to the ncch headerpurpasmart962015-03-151-11/+14
|
* Build: Fixed some warningsSubv2015-02-121-1/+3
|
* FS: Allow multiple instances of the same archive type to be open at onceYuri Kunde Schlesner2015-02-101-1/+1
|
* core: Fix some warnings on OSXLioncash2015-02-031-1/+1
|
* Merge pull request #514 from rohit-n/fix-warningsbunnei2015-02-011-2/+2
|\ | | | | Silence a few warnings.
| * Silence a few warnings.Rohit Nirmal2015-01-301-2/+2
| |
* | loader: Add missing printf argumentLioncash2015-01-301-1/+1
|/
* Loader: Clean up the ELF AppLoader.Emmanuel Gil Peyrot2015-01-152-42/+35
|
* Loader: Clean up the 3DSX AppLoader.Emmanuel Gil Peyrot2015-01-151-17/+24
|
* Loader: Clean up the NCCH AppLoader.Emmanuel Gil Peyrot2015-01-151-51/+48
|
* Loader: Display the type of the file being loaded.Emmanuel Gil Peyrot2015-01-151-3/+23
|
* Loader: Guess filetype from the magic, or fallback to the extension.Emmanuel Gil Peyrot2015-01-158-26/+112
|
* Loader: Don’t assume the file hasn’t been read before.Emmanuel Gil Peyrot2015-01-153-4/+13
|
* Loader: Keep a reference to the file and pass it to the correct AppLoader, instead of loading it multiple times.Emmanuel Gil Peyrot2015-01-158-176/+116
|
* Loader: Initialize the default NCCH values in the class declaration, not in the constructor.Emmanuel Gil Peyrot2015-01-152-8/+4
|
* Loader: Remove the useless THREEDSXReader class.Emmanuel Gil Peyrot2015-01-151-10/+4
|
* Loader: Never forget to change is_loaded.Emmanuel Gil Peyrot2015-01-156-7/+15
|
* Loader: Don’t duplicate the docstring into the cpp file.Emmanuel Gil Peyrot2015-01-154-56/+0
|
* Loader: Fix indentation, whitespace, and a few other such cosmetic stuff.Emmanuel Gil Peyrot2015-01-152-26/+24
|
* Fix correct espaceDante384902015-01-051-2/+2
|
* Add support load 3DS roomDante384902015-01-051-0/+2
|
* elf: Make DidRelocate constLioncash2015-01-031-1/+1
|
* Merge pull request #291 from purpasmart96/licensebunnei2014-12-218-10/+10
|\ | | | | License change
| * License changepurpasmart962014-12-218-10/+10
| |
* | Merge pull request #315 from chinhodado/masterbunnei2014-12-201-3/+1
|\ \ | | | | | | Clean up some warnings
| * | Clean up some warningsChin2014-12-201-3/+1
| |/
* / Common: Add a clone of std::make_uniqueYuri Kunde Schlesner2014-12-201-2/+4
|/
* Filesystem/Archives: Implemented the SaveData archiveSubv2014-12-183-0/+11
| | | | | | | | | | 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
* FS.Archive: Clean up treatment of archives and their handlesYuri Kunde Schlesner2014-12-161-1/+1
| | | | | | | - Refactor FS::Archive internals to make Archive creation and lifetime management clearer. - Remove the "Archive as a File" hack. - Implement 64-bit Archive handles.
* Service.FS: Do archive registration using IdCode instead of nameYuri Kunde Schlesner2014-12-161-1/+1
|
* HLE: Rename namespaces to match move & fix initialization orderYuri Kunde Schlesner2014-12-161-1/+1
|
* HLE: Move kernel/archive.* to service/fs/Yuri Kunde Schlesner2014-12-162-2/+2
|
* Convert old logging calls to new logging macrosYuri Kunde Schlesner2014-12-134-35/+35
|
* Loader: Add 3DSX supportichfly2014-12-084-0/+276
|
* Remove trailing spaces in every file but the ones imported from SkyEye, AOSP or generatedEmmanuel Gil Peyrot2014-11-193-6/+6
|
* core: Mark some hle functions as staticLioncash2014-11-181-2/+2
| | | | These functions are not referred to by their linkage name outside of the translation unit, so they can be marked as static.
* Common: Rename the File namespace to FileUtil, to match the filename and prevent collisions.Emmanuel Gil Peyrot2014-09-173-5/+5
|
* Merge pull request #99 from archshift/ext-checkbunnei2014-09-111-15/+16
|\ | | | | loader.cpp: improved file extension checking, made Upper/LowerStr useful, moved string_util into Common namespace
| * Added string_util to common, small changes in loader.cpparchshift2014-09-091-16/+15
| |
| * loader.cpp: improved file extension checking, made Upper/LowerStr usefularchshift2014-09-091-6/+8
| | | | | | | | Instead of forcibly taking the last 4 characters, it now finds the last extension separator (the period) and takes a substr of its location.
* | core: Prune redundant includesarchshift2014-09-091-1/+0
|/
* ncch: Remove C-style struct typedefsLioncash2014-09-061-4/+4
| | | | In C++ you can simply just declare it as is.
* ncch: inline declare some variables in LZSS_DecompressLioncash2014-09-061-7/+5
|
* Loader: Added support for loading raw BIN executables.bunnei2014-08-282-0/+21
| | | | | | - Useful for debugging homebrew Qt: Updated GUI to support loading .bin files.
* NCCH: Updated ExeFS memory allocation to be safer.bunnei2014-07-052-1/+7
|
* Marked AppLoader_ELF, AppLoader_NCCH, and Archive_RomFS virtual functions as "override".bunnei2014-07-052-9/+9
|
* Marked AppLoader_ELF, AppLoader_NCCH, and Archive_RomFS classes as "final"bunnei2014-07-052-2/+2
|
* Loader: Updated read methods to be constbunnei2014-07-053-66/+77
| | | | - Required "file" handle to be made local and explicitly opened/closed as needed
* FileSys: Added preliminary support for applications reading the RomFS archive.bunnei2014-07-051-4/+11
| | | | | | | | | | 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.
* Loader: Refactored interface such that data is no longer stored by loader.bunnei2014-06-273-96/+73
| | | | NCCH: Removed extra qualification ‘Loader::AppLoader_NCCH::’.
* Loader: Refactored loading functions to only read data from binary if called.bunnei2014-06-253-74/+141
| | | | NCCH: Updated LoadExec to use Memory::WriteBlock function to load binary code.
* ELF: Refactored LoadInto(..) to use memcpy, removed unnecessary code.bunnei2014-06-251-19/+8
|
* Loader: Refactored use of const.bunnei2014-06-256-20/+19
|
* NCCH: Added RomFS loading.bunnei2014-06-252-1/+36
|
* NCCH: Fixes reduce unnecessary logging and load logo/banner/etc. sections correctly.bunnei2014-06-253-22/+29
| | | | Loader: Added ErrorNotUsed ReturnStatus type to specify when something is not used.
* Loader: Implemented AppLoader interface for abstracting application loading.bunnei2014-06-256-523/+672
| | | | | | | | | | | | | | | | | | - Various cleanups/refactorings to Loader, ELF, and NCCH modules. - Added AppLoader interface to ELF and NCCH. - Updated Qt/GLFW frontends to check AppLoader ResultStatus. NCCH: Removed extra qualification typos. Loader: Removed unnecessary #include's. NCCH: Improved readability of memcmp statements. NCCH: Added missing space. Elf: Removed unnecessary usage of unique_ptr. Loader: Removed unnecessary usage of unique_ptr.
* NCCH: Changed decompression to load .code directly into memory rather than an intermediate buffer.bunnei2014-06-171-9/+3
|
* Elf: Removed unused macros, changed #include of "common.h" to just "common_types.h".bunnei2014-06-171-117/+1
|
* Loader: Cleaned up and removed unused code, refactored ELF namespace.bunnei2014-06-174-209/+70
|
* Elf: Renamed modules to be consistent with new loader naming, fixed tabs -> spaces.bunnei2014-06-175-357/+332
|
* Loader: Added support for booting NCCH executables.bunnei2014-06-173-0/+374
| | | | NCCH: Fixed typo in printing NCCH filename.
* Loader: Moved elf and loader modules to a "loader" subdirectory.bunnei2014-06-175-0/+805