bsnes/higan/ws/ppu/serialization.cpp
Tim Allen 8af3e4a6e2 Update to v102r22 release.
byuu says:

Changelog:

  - higan: Emulator::Interface::videoSize() renamed to videoResolution()
  - higan: Emulator::Interface::rtcsync() renamed to rtcSynchronize()
  - higan: added video display rotation support to Video
  - GBA: substantially improved audio mixing
      - fixed bug with FIFO 50%/100% volume setting
      - now properly using SOUNDBIAS amplitude to control output
        frequencies
      - reduced quantization noise
      - corrected relative volumes between PSG and FIFO channels
      - both PSG and FIFO values cached based on amplitude; resulting in
        cleaner PCM samples
      - treating PSG volume=3 as 200% volume instead of 0% volume now
        (unverified: to match mGBA)
  - GBA: properly initialize ALL CPU state; including the vital
    prefetch.wait=1 (fixes Classic NES series games)
  - GBA: added video rotation with automatic key translation support
  - PCE: reduced output resolution scalar from 285x242 to 285x240
      - the extra two scanlines won't be visible on most TVs; and they
        make all other cores look worse
      - this is because all other cores output at 240p or less; so they
        were all receiving black bars in windowed mode
  - tomoko: added "Rotate Display" hotkey setting
  - tomoko: changed hotkey multi-key logic to OR instead of AND
      - left support for flipping it back inside the core; for those so
        inclined; by uncommenting one line in input.hpp
  - tomoko: when choosing Settings→Configuration, it will
    automatically select the currently loaded system
      - for instance, if you're playing a Game Gear game, it'll take you
        to the Game Gear input settings
      - if no games are loaded, it will take you to the hotkeys panel
        instead
  - WS(C): merged "Hardware-Vertical", "Hardware-Horizontal" controls
    into combined "Hardware"
  - WS(C): converted rotation support from being inside the core to
    using Emulator::Video
      - this lets WS(C) video content scale larger now that it's not
        bounded by a 224x224 square box
  - WS(C): added automatic key rotation support
  - WS(C): removed emulator "Rotate" key (use the general hotkey
    instead; I recommend F8 for this)
  - nall: added serializer support for nall::Boolean (boolean) types
      - although I will probably prefer the usage of uint1 in most cases
2017-06-09 00:08:02 +10:00

85 lines
2.3 KiB
C++

auto PPU::serialize(serializer& s) -> void {
Thread::serialize(s);
s.integer(this->s.field);
s.integer(this->s.vclk);
s.integer(this->s.hclk);
s.integer((uint&)this->s.pixel.source);
s.integer(this->s.pixel.color);
s.integer(l.backColor);
s.integer(l.screenOneEnable);
s.integer(l.screenOneMapBase);
s.integer(l.scrollOneX);
s.integer(l.scrollOneY);
s.integer(l.screenTwoEnable);
s.integer(l.screenTwoMapBase);
s.integer(l.scrollTwoX);
s.integer(l.scrollTwoY);
s.integer(l.screenTwoWindowEnable);
s.integer(l.screenTwoWindowInvert);
s.integer(l.screenTwoWindowX0);
s.integer(l.screenTwoWindowY0);
s.integer(l.screenTwoWindowX1);
s.integer(l.screenTwoWindowY1);
s.integer(l.spriteEnable);
s.integer(l.spriteWindowEnable);
s.integer(l.spriteWindowX0);
s.integer(l.spriteWindowY0);
s.integer(l.spriteWindowX1);
s.integer(l.spriteWindowY1);
s.array(l.sprite);
s.integer(l.spriteCount);
for(uint n : range(2)) s.array(l.oam[n]);
s.integer(l.oamCount);
s.integer(r.screenOneEnable);
s.integer(r.screenTwoEnable);
s.integer(r.spriteEnable);
s.integer(r.spriteWindowEnable);
s.integer(r.screenTwoWindowInvert);
s.integer(r.screenTwoWindowEnable);
s.integer(r.backColor);
s.integer(r.lineCompare);
s.integer(r.spriteBase);
s.integer(r.spriteFirst);
s.integer(r.spriteCount);
s.integer(r.screenOneMapBase);
s.integer(r.screenTwoMapBase);
s.integer(r.screenTwoWindowX0);
s.integer(r.screenTwoWindowY0);
s.integer(r.screenTwoWindowX1);
s.integer(r.screenTwoWindowY1);
s.integer(r.spriteWindowX0);
s.integer(r.spriteWindowY0);
s.integer(r.spriteWindowX1);
s.integer(r.spriteWindowY1);
s.integer(r.scrollOneX);
s.integer(r.scrollOneY);
s.integer(r.scrollTwoX);
s.integer(r.scrollTwoY);
s.integer(r.lcdEnable);
s.integer(r.lcdContrast);
s.integer(r.lcdUnknown);
s.integer(r.iconSleep);
s.integer(r.iconVertical);
s.integer(r.iconHorizontal);
s.integer(r.iconAux1);
s.integer(r.iconAux2);
s.integer(r.iconAux3);
s.integer(r.vtotal);
s.integer(r.vblank);
s.array(r.pool);
for(uint n : range(16)) s.array(r.palette[n].color);
s.integer(r.htimerEnable);
s.integer(r.htimerRepeat);
s.integer(r.vtimerEnable);
s.integer(r.vtimerRepeat);
s.integer(r.htimerFrequency);
s.integer(r.vtimerFrequency);
s.integer(r.htimerCounter);
s.integer(r.vtimerCounter);
}