int freezeframe_snapshot_read_module(snapshot_t *s) { BYTE vmajor, vminor; snapshot_module_t *m; m = snapshot_module_open(s, SNAP_MODULE_NAME, &vmajor, &vminor); if (m == NULL) { return -1; } if ((vmajor != CART_DUMP_VER_MAJOR) || (vminor != CART_DUMP_VER_MINOR)) { snapshot_module_close(m); return -1; } if (0 || (SMR_BA(m, roml_banks, FREEZE_FRAME_CART_SIZE) < 0)) { snapshot_module_close(m); return -1; } snapshot_module_close(m); memcpy(romh_banks, roml_banks, FREEZE_FRAME_CART_SIZE); return freezeframe_common_attach(); }
int freezeframe_bin_attach(const char *filename, BYTE *rawcart) { DBG(("Freeze Frame: bin attach '%s'\n", filename)); if (util_file_load(filename, rawcart, FREEZE_FRAME_CART_SIZE, UTIL_FILE_LOAD_SKIP_ADDRESS) < 0) { return -1; } return freezeframe_common_attach(); }
int freezeframe_crt_attach(FILE *fd, BYTE *rawcart) { BYTE chipheader[0x10]; if (fread(chipheader, 0x10, 1, fd) < 1) { return -1; } if (chipheader[0xb] > 0) { return -1; } if (fread(rawcart, FREEZE_FRAME_CART_SIZE, 1, fd) < 1) { return -1; } return freezeframe_common_attach(); }
int freezeframe_crt_attach(FILE *fd, BYTE *rawcart) { crt_chip_header_t chip; if (crt_read_chip_header(&chip, fd)) { return -1; } if (chip.bank > 0 || chip.size != FREEZE_FRAME_CART_SIZE) { return -1; } if (crt_read_chip(rawcart, 0, &chip, fd)) { return -1; } return freezeframe_common_attach(); }
int freezeframe_snapshot_read_module(snapshot_t *s) { BYTE vmajor, vminor; snapshot_module_t *m; m = snapshot_module_open(s, snap_module_name, &vmajor, &vminor); if (m == NULL) { return -1; } /* Do not accept versions higher than current */ if (vmajor > SNAP_MAJOR || vminor > SNAP_MINOR) { snapshot_set_error(SNAPSHOT_MODULE_HIGHER_VERSION); goto fail; } /* new in 0.1 */ if (SNAPVAL(vmajor, vminor, 0, 1)) { if (0 || SMR_B_INT(m, &freezeframe_rom_8000) < 0 || SMR_B_INT(m, &freezeframe_rom_e000) < 0) { goto fail; } } else { freezeframe_rom_8000 = 0; freezeframe_rom_e000 = 0; } if (SMR_BA(m, roml_banks, FREEZE_FRAME_CART_SIZE) < 0) { goto fail; } snapshot_module_close(m); memcpy(romh_banks, roml_banks, FREEZE_FRAME_CART_SIZE); return freezeframe_common_attach(); fail: snapshot_module_close(m); return -1; }