mirror of https://github.com/bsnes-emu/bsnes.git
88 lines
1.7 KiB
C++
88 lines
1.7 KiB
C++
struct Background {
|
|
Background(uint id) : id(id) {}
|
|
|
|
alwaysinline auto hires() const -> bool;
|
|
alwaysinline auto hoffset() const -> uint16;
|
|
alwaysinline auto voffset() const -> uint16;
|
|
|
|
auto frame() -> void;
|
|
auto scanline() -> void;
|
|
auto begin() -> void;
|
|
auto run(bool screen) -> void;
|
|
auto power() -> void;
|
|
|
|
auto getTile() -> void;
|
|
auto getTileColor() -> uint;
|
|
auto getTile(uint x, uint y) -> uint16;
|
|
alwaysinline auto clip(int n) -> int;
|
|
auto beginMode7() -> void;
|
|
auto runMode7() -> void;
|
|
|
|
auto serialize(serializer&) -> void;
|
|
|
|
struct ID { enum : uint { BG1, BG2, BG3, BG4 }; };
|
|
const uint id;
|
|
|
|
struct Mode { enum : uint { BPP2, BPP4, BPP8, Mode7, Inactive }; };
|
|
struct ScreenSize { enum : uint { Size32x32, Size32x64, Size64x32, Size64x64 }; };
|
|
struct TileSize { enum : uint { Size8x8, Size16x16 }; };
|
|
struct Screen { enum : uint { Above, Below }; };
|
|
|
|
struct IO {
|
|
uint16 tiledataAddress;
|
|
uint16 screenAddress;
|
|
uint2 screenSize;
|
|
uint1 tileSize;
|
|
|
|
uint8 mode;
|
|
uint8 priority[2];
|
|
|
|
uint1 aboveEnable;
|
|
uint1 belowEnable;
|
|
|
|
uint16 hoffset;
|
|
uint16 voffset;
|
|
} io;
|
|
|
|
struct Latch {
|
|
uint16 hoffset;
|
|
uint16 voffset;
|
|
} latch;
|
|
|
|
struct Pixel {
|
|
uint8 priority; //0 = none (transparent)
|
|
uint8 palette;
|
|
uint16 tile;
|
|
} above, below;
|
|
|
|
struct Output {
|
|
Pixel above;
|
|
Pixel below;
|
|
} output;
|
|
|
|
struct Mosaic {
|
|
static uint4 size;
|
|
uint1 enable;
|
|
|
|
uint16 vcounter;
|
|
uint16 hcounter;
|
|
|
|
uint16 voffset;
|
|
uint16 hoffset;
|
|
|
|
Pixel pixel;
|
|
} mosaic;
|
|
|
|
int x;
|
|
int y;
|
|
|
|
uint3 tileCounter;
|
|
uint16 tile;
|
|
uint8 priority;
|
|
uint3 paletteNumber;
|
|
uint8 paletteIndex;
|
|
uint32 data[2];
|
|
|
|
friend class PPU;
|
|
};
|