From cb051b44ea301d5e2936dc03e23117be0f6afcab Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 11 Dec 2019 01:10:59 +0100 Subject: [PATCH] - removed unused compression records from savegame header --- source/common/savegamehelp.cpp | 6 ++--- source/duke3d/src/demo.cpp | 2 +- source/duke3d/src/savegame.cpp | 44 +++++-------------------------- source/duke3d/src/savegame.h | 7 ++--- source/rr/src/demo.cpp | 2 +- source/rr/src/savegame.cpp | 48 +++++++--------------------------- source/rr/src/savegame.h | 7 ++--- 7 files changed, 25 insertions(+), 91 deletions(-) diff --git a/source/common/savegamehelp.cpp b/source/common/savegamehelp.cpp index f0c7b1cb2..29d6e7025 100644 --- a/source/common/savegamehelp.cpp +++ b/source/common/savegamehelp.cpp @@ -148,7 +148,7 @@ void G_WriteSaveHeader(const char *name) sjson_put_string(ctx, root, "Map Label", currentLevel->labelName); const char *fn = currentLevel->fileName; if (*fn == '/') fn++; - if (!strncmp(fn, "file://", 7) != 0) // this only has meaning for non-usermaps + if (strncmp(fn, "file://", 7) != 0) // this only has meaning for non-usermaps { auto fileno = fileSystem.FindFile(fn); auto mapfile = fileSystem.GetFileContainer(fileno); @@ -190,7 +190,7 @@ static bool CheckSingleFile (const char *name, bool &printRequires, bool printwa { return true; } - if (!strncmp(name, "file://", 7) == 0) + if (strncmp(name, "file://", 7) == 0) { return FileExists(name + 7); // User maps must be present to be validated. } @@ -274,7 +274,7 @@ int G_ValidateSavegame(FileReader &fr, FString *savetitle, bool formenu) MapRecord *curLevel = nullptr; - if (!strncmp(filename, "file://", 7) != 0) + if (strncmp(filename, "file://", 7) != 0) { for (auto& mr : mapList) { diff --git a/source/duke3d/src/demo.cpp b/source/duke3d/src/demo.cpp index 9410c395f..4326d711a 100644 --- a/source/duke3d/src/demo.cpp +++ b/source/duke3d/src/demo.cpp @@ -109,7 +109,7 @@ static int32_t G_OpenDemoRead(int32_t g_whichDemo) // 0 = mine demo_hasdiffs = saveh.recdiffsp; g_demo_totalCnt = saveh.reccnt; - demo_hasseeds = saveh.synccompress & 2; + demo_hasseeds = 0; i = g_demo_totalCnt/REALGAMETICSPERSEC; OSD_Printf("demo %d duration: %d min %d sec\n", g_whichDemo, i/60, i%60); diff --git a/source/duke3d/src/savegame.cpp b/source/duke3d/src/savegame.cpp index c63759737..b0dd65d68 100644 --- a/source/duke3d/src/savegame.cpp +++ b/source/duke3d/src/savegame.cpp @@ -184,10 +184,6 @@ corrupt: static void sv_postudload(); -// hack -static int different_user_map; - - // XXX: keyboard input 'blocked' after load fail? (at least ESC?) int32_t G_LoadPlayer(FSaveGameNode *sv) { @@ -480,9 +476,7 @@ int32_t G_LoadPlayer(FSaveGameNode *sv) ud.m_player_skill = h.skill; // NOTE: Bmemcpy needed for SAVEGAME_MUSIC. - EDUKE32_STATIC_ASSERT(sizeof(boardfilename) == sizeof(h.boardfn)); - different_user_map = Bstrcmp(boardfilename, h.boardfn); - Bmemcpy(boardfilename, h.boardfn, sizeof(boardfilename)); + strcpy(boardfilename, currentLevel->fileName); int const mapIdx = h.volnum*MAXLEVELS + h.levnum; @@ -655,11 +649,6 @@ typedef struct dataspec_gv_ intptr_t cnt; } dataspec_gv_t; -#define SV_DEFAULTCOMPRTHRES 8 -static uint8_t savegame_diffcompress; // 0:none, 1:Ken's LZW in cache1d.c -static uint8_t savegame_comprthres; - - #define DS_DYNAMIC 1 // dereference .ptr one more time #define DS_STRING 2 #define DS_CMP 4 @@ -807,8 +796,8 @@ static int32_t readspecdata(const dataspec_t *spec, FileReader *fil, uint8_t **d if (ksiz != siz) { OSD_Printf("rsd: spec=%s, idx=%d, mem=%p\n", (char *)sptr->ptr, (int32_t)(spec - sptr), mem); - OSD_Printf(" (%s): read %d, expected %d!\n", - ((spec->flags & DS_CNTMASK) == 0 && spec->size * cnt <= savegame_comprthres) ? "uncompressed" : "compressed", ksiz, siz); + OSD_Printf(" : read %d, expected %d!\n", + ksiz, siz); if (ksiz == -1) OSD_Printf(" read: %s\n", strerror(errno)); @@ -1379,14 +1368,10 @@ static void SV_AllocSnap(int32_t allocinit) } // make snapshot only if spot < 0 (demo) -int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, int8_t recdiffsp, int8_t diffcompress, int8_t synccompress) +int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, int8_t recdiffsp) { savehead_t h; - // set a few savegame system globals - savegame_comprthres = SV_DEFAULTCOMPRTHRES; - savegame_diffcompress = diffcompress; - // calculate total snapshot size #if !defined LUNATIC sv_makevarspec(); @@ -1405,10 +1390,6 @@ int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, i h.bytever = BYTEVERSION; h.userbytever = ud.userbytever; h.scriptcrc = g_scriptcrc; - h.comprthres = savegame_comprthres; - h.recdiffsp = recdiffsp; - h.diffcompress = savegame_diffcompress; - h.synccompress = synccompress; h.reccnt = 0; h.snapsiz = svsnapsiz; @@ -1424,7 +1405,6 @@ int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, i if (spot >= 0) { // savegame - Bstrncpyz(h.savename, name, sizeof(h.savename)); auto fw = WriteSavegameChunk("header.dat"); fw->Write(&h, sizeof(savehead_t)); @@ -1432,15 +1412,10 @@ int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, i } else { - // demo - + // demo (currently broken, needs a new format.) const time_t t = time(NULL); - struct tm * st; - - Bstrncpyz(h.savename, "EDuke32 demo", sizeof(h.savename)); - if (t>=0 && (st = localtime(&t))) - Bsnprintf(h.savename, sizeof(h.savename), "Demo %04d%02d%02d %s", - st->tm_year+1900, st->tm_mon+1, st->tm_mday, GetGitDescription()); + struct tm * st = localtime(&t); + FStringf demoname("Demo %04d%02d%02d %s", st->tm_year+1900, st->tm_mon+1, st->tm_mday, GetGitDescription()); fil.Write(&h, sizeof(savehead_t)); } @@ -1566,8 +1541,6 @@ int32_t sv_loadsnapshot(FileReader &fil, int32_t spot, savehead_t *h) OSD_Printf("sv_loadsnapshot: snapshot size: %d bytes.\n", h->snapsiz); #endif - savegame_comprthres = h->comprthres; - if (spot >= 0) { // savegame @@ -1580,9 +1553,6 @@ int32_t sv_loadsnapshot(FileReader &fil, int32_t spot, savehead_t *h) } else { - // demo - savegame_diffcompress = h->diffcompress; - svsnapsiz = h->snapsiz; SV_AllocSnap(1); diff --git a/source/duke3d/src/savegame.h b/source/duke3d/src/savegame.h index f50e588fc..3b7bddded 100644 --- a/source/duke3d/src/savegame.h +++ b/source/duke3d/src/savegame.h @@ -46,16 +46,13 @@ typedef struct uint32_t userbytever; uint32_t scriptcrc; - uint8_t comprthres; - uint8_t recdiffsp, diffcompress, synccompress; + uint8_t recdiffsp; // 4 bytes int32_t reccnt, snapsiz; // 8 bytes - char savename[MAXSAVEGAMENAMESTRUCT]; uint8_t numplayers, volnum, levnum, skill; - char boardfn[BMAX_PATH]; // 286 bytes uint8_t getPtrSize() const { return ptrsize; } @@ -71,7 +68,7 @@ int32_t sv_readdiff(FileReader& fil); uint32_t sv_writediff(FileWriter *fil); int32_t sv_loadheader(FileReader &fil, int32_t spot, savehead_t *h); int32_t sv_loadsnapshot(FileReader &fil, int32_t spot, savehead_t *h); -int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, int8_t recdiffsp, int8_t diffcompress, int8_t synccompress); +int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, int8_t recdiffsp); void sv_freemem(); int32_t G_LoadSaveHeaderNew(char const *fn, savehead_t *saveh); void ReadSaveGameHeaders(void); diff --git a/source/rr/src/demo.cpp b/source/rr/src/demo.cpp index bc005061c..50aef49a1 100644 --- a/source/rr/src/demo.cpp +++ b/source/rr/src/demo.cpp @@ -109,7 +109,7 @@ static int32_t G_OpenDemoRead(int32_t g_whichDemo) // 0 = mine demo_hasdiffs = saveh.recdiffsp; g_demo_totalCnt = saveh.reccnt; - demo_hasseeds = saveh.synccompress&2; + demo_hasseeds = 0; i = g_demo_totalCnt/REALGAMETICSPERSEC; OSD_Printf("demo %d duration: %d min %d sec\n", g_whichDemo, i/60, i%60); diff --git a/source/rr/src/savegame.cpp b/source/rr/src/savegame.cpp index ab9e93477..45959408c 100644 --- a/source/rr/src/savegame.cpp +++ b/source/rr/src/savegame.cpp @@ -184,8 +184,6 @@ corrupt: static void sv_postudload(); -// hack -static int different_user_map; // XXX: keyboard input 'blocked' after load fail? (at least ESC?) int32_t G_LoadPlayer(const char *path) @@ -240,16 +238,10 @@ int32_t G_LoadPlayer(const char *path) ud.m_player_skill = h.skill; // NOTE: Bmemcpy needed for SAVEGAME_MUSIC. - EDUKE32_STATIC_ASSERT(sizeof(boardfilename) == sizeof(h.boardfn)); - different_user_map = Bstrcmp(boardfilename, h.boardfn); - Bmemcpy(boardfilename, h.boardfn, sizeof(boardfilename)); + strcpy(boardfilename, currentLevel->fileName); - int const mapIdx = h.volnum*MAXLEVELS + h.levnum; char workbuffer[BMAX_PATH]; - if (boardfilename[0]) - Bstrcpy(workbuffer, boardfilename); - else - Bstrcpy(workbuffer, mapList[mapIdx].fileName); + Bstrcpy(workbuffer, currentLevel->fileName); if (workbuffer[0]) { @@ -393,11 +385,6 @@ typedef struct dataspec_ intptr_t cnt; } dataspec_t; -#define SV_DEFAULTCOMPRTHRES 8 -static uint8_t savegame_diffcompress; // 0:none, 1:Ken's LZW in cache1d.c -static uint8_t savegame_comprthres; - - #define DS_DYNAMIC 1 // dereference .ptr one more time #define DS_STRING 2 #define DS_CMP 4 @@ -545,8 +532,8 @@ static int32_t readspecdata(const dataspec_t *spec, FileReader *fil, uint8_t **d if (ksiz != siz) { OSD_Printf("rsd: spec=%s, idx=%d, mem=%p\n", (char *)sptr->ptr, (int32_t)(spec - sptr), mem); - OSD_Printf(" (%s): read %d, expected %d!\n", - ((spec->flags & DS_CNTMASK) == 0 && spec->size * cnt <= savegame_comprthres) ? "uncompressed" : "compressed", ksiz, siz); + OSD_Printf(" : read %d, expected %d!\n", + ksiz, siz); if (ksiz == -1) OSD_Printf(" read: %s\n", strerror(errno)); @@ -1086,14 +1073,10 @@ static void SV_AllocSnap(int32_t allocinit) } // make snapshot only if spot < 0 (demo) -int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, int8_t recdiffsp, int8_t diffcompress, int8_t synccompress, bool isAutoSave) +int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, int8_t recdiffsp, bool isAutoSave) { savehead_t h; - // set a few savegame system globals - savegame_comprthres = SV_DEFAULTCOMPRTHRES; - savegame_diffcompress = diffcompress; - // calculate total snapshot size svsnapsiz = calcsz(svgm_udnetw) + calcsz(svgm_secwsp) + calcsz(svgm_script) + calcsz(svgm_anmisc); @@ -1110,10 +1093,6 @@ int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, i h.bytever = BYTEVERSION; h.userbytever = ud.userbytever; h.scriptcrc = g_scriptcrc; - h.comprthres = savegame_comprthres; - h.recdiffsp = recdiffsp; - h.diffcompress = savegame_diffcompress; - h.synccompress = synccompress; h.reccnt = 0; h.snapsiz = svsnapsiz; @@ -1129,7 +1108,6 @@ int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, i if (spot >= 0) { // savegame - Bstrncpyz(h.savename, name, sizeof(h.savename)); auto fw = WriteSavegameChunk("header.dat"); fw->Write(&h, sizeof(savehead_t)); G_WriteSaveHeader(name); @@ -1137,15 +1115,12 @@ int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, i else { // demo - + // demo (currently broken, needs a new format.) const time_t t = time(NULL); - struct tm * st; - - Bstrncpyz(h.savename, "EDuke32 demo", sizeof(h.savename)); - if (t>=0 && (st = localtime(&t))) - Bsnprintf(h.savename, sizeof(h.savename), "Demo %04d%02d%02d %s", - st->tm_year+1900, st->tm_mon+1, st->tm_mday, GetGitDescription()); + struct tm * st = localtime(&t); + FStringf demoname("Demo %04d%02d%02d %s", st->tm_year+1900, st->tm_mon+1, st->tm_mday, GetGitDescription()); fil.Write(&h, sizeof(savehead_t)); + } @@ -1271,8 +1246,6 @@ int32_t sv_loadsnapshot(FileReader &fil, int32_t spot, savehead_t *h) OSD_Printf("sv_loadsnapshot: snapshot size: %d bytes.\n", h->snapsiz); #endif - savegame_comprthres = h->comprthres; - if (spot >= 0) { // savegame @@ -1285,9 +1258,6 @@ int32_t sv_loadsnapshot(FileReader &fil, int32_t spot, savehead_t *h) } else { - // demo - savegame_diffcompress = h->diffcompress; - svsnapsiz = h->snapsiz; SV_AllocSnap(1); diff --git a/source/rr/src/savegame.h b/source/rr/src/savegame.h index c30497b78..ab205105d 100644 --- a/source/rr/src/savegame.h +++ b/source/rr/src/savegame.h @@ -41,16 +41,13 @@ typedef struct uint32_t userbytever; uint32_t scriptcrc; - uint8_t comprthres; - uint8_t recdiffsp, diffcompress, synccompress; + uint8_t recdiffsp; // 4 bytes int32_t reccnt, snapsiz; // 8 bytes - char savename[MAXSAVEGAMENAMESTRUCT]; uint8_t numplayers, volnum, levnum, skill; - char boardfn[BMAX_PATH]; // 286 bytes uint8_t getPtrSize() const { return ptrsize; } @@ -62,7 +59,7 @@ int32_t sv_readdiff(FileReader& fil); uint32_t sv_writediff(FileWriter *fil); int32_t sv_loadheader(FileReader &fil, int32_t spot, savehead_t *h); int32_t sv_loadsnapshot(FileReader &fil, int32_t spot, savehead_t *h); -int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, int8_t recdiffsp, int8_t diffcompress, int8_t synccompress, bool isAutoSave = false); +int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, int8_t recdiffsp, bool isAutoSave = false); void sv_freemem(); int32_t G_LoadSaveHeaderNew(char const *fn, savehead_t *saveh); void ReadSaveGameHeaders(void);