dolphin/Source/Core/Core
Lioncash 142406f337 Core: Add initial System class
Introduces the system class that will eventually contain all relevant
system state, as opposed to everything being distributed all over the
place as global variables.

Throughout the codebase we have code that from its interface-view, does
not actually require its dependencies to be described in the interface,
and we routinely run into issues with initialization where we sometimes
make use of a facility before it's been initialized, which leads to
annoying to debug cases, because the reader needs to run through the
codebase and see what order things get initialized in, and how they're
being used. This is particularly a frequent issue in the video code.

Further, we also have a lot of code that makes use of file-scope
variables (many of which are non-trivial), which must all be default
initialized before the application can actually enter main(). While this
may not be a huge issue in itself, some of these are allocating, which
means that the application may need to use memory that it otherwise
wouldn't need to (e.g. when a game isn't running, this excess memory is
being used).

Being able to wrap all these subsystems into objects would be nicer,
since they can be constructed when they're actually needed. Them being
objects also means we can better express dependencies on subsystems as
types directly in the interface, making them explicit to the reader
instead of a change randomly blowing up, said reader inspecting it, and finding
out that something needed to be initialized beforehand. With the global
turned into a function parameter, the dependency is explicit and they
know just by reading it, that the given subsystem needs to be in a valid
state before calling the function.

For a prior example of an emulator that has moved to this model, see
yuzu, which has been migrated off of global variables all over the place
and replaced with a system instance (which has now reached the stage,
where the singleton can be removed).
2020-12-19 23:22:06 -05:00
..
Boot Core: Convert missed log calls over to fmt 2020-11-23 12:20:02 -05:00
Config Store pointers in Config::SYSCONF_SETTINGS 2020-12-11 19:54:16 +01:00
ConfigLoaders Store pointers in Config::SYSCONF_SETTINGS 2020-12-11 19:54:16 +01:00
Debugger Core: Convert logging over to fmt pt. 1 2020-11-19 14:21:06 -05:00
DSP DSP: Fix one DEBUG_LOG call 2020-11-20 16:21:05 +01:00
FifoPlayer Core: Convert logging over to fmt pt.2 2020-11-20 10:05:44 -05:00
HLE Core: Convert logging over to fmt pt.2 2020-11-20 10:05:44 -05:00
HW Merge pull request #9330 from leoetlino/tapserver-define 2020-12-19 21:46:01 -05:00
IOS Add NetBSD support 2020-12-15 02:34:25 +01:00
PowerPC Merge pull request #9293 from JosJuice/jitarm64-stack-pointer 2020-12-08 07:56:30 +01:00
ActionReplay.cpp Core: Don't copy default _Enabled sections to user INIs 2020-12-11 15:38:11 +01:00
ActionReplay.h Core: Save the disabling of default enabled codes 2020-12-11 10:08:20 +01:00
Analytics.cpp Merge pull request #8976 from JosJuice/port-some-settings 2020-09-07 22:37:46 -04:00
Analytics.h
ARDecrypt.cpp Core: Convert missed log calls over to fmt 2020-11-23 12:20:02 -05:00
ARDecrypt.h
BootManager.cpp Store pointers in Config::SYSCONF_SETTINGS 2020-12-11 19:54:16 +01:00
BootManager.h
CheatCodes.h Core: Allow overriding the enabling of a code 2020-12-11 10:02:14 +01:00
CMakeLists.txt Core: Add initial System class 2020-12-19 23:22:06 -05:00
CommonTitles.h
ConfigManager.cpp Add Fallback Region to configuration menu 2020-11-28 15:40:21 -05:00
ConfigManager.h Android: Don't show game ID after game title 2020-10-21 20:02:52 +02:00
Core.cpp Core: Convert logging over to fmt pt. 1 2020-11-19 14:21:06 -05:00
Core.h Android: Fix rotating EmulationActivity after boot fails 2020-11-09 10:38:49 +01:00
Core.vcxproj Core: Add initial System class 2020-12-19 23:22:06 -05:00
Core.vcxproj.filters Core: Add initial System class 2020-12-19 23:22:06 -05:00
CoreTiming.cpp Core: Convert logging over to fmt pt. 1 2020-11-19 14:21:06 -05:00
CoreTiming.h
DSPEmulator.cpp
DSPEmulator.h
GeckoCode.cpp Core: Convert logging over to fmt pt. 1 2020-11-19 14:21:06 -05:00
GeckoCode.h Core: Save the disabling of default enabled codes 2020-12-11 10:08:20 +01:00
GeckoCodeConfig.cpp Core: Don't copy default _Enabled sections to user INIs 2020-12-11 15:38:11 +01:00
GeckoCodeConfig.h
Host.h
HotkeyManager.cpp Add a Skip EFB Access from CPU Hotkey 2020-10-29 21:03:06 -03:00
HotkeyManager.h Add a Skip EFB Access from CPU Hotkey 2020-10-29 21:03:06 -03:00
LibusbUtils.cpp
LibusbUtils.h
MachineContext.h Add support for FreeBSD/arm64 2020-08-27 21:54:04 +01:00
MemoryWatcher.cpp MemoryWatcher: Do not follow invalid pointers 2020-08-30 10:29:40 +02:00
MemoryWatcher.h
MemTools.cpp Add NetBSD support 2020-12-15 02:34:25 +01:00
MemTools.h
Movie.cpp Movie: Fix 83b9fef regressions 2020-11-28 23:35:55 +01:00
Movie.h Movie: Fix 83b9fef regressions 2020-11-28 23:35:55 +01:00
NetPlayClient.cpp Core: Allow overriding the enabling of a code 2020-12-11 10:02:14 +01:00
NetPlayClient.h Core/NetPlay: Fix Wii Remote syncing. 2020-09-27 13:10:19 -05:00
NetPlayProto.h Core/NetPlay: Fix Wii Remote syncing. 2020-09-27 13:10:19 -05:00
NetPlayServer.cpp Core: Convert missed log calls over to fmt 2020-11-23 12:20:02 -05:00
NetPlayServer.h
PatchEngine.cpp Core: Save the disabling of default enabled codes 2020-12-11 10:08:20 +01:00
PatchEngine.h Core: Save the disabling of default enabled codes 2020-12-11 10:08:20 +01:00
State.cpp Core: Convert logging over to fmt pt. 1 2020-11-19 14:21:06 -05:00
State.h Android: Show how long ago each savestate was created 2020-10-21 22:49:59 +02:00
SyncIdentifier.h
SysConf.cpp Core: Convert logging over to fmt pt. 1 2020-11-19 14:21:06 -05:00
SysConf.h
System.cpp Core: Add initial System class 2020-12-19 23:22:06 -05:00
System.h Core: Add initial System class 2020-12-19 23:22:06 -05:00
TitleDatabase.cpp
TitleDatabase.h
WiiRoot.cpp Core: Convert logging over to fmt pt. 1 2020-11-19 14:21:06 -05:00
WiiRoot.h
WiiUtils.cpp WiiUtils: Check hashes to determine if a title is installed and up-to-date 2020-12-06 01:53:55 +01:00
WiiUtils.h