MCPcopy Create free account
hub / github.com/Stewmath/GameYob / loadState

Function loadState

arm9/source/inputhelper.cpp:970–1086  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

968}
969
970int loadState(int stateNum) {
971 FILE *inFile;
972 StateStruct state;
973 char statename[100];
974 int version;
975
976 memset(&state, 0, sizeof(StateStruct));
977
978 if (stateNum == -1)
979 siprintf(statename, "%s.yss", basename);
980 else
981 siprintf(statename, "%s.ys%d", basename, stateNum);
982 inFile = fopen(statename, "r");
983
984 if (inFile == 0) {
985 printMenuMessage("State doesn't exist.");
986 return 1;
987 }
988
989 fread(&version, sizeof(int), 1, inFile);
990
991 if (version == 0 || version > STATE_VERSION) {
992 printMenuMessage("State is from an incompatible version.");
993 return 1;
994 }
995
996 fread((char*)bgPaletteData, 1, sizeof(bgPaletteData), inFile);
997 fread((char*)sprPaletteData, 1, sizeof(sprPaletteData), inFile);
998 fread((char*)vram, 1, sizeof(vram), inFile);
999 fread((char*)wram, 1, sizeof(wram), inFile);
1000 fread((char*)hram, 1, 0x200, inFile);
1001
1002 if (version <= 4 && ramSize == 0x04)
1003 // Value "0x04" for ram size wasn't interpreted correctly before
1004 fread((char*)externRam, 1, 0x2000*4, inFile);
1005 else
1006 fread((char*)externRam, 1, 0x2000*numRamBanks, inFile);
1007
1008 fread((char*)&state, 1, sizeof(StateStruct), inFile);
1009
1010 /* MBC-specific values have been introduced in v3 */
1011 if (version >= 3) {
1012 switch (MBC) {
1013 case MBC3:
1014 if (version == 3) {
1015 u8 rtcReg;
1016 fread(&rtcReg, 1, sizeof(u8), inFile);
1017 if (rtcReg != 0)
1018 currentRamBank = rtcReg;
1019 }
1020 break;
1021 case HUC3:
1022 fread(&HuC3Mode, 1, sizeof(u8), inFile);
1023 fread(&HuC3Value, 1, sizeof(u8), inFile);
1024 fread(&HuC3Shift, 1, sizeof(u8), inFile);
1025 break;
1026 }
1027

Callers 2

stateLoadFuncFunction · 0.85
initializeGameboyFunction · 0.85

Calls 6

printMenuMessageFunction · 0.85
mapMemoryFunction · 0.85
setDoubleSpeedFunction · 0.85
saveGameFunction · 0.85
refreshGFXFunction · 0.85
refreshSNDFunction · 0.85

Tested by

no test coverage detected