diff --git a/polymer/eduke32/source/menus.c b/polymer/eduke32/source/menus.c index a240e2665..d12127ecc 100644 --- a/polymer/eduke32/source/menus.c +++ b/polymer/eduke32/source/menus.c @@ -684,15 +684,17 @@ static void M_DisplaySaveGameList(void) { if (ud.savegame[x][0]) { - minitext(c,48+(12*x),ud.savegame[x],2,10+16); - } - else if (ud.savegame[x][20]==32 && g_currentMenu!=360+x) - { - // old version and not entering new name - char buf[22]; - Bmemcpy(buf, ud.savegame[x], 22); - buf[0] = '?'; - minitext(c,48+(12*x),buf,13,10+16); + if (g_oldverSavegame[x] && g_currentMenu!=360+x) + { + // old version and not entering new name + char buf[sizeof(ud.savegame[0])]; + Bmemcpy(buf, ud.savegame[x], sizeof(ud.savegame[0])); + minitext(c,48+(12*x),buf,13,10+16); + } + else + { + minitext(c,48+(12*x),ud.savegame[x],2,10+16); + } } } } @@ -723,7 +725,7 @@ static void Menus_LoadSave_DisplayCommon1(void) rotatesprite_fs(101<<16,97<<16,65536L>>1,512,TILE_LOADSHOT,-32,0,4+10+64); - if (ud.savegame[probey][20] == 32) + if (g_oldverSavegame[probey]) { menutext(53,70,0,0,"Version"); menutext(48,90,0,0,"Mismatch"); @@ -4930,7 +4932,7 @@ cheat_for_port_credits2: if (g_currentMenu == MENU_LOAD) { // load game - if (ud.savegame[probey][0] || ud.savegame[probey][20]==32) // ...[20]==32: old version + if (ud.savegame[probey][0]) { Menus_LoadSave_DisplayCommon1(); @@ -4950,7 +4952,7 @@ cheat_for_port_credits2: else { // save game - if (ud.savegame[probey][0] || ud.savegame[probey][20]==32) // ...[20]==32: old version + if (ud.savegame[probey][0]) { Menus_LoadSave_DisplayCommon1(); } @@ -4999,7 +5001,7 @@ cheat_for_port_credits2: case 9: if (g_currentMenu == MENU_LOAD) { - if (ud.savegame[x][0]) + if (ud.savegame[x][0] && !g_oldverSavegame[x]) M_ChangeMenu(1000+x); } else diff --git a/polymer/eduke32/source/savegame.c b/polymer/eduke32/source/savegame.c index 63d74478c..8fbb11036 100644 --- a/polymer/eduke32/source/savegame.c +++ b/polymer/eduke32/source/savegame.c @@ -29,6 +29,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. extern char *bitptr; +uint8_t g_oldverSavegame[10]; + #define BITPTR_POINTER 1 // For storing pointers in files. @@ -150,16 +152,9 @@ void ReadSaveGameHeaders(void) k = sv_loadheader(fil, i, &h); if (k) { + // old version, signal to menu code if (k==2 || k==3) - { - // old version, signal to menu code (which should be rewritten - // more cleanly) - - h.savename[0] = 0; - - h.savename[20] = 32; - h.savename[21] = 0; - } + g_oldverSavegame[i] = 1; // else h.savename is all zeros (fatal failure, like wrong header // magic or too short header) } @@ -1236,6 +1231,8 @@ int32_t sv_saveandmakesnapshot(FILE *fil, int8_t spot, int8_t recdiffsp, int8_t } } + g_oldverSavegame[spot] = 0; + return 0; } @@ -1808,19 +1805,13 @@ static void postloadplayer(int32_t savegamep) //3.5 if (savegamep) { - int32_t i = headspritestat[STAT_FX]; - - while (i >= 0) - { + for (SPRITES_OF(STAT_FX, i)) if (sprite[i].picnum == MUSICANDSFX) { T2 = ud.config.SoundToggle; T1 = 0; } - i = nextspritestat[i]; - } - G_UpdateScreenArea(); FX_SetReverb(0); } diff --git a/polymer/eduke32/source/savegame.h b/polymer/eduke32/source/savegame.h index acb06995a..8b7981fb6 100644 --- a/polymer/eduke32/source/savegame.h +++ b/polymer/eduke32/source/savegame.h @@ -67,7 +67,10 @@ void G_LoadPlayerMaybeMulti(int32_t slot); extern void sv_postyaxload(void); #endif +// XXX: The 'bitptr' decl really belongs into gamedef.h, but we don't want to +// pull all of it in savegame.c? extern char *bitptr; +extern uint8_t g_oldverSavegame[10]; enum {