bool BackupDevice::save_state(EMUFILE* os) { u32 savePos = fpMC->ftell(); std::vector<u8> data(fsize); fpMC->fseek(0, SEEK_SET); fread((char*)&data[0], 1, fsize, fpMC->get_fp()); u32 version = 5; //v0 write32le(version,os); write32le(write_enable,os); write32le(com,os); write32le(addr_size,os); write32le(addr_counter,os); write32le((u32)state,os); writebuffer(data,os); writebuffer(data_autodetect,os); //v1 write32le(addr,os); //v2 write8le(motionInitState,os); write8le(motionFlag,os); //v3 writebool(reset_command_state,os); //v4 write8le(write_protect,os); //v5 write32le(savePos,os); fpMC->fseek(savePos, SEEK_SET); data.clear(); return true; }
bool BackupDevice::save_state(EMUFILE* os) { size_t elements_read; u32 version = 5; u32 savePos = fpMC->ftell(); std::vector<u8> data(fsize); fpMC->fseek(0, SEEK_SET); if (data.size() != 0) elements_read = fread(&data[0], 1, fsize, fpMC->get_fp()); if (elements_read != fsize) printf( "Expected %u bytes from saved state but read %lu.\n", fsize, elements_read ); //v0 write32le(version,os); write32le(write_enable,os); write32le(com,os); write32le(addr_size,os); write32le(addr_counter,os); write32le((u32)state,os); writebuffer(data,os); writebuffer(data_autodetect,os); //v1 write32le(addr,os); //v2 write8le(motionInitState,os); write8le(motionFlag,os); //v3 writebool(reset_command_state,os); //v4 write8le(write_protect,os); //v5 write32le(savePos,os); fpMC->fseek(savePos, SEEK_SET); data.clear(); return true; }
bool BackupDevice::save_state(EMUFILE* os) { u32 version = 2; //v0 write32le(version,os); write32le(write_enable,os); write32le(com,os); write32le(addr_size,os); write32le(addr_counter,os); write32le((u32)state,os); writebuffer(data,os); writebuffer(data_autodetect,os); //v1 write32le(addr,os); //v2 write8le(motionInitState,os); write8le(motionFlag,os); return true; }
void SNAPSHOT::save(EMUFILE *os) { // write vars write32le(keyFrame, os); write32le(startFrame, os); write32le(endFrame, os); write32le(consecutivenessTag, os); write32le(recordedJoypadDifferenceBits, os); write32le(modificationType, os); // write description int len = strlen(description); write8le(len, os); os->fwrite(&description[0], len); // save InputLog data inputlog.save(os); // save LagLog data laglog.save(os); // save Markers data markers.save(os); }
void EMUFILE::write8le(u8* val) { write8le(*val); }