Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libsnes/bsnes/snes/alt/ppu-compatibility/mmio/mmio.hpp
2 views
1
struct {
2
//open bus support
3
uint8 ppu1_mdr, ppu2_mdr;
4
5
//bg line counters
6
uint16 bg_y[4];
7
8
//internal state
9
uint16 ioamaddr;
10
uint16 icgramaddr;
11
12
//$2100
13
bool display_disabled;
14
uint8 display_brightness;
15
16
//$2101
17
uint8 oam_basesize;
18
uint8 oam_nameselect;
19
uint16 oam_tdaddr;
20
21
//$2102-$2103
22
uint16 oam_baseaddr;
23
uint16 oam_addr;
24
bool oam_priority;
25
uint8 oam_firstsprite;
26
27
//$2104
28
uint8 oam_latchdata;
29
30
//$2105
31
bool bg_tilesize[4];
32
bool bg3_priority;
33
uint8 bg_mode;
34
35
//$2106
36
uint8 mosaic_size;
37
bool mosaic_enabled[4];
38
uint16 mosaic_countdown;
39
40
//$2107-$210a
41
uint16 bg_scaddr[4];
42
uint8 bg_scsize[4];
43
44
//$210b-$210c
45
uint16 bg_tdaddr[4];
46
47
//$210d-$2114
48
uint8 bg_ofslatch;
49
uint16 m7_hofs, m7_vofs;
50
uint16 bg_hofs[4];
51
uint16 bg_vofs[4];
52
53
//$2115
54
bool vram_incmode;
55
uint8 vram_mapping;
56
uint8 vram_incsize;
57
58
//$2116-$2117
59
uint16 vram_addr;
60
61
//$211a
62
uint8 mode7_repeat;
63
bool mode7_vflip;
64
bool mode7_hflip;
65
66
//$211b-$2120
67
uint8 m7_latch;
68
uint16 m7a, m7b, m7c, m7d, m7x, m7y;
69
70
//$2121
71
uint16 cgram_addr;
72
73
//$2122
74
uint8 cgram_latchdata;
75
76
//$2123-$2125
77
bool window1_enabled[6];
78
bool window1_invert [6];
79
bool window2_enabled[6];
80
bool window2_invert [6];
81
82
//$2126-$2129
83
uint8 window1_left, window1_right;
84
uint8 window2_left, window2_right;
85
86
//$212a-$212b
87
uint8 window_mask[6];
88
89
//$212c-$212d
90
bool bg_enabled[5], bgsub_enabled[5];
91
92
//$212e-$212f
93
bool window_enabled[5], sub_window_enabled[5];
94
95
//$2130
96
uint8 color_mask, colorsub_mask;
97
bool addsub_mode;
98
bool direct_color;
99
100
//$2131
101
bool color_mode, color_halve;
102
bool color_enabled[6];
103
104
//$2132
105
uint8 color_r, color_g, color_b;
106
uint16 color_rgb;
107
108
//$2133
109
//overscan and interlace are checked once per frame to
110
//determine if entire frame should be interlaced/non-interlace
111
//and overscan adjusted. therefore, the variables act sort of
112
//like a buffer, but they do still affect internal rendering
113
bool mode7_extbg;
114
bool pseudo_hires;
115
bool overscan;
116
uint16 scanlines;
117
bool oam_interlace;
118
bool interlace;
119
120
//$2137
121
uint16 hcounter, vcounter;
122
bool latch_hcounter, latch_vcounter;
123
bool counters_latched;
124
125
//$2139-$213a
126
uint16 vram_readbuffer;
127
128
//$213e
129
bool time_over, range_over;
130
uint16 oam_itemcount, oam_tilecount;
131
} regs;
132
133
void mmio_w2100(uint8 value); //INIDISP
134
void mmio_w2101(uint8 value); //OBSEL
135
void mmio_w2102(uint8 value); //OAMADDL
136
void mmio_w2103(uint8 value); //OAMADDH
137
void mmio_w2104(uint8 value); //OAMDATA
138
void mmio_w2105(uint8 value); //BGMODE
139
void mmio_w2106(uint8 value); //MOSAIC
140
void mmio_w2107(uint8 value); //BG1SC
141
void mmio_w2108(uint8 value); //BG2SC
142
void mmio_w2109(uint8 value); //BG3SC
143
void mmio_w210a(uint8 value); //BG4SC
144
void mmio_w210b(uint8 value); //BG12NBA
145
void mmio_w210c(uint8 value); //BG34NBA
146
void mmio_w210d(uint8 value); //BG1HOFS
147
void mmio_w210e(uint8 value); //BG1VOFS
148
void mmio_w210f(uint8 value); //BG2HOFS
149
void mmio_w2110(uint8 value); //BG2VOFS
150
void mmio_w2111(uint8 value); //BG3HOFS
151
void mmio_w2112(uint8 value); //BG3VOFS
152
void mmio_w2113(uint8 value); //BG4HOFS
153
void mmio_w2114(uint8 value); //BG4VOFS
154
void mmio_w2115(uint8 value); //VMAIN
155
void mmio_w2116(uint8 value); //VMADDL
156
void mmio_w2117(uint8 value); //VMADDH
157
void mmio_w2118(uint8 value); //VMDATAL
158
void mmio_w2119(uint8 value); //VMDATAH
159
void mmio_w211a(uint8 value); //M7SEL
160
void mmio_w211b(uint8 value); //M7A
161
void mmio_w211c(uint8 value); //M7B
162
void mmio_w211d(uint8 value); //M7C
163
void mmio_w211e(uint8 value); //M7D
164
void mmio_w211f(uint8 value); //M7X
165
void mmio_w2120(uint8 value); //M7Y
166
void mmio_w2121(uint8 value); //CGADD
167
void mmio_w2122(uint8 value); //CGDATA
168
void mmio_w2123(uint8 value); //W12SEL
169
void mmio_w2124(uint8 value); //W34SEL
170
void mmio_w2125(uint8 value); //WOBJSEL
171
void mmio_w2126(uint8 value); //WH0
172
void mmio_w2127(uint8 value); //WH1
173
void mmio_w2128(uint8 value); //WH2
174
void mmio_w2129(uint8 value); //WH3
175
void mmio_w212a(uint8 value); //WBGLOG
176
void mmio_w212b(uint8 value); //WOBJLOG
177
void mmio_w212c(uint8 value); //TM
178
void mmio_w212d(uint8 value); //TS
179
void mmio_w212e(uint8 value); //TMW
180
void mmio_w212f(uint8 value); //TSW
181
void mmio_w2130(uint8 value); //CGWSEL
182
void mmio_w2131(uint8 value); //CGADDSUB
183
void mmio_w2132(uint8 value); //COLDATA
184
void mmio_w2133(uint8 value); //SETINI
185
186
uint8 mmio_r2134(); //MPYL
187
uint8 mmio_r2135(); //MPYM
188
uint8 mmio_r2136(); //MPYH
189
uint8 mmio_r2137(); //SLHV
190
uint8 mmio_r2138(); //OAMDATAREAD
191
uint8 mmio_r2139(); //VMDATALREAD
192
uint8 mmio_r213a(); //VMDATAHREAD
193
uint8 mmio_r213b(); //CGDATAREAD
194
uint8 mmio_r213c(); //OPHCT
195
uint8 mmio_r213d(); //OPVCT
196
uint8 mmio_r213e(); //STAT77
197
uint8 mmio_r213f(); //STAT78
198
199
uint8 mmio_read(unsigned addr);
200
void mmio_write(unsigned addr, uint8 data);
201
202
void latch_counters();
203
204