#include "save.h" #include "file.h" #include "mapper.h" static int make_sram_filename(char* sram_filename, int max_len, const char* cart_filename) { return make_filename( sram_filename, max_len, basename(cart_filename), "sram", "sram"); } int load_sram(nes_cart* cart, const char* cart_filename) { int status = -1; int sram_size = cart->mapper->sram_size ? cart->mapper->sram_size(cart->mapper) : 0; void* sram = cart->mapper->sram ? cart->mapper->sram(cart->mapper) : NULL; if (sram_size > 0 && NULL != sram) { char sram_filename[FILENAME_MAX] = {0}; make_sram_filename(sram_filename, FILENAME_MAX - 1, cart_filename); status = read_file(sram_filename, sram, sram_size); } return status; } int save_sram(const nes_cart* cart, const char* cart_filename) { int status = -1; int sram_size = cart->mapper->sram_size ? cart->mapper->sram_size(cart->mapper) : 0; const void* sram = cart->mapper->sram ? cart->mapper->sram(cart->mapper) : NULL; if (sram_size > 0 && NULL != sram) { char sram_filename[FILENAME_MAX] = {0}; make_sram_filename(sram_filename, FILENAME_MAX - 1, cart_filename); status = write_file(sram_filename, sram, sram_size); } return status; }