ref: b2b80a3da5d03ddb2f9cb15c4cf769a432e347ee
dir: /sys/src/games/gba/dat.h/
typedef char s8int;
typedef short s16int;
typedef long s32int;
typedef vlong s64int;
extern int cpuhalt, trace, keys;
extern u32int curpc;
extern int irq;
extern int dmaact;
extern uchar vram[];
extern u16int pram[], oam[];
extern u16int reg[];
extern uchar *rom, *back;
extern int nrom, nback, backup;
extern int hblank, ppuy;
extern int clock;
extern int scale;
typedef struct Event Event;
struct Event {
int time;
void (*f)(void *);
Event *next;
void *aux;
};
extern Event *elist;
enum {
DISPCNT = 0x0/2,
DISPSTAT = 0x4/2,
BG0CNT = 0x8/2,
BG0HOFS = 0x10/2,
BG0VOFS = 0x12/2,
BG2PA = 0x20/2,
BG2PB = 0x22/2,
BG2PC = 0x24/2,
BG2PD = 0x26/2,
BG2XL = 0x28/2,
BG2XH = 0x2a/2,
BG2YL = 0x2c/2,
BG2YH = 0x2e/2,
BG3XL = 0x38/2,
BG3XH = 0x3a/2,
BG3YL = 0x3c/2,
BG3YH = 0x3e/2,
WIN0H = 0x40/2,
WIN1H = 0x42/2,
WIN0V = 0x44/2,
WIN1V = 0x46/2,
WININ = 0x48/2,
WINOUT = 0x4a/2,
MOSAIC = 0x4c/2,
BLDCNT = 0x50/2,
BLDALPHA = 0x52/2,
BLDY = 0x54/2,
SOUNDCNTL = 0x80/2,
SOUNDCNTH = 0x82/2,
SOUNDBIAS = 0x88/2,
FIFOAH = 0xa2/2,
FIFOBH = 0xa6/2,
DMA0CNTH = 0xba/2,
DMA1CNTH = 0xc6/2,
DMA2CNTH = 0xd2/2,
DMA3CNTH = 0xde/2,
TM0CNTH = 0x102/2,
KEYCNT = 0x132/2,
IE = 0x200/2,
IF = 0x202/2,
WAITCNT = 0x204/2,
IME = 0x208/2,
};
enum {
/* DISPCNT */
FRAME = 1<<4,
HBLFREE = 1<<5,
OBJNOMAT = 1<<6,
FBLANK = 1<<7,
/* DISPSTAT */
IRQVBLEN = 1<<3,
IRQHBLEN = 1<<4,
IRQVCTREN = 1<<5,
/* BGnCNT */
BGMOSAIC = 1<<6,
BG8 = 1<<7,
DISPWRAP = 1<<13,
/* TIMERnCNTH */
PRESC = 3,
COUNTUP = 1<<2,
TIMERIRQ = 1<<6,
TIMERON = 1<<7,
/* DMAnCNTH */
DMADCNT = 5,
DMASCNT = 7,
DMAREP = 1<<9,
DMAWIDE = 1<<10,
DMAWHEN = 12,
DMAIRQ = 1<<14,
DMAEN = 1<<15,
DMAINC = 0,
DMADEC = 1,
DMAFIX = 2,
DMAINCREL = 3,
DMANOW = 0,
DMAVBL = 1,
DMAHBL = 2,
DMASPEC = 3,
DMASOUND = 4,
DMAVIDEO = 5,
IRQVBL = 1<<0,
IRQHBL = 1<<1,
IRQVCTR = 1<<2,
IRQTIM0 = 1<<3,
IRQDMA0 = 1<<8,
IRQKEY = 1<<12,
NOBACK = 0,
SRAM = 1,
EEPROM = 2,
FLASH = 3,
KB = 1024,
BACKTYPELEN = 64,
HZ = 16777216,
MILLION = 1000000,
BILLION = 1000000000,
};
typedef struct Var Var;
struct Var {
void *a;
int s, n;
};
#define VAR(a) {&a, sizeof(a), 1}
#define ARR(a) {a, sizeof(*a), nelem(a)}
enum { NEVENT = 6 };