summaryrefslogtreecommitdiffstats
path: root/src/core/loader (follow)
Commit message (Collapse)AuthorAgeFilesLines
* scope_exit: Make constexprFearlessTobi2024-02-191-1/+3
| | | | | Allows the use of the macro in constexpr-contexts. Also avoids some potential problems when nesting braces inside it.
* vfs: Move vfs files to their own directoryFearlessTobi2024-01-252-2/+2
|
* loader: also register fs process for raw exefs partitionLiam2024-01-231-0/+8
|
* Merge pull request #12677 from GPUCode/whyy-moddersliamwhite2024-01-153-39/+80
|\ | | | | core: Support multiple modules per patcher
| * core: Support multiple modules per patcherGPUCode2024-01-143-39/+80
| |
* | loader: fix homebrew nro registrationLiam2024-01-131-6/+6
| |
* | fsp-srv: use program registry for SetCurrentProcessLiam2024-01-115-20/+12
|/
* kernel: restrict nce to applicationsLiam2023-12-231-3/+4
|
* file_sys: handle null romfsLiam2023-12-021-4/+2
|
* core: Rename patcher fileGPUCode2023-11-293-3/+3
|
* loader: fix gcc compileLiam2023-11-271-1/+1
|
* loader: apply nso patch to offset program imageLiam2023-11-251-4/+6
|
* core: Define HAS_NCE macroGPUCode2023-11-253-9/+9
|
* Address some review commentsGPUCode2023-11-252-10/+11
|
* android: Add cpu bakend gui toggleGPUCode2023-11-252-3/+5
|
* arm: Implement native code execution backendLiam2023-11-255-26/+162
|
* kernel: Manually specify aslr region startLiam2023-11-253-3/+5
|
* loader: don't reassign program ID on npdm reparseLiam2023-09-301-1/+1
|
* core: improve debug workflowLiam2023-09-146-10/+16
|
* core: implement basic integrity verificationLiam2023-09-068-1/+165
|
* kernel: offset code entry point for 39-bit address space type (#11326)liamwhite2023-08-254-4/+4
|
* vfs: expand support for NCA readingLiam2023-08-1510-40/+20
|
* k_process: PageTable -> GetPageTableLiam2023-07-154-4/+4
|
* file_sys/content_archive: Detect compressed NCAs (#11047)Tobias2023-07-121-0/+2
|
* android: Add proper homebrew checkCharles Lombardo2023-06-102-1/+14
|
* kernel: use KTypedAddress for addressesLiam2023-03-223-3/+3
|
* general: rename CurrentProcess to ApplicationProcessLiam2023-02-141-1/+1
|
* core/loader: Return nullptr if file is nullptrMerry2022-09-251-0/+4
|
* code: dodge PAGE_SIZE #defineKyle Kienapfel2022-08-203-3/+3
| | | | | | | | | | | | | | | | | | | | | Some header files, specifically for OSX and Musl libc define PAGE_SIZE to be a number This is great except in yuzu we're using PAGE_SIZE as a variable Specific example `static constexpr u64 PAGE_SIZE = u64(1) << PAGE_BITS;` PAGE_SIZE PAGE_BITS PAGE_MASK are all similar variables. Simply deleted the underscores, and then added YUZU_ prefix Might be worth noting that there are multiple uses in different classes/namespaces This list may not be exhaustive Core::Memory 12 bits (4096) QueryCacheBase 12 bits ShaderCache 14 bits (16384) TextureCache 20 bits (1048576, or 1MB) Fixes #8779
* core/loader: remove ELF loaderLiam2022-08-014-311/+0
|
* general: fix compilation on MinGW GCC 12Liam2022-06-141-5/+4
|
* common: consolidate ELF structure definitionsLiam2022-06-051-167/+16
|
* chore: add missing SPDX tagsAndrea Pappacoda2022-04-282-6/+6
| | | | Follow-up to 99ceb03a1cfcf35968cab589ea188a8c406cda52
* general: Convert source file copyright comments over to SPDXMorph2022-04-2318-54/+36
| | | | | 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.
* loader: log the type of mismatching file-extensionBytesGalore2022-03-031-1/+2
|
* general: Replace NonCopyable struct with equivalentsLioncash2022-02-021-1/+5
|
* core: loader: kip: Minimal changes to fix KIP loading.bunnei2021-12-181-1/+7
| | | | - Allows us to boot KIP (kernal apps), useful for testing the kernel.
* loader: Support loading subsdk{8,9}jam1garner2021-12-061-2/+3
|
* core: Remove unused includesameerj2021-11-0410-13/+0
|
* file_sys: Support load game collection (#6582)Feng Chen2021-07-206-29/+52
| | | Adds support for loading games with multiple programs embedded within such as the Dragon Quest 1+2+3 Collection
* general: Make most settings a BasicSettinglat9nq2021-06-282-4/+4
| | | | | | | | | | | Creates a new BasicSettings class in common/settings, and forces setting a default and label for each setting that uses it in common/settings. Moves defaults and labels from both frontends into common settings. Creates a helper function in each frontend to facillitate reading the settings now with the new default and label properties. Settings::Setting is also now a subclass of Settings::BasicSetting. Also adds documentation for both Setting and BasicSetting.
* common: fs: Rework the Common Filesystem interface to make use of std::filesystem (#6270)Morph2021-05-266-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* core: Make variable shadowing a compile-time errorLioncash2021-05-164-16/+15
| | | | | | 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-0620-37/+37
|
* core: Resolve misc cases of variable shadowingLioncash2021-05-032-6/+9
| | | | | | | | | Resolves shadowing warnings that aren't in a particularly large subsection of core. Brings us closer to turning -Wshadow into an error. All that remains now is for cases in the kernel (left untouched for now since a big change by bunnei is pending), and a few left over in the service code (will be tackled next).
* loader: Resolve instances of variable shadowingLioncash2021-04-2719-169/+257
| | | | | Eliminates variable shadowing cases across all the loaders to bring us closer to enabling variable shadowing as an error in core.
* program_metadata: Set a default resource size when a NPDM is not presentMorph2021-04-231-1/+2
| | | | Sets a default size of 0x1FE00000 bytes (510 MiB) for the system_resource_size when a NPDM is not present.
* common: Move settings to common from core.bunnei2021-04-152-2/+2
| | | | - Removes a dependency on core and input_common from common.
* hle: kernel: Migrate PageHeap/PageTable to KPageHeap/KPageTable.bunnei2021-02-195-5/+5
|
* hle: kernel: KThread: Reorganize thread priority defaults.bunnei2021-01-292-4/+4
|
* core: hle: kernel: Rename Thread to KThread.bunnei2021-01-292-2/+2
|
* main: Resolve error string not displayingLioncash2021-01-032-0/+5
| | | | | | | | | 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.
* vfs: Use existing type aliases consistentlyLioncash2020-12-109-9/+9
| | | | | Makes use of the VirtualDir and VirtualFile aliases across the board instead of having a few isolated places that don't use it.
* core: Eliminate remaining usages of the global system instanceLioncash2020-11-274-15/+2
| | | | | | Removes all remaining usages of the global system instance. After this, migration can begin to migrate to being constructed and managed entirely by the various frontends.
* core: loader: Implement support for loading indexed programs.bunnei2020-11-256-12/+20
|
* patch_manager: Remove usages of the global system instanceLioncash2020-11-188-39/+66
| | | | | | | With this, only 19 usages of the global system instance remain within the core library. We're almost there.
* Revert "core: Fix clang build"bunnei2020-10-211-18/+17
|
* core: Fix clang buildLioncash2020-10-181-17/+18
| | | | | | | Recent changes to the build system that made more warnings be flagged as errors caused building via clang to break. Fixes #4795
* core/CMakeLists: Make some warnings errorsLioncash2020-10-134-4/+4
| | | | | | | | | 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.
* General: Make use of std::nullopt where applicableLioncash2020-09-221-3/+3
| | | | | | | | 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.
* file_sys/romfs_factory: Eliminate usage of the global system accessorLioncash2020-09-173-6/+6
|
* loader/nso: Remove unnecessary [[maybe_unused]]Lioncash2020-09-171-2/+1
|
* core/loader: Remove dependencies on the global system instanceLioncash2020-09-1619-44/+84
| | | | | | | | | 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.
* common/fileutil: Convert namespace to Common::FSLioncash2020-08-161-1/+1
| | | | | | | | | | | | 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.
* common/concepts: Rename IsBaseOf to DerivedFromLioncash2020-08-071-1/+1
| | | | | | | | This makes it more inline with its currently unavailable standardized analogue std::derived_from. While we're at it, we can also make the template match the requirements of the standardized variant as well.
* Place in anonymous namespaceDavid Marcec2020-08-031-0/+4
|
* loader: Make IdentifyFile typesafeDavid Marcec2020-08-031-20/+32
| | | | Relies on #4465 for concept.h Common::IsBaseOf
* loader: nro: Fix process initialization using ProgramMetadata default.bunnei2020-04-212-11/+14
|
* loader: elf: Fix process initialization using ProgramMetadata default.bunnei2020-04-211-0/+5
|
* loader/nso: Resolve moves not occurring in DecompressSegmentLioncash2020-04-181-1/+1
| | | | | | | | Given the std::vector was const, an automatic move out of the function could not occur. We can allow automatic return value optimizations to occur by making the buffer non-const.
* loader: nso: Fix loader size and arguments.bunnei2020-04-173-25/+47
|
* loader: elf/kip/nro: Updates for new VMM.bunnei2020-04-173-5/+7
|
* core: memory: Move to Core::Memory namespace.bunnei2020-04-174-6/+6
| | | | - helpful to disambiguate Kernel::Memory namespace.
* loader: nso: Fix loading of static objects to be properly sized and aligned.bunnei2020-04-171-19/+9
|
* core: loader: Remove check for 32-bit.bunnei2020-03-031-6/+0
|
* loader: provide default arguments (zero byte) to NSOsMichael Scire2020-01-232-3/+10
| | | | | | | | | | Certain newer unity games (Terraria, Pokemon Mystery Dungeon) require that the argument region be populated. Failure to do so results in an integer underflow in argument count, and eventually an unmapped read at 0x800000000. Providing this default fixes this. Note that the behavior of official software is as yet unverified, arguments-wise.
* core/loaders: Simplify PhysicalMemory usage.Markus Wick2020-01-183-8/+12
| | | | | It is currently a std::vector, however we might want to replace it with a more fancy allocator. So we can't use the C++ iterators any more.
* core/loader: Track the NSO build ID of the current processZach Hilman2019-09-301-0/+1
|
* nso: Pass build ID directlyZach Hilman2019-09-221-2/+1
| | | As opposed to converting to string and then back to hex array
* yuzu: Port old usages of Filesystem namespace to FilesystemControllerZach Hilman2019-09-215-5/+15
|
* Merge pull request #2576 from DarkLordZach/nsp-fix-1David2019-09-211-14/+13
|\ | | | | nsp: Fix various errors with loading and processing of extracted NSPs
| * nsp: Correct status codes for extracted NSPsZach Hilman2019-06-101-13/+12
| | | | | | | | Avoids all extracted NSPs being marked as error file type because they don't have program NCAs.
| * nsp: Use title ID from NPDM metadata for extracted type NSPsZach Hilman2019-06-101-1/+1
| | | | | | | | Avoids 0 being used as title ID for all extracted NSPs.
* | nro: Implement ReadControlDataNick Renieris2019-09-072-0/+10
| | | | | | | | | | | | With this, the "Developer" field in the Properties for homebrew is now populated. Signed-off-by: Nick Renieris <velocityra@gmail.com>
* | VM_Manager: Align allocated memory to 256bytesFernando Sahmkow2019-07-194-4/+4
| | | | | | | | | | | | This commit ensures that all backing memory allocated for the Guest CPU is aligned to 256 bytes. This due to how gpu memory works and the heavy constraints it has in the alignment of physical memory.
* | file_sys: Rename other ContentRecordType membersBakugo2019-07-022-2/+3
| |
* | Merge pull request #2546 from DarkLordZach/kipsbunnei2019-06-214-1/+157
|\ \ | | | | | | loader, file_sys: Add support for parsing and loading KIP (Kernel Internal Process) files
| * | kernel_executable: Optimize BLZ decompressionZach Hilman2019-06-071-4/+8
| | |
| * | loader: Add recognition for KIP file typeZach Hilman2019-06-052-0/+11
| | |
| * | loader: Add KIP and INI file parser-specific errorsZach Hilman2019-06-052-1/+9
| | |
| * | loader: Add AppLoader_KIP for KIP filesZach Hilman2019-06-052-0/+133
| | |
* | | Merge pull request #2482 from DarkLordZach/prepobunnei2019-06-2113-0/+64
|\ \ \ | | | | | | | | core: Add detailed local reporting feature for development
| * | | loader: Move NSO module tracking to AppLoaderZach Hilman2019-05-2613-3/+64
| | | | | | | | | | | | Also cleanup of general stuff
| * | | core: Track load offsets of NSO modulesZach Hilman2019-05-251-0/+3
| | | | | | | | | | | | | | | | Needed for backtrace decomposition
* | | | common/hex_util: Combine HexVectorToString() and HexArrayToString()Lioncash2019-06-121-2/+2
| |_|/ |/| | | | | | | | | | | | | | 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.
* | | Merge pull request #2526 from lioncash/globalZach Hilman2019-06-051-11/+0
|\ \ \ | |_|/ |/| | core/telemetry_session: Remove usages of the global system accessor
| * | core/loader: Remove LoadKernelSystemModeLioncash2019-05-291-11/+0
| |/ | | | | | | This is a hold-over from Citra and doesn't apply to yuzu.
* / loader/nso: Silence sign-comparison warningLioncash2019-05-251-1/+1
|/ | | | | This was previously performing a size_t == int comparison. Silences a -Wsign-compare warning.
* loader/nso: Remove left-in debug pragmaLioncash2019-05-011-2/+0
| | | | Unintentionally introduced in 552d5071fa171165e4054392d8bb6bf2ecc924e2
* core/core: Move process execution start to System's Load()Lioncash2019-04-1217-98/+128
| | | | | | | | | 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.
* Merge pull request #1957 from DarkLordZach/title-providerbunnei2019-04-101-2/+4
|\ | | | | file_sys: Provide generic interface for accessing game data
| * patch_manager: Dump NSO name with build IDZach Hilman2019-03-281-2/+4
| |
* | core: Add missing override specifiers where applicableLioncash2019-04-041-1/+1
| | | | | | | | | | | | | | | | | | 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.
* | Merge pull request #2093 from FreddyFunk/disk-cache-better-compressionbunnei2019-04-041-10/+7
|\ \ | | | | | | Better LZ4 compression utilization for the disk based shader cache and the yuzu build system
| * | Addressed feedbackunknown2019-03-291-4/+4
| | |
| * | core: Do not link LZ4 to core. Use common/data_compression for nso segment decompression instead.unknown2019-03-291-10/+7
| |/
* | Merge pull request #2281 from lioncash/memorybunnei2019-04-023-3/+3
|\ \ | |/ |/| kernel/codeset: Make CodeSet's memory data member a regular std::vector
| * kernel/codeset: Make CodeSet's memory data member a regular std::vectorLioncash2019-03-223-3/+3
| | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge pull request #2280 from lioncash/nsobunnei2019-03-232-59/+81
|\ \ | | | | | | loader/nso: Minor refactoring
| * | loader/nso: Place translation unit specific functions into an anonymous namespaceLioncash2019-03-221-20/+21
| | | | | | | | | | | | | | | Makes it impossible to indirectly violate the ODR in some other translation unit due to these existing.
| * | loader/nso: Clean up use of magic constantsLioncash2019-03-221-4/+6
| | | | | | | | | | | | | | | Now that the NSO header has the proper size, we can just use sizeof on it instead of having magic constants.
| * | file_sys/patch_manager: Deduplicate NSO headerLioncash2019-03-222-50/+57
| | | | | | | | | | | | | | | | | | 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
| * | loader/nso: Fix definition of the NSO header structLioncash2019-03-221-3/+15
| |/ | | | | | | | | | | | | | | 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.
* / file_sys/cheat_engine: Remove use of global system accessorsLioncash2019-03-221-4/+4
|/ | | | | Instead, pass in the core timing instance and make the dependency explicit in the interface.
* Merge pull request #1933 from DarkLordZach/cheat-enginebunnei2019-03-221-0/+12
|\ | | | | file_sys: Implement parser and interpreter for game memory cheats
| * vm_manager: Remove cheat-specific ranges from VMManagerZach Hilman2019-03-053-11/+4
| |
| * loader/nso: Set main code region in VMManagerZach Hilman2019-03-053-2/+21
| | | | | | | | 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.
* | kernel: Move CodeSet structure to its own source filesLioncash2019-03-203-0/+3
| | | | | | | | | | | | | | | | 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.
* | loader: Remove Linker classLioncash2019-03-202-183/+0
| | | | | | | | Given the class is now currently unused, it can be removed.
* | loader: Remove Linker inheritance from NRO and NSO loadersLioncash2019-03-202-4/+4
|/ | | | | | 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.
* loader: Propagate NCA logo section to ReadBanner and ReadLogoZach Hilman2019-01-159-0/+61
|
* web_browser: Add bounds checking to applet interfaceZach Hilman2018-12-292-2/+0
|
* loader: Add accessor for Manual RomFSZach Hilman2018-12-285-0/+30
|
* Merge pull request #1928 from lioncash/capsbunnei2018-12-273-2/+9
|\ | | | | kernel: Handle kernel capability descriptors
| * kernel/process: Hook up the process capability parser to the process itselfLioncash2018-12-213-2/+9
| | | | | | | | | | 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-275-9/+14
|/
* Merge pull request #1819 from DarkLordZach/disable-addonsbunnei2018-12-115-0/+26
|\ | | | | patch_manager: Add support for disabling patches
| * loader: Add support for reading the name of game's developerZach Hilman2018-12-035-0/+26
| |
* | loaders: Make GetFileType() a const qualified member functionLioncash2018-12-0510-10/+10
| | | | | | | | | | | | 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.
* | loader/nso: Remove dependency on the System classLioncash2018-12-033-8/+11
| | | | | | | | | | Similar to the NRO changes, we can also pass the process explicitly as a parameter from Load instead of indirecting through the System class.
* | loader/nro: Make the static LoadNro function internally linkedLioncash2018-12-032-7/+5
| | | | | | | | | | This simply acts as a forwarding function for the Load() function, so this doesn't need to be directly exposed.
* | loader/nro: Remove dependency on the System classLioncash2018-12-032-10/+13
|/ | | | | | 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()
* Merge pull request #1620 from DarkLordZach/ldr-robunnei2018-11-191-2/+5
|\ | | | | ldr_ro: Complete LDR:RO implementation
| * process: Make MirrorMemory take state to map new memory asZach Hilman2018-11-151-2/+5
| | | | | | | | Credits to Subv
* | Merge pull request #1618 from DarkLordZach/dump-nsobunnei2018-11-151-1/+1
|\ \ | |/ |/| patch_manager: Add support for dumping uncompressed NSOs
| * patch_manager: Add support for dumping decompressed NSOsZach Hilman2018-10-291-1/+1
| | | | | | | | 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.
* | Merge pull request #1608 from DarkLordZach/save-data-readerbunnei2018-11-141-0/+5
|\ \ | | | | | | [ns|fsp_srv]: Implement various functions to boot Checkpoint
| * | loader/nro: Call RegisterRomFS from LoadZach Hilman2018-10-291-0/+5
| |/ | | | | | | Allows NRO homebrew to use the RomFS in the ASET section.
* / 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
* loader/nsp: Move secondary loader initialization to constructorZach Hilman2018-10-271-17/+20
| | | | Prevents nullptr bug when trying to dump the RomFS of an NSP resulting from secondary_loader not being initialized.
* nro: Make LoadNro method accessible outside of apploader code.bunnei2018-10-262-6/+18
|
* XCI: Add function for checking the existence of the program NCALioncash2018-10-161-2/+1
| | | | | | 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.
* nso: Return an optional address from LoadModuleLioncash2018-10-155-16/+29
| | | | | If a malformed NSO is attempted to be loaded, we shouldn't continue onwards. We should be reporting an error and bailing out.
* nso: Make LoadModule take a VfsFile by const referenceLioncash2018-10-153-11/+9
|
* nro: Make LoadNro take a VfsFile by const referenceLioncash2018-10-152-6/+6
| | | | | | 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.
* 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