aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libretro.c84
-rw-r--r--source/gfx.c4
-rw-r--r--source/memmap.c35
-rw-r--r--source/memmap.h3
4 files changed, 56 insertions, 70 deletions
diff --git a/libretro.c b/libretro.c
index c09e6c1..0a89035 100644
--- a/libretro.c
+++ b/libretro.c
@@ -312,11 +312,6 @@ void init_sfc_setting(void)
}
-void S9xAutoSaveSRAM()
-{
- SaveSRAM(S9xGetFilename("srm"));
-}
-
#ifdef USE_BLARGG_APU
static void S9xAudioCallback()
{
@@ -373,10 +368,6 @@ void retro_deinit(void)
if (Settings.SPC7110)
(*CleanUp7110)();
- if(retro_save_directory[0] == '\0')
- SaveSRAM(S9xGetFilename("srm"));
- else
- SaveSRAM(retro_save_directory);
S9xDeinitGFX();
S9xDeinitDisplay();
@@ -936,21 +927,6 @@ bool retro_load_game(const struct retro_game_info* game)
Settings.FrameTime = (Settings.PAL ? Settings.FrameTimePAL :
Settings.FrameTimeNTSC);
-
- const char *dir = NULL;
- if (environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &dir) && dir)
- {
- GetBaseName("");
- snprintf(retro_save_directory,sizeof(retro_save_directory),"%s%c%s.srm",dir,slash,retro_base_name);
- log_cb(RETRO_LOG_INFO,
- "SAVE LOCATION: %s\n", retro_save_directory);
- }
-
- if(retro_save_directory[0] != '\0')
- LoadSRAM(retro_save_directory);
- else
- LoadSRAM(S9xGetFilename("srm"));
-
struct retro_system_av_info av_info;
retro_get_system_av_info(&av_info);
@@ -973,12 +949,64 @@ void retro_unload_game(void)
}
-void* retro_get_memory_data(unsigned id)
+void* retro_get_memory_data(unsigned type)
{
- return NULL;
+ uint8_t* data;
+
+ switch(type)
+ {
+ case RETRO_MEMORY_SAVE_RAM:
+ data = Memory.SRAM;
+ break;
+ case RETRO_MEMORY_RTC:
+#if 0
+ data = RTCData.reg;
+#endif
+ break;
+ case RETRO_MEMORY_SYSTEM_RAM:
+ data = Memory.RAM;
+ break;
+ case RETRO_MEMORY_VIDEO_RAM:
+ data = Memory.VRAM;
+ break;
+ //case RETRO_MEMORY_ROM:
+ // data = Memory.ROM;
+ // break;
+ default:
+ data = NULL;
+ break;
+ }
+
+ return data;
}
-size_t retro_get_memory_size(unsigned id)
+size_t retro_get_memory_size(unsigned type)
{
- return 0;
+ unsigned size;
+
+ switch(type)
+ {
+ case RETRO_MEMORY_SAVE_RAM:
+ size = (unsigned) (Memory.SRAMSize ? (1 << (Memory.SRAMSize + 3)) * 128 : 0);
+ if (size > 0x20000)
+ size = 0x20000;
+ break;
+ case RETRO_MEMORY_RTC:
+ size = (Settings.SRTC || Settings.SPC7110RTC)?20:0;
+ break;
+ case RETRO_MEMORY_SYSTEM_RAM:
+ size = 128 * 1024;
+ break;
+ case RETRO_MEMORY_VIDEO_RAM:
+ size = 64 * 1024;
+ break;
+ //case RETRO_MEMORY_ROM:
+ // data = Memory.CalculatedSize;
+ // break;
+ default:
+ size = 0;
+ break;
+ }
+
+ return size;
}
diff --git a/source/gfx.c b/source/gfx.c
index 1c3efa1..d55ae09 100644
--- a/source/gfx.c
+++ b/source/gfx.c
@@ -717,11 +717,7 @@ void S9xEndScreenRefresh()
#endif
if (CPU.SRAMModified)
- {
- S9xAutoSaveSRAM();
CPU.SRAMModified = false;
- }
-
}
void S9xSetInfoString(const char* string)
diff --git a/source/memmap.c b/source/memmap.c
index 01d0707..6c013ea 100644
--- a/source/memmap.c
+++ b/source/memmap.c
@@ -1535,41 +1535,6 @@ bool LoadSRAM(const char* filename)
return (true);
}
-bool SaveSRAM(const char* filename)
-{
- if (Settings.SuperFX && Memory.ROMType < 0x15)
- return true;
- if (Settings.SA1 && Memory.ROMType == 0x34)
- return true;
-
- int size = Memory.SRAMSize ?
- (1 << (Memory.SRAMSize + 3)) * 128 : 0;
- if (Settings.SRTC)
- {
- size += SRTC_SRAM_PAD;
- S9xSRTCPreSaveState();
- }
-
- if (size > 0x20000)
- size = 0x20000;
-
- if (size && *Memory.ROMFilename)
- {
-
- FILE* file = fopen(filename, "w");
- if (file)
- {
- fwrite((unsigned char*) Memory.SRAM, size, 1, file);
- fclose(file);
- if (Settings.SPC7110RTC)
- S9xSaveSPC7110RTC(&rtc_f9);
-
- return (true);
- }
- }
- return (false);
-}
-
void FixROMSpeed()
{
int c;
diff --git a/source/memmap.h b/source/memmap.h
index 0be1192..3be1cd3 100644
--- a/source/memmap.h
+++ b/source/memmap.h
@@ -145,7 +145,6 @@ uint32_t FileLoader(uint8_t* buffer, const char* filename, int32_t maxsize);
#endif
void InitROM(bool);
bool LoadSRAM(const char*);
-bool SaveSRAM(const char*);
bool S9xInitMemory();
void S9xDeinitMemory();
void FreeSDD1Data();
@@ -258,8 +257,6 @@ bool LoadZip(const char* zipname,
uint8_t* buffer);
-void S9xAutoSaveSRAM();
-
#ifdef NO_INLINE_SET_GET
uint8_t S9xGetByte(uint32_t Address);
uint16_t S9xGetWord(uint32_t Address);