1 #include "GBA.h" 2 3 #ifdef BKPT_SUPPORT 4 int oldreg[18]; 5 char oldbuffer[10]; 6 #endif 7 8 reg_pair reg[45]; 9 memoryMap map[256]; 10 bool ioReadable[0x400]; 11 bool N_FLAG = 0; 12 bool C_FLAG = 0; 13 bool Z_FLAG = 0; 14 bool V_FLAG = 0; 15 bool armState = true; 16 bool armIrqEnable = true; 17 u32 armNextPC = 0x00000000; 18 int armMode = 0x1f; 19 u32 stop = 0x08000568; 20 21 // this is an optional hack to change the backdrop/background color: 22 // -1: disabled 23 // 0x0000 to 0x7FFF: set custom 15 bit color 24 int customBackdropColor = -1; 25 26 u8 *bios = 0; 27 u8 *rom = 0; 28 u8 *internalRAM = 0; 29 u8 *workRAM = 0; 30 u8 *paletteRAM = 0; 31 u8 *vram = 0; 32 u8 *pix = 0; 33 u8 *oam = 0; 34 u8 *ioMem = 0; 35 36 u16 DISPCNT = 0x0080; 37 u16 DISPSTAT = 0x0000; 38 u16 VCOUNT = 0x0000; 39 u16 BG0CNT = 0x0000; 40 u16 BG1CNT = 0x0000; 41 u16 BG2CNT = 0x0000; 42 u16 BG3CNT = 0x0000; 43 u16 BG0HOFS = 0x0000; 44 u16 BG0VOFS = 0x0000; 45 u16 BG1HOFS = 0x0000; 46 u16 BG1VOFS = 0x0000; 47 u16 BG2HOFS = 0x0000; 48 u16 BG2VOFS = 0x0000; 49 u16 BG3HOFS = 0x0000; 50 u16 BG3VOFS = 0x0000; 51 u16 BG2PA = 0x0100; 52 u16 BG2PB = 0x0000; 53 u16 BG2PC = 0x0000; 54 u16 BG2PD = 0x0100; 55 u16 BG2X_L = 0x0000; 56 u16 BG2X_H = 0x0000; 57 u16 BG2Y_L = 0x0000; 58 u16 BG2Y_H = 0x0000; 59 u16 BG3PA = 0x0100; 60 u16 BG3PB = 0x0000; 61 u16 BG3PC = 0x0000; 62 u16 BG3PD = 0x0100; 63 u16 BG3X_L = 0x0000; 64 u16 BG3X_H = 0x0000; 65 u16 BG3Y_L = 0x0000; 66 u16 BG3Y_H = 0x0000; 67 u16 WIN0H = 0x0000; 68 u16 WIN1H = 0x0000; 69 u16 WIN0V = 0x0000; 70 u16 WIN1V = 0x0000; 71 u16 WININ = 0x0000; 72 u16 WINOUT = 0x0000; 73 u16 MOSAIC = 0x0000; 74 u16 BLDMOD = 0x0000; 75 u16 COLEV = 0x0000; 76 u16 COLY = 0x0000; 77 u16 DM0SAD_L = 0x0000; 78 u16 DM0SAD_H = 0x0000; 79 u16 DM0DAD_L = 0x0000; 80 u16 DM0DAD_H = 0x0000; 81 u16 DM0CNT_L = 0x0000; 82 u16 DM0CNT_H = 0x0000; 83 u16 DM1SAD_L = 0x0000; 84 u16 DM1SAD_H = 0x0000; 85 u16 DM1DAD_L = 0x0000; 86 u16 DM1DAD_H = 0x0000; 87 u16 DM1CNT_L = 0x0000; 88 u16 DM1CNT_H = 0x0000; 89 u16 DM2SAD_L = 0x0000; 90 u16 DM2SAD_H = 0x0000; 91 u16 DM2DAD_L = 0x0000; 92 u16 DM2DAD_H = 0x0000; 93 u16 DM2CNT_L = 0x0000; 94 u16 DM2CNT_H = 0x0000; 95 u16 DM3SAD_L = 0x0000; 96 u16 DM3SAD_H = 0x0000; 97 u16 DM3DAD_L = 0x0000; 98 u16 DM3DAD_H = 0x0000; 99 u16 DM3CNT_L = 0x0000; 100 u16 DM3CNT_H = 0x0000; 101 u16 TM0D = 0x0000; 102 u16 TM0CNT = 0x0000; 103 u16 TM1D = 0x0000; 104 u16 TM1CNT = 0x0000; 105 u16 TM2D = 0x0000; 106 u16 TM2CNT = 0x0000; 107 u16 TM3D = 0x0000; 108 u16 TM3CNT = 0x0000; 109 u16 P1 = 0xFFFF; 110 u16 IE = 0x0000; 111 u16 IF = 0x0000; 112 u16 IME = 0x0000; 113