Path: blob/master/libsnes/bsnes/snes/alt/ppu-performance/serialization.cpp
2 views
#ifdef PPU_CPP12void PPUcounter::serialize(serializer &s) {3s.integer(status.interlace);4s.integer(status.field);5s.integer(status.vcounter);6s.integer(status.hcounter);78s.array(history.field);9s.array(history.vcounter);10s.array(history.hcounter);11s.integer(history.index);12}1314void PPU::serialize(serializer &s) {15Processor::serialize(s);16PPUcounter::serialize(s);1718s.array(vram, 64 * 1024);19s.array(oam, 544);20s.array(cgram, 512);2122cache.serialize(s);23bg1.serialize(s);24bg2.serialize(s);25bg3.serialize(s);26bg4.serialize(s);27sprite.serialize(s);28screen.serialize(s);2930s.integer(display.interlace);31s.integer(display.overscan);32s.integer(display.width);33s.integer(display.height);3435s.integer(regs.ppu1_mdr);36s.integer(regs.ppu2_mdr);3738s.integer(regs.vram_readbuffer);39s.integer(regs.oam_latchdata);40s.integer(regs.cgram_latchdata);41s.integer(regs.bgofs_latchdata);42s.integer(regs.mode7_latchdata);4344s.integer(regs.counters_latched);45s.integer(regs.latch_hcounter);46s.integer(regs.latch_vcounter);4748s.integer(regs.display_disable);49s.integer(regs.display_brightness);5051s.integer(regs.oam_baseaddr);52s.integer(regs.oam_addr);53s.integer(regs.oam_priority);5455s.integer(regs.bg3_priority);56s.integer(regs.bgmode);5758s.integer(regs.mode7_hoffset);5960s.integer(regs.mode7_voffset);6162s.integer(regs.vram_incmode);63s.integer(regs.vram_mapping);64s.integer(regs.vram_incsize);6566s.integer(regs.vram_addr);6768s.integer(regs.mode7_repeat);69s.integer(regs.mode7_vflip);70s.integer(regs.mode7_hflip);7172s.integer(regs.m7a);73s.integer(regs.m7b);74s.integer(regs.m7c);75s.integer(regs.m7d);76s.integer(regs.m7x);77s.integer(regs.m7y);7879s.integer(regs.cgram_addr);8081s.integer(regs.window_one_left);82s.integer(regs.window_one_right);83s.integer(regs.window_two_left);84s.integer(regs.window_two_right);8586s.integer(regs.mode7_extbg);87s.integer(regs.pseudo_hires);88s.integer(regs.overscan);89s.integer(regs.interlace);9091s.integer(regs.hcounter);9293s.integer(regs.vcounter);94}9596void PPU::Cache::serialize(serializer &s) {97//rather than save ~512KB worth of cached tiledata, invalidate it all98for(unsigned i = 0; i < 4096; i++) tilevalid[0][i] = false;99for(unsigned i = 0; i < 2048; i++) tilevalid[1][i] = false;100for(unsigned i = 0; i < 1024; i++) tilevalid[2][i] = false;101}102103void PPU::Background::serialize(serializer &s) {104s.integer(regs.mode);105s.integer(regs.priority0);106s.integer(regs.priority1);107108s.integer(regs.tile_size);109s.integer(regs.mosaic);110111s.integer(regs.screen_addr);112s.integer(regs.screen_size);113s.integer(regs.tiledata_addr);114115s.integer(regs.hoffset);116s.integer(regs.voffset);117118s.integer(regs.main_enable);119s.integer(regs.sub_enable);120121s.integer(hires);122s.integer(width);123124s.integer(tile_width);125s.integer(tile_height);126127s.integer(mask_x);128s.integer(mask_y);129130s.integer(scx);131s.integer(scy);132133s.integer(hscroll);134s.integer(vscroll);135136s.integer(mosaic_vcounter);137s.integer(mosaic_voffset);138139window.serialize(s);140}141142void PPU::Sprite::serialize(serializer &s) {143s.integer(regs.priority0);144s.integer(regs.priority1);145s.integer(regs.priority2);146s.integer(regs.priority3);147148s.integer(regs.base_size);149s.integer(regs.nameselect);150s.integer(regs.tiledata_addr);151s.integer(regs.first_sprite);152153s.integer(regs.main_enable);154s.integer(regs.sub_enable);155156s.integer(regs.interlace);157158s.integer(regs.time_over);159s.integer(regs.range_over);160161for(unsigned i = 0; i < 128; i++) {162s.integer(list[i].width);163s.integer(list[i].height);164s.integer(list[i].x);165s.integer(list[i].y);166s.integer(list[i].character);167s.integer(list[i].use_nameselect);168s.integer(list[i].vflip);169s.integer(list[i].hflip);170s.integer(list[i].palette);171s.integer(list[i].priority);172s.integer(list[i].size);173}174s.integer(list_valid);175176s.array(itemlist);177for(unsigned i = 0; i < 34; i++) {178s.integer(tilelist[i].x);179s.integer(tilelist[i].y);180s.integer(tilelist[i].priority);181s.integer(tilelist[i].palette);182s.integer(tilelist[i].tile);183s.integer(tilelist[i].hflip);184}185186s.array(output.palette);187s.array(output.priority);188189window.serialize(s);190}191192void PPU::Screen::serialize(serializer &s) {193s.integer(regs.addsub_mode);194s.integer(regs.direct_color);195196s.integer(regs.color_mode);197s.integer(regs.color_halve);198s.array(regs.color_enable);199200s.integer(regs.color_b);201s.integer(regs.color_g);202s.integer(regs.color_r);203s.integer(regs.color);204205for(unsigned i = 0; i < 256; i++) {206s.integer(output.main[i].color);207s.integer(output.main[i].priority);208s.integer(output.main[i].source);209210s.integer(output.sub[i].color);211s.integer(output.sub[i].priority);212s.integer(output.sub[i].source);213}214215window.serialize(s);216}217218void PPU::LayerWindow::serialize(serializer &s) {219s.integer(one_enable);220s.integer(one_invert);221s.integer(two_enable);222s.integer(two_invert);223224s.integer(mask);225226s.integer(main_enable);227s.integer(sub_enable);228229s.array(main);230s.array(sub);231}232233void PPU::ColorWindow::serialize(serializer &s) {234s.integer(one_enable);235s.integer(one_invert);236s.integer(two_enable);237s.integer(two_invert);238239s.integer(mask);240241s.integer(main_mask);242s.integer(sub_mask);243244s.array(main);245s.array(sub);246}247248#endif249250251