void ICD2::serialize(serializer& s) { Thread::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); }
void sBus::serialize(serializer &s) { s.array(memory::wram.data(), memory::wram.size()); s.array(memory::apuram.data(), memory::apuram.size()); s.array(memory::vram.data(), memory::vram.size()); s.array(memory::oam.data(), memory::oam.size()); s.array(memory::cgram.data(), memory::cgram.size()); }
void SPC7110::serialize(serializer &s) { s.array(ram.data(), ram.size()); s.integer(r4801); s.integer(r4802); s.integer(r4803); s.integer(r4804); s.integer(r4805); s.integer(r4806); s.integer(r4807); s.integer(r4809); s.integer(r480a); s.integer(r480b); s.integer(r480c); s.integer(dcu_pending); s.integer(dcu_mode); s.integer(dcu_addr); s.integer(dcu_offset); s.array(dcu_tile); decompressor->serialize(s); s.integer(r4810); 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(r481a); 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(mul_pending); s.integer(div_pending); s.integer(r4830); s.integer(r4831); s.integer(r4832); s.integer(r4833); s.integer(r4834); }
void DSP::serialize(serializer& s) { Thread::serialize(s); s.array(state.regs, 128); state.echoHistory[0].serialize(s); state.echoHistory[1].serialize(s); s.integer(state.echoHistoryOffset); s.integer(state.everyOtherSample); s.integer(state.kon); s.integer(state.noise); s.integer(state.counter); s.integer(state.echoOffset); s.integer(state.echoLength); s.integer(state.konBuffer); s.integer(state.endxBuffer); s.integer(state.envxBuffer); s.integer(state.outxBuffer); s.integer(state._pmon); s.integer(state._non); s.integer(state._eon); s.integer(state._dir); s.integer(state._koff); s.integer(state._brrNextAddress); s.integer(state._adsr0); s.integer(state._brrHeader); s.integer(state._brrByte); s.integer(state._srcn); s.integer(state._esa); s.integer(state._echoDisabled); s.integer(state._dirAddress); s.integer(state._pitch); s.integer(state._output); s.integer(state._looped); s.integer(state._echoPointer); s.array(state._mainOut, 2); s.array(state._echoOut, 2); s.array(state._echoIn, 2); for(auto n : range(8)) { voice[n].buffer.serialize(s); s.integer(voice[n].bufferOffset); s.integer(voice[n].gaussianOffset); s.integer(voice[n].brrAddress); s.integer(voice[n].brrOffset); s.integer(voice[n].vbit); s.integer(voice[n].vidx); s.integer(voice[n].konDelay); s.integer(voice[n].envelopeMode); s.integer(voice[n].envelope); s.integer(voice[n].hiddenEnvelope); s.integer(voice[n]._envxOut); } }
void Cx4::serialize(serializer &s) { Processor::serialize(s); for(auto& n : stack) s.integer(n); s.integer(opcode); s.integer(regs.halt); s.integer(regs.cachePage); s.integer(regs.irqPending); s.integer(regs.rwbusaddr); s.integer(regs.rwbustime); s.integer(regs.writebus); s.integer(regs.writebusdata); s.integer(regs.pc); s.integer(regs.p); s.integer(regs.n); s.integer(regs.z); s.integer(regs.v); 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.mdr); s.integer(mmio.dma); s.integer(mmio.suspend); s.integer(mmio.cacheLoading); s.integer(mmio.dmaSource); s.integer(mmio.dmaLength); s.integer(mmio.dmaTarget); s.integer(mmio.cachePreload); s.integer(mmio.programOffset); s.integer(mmio.pageNumber); s.integer(mmio.programCounter); s.integer(mmio.romSpeed); s.integer(mmio.ramSpeed); s.integer(mmio.irqDisable); s.integer(mmio.r1f52); s.integer(mmio.suspendCycles); s.array(mmio.vector); for(auto& page : cache) { s.integer(page.lock); s.integer(page.pageNumber); s.array(page.data); } }
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 Cartridge::serialize(serializer &s) { if(memory::cartram.size() != 0 && memory::cartram.size() != ~0) { s.array(memory::cartram.data(), memory::cartram.size()); } if(memory::cartrtc.size() != 0 && memory::cartrtc.size() != ~0) { s.array(memory::cartrtc.data(), memory::cartrtc.size()); } if(memory::bsxram.size() != 0 && memory::bsxram.size() != ~0) { s.array(memory::bsxram.data(), memory::bsxram.size()); } if(memory::bsxpram.size() != 0 && memory::bsxpram.size() != ~0) { s.array(memory::bsxpram.data(), memory::bsxpram.size()); } if(memory::stAram.size() != 0 && memory::stAram.size() != ~0) { s.array(memory::stAram.data(), memory::stAram.size()); } if(memory::stBram.size() != 0 && memory::stBram.size() != ~0) { s.array(memory::stBram.data(), memory::stBram.size()); } if(memory::gbram.size() != 0 && memory::gbram.size() != ~0) { s.array(memory::gbram.data(), memory::gbram.size()); } if(memory::gbrtc.size() != 0 && memory::gbrtc.size() != ~0) { s.array(memory::gbrtc.data(), memory::gbrtc.size()); } }
void SuperScope::serialize(serializer& s) { Processor::serialize(s); //Save block. unsigned char block[Controller::SaveSize] = {0}; block[0] = latched ? 1 : 0; block[1] = counter; block[2] = trigger ? 1 : 0; block[3] = cursor ? 1 : 0; block[4] = turbo ? 1 : 0; block[5] = pause ? 1 : 0; block[6] = offscreen ? 1 : 0; block[7] = (unsigned short)x >> 8; block[8] = (unsigned short)x; block[9] = (unsigned short)y >> 8; block[10] = (unsigned short)y; s.array(block, Controller::SaveSize); if(s.mode() == nall::serializer::Load) { latched = (block[0] != 0); counter = block[1]; trigger = (block[2] != 0); cursor = (block[3] != 0); turbo = (block[4] != 0); pause = (block[5] != 0); offscreen = (block[6] != 0); x = (short)(((unsigned short)block[7] << 8) | (unsigned short)block[8]); y = (short)(((unsigned short)block[9] << 8) | (unsigned short)block[10]); } }
bool System::unserialize(serializer& s) { unsigned signature, version; char hash[64], description[512]; s.integer(signature); s.integer(version); s.array(hash); s.array(description); if(signature != 0x31545342) return false; if(version != Info::SerializerVersion) return false; power(); serialize_all(s); return true; }
void HSU1::serialize(serializer& s) { s.integer(txbusy); s.integer(rxbusy); s.integer(txlatch); unsigned size; size = txbuffer.size(); s.integer(size); txbuffer.resize(size); s.array(txbuffer.data(), txbuffer.size()); size = rxbuffer.size(); s.integer(size); rxbuffer.resize(size); s.array(rxbuffer.data(), rxbuffer.size()); }
void PPUcounter::serialize(serializer &s) { s.integer(status.hcounter); s.integer(status.vcounter); s.integer(status.lineclocks); s.integer(status.prev_lineclocks); s.array(status.fieldlines); s.integer(status.field); }
void PPU::Sprite::serialize(serializer& s) { for(unsigned i = 0; i < 128; i++) { s.integer(list[i].x); s.integer(list[i].y); s.integer(list[i].character); s.integer(list[i].nameselect); s.integer(list[i].vflip); s.integer(list[i].hflip); s.integer(list[i].priority); s.integer(list[i].palette); s.integer(list[i].size); } s.integer(t.x); s.integer(t.y); s.integer(t.item_count); s.integer(t.tile_count); s.integer(t.active); for(unsigned n = 0; n < 2; n++) { s.array(t.item[n]); for(unsigned i = 0; i < 34; i++) { s.integer(t.tile[n][i].x); s.integer(t.tile[n][i].priority); s.integer(t.tile[n][i].palette); s.integer(t.tile[n][i].hflip); s.integer(t.tile[n][i].d0); s.integer(t.tile[n][i].d1); s.integer(t.tile[n][i].d2); s.integer(t.tile[n][i].d3); } } s.integer(regs.main_enable); s.integer(regs.sub_enable); s.integer(regs.interlace); s.integer(regs.base_size); s.integer(regs.nameselect); s.integer(regs.tiledata_addr); s.integer(regs.first_sprite); s.integer(regs.priority0); s.integer(regs.priority1); s.integer(regs.priority2); s.integer(regs.priority3); s.integer(regs.time_over); s.integer(regs.range_over); s.integer(output.main.priority); s.integer(output.main.palette); s.integer(output.sub.priority); s.integer(output.sub.palette); }
void SMP::serialize(serializer& s) { Thread::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); }
void serialize(serializer &s) { Board::serialize(s); s.integer(prg_bank); s.integer(chr_bank[0][0]); s.integer(chr_bank[0][1]); s.integer(chr_bank[1][0]); s.integer(chr_bank[1][1]); s.integer(mirror); s.array(latch); }
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]; } }
void DSP2::serialize(serializer &s) { s.integer(status.waiting_for_command); s.integer(status.command); s.integer(status.in_count); s.integer(status.in_index); s.integer(status.out_count); s.integer(status.out_index); s.array(status.parameters); s.array(status.output); s.integer(status.op05transparent); s.integer(status.op05haslen); s.integer(status.op05len); s.integer(status.op06haslen); s.integer(status.op06len); s.integer(status.op09word1); s.integer(status.op09word2); s.integer(status.op0dhaslen); s.integer(status.op0doutlen); s.integer(status.op0dinlen); }
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 serialize(serializer &s) { s.array(prg_bank); s.array(chr_bank); s.integer(mirror); s.integer(irq_latch); s.integer(irq_mode); s.integer(irq_enable); s.integer(irq_acknowledge); s.integer(irq_counter); s.integer(irq_scalar); s.integer(irq_line); }
void PPU::Background::serialize(serializer& s) { s.integer(id); s.integer(regs.tiledata_addr); s.integer(regs.screen_addr); s.integer(regs.screen_size); s.integer(regs.mosaic); s.integer(regs.tile_size); s.integer(regs.mode); s.integer(regs.priority0); s.integer(regs.priority1); s.integer(regs.main_enable); s.integer(regs.sub_enable); s.integer(regs.hoffset); s.integer(regs.voffset); s.integer(cache.hoffset); s.integer(cache.voffset); s.integer(output.main.priority); s.integer(output.main.palette); s.integer(output.main.tile); s.integer(output.sub.priority); s.integer(output.sub.palette); s.integer(output.sub.tile); s.integer(x); s.integer(y); s.integer(mosaic.priority); s.integer(mosaic.palette); s.integer(mosaic.tile); s.integer(mosaic.vcounter); s.integer(mosaic.voffset); s.integer(mosaic.hcounter); s.integer(mosaic.hoffset); s.integer(tile_counter); s.integer(tile); s.integer(priority); s.integer(palette_number); s.integer(palette_index); s.array(data); }
void SMP::serialize(serializer &s) { Processor::serialize(s); SMPcore::core_serialize(s); s.array(apuram); s.integer(status.clock_counter); s.integer(status.dsp_counter); s.integer(status.timer_step); s.integer(status.clock_speed); s.integer(status.timer_speed); s.integer(status.timers_enable); s.integer(status.ram_disable); s.integer(status.ram_writable); s.integer(status.timers_disable); s.integer(status.iplrom_enable); s.integer(status.dsp_addr); s.integer(status.ram00f8); s.integer(status.ram00f9); s.integer(timer0.stage0_ticks); s.integer(timer0.stage1_ticks); s.integer(timer0.stage2_ticks); s.integer(timer0.stage3_ticks); s.integer(timer0.current_line); s.integer(timer0.enable); s.integer(timer0.target); s.integer(timer1.stage0_ticks); s.integer(timer1.stage1_ticks); s.integer(timer1.stage2_ticks); s.integer(timer1.stage3_ticks); s.integer(timer1.current_line); s.integer(timer1.enable); s.integer(timer1.target); s.integer(timer2.stage0_ticks); s.integer(timer2.stage1_ticks); s.integer(timer2.stage2_ticks); s.integer(timer2.stage3_ticks); s.integer(timer2.current_line); s.integer(timer2.enable); s.integer(timer2.target); }
void ArmDSP::serialize(serializer &s) { ARM::serialize(s); Thread::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.signal); }
void PPU::serialize(serializer &s) { Thread::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); }
void serialize(serializer &s) { s.integer(chr_mode); s.integer(prg_mode); s.integer(bank_select); s.array(prg_bank); s.array(chr_bank); s.integer(mirror); s.integer(ram_enable); s.integer(ram_write_protect); s.integer(irq_latch); s.integer(irq_counter); s.integer(irq_enable); s.integer(irq_delay); s.integer(irq_line); s.integer(chr_abus); }
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 != bsnesSerializerVersion) return false; //if(crc32 != cartridge.crc32()) return false; scheduler.init(); serialize_all(s); return true; }
void serialize(serializer &s) { Board::serialize(s); s.integer(mmu_port); s.integer(apu_port); s.array(prg_bank); s.array(chr_bank); s.integer(mirror); s.integer(irq_enable); s.integer(irq_counter_enable); s.integer(irq_counter); pulse[0].serialize(s); pulse[1].serialize(s); pulse[2].serialize(s); }
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]); } }
void Board::serialize(serializer &s) { if(prgram.size) s.array(prgram.data, prgram.size); if(chrram.size) s.array(chrram.data, chrram.size); }
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); }
void SuperFX::serialize(serializer &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); { bool alt1 = regs.sfr.alt & 0x100; bool alt2 = regs.sfr.alt & 0x200; s.integer(alt2); s.integer(alt1); regs.sfr.alt = (alt1 << 8) | (alt2 << 9); } 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); r15_NOT_modified = !r15_NOT_modified; s.integer(r15_NOT_modified); r15_NOT_modified = !r15_NOT_modified; }
void CPU::serialize(serializer& s) { R65816::serialize(s); Thread::serialize(s); PPUcounter::serialize(s); s.array(wram); s.integer(cpu_version); s.integer(status.interrupt_pending); s.integer(status.clock_count); s.integer(status.line_clocks); s.integer(status.irq_lock); s.integer(status.dram_refresh_position); s.integer(status.dram_refreshed); s.integer(status.hdma_init_position); s.integer(status.hdma_init_triggered); s.integer(status.hdma_position); s.integer(status.hdma_triggered); s.integer(status.nmi_valid); s.integer(status.nmi_line); s.integer(status.nmi_transition); s.integer(status.nmi_pending); s.integer(status.nmi_hold); s.integer(status.irq_valid); s.integer(status.irq_line); s.integer(status.irq_transition); s.integer(status.irq_pending); s.integer(status.irq_hold); s.integer(status.reset_pending); s.integer(status.dma_active); s.integer(status.dma_counter); s.integer(status.dma_clocks); s.integer(status.dma_pending); s.integer(status.hdma_pending); s.integer(status.hdma_mode); s.integer(status.auto_joypad_active); s.integer(status.auto_joypad_latch); s.integer(status.auto_joypad_counter); s.integer(status.auto_joypad_clock); s.array(status.port); s.integer(status.wram_addr); s.integer(status.joypad_strobe_latch); s.integer(status.joypad1_bits); s.integer(status.joypad2_bits); s.integer(status.nmi_enabled); s.integer(status.hirq_enabled); s.integer(status.virq_enabled); s.integer(status.auto_joypad_poll); s.integer(status.pio); s.integer(status.wrmpya); s.integer(status.wrmpyb); s.integer(status.wrdiva); s.integer(status.wrdivb); s.integer(status.hirq_pos); s.integer(status.virq_pos); s.integer(status.rom_speed); s.integer(status.rddiv); s.integer(status.rdmpy); s.integer(status.joy1); s.integer(status.joy2); s.integer(status.joy3); s.integer(status.joy4); s.integer(alu.mpyctr); s.integer(alu.divctr); s.integer(alu.shift); 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(pipe.valid); s.integer(pipe.addr); s.integer(pipe.data); }