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,
|
|
|
|
};
|
|
|
|
|
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);
|
2012-06-27 22:01:37 +02:00
|
|
|
static u8 GetMIOSInfo();
|
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
|