MCPcopy Create free account
hub / github.com/DaedalusX64/daedalus / Save_Reset

Function Save_Reset

Source/Core/Save.cpp:39–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37static bool gMempackDirty;
38
39bool Save_Reset()
40{
41 const char * ext;
42 switch (g_ROM.settings.SaveType)
43 {
44 case SAVE_TYPE_EEP4K:
45 ext = ".sav";
46 gSaveSize = 4 * 1024;
47 break;
48 case SAVE_TYPE_EEP16K:
49 ext = ".sav";
50 gSaveSize = 16 * 1024;
51 break;
52 case SAVE_TYPE_SRAM:
53 ext = ".sra";
54 gSaveSize = 32 * 1024;
55 break;
56 case SAVE_TYPE_FLASH:
57 ext = ".fla";
58 gSaveSize = 128 * 1024;
59 break;
60 default:
61 ext = "";
62 gSaveSize = 0;
63 break;
64 }
65
66#ifdef DAEDALUS_ENABLE_ASSERTS
67 DAEDALUS_ASSERT( gSaveSize <= MemoryRegionSizes[MEM_SAVE], "Save size is larger than allocated memory");
68 #endif
69 gSaveDirty = false;
70 if (gSaveSize > 0)
71 {
72 Dump_GetSaveDirectory(gSaveFileName, g_ROM.mFileName, ext);
73
74 FILE * fp = fopen(gSaveFileName, "rb");
75 if (fp != nullptr)
76 {
77 #ifdef DAEDALUS_DEBUG_CONSOLE
78 DBGConsole_Msg(0, "Loading save from [C%s]", gSaveFileName);
79 #endif
80
81 u8 buffer[2048] {};
82 u8 * dst = (u8*)g_pMemoryBuffers[MEM_SAVE];
83
84 for (u32 d {}; d < gSaveSize; d += sizeof(buffer))
85 {
86 fread(buffer, sizeof(buffer), 1, fp);
87
88 for (u32 i {}; i < sizeof(buffer); i++)
89 {
90 dst[d+i] = buffer[i^U8_TWIDDLE];
91 }
92 }
93 fclose(fp);
94 }
95 #ifdef DAEDALUS_DEBUG_CONSOLE
96 else

Callers

nothing calls this directly

Calls 2

Dump_GetSaveDirectoryFunction · 0.85
InitMempackContentFunction · 0.85

Tested by

no test coverage detected