summaryrefslogtreecommitdiff
path: root/src/core (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | patch_manager: Return a std::unique_ptr from ParseControlNCA() and ↵Gravatar Lioncash2018-10-096-15/+13
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GetControlMetadata() instead of a std::shared_ptr Neither of these functions require the use of shared ownership of the returned pointer. This makes it more difficult to create reference cycles with, and makes the interface more generic, as std::shared_ptr instances can be created from a std::unique_ptr, but the vice-versa isn't possible. This also alters relevant functions to take NCA arguments by const reference rather than a const reference to a std::shared_ptr. These functions don't alter the ownership of the memory used by the NCA instance, so we can make the interface more generic by not assuming anything about the type of smart pointer the NCA is contained within and make it the caller's responsibility to ensure the supplied NCA is valid.
* | | Merge pull request #1459 from ogniK5377/breakGravatar bunnei2018-10-091-5/+20
|\ \ \ | | | | | | | | svcBreak, Signalling to the debugger should not kill execution
| * | | Added bitfield instead of manually checking if the bit is setGravatar David Marcec2018-10-091-4/+12
| | | |
| * | | Actual kill execution when the bit isn't set, not the other way aroundGravatar David Marcec2018-10-091-1/+1
| | | |
| * | | svcBreak, Signalling to the debugger should not kill executionGravatar David Marcec2018-10-091-5/+12
| | | | | | | | | | | | | | | | When loading NROs, svcBreak is called to signal to the debugger that a new "module" is loaded. As no debugger is technically attached we shouldn't be killing the programs execution.
* | | | Merge pull request #1465 from lioncash/telemetryGravatar bunnei2018-10-092-7/+9
|\ \ \ \ | | | | | | | | | | telemetry_session: Minor miscellaneous changes
| * | | | telemetry_session: Remove doxygen comment for a non-existent parameterGravatar Lioncash2018-10-091-1/+0
| | | | | | | | | | | | | | | | | | | | There's no "func" parameter, so this can just be removed.
| * | | | telemetry_session: Add missing includesGravatar Lioncash2018-10-092-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Prevents potential compilation issues in the future by including missing headers for certain functions and types.
| * | | | telemetry_session: Remove unimplemented FinalizeAsyncJob prototypeGravatar Lioncash2018-10-091-2/+0
| | | | | | | | | | | | | | | | | | | | This isn't implemented anywhere, so it can just be removed.
| * | | | telemetry_session: Use a std::array in GenerateTelemetryId()Gravatar Lioncash2018-10-091-2/+4
| | |/ / | |/| | | | | | | | | | | | | | | | | | We don't need to potentially heap-allocate a std::string instance here, given the data is known ahead of time. We can just place it within an array and pass this to the mbedtls functions.
* | | | ips_layer: Avoid constructing std::vector instances where not necessaryGravatar Lioncash2018-10-091-6/+25
| | | | | | | | | | | | | | | | | | | | | | | | We can just compare the existing std::vector instance with a constexpr std::array containing the desired match. This is lighter resource-wise, as we don't need to allocate on the heap.
* | | | ips_layer: Remove unnecessary explicit std::pair constructor in std::arrayGravatar Lioncash2018-10-091-5/+13
| | | | | | | | | | | | | | | | | | | | Makes the layout of the array consistent, by making all elements match, instead of special-casing the first one.
* | | | ips_layer: Add missing includesGravatar Lioncash2018-10-092-7/+17
| | | | | | | | | | | | | | | | | | | | | | | | Adds missing includes to prevent potential compilation issues in the future. Also moves the definition of a struct into the cpp file, so that some includes don't need to be introduced within the header.
* | | | ips_layer: std::move data within PatchIPS() and Apply()Gravatar Lioncash2018-10-091-2/+5
|/ / / | | | | | | | | | | | | We don't need to make a copy of the read data, so we can std::move it into the make_shared call here.
* | | Merge pull request #1423 from DarkLordZach/romfs-file-extsGravatar bunnei2018-10-085-10/+38
|\ \ \ | | | | | | | | fsmitm_romfsbuild: Add support for stubbing and IPS patches in LFS
| * | | patch_manager: Avoid romfs_ext requirement for patchingGravatar Zach Hilman2018-10-041-4/+1
| | | |
| * | | fsmitm_romfsbuild: Extract stubs and IPS to romfs_ext dirGravatar Zach Hilman2018-10-045-21/+38
| | | |
| * | | fsmitm_romfsbuild: Add support for stubbing and IPS patches in LFSGravatar Zach Hilman2018-10-041-0/+14
| | | |
* | | | Merge pull request #1424 from DarkLordZach/ips-witchGravatar bunnei2018-10-084-23/+299
|\ \ \ \ | |_|/ / |/| | | ips_layer: Add support for IPSwitch executable patches
| * | | ips_layer: Fix inaccuracies with comments and flagsGravatar Zach Hilman2018-10-043-16/+51
| | | | | | | | | | | | Specifically bugs/crashes that arise when putting them in positions that are legal but not typical, such as midline, between patch data, or between patch records.
| * | | ips_layer: Deduplicate resource usageGravatar Zach Hilman2018-10-043-31/+37
| | | |
| * | | ips_layer: Add support for escape sequences and midline commentsGravatar Zach Hilman2018-10-043-8/+41
| | | | | | | | | | | | | | | | More accurately follows IPSwitch specification.
| * | | patch_manager: Add support for IPSwitch format patchesGravatar Zach Hilman2018-10-041-22/+56
| | | |
| * | | ips_layer: Add IPSwitchCompiler to process IPSwitch formatGravatar Zach Hilman2018-10-042-0/+168
| |/ /
* | | Merge pull request #1456 from ogniK5377/aoc-u-fixupsGravatar bunnei2018-10-081-5/+5
|\ \ \ | | | | | | | | Fixed assertion due to CountAddOnContent & Casting warnings
| * | | Fixed assertion due to CountAddOnContentGravatar David Marcec2018-10-081-5/+5
| | |/ | |/| | | | | | | | | | | | | Word count should be 3 since we're pushing a result code and a u32. Also fixed up compiler warnings due to casting
* | | Merge pull request #1457 from ogniK5377/unmap-bufferGravatar bunnei2018-10-081-1/+6
|\ \ \ | | | | | | | | Unmapping an unmapped buffer should succeed
| * | | Unmapping an unmapped buffer should succeedGravatar David Marcec2018-10-081-1/+6
| |/ / | | | | | | | | | Hardware tests show that trying to unmap an unmapped buffer already should always succeed. Hardware test was tested up to 32 iterations of attempting to unmap
* | | nso/nro: Use default allocation size for arg_dataGravatar Zach Hilman2018-10-074-14/+20
| | |
* | | cmd: Support passing game arguments from command lineGravatar Zach Hilman2018-10-072-2/+2
| | | | | | | | | | | | Uses -p (--program) and following string as args.
* | | settings: Add program_args string settingGravatar Zach Hilman2018-10-071-0/+1
| | |
* | | nso/nro: Add NSO arguments structure to data sectionGravatar Zach Hilman2018-10-074-3/+38
|/ / | | | | | | Only added if arguments string is non-empty and a pass is requested by loader.
* | Merge pull request #1396 from DarkLordZach/packed-updatesGravatar bunnei2018-10-0615-16/+128
|\ \ | | | | | | loader: Add support for packed updates
| * | romfs_factory: Extract packed update setter to new functionGravatar Zach Hilman2018-10-059-6/+36
| | |
| * | patch_manager: Add support for NSP packed updatesGravatar Zach Hilman2018-10-051-2/+2
| | | | | | | | | | | | Reads as Update (NSP) in add-ons
| * | patch_manager: Add support for packed updatesGravatar Zach Hilman2018-10-054-5/+18
| | | | | | | | | | | | Will prefer any installed update over the packed version.
| * | loader: Add getter for packed updateGravatar Zach 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 loadersGravatar Zach Hilman2018-10-056-6/+20
| |/ | | | | | | Fixes errors with certain updates
* | Merge pull request #1448 from ogniK5377/frontend-accessGravatar bunnei2018-10-064-0/+26
|\ \ | | | | | | Ported #4296 from citra
| * | Added forward define for ServerPortGravatar David Marcec2018-10-062-4/+6
| | |
| * | Ported #4296 from citraGravatar David Marcec2018-10-063-1/+25
| | | | | | | | | | | | This will allow us to easily remove the use of "NFC" in "System"
* | | Merge pull request #1332 from FearlessTobi/port-web-backendGravatar bunnei2018-10-064-14/+53
|\ \ \ | |/ / |/| | Port web_service from Citra
| * | Review comments -part 4Gravatar fearlessTobi2018-10-021-0/+1
| | |
| * | Address more review commentsGravatar fearlessTobi2018-10-021-1/+1
| | |
| * | Address a bunch of review commentsGravatar fearlessTobi2018-10-022-6/+7
| | |
| * | Port web_service from CitraGravatar fearlessTobi2018-10-024-14/+51
| | |
* | | kernel/mutex: Amend behavior of TransferMutexOwnership()Gravatar Lioncash2018-10-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | This was the result of a typo accidentally introduced in e51d715700a35a8f14e5b804b6f7553c9a40888b. This restores the previous correct behavior. The behavior with the reference was incorrect and would cause some games to fail to boot.
* | | thread: Make the scheduler pointer a regular pointerGravatar balika0112018-10-052-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conceptually, it doesn't make sense for a thread to be able to persist the lifetime of a scheduler. A scheduler should be taking care of the threads; the threads should not be taking care of the scheduler. If the threads outlive the scheduler (or we simply don't actually terminate/shutdown the threads), then it should be considered a bug that we need to fix. Attributing this to balika011, as they opened #1317 to attempt to fix this in a similar way, but my refactoring of the kernel code caused quite a few conflicts.
* | | Merge pull request #1439 from lioncash/threadGravatar bunnei2018-10-0514-206/+392
|\ \ \ | |_|/ |/| | kernel/thread: Make all instance variables private
| * | kernel/thread: Make all instance variables privateGravatar Lioncash2018-10-0414-206/+392
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Many of the member variables of the thread class aren't even used outside of the class itself, so there's no need to make those variables public. This change follows in the steps of the previous changes that made other kernel types' members private. The main motivation behind this is that the Thread class will likely change in the future as emulation becomes more accurate, and letting random bits of the emulator access data members of the Thread class directly makes it a pain to shuffle around and/or modify internals. Having all data members public like this also makes it difficult to reason about certain bits of behavior without first verifying what parts of the core actually use them. Everything being public also generally follows the tendency for changes to be introduced in completely different translation units that would otherwise be better introduced as an addition to the Thread class' public interface.