bsnes/higan/gba/ppu/registers.hpp

82 lines
1.4 KiB
C++

enum : uint { OBJ = 0, BG0 = 1, BG1 = 2, BG2 = 3, BG3 = 4, SFX = 5 };
enum : uint { In0 = 0, In1 = 1, Obj = 2, Out = 3 };
struct Registers {
struct Control {
uint3 bgmode;
uint1 cgbmode;
uint1 frame;
uint1 hblank;
uint1 objmapping;
uint1 forceblank;
uint1 enable[5];
uint1 enablewindow[3];
} control;
uint1 greenswap;
struct Status {
uint1 vblank;
uint1 hblank;
uint1 vcoincidence;
uint1 irqvblank;
uint1 irqhblank;
uint1 irqvcoincidence;
uint8 vcompare;
} status;
uint16 vcounter;
struct Background {
struct Control {
uint2 priority;
uint2 characterbaseblock;
uint2 unused;
uint1 mosaic;
uint1 colormode;
uint5 screenbaseblock;
uint1 affinewrap; //BG2,3 only
uint2 screensize;
} control;
uint9 hoffset;
uint9 voffset;
//BG2,3 only
int16 pa, pb, pc, pd;
int28 x, y;
//internal
int28 lx, ly;
uint vmosaic;
uint hmosaic;
uint id;
} bg[4];
struct Window {
uint8 x1, x2;
uint8 y1, y2;
} window[2];
struct WindowFlags {
uint1 enable[6];
} windowflags[4];
struct Mosaic {
uint4 bghsize;
uint4 bgvsize;
uint4 objhsize;
uint4 objvsize;
} mosaic;
struct Blend {
struct Control {
uint1 above[6];
uint2 mode;
uint1 below[6];
} control;
uint5 eva;
uint5 evb;
uint5 evy;
} blend;
} regs;