Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libsnes/bsnes/snes/alt/ppu-compatibility/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,128 * 1024);
20
s.array(oam,544);
21
s.array(cgram,512);
22
23
s.integer(ppu1_version);
24
s.integer(ppu2_version);
25
26
s.integer(region);
27
s.integer(line);
28
29
s.integer(display.interlace);
30
s.integer(display.overscan);
31
32
s.integer(cache.oam_basesize);
33
s.integer(cache.oam_nameselect);
34
s.integer(cache.oam_tdaddr);
35
36
s.integer(regs.ppu1_mdr);
37
s.integer(regs.ppu2_mdr);
38
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_y[n]);
39
40
s.integer(regs.ioamaddr);
41
s.integer(regs.icgramaddr);
42
43
s.integer(regs.display_disabled);
44
s.integer(regs.display_brightness);
45
46
s.integer(regs.oam_basesize);
47
s.integer(regs.oam_nameselect);
48
s.integer(regs.oam_tdaddr);
49
50
s.integer(regs.oam_baseaddr);
51
s.integer(regs.oam_addr);
52
s.integer(regs.oam_priority);
53
s.integer(regs.oam_firstsprite);
54
55
s.integer(regs.oam_latchdata);
56
57
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_tilesize[n]);
58
s.integer(regs.bg3_priority);
59
s.integer(regs.bg_mode);
60
61
s.integer(regs.mosaic_size);
62
for(unsigned n = 0; n < 4; n++) s.integer(regs.mosaic_enabled[n]);
63
s.integer(regs.mosaic_countdown);
64
65
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_scaddr[n]);
66
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_scsize[n]);
67
68
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_tdaddr[n]);
69
70
s.integer(regs.bg_ofslatch);
71
s.integer(regs.m7_hofs);
72
s.integer(regs.m7_vofs);
73
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_hofs[n]);
74
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_vofs[n]);
75
76
s.integer(regs.vram_incmode);
77
s.integer(regs.vram_mapping);
78
s.integer(regs.vram_incsize);
79
80
s.integer(regs.vram_addr);
81
82
s.integer(regs.mode7_repeat);
83
s.integer(regs.mode7_vflip);
84
s.integer(regs.mode7_hflip);
85
86
s.integer(regs.m7_latch);
87
s.integer(regs.m7a);
88
s.integer(regs.m7b);
89
s.integer(regs.m7c);
90
s.integer(regs.m7d);
91
s.integer(regs.m7x);
92
s.integer(regs.m7y);
93
94
s.integer(regs.cgram_addr);
95
96
s.integer(regs.cgram_latchdata);
97
98
for(unsigned n = 0; n < 6; n++) s.integer(regs.window1_enabled[n]);
99
for(unsigned n = 0; n < 6; n++) s.integer(regs.window1_invert [n]);
100
for(unsigned n = 0; n < 6; n++) s.integer(regs.window2_enabled[n]);
101
for(unsigned n = 0; n < 6; n++) s.integer(regs.window2_invert [n]);
102
103
s.integer(regs.window1_left);
104
s.integer(regs.window1_right);
105
s.integer(regs.window2_left);
106
s.integer(regs.window2_right);
107
108
for(unsigned n = 0; n < 6; n++) s.integer(regs.window_mask[n]);
109
for(unsigned n = 0; n < 5; n++) s.integer(regs.bg_enabled[n]);
110
for(unsigned n = 0; n < 5; n++) s.integer(regs.bgsub_enabled[n]);
111
for(unsigned n = 0; n < 5; n++) s.integer(regs.window_enabled[n]);
112
for(unsigned n = 0; n < 5; n++) s.integer(regs.sub_window_enabled[n]);
113
114
s.integer(regs.color_mask);
115
s.integer(regs.colorsub_mask);
116
s.integer(regs.addsub_mode);
117
s.integer(regs.direct_color);
118
119
s.integer(regs.color_mode);
120
s.integer(regs.color_halve);
121
for(unsigned n = 0; n < 6; n++) s.integer(regs.color_enabled[n]);
122
123
s.integer(regs.color_r);
124
s.integer(regs.color_g);
125
s.integer(regs.color_b);
126
s.integer(regs.color_rgb);
127
128
s.integer(regs.mode7_extbg);
129
s.integer(regs.pseudo_hires);
130
s.integer(regs.overscan);
131
s.integer(regs.scanlines);
132
s.integer(regs.oam_interlace);
133
s.integer(regs.interlace);
134
135
s.integer(regs.hcounter);
136
s.integer(regs.vcounter);
137
s.integer(regs.latch_hcounter);
138
s.integer(regs.latch_vcounter);
139
s.integer(regs.counters_latched);
140
141
s.integer(regs.vram_readbuffer);
142
143
s.integer(regs.time_over);
144
s.integer(regs.range_over);
145
s.integer(regs.oam_itemcount);
146
s.integer(regs.oam_tilecount);
147
148
for(unsigned n = 0; n < 256; n++) {
149
s.integer(pixel_cache[n].src_main);
150
s.integer(pixel_cache[n].src_sub);
151
s.integer(pixel_cache[n].bg_main);
152
s.integer(pixel_cache[n].bg_sub);
153
s.integer(pixel_cache[n].ce_main);
154
s.integer(pixel_cache[n].ce_sub);
155
s.integer(pixel_cache[n].pri_main);
156
s.integer(pixel_cache[n].pri_sub);
157
}
158
159
//zero TODO - only on load
160
//better to just take a small speed hit than store all of bg_tiledata[3][] ...
161
flush_tiledata_cache();
162
163
for(unsigned n = 0; n < 6; n++) {
164
s.array(window[n].main, 256);
165
s.array(window[n].sub, 256);
166
}
167
168
for(unsigned n = 0; n < 4; n++) {
169
s.integer(bg_info[n].tw);
170
s.integer(bg_info[n].th);
171
s.integer(bg_info[n].mx);
172
s.integer(bg_info[n].my);
173
s.integer(bg_info[n].scx);
174
s.integer(bg_info[n].scy);
175
}
176
177
for(unsigned n = 0; n < 128; n++) {
178
s.integer(sprite_list[n].width);
179
s.integer(sprite_list[n].height);
180
s.integer(sprite_list[n].x);
181
s.integer(sprite_list[n].y);
182
s.integer(sprite_list[n].character);
183
s.integer(sprite_list[n].use_nameselect);
184
s.integer(sprite_list[n].vflip);
185
s.integer(sprite_list[n].hflip);
186
s.integer(sprite_list[n].palette);
187
s.integer(sprite_list[n].priority);
188
s.integer(sprite_list[n].size);
189
}
190
s.integer(sprite_list_valid);
191
s.integer(active_sprite);
192
193
s.array(oam_itemlist, 32);
194
195
for(unsigned n = 0; n < 34; n++) {
196
s.integer(oam_tilelist[n].x);
197
s.integer(oam_tilelist[n].y);
198
s.integer(oam_tilelist[n].pri);
199
s.integer(oam_tilelist[n].pal);
200
s.integer(oam_tilelist[n].tile);
201
s.integer(oam_tilelist[n].hflip);
202
}
203
204
s.array(oam_line_pal, 256);
205
s.array(oam_line_pri, 256);
206
207
s.integer(uindex);
208
}
209
210
#endif
211
212