/*------------------------------------------------- battery_load - retrieves the battery backed RAM for an image. The file name is created from the machine driver name and the image name. -------------------------------------------------*/ void device_image_interface::battery_load(void *buffer, int length, int fill) { astring *fname = astring_assemble_4(astring_alloc(), device().machine().system().name, PATH_SEPARATOR, m_basename_noext, ".nv"); image_battery_load_by_name(device().machine().options(), astring_c(fname), buffer, length, fill); astring_free(fname); }
static multicart_open_error load_ram_resource(emu_options &options, multicart_load_state *state, xml_data_node *resource_node, multicart_resource *resource) { const char *length_string; const char *ram_type; const char *ram_filename; astring *ram_pathname; /* locate the 'length' attribute */ length_string = xml_get_attribute_string(resource_node, "length", NULL); if (length_string == NULL) return MCERR_MISSING_RAM_LENGTH; /* ...and parse it */ resource->length = ram_parse_string(length_string); if (resource->length <= 0) return MCERR_INVALID_RAM_SPEC; /* allocate bytes for this resource */ resource->ptr = pool_malloc_lib(state->multicart->data->pool, resource->length); if (resource->ptr == NULL) return MCERR_OUT_OF_MEMORY; /* Is this a persistent RAM resource? Then try to load it. */ ram_type = xml_get_attribute_string(resource_node, "type", NULL); if (ram_type != NULL) { if (strcmp(ram_type, "persistent")==0) { astring tmp; /* Get the file name. */ ram_filename = xml_get_attribute_string(resource_node, "file", NULL); if (ram_filename==NULL) return MCERR_XML_ERROR; ram_pathname = astring_assemble_3(&tmp, state->multicart->gamedrv_name, PATH_SEPARATOR, ram_filename); /* Save the file name so that we can write the contents on unloading. If the RAM resource has no filename, we know that it was volatile only. */ resource->filename = pool_strdup_lib(state->multicart->data->pool, astring_c(ram_pathname)); if (resource->filename == NULL) return MCERR_OUT_OF_MEMORY; image_battery_load_by_name(options, resource->filename, resource->ptr, resource->length, 0x00); } /* else this type is volatile, in which case we just have a memory expansion */ } return MCERR_NONE; }
/*------------------------------------------------- battery_load - retrieves the battery backed RAM for an image. The file name is created from the machine driver name and the image name. -------------------------------------------------*/ void device_image_interface::battery_load(void *buffer, int length, int fill) { astring fname(device().machine().system().name, PATH_SEPARATOR, m_basename_noext, ".nv"); image_battery_load_by_name(device().machine().options(), fname, buffer, length, fill); }
void device_image_interface::battery_load(void *buffer, int length, void *def_buffer) { std::string fname = std::string(device().machine().system().name).append(PATH_SEPARATOR).append(m_basename_noext.c_str()).append(".nv"); image_battery_load_by_name(device().machine().options(), fname.c_str(), buffer, length, def_buffer); }