rlm@1: #ifndef VBA_GBA_GLOBALS_H rlm@1: #define VBA_GBA_GLOBALS_H rlm@1: rlm@1: #if _MSC_VER > 1000 rlm@1: #pragma once rlm@1: #endif // _MSC_VER > 1000 rlm@1: rlm@1: #include "../Port.h" rlm@1: rlm@1: #define VERBOSE_SWI 1 rlm@1: #define VERBOSE_UNALIGNED_MEMORY 2 rlm@1: #define VERBOSE_ILLEGAL_WRITE 4 rlm@1: #define VERBOSE_ILLEGAL_READ 8 rlm@1: #define VERBOSE_DMA0 16 rlm@1: #define VERBOSE_DMA1 32 rlm@1: #define VERBOSE_DMA2 64 rlm@1: #define VERBOSE_DMA3 128 rlm@1: #define VERBOSE_UNDEFINED 256 rlm@1: #define VERBOSE_AGBPRINT 512 rlm@1: rlm@1: // moved from armdis.cpp rlm@1: #define debuggerReadMemory(addr) \ rlm@1: READ32LE(&map[(addr) >> 24].address[(addr) & map[(addr) >> 24].mask]) rlm@1: rlm@1: #define debuggerReadHalfWord(addr) \ rlm@1: READ16LE(&map[(addr) >> 24].address[(addr) & map[(addr) >> 24].mask]) rlm@1: rlm@1: #define debuggerReadByte(addr) \ rlm@1: READ8LE(&map[(addr) >> 24].address[(addr) & map[(addr) >> 24].mask]) rlm@1: rlm@1: #define debuggerWriteMemory(addr, value) \ rlm@1: WRITE32LE((&map[(addr)>>24].address[(addr) & map[(addr)>>24].mask]), (value)) rlm@1: rlm@1: #define debuggerWriteHalfWord(addr, value) \ rlm@1: WRITE16LE((&map[(addr)>>24].address[(addr) & map[(addr)>>24].mask]), (value)) rlm@1: rlm@1: #define debuggerWriteByte(addr, value) \ rlm@1: WRITE8LE((&map[(addr)>>24].address[(addr) & map[(addr)>>24].mask]), (value)) rlm@1: rlm@1: // moved from GBA.h rlm@1: typedef struct rlm@1: { rlm@1: u8 *address; rlm@1: u32 mask; rlm@1: } memoryMap; rlm@1: rlm@1: #ifndef NO_GBA_MAP rlm@1: extern memoryMap map[256]; rlm@1: #endif rlm@1: rlm@1: // moved from GBA.h rlm@1: typedef union rlm@1: { rlm@1: struct rlm@1: { rlm@1: #ifdef WORDS_BIGENDIAN rlm@1: u8 B3; rlm@1: u8 B2; rlm@1: u8 B1; rlm@1: u8 B0; rlm@1: #else rlm@1: u8 B0; rlm@1: u8 B1; rlm@1: u8 B2; rlm@1: u8 B3; rlm@1: #endif rlm@1: } B; rlm@1: struct rlm@1: { rlm@1: #ifdef WORDS_BIGENDIAN rlm@1: u16 W1; rlm@1: u16 W0; rlm@1: #else rlm@1: u16 W0; rlm@1: u16 W1; rlm@1: #endif rlm@1: } W; rlm@1: #ifdef WORDS_BIGENDIAN rlm@1: volatile u32 I; rlm@1: #else rlm@1: u32 I; rlm@1: #endif rlm@1: } reg_pair; rlm@1: rlm@1: extern reg_pair reg[45]; rlm@1: extern u8 biosProtected[4]; rlm@1: extern bool8 ioReadable[0x400]; rlm@1: extern bool8 N_FLAG; rlm@1: extern bool8 C_FLAG; rlm@1: extern bool8 Z_FLAG; rlm@1: extern bool8 V_FLAG; rlm@1: extern bool8 armState; rlm@1: extern bool8 armIrqEnable; rlm@1: extern u32 armNextPC; rlm@1: extern int32 armMode; rlm@1: extern u32 stop; rlm@1: extern int32 saveType; rlm@1: extern bool8 useBios; rlm@1: extern bool8 skipBios; rlm@1: extern int32 frameSkip; rlm@1: extern u32 extButtons; rlm@1: extern bool8 capturePrevious; rlm@1: extern int32 captureNumber; rlm@1: extern bool8 speedup; rlm@1: extern bool8 synchronize; rlm@1: extern bool8 cpuDisableSfx; rlm@1: extern bool8 cpuIsMultiBoot; rlm@1: extern bool8 parseDebug; rlm@1: extern int32 layerSettings; rlm@1: extern int32 layerEnable; rlm@1: extern bool8 speedHack; rlm@1: extern bool8 memLagEnabled, memLagTempEnabled; rlm@1: extern bool8 useOldFrameTiming; rlm@1: extern int32 cpuSaveType; rlm@1: extern bool8 cpuEnhancedDetection; rlm@1: extern bool8 cheatsEnabled; rlm@1: rlm@1: extern int emulating; rlm@1: rlm@1: extern u8 *bios; rlm@1: extern u8 *rom; rlm@1: extern u8 *internalRAM; rlm@1: extern u8 *workRAM; rlm@1: extern u8 *paletteRAM; rlm@1: extern u8 *vram; rlm@1: extern u8 *pix; rlm@1: extern u8 *oam; rlm@1: extern u8 *ioMem; rlm@1: rlm@1: extern u16 DISPCNT; rlm@1: extern u16 DISPSTAT; rlm@1: extern u16 VCOUNT; rlm@1: extern u16 BG0CNT; rlm@1: extern u16 BG1CNT; rlm@1: extern u16 BG2CNT; rlm@1: extern u16 BG3CNT; rlm@1: extern u16 BG0HOFS; rlm@1: extern u16 BG0VOFS; rlm@1: extern u16 BG1HOFS; rlm@1: extern u16 BG1VOFS; rlm@1: extern u16 BG2HOFS; rlm@1: extern u16 BG2VOFS; rlm@1: extern u16 BG3HOFS; rlm@1: extern u16 BG3VOFS; rlm@1: extern u16 BG2PA; rlm@1: extern u16 BG2PB; rlm@1: extern u16 BG2PC; rlm@1: extern u16 BG2PD; rlm@1: extern u16 BG2X_L; rlm@1: extern u16 BG2X_H; rlm@1: extern u16 BG2Y_L; rlm@1: extern u16 BG2Y_H; rlm@1: extern u16 BG3PA; rlm@1: extern u16 BG3PB; rlm@1: extern u16 BG3PC; rlm@1: extern u16 BG3PD; rlm@1: extern u16 BG3X_L; rlm@1: extern u16 BG3X_H; rlm@1: extern u16 BG3Y_L; rlm@1: extern u16 BG3Y_H; rlm@1: extern u16 WIN0H; rlm@1: extern u16 WIN1H; rlm@1: extern u16 WIN0V; rlm@1: extern u16 WIN1V; rlm@1: extern u16 WININ; rlm@1: extern u16 WINOUT; rlm@1: extern u16 MOSAIC; rlm@1: extern u16 BLDMOD; rlm@1: extern u16 COLEV; rlm@1: extern u16 COLY; rlm@1: extern u16 DM0SAD_L; rlm@1: extern u16 DM0SAD_H; rlm@1: extern u16 DM0DAD_L; rlm@1: extern u16 DM0DAD_H; rlm@1: extern u16 DM0CNT_L; rlm@1: extern u16 DM0CNT_H; rlm@1: extern u16 DM1SAD_L; rlm@1: extern u16 DM1SAD_H; rlm@1: extern u16 DM1DAD_L; rlm@1: extern u16 DM1DAD_H; rlm@1: extern u16 DM1CNT_L; rlm@1: extern u16 DM1CNT_H; rlm@1: extern u16 DM2SAD_L; rlm@1: extern u16 DM2SAD_H; rlm@1: extern u16 DM2DAD_L; rlm@1: extern u16 DM2DAD_H; rlm@1: extern u16 DM2CNT_L; rlm@1: extern u16 DM2CNT_H; rlm@1: extern u16 DM3SAD_L; rlm@1: extern u16 DM3SAD_H; rlm@1: extern u16 DM3DAD_L; rlm@1: extern u16 DM3DAD_H; rlm@1: extern u16 DM3CNT_L; rlm@1: extern u16 DM3CNT_H; rlm@1: extern u16 TM0D; rlm@1: extern u16 TM0CNT; rlm@1: extern u16 TM1D; rlm@1: extern u16 TM1CNT; rlm@1: extern u16 TM2D; rlm@1: extern u16 TM2CNT; rlm@1: extern u16 TM3D; rlm@1: extern u16 TM3CNT; rlm@1: extern u16 P1; rlm@1: extern u16 IE; rlm@1: extern u16 IF; rlm@1: extern u16 IME; rlm@1: rlm@1: #endif // VBA_GBA_GLOBALS_H