mirror of https://github.com/bsnes-emu/bsnes.git
69 lines
1.2 KiB
C++
69 lines
1.2 KiB
C++
class Background {
|
|
struct ID { enum : uint { BG1, BG2, BG3, BG4 }; };
|
|
struct Mode { enum : uint { BPP2, BPP4, BPP8, Mode7, Inactive }; };
|
|
struct ScreenSize { enum : uint { Size32x32, Size32x64, Size64x32, Size64x64 }; };
|
|
struct TileSize { enum : uint { Size8x8, Size16x16 }; };
|
|
|
|
Background(PPU& self, uint id);
|
|
~Background();
|
|
|
|
alwaysinline auto get_tile(uint hoffset, uint voffset) -> uint;
|
|
auto offset_per_tile(uint x, uint y, uint& hoffset, uint& voffset) -> void;
|
|
auto scanline() -> void;
|
|
auto render() -> void;
|
|
auto render_mode7() -> void;
|
|
|
|
auto serialize(serializer&) -> void;
|
|
|
|
PPU& self;
|
|
|
|
bool priority0_enable;
|
|
bool priority1_enable;
|
|
|
|
struct Regs {
|
|
uint mode;
|
|
uint priority0;
|
|
uint priority1;
|
|
|
|
bool tile_size;
|
|
uint mosaic;
|
|
|
|
uint screen_addr;
|
|
uint screen_size;
|
|
uint tiledata_addr;
|
|
|
|
uint hoffset;
|
|
uint voffset;
|
|
|
|
bool main_enable;
|
|
bool sub_enable;
|
|
} regs;
|
|
|
|
uint16** mosaic_table;
|
|
|
|
const uint id;
|
|
uint opt_valid_bit;
|
|
|
|
bool hires;
|
|
signed width;
|
|
|
|
uint tile_width;
|
|
uint tile_height;
|
|
|
|
uint mask_x;
|
|
uint mask_y;
|
|
|
|
uint scx;
|
|
uint scy;
|
|
|
|
uint hscroll;
|
|
uint vscroll;
|
|
|
|
uint mosaic_vcounter;
|
|
uint mosaic_voffset;
|
|
|
|
LayerWindow window;
|
|
|
|
friend class PPU;
|
|
};
|