dolphin/Source/Core/Core/HW
Léo Lam 22992ae41e Boot: Clean up the boot code
* Move out boot parameters to a separate struct, which is not part
  of SConfig/ConfigManager because there is no reason for it to
  be there.

* Move out file name parsing and constructing the appropriate params
  from paths to a separate function that does that, and only that.

* For every different boot type we support, add a proper struct with
  only the required parameters, with descriptive names and use
  std::variant to only store what we need.

* Clean up the bHLE_BS2 stuff which made no sense sometimes. Now
  instead of using bHLE_BS2 for two different things, both for storing
  the user config setting and as a runtime boot parameter,
  we simply replace the Disc boot params with BootParameters::IPL.

* Const correctness so it's clear what can or cannot update the config.

* Drop unused parameters and unneeded checks.

* Make a few checks a lot more concise. (Looking at you, extension
  checks for disc images.)

* Remove a mildly terrible workaround where we needed to pass an empty
  string in order to boot the GC IPL without any game inserted.
  (Not required anymore thanks to std::variant and std::optional.)

The motivation for this are multiple: cleaning up and being able to add
support for booting an installed NAND title. Without this change, it'd
be pretty much impossible to implement that.

Also, using std::visit with std::variant makes the compiler do
additional type checks: now we're guaranteed that the boot code will
handle all boot types and no invalid boot type will be possible.
2017-06-06 16:27:52 +02:00
..
DSPHLE Merge pull request #5428 from ligfx/makedspdumpconsistent 2017-05-23 14:48:10 +02:00
DSPLLE DSP-LLE: calculate code CRC _before_ swapping endianness 2017-05-15 14:27:39 -07:00
DVD DiscIO: Remove C/I/S prefixes from class names 2017-06-06 12:31:59 +02:00
EXI Boot: Clean up the boot code 2017-06-06 16:27:52 +02:00
GCMemcard Fix display of Japanese text in the Memory Card Manager 2017-04-29 11:18:08 +02:00
SI SI_Devices: Get rid of pointer casts for ID assignment in RunBuffer 2017-04-08 16:36:14 -04:00
WiimoteCommon windows: make IORead return number of valid bytes according to ReportID 2017-06-06 01:21:30 -07:00
WiimoteEmu Fix UB string comparisons 2017-06-06 09:02:29 +02:00
WiimoteReal windows: make IORead return number of valid bytes according to ReportID 2017-06-06 01:21:30 -07:00
AudioInterface.cpp specify custom brace style to fix unions 2017-01-05 12:55:13 +01:00
AudioInterface.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
CPU.cpp Jit64: Use a temporary register for memory references. Part 1. 2017-04-12 20:53:17 +02:00
CPU.h Jit64: Use a temporary register for memory references. Part 1. 2017-04-12 20:53:17 +02:00
DSP.cpp AX-HLE: delay sending interrupt when done processing command list 2017-05-19 19:04:06 -07:00
DSP.h AX-HLE: delay sending interrupt when done processing command list 2017-05-19 19:04:06 -07:00
GCKeyboard.cpp ControllerEmu: Separate ControlGroup from ControllerEmu 2017-02-09 18:18:52 -05:00
GCKeyboard.h ControllerEmu: Separate ControlGroup from ControllerEmu 2017-02-09 18:18:52 -05:00
GCKeyboardEmu.cpp Move 'Background Input' to controller config dialog 2017-03-13 13:43:20 -07:00
GCKeyboardEmu.h ControllerEmu: Separate ControlGroup from ControllerEmu 2017-02-09 18:18:52 -05:00
GCPad.cpp ControllerEmu: Separate ControlGroup from ControllerEmu 2017-02-09 18:18:52 -05:00
GCPad.h ControllerEmu: Separate ControlGroup from ControllerEmu 2017-02-09 18:18:52 -05:00
GCPadEmu.cpp Fix UB string comparisons 2017-06-06 09:02:29 +02:00
GCPadEmu.h ControllerEmu: Separate ControlGroup from ControllerEmu 2017-02-09 18:18:52 -05:00
GPFifo.cpp GPFifo: Use a pointer instead of an index 2017-04-14 10:37:47 +01:00
GPFifo.h GPFifo: Use a pointer instead of an index 2017-04-14 10:37:47 +01:00
HW.cpp IOS: Allow instances that are not tied to emulation 2017-05-13 00:34:58 +02:00
HW.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Memmap.cpp Move DVD code to a new directory 2017-03-31 17:27:23 +02:00
Memmap.h Memmap: Remove unnecessary const on function declaration parameters 2017-03-06 14:08:07 -05:00
MemoryInterface.cpp specify custom brace style to fix unions 2017-01-05 12:55:13 +01:00
MemoryInterface.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
MMIO.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
MMIO.h MMIO: Get rid of a TODO regarding tuples 2017-01-27 02:54:07 -05:00
MMIOHandlers.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ProcessorInterface.cpp IOS: Convert the IOS kernel HLE code to a class 2017-04-30 17:18:53 +02:00
ProcessorInterface.h Shut down Wii software gracefully 2016-10-01 13:06:04 +02:00
Sram.cpp Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
Sram.h Sram: Make SRAM dumps const 2017-01-30 17:44:03 -05:00
StreamADPCM.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
StreamADPCM.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
SystemTimers.cpp IOS: Convert the IOS kernel HLE code to a class 2017-04-30 17:18:53 +02:00
SystemTimers.h IOS: Implement MIOS functionality 2017-02-08 15:07:34 +01:00
VideoInterface.cpp VideoInterface: Make clock frequency array constexpr 2017-03-26 19:30:44 -04:00
VideoInterface.h VideoInterface: Initialize union members directly where applicable 2017-03-26 18:42:09 -04:00
WII_IPC.cpp IOS: Convert the IOS kernel HLE code to a class 2017-04-30 17:18:53 +02:00
WII_IPC.h IPC_HLE: Namespace IOS HLE 2017-01-17 20:46:58 -05:00
Wiimote.cpp Drop remnants of the plugin system 2017-05-19 19:13:16 +02:00
Wiimote.h Drop remnants of the plugin system 2017-05-19 19:13:16 +02:00
WiiSaveCrypted.cpp Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
WiiSaveCrypted.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00