bsnes/higan/sfc/alt/ppu-performance/sprite/sprite.hpp

72 lines
1.2 KiB
C++
Raw Normal View History

class Sprite {
bool priority0_enable;
bool priority1_enable;
bool priority2_enable;
bool priority3_enable;
struct Regs {
unsigned priority0;
unsigned priority1;
unsigned priority2;
unsigned priority3;
unsigned base_size;
unsigned nameselect;
unsigned tiledata_addr;
unsigned first_sprite;
bool main_enable;
bool sub_enable;
bool interlace;
bool time_over;
bool range_over;
} regs;
struct List {
unsigned width;
unsigned height;
unsigned x;
unsigned y;
unsigned character;
bool use_nameselect;
bool vflip;
bool hflip;
unsigned palette;
unsigned priority;
bool size;
} list[128];
bool list_valid;
uint8 itemlist[32];
struct TileList {
unsigned x;
unsigned y;
unsigned priority;
unsigned palette;
unsigned tile;
bool hflip;
} tilelist[34];
struct Output {
uint8 palette[256];
uint8 priority[256];
} output;
LayerWindow window;
void frame();
void update_list(unsigned addr, uint8 data);
void address_reset();
void set_first();
alwaysinline bool on_scanline(unsigned sprite);
void render();
void serialize(serializer&);
Sprite(PPU &self);
PPU &self;
friend class PPU;
};