mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-23 14:42:33 +01:00
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
85 lines
2.3 KiB
C++
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);
|
|
}
|