#ifndef GBA_H #define GBA_H #include "../System.h" #define SAVE_GAME_VERSION_1 1 #define SAVE_GAME_VERSION_2 2 #define SAVE_GAME_VERSION_3 3 #define SAVE_GAME_VERSION_4 4 #define SAVE_GAME_VERSION_5 5 #define SAVE_GAME_VERSION_6 6 #define SAVE_GAME_VERSION_7 7 #define SAVE_GAME_VERSION_8 8 #define SAVE_GAME_VERSION_9 9 #define SAVE_GAME_VERSION_10 10 #define SAVE_GAME_VERSION SAVE_GAME_VERSION_10 typedef struct { u8 *address; u32 mask; } memoryMap; typedef union { struct { #ifdef WORDS_BIGENDIAN u8 B3; u8 B2; u8 B1; u8 B0; #else u8 B0; u8 B1; u8 B2; u8 B3; #endif } B; struct { #ifdef WORDS_BIGENDIAN u16 W1; u16 W0; #else u16 W0; u16 W1; #endif } W; #ifdef WORDS_BIGENDIAN volatile u32 I; #else u32 I; #endif } reg_pair; #ifndef NO_GBA_MAP extern memoryMap map[256]; #endif extern reg_pair reg[45]; extern u8 biosProtected[4]; extern bool N_FLAG; extern bool Z_FLAG; extern bool C_FLAG; extern bool V_FLAG; extern bool armIrqEnable; extern bool armState; extern int armMode; extern void (*cpuSaveGameFunc)(u32,u8); #ifdef BKPT_SUPPORT extern u8 freezeWorkRAM[0x40000]; extern u8 freezeInternalRAM[0x8000]; extern u8 freezeVRAM[0x18000]; extern u8 freezeOAM[0x400]; extern u8 freezePRAM[0x400]; extern bool debugger_last; extern int oldreg[18]; extern char oldbuffer[10]; #endif extern bool CPUReadGSASnapshot(const char *); extern bool CPUWriteGSASnapshot(const char *, const char *, const char *, const char *); extern bool CPUWriteBatteryFile(const char *); extern bool CPUReadBatteryFile(const char *); extern bool CPUExportEepromFile(const char *); extern bool CPUImportEepromFile(const char *); extern bool CPUWritePNGFile(const char *); extern bool CPUWriteBMPFile(const char *); extern void CPUCleanUp(); extern void CPUUpdateRender(); extern void CPUUpdateRenderBuffers(bool); extern bool CPUReadMemState(char *, int); extern bool CPUReadState(const char *); extern bool CPUWriteMemState(char *, int); extern bool CPUWriteState(const char *); extern int CPULoadRom(const char *); extern void doMirroring(bool); extern void CPUUpdateRegister(u32, u16); extern void applyTimer (); extern void CPUInit(const char *,bool); extern void CPUReset(); extern void CPULoop(int); extern void CPUCheckDMA(int,int); extern bool CPUIsGBAImage(const char *); extern bool CPUIsZipFile(const char *); #ifdef PROFILING #include "prof/prof.h" extern void cpuProfil(profile_segment *seg); extern void cpuEnableProfiling(int hz); #endif extern struct EmulatedSystem GBASystem; #define R13_IRQ 18 #define R14_IRQ 19 #define SPSR_IRQ 20 #define R13_USR 26 #define R14_USR 27 #define R13_SVC 28 #define R14_SVC 29 #define SPSR_SVC 30 #define R13_ABT 31 #define R14_ABT 32 #define SPSR_ABT 33 #define R13_UND 34 #define R14_UND 35 #define SPSR_UND 36 #define R8_FIQ 37 #define R9_FIQ 38 #define R10_FIQ 39 #define R11_FIQ 40 #define R12_FIQ 41 #define R13_FIQ 42 #define R14_FIQ 43 #define SPSR_FIQ 44 #include "Cheats.h" #include "Globals.h" #include "EEprom.h" #include "Flash.h" #endif // GBA_H