| 1002 | |
| 1003 | |
| 1004 | static bool Patch_GetCache() |
| 1005 | { |
| 1006 | IO::Filename name; |
| 1007 | |
| 1008 | Dump_GetSaveDirectory(name, g_ROM.mFileName, ".hle"); |
| 1009 | FILE *fp = fopen(name, "rb"); |
| 1010 | |
| 1011 | if (fp != nullptr) |
| 1012 | { |
| 1013 | #ifdef DAEDALUS_DEBUG_CONSOLE |
| 1014 | DBGConsole_Msg(0, "Read from OSHLE cache: %s", name); |
| 1015 | #endif |
| 1016 | u32 data; |
| 1017 | |
| 1018 | fread(&data, 1, sizeof(data), fp); |
| 1019 | if (data != MAGIC_HEADER) |
| 1020 | { |
| 1021 | fclose(fp); |
| 1022 | return false; |
| 1023 | } |
| 1024 | |
| 1025 | for (u32 i = 0; i < nPatchSymbols; i++) |
| 1026 | { |
| 1027 | fread(&data, 1, sizeof(data), fp); |
| 1028 | if (data != 0) |
| 1029 | { |
| 1030 | g_PatchSymbols[i]->Found = true; |
| 1031 | g_PatchSymbols[i]->Location = data; |
| 1032 | fread(&data, 1, sizeof(data), fp); |
| 1033 | g_PatchSymbols[i]->Function = g_PatchSymbols[i]->Signatures[data].Function; |
| 1034 | } |
| 1035 | else |
| 1036 | g_PatchSymbols[i]->Found = false; |
| 1037 | } |
| 1038 | |
| 1039 | for (u32 i = 0; i < nPatchVariables; i++) |
| 1040 | { |
| 1041 | fread(&data, 1, sizeof(data), fp); |
| 1042 | if (data != 0) |
| 1043 | { |
| 1044 | g_PatchVariables[i]->Found = true; |
| 1045 | g_PatchVariables[i]->Location = data; |
| 1046 | } |
| 1047 | else |
| 1048 | { |
| 1049 | g_PatchVariables[i]->Found = false; |
| 1050 | g_PatchVariables[i]->Location = 0; |
| 1051 | } |
| 1052 | } |
| 1053 | |
| 1054 | fclose(fp); |
| 1055 | return true; |
| 1056 | } |
| 1057 | |
| 1058 | return false; |
| 1059 | } |
| 1060 | |
| 1061 | static u32 RET_NOT_PROCESSED(PatchSymbol* ps) |
no test coverage detected