Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libsnes/bsnes/snes/ppu/ppu.hpp
2 views
1
struct PPU : public Processor, public PPUcounter {
2
uint8 *vram; //[64 * 1024];
3
uint8 *oam; //[544];
4
uint8 *cgram; //[512];
5
6
enum : bool { Threaded = true };
7
alwaysinline void step(unsigned clocks);
8
alwaysinline void synchronize_cpu();
9
10
void latch_counters();
11
bool interlace() const;
12
bool overscan() const;
13
bool hires() const;
14
15
void enter();
16
void enable();
17
void power();
18
void reset();
19
void layer_enable(unsigned layer, unsigned priority, bool enable);
20
21
void serialize(serializer&);
22
void initialize();
23
PPU();
24
~PPU();
25
26
privileged:
27
uint32 *surface;
28
uint32 *output;
29
30
uint8 ppu1_version;
31
uint8 ppu2_version;
32
33
struct {
34
bool interlace;
35
bool overscan;
36
} display;
37
38
#include "background/background.hpp"
39
#include "mmio/mmio.hpp"
40
#include "screen/screen.hpp"
41
#include "sprite/sprite.hpp"
42
#include "window/window.hpp"
43
44
Background bg1;
45
Background bg2;
46
Background bg3;
47
Background bg4;
48
Sprite sprite;
49
Window window;
50
Screen screen;
51
52
static void Enter();
53
void add_clocks(unsigned);
54
55
void scanline();
56
void frame();
57
58
friend class PPU::Background;
59
friend class PPU::Sprite;
60
friend class PPU::Window;
61
friend class PPU::Screen;
62
friend class Video;
63
64
struct Debugger {
65
hook<void (uint16)> vram_read;
66
hook<void (uint16)> oam_read;
67
hook<void (uint16)> cgram_read;
68
hook<void (uint16, uint8)> vram_write;
69
hook<void (uint16, uint8)> oam_write;
70
hook<void (uint16, uint8)> cgram_write;
71
} debugger;
72
};
73
74
extern PPU ppu;
75
76