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); }
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); }
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); }