dolphin/Source/Core/Core/HW
Léo Lam fdfe57a49b IOS: Implement MIOS functionality
This implements MIOS's PPC bootstrapping functionality, which enables
users to start a GameCube game from the Wii System Menu.

Because we aren't doing Starlet LLE (and don't have a boot1), we can
just jump to MIOS when the emulated software does an ES_LAUNCH or uses
ioctlv 0x25 to launch BC.

Note that the process is more complex on a real Wii and goes through
several more steps before getting to MIOS:

* The System Menu detects a GameCube disc and launches BC (1-100)
  instead of the game. [Dolphin does this too.]

* BC, which is reportedly very similar to boot1, lowers the Hollywood
  clock speed to the Flipper's and then launches boot2.

* boot2 sees the lowered clock speed and launches MIOS (1-101) instead
  of the System Menu.

MIOS runs instead of IOS in GC mode and has an embedded GC IPL (which
is the code actually responsible for loading the disc game) and a PPC
bootstrap code. To get things working properly, we simply need to load
both to memory, then jump to the bootstrap code at 0x3400.

Obviously, because of the way this works, a real MIOS is required.
2017-02-08 15:07:34 +01:00
..
DSPHLE UCodes: Eliminate unnecessary includes in header 2017-02-07 15:08:57 -05:00
DSPLLE IOS: Implement MIOS functionality 2017-02-08 15:07:34 +01:00
EXI IOS: Implement MIOS functionality 2017-02-08 15:07:34 +01:00
SI SI_Device: Remove const specifiers from SIDevice_Create declaration's parameters 2017-01-22 22:34:23 -05:00
WiimoteEmu ControllerEmu: Move into its own directory 2017-02-07 22:12:06 -05:00
WiimoteReal No longer need to //clang-format off for Windows headers 2017-01-23 16:23:37 -08: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 PowerPC: Convert CoreMode enum into an enum class 2017-02-04 19:34:56 -05:00
CPU.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
DSP.cpp IOS: Implement MIOS functionality 2017-02-08 15:07:34 +01:00
DSP.h IOS: Implement MIOS functionality 2017-02-08 15:07:34 +01:00
DVDInterface.cpp IOS: Implement MIOS functionality 2017-02-08 15:07:34 +01:00
DVDInterface.h IOS: Implement MIOS functionality 2017-02-08 15:07:34 +01:00
DVDThread.cpp DVDThread: Remove s_dvd_thread_done_working and fix race condition 2016-10-15 15:28:15 +02:00
DVDThread.h DVDInterface: Prepare for reading DTK data in DVDThread 2016-10-15 15:27:54 +02:00
GCKeyboard.cpp Add the ability to get partial input group 2016-11-25 02:37:22 -05:00
GCKeyboard.h ControllerEmu: Move into its own directory 2017-02-07 22:12:06 -05:00
GCKeyboardEmu.cpp ControllerEmu: Move into its own directory 2017-02-07 22:12:06 -05:00
GCKeyboardEmu.h ControllerEmu: Move into its own directory 2017-02-07 22:12:06 -05:00
GCMemcard.cpp ColorUtil: Make decodeCI8image's pal parameter const 2017-01-13 17:07:26 -05:00
GCMemcard.h Core: Move EXI source files to their own directory 2017-01-20 16:06:35 -05:00
GCMemcardDirectory.cpp GCMemcard: Const-correctness changes 2017-01-12 20:01:19 -05:00
GCMemcardDirectory.h GCMemcard: Const-correctness changes 2017-01-12 20:01:19 -05:00
GCMemcardRaw.cpp GCMemcard: Const-correctness changes 2017-01-12 20:01:19 -05:00
GCMemcardRaw.h GCMemcard: Const-correctness changes 2017-01-12 20:01:19 -05:00
GCPad.cpp Add the ability to get partial input group 2016-11-25 02:37:22 -05:00
GCPad.h ControllerEmu: Move into its own directory 2017-02-07 22:12:06 -05:00
GCPadEmu.cpp Moved the Mic button of the GCPad to its own group. 2016-12-05 18:09:23 -05:00
GCPadEmu.h ControllerEmu: Move into its own directory 2017-02-07 22:12:06 -05:00
GPFifo.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
GPFifo.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
HW.cpp IOS: Implement MIOS functionality 2017-02-08 15:07:34 +01:00
HW.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Memmap.cpp Core: Move SI source files to their own directory 2017-01-20 19:33:24 -05:00
Memmap.h Memmap: Drop redundant global bFakeVMEM flag. 2016-10-03 10:15:52 +02: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 Only allow reset/power when core is running 2017-01-19 22:08:13 +01:00
ProcessorInterface.h Shut down Wii software gracefully 2016-10-01 13:06:04 +02:00
Sram.cpp Sram: Make SRAM dumps const 2017-01-30 17:44:03 -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: Implement MIOS functionality 2017-02-08 15:07:34 +01:00
SystemTimers.h IOS: Implement MIOS functionality 2017-02-08 15:07:34 +01:00
VideoInterface.cpp VideoBackendBase: Convert FieldType into an enum class 2017-01-23 03:54:01 -05:00
VideoInterface.h Merge pull request #4544 from JosJuice/region-enum 2017-01-13 09:19:27 +13:00
WII_IPC.cpp IOS: Reorganise the source files and IPC_HLE→IOS 2017-01-18 20:43:10 +01:00
WII_IPC.h IPC_HLE: Namespace IOS HLE 2017-01-17 20:46:58 -05:00
Wiimote.cpp Add the ability to get partial input group 2016-11-25 02:37:22 -05:00
Wiimote.h ControllerEmu: Move into its own directory 2017-02-07 22:12:06 -05:00
WiiSaveCrypted.cpp WiiSave: Fixes vector assertions 2016-12-18 19:44:00 +00:00
WiiSaveCrypted.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00