usbloadergx/source/system/IosLoader.h
Cyan 5bf3ea6075 * Added DM(L) version detection and removed user setting.
* Added a setting for DML Japanese Patch
* Hide DML individual game settings if DM(L) is not installed
  or is not the correct version.
* Fixed device selection when using USB with devolution
* Fixed Devolution's launching and game region detection 
  (Fix lag and wrong colors. Thanks to testers)
* Prevent Playcount increasing if the game couldn't launch
2012-08-24 16:55:49 +00:00

77 lines
2.0 KiB
C++

#ifndef _IOSLOADER_H_
#define _IOSLOADER_H_
#include <gccore.h>
#include <ogc/machine/processor.h>
#define CheckAHBPROT() (read32(0x0D800064) == 0xFFFFFFFF)
enum MiosInfo
{
DEFAULT_MIOS,
DIOS_MIOS,
DIOS_MIOS_LITE,
QUADFORCE,
};
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
DML_VERSION_MAX_VERSION,
};
typedef struct _iosinfo_t
{
u32 magicword; //0x1ee7c105
u32 magicversion; // 1
u32 version; // Example: 5
u32 baseios; // Example: 56
char name[0x10]; // Example: d2x
char versionstring[0x10]; // Example: beta2
} __attribute__((packed)) iosinfo_t;
class IosLoader
{
public:
static s32 LoadAppCios();
static s32 LoadGameCios(s32 ios);
static s32 ReloadIosSafe(s32 ios);
static s32 ReloadIosKeepingRights(s32 ios);
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);
static u8 GetMIOSInfo();
static u8 GetDMLVersion(char* releaseDate = NULL);
private:
static void LoadIOSModules(s32 ios, s32 ios_rev);
};
#endif