Пример #1
0
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;
}
Пример #2
0
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;
}