Example #1
0
static int snapcallback_memory_saver ( const struct xemu_snapshot_definition_st *def )
{
	int ret = xemusnap_write_block_header(def->idstr, C65_MEMORY_BLOCK_VERSION);
	if (ret) return ret;
	ret = sizeof memory;
	while (memory[--ret] == 0xFF) ;
	return xemusnap_write_sub_block(memory, ret + 1);
}
Example #2
0
static int snapcallback_memory_saver ( const struct xemu_snapshot_definition_st *def )
{
	const struct memblock_st *mem = (const struct memblock_st *)def->user_data;
	int ret = xemusnap_write_block_header(def->idstr, M65_MEMORY_BLOCK_VERSION);
	if (ret) return ret;
	ret = mem->size - 1;
	while (ret && mem->data[ret] == 0xFF)
		ret--;
	return xemusnap_write_sub_block(mem->data, ret + 1);
}
Example #3
0
File: sdcard.c Project: MEGA65/xemu
int sdcard_snapshot_save_state ( const struct xemu_snapshot_definition_st *def )
{
	Uint8 buffer[SNAPSHOT_SDCARD_BLOCK_SIZE];
	int a = xemusnap_write_block_header(def->idstr, SNAPSHOT_SDCARD_BLOCK_VERSION);
	if (a) return a;
	memset(buffer, 0xFF, sizeof buffer);
	/* saving state ... */
	memcpy(buffer, sd_sector_bytes, 4);
	memcpy(buffer + 4,sd_d81_img1_start, 4);
	U32_AS_BE(buffer + 8, mounted);
	U32_AS_BE(buffer + 12, sdcard_bytes_read);
	U32_AS_BE(buffer + 16, sd_is_read_only);
	U32_AS_BE(buffer + 20, d81_is_read_only);
	U32_AS_BE(buffer + 24, use_d81);
	buffer[0xFF] = sd_status;
	memcpy(buffer + 0x100, sd_buffer, sizeof sd_buffer);
	return xemusnap_write_sub_block(buffer, sizeof buffer);
}