summaryrefslogtreecommitdiffstats
path: root/src/core/core.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* core: Migrate current_process pointer to the kernelLioncash2018-09-071-4/+7
| | | | | | | | | | Given we now have the kernel as a class, it doesn't make sense to keep the current process pointer within the System class, as processes are related to the kernel. This also gets rid of a subtle case where memory wouldn't be freed on core shutdown, as the current_process pointer would never be reset, causing the pointed to contents to continue to live.
* core/core: Remove unnecessary sm/controller includeLioncash2018-09-061-1/+0
| | | | | | | | | | The only reason this include was necessary, was because the constructor wasn't defaulted in the cpp file and the compiler would inline it wherever it was used. However, given Controller is forward declared, all those inlined constructors would see an incomplete type, causing a compilation failure. So, we just place the constructor in the cpp file, where it can see the complete type definition, allowing us to remove this include.
* core: Use a raw pointer in GetGPUDebugContext.Markus Wick2018-09-041-2/+2
| | | | This helper is called very often. The memory ownership shall not be transfered, so just return the raw pointer.
* vfs_real: Forward declare IOFileLioncash2018-09-021-2/+3
| | | | | | 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-311-4/+15
| | | | | | | | | | | 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.
* core: Make the main System class use the PImpl idiomLioncash2018-08-311-174/+341
| | | | | | | | | | | | | core.h is kind of a massive header in terms what it includes within itself. It includes VFS utilities, kernel headers, file_sys header, ARM-related headers, etc. This means that changing anything in the headers included by core.h essentially requires you to rebuild almost all of core. Instead, we can modify the System class to use the PImpl idiom, which allows us to move all of those headers to the cpp file and forward declare the bulk of the types that would otherwise be included, reducing compile times. This change specifically only performs the PImpl portion.
* kernel: Eliminate kernel global stateLioncash2018-08-291-4/+12
| | | | | | | | | | | | | | | | | | | | | | 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.
* core: Remove always true conditionals in Load()Lioncash2018-08-241-7/+4
| | | | | These conditions are always true, since the outer conditional already checks for these conditions.
* qt: Add 'Install to NAND' option to menuZach Hilman2018-08-121-0/+1
| | | | Prompts for title type on NCA files.
* loader: Join 0* files in directory if filename is 00Zach Hilman2018-08-121-1/+33
| | | | i.e. Load the concatenated 00+01 if 01 exists as well. Needed for split NAND NCAs.
* core: Namespace EmuWindowLioncash2018-08-121-2/+2
| | | | Gets the class out of the global namespace.
* loader: Add more descriptive errorsZach Hilman2018-08-101-22/+4
| | | Full list of new errors and descriptions in core/loader/loader.h
* core: Port core to VfsFilesystem for file accessZach Hilman2018-08-091-2/+6
|
* GDBStub works with both Unicorn and Dynarmic now (#941)Hedges2018-08-071-1/+4
| | | | | | * GDBStub works with both Unicorn and Dynarmic now * Tidy up
* Merge pull request #912 from lioncash/global-varbunnei2018-08-051-3/+6
|\ | | | | video_core: Eliminate the g_renderer global variable
| * renderer_base: Make Rasterizer() return the rasterizer by referenceLioncash2018-08-041-1/+1
| | | | | | | | | | | | | | All calling code assumes that the rasterizer will be in a valid state, which is a totally fine assumption. The only way the rasterizer wouldn't be is if initialization is done incorrectly or fails, which is checked against in System::Init().
| * video_core: Eliminate the g_renderer global variableLioncash2018-08-041-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We move the initialization of the renderer to the core class, while keeping the creation of it and any other specifics in video_core. This way we can ensure that the renderer is initialized and doesn't give unfettered access to the renderer. This also makes dependencies on types more explicit. For example, the GPU class doesn't need to depend on the existence of a renderer, it only needs to care about whether or not it has a rasterizer, but since it was accessing the global variable, it was also making the renderer a part of its dependency chain. By adjusting the interface, we can get rid of this dependency.
* | Merge pull request #849 from DarkLordZach/xcibunnei2018-08-041-4/+8
|\ \ | |/ |/| XCI and Encrypted NCA Support
| * Use more descriptive error codes and messagesZach Hilman2018-08-011-4/+8
| |
* | core/memory: Get rid of 3DS leftoversLioncash2018-08-031-3/+3
| | | | | | | | Removes leftover code from citra that isn't needed.
* | Merge pull request #892 from lioncash/globalbunnei2018-08-031-2/+2
|\ \ | | | | | | video_core: Make global EmuWindow instance part of the base renderer …
| * | video_core: Make global EmuWindow instance part of the base renderer classLioncash2018-08-021-2/+2
| |/ | | | | | | | | | | | | | | | | | | | | Makes the global a member of the RendererBase class. We also change this to be a reference. Passing any form of null pointer to these functions is incorrect entirely, especially given the code itself assumes that the pointer would always be in a valid state. This also makes it easier to follow the lifecycle of instances being used, as we explicitly interact the renderer with the rasterizer, rather than it just operating on a global pointer.
* | Merge pull request #894 from lioncash/objectbunnei2018-08-031-1/+0
|\ \ | | | | | | kernel: Move object class to its own source files
| * | kernel: Move object class to its own source filesLioncash2018-08-021-1/+0
| |/ | | | | | | | | | | 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.
* / hw: Remove unused filesLioncash2018-08-021-3/+0
|/ | | | | | None of these files are used in any meaningful way. They're just leftovers from citra. Also has the benefit of getting rid of an unused global variable.
* audio_core: Move to audout_u impl.bunnei2018-07-311-2/+0
| | | | - This is necessary so streams are created on the same thread.
* core: Add AudioCore to global state.bunnei2018-07-281-0/+2
|
* Implement exclusive monitorMerryMage2018-07-221-1/+2
|
* Merge pull request #687 from lioncash/instancebunnei2018-07-191-1/+3
|\ | | | | core: Don't construct instance of Core::System, just to access its live instance
| * core: Make System's default constructor privateLioncash2018-07-191-0/+2
| | | | | | | | | | | | This makes it a compilation error to construct additional instances of the System class directly, preventing accidental wasteful constructions over and over.
| * core: Don't construct instance of Core::System, just to access its live instanceLioncash2018-07-191-1/+1
| | | | | | | | | | | | | | | | | | This would result in a lot of allocations and related object construction, just to toss it all away immediately after the call. These are definitely not intentional, and it was intended that all of these should have been accessing the static function GetInstance() through the name itself, not constructed instances.
* | Virtual Filesystem 2: Electric Boogaloo (#676)Zach Hilman2018-07-191-1/+2
|/ | | | | | | | | | * Virtual Filesystem * Fix delete bug and documentate * Review fixes + other stuff * Fix puyo regression
* Revert "Virtual Filesystem (#597)"bunnei2018-07-081-2/+1
| | | | This reverts commit 77c684c1140f6bf3fb7d4560d06d2efb1a2ee5e2.
* Virtual Filesystem (#597)Zach Hilman2018-07-061-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-2/+2
|
* Rename logging macro back to LOG_*James Rowe2018-07-031-7/+7
|
* core: Run all CPU cores separately, even in single-thread mode.bunnei2018-05-111-6/+20
|
* threading: Reschedule only on cores that are necessary.bunnei2018-05-111-0/+5
|
* core: Add a configuration setting for use_multi_core.bunnei2018-05-111-6/+26
|
* core: Support session close with multicore.bunnei2018-05-111-4/+11
|
* core: Create a thread for each CPU core, keep in lock-step with a barrier.bunnei2018-05-111-5/+25
|
* core: Move common CPU core things to its own class.bunnei2018-05-111-48/+9
|
* core: Replace remaining old non-generic logger usages with fmt-capable equivalentsLioncash2018-04-261-11/+11
| | | | | | LOG_GENERIC usages will be amended in a follow-up to keep API changes separate from interface changes, as it will require removing a parameter from the relevant function in the VMManager class.
* core: Relocate g_service_manager to the System classLioncash2018-04-211-6/+22
| | | | | Converts the service manager from a global into an instance-based variable.
* core, main.h: Abort on 32Bit ROMs (#309)N00byKing2018-04-061-0/+4
| | | | | | * core, main.h: Abort on 32Bit ROMs * main.cpp: Fix Grammar
* config: Use simplified checkbox (from Citra) for CPU JIT.bunnei2018-03-271-7/+3
|
* Clang FixesN00byKing2018-03-191-1/+2
|
* More Warning cleanupsN00byKing2018-03-191-1/+1
|
* Clean Warnings (?)N00byKing2018-03-191-1/+1
|
* Merge pull request #193 from N00byKing/3184_2_robotic_boogaloobunnei2018-03-191-4/+8
|\ | | | | Implement Pull #3184 from citra: core/arm: Improve timing accuracy before service calls in JIT (Rebased)
| * Implements citra-emu/citra#3184N00byKing2018-02-251-4/+8
| |
* | core: Move process creation out of global state.bunnei2018-03-141-1/+3
| |
* | core: Fix scheduler-shutdown related crashMerryMage2018-02-211-5/+9
| |
* | scheduler: Cleanup based on PR feedback.bunnei2018-02-191-1/+1
| |
* | kernel: Use Scheduler class for threading.bunnei2018-02-181-1/+2
| |
* | core: Use shared_ptr for cpu_core.bunnei2018-02-181-3/+3
|/
* Make a GPU class in VideoCore to contain the GPU state.Subv2018-02-121-0/+2
| | | | Also moved the GPU MemoryManager class to video_core since it makes more sense for it to be there.
* Merge pull request #72 from N00byKing/patch-2bunnei2018-01-211-1/+0
|\ | | | | Implement Pull #3275 from citra: core: Don't Shutdown before we've even Init-ed
| * Update core.cppN00byKing2018-01-171-1/+0
| |
* | Port citra #3352 to yuzu (#103)River City Ransomware2018-01-201-0/+7
|/ | | | | | | | | | * Port citra #3352 to yuzu This change allows non x86_64 architectures to compile yuzu by skipping the building of dynarmic * Fixed clang-format errors * fixes more clang-format errors
* Remove gpu debugger and get yuzu qt to compileJames Rowe2018-01-131-8/+0
|
* configuration: Add cpu_core configuration optionMerryMage2018-01-121-2/+10
|
* arm_dynarmic: Implement coreMerryMage2018-01-121-1/+3
|
* CoreTiming: Reworked CoreTiming (cherry-picked from Citra #3119)B3n302018-01-091-0/+1
| | | | * CoreTiming: New CoreTiming; Add Test for CoreTiming
* unicorn: Use for arm interface on Windows.bunnei2018-01-041-8/+1
|
* arm: Remove SkyEye/Dyncom code that is ARMv6-only.bunnei2018-01-031-3/+2
|
* logging: Rename category "Core_ARM11" to "Core_ARM".bunnei2017-10-231-1/+1
|
* Merge remote-tracking branch 'upstream/master' into nxbunnei2017-10-101-3/+9
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # 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
| * Loaders: Don't automatically set the current process every time we load an application.Subv2017-09-271-2/+4
| | | | | | | | 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.
| * Kernel/Memory: Give each Process its own page table.Subv2017-09-101-1/+0
| | | | | | | | 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/+5
|/ | | | | * Network: Set and send the game information over enet Added Callbacks for RoomMember and GetMemberList to Room in preparation for web_services.
* telemetry: Log performance, configuration, and system data.bunnei2017-07-181-0/+10
|
* Addressed Bunnei's review comments, and made some other tweaks:TheKoopaKingdom2017-06-031-6/+5
| | | | | - 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-031-4/+2
|
* Made some changes from review comments:TheKoopaKingdom2017-06-031-9/+13
| | | | | | | | - 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.
* Added system for handling core errors in citra-qt.TheKoopaKingdom2017-06-031-6/+18
|
* core: Keep track of telemetry for the current emulation session.bunnei2017-05-251-0/+3
|
* Kernel: Map special regions according to ExHeaderYuri Kunde Schlesner2017-05-101-2/+3
| | | | | | | This replaces the hardcoded VRAM/DSP mappings with ones made based on the ExHeader ARM11 Kernel caps list. While this has no visible effect for most applications (since they use a standard set of mappings) it does improve support for system modules and n3DS exclusives.
* Core: Make PerfStats internally lockedYuri Kunde Schlesner2017-02-271-3/+2
| | | | More ergonomic to use and will be required for upcoming changes.
* Add performance statistics to status barYuri Kunde Schlesner2017-02-271-0/+9
|
* core: Free AppLoader on shutdown to release file (#2558)Yuri Kunde Schlesner2017-02-111-9/+2
| | | Fixes #2455
* Core: reset cpu_core in Shutdown to make IsPoweredOn work properlywwylele2016-12-241-0/+1
|
* core: Replace "AppCore" nomenclature with just "CPU".bunnei2016-12-221-7/+7
|
* Address clang-format issues.bunnei2016-12-221-3/+3
|
* core: Remove HLE module, consolidate code & various cleanups.bunnei2016-12-221-7/+19
|
* core: Consolidate core and system state, remove system module & cleanups.bunnei2016-12-221-25/+87
|
* gdbstub: Remove global variable from public interfaceLioncash2016-12-151-1/+1
| | | | | | | | | Currently, this is only ever queried, so adding a function to check if the server is enabled is more sensible. If directly modifying this externally is ever desirable, it should be done by adding a function to the interface, rather than exposing implementation details directly.
* Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner2016-09-211-1/+1
|
* Remove empty newlines in #include blocks.Emmanuel Gil Peyrot2016-09-211-3/+1
| | | | | | | 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-191-2/+1
|
* Sources: Run clang-format on everything.Emmanuel Gil Peyrot2016-09-181-2/+3
|
* core: Add configuration option for CPU JIT.bunnei2016-09-151-7/+12
|
* Merge pull request #1762 from bunnei/globalbunnei2016-05-061-1/+1
|\ | | | | hle: Get rid of direct global access to g_reschedule
| * HLE: Rename RescheduleIsPending to IsReschedulePending.bunnei2016-05-061-1/+1
| |
| * hle: Get rid of global access to g_rescheduleLioncash2016-03-211-1/+1
| | | | | | | | | | This shouldn't be directly exposed if there's already a partial API that operates on it. We can just provide the rest of that API.
* | Common: Remove Common::make_unique, use std::make_uniqueMerryMage2016-04-051-3/+2
|/
* Improve error report from Init() functionsLittleWhite2016-03-081-2/+1
| | | | Add error popup when citra initialization failed
* core: Use unique_ptr for holding the interpreter instancesLioncash2015-12-301-6/+9
|
* Implement gdbstubpolaris-2015-10-041-0/+17
|
* Core: Cleanup core includes.Emmanuel Gil Peyrot2015-06-281-3/+0
|
* Memmap: Re-organize memory function in two filesYuri Kunde Schlesner2015-05-151-1/+0
| | | | | | | 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.
* Thread: Remove the idle threadYuri Kunde Schlesner2015-05-121-2/+2
| | | | Instead just use nullptr to represent no thread is active.
* Core/Memory: Give every emulated thread it's own TLS area.Subv2015-05-111-4/+0
| | | | | The TLS area for thread T with id Ti is located at TLS_AREA_VADDR + (Ti - 1) * 0x200. This allows some games like Mario Kart 7 to continue further.
* Memory: Re-organize and rename memory area address constantsYuri Kunde Schlesner2015-05-091-1/+1
|
* Common: Remove common.hYuri Kunde Schlesner2015-05-071-0/+1
|
* core: Migrate 3DS-specific CP15 register setting into InitLioncash2015-04-061-0/+5
|
* dyncom: Switch the app and system cores into the correct mode at initializationLioncash2015-02-131-5/+4
|
* arm: Adios armemuLioncash2015-02-011-12/+2
|
* Thread: Reduce use of Handles and move some funcs to inside the class.Yuri Kunde Schlesner2015-01-091-1/+1
|
* Move ThreadContext to core/core.h and deal with the falloutYuri Kunde Schlesner2015-01-091-0/+1
|
* Core: Fixed a crash and removed some unused variables.Subv2015-01-091-6/+0
| | | | ARM_Disasm only has static methods, so there's no need to have an instance of it.
* Threads: Use a dummy idle thread when no other are ready.Subv2015-01-081-1/+12
| | | | This thread will not actually execute instructions, it will only advance the timing/events and try to yield immediately to the next ready thread, if there aren't any ready threads then it will be rescheduled and start its job again.
* Core: Change default CPU to dyncom.bunnei2015-01-031-2/+2
|
* License changepurpasmart962014-12-211-1/+1
|
* Convert old logging calls to new logging macrosYuri Kunde Schlesner2014-12-131-2/+2
|
* Add static to some variablesLioncash2014-11-191-7/+7
|
* Use configuration files to enable or disable the new dyncom interpreter.archshift2014-10-281-3/+14
|
* core: Prune redundant includesarchshift2014-09-091-6/+0
|
* Core: Refactor core to use only one function for execution.bunnei2014-08-311-18/+8
| | | | | | Core: Cleaned up comment to be more readable. Citra: Changed loop to be more readable.
* GSP: Implements preliminary command synchronization via GPU interrupts.bunnei2014-08-061-8/+12
| | | | Core: Added a comment to explain the logic for the RunLoop iterations.
* Merge branch 'threading' of https://github.com/bunnei/citrabunnei2014-06-141-6/+17
|\ | | | | | | | | | | Conflicts: src/core/hle/function_wrappers.h src/core/hle/service/gsp.cpp
| * HLE: Updated all uses of NULL to nullptr (to be C++11 compliant)bunnei2014-06-131-4/+4
| |
| * Core: Cleaned up SingleStep(), updated default LCD refresh to assume each instruction is ~3 cyclesbunnei2014-06-131-11/+12
| |
| * Core: Changed HW update/thread reschedule to occur more frequently (assume each instruction is ~3 cycles)bunnei2014-06-131-2/+2
| |
| * hle: added a hokey way to force a thread reschedule during CPU single step mode (as used by the debugger)bunnei2014-06-051-1/+2
| |
| * core: changed time delay before kernel reschedule to "approximate" a screen refreshbunnei2014-05-301-3/+12
|/
* core: added Kernel::Reschedule() call to check for thread changes, shortened delay time to 100 instructionsbunnei2014-05-231-1/+6
|
* updated how we call ARM core to make things much fasterbunnei2014-05-171-3/+6
|
* cleaned up some logging messagesbunnei2014-04-111-20/+2
|
* added initial modules for setting up SysCall HLEbunnei2014-04-111-0/+18
|
* fixed project includes to use new directory structurebunnei2014-04-091-6/+8
|
* got rid of 'src' folders in each sub-projectbunnei2014-04-091-0/+58