NESe (pronounced "Nessie") is a NES emulator based on the e6502 emulator, also written in C with a focus on speed and portability for use on embedded platforms, especially ARM.
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

48 рядки
1.4KB

  1. #include "save.h"
  2. #include "file.h"
  3. #include "mapper.h"
  4. static int make_sram_filename(char* sram_filename, int max_len,
  5. const char* cart_filename) {
  6. return make_filename( sram_filename, max_len,
  7. basename(cart_filename),
  8. "sram", "sram");
  9. }
  10. int load_sram(nes_cart* cart, const char* cart_filename) {
  11. int status = -1;
  12. int sram_size = cart->mapper->sram_size ?
  13. cart->mapper->sram_size(cart->mapper) : 0;
  14. void* sram = cart->mapper->sram ?
  15. cart->mapper->sram(cart->mapper) : NULL;
  16. if (sram_size > 0 && NULL != sram) {
  17. char sram_filename[FILENAME_MAX] = {0};
  18. make_sram_filename(sram_filename, FILENAME_MAX - 1,
  19. cart_filename);
  20. status = read_file(sram_filename, sram, sram_size);
  21. }
  22. return status;
  23. }
  24. int save_sram(const nes_cart* cart, const char* cart_filename) {
  25. int status = -1;
  26. int sram_size = cart->mapper->sram_size ?
  27. cart->mapper->sram_size(cart->mapper) : 0;
  28. const void* sram = cart->mapper->sram ?
  29. cart->mapper->sram(cart->mapper) : NULL;
  30. if (sram_size > 0 && NULL != sram) {
  31. char sram_filename[FILENAME_MAX] = {0};
  32. make_sram_filename(sram_filename, FILENAME_MAX - 1,
  33. cart_filename);
  34. status = write_file(sram_filename, sram, sram_size);
  35. }
  36. return status;
  37. }