Path: blob/master/libsnes/bsnes/snes/ppu/background/background.hpp
2 views
struct Background {1struct ID { enum { BG1, BG2, BG3, BG4 }; };2unsigned id;34struct Mode { enum { BPP2, BPP4, BPP8, Mode7, Inactive }; };5struct ScreenSize { enum { Size32x32, Size32x64, Size64x32, Size64x64 }; };6struct TileSize { enum { Size8x8, Size16x16 }; };7struct Screen { enum { Main, Sub }; };89struct Regs {10uint16 tiledata_addr;11uint16 screen_addr;12uint2 screen_size;13uint4 mosaic;14bool tile_size;1516unsigned mode;17unsigned priority0;18unsigned priority1;1920bool main_enable;21bool sub_enable;2223uint16 hoffset;24uint16 voffset;25} regs;2627struct Cache {28uint16 hoffset;29uint16 voffset;30} cache;3132struct Output {33struct Pixel {34unsigned priority; //0 = none (transparent)35uint8 palette;36uint16 tile;37} main, sub;38} output;3940struct Mosaic : Output::Pixel {41unsigned vcounter;42unsigned voffset;43unsigned hcounter;44unsigned hoffset;45} mosaic;4647struct {48signed x;49signed y;5051unsigned tile_counter;52unsigned tile;53unsigned priority;54unsigned palette_number;55unsigned palette_index;56uint8 data[8];57};5859void frame();60void scanline();61void begin();62void run(bool screen);63void reset();6465void get_tile();66unsigned get_tile_color();67unsigned get_tile(unsigned x, unsigned y);68signed clip(signed n);69void begin_mode7();70void run_mode7();7172void serialize(serializer&);73Background(PPU &self, unsigned id);7475PPU &self;76friend class PPU;77};787980