diff --git a/src/m_menu.c b/src/m_menu.c index c338a618599ebf2f7c70824db5a364022ee1adbf..06c235b9766b22da13f7bfc7a00c240f0eed5956 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -6079,6 +6079,18 @@ static void M_DrawLoadGameData(void) { V_DrawSmallScaledPatch(x+2, y+64, 0, savselp[5]); } +#ifndef PERFECTSAVE // disabled, don't touch + else if ((savegameinfo[savetodraw].skinnum == 1) + && (savegameinfo[savetodraw].lives == 99) + && (savegameinfo[savetodraw].gamemap & 8192) + && (savegameinfo[savetodraw].numgameovers == 0) + && (savegameinfo[savetodraw].numemeralds == (1<<7 - 1)) // perfect save + { + V_DrawFill(x+6, y+64, 72, 50, 134); + V_DrawFill(x+6, y+74, 72, 30, 201); + V_DrawFill(x+6, y+84, 72, 10, 1); + } +#endif else { if (savegameinfo[savetodraw].lives == -42) @@ -6360,15 +6372,9 @@ static void M_ReadSavegameInfo(UINT32 slot) if (((fake-1) & 8191) >= NUMMAPS) BADSAVE if(!mapheaderinfo[(fake-1) & 8191]) - { savegameinfo[slot].levelname[0] = '\0'; - savegameinfo[slot].actnum = 0; - } else - { strcpy(savegameinfo[slot].levelname, mapheaderinfo[(fake-1) & 8191]->lvlttl); - savegameinfo[slot].actnum = mapheaderinfo[(fake-1) & 8191]->actnum; - } savegameinfo[slot].gamemap = fake; @@ -6390,10 +6396,10 @@ static void M_ReadSavegameInfo(UINT32 slot) savegameinfo[slot].botskin = fake >> 5; if (savegameinfo[slot].botskin-1 >= numskins || !R_SkinUsable(-1, savegameinfo[slot].botskin-1)) - savegameinfo[slot].botskin = 0; + BADSAVE CHECKPOS - (void)READUINT8(save_p); // numgameovers + savegameinfo[slot].numgameovers = READUINT8(save_p); // numgameovers CHECKPOS savegameinfo[slot].lives = READSINT8(save_p); // lives CHECKPOS diff --git a/src/m_menu.h b/src/m_menu.h index 6646aa4afaf1165f8ec1a2c885b13948f6c945ec..8040b63e67e9bf30d3c28efcaab4aa2d5ec0bf1d 100644 --- a/src/m_menu.h +++ b/src/m_menu.h @@ -216,10 +216,10 @@ typedef struct typedef struct { char levelname[32]; - UINT8 actnum; UINT8 skinnum; UINT8 botskin; UINT8 numemeralds; + UINT8 numgameovers; INT32 lives; INT32 continues; INT32 gamemap;