void CVif1::SaveState(Framework::CZipArchiveWriter& archive) { CVif::SaveState(archive); auto path = string_format(STATE_PATH_FORMAT, m_number); CRegisterStateFile* registerFile = new CRegisterStateFile(path.c_str()); registerFile->SetRegister32(STATE_REGS_BASE, m_BASE); registerFile->SetRegister32(STATE_REGS_TOP, m_TOP); registerFile->SetRegister32(STATE_REGS_TOPS, m_TOPS); registerFile->SetRegister32(STATE_REGS_OFST, m_OFST); archive.InsertFile(registerFile); }
void CVPU1::SaveState(Framework::CZipArchiveWriter& archive) { CVPU::SaveState(archive); std::string path = STATE_PREFIX + boost::lexical_cast<std::string>(m_vpuNumber) + STATE_SUFFIX; CRegisterStateFile* registerFile = new CRegisterStateFile(path.c_str()); registerFile->SetRegister32(STATE_REGS_BASE, m_BASE); registerFile->SetRegister32(STATE_REGS_TOP, m_TOP); registerFile->SetRegister32(STATE_REGS_TOPS, m_TOPS); registerFile->SetRegister32(STATE_REGS_OFST, m_OFST); archive.InsertFile(registerFile); }
void CGSHandler::SaveState(Framework::CZipArchiveWriter& archive) { archive.InsertFile(new CMemoryStateFile(STATE_RAM, m_pRAM, RAMSIZE)); archive.InsertFile(new CMemoryStateFile(STATE_REGS, m_nReg, sizeof(uint64) * CGSHandler::REGISTER_MAX)); archive.InsertFile(new CMemoryStateFile(STATE_TRXCTX, &m_trxCtx, sizeof(TRXCONTEXT))); { CRegisterStateFile* registerFile = new CRegisterStateFile(STATE_PRIVREGS); registerFile->SetRegister64(STATE_PRIVREGS_PMODE, m_nPMODE); registerFile->SetRegister64(STATE_PRIVREGS_SMODE2, m_nSMODE2); registerFile->SetRegister64(STATE_PRIVREGS_DISPFB1, m_nDISPFB1.value.q); registerFile->SetRegister64(STATE_PRIVREGS_DISPLAY1, m_nDISPLAY1.value.q); registerFile->SetRegister64(STATE_PRIVREGS_DISPFB2, m_nDISPFB2.value.q); registerFile->SetRegister64(STATE_PRIVREGS_DISPLAY2, m_nDISPLAY2.value.q); registerFile->SetRegister64(STATE_PRIVREGS_CSR, m_nCSR); registerFile->SetRegister64(STATE_PRIVREGS_IMR, m_nIMR); registerFile->SetRegister32(STATE_PRIVREGS_CRTMODE, m_nCrtMode); archive.InsertFile(registerFile); } }
void CVIF::SaveState(Framework::CZipArchiveWriter& archive) { //TODO: Save FifoStream states { CRegisterStateFile* registerFile = new CRegisterStateFile(STATE_REGS_XML); registerFile->SetRegister32(STATE_REGS_VPU_STAT, m_VPU_STAT); archive.InsertFile(registerFile); } m_pVPU[0]->SaveState(archive); m_pVPU[1]->SaveState(archive); }
void CCdvdfsv::SaveState(Framework::CZipArchiveWriter& archive) { auto registerFile = new CRegisterStateFile(STATE_FILENAME); registerFile->SetRegister32(STATE_PENDINGCOMMAND, m_pendingCommand); registerFile->SetRegister32(STATE_PENDINGREADSECTOR, m_pendingReadSector); registerFile->SetRegister32(STATE_PENDINGREADCOUNT, m_pendingReadCount); registerFile->SetRegister32(STATE_PENDINGREADADDR, m_pendingReadAddr); registerFile->SetRegister32(STATE_STREAMING, m_streaming); registerFile->SetRegister32(STATE_STREAMPOS, m_streamPos); registerFile->SetRegister32(STATE_STREAMBUFFERSIZE, m_streamBufferSize); archive.InsertFile(registerFile); }
void CSifCmd::SaveState(Framework::CZipArchiveWriter& archive) { auto modulesFile = new CStructCollectionStateFile(STATE_MODULES); { int moduleIndex = 0; for(const auto& module : m_servers) { auto moduleName = std::string(STATE_MODULE) + std::to_string(moduleIndex++); CStructFile moduleStruct; { uint32 serverDataAddress = module->GetServerDataAddress(); moduleStruct.SetRegister32(STATE_MODULE_SERVER_DATA_ADDRESS, serverDataAddress); } modulesFile->InsertStruct(moduleName.c_str(), moduleStruct); } } archive.InsertFile(modulesFile); }
void CSubSystem::SaveState(Framework::CZipArchiveWriter& archive) { archive.InsertFile(new CMemoryStateFile(STATE_EE, &m_EE.m_State, sizeof(MIPSSTATE))); archive.InsertFile(new CMemoryStateFile(STATE_VU0, &m_VU0.m_State, sizeof(MIPSSTATE))); archive.InsertFile(new CMemoryStateFile(STATE_VU1, &m_VU1.m_State, sizeof(MIPSSTATE))); archive.InsertFile(new CMemoryStateFile(STATE_RAM, m_ram, PS2::EE_RAM_SIZE)); archive.InsertFile(new CMemoryStateFile(STATE_SPR, m_spr, PS2::EE_SPR_SIZE)); archive.InsertFile(new CMemoryStateFile(STATE_VUMEM0, m_vuMem0, PS2::VUMEM0SIZE)); archive.InsertFile(new CMemoryStateFile(STATE_MICROMEM0, m_microMem0, PS2::MICROMEM0SIZE)); archive.InsertFile(new CMemoryStateFile(STATE_VUMEM1, m_vuMem1, PS2::VUMEM1SIZE)); archive.InsertFile(new CMemoryStateFile(STATE_MICROMEM1, m_microMem1, PS2::MICROMEM1SIZE)); m_dmac.SaveState(archive); m_intc.SaveState(archive); m_sif.SaveState(archive); m_vpu0->SaveState(archive); m_vpu1->SaveState(archive); m_timer.SaveState(archive); }
void CFrameDump::Write(Framework::CStream& output) const { Framework::CZipArchiveWriter archive; archive.InsertFile(new CMemoryStateFile(STATE_INITIAL_GSRAM, m_initialGsRam, CGSHandler::RAMSIZE)); archive.InsertFile(new CMemoryStateFile(STATE_INITIAL_GSREGS, m_initialGsRegisters, sizeof(uint64) * CGSHandler::REGISTER_MAX)); unsigned int currentPacket = 0; for(const auto& packet : m_packets) { std::string packetName = STATE_PACKET_PREFIX + std::to_string(currentPacket); std::string packetMetadataName = STATE_PACKET_METADATA_PREFIX + std::to_string(currentPacket); archive.InsertFile(new CMemoryStateFile(packetName.c_str(), packet.writes.data(), packet.writes.size() * sizeof(CGSHandler::RegisterWrite))); archive.InsertFile(new CMemoryStateFile(packetMetadataName.c_str(), &packet.metadata, sizeof(CGsPacketMetadata))); currentPacket++; } archive.Write(output); }
void CGIF::SaveState(Framework::CZipArchiveWriter& archive) { CRegisterStateFile* registerFile = new CRegisterStateFile(STATE_REGS_XML); registerFile->SetRegister32(STATE_REGS_M3P, m_path3Masked ? 1 : 0); archive.InsertFile(registerFile); }
void CCdvdman::SaveState(Framework::CZipArchiveWriter& archive) { auto registerFile = new CRegisterStateFile(STATE_FILENAME); registerFile->SetRegister32(STATE_CALLBACK_ADDRESS, m_callbackPtr); archive.InsertFile(registerFile); }