2010-09-24 15:46:32 +02:00
|
|
|
#ifndef _IOSLOADER_H_
|
|
|
|
#define _IOSLOADER_H_
|
|
|
|
|
2010-11-07 13:16:34 +01:00
|
|
|
#include <gccore.h>
|
2012-05-06 12:59:58 +02:00
|
|
|
#include <ogc/machine/processor.h>
|
|
|
|
|
|
|
|
#define CheckAHBPROT() (read32(0x0D800064) == 0xFFFFFFFF)
|
2010-09-24 15:46:32 +02:00
|
|
|
|
2012-06-27 22:01:37 +02:00
|
|
|
enum MiosInfo
|
|
|
|
{
|
|
|
|
DEFAULT_MIOS,
|
|
|
|
DIOS_MIOS,
|
|
|
|
DIOS_MIOS_LITE,
|
|
|
|
QUADFORCE,
|
2013-05-26 14:34:21 +02:00
|
|
|
QUADFORCE_USB,
|
2012-06-27 22:01:37 +02:00
|
|
|
};
|
|
|
|
|
2012-08-24 18:55:49 +02:00
|
|
|
enum DMLVersions
|
|
|
|
{
|
|
|
|
DML_VERSION_MIOS = 0,
|
|
|
|
DML_VERSION_R51,
|
|
|
|
DML_VERSION_R52,
|
|
|
|
// DML_VERSION_DML_1_0,
|
|
|
|
// DML_VERSION_DML_1_1,
|
|
|
|
DML_VERSION_QUAD_0_1, // Feb 15 2012 13:19:36 wrong built date.
|
|
|
|
DML_VERSION_DML_1_2, // Apr 24 2012 19:44:08
|
|
|
|
// DML_VERSION_DML_1_3, // Apr 26 2012
|
|
|
|
DML_VERSION_DML_1_4,
|
|
|
|
DML_VERSION_DML_1_4b, // May 7 2012 21:12:47
|
|
|
|
// DML_VERSION_QUAD_0_1 // Jun 9 2012 23:13:16 correct built date.
|
|
|
|
DML_VERSION_DML_1_5, // Jun 14 2012 00:05:09
|
|
|
|
DML_VERSION_DM_2_0, // Jun 23 2012 19:43:21
|
|
|
|
// DML_VERSION_DM_2_0_1,
|
|
|
|
// DML_VERSION_DM_2_0_2,
|
|
|
|
// DML_VERSION_DM_2_0_3,
|
|
|
|
// DML_VERSION_DM_2_0_3b,
|
|
|
|
// DML_VERSION_DM_2_0_3c,
|
|
|
|
// DML_VERSION_DM_2_0_3d,
|
|
|
|
// DML_VERSION_DM_2_0_4,
|
|
|
|
// DML_VERSION_DM_2_0_5,
|
|
|
|
DML_VERSION_DM_2_1, // Jul 17 2012 11:25:35
|
|
|
|
DML_VERSION_DM_2_2, // Jul 18 2012 16:57:47
|
|
|
|
// DML_VERSION_DM_2_2_1,
|
|
|
|
DML_VERSION_DM_2_2_2, // Jul 20 2012 14:49:47
|
|
|
|
DML_VERSION_DML_2_2, // Aug 6 2012 15:19:17
|
|
|
|
DML_VERSION_DML_2_2_1, // Aug 13 2012 00:12:46
|
2012-10-14 18:27:01 +02:00
|
|
|
DML_VERSION_DML_2_3m, // Sep 24 2012 13:13:42 (mirror link)
|
|
|
|
DML_VERSION_DM_2_3, // Sep 24 2012 15:51:54 (Main link and Mirror link)
|
|
|
|
DML_VERSION_DML_2_3, // Sep 25 2012 03:03:41 (main link)
|
2012-11-11 14:47:02 +01:00
|
|
|
DML_VERSION_DM_2_4, // Oct 21 2012 22:57:12
|
|
|
|
DML_VERSION_DML_2_4, // Oct 21 2012 22:57:17
|
|
|
|
DML_VERSION_DM_2_5, // Nov 9 2012 21:18:52
|
|
|
|
DML_VERSION_DML_2_5, // Nov 9 2012 21:18:56
|
2012-12-09 20:44:12 +01:00
|
|
|
DML_VERSION_DM_2_6_0, // Dec 1 2012 01:52:53
|
|
|
|
DML_VERSION_DML_2_6, // Dec 1 2012 16:22:29
|
|
|
|
DML_VERSION_DM_2_6_1, // Dec 1 2012 16:42:34
|
2013-03-17 14:48:15 +01:00
|
|
|
DML_VERSION_DM_2_7, // Feb 20 2013 14:54:33
|
|
|
|
DML_VERSION_DML_2_7, // Feb 21 2013 03:13:49
|
|
|
|
DML_VERSION_DML_2_8, // Feb 24 2013 13:30:29
|
2013-04-14 23:02:09 +02:00
|
|
|
DML_VERSION_DM_2_8, // Feb 24 2013 14:17:03
|
|
|
|
DML_VERSION_DML_2_9, // Apr 5 2013 18:20:33
|
|
|
|
DML_VERSION_DM_2_9, // Apr 5 2013 18:29:35
|
2013-04-30 19:40:17 +02:00
|
|
|
DML_VERSION_QUAD_2_0, // Apr 30 2013 17:31:32
|
2013-05-26 14:34:21 +02:00
|
|
|
DML_VERSION_QUAD_3_0, // May 8 2013 22:21:44
|
|
|
|
DML_VERSION_QUAD_4_0, // May 12 2013 20:22:57
|
* Improved GameCube controller functions (patch by Dynamit)
R+Z=Screenshot, X=Gameinfo window, Y=Covers download
* Added Classic Controller and GameCube Controller support
in GameInfo window:
Right stick=3D Cover movement, X=Flip 3DCover 180°, L/R=Zoom
* Added Wifi6 and wifi10 pictures for GameInfo window.
(Thanks OriginalHamster)
* Added device priority selection for GameCube listing
in global Loader settings (SD->USB, or USB->SD)
* Added a "Use global" language setting for Gamecube games.
* Added support for USB devices with modified MBR's signature
to prevent WiiU's format message.
* Prevent Rockband cursor display on GameCube and WiiWare
games with "band" in the title (Crach bandicoot, Beach
Bandits, etc.)
* Added Dol's Video mode patcher in Loader/Game settings,
for games which couldn't be forced. (MadWorld, MotoGP08,
Mario Party 8, etc.)
♦ Region patch = Patches the dol's known video modes
to the region selected in "Video mode" setting,
but keep interlace/progressive references.
♦ ON = Patch all dol's known video modes to the one
selected in "Video mode" setting.
♦ ALL = Patch all dol's found video mode patterns
(even unknown video modes) to the one selected
in "Video mode" setting.
* DML: Updated DM(L) version detection up to v2.10
* DML: Automatically enable PADHook if Screenshot setting
is enabled
* DML: Fixed a bug where multiple video modes could be set
at the same time
* DEVO: Added a prompt if trying to launch a game from a
non FAT32 partition.
* DEVO: Added Direct Mapping Buttons setting (Devo r200+)
* DEVO: Added support for Language setting
* Language files updated: Chinese, French
2013-08-18 16:30:39 +02:00
|
|
|
DML_VERSION_DML_2_10, // May 24 2013 18:51:58
|
|
|
|
DML_VERSION_DM_2_10, // May 24 2013 21:22:22
|
2013-05-26 14:34:21 +02:00
|
|
|
DML_VERSION_QUAD_4_1, // May 26 2013 ??:??:?? (USB)
|
2012-08-24 18:55:49 +02:00
|
|
|
DML_VERSION_MAX_VERSION,
|
|
|
|
};
|
|
|
|
|
2011-06-04 18:29:08 +02:00
|
|
|
typedef struct _iosinfo_t
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
u32 magicword; //0x1ee7c105
|
|
|
|
u32 magicversion; // 1
|
|
|
|
u32 version; // Example: 5
|
|
|
|
u32 baseios; // Example: 56
|
|
|
|
char name[0x10]; // Example: d2x
|
2011-06-04 18:29:08 +02:00
|
|
|
char versionstring[0x10]; // Example: beta2
|
|
|
|
} __attribute__((packed)) iosinfo_t;
|
|
|
|
|
2010-09-24 15:46:32 +02:00
|
|
|
class IosLoader
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
public:
|
|
|
|
static s32 LoadAppCios();
|
|
|
|
static s32 LoadGameCios(s32 ios);
|
|
|
|
static s32 ReloadIosSafe(s32 ios);
|
2012-01-08 19:24:46 +01:00
|
|
|
static s32 ReloadIosKeepingRights(s32 ios);
|
2011-07-26 00:28:22 +02:00
|
|
|
static bool IsHermesIOS(s32 ios = IOS_GetVersion());
|
|
|
|
static bool IsWaninkokoIOS(s32 ios = IOS_GetVersion());
|
|
|
|
static bool IsD2X(s32 ios = IOS_GetVersion());
|
|
|
|
static iosinfo_t *GetIOSInfo(s32 ios);
|
2013-10-01 23:13:08 +02:00
|
|
|
static u8 GetMIOSInfo();
|
2012-08-24 18:55:49 +02:00
|
|
|
static u8 GetDMLVersion(char* releaseDate = NULL);
|
2013-01-06 14:41:22 +01:00
|
|
|
static bool is_NandEmu_compatible(const char *NandEmuPath, s32 ios = IOS_GetVersion());
|
2013-10-01 23:13:08 +02:00
|
|
|
static bool isWiiU();
|
2011-07-26 00:28:22 +02:00
|
|
|
private:
|
|
|
|
static void LoadIOSModules(s32 ios, s32 ios_rev);
|
2010-09-24 15:46:32 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|