libsnes: Cleanup some dead code. Apparently the codebase contained a primitive attempt to implement savestates, but it contained significant bugs and had no use beyond toy projects.

This commit is contained in:
nattthebear 2017-06-11 09:37:47 -04:00
parent 418ef7c080
commit ee026d0525
136 changed files with 3 additions and 2640 deletions

Binary file not shown.

BIN
output64/dll/libsnes.wbx.gz Normal file

Binary file not shown.

View File

@ -16,7 +16,6 @@ const char Version[] = "087";
#include <nall/priorityqueue.hpp>
#include <nall/property.hpp>
#include <nall/random.hpp>
#include <nall/serializer.hpp>
#include <nall/stdint.hpp>
#include <nall/string.hpp>
#include <nall/utility.hpp>

View File

@ -8,7 +8,6 @@ namespace GameBoy {
#include "wave/wave.cpp"
#include "noise/noise.cpp"
#include "master/master.cpp"
#include "serialization.cpp"
APU apu;
void APU::Main() {

View File

@ -21,8 +21,6 @@ struct APU : Processor, MMIO {
uint8 mmio_read(uint16 addr);
void mmio_write(uint16 addr, uint8 data);
void serialize(serializer&);
};
extern APU apu;

View File

@ -96,24 +96,4 @@ void APU::Master::power() {
right = 0;
}
void APU::Master::serialize(serializer &s) {
s.integer(left_in_enable);
s.integer(left_volume);
s.integer(right_in_enable);
s.integer(right_volume);
s.integer(channel4_left_enable);
s.integer(channel3_left_enable);
s.integer(channel2_left_enable);
s.integer(channel1_left_enable);
s.integer(channel4_right_enable);
s.integer(channel3_right_enable);
s.integer(channel2_right_enable);
s.integer(channel1_right_enable);
s.integer(enable);
s.integer(center);
s.integer(left);
s.integer(right);
}
#endif

View File

@ -20,5 +20,4 @@ struct Master {
void run();
void write(unsigned r, uint8 data);
void power();
void serialize(serializer&);
};

View File

@ -86,23 +86,4 @@ void APU::Noise::power() {
lfsr = 0;
}
void APU::Noise::serialize(serializer &s) {
s.integer(enable);
s.integer(envelope_volume);
s.integer(envelope_direction);
s.integer(envelope_frequency);
s.integer(frequency);
s.integer(narrow_lfsr);
s.integer(divisor);
s.integer(counter);
s.integer(output);
s.integer(length);
s.integer(envelope_period);
s.integer(volume);
s.integer(period);
s.integer(lfsr);
}
#endif

View File

@ -23,5 +23,4 @@ struct Noise {
void clock_envelope();
void write(unsigned r, uint8 data);
void power();
void serialize(serializer&);
};

View File

@ -1,17 +0,0 @@
#ifdef APU_CPP
void APU::serialize(serializer &s) {
Processor::serialize(s);
s.array(mmio_data);
s.integer(sequencer_base);
s.integer(sequencer_step);
square1.serialize(s);
square2.serialize(s);
wave.serialize(s);
noise.serialize(s);
master.serialize(s);
}
#endif

View File

@ -131,30 +131,4 @@ void APU::Square1::power() {
volume = 0;
}
void APU::Square1::serialize(serializer &s) {
s.integer(enable);
s.integer(sweep_frequency);
s.integer(sweep_direction);
s.integer(sweep_shift);
s.integer(sweep_negate);
s.integer(duty);
s.integer(length);
s.integer(envelope_volume);
s.integer(envelope_direction);
s.integer(envelope_frequency);
s.integer(frequency);
s.integer(counter);
s.integer(output);
s.integer(duty_output);
s.integer(phase);
s.integer(period);
s.integer(envelope_period);
s.integer(sweep_period);
s.integer(frequency_shadow);
s.integer(sweep_enable);
s.integer(volume);
}
#endif

View File

@ -32,5 +32,4 @@ struct Square1 {
void clock_envelope();
void write(unsigned r, uint8 data);
void power();
void serialize(serializer&);
};

View File

@ -88,23 +88,4 @@ void APU::Square2::power() {
volume = 0;
}
void APU::Square2::serialize(serializer &s) {
s.integer(enable);
s.integer(duty);
s.integer(length);
s.integer(envelope_volume);
s.integer(envelope_direction);
s.integer(envelope_frequency);
s.integer(frequency);
s.integer(counter);
s.integer(output);
s.integer(duty_output);
s.integer(phase);
s.integer(period);
s.integer(envelope_period);
s.integer(volume);
}
#endif

View File

@ -23,5 +23,4 @@ struct Square2 {
void clock_envelope();
void write(unsigned r, uint8 data);
void power();
void serialize(serializer&);
};

View File

@ -80,20 +80,4 @@ void APU::Wave::power() {
pattern_sample = 0;
}
void APU::Wave::serialize(serializer &s) {
s.integer(enable);
s.integer(dac_enable);
s.integer(volume_shift);
s.integer(frequency);
s.integer(counter);
s.array(pattern);
s.integer(output);
s.integer(length);
s.integer(period);
s.integer(pattern_offset);
s.integer(pattern_sample);
}
#endif

View File

@ -18,5 +18,4 @@ struct Wave {
void write(unsigned r, uint8 data);
void write_pattern(unsigned p, uint8 data);
void power();
void serialize(serializer&);
};

View File

@ -13,7 +13,6 @@ namespace GameBoy {
#include "mmm01/mmm01.cpp"
#include "huc1/huc1.cpp"
#include "huc3/huc3.cpp"
#include "serialization.cpp"
Cartridge cartridge;
void Cartridge::load(System::Revision revision, const string &markup, const uint8_t *data, unsigned size) {

View File

@ -58,7 +58,6 @@ struct Cartridge : MMIO, property<Cartridge> {
void power();
void serialize(serializer&);
Cartridge();
~Cartridge();
};

View File

@ -1,54 +0,0 @@
#ifdef CARTRIDGE_CPP
void Cartridge::serialize(serializer &s) {
if(info.battery) s.array(ramdata, ramsize);
s.integer(bootrom_enable);
s.integer(mbc1.ram_enable);
s.integer(mbc1.rom_select);
s.integer(mbc1.ram_select);
s.integer(mbc1.mode_select);
s.integer(mbc2.ram_enable);
s.integer(mbc2.rom_select);
s.integer(mbc3.ram_enable);
s.integer(mbc3.rom_select);
s.integer(mbc3.ram_select);
s.integer(mbc3.rtc_latch);
s.integer(mbc3.rtc_halt);
s.integer(mbc3.rtc_second);
s.integer(mbc3.rtc_minute);
s.integer(mbc3.rtc_hour);
s.integer(mbc3.rtc_day);
s.integer(mbc3.rtc_day_carry);
s.integer(mbc3.rtc_latch_second);
s.integer(mbc3.rtc_latch_minute);
s.integer(mbc3.rtc_latch_hour);
s.integer(mbc3.rtc_latch_day);
s.integer(mbc3.rtc_latch_day_carry);
s.integer(mbc5.ram_enable);
s.integer(mbc5.rom_select);
s.integer(mbc5.ram_select);
s.integer(mmm01.rom_mode);
s.integer(mmm01.rom_base);
s.integer(mmm01.ram_enable);
s.integer(mmm01.rom_select);
s.integer(mmm01.ram_select);
s.integer(huc1.ram_writable);
s.integer(huc1.rom_select);
s.integer(huc1.ram_select);
s.integer(huc1.model);
s.integer(huc3.ram_enable);
s.integer(huc3.rom_select);
s.integer(huc3.ram_select);
}
#endif

View File

@ -8,7 +8,6 @@ namespace GameBoy {
#include "core/core.cpp"
#include "mmio/mmio.cpp"
#include "timing/timing.cpp"
#include "serialization.cpp"
CPU cpu;
void CPU::Main() {

View File

@ -98,7 +98,6 @@ struct CPU : Processor, MMIO {
void interrupt_exec(uint16 pc);
void power();
void serialize(serializer&);
void initialize();
CPU();
~CPU();

View File

@ -1,76 +0,0 @@
#ifdef CPU_CPP
void CPU::serialize(serializer &s) {
Processor::serialize(s);
s.array(wram,32768);
s.array(hram,8192);
s.integer(r.a.data);
s.integer(r.f.z);
s.integer(r.f.n);
s.integer(r.f.h);
s.integer(r.f.c);
s.integer(r.b.data);
s.integer(r.c.data);
s.integer(r.d.data);
s.integer(r.e.data);
s.integer(r.h.data);
s.integer(r.l.data);
s.integer(r.sp.data);
s.integer(r.pc.data);
s.integer(status.clock);
s.integer(status.halt);
s.integer(status.stop);
s.integer(status.ei);
s.integer(status.ime);
s.integer(status.p15);
s.integer(status.p14);
s.integer(status.joyp);
s.integer(status.mlt_req);
s.integer(status.serial_data);
s.integer(status.serial_bits);
s.integer(status.serial_transfer);
s.integer(status.serial_clock);
s.integer(status.div);
s.integer(status.tima);
s.integer(status.tma);
s.integer(status.timer_enable);
s.integer(status.timer_clock);
s.integer(status.interrupt_request_joypad);
s.integer(status.interrupt_request_serial);
s.integer(status.interrupt_request_timer);
s.integer(status.interrupt_request_stat);
s.integer(status.interrupt_request_vblank);
s.integer(status.speed_double);
s.integer(status.speed_switch);
s.integer(status.dma_source);
s.integer(status.dma_target);
s.integer(status.dma_mode);
s.integer(status.dma_length);
s.integer(status.ff6c);
s.integer(status.wram_bank);
s.integer(status.ff72);
s.integer(status.ff73);
s.integer(status.ff74);
s.integer(status.ff75);
s.integer(status.interrupt_enable_joypad);
s.integer(status.interrupt_enable_serial);
s.integer(status.interrupt_enable_timer);
s.integer(status.interrupt_enable_stat);
s.integer(status.interrupt_enable_vblank);
}
#endif

View File

@ -3,13 +3,6 @@
#include <base/base.hpp>
namespace GameBoy {
namespace Info {
static const char Name[] = "bgameboy";
static const unsigned SerializerVersion = 3;
}
}
/*
bgameboy - Game Boy, Super Game Boy, and Game Boy Color emulator
author: byuu
@ -33,11 +26,6 @@ namespace GameBoy {
clock = 0;
}
inline void serialize(serializer &s) {
s.integer(frequency);
s.integer(clock);
}
inline Processor() : thread(nullptr) {
}

View File

@ -12,7 +12,6 @@ namespace GameBoy {
#include "dmg.cpp"
#include "cgb.cpp"
#include "mmio/mmio.cpp"
#include "serialization.cpp"
LCD lcd;
void LCD::Main() {

View File

@ -87,7 +87,6 @@ struct LCD : Processor, MMIO {
void power();
void serialize(serializer&);
LCD();
};

View File

@ -1,53 +0,0 @@
#ifdef LCD_CPP
void LCD::serialize(serializer &s) {
Processor::serialize(s);
s.array(screen);
s.array(line);
s.array(origin);
s.array(vram);
s.array(oam);
s.array(bgp);
s.array(obp[0]);
s.array(obp[1]);
s.array(bgpd);
s.array(obpd);
s.integer(status.lx);
s.integer(status.wyc);
s.integer(status.display_enable);
s.integer(status.window_tilemap_select);
s.integer(status.window_display_enable);
s.integer(status.bg_tiledata_select);
s.integer(status.bg_tilemap_select);
s.integer(status.ob_size);
s.integer(status.ob_enable);
s.integer(status.bg_enable);
s.integer(status.interrupt_lyc);
s.integer(status.interrupt_oam);
s.integer(status.interrupt_vblank);
s.integer(status.interrupt_hblank);
s.integer(status.scy);
s.integer(status.scx);
s.integer(status.ly);
s.integer(status.lyc);
s.integer(status.wy);
s.integer(status.wx);
s.integer(status.vram_bank);
s.integer(status.bgpi_increment);
s.integer(status.bgpi);
s.integer(status.obpi_increment);
s.integer(status.obpi);
}
#endif

View File

@ -1,64 +0,0 @@
#ifdef SYSTEM_CPP
serializer System::serialize() {
serializer s(serialize_size);
unsigned signature = 0x31545342, version = Info::SerializerVersion, crc32 = 0;
char description[512];
memset(&description, 0, sizeof description);
s.integer(signature);
s.integer(version);
s.integer(crc32);
s.array(description);
serialize_all(s);
return s;
}
bool System::unserialize(serializer &s) {
unsigned signature, version, crc32;
char description[512];
s.integer(signature);
s.integer(version);
s.integer(crc32);
s.array(description);
if(signature != 0x31545342) return false;
if(version != Info::SerializerVersion) return false;
//if(crc32 != 0) return false;
power();
serialize_all(s);
return true;
}
void System::serialize(serializer &s) {
s.integer(clocks_executed);
}
void System::serialize_all(serializer &s) {
cartridge.serialize(s);
system.serialize(s);
cpu.serialize(s);
apu.serialize(s);
lcd.serialize(s);
}
void System::serialize_init() {
serializer s;
unsigned signature = 0, version = 0, crc32 = 0;
char description[512];
s.integer(signature);
s.integer(version);
s.integer(crc32);
s.array(description);
serialize_all(s);
serialize_size = s.size();
}
#endif

View File

@ -6,7 +6,6 @@ namespace GameBoy {
#include "bootrom-dmg.cpp"
#include "bootrom-sgb.cpp"
#include "bootrom-cgb.cpp"
#include "serialization.cpp"
System system;
void System::run() {
@ -40,7 +39,6 @@ void System::init() {
void System::load(Revision revision) {
this->revision = revision;
serialize_init();
}
void System::power() {

View File

@ -31,15 +31,6 @@ struct System : property<System> {
unsigned clocks_executed;
//serialization.cpp
unsigned serialize_size;
serializer serialize();
bool unserialize(serializer&);
void serialize(serializer&);
void serialize_all(serializer&);
void serialize_init();
};
#include <gameboy/interface/interface.hpp>

View File

@ -20,10 +20,6 @@ namespace nall {
buffer[index + size + size] = value;
}
void serialize(serializer &s) {
s.array(buffer, size * 3);
}
modulo_array() {
buffer = new T[size * 3]();
}

View File

@ -66,15 +66,6 @@ namespace nall {
heapsize = 0;
}
void serialize(serializer &s) {
s.integer(basecounter);
s.integer(heapsize);
for(unsigned n = 0; n < heapcapacity; n++) {
s.integer(heap[n].counter);
s.integer(heap[n].event);
}
}
priority_queue(unsigned size, function<void (type_t)> callback_ = &priority_queue_nocallback<type_t>)
: callback(callback_) {
heap = new heap_t[size];

View File

@ -5,7 +5,6 @@ namespace SNES {
CPU cpu;
#include "serialization.cpp"
#include "dma.cpp"
#include "memory.cpp"
#include "mmio.cpp"

View File

@ -27,7 +27,6 @@ public:
void power();
void reset();
void serialize(serializer&);
CPU();
~CPU();
void initialize();

View File

@ -1,86 +0,0 @@
#ifdef CPU_CPP
void CPU::serialize(serializer &s) {
Processor::serialize(s);
CPUcore::core_serialize(s);
PPUcounter::serialize(s);
s.array(wram, 128 * 1024);
queue.serialize(s);
s.array(port_data);
for(unsigned i = 0; i < 8; i++) {
s.integer(channel[i].dma_enabled);
s.integer(channel[i].hdma_enabled);
s.integer(channel[i].direction);
s.integer(channel[i].indirect);
s.integer(channel[i].unused);
s.integer(channel[i].reverse_transfer);
s.integer(channel[i].fixed_transfer);
s.integer(channel[i].transfer_mode);
s.integer(channel[i].dest_addr);
s.integer(channel[i].source_addr);
s.integer(channel[i].source_bank);
s.integer(channel[i].transfer_size);
s.integer(channel[i].indirect_bank);
s.integer(channel[i].hdma_addr);
s.integer(channel[i].line_counter);
s.integer(channel[i].unknown);
s.integer(channel[i].hdma_completed);
s.integer(channel[i].hdma_do_transfer);
}
s.integer(status.nmi_valid);
s.integer(status.nmi_line);
s.integer(status.nmi_transition);
s.integer(status.nmi_pending);
s.integer(status.irq_valid);
s.integer(status.irq_line);
s.integer(status.irq_transition);
s.integer(status.irq_pending);
s.integer(status.irq_lock);
s.integer(status.hdma_pending);
s.integer(status.wram_addr);
s.integer(status.joypad_strobe_latch);
s.integer(status.nmi_enabled);
s.integer(status.virq_enabled);
s.integer(status.hirq_enabled);
s.integer(status.auto_joypad_poll_enabled);
s.integer(status.pio);
s.integer(status.wrmpya);
s.integer(status.wrmpyb);
s.integer(status.wrdiva);
s.integer(status.wrdivb);
s.integer(status.htime);
s.integer(status.vtime);
s.integer(status.rom_speed);
s.integer(status.rddiv);
s.integer(status.rdmpy);
s.integer(status.joy1l);
s.integer(status.joy1h);
s.integer(status.joy2l);
s.integer(status.joy2h);
s.integer(status.joy3l);
s.integer(status.joy3h);
s.integer(status.joy4l);
s.integer(status.joy4h);
}
#endif

View File

@ -5,7 +5,6 @@ namespace SNES {
DSP dsp;
#include "serialization.cpp"
#include "SPC_DSP.cpp"
void DSP::step(unsigned clocks) {

View File

@ -15,7 +15,6 @@ public:
void channel_enable(unsigned channel, bool enable);
void serialize(serializer&);
DSP();
private:

View File

@ -1,31 +0,0 @@
#ifdef DSP_CPP
static void dsp_state_save(unsigned char **out, void *in, size_t size) {
memcpy(*out, in, size);
*out += size;
}
static void dsp_state_load(unsigned char **in, void *out, size_t size) {
memcpy(out, *in, size);
*in += size;
}
void DSP::serialize(serializer &s) {
Processor::serialize(s);
s.array(samplebuffer);
unsigned char state[SPC_DSP::state_size];
unsigned char *p = state;
memset(&state, 0, SPC_DSP::state_size);
if(s.mode() == serializer::Save) {
spc_dsp.copy_state(&p, dsp_state_save);
s.array(state);
} else if(s.mode() == serializer::Load) {
s.array(state);
spc_dsp.copy_state(&p, dsp_state_load);
} else {
s.array(state);
}
}
#endif

View File

@ -8,7 +8,6 @@ PPU ppu;
#include "memory/memory.cpp"
#include "mmio/mmio.cpp"
#include "render/render.cpp"
#include "serialization.cpp"
void PPU::step(unsigned clocks) {
clock += clocks;

View File

@ -69,7 +69,6 @@ public:
unsigned framecounter;
void set_frameskip(unsigned frameskip);
void serialize(serializer&);
void initialize();
PPU();
~PPU();

View File

@ -1,208 +0,0 @@
#ifdef PPU_CPP
void PPUcounter::serialize(serializer &s) {
s.integer(status.interlace);
s.integer(status.field);
s.integer(status.vcounter);
s.integer(status.hcounter);
s.array(history.field);
s.array(history.vcounter);
s.array(history.hcounter);
s.integer(history.index);
}
void PPU::serialize(serializer &s) {
Processor::serialize(s);
PPUcounter::serialize(s);
s.array(vram,128 * 1024);
s.array(oam,544);
s.array(cgram,512);
s.integer(ppu1_version);
s.integer(ppu2_version);
s.integer(region);
s.integer(line);
s.integer(display.interlace);
s.integer(display.overscan);
s.integer(cache.oam_basesize);
s.integer(cache.oam_nameselect);
s.integer(cache.oam_tdaddr);
s.integer(regs.ppu1_mdr);
s.integer(regs.ppu2_mdr);
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_y[n]);
s.integer(regs.ioamaddr);
s.integer(regs.icgramaddr);
s.integer(regs.display_disabled);
s.integer(regs.display_brightness);
s.integer(regs.oam_basesize);
s.integer(regs.oam_nameselect);
s.integer(regs.oam_tdaddr);
s.integer(regs.oam_baseaddr);
s.integer(regs.oam_addr);
s.integer(regs.oam_priority);
s.integer(regs.oam_firstsprite);
s.integer(regs.oam_latchdata);
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_tilesize[n]);
s.integer(regs.bg3_priority);
s.integer(regs.bg_mode);
s.integer(regs.mosaic_size);
for(unsigned n = 0; n < 4; n++) s.integer(regs.mosaic_enabled[n]);
s.integer(regs.mosaic_countdown);
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_scaddr[n]);
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_scsize[n]);
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_tdaddr[n]);
s.integer(regs.bg_ofslatch);
s.integer(regs.m7_hofs);
s.integer(regs.m7_vofs);
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_hofs[n]);
for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_vofs[n]);
s.integer(regs.vram_incmode);
s.integer(regs.vram_mapping);
s.integer(regs.vram_incsize);
s.integer(regs.vram_addr);
s.integer(regs.mode7_repeat);
s.integer(regs.mode7_vflip);
s.integer(regs.mode7_hflip);
s.integer(regs.m7_latch);
s.integer(regs.m7a);
s.integer(regs.m7b);
s.integer(regs.m7c);
s.integer(regs.m7d);
s.integer(regs.m7x);
s.integer(regs.m7y);
s.integer(regs.cgram_addr);
s.integer(regs.cgram_latchdata);
for(unsigned n = 0; n < 6; n++) s.integer(regs.window1_enabled[n]);
for(unsigned n = 0; n < 6; n++) s.integer(regs.window1_invert [n]);
for(unsigned n = 0; n < 6; n++) s.integer(regs.window2_enabled[n]);
for(unsigned n = 0; n < 6; n++) s.integer(regs.window2_invert [n]);
s.integer(regs.window1_left);
s.integer(regs.window1_right);
s.integer(regs.window2_left);
s.integer(regs.window2_right);
for(unsigned n = 0; n < 6; n++) s.integer(regs.window_mask[n]);
for(unsigned n = 0; n < 5; n++) s.integer(regs.bg_enabled[n]);
for(unsigned n = 0; n < 5; n++) s.integer(regs.bgsub_enabled[n]);
for(unsigned n = 0; n < 5; n++) s.integer(regs.window_enabled[n]);
for(unsigned n = 0; n < 5; n++) s.integer(regs.sub_window_enabled[n]);
s.integer(regs.color_mask);
s.integer(regs.colorsub_mask);
s.integer(regs.addsub_mode);
s.integer(regs.direct_color);
s.integer(regs.color_mode);
s.integer(regs.color_halve);
for(unsigned n = 0; n < 6; n++) s.integer(regs.color_enabled[n]);
s.integer(regs.color_r);
s.integer(regs.color_g);
s.integer(regs.color_b);
s.integer(regs.color_rgb);
s.integer(regs.mode7_extbg);
s.integer(regs.pseudo_hires);
s.integer(regs.overscan);
s.integer(regs.scanlines);
s.integer(regs.oam_interlace);
s.integer(regs.interlace);
s.integer(regs.hcounter);
s.integer(regs.vcounter);
s.integer(regs.latch_hcounter);
s.integer(regs.latch_vcounter);
s.integer(regs.counters_latched);
s.integer(regs.vram_readbuffer);
s.integer(regs.time_over);
s.integer(regs.range_over);
s.integer(regs.oam_itemcount);
s.integer(regs.oam_tilecount);
for(unsigned n = 0; n < 256; n++) {
s.integer(pixel_cache[n].src_main);
s.integer(pixel_cache[n].src_sub);
s.integer(pixel_cache[n].bg_main);
s.integer(pixel_cache[n].bg_sub);
s.integer(pixel_cache[n].ce_main);
s.integer(pixel_cache[n].ce_sub);
s.integer(pixel_cache[n].pri_main);
s.integer(pixel_cache[n].pri_sub);
}
//zero TODO - only on load
//better to just take a small speed hit than store all of bg_tiledata[3][] ...
flush_tiledata_cache();
for(unsigned n = 0; n < 6; n++) {
s.array(window[n].main, 256);
s.array(window[n].sub, 256);
}
for(unsigned n = 0; n < 4; n++) {
s.integer(bg_info[n].tw);
s.integer(bg_info[n].th);
s.integer(bg_info[n].mx);
s.integer(bg_info[n].my);
s.integer(bg_info[n].scx);
s.integer(bg_info[n].scy);
}
for(unsigned n = 0; n < 128; n++) {
s.integer(sprite_list[n].width);
s.integer(sprite_list[n].height);
s.integer(sprite_list[n].x);
s.integer(sprite_list[n].y);
s.integer(sprite_list[n].character);
s.integer(sprite_list[n].use_nameselect);
s.integer(sprite_list[n].vflip);
s.integer(sprite_list[n].hflip);
s.integer(sprite_list[n].palette);
s.integer(sprite_list[n].priority);
s.integer(sprite_list[n].size);
}
s.integer(sprite_list_valid);
s.integer(active_sprite);
s.array(oam_itemlist, 32);
for(unsigned n = 0; n < 34; n++) {
s.integer(oam_tilelist[n].x);
s.integer(oam_tilelist[n].y);
s.integer(oam_tilelist[n].pri);
s.integer(oam_tilelist[n].pal);
s.integer(oam_tilelist[n].tile);
s.integer(oam_tilelist[n].hflip);
}
s.array(oam_line_pal, 256);
s.array(oam_line_pri, 256);
}
#endif

View File

@ -57,7 +57,6 @@ class Background {
void render();
void render_mode7();
void serialize(serializer&);
Background(PPU &self, unsigned id);
~Background();

View File

@ -8,7 +8,6 @@ public:
uint8* tile_8bpp(unsigned tile);
uint8* tile(unsigned bpp, unsigned tile);
void serialize(serializer&);
Cache(PPU &self);
~Cache();

View File

@ -11,7 +11,6 @@ PPU ppu;
#include "background/background.cpp"
#include "sprite/sprite.cpp"
#include "screen/screen.cpp"
#include "serialization.cpp"
void PPU::step(unsigned clocks) {
clock += clocks;

View File

@ -23,7 +23,6 @@ public:
void layer_enable(unsigned layer, unsigned priority, bool enable);
void set_frameskip(unsigned frameskip);
void serialize(serializer&);
PPU();
~PPU();
void initialize();

View File

@ -35,7 +35,6 @@ class Screen {
alwaysinline uint16 get_pixel_sub(unsigned x);
void render();
void serialize(serializer&);
Screen(PPU &self);
~Screen();

View File

@ -1,249 +0,0 @@
#ifdef PPU_CPP
void PPUcounter::serialize(serializer &s) {
s.integer(status.interlace);
s.integer(status.field);
s.integer(status.vcounter);
s.integer(status.hcounter);
s.array(history.field);
s.array(history.vcounter);
s.array(history.hcounter);
s.integer(history.index);
}
void PPU::serialize(serializer &s) {
Processor::serialize(s);
PPUcounter::serialize(s);
s.array(vram, 64 * 1024);
s.array(oam, 544);
s.array(cgram, 512);
cache.serialize(s);
bg1.serialize(s);
bg2.serialize(s);
bg3.serialize(s);
bg4.serialize(s);
sprite.serialize(s);
screen.serialize(s);
s.integer(display.interlace);
s.integer(display.overscan);
s.integer(display.width);
s.integer(display.height);
s.integer(regs.ppu1_mdr);
s.integer(regs.ppu2_mdr);
s.integer(regs.vram_readbuffer);
s.integer(regs.oam_latchdata);
s.integer(regs.cgram_latchdata);
s.integer(regs.bgofs_latchdata);
s.integer(regs.mode7_latchdata);
s.integer(regs.counters_latched);
s.integer(regs.latch_hcounter);
s.integer(regs.latch_vcounter);
s.integer(regs.display_disable);
s.integer(regs.display_brightness);
s.integer(regs.oam_baseaddr);
s.integer(regs.oam_addr);
s.integer(regs.oam_priority);
s.integer(regs.bg3_priority);
s.integer(regs.bgmode);
s.integer(regs.mode7_hoffset);
s.integer(regs.mode7_voffset);
s.integer(regs.vram_incmode);
s.integer(regs.vram_mapping);
s.integer(regs.vram_incsize);
s.integer(regs.vram_addr);
s.integer(regs.mode7_repeat);
s.integer(regs.mode7_vflip);
s.integer(regs.mode7_hflip);
s.integer(regs.m7a);
s.integer(regs.m7b);
s.integer(regs.m7c);
s.integer(regs.m7d);
s.integer(regs.m7x);
s.integer(regs.m7y);
s.integer(regs.cgram_addr);
s.integer(regs.window_one_left);
s.integer(regs.window_one_right);
s.integer(regs.window_two_left);
s.integer(regs.window_two_right);
s.integer(regs.mode7_extbg);
s.integer(regs.pseudo_hires);
s.integer(regs.overscan);
s.integer(regs.interlace);
s.integer(regs.hcounter);
s.integer(regs.vcounter);
}
void PPU::Cache::serialize(serializer &s) {
//rather than save ~512KB worth of cached tiledata, invalidate it all
for(unsigned i = 0; i < 4096; i++) tilevalid[0][i] = false;
for(unsigned i = 0; i < 2048; i++) tilevalid[1][i] = false;
for(unsigned i = 0; i < 1024; i++) tilevalid[2][i] = false;
}
void PPU::Background::serialize(serializer &s) {
s.integer(regs.mode);
s.integer(regs.priority0);
s.integer(regs.priority1);
s.integer(regs.tile_size);
s.integer(regs.mosaic);
s.integer(regs.screen_addr);
s.integer(regs.screen_size);
s.integer(regs.tiledata_addr);
s.integer(regs.hoffset);
s.integer(regs.voffset);
s.integer(regs.main_enable);
s.integer(regs.sub_enable);
s.integer(hires);
s.integer(width);
s.integer(tile_width);
s.integer(tile_height);
s.integer(mask_x);
s.integer(mask_y);
s.integer(scx);
s.integer(scy);
s.integer(hscroll);
s.integer(vscroll);
s.integer(mosaic_vcounter);
s.integer(mosaic_voffset);
window.serialize(s);
}
void PPU::Sprite::serialize(serializer &s) {
s.integer(regs.priority0);
s.integer(regs.priority1);
s.integer(regs.priority2);
s.integer(regs.priority3);
s.integer(regs.base_size);
s.integer(regs.nameselect);
s.integer(regs.tiledata_addr);
s.integer(regs.first_sprite);
s.integer(regs.main_enable);
s.integer(regs.sub_enable);
s.integer(regs.interlace);
s.integer(regs.time_over);
s.integer(regs.range_over);
for(unsigned i = 0; i < 128; i++) {
s.integer(list[i].width);
s.integer(list[i].height);
s.integer(list[i].x);
s.integer(list[i].y);
s.integer(list[i].character);
s.integer(list[i].use_nameselect);
s.integer(list[i].vflip);
s.integer(list[i].hflip);
s.integer(list[i].palette);
s.integer(list[i].priority);
s.integer(list[i].size);
}
s.integer(list_valid);
s.array(itemlist);
for(unsigned i = 0; i < 34; i++) {
s.integer(tilelist[i].x);
s.integer(tilelist[i].y);
s.integer(tilelist[i].priority);
s.integer(tilelist[i].palette);
s.integer(tilelist[i].tile);
s.integer(tilelist[i].hflip);
}
s.array(output.palette);
s.array(output.priority);
window.serialize(s);
}
void PPU::Screen::serialize(serializer &s) {
s.integer(regs.addsub_mode);
s.integer(regs.direct_color);
s.integer(regs.color_mode);
s.integer(regs.color_halve);
s.array(regs.color_enable);
s.integer(regs.color_b);
s.integer(regs.color_g);
s.integer(regs.color_r);
s.integer(regs.color);
for(unsigned i = 0; i < 256; i++) {
s.integer(output.main[i].color);
s.integer(output.main[i].priority);
s.integer(output.main[i].source);
s.integer(output.sub[i].color);
s.integer(output.sub[i].priority);
s.integer(output.sub[i].source);
}
window.serialize(s);
}
void PPU::LayerWindow::serialize(serializer &s) {
s.integer(one_enable);
s.integer(one_invert);
s.integer(two_enable);
s.integer(two_invert);
s.integer(mask);
s.integer(main_enable);
s.integer(sub_enable);
s.array(main);
s.array(sub);
}
void PPU::ColorWindow::serialize(serializer &s) {
s.integer(one_enable);
s.integer(one_invert);
s.integer(two_enable);
s.integer(two_invert);
s.integer(mask);
s.integer(main_mask);
s.integer(sub_mask);
s.array(main);
s.array(sub);
}
#endif

View File

@ -63,7 +63,6 @@ class Sprite {
alwaysinline bool on_scanline(unsigned sprite);
void render();
void serialize(serializer&);
Sprite(PPU &self);
PPU &self;

View File

@ -14,7 +14,6 @@ public:
uint8 sub[256];
void render(bool screen);
void serialize(serializer&);
};
class ColorWindow {
@ -33,5 +32,4 @@ public:
uint8 sub[256];
void render(bool screen);
void serialize(serializer&);
};

View File

@ -81,63 +81,6 @@ void SMP::reset() {
timer0.stage3_ticks = timer1.stage3_ticks = timer2.stage3_ticks = 0;
}
void SMP::serialize(serializer &s) {
Processor::serialize(s);
s.array(apuram, 64 * 1024);
s.integer(opcode_number);
s.integer(opcode_cycle);
s.integer(regs.pc);
s.integer(regs.sp);
s.integer(regs.a);
s.integer(regs.x);
s.integer(regs.y);
s.integer(regs.p.n);
s.integer(regs.p.v);
s.integer(regs.p.p);
s.integer(regs.p.b);
s.integer(regs.p.h);
s.integer(regs.p.i);
s.integer(regs.p.z);
s.integer(regs.p.c);
s.integer(rd);
s.integer(wr);
s.integer(dp);
s.integer(sp);
s.integer(ya);
s.integer(bit);
s.integer(status.iplrom_enable);
s.integer(status.dsp_addr);
s.integer(status.ram00f8);
s.integer(status.ram00f9);
s.integer(timer0.enable);
s.integer(timer0.target);
s.integer(timer0.stage1_ticks);
s.integer(timer0.stage2_ticks);
s.integer(timer0.stage3_ticks);
s.integer(timer1.enable);
s.integer(timer1.target);
s.integer(timer1.stage1_ticks);
s.integer(timer1.stage2_ticks);
s.integer(timer1.stage3_ticks);
s.integer(timer2.enable);
s.integer(timer2.target);
s.integer(timer2.stage1_ticks);
s.integer(timer2.stage2_ticks);
s.integer(timer2.stage3_ticks);
}
SMP::SMP() :
apuram(nullptr)
{

View File

@ -17,7 +17,6 @@ public:
void power();
void reset();
void serialize(serializer&);
SMP();
~SMP();
void initialize();

View File

@ -7,7 +7,6 @@
namespace SNES {
#include "markup.cpp"
#include "serialization.cpp"
Cartridge cartridge;

View File

@ -85,7 +85,6 @@ struct Cartridge : property<Cartridge> {
void load(Mode, const char*);
void unload();
void serialize(serializer&);
Cartridge();
~Cartridge();

View File

@ -1,9 +0,0 @@
#ifdef CARTRIDGE_CPP
void Cartridge::serialize(serializer &s) {
for(auto &ram : nvram) {
if(ram.size) s.array(ram.data, ram.size);
}
}
#endif

View File

@ -13,7 +13,6 @@ static bool trace = 0;
#include "opcodes.cpp"
#include "memory.cpp"
#include "disassembler.cpp"
#include "serialization.cpp"
ArmDSP armdsp;
void ArmDSP::Enter() { armdsp.enter(); }

View File

@ -61,9 +61,6 @@ struct ArmDSP : public Coprocessor {
//disassembler.cpp
string disassemble_opcode(uint32 pc);
string disassemble_registers();
//serialization.cpp
void serialize(serializer&);
};
extern ArmDSP armdsp;

View File

@ -1,64 +0,0 @@
#ifdef ARMDSP_CPP
void ArmDSP::serialize(serializer &s) {
Processor::serialize(s);
s.array(programRAM, 16 * 1024);
s.integer(bridge.cputoarm.ready);
s.integer(bridge.cputoarm.data);
s.integer(bridge.armtocpu.ready);
s.integer(bridge.armtocpu.data);
s.integer(bridge.timer);
s.integer(bridge.timerlatch);
s.integer(bridge.reset);
s.integer(bridge.ready);
s.integer(bridge.busy);
s.integer(cpsr.n);
s.integer(cpsr.z);
s.integer(cpsr.c);
s.integer(cpsr.v);
s.integer(cpsr.i);
s.integer(cpsr.f);
s.integer(cpsr.m);
s.integer(spsr.n);
s.integer(spsr.z);
s.integer(spsr.c);
s.integer(spsr.v);
s.integer(spsr.i);
s.integer(spsr.f);
s.integer(spsr.m);
s.integer(r[ 0].data);
s.integer(r[ 1].data);
s.integer(r[ 2].data);
s.integer(r[ 3].data);
s.integer(r[ 4].data);
s.integer(r[ 5].data);
s.integer(r[ 6].data);
s.integer(r[ 7].data);
s.integer(r[ 8].data);
s.integer(r[ 9].data);
s.integer(r[10].data);
s.integer(r[11].data);
s.integer(r[12].data);
s.integer(r[13].data);
s.integer(r[14].data);
s.integer(r[15].data);
s.integer(shiftercarry);
s.integer(instruction);
s.integer(exception);
s.integer(pipeline.reload);
s.integer(pipeline.instruction.opcode);
s.integer(pipeline.instruction.address);
s.integer(pipeline.prefetch.opcode);
s.integer(pipeline.prefetch.address);
s.integer(pipeline.mdr.opcode);
s.integer(pipeline.mdr.address);
}
#endif

View File

@ -6,7 +6,6 @@ namespace SNES {
#include "memory.cpp"
#include "opcodes.cpp"
#include "registers.cpp"
#include "serialization.cpp"
HitachiDSP hitachidsp;
//zero 01-sep-2014 - dont clobber these when reconstructing!

View File

@ -43,8 +43,6 @@ public:
//registers.cpp
unsigned reg_read(unsigned n) const;
void reg_write(unsigned n, unsigned data);
void serialize(serializer&);
};
extern HitachiDSP hitachidsp;

View File

@ -1,41 +0,0 @@
#ifdef HITACHIDSP_CPP
void HitachiDSP::serialize(serializer &s) {
Processor::serialize(s);
s.array(dataRAM);
for(auto &n : stack) s.integer(n);
s.integer(opcode);
s.integer((unsigned&)state);
s.integer(regs.pc);
s.integer(regs.p);
s.integer(regs.n);
s.integer(regs.z);
s.integer(regs.c);
s.integer(regs.a);
s.integer(regs.acch);
s.integer(regs.accl);
s.integer(regs.busdata);
s.integer(regs.romdata);
s.integer(regs.ramdata);
s.integer(regs.busaddr);
s.integer(regs.ramaddr);
for(auto &n : regs.gpr) s.integer(n);
s.integer(regs.dma_source);
s.integer(regs.dma_length);
s.integer(regs.dma_target);
s.integer(regs.r1f48);
s.integer(regs.program_offset);
s.integer(regs.r1f4c);
s.integer(regs.page_number);
s.integer(regs.program_counter);
s.integer(regs.r1f50);
s.integer(regs.r1f51);
s.integer(regs.r1f52);
s.array(regs.vector);
}
#endif

View File

@ -7,7 +7,6 @@ namespace SNES {
#include "interface/interface.cpp"
#include "mmio/mmio.cpp"
#include "serialization.cpp"
ICD2 icd2;
void ICD2::Enter() { icd2.enter(); }

View File

@ -14,8 +14,6 @@ public:
uint8 read(unsigned addr);
void write(unsigned addr, uint8 data);
void serialize(serializer&);
ICD2();
private:

View File

@ -1,38 +0,0 @@
#ifdef ICD2_CPP
void ICD2::serialize(serializer &s) {
Processor::serialize(s);
GameBoy::system.serialize_all(s);
for(unsigned n = 0; n < 64; n++) s.array(packet[n].data);
s.integer(packetsize);
s.integer(joyp_id);
s.integer(joyp15lock);
s.integer(joyp14lock);
s.integer(pulselock);
s.integer(strobelock);
s.integer(packetlock);
s.array(joyp_packet.data);
s.integer(packetoffset);
s.integer(bitdata);
s.integer(bitoffset);
s.integer(r6000_ly);
s.integer(r6000_row);
s.integer(r6001);
s.integer(r6003);
s.integer(r6004);
s.integer(r6005);
s.integer(r6006);
s.integer(r6007);
s.array(r7000);
s.integer(r7800);
s.integer(mlt_req);
s.array(lcd.buffer);
s.array(lcd.output);
s.integer(lcd.row);
}
#endif

View File

@ -5,8 +5,6 @@ namespace SNES {
MSU1 msu1;
#include "serialization.cpp"
void MSU1::Enter() { msu1.enter(); }
void MSU1::enter() {

View File

@ -11,8 +11,6 @@ public:
uint8 mmio_read(unsigned addr);
void mmio_write(unsigned addr, uint8 data);
void serialize(serializer&);
private:
file datafile;
file audiofile;

View File

@ -1,29 +0,0 @@
#ifdef MSU1_CPP
void MSU1::serialize(serializer &s) {
Processor::serialize(s);
s.integer(mmio.data_offset);
s.integer(mmio.audio_offset);
s.integer(mmio.audio_loop_offset);
s.integer(mmio.audio_track);
s.integer(mmio.audio_volume);
s.integer(mmio.data_busy);
s.integer(mmio.audio_busy);
s.integer(mmio.audio_repeat);
s.integer(mmio.audio_play);
if(datafile.open()) datafile.close();
if(datafile.open(interface()->path(Cartridge::Slot::Base, "msu1.rom"), file::mode::read)) {
datafile.seek(mmio.data_offset);
}
if(audiofile.open()) audiofile.close();
if(audiofile.open(interface()->path(Cartridge::Slot::Base, { "track-", (unsigned)mmio.audio_track, ".pcm" }), file::mode::read)) {
audiofile.seek(mmio.audio_offset);
}
}
#endif

View File

@ -5,7 +5,6 @@ namespace SNES {
#include "memory.cpp"
#include "disassembler.cpp"
#include "serialization.cpp"
NECDSP necdsp;
//zero 01-sep-2014 - dont clobber these when reconstructing!

View File

@ -42,7 +42,6 @@ public:
void power();
void reset();
void serialize(serializer&);
NECDSP();
~NECDSP();
};

View File

@ -1,55 +0,0 @@
#ifdef NECDSP_CPP
void NECDSP::serialize(serializer &s) {
Processor::serialize(s);
s.array(dataRAM);
s.array(regs.stack);
s.integer(regs.pc);
s.integer(regs.rp);
s.integer(regs.dp);
s.integer(regs.sp);
s.integer(regs.k);
s.integer(regs.l);
s.integer(regs.m);
s.integer(regs.n);
s.integer(regs.a);
s.integer(regs.b);
s.integer(regs.flaga.s1);
s.integer(regs.flaga.s0);
s.integer(regs.flaga.c);
s.integer(regs.flaga.z);
s.integer(regs.flaga.ov1);
s.integer(regs.flaga.ov0);
s.integer(regs.flagb.s1);
s.integer(regs.flagb.s0);
s.integer(regs.flagb.c);
s.integer(regs.flagb.z);
s.integer(regs.flagb.ov1);
s.integer(regs.flagb.ov0);
s.integer(regs.tr);
s.integer(regs.trb);
s.integer(regs.sr.rqm);
s.integer(regs.sr.usf1);
s.integer(regs.sr.usf0);
s.integer(regs.sr.drs);
s.integer(regs.sr.dma);
s.integer(regs.sr.drc);
s.integer(regs.sr.soc);
s.integer(regs.sr.sic);
s.integer(regs.sr.ei);
s.integer(regs.sr.p1);
s.integer(regs.sr.p0);
s.integer(regs.dr);
s.integer(regs.si);
s.integer(regs.so);
}
#endif

View File

@ -3,7 +3,6 @@
#define OBC1_CPP
namespace SNES {
#include "serialization.cpp"
OBC1 obc1;
void OBC1::init() {

View File

@ -9,8 +9,6 @@ public:
uint8 read(unsigned addr);
void write(unsigned addr, uint8 data);
void serialize(serializer&);
private:
uint8 ram_read(unsigned addr);
void ram_write(unsigned addr, uint8 data);

View File

@ -1,9 +0,0 @@
#ifdef OBC1_CPP
void OBC1::serialize(serializer &s) {
s.integer(status.address);
s.integer(status.baseptr);
s.integer(status.shift);
}
#endif

View File

@ -5,7 +5,6 @@ namespace SNES {
SA1 sa1;
#include "serialization.cpp"
#include "bus/bus.cpp"
#include "dma/dma.cpp"
#include "memory/memory.cpp"

View File

@ -30,7 +30,6 @@ public:
void power();
void reset();
void serialize(serializer&);
SA1();
};

View File

@ -1,148 +0,0 @@
#ifdef SA1_CPP
void SA1::serialize(serializer &s) {
Processor::serialize(s);
CPUcore::core_serialize(s);
//sa1.hpp
s.integer(status.tick_counter);
s.integer(status.interrupt_pending);
s.integer(status.scanlines);
s.integer(status.vcounter);
s.integer(status.hcounter);
//bus/bus.hpp
s.array(iram.data(), iram.size());
s.integer(cpubwram.dma);
//dma/dma.hpp
s.integer(dma.line);
//mmio/mmio.hpp
s.integer(mmio.sa1_irq);
s.integer(mmio.sa1_rdyb);
s.integer(mmio.sa1_resb);
s.integer(mmio.sa1_nmi);
s.integer(mmio.smeg);
s.integer(mmio.cpu_irqen);
s.integer(mmio.chdma_irqen);
s.integer(mmio.cpu_irqcl);
s.integer(mmio.chdma_irqcl);
s.integer(mmio.crv);
s.integer(mmio.cnv);
s.integer(mmio.civ);
s.integer(mmio.cpu_irq);
s.integer(mmio.cpu_ivsw);
s.integer(mmio.cpu_nvsw);
s.integer(mmio.cmeg);
s.integer(mmio.sa1_irqen);
s.integer(mmio.timer_irqen);
s.integer(mmio.dma_irqen);
s.integer(mmio.sa1_nmien);
s.integer(mmio.sa1_irqcl);
s.integer(mmio.timer_irqcl);
s.integer(mmio.dma_irqcl);
s.integer(mmio.sa1_nmicl);
s.integer(mmio.snv);
s.integer(mmio.siv);
s.integer(mmio.hvselb);
s.integer(mmio.ven);
s.integer(mmio.hen);
s.integer(mmio.hcnt);
s.integer(mmio.vcnt);
s.integer(mmio.cbmode);
s.integer(mmio.cb);
s.integer(mmio.dbmode);
s.integer(mmio.db);
s.integer(mmio.ebmode);
s.integer(mmio.eb);
s.integer(mmio.fbmode);
s.integer(mmio.fb);
s.integer(mmio.sbm);
s.integer(mmio.sw46);
s.integer(mmio.cbm);
s.integer(mmio.swen);
s.integer(mmio.cwen);
s.integer(mmio.bwp);
s.integer(mmio.siwp);
s.integer(mmio.ciwp);
s.integer(mmio.dmaen);
s.integer(mmio.dprio);
s.integer(mmio.cden);
s.integer(mmio.cdsel);
s.integer(mmio.dd);
s.integer(mmio.sd);
s.integer(mmio.chdend);
s.integer(mmio.dmasize);
s.integer(mmio.dmacb);
s.integer(mmio.dsa);
s.integer(mmio.dda);
s.integer(mmio.dtc);
s.integer(mmio.bbf);
s.array(mmio.brf);
s.integer(mmio.acm);
s.integer(mmio.md);
s.integer(mmio.ma);
s.integer(mmio.mb);
s.integer(mmio.hl);
s.integer(mmio.vb);
s.integer(mmio.va);
s.integer(mmio.vbit);
s.integer(mmio.cpu_irqfl);
s.integer(mmio.chdma_irqfl);
s.integer(mmio.sa1_irqfl);
s.integer(mmio.timer_irqfl);
s.integer(mmio.dma_irqfl);
s.integer(mmio.sa1_nmifl);
s.integer(mmio.hcr);
s.integer(mmio.vcr);
s.integer(mmio.mr);
s.integer(mmio.overflow);
}
#endif

View File

@ -6,7 +6,6 @@ namespace SNES {
SDD1 sdd1;
#include "decomp.cpp"
#include "serialization.cpp"
void SDD1::init() {
}

View File

@ -13,7 +13,6 @@ public:
uint8 mcu_read(unsigned addr);
void mcu_write(unsigned addr, uint8 data);
void serialize(serializer&);
SDD1();
~SDD1();

View File

@ -1,15 +0,0 @@
#ifdef SDD1_CPP
void SDD1::serialize(serializer &s) {
s.integer(sdd1_enable);
s.integer(xfer_enable);
s.integer(dma_ready);
s.array(mmc);
for(unsigned n = 0; n < 8; n++) {
s.integer(dma[n].addr);
s.integer(dma[n].size);
}
}
#endif

View File

@ -4,7 +4,6 @@ public:
void init(unsigned mode, unsigned offset, unsigned index);
void reset();
void serialize(serializer&);
Decomp();
~Decomp();

View File

@ -1,82 +0,0 @@
#ifdef SPC7110_CPP
void SPC7110::Decomp::serialize(serializer &s) {
s.integer(decomp_mode);
s.integer(decomp_offset);
s.array(decomp_buffer, decomp_buffer_size);
s.integer(decomp_buffer_rdoffset);
s.integer(decomp_buffer_wroffset);
s.integer(decomp_buffer_length);
for(unsigned n = 0; n < 32; n++) {
s.integer(context[n].index);
s.integer(context[n].invert);
}
}
void SPC7110::serialize(serializer &s) {
s.integer(r4801);
s.integer(r4802);
s.integer(r4803);
s.integer(r4804);
s.integer(r4805);
s.integer(r4806);
s.integer(r4807);
s.integer(r4808);
s.integer(r4809);
s.integer(r480a);
s.integer(r480b);
s.integer(r480c);
decomp.serialize(s);
s.integer(r4811);
s.integer(r4812);
s.integer(r4813);
s.integer(r4814);
s.integer(r4815);
s.integer(r4816);
s.integer(r4817);
s.integer(r4818);
s.integer(r481x);
s.integer(r4814_latch);
s.integer(r4815_latch);
s.integer(r4820);
s.integer(r4821);
s.integer(r4822);
s.integer(r4823);
s.integer(r4824);
s.integer(r4825);
s.integer(r4826);
s.integer(r4827);
s.integer(r4828);
s.integer(r4829);
s.integer(r482a);
s.integer(r482b);
s.integer(r482c);
s.integer(r482d);
s.integer(r482e);
s.integer(r482f);
s.integer(r4830);
s.integer(r4831);
s.integer(r4832);
s.integer(r4833);
s.integer(r4834);
s.integer(dx_offset);
s.integer(ex_offset);
s.integer(fx_offset);
s.integer(r4840);
s.integer(r4841);
s.integer(r4842);
s.array(rtc,20);
s.integer(rtc_state);
s.integer(rtc_mode);
s.integer(rtc_index);
}
#endif

View File

@ -5,7 +5,6 @@ namespace SNES {
SPC7110 spc7110;
#include "serialization.cpp"
#include "decomp.cpp"
const unsigned SPC7110::months[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

View File

@ -39,7 +39,6 @@ public:
void decomp_init();
uint8 decomp_read();
void serialize(serializer&);
SPC7110();
~SPC7110();
void initialize();

View File

@ -1,9 +0,0 @@
#ifdef SRTC_CPP
void SRTC::serialize(serializer &s) {
s.array(rtc,20);
s.integer(rtc_mode);
s.integer(rtc_index);
}
#endif

View File

@ -5,8 +5,6 @@ namespace SNES {
SRTC srtc;
#include "serialization.cpp"
const unsigned SRTC::months[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
SRTC::SRTC()

View File

@ -11,7 +11,6 @@ public:
uint8 read(unsigned addr);
void write(unsigned addr, uint8 data);
void serialize(serializer&);
void initialize();
SRTC();
~SRTC();

View File

@ -1,8 +0,0 @@
#ifdef SUFAMITURBO_CPP
void SufamiTurbo::serialize(serializer &s) {
if(slotA.ram.data()) s.array(slotA.ram.data(), slotA.ram.size());
if(slotB.ram.data()) s.array(slotB.ram.data(), slotB.ram.size());
}
#endif

View File

@ -3,7 +3,6 @@
#define SUFAMITURBO_CPP
namespace SNES {
#include "serialization.cpp"
SufamiTurbo sufamiturbo;
SufamiTurbo::SufamiTurbo()

View File

@ -7,7 +7,6 @@ public:
void load();
void unload();
void serialize(serializer&);
SufamiTurbo();
};

View File

@ -1,96 +0,0 @@
#ifdef SUPERFX_CPP
void SuperFX::serialize(serializer &s) {
Processor::serialize(s);
//superfx.hpp
s.integer(clockmode);
s.integer(instruction_counter);
//core/registers.hpp
s.integer(regs.pipeline);
s.integer(regs.ramaddr);
s.integer(regs.r[ 0].data);
s.integer(regs.r[ 1].data);
s.integer(regs.r[ 2].data);
s.integer(regs.r[ 3].data);
s.integer(regs.r[ 4].data);
s.integer(regs.r[ 5].data);
s.integer(regs.r[ 6].data);
s.integer(regs.r[ 7].data);
s.integer(regs.r[ 8].data);
s.integer(regs.r[ 9].data);
s.integer(regs.r[10].data);
s.integer(regs.r[11].data);
s.integer(regs.r[12].data);
s.integer(regs.r[13].data);
s.integer(regs.r[14].data);
s.integer(regs.r[15].data);
s.integer(regs.sfr.irq);
s.integer(regs.sfr.b);
s.integer(regs.sfr.ih);
s.integer(regs.sfr.il);
s.integer(regs.sfr.alt2);
s.integer(regs.sfr.alt1);
s.integer(regs.sfr.r);
s.integer(regs.sfr.g);
s.integer(regs.sfr.ov);
s.integer(regs.sfr.s);
s.integer(regs.sfr.cy);
s.integer(regs.sfr.z);
s.integer(regs.pbr);
s.integer(regs.rombr);
s.integer(regs.rambr);
s.integer(regs.cbr);
s.integer(regs.scbr);
s.integer(regs.scmr.ht);
s.integer(regs.scmr.ron);
s.integer(regs.scmr.ran);
s.integer(regs.scmr.md);
s.integer(regs.colr);
s.integer(regs.por.obj);
s.integer(regs.por.freezehigh);
s.integer(regs.por.highnibble);
s.integer(regs.por.dither);
s.integer(regs.por.transparent);
s.integer(regs.bramr);
s.integer(regs.vcr);
s.integer(regs.cfgr.irq);
s.integer(regs.cfgr.ms0);
s.integer(regs.clsr);
s.integer(regs.romcl);
s.integer(regs.romdr);
s.integer(regs.ramcl);
s.integer(regs.ramar);
s.integer(regs.ramdr);
s.integer(regs.sreg);
s.integer(regs.dreg);
s.array(cache.buffer);
s.array(cache.valid);
for(unsigned i = 0; i < 2; i++) {
s.integer(pixelcache[i].offset);
s.integer(pixelcache[i].bitpend);
s.array(pixelcache[i].data);
}
//timing/timing.hpp
s.integer(cache_access_speed);
s.integer(memory_access_speed);
s.integer(r15_modified);
}
#endif

View File

@ -3,7 +3,6 @@
#define SUPERFX_CPP
namespace SNES {
#include "serialization.cpp"
#include "bus/bus.cpp"
#include "core/core.cpp"
#include "memory/memory.cpp"

View File

@ -14,7 +14,6 @@ public:
void unload();
void power();
void reset();
void serialize(serializer&);
private:
unsigned clockmode;

View File

@ -46,13 +46,6 @@ void Controller::iobit(bool data) {
}
}
void Controller::serialize(serializer& s) {
Processor::serialize(s);
//Save a zero block.
unsigned char blockzeroes[SaveSize] = {0};
s.array(blockzeroes, SaveSize);
}
Controller::Controller(bool port) : port(port) {
if(!thread) create(Controller::Enter, 1);
}

View File

@ -20,7 +20,6 @@ struct Controller : Processor {
virtual void enter();
void step(unsigned clocks);
void synchronize_cpu();
virtual void serialize(serializer& s);
bool iobit();
void iobit(bool data);

View File

@ -13,19 +13,6 @@ void Gamepad::latch(bool data) {
counter = 0;
}
void Gamepad::serialize(serializer& s) {
Processor::serialize(s);
//Save block.
unsigned char block[Controller::SaveSize] = {0};
block[0] = latched ? 1 : 0;
block[1] = counter;
s.array(block, Controller::SaveSize);
if(s.mode() == nall::serializer::Load) {
latched = (block[0] != 0);
counter = block[1];
}
}
Gamepad::Gamepad(bool port) : Controller(port) {
latched = 0;
counter = 0;

View File

@ -2,7 +2,6 @@ struct Gamepad : Controller {
uint2 data();
void latch(bool data);
Gamepad(bool port);
void serialize(serializer& s);
private:
bool latched;
unsigned counter;

View File

@ -98,42 +98,6 @@ void Justifier::latch(bool data) {
if(latched == 0) active = !active; //toggle between both controllers, even when unchained
}
void Justifier::serialize(serializer& s) {
Processor::serialize(s);
//Save block.
unsigned char block[Controller::SaveSize] = {0};
block[0] = latched ? 1 : 0;
block[1] = counter;
block[2] = active ? 1 : 0;
block[3] = player1.trigger ? 1 : 0;
block[4] = player2.trigger ? 1 : 0;
block[5] = player1.start ? 1 : 0;
block[6] = player2.start ? 1 : 0;
block[7] = (unsigned short)player1.x >> 8;
block[8] = (unsigned short)player1.x;
block[9] = (unsigned short)player2.x >> 8;
block[10] = (unsigned short)player2.x;
block[11] = (unsigned short)player1.y >> 8;
block[12] = (unsigned short)player1.y;
block[13] = (unsigned short)player2.y >> 8;
block[14] = (unsigned short)player2.y;
s.array(block, Controller::SaveSize);
if(s.mode() == nall::serializer::Load) {
latched = (block[0] != 0);
counter = block[1];
active = (block[2] != 0);
player1.trigger = (block[3] != 0);
player2.trigger = (block[4] != 0);
player1.start = (block[5] != 0);
player2.start = (block[6] != 0);
player1.x = (short)(((unsigned short)block[7] << 8) | (unsigned short)block[8]);
player2.x = (short)(((unsigned short)block[9] << 8) | (unsigned short)block[10]);
player1.y = (short)(((unsigned short)block[11] << 8) | (unsigned short)block[12]);
player2.y = (short)(((unsigned short)block[13] << 8) | (unsigned short)block[14]);
}
}
Justifier::Justifier(bool port, bool chained) : Controller(port), chained(chained) {
create(Controller::Enter, 21477272);
latched = 0;

View File

@ -2,7 +2,6 @@ struct Justifier : Controller {
void enter();
uint2 data();
void latch(bool data);
void serialize(serializer& s);
Justifier(bool port, bool chained);
//private:

View File

@ -68,25 +68,6 @@ void Mouse::latch(bool data) {
counter = 0;
}
void Mouse::serialize(serializer& s) {
Processor::serialize(s);
//Save block.
unsigned char block[Controller::SaveSize] = {0};
block[0] = latched ? 1 : 0;
block[1] = counter;
block[2] = (unsigned short)position_x >> 8;
block[3] = (unsigned short)position_x;
block[4] = (unsigned short)position_y >> 8;
block[5] = (unsigned short)position_y;
s.array(block, Controller::SaveSize);
if(s.mode() == nall::serializer::Load) {
latched = (block[0] != 0);
counter = block[1];
position_x = (short)(((unsigned short)block[2] << 8) | (unsigned short)block[3]);
position_y = (short)(((unsigned short)block[4] << 8) | (unsigned short)block[5]);
}
}
Mouse::Mouse(bool port) : Controller(port) {
latched = 0;
counter = 0;

View File

@ -2,7 +2,6 @@ struct Mouse : Controller {
uint2 data();
void latch(bool data);
Mouse(bool port);
void serialize(serializer& s);
private:
bool latched;
unsigned counter;

View File

@ -38,26 +38,6 @@ void Multitap::latch(bool data) {
counter2 = 0;
}
void Multitap::serialize(serializer& s) {
Processor::serialize(s);
//Save block.
unsigned char block[Controller::SaveSize] = {0};
block[0] = latched ? 1 : 0;
block[1] = counter1;
block[2] = counter2;
block[3] = connected;
block[4] = toggleConnectedInput;
s.array(block, Controller::SaveSize);
if(s.mode() == nall::serializer::Load) {
latched = (block[0] != 0);
counter1 = block[1];
counter2 = block[2];
connected = block[3];
toggleConnectedInput = block[4];
}
}
Multitap::Multitap(bool port) : Controller(port) {
latched = 0;
counter1 = 0;

View File

@ -2,7 +2,6 @@ struct Multitap : Controller {
uint2 data();
void latch(bool data);
Multitap(bool port);
void serialize(serializer& s);
private:
bool connected;
bool toggleConnectedInput;

Some files were not shown because too many files have changed in this diff Show More