#ifndef _CFG_ #define _CFG_ #include "string.h" #include "global.h" #include "alloc.h" #include "vsprintf.h" #include "HW.h" #define EXI_BASE 0x0D806800 typedef struct GC_SRAM { /* 0x00 */ u16 CheckSum1; /* 0x02 */ u16 CheckSum2; /* 0x04 */ u32 ead0; /* 0x08 */ u32 ead1; /* 0x0C */ u32 CounterBias; /* 0x10 */ u8 DisplayOffsetH; /* 0x11 */ u8 BootMode; // Bit 6 PAL60 flag /* 0x12 */ u8 Language; /* 0x13 */ u8 Flags; /* bit desc 0 1 0 -\_ Video mode 1 -/ 2 Sound mode Mono Stereo 3 always 1 4 always 0 5 always 1 6 ? 7 Prog mode off on */ /* 0x14 */ u8 FlashID[2*12]; /* 0x2C */ u32 WirelessKBID; /* 0x30 */ u16 WirlessPADID[4]; /* 0x38 */ u8 LastDVDError; /* 0x39 */ u8 Reserved; /* 0x3A */ u16 FlashIDChecksum[2]; /* 0x3C */ u16 Unused; } GC_SRAM; typedef struct DML_CFG { u32 Magicbytes; // 0xD1050CF6 u32 Version; // 0x00000002 u32 VideoMode; u32 Config; char GamePath[255]; char CheatPath[255]; } DML_CFG; enum dmlconfig { DML_CFG_CHEATS = (1<<0), DML_CFG_DEBUGGER = (1<<1), DML_CFG_DEBUGWAIT = (1<<2), DML_CFG_NMM = (1<<3), DML_CFG_NMM_DEBUG = (1<<4), DML_CFG_GAME_PATH = (1<<5), DML_CFG_CHEAT_PATH = (1<<6), DML_CFG_ACTIVITY_LED= (1<<7), DML_CFG_PADHOOK = (1<<8), DML_CFG_FORCE_WIDE = (1<<9), DML_CFG_BOOT_DISC = (1<<10), DML_CFG_BOOT_DISC2 = (1<<11), DML_CFG_NODISC = (1<<12), DML_CFG_SCREENSHOT = (1<<13), }; enum dmlvideomode { DML_VID_DML_AUTO = (0<<16), DML_VID_FORCE = (1<<16), DML_VID_NONE = (2<<16), DML_VID_FORCE_PAL50 = (1<<0), DML_VID_FORCE_PAL60 = (1<<1), DML_VID_FORCE_NTSC = (1<<2), DML_VID_FORCE_PROG = (1<<3), }; enum VideoModes { GCVideoModeNone = 0, GCVideoModePAL60 = 1, GCVideoModeNTSC = 2, GCVideoModePROG = 3, }; void ConfigInit( DML_CFG *Cfg ); u32 ConfigGetConfig( u32 Config ); void ConfigSetConfig( u32 Config ); void ConfigClearConfig( u32 Config ); u32 ConfigGetVideMode( void ); char *ConfigGetGamePath( void ); char *ConfigGetCheatPath( void ); #endif