Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libsnes/bsnes/snes/ppu/serialization.cpp
2 views
1
#ifdef PPU_CPP
2
3
void PPUcounter::serialize(serializer &s) {
4
s.integer(status.interlace);
5
s.integer(status.field);
6
s.integer(status.vcounter);
7
s.integer(status.hcounter);
8
9
s.array(history.field);
10
s.array(history.vcounter);
11
s.array(history.hcounter);
12
s.integer(history.index);
13
}
14
15
void PPU::serialize(serializer &s) {
16
Processor::serialize(s);
17
PPUcounter::serialize(s);
18
19
s.array(vram);
20
s.array(oam);
21
s.array(cgram);
22
23
s.integer(ppu1_version);
24
s.integer(ppu2_version);
25
26
s.integer(display.interlace);
27
s.integer(display.overscan);
28
29
s.integer(regs.ppu1_mdr);
30
s.integer(regs.ppu2_mdr);
31
32
s.integer(regs.vram_readbuffer);
33
s.integer(regs.oam_latchdata);
34
s.integer(regs.cgram_latchdata);
35
s.integer(regs.bgofs_latchdata);
36
s.integer(regs.mode7_latchdata);
37
s.integer(regs.counters_latched);
38
s.integer(regs.latch_hcounter);
39
s.integer(regs.latch_vcounter);
40
41
s.integer(regs.oam_iaddr);
42
s.integer(regs.cgram_iaddr);
43
44
s.integer(regs.display_disable);
45
s.integer(regs.display_brightness);
46
47
s.integer(regs.oam_baseaddr);
48
s.integer(regs.oam_addr);
49
s.integer(regs.oam_priority);
50
51
s.integer(regs.bg3_priority);
52
s.integer(regs.bgmode);
53
54
s.integer(regs.mode7_hoffset);
55
s.integer(regs.mode7_voffset);
56
57
s.integer(regs.vram_incmode);
58
s.integer(regs.vram_mapping);
59
s.integer(regs.vram_incsize);
60
61
s.integer(regs.vram_addr);
62
63
s.integer(regs.mode7_repeat);
64
s.integer(regs.mode7_vflip);
65
s.integer(regs.mode7_hflip);
66
67
s.integer(regs.m7a);
68
s.integer(regs.m7b);
69
s.integer(regs.m7c);
70
s.integer(regs.m7d);
71
s.integer(regs.m7x);
72
s.integer(regs.m7y);
73
74
s.integer(regs.cgram_addr);
75
76
s.integer(regs.mode7_extbg);
77
s.integer(regs.pseudo_hires);
78
s.integer(regs.overscan);
79
s.integer(regs.interlace);
80
81
s.integer(regs.hcounter);
82
s.integer(regs.vcounter);
83
84
bg1.serialize(s);
85
bg2.serialize(s);
86
bg3.serialize(s);
87
bg4.serialize(s);
88
sprite.serialize(s);
89
window.serialize(s);
90
screen.serialize(s);
91
}
92
93
void PPU::Background::serialize(serializer &s) {
94
s.integer(id);
95
96
s.integer(regs.tiledata_addr);
97
s.integer(regs.screen_addr);
98
s.integer(regs.screen_size);
99
s.integer(regs.mosaic);
100
s.integer(regs.tile_size);
101
102
s.integer(regs.mode);
103
s.integer(regs.priority0);
104
s.integer(regs.priority1);
105
106
s.integer(regs.main_enable);
107
s.integer(regs.sub_enable);
108
109
s.integer(regs.hoffset);
110
s.integer(regs.voffset);
111
112
s.integer(cache.hoffset);
113
s.integer(cache.voffset);
114
115
s.integer(output.main.priority);
116
s.integer(output.main.palette);
117
s.integer(output.main.tile);
118
119
s.integer(output.sub.priority);
120
s.integer(output.sub.palette);
121
s.integer(output.sub.tile);
122
123
s.integer(x);
124
s.integer(y);
125
126
s.integer(mosaic.priority);
127
s.integer(mosaic.palette);
128
s.integer(mosaic.tile);
129
130
s.integer(mosaic.vcounter);
131
s.integer(mosaic.voffset);
132
s.integer(mosaic.hcounter);
133
s.integer(mosaic.hoffset);
134
135
s.integer(tile_counter);
136
s.integer(tile);
137
s.integer(priority);
138
s.integer(palette_number);
139
s.integer(palette_index);
140
s.array(data);
141
}
142
143
void PPU::Sprite::serialize(serializer &s) {
144
for(unsigned i = 0; i < 128; i++) {
145
s.integer(list[i].x);
146
s.integer(list[i].y);
147
s.integer(list[i].character);
148
s.integer(list[i].nameselect);
149
s.integer(list[i].vflip);
150
s.integer(list[i].hflip);
151
s.integer(list[i].priority);
152
s.integer(list[i].palette);
153
s.integer(list[i].size);
154
}
155
156
s.integer(t.x);
157
s.integer(t.y);
158
159
s.integer(t.item_count);
160
s.integer(t.tile_count);
161
162
s.integer(t.active);
163
for(unsigned n = 0; n < 2; n++) {
164
s.array(t.item[n]);
165
for(unsigned i = 0; i < 34; i++) {
166
s.integer(t.tile[n][i].x);
167
s.integer(t.tile[n][i].priority);
168
s.integer(t.tile[n][i].palette);
169
s.integer(t.tile[n][i].hflip);
170
s.integer(t.tile[n][i].d0);
171
s.integer(t.tile[n][i].d1);
172
s.integer(t.tile[n][i].d2);
173
s.integer(t.tile[n][i].d3);
174
}
175
}
176
177
s.integer(regs.main_enable);
178
s.integer(regs.sub_enable);
179
s.integer(regs.interlace);
180
181
s.integer(regs.base_size);
182
s.integer(regs.nameselect);
183
s.integer(regs.tiledata_addr);
184
s.integer(regs.first_sprite);
185
186
s.integer(regs.priority0);
187
s.integer(regs.priority1);
188
s.integer(regs.priority2);
189
s.integer(regs.priority3);
190
191
s.integer(regs.time_over);
192
s.integer(regs.range_over);
193
194
s.integer(output.main.priority);
195
s.integer(output.main.palette);
196
197
s.integer(output.sub.priority);
198
s.integer(output.sub.palette);
199
}
200
201
void PPU::Window::serialize(serializer &s) {
202
s.integer(regs.bg1_one_enable);
203
s.integer(regs.bg1_one_invert);
204
s.integer(regs.bg1_two_enable);
205
s.integer(regs.bg1_two_invert);
206
207
s.integer(regs.bg2_one_enable);
208
s.integer(regs.bg2_one_invert);
209
s.integer(regs.bg2_two_enable);
210
s.integer(regs.bg2_two_invert);
211
212
s.integer(regs.bg3_one_enable);
213
s.integer(regs.bg3_one_invert);
214
s.integer(regs.bg3_two_enable);
215
s.integer(regs.bg3_two_invert);
216
217
s.integer(regs.bg4_one_enable);
218
s.integer(regs.bg4_one_invert);
219
s.integer(regs.bg4_two_enable);
220
s.integer(regs.bg4_two_invert);
221
222
s.integer(regs.oam_one_enable);
223
s.integer(regs.oam_one_invert);
224
s.integer(regs.oam_two_enable);
225
s.integer(regs.oam_two_invert);
226
227
s.integer(regs.col_one_enable);
228
s.integer(regs.col_one_invert);
229
s.integer(regs.col_two_enable);
230
s.integer(regs.col_two_invert);
231
232
s.integer(regs.one_left);
233
s.integer(regs.one_right);
234
s.integer(regs.two_left);
235
s.integer(regs.two_right);
236
237
s.integer(regs.bg1_mask);
238
s.integer(regs.bg2_mask);
239
s.integer(regs.bg3_mask);
240
s.integer(regs.bg4_mask);
241
s.integer(regs.oam_mask);
242
s.integer(regs.col_mask);
243
244
s.integer(regs.bg1_main_enable);
245
s.integer(regs.bg1_sub_enable);
246
s.integer(regs.bg2_main_enable);
247
s.integer(regs.bg2_sub_enable);
248
s.integer(regs.bg3_main_enable);
249
s.integer(regs.bg3_sub_enable);
250
s.integer(regs.bg4_main_enable);
251
s.integer(regs.bg4_sub_enable);
252
s.integer(regs.oam_main_enable);
253
s.integer(regs.oam_sub_enable);
254
255
s.integer(regs.col_main_mask);
256
s.integer(regs.col_sub_mask);
257
258
s.integer(output.main.color_enable);
259
s.integer(output.sub.color_enable);
260
261
s.integer(x);
262
s.integer(one);
263
s.integer(two);
264
}
265
266
void PPU::Screen::serialize(serializer &s) {
267
s.integer(regs.addsub_mode);
268
s.integer(regs.direct_color);
269
270
s.integer(regs.color_mode);
271
s.integer(regs.color_halve);
272
s.integer(regs.bg1_color_enable);
273
s.integer(regs.bg2_color_enable);
274
s.integer(regs.bg3_color_enable);
275
s.integer(regs.bg4_color_enable);
276
s.integer(regs.oam_color_enable);
277
s.integer(regs.back_color_enable);
278
279
s.integer(regs.color_b);
280
s.integer(regs.color_g);
281
s.integer(regs.color_r);
282
}
283
284
#endif
285
286