shithub: duke3d

Download patch

ref: db01eff6d98e98dbfb89990f722a95daafeb1159
parent: f5d2782495c7387eb05db93e6e24aed5ff6bd9ad
author: Tanguy Fautre <tanguy@fautre.com>
date: Sat Feb 15 14:35:49 EST 2020

64-bit: Fix writing and reading 64-bit savegames (still incompatible with 32-bits savegames though)

--- a/Engine/src/network.c
+++ b/Engine/src/network.c
@@ -8,6 +8,7 @@
 
 #include "network.h"
 #include "mmulti_stable.h"
+#include "mmulti_unstable.h"
 
 int nNetMode = 0;
 
@@ -32,9 +33,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:		
-        //    unstable_callcommit();
-        //    break;
+        case 0:		
+            unstable_callcommit();
+            break;
         case 1:
             stable_callcommit();
             break;		
@@ -46,9 +47,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:	
-        //    unstable_initcrc();
-        //    break;
+        case 0:	
+            unstable_initcrc();
+            break;
         case 1:	
             stable_initcrc();
             break;
@@ -60,8 +61,8 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    return unstable_getcrc(buffer, bufleng);
+        case 0:
+            return unstable_getcrc(buffer, bufleng);
         case 1:
             return stable_getcrc(buffer, bufleng);
 	}
@@ -73,9 +74,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    unstable_initmultiplayers(damultioption, dacomrateoption, dapriority);
-        //    break;
+        case 0:
+            unstable_initmultiplayers(damultioption, dacomrateoption, dapriority);
+            break;
         case 1:
             stable_initmultiplayers(damultioption, dacomrateoption, dapriority);
             break;
@@ -87,9 +88,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    unstable_sendpacket(other, bufptr, messleng);
-        //    break;
+        case 0:
+            unstable_sendpacket(other, bufptr, messleng);
+            break;
         case 1:
             stable_sendpacket(other, bufptr, messleng);
             break;
@@ -101,9 +102,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    unstable_setpackettimeout(datimeoutcount, daresendagaincount);
-        //    break;
+        case 0:
+            unstable_setpackettimeout(datimeoutcount, daresendagaincount);
+            break;
         case 1:
             stable_setpackettimeout(datimeoutcount, daresendagaincount);
             break;
@@ -115,9 +116,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    unstable_uninitmultiplayers();
-        //    break;
+        case 0:
+            unstable_uninitmultiplayers();
+            break;
         case 1:
             stable_uninitmultiplayers();
             break;
@@ -129,9 +130,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    unstable_sendlogon();
-        //    break;
+        case 0:
+            unstable_sendlogon();
+            break;
         case 1:
             stable_sendlogon();
             break;
@@ -143,9 +144,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    unstable_sendlogoff();
-        //    break;
+        case 0:
+            unstable_sendlogoff();
+            break;
         case 1:
             stable_sendlogoff();
             break;
@@ -157,8 +158,8 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    return unstable_getoutputcirclesize();
+        case 0:
+            return unstable_getoutputcirclesize();
         case 1:
             return stable_getoutputcirclesize();		
 	}
@@ -170,9 +171,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    unstable_setsocket(newsocket);
-        //    break;
+        case 0:
+            unstable_setsocket(newsocket);
+            break;
         case 1:
             stable_setsocket(newsocket);
             break;
@@ -184,8 +185,8 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    return unstable_getpacket(other, bufptr); // default
+        case 0:
+            return unstable_getpacket(other, bufptr); // default
         case 1:
             return stable_getpacket(other, bufptr);
 	}
@@ -197,9 +198,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    unstable_flushpackets();
-        //    break;
+        case 0:
+            unstable_flushpackets();
+            break;
         case 1:
             stable_flushpackets();
             break;
@@ -211,9 +212,9 @@
 #ifndef USER_DUMMY_NETWORK
 	switch(nNetMode)
 	{
-        //case 0:
-        //    unstable_genericmultifunction(other, bufptr, messleng, command);
-        //    break;
+        case 0:
+            unstable_genericmultifunction(other, bufptr, messleng, command);
+            break;
         case 1:
             stable_genericmultifunction(other, bufptr, messleng, command);
             break;
--- a/Game/src/cvars.c
+++ b/Game/src/cvars.c
@@ -30,7 +30,7 @@
     return num_cvar_bindings;
 }
 
-cvar_binding* CVAR_GetCvarBinding(unsigned int nBinding)
+cvar_binding* CVAR_GetCvarBinding(int nBinding)
 {
     if(nBinding > num_cvar_bindings -1)
     {
--- a/Game/src/menues.c
+++ b/Game/src/menues.c
@@ -219,487 +219,490 @@
 
 int loadplayer(int8_t spot)
 {
-     short k,music_changed;
-     char  fn[] = "game0.sav";
-     char  mpfn[] = "gameA_00.sav";
-     char  *fnptr, scriptptrs[MAXSCRIPTSIZE];
-     int32_t fil, bv, i, j, x;
-     int32 nump;
+    short k, music_changed;
+    char  fn[] = "game0.sav";
+    char  mpfn[] = "gameA_00.sav";
+    char* fnptr, scriptptrs[MAXSCRIPTSIZE];
+    int32_t fil, bv, i, x;
+    intptr_t j;
+    int32 nump;
 
-     if(spot < 0)
-     {
+    if (spot < 0)
+    {
         multiflag = 1;
         multiwhat = 0;
-        multipos = -spot-1;
+        multipos = -spot - 1;
         return -1;
-     }
+    }
 
-     if( multiflag == 2 && multiwho != myconnectindex )
-     {
-         fnptr = mpfn;
-         mpfn[4] = spot + 'A';
+    if (multiflag == 2 && multiwho != myconnectindex)
+    {
+        fnptr = mpfn;
+        mpfn[4] = spot + 'A';
 
-         if(ud.multimode > 9)
-         {
-             mpfn[6] = (multiwho/10) + '0';
-             mpfn[7] = (multiwho%10) + '0';
-         }
-         else mpfn[7] = multiwho + '0';
-     }
-     else
-     {
+        if (ud.multimode > 9)
+        {
+            mpfn[6] = (multiwho / 10) + '0';
+            mpfn[7] = (multiwho % 10) + '0';
+        }
+        else mpfn[7] = multiwho + '0';
+    }
+    else
+    {
         fnptr = fn;
         fn[4] = spot + '0';
-     }
+    }
 
-     if ((fil = TCkopen4load(fnptr,0)) == -1) return(-1);
+    if ((fil = TCkopen4load(fnptr, 0)) == -1)
+        return(-1);
 
-	 if(ud.recstat != 2)
-		ready2send = 0;
+    if (ud.recstat != 2)
+        ready2send = 0;
 
-     kdfread(&bv,4,1,fil);
-     if(bv != BYTEVERSION)
-     {
-        FTA(114,&ps[myconnectindex],1);
+    kdfread(&bv, 4, 1, fil);
+    if (bv != BYTEVERSION)
+    {
+        FTA(114, &ps[myconnectindex], 1);
         kclose(fil);
-		if(ud.recstat != 2)
-		{	
-			// FIX_00084: Various bugs in the load game (single player) option if ESC is hit or if wrong version 
-			ototalclock = totalclock;
-			ready2send = 1;
-		}
+        if (ud.recstat != 2)
+        {
+            // FIX_00084: Various bugs in the load game (single player) option if ESC is hit or if wrong version 
+            ototalclock = totalclock;
+            ready2send = 1;
+        }
         return 1;
-     }
+    }
 
-     kdfread(&nump,sizeof(nump),1,fil);
-     if(nump != numplayers)
-     {
+    kdfread(&nump, sizeof(nump), 1, fil);
+    if (nump != numplayers)
+    {
         kclose(fil);
-		if(ud.recstat != 2)
-		{
-			// FIX_00084: Various bugs in the load game (single player) option if ESC is hit or if wrong version 
-	        ototalclock = totalclock;
-	        ready2send = 1;
-		}
-        FTA(124,&ps[myconnectindex],1);
+        if (ud.recstat != 2)
+        {
+            // FIX_00084: Various bugs in the load game (single player) option if ESC is hit or if wrong version 
+            ototalclock = totalclock;
+            ready2send = 1;
+        }
+        FTA(124, &ps[myconnectindex], 1);
         return 1;
-     }
+    }
 
-     if(numplayers > 1)
-     {
-         pub = NUMPAGES;
-         pus = NUMPAGES;
-         vscrn();
-         drawbackground();
-         menutext(160,100,0,0,"LOADING...");
-         nextpage();
+    if (numplayers > 1)
+    {
+        pub = NUMPAGES;
+        pus = NUMPAGES;
+        vscrn();
+        drawbackground();
+        menutext(160, 100, 0, 0, "LOADING...");
+        nextpage();
     }
 
-     waitforeverybody();
+    waitforeverybody();
 
-         FX_StopAllSounds();
-     clearsoundlocks();
-         MUSIC_StopSong();
+    FX_StopAllSounds();
+    clearsoundlocks();
+    MUSIC_StopSong();
 
-     if(numplayers > 1)
-         kdfread(&buf,19,1,fil);
-     else
-         kdfread(&ud.savegame[spot][0],19,1,fil);
+    if (numplayers > 1)
+        kdfread(&buf, 19, 1, fil);
+    else
+        kdfread(&ud.savegame[spot][0], 19, 1, fil);
 
-     music_changed = (music_select != (ud.volume_number*11) + ud.level_number);
+    music_changed = (music_select != (ud.volume_number * 11) + ud.level_number);
 
-         kdfread(&ud.volume_number,sizeof(ud.volume_number),1,fil);
-         kdfread(&ud.level_number,sizeof(ud.level_number),1,fil);
-         kdfread(&ud.player_skill,sizeof(ud.player_skill),1,fil);
+    kdfread(&ud.volume_number, sizeof(ud.volume_number), 1, fil);
+    kdfread(&ud.level_number, sizeof(ud.level_number), 1, fil);
+    kdfread(&ud.player_skill, sizeof(ud.player_skill), 1, fil);
 
-         ud.m_level_number = ud.level_number;
-         ud.m_volume_number = ud.volume_number;
-         ud.m_player_skill = ud.player_skill;
+    ud.m_level_number = ud.level_number;
+    ud.m_volume_number = ud.volume_number;
+    ud.m_player_skill = ud.player_skill;
 
-                 //Fake read because lseek won't work with compression
-     tiles[MAXTILES-3].lock = 1;
-    
-     if (tiles[MAXTILES-3].data == NULL)
-         allocache(&tiles[MAXTILES-3].data,160*100,&tiles[MAXTILES-3].lock);
-    
-     tiles[MAXTILES-3].dim.width = 100;
-    tiles[MAXTILES-3].dim.height = 160;
-    
-     kdfread(tiles[MAXTILES-3].data,160,100,fil);
+    //Fake read because lseek won't work with compression
+    tiles[MAXTILES - 3].lock = 1;
 
-         kdfread(&numwalls,2,1,fil);
-     kdfread(&wall[0],sizeof(walltype),MAXWALLS,fil);
-         kdfread(&numsectors,2,1,fil);
-     kdfread(&sector[0],sizeof(sectortype),MAXSECTORS,fil);
-         kdfread(&sprite[0],sizeof(spritetype),MAXSPRITES,fil);
-         kdfread(&headspritesect[0],2,MAXSECTORS+1,fil);
-         kdfread(&prevspritesect[0],2,MAXSPRITES,fil);
-         kdfread(&nextspritesect[0],2,MAXSPRITES,fil);
-         kdfread(&headspritestat[0],2,MAXSTATUS+1,fil);
-         kdfread(&prevspritestat[0],2,MAXSPRITES,fil);
-         kdfread(&nextspritestat[0],2,MAXSPRITES,fil);
-         kdfread(&numcyclers,sizeof(numcyclers),1,fil);
-         kdfread(&cyclers[0][0],12,MAXCYCLERS,fil);
-     kdfread(ps,sizeof(ps),1,fil);
-     kdfread(po,sizeof(po),1,fil);
-         kdfread(&numanimwalls,sizeof(numanimwalls),1,fil);
-         kdfread(&animwall,sizeof(animwall),1,fil);
-         kdfread(&msx[0],sizeof(int32_t),sizeof(msx)/sizeof(int32_t),fil);
-         kdfread(&msy[0],sizeof(int32_t),sizeof(msy)/sizeof(int32_t),fil);
-     kdfread((short *)&spriteqloc,sizeof(short),1,fil);
-     kdfread((short *)&spriteqamount,sizeof(short),1,fil);
-     kdfread((short *)&spriteq[0],sizeof(short),spriteqamount,fil);
-         kdfread(&mirrorcnt,sizeof(short),1,fil);
-         kdfread(&mirrorwall[0],sizeof(short),64,fil);
-     kdfread(&mirrorsector[0],sizeof(short),64,fil);
-     kdfread(&show2dsector[0],sizeof(uint8_t ),MAXSECTORS>>3,fil);
-     kdfread(&actortype[0],sizeof(uint8_t ),MAXTILES,fil);
-     kdfread(&boardfilename[0],sizeof(boardfilename),1,fil);
+    if (tiles[MAXTILES - 3].data == NULL)
+        allocache(&tiles[MAXTILES - 3].data, 160 * 100, &tiles[MAXTILES - 3].lock);
 
-     kdfread(&numclouds,sizeof(numclouds),1,fil);
-     kdfread(&clouds[0],sizeof(short)<<7,1,fil);
-     kdfread(&cloudx[0],sizeof(short)<<7,1,fil);
-     kdfread(&cloudy[0],sizeof(short)<<7,1,fil);
+    tiles[MAXTILES - 3].dim.width = 100;
+    tiles[MAXTILES - 3].dim.height = 160;
 
-     kdfread(&scriptptrs[0],1,MAXSCRIPTSIZE,fil);
-     kdfread(&script[0],4,MAXSCRIPTSIZE,fil);
-     for(i=0;i<MAXSCRIPTSIZE;i++)
-        if( scriptptrs[i] )
-     {
-         j = (int32_t)script[i]+(int32_t)&script[0];
-         script[i] = j;
-     }
+    kdfread(tiles[MAXTILES - 3].data, 160, 100, fil);
 
-     kdfread(&actorscrptr[0],4,MAXTILES,fil);
-     for(i=0;i<MAXTILES;i++)
-         if(actorscrptr[i])
-     {
-        j = (int32_t)actorscrptr[i]+(int32_t)&script[0];
-        actorscrptr[i] = (int32_t *)j;
-     }
+    kdfread(&numwalls, 2, 1, fil);
+    kdfread(&wall[0], sizeof(walltype), MAXWALLS, fil);
+    kdfread(&numsectors, 2, 1, fil);
+    kdfread(&sector[0], sizeof(sectortype), MAXSECTORS, fil);
+    kdfread(&sprite[0], sizeof(spritetype), MAXSPRITES, fil);
+    kdfread(&headspritesect[0], 2, MAXSECTORS + 1, fil);
+    kdfread(&prevspritesect[0], 2, MAXSPRITES, fil);
+    kdfread(&nextspritesect[0], 2, MAXSPRITES, fil);
+    kdfread(&headspritestat[0], 2, MAXSTATUS + 1, fil);
+    kdfread(&prevspritestat[0], 2, MAXSPRITES, fil);
+    kdfread(&nextspritestat[0], 2, MAXSPRITES, fil);
+    kdfread(&numcyclers, sizeof(numcyclers), 1, fil);
+    kdfread(&cyclers[0][0], 12, MAXCYCLERS, fil);
+    kdfread(ps, sizeof(ps), 1, fil);
+    kdfread(po, sizeof(po), 1, fil);
+    kdfread(&numanimwalls, sizeof(numanimwalls), 1, fil);
+    kdfread(&animwall, sizeof(animwall), 1, fil);
+    kdfread(&msx[0], sizeof(int32_t), sizeof(msx) / sizeof(int32_t), fil);
+    kdfread(&msy[0], sizeof(int32_t), sizeof(msy) / sizeof(int32_t), fil);
+    kdfread((short*)&spriteqloc, sizeof(short), 1, fil);
+    kdfread((short*)&spriteqamount, sizeof(short), 1, fil);
+    kdfread((short*)&spriteq[0], sizeof(short), spriteqamount, fil);
+    kdfread(&mirrorcnt, sizeof(short), 1, fil);
+    kdfread(&mirrorwall[0], sizeof(short), 64, fil);
+    kdfread(&mirrorsector[0], sizeof(short), 64, fil);
+    kdfread(&show2dsector[0], sizeof(uint8_t), MAXSECTORS >> 3, fil);
+    kdfread(&actortype[0], sizeof(uint8_t), MAXTILES, fil);
+    kdfread(&boardfilename[0], sizeof(boardfilename), 1, fil);
 
-     kdfread(&scriptptrs[0],1,MAXSPRITES,fil);
-     kdfread(&hittype[0],sizeof(struct weaponhit),MAXSPRITES,fil);
+    kdfread(&numclouds, sizeof(numclouds), 1, fil);
+    kdfread(&clouds[0], sizeof(short) << 7, 1, fil);
+    kdfread(&cloudx[0], sizeof(short) << 7, 1, fil);
+    kdfread(&cloudy[0], sizeof(short) << 7, 1, fil);
 
-     for(i=0;i<MAXSPRITES;i++)
-     {
-        j = (int32_t)(&script[0]);
-        if( scriptptrs[i]&1 ) T2 += j;
-        if( scriptptrs[i]&2 ) T5 += j;
-        if( scriptptrs[i]&4 ) T6 += j;
-     }
+    kdfread(&scriptptrs[0], 1, MAXSCRIPTSIZE, fil);
+    kdfread(&script[0], 4, MAXSCRIPTSIZE, fil);
+    for (i = 0; i < MAXSCRIPTSIZE; i++)
+        if (scriptptrs[i])
+        {
+            j = (intptr_t)script[i] + (intptr_t)&script[0];
+            script[i] = j;
+        }
 
-         kdfread(&lockclock,sizeof(lockclock),1,fil);
-     kdfread(&pskybits,sizeof(pskybits),1,fil);
-     kdfread(&pskyoff[0],sizeof(pskyoff[0]),MAXPSKYTILES,fil);
+    kdfread(&actorscrptr[0], 4, MAXTILES, fil);
+    for (i = 0; i < MAXTILES; i++)
+        if (actorscrptr[i])
+        {
+            j = (intptr_t)actorscrptr[i] + (intptr_t)&script[0];
+            actorscrptr[i] = (intptr_t*)j;
+        }
 
-         kdfread(&animatecnt,sizeof(animatecnt),1,fil);
-         kdfread(&animatesect[0],2,MAXANIMATES,fil);
-         kdfread(&animateptr[0],4,MAXANIMATES,fil);
-     for(i = animatecnt-1;i>=0;i--) animateptr[i] = (int32_t *)((int32_t)animateptr[i]+(int32_t)(&sector[0]));
-         kdfread(&animategoal[0],4,MAXANIMATES,fil);
-         kdfread(&animatevel[0],4,MAXANIMATES,fil);
+    kdfread(&scriptptrs[0], 1, MAXSPRITES, fil);
+    kdfread(&hittype[0], sizeof(struct weaponhit), MAXSPRITES, fil);
 
-         kdfread(&earthquaketime,sizeof(earthquaketime),1,fil);
-     kdfread(&ud.from_bonus,sizeof(ud.from_bonus),1,fil);
-     kdfread(&ud.secretlevel,sizeof(ud.secretlevel),1,fil);
-     kdfread(&ud.respawn_monsters,sizeof(ud.respawn_monsters),1,fil);
-     ud.m_respawn_monsters = ud.respawn_monsters;
-     kdfread(&ud.respawn_items,sizeof(ud.respawn_items),1,fil);
-     ud.m_respawn_items = ud.respawn_items;
-     kdfread(&ud.respawn_inventory,sizeof(ud.respawn_inventory),1,fil);
-     ud.m_respawn_inventory = ud.respawn_inventory;
+    for (i = 0; i < MAXSPRITES; i++)
+    {
+        j = (intptr_t)(&script[0]);
+        if (scriptptrs[i] & 1) T2 += j;
+        if (scriptptrs[i] & 2) T5 += j;
+        if (scriptptrs[i] & 4) T6 += j;
+    }
 
-     kdfread(&ud.god,sizeof(ud.god),1,fil);
-     kdfread(&ud.auto_run,sizeof(ud.auto_run),1,fil);
-     kdfread(&ud.crosshair,sizeof(ud.crosshair),1,fil);
-     kdfread(&ud.monsters_off,sizeof(ud.monsters_off),1,fil);
-     ud.m_monsters_off = ud.monsters_off;
-     kdfread(&ud.last_level,sizeof(ud.last_level),1,fil);
-     kdfread(&ud.eog,sizeof(ud.eog),1,fil);
+    kdfread(&lockclock, sizeof(lockclock), 1, fil);
+    kdfread(&pskybits, sizeof(pskybits), 1, fil);
+    kdfread(&pskyoff[0], sizeof(pskyoff[0]), MAXPSKYTILES, fil);
 
-     kdfread(&ud.coop,sizeof(ud.coop),1,fil);
-     ud.m_coop = ud.coop;
-     kdfread(&ud.marker,sizeof(ud.marker),1,fil);
-     ud.m_marker = ud.marker;
-     kdfread(&ud.ffire,sizeof(ud.ffire),1,fil);
-     ud.m_ffire = ud.ffire;
+    kdfread(&animatecnt, sizeof(animatecnt), 1, fil);
+    kdfread(&animatesect[0], 2, MAXANIMATES, fil);
+    kdfread(&animateptr[0], 4, MAXANIMATES, fil);
+    for (i = animatecnt - 1; i >= 0; i--) animateptr[i] = (int32_t*)((intptr_t)animateptr[i] + (intptr_t)(&sector[0]));
+    kdfread(&animategoal[0], 4, MAXANIMATES, fil);
+    kdfread(&animatevel[0], 4, MAXANIMATES, fil);
 
-     kdfread(&camsprite,sizeof(camsprite),1,fil);
-     kdfread(&connecthead,sizeof(connecthead),1,fil);
-     kdfread(connectpoint2,sizeof(connectpoint2),1,fil);
-     kdfread(&numplayersprites,sizeof(numplayersprites),1,fil);
-     kdfread((short *)&frags[0][0],sizeof(frags),1,fil);
+    kdfread(&earthquaketime, sizeof(earthquaketime), 1, fil);
+    kdfread(&ud.from_bonus, sizeof(ud.from_bonus), 1, fil);
+    kdfread(&ud.secretlevel, sizeof(ud.secretlevel), 1, fil);
+    kdfread(&ud.respawn_monsters, sizeof(ud.respawn_monsters), 1, fil);
+    ud.m_respawn_monsters = ud.respawn_monsters;
+    kdfread(&ud.respawn_items, sizeof(ud.respawn_items), 1, fil);
+    ud.m_respawn_items = ud.respawn_items;
+    kdfread(&ud.respawn_inventory, sizeof(ud.respawn_inventory), 1, fil);
+    ud.m_respawn_inventory = ud.respawn_inventory;
 
-     kdfread(&randomseed,sizeof(randomseed),1,fil);
-     kdfread(&global_random,sizeof(global_random),1,fil);
-     kdfread(&parallaxyscale,sizeof(parallaxyscale),1,fil);
+    kdfread(&ud.god, sizeof(ud.god), 1, fil);
+    kdfread(&ud.auto_run, sizeof(ud.auto_run), 1, fil);
+    kdfread(&ud.crosshair, sizeof(ud.crosshair), 1, fil);
+    kdfread(&ud.monsters_off, sizeof(ud.monsters_off), 1, fil);
+    ud.m_monsters_off = ud.monsters_off;
+    kdfread(&ud.last_level, sizeof(ud.last_level), 1, fil);
+    kdfread(&ud.eog, sizeof(ud.eog), 1, fil);
 
-     kclose(fil);
+    kdfread(&ud.coop, sizeof(ud.coop), 1, fil);
+    ud.m_coop = ud.coop;
+    kdfread(&ud.marker, sizeof(ud.marker), 1, fil);
+    ud.m_marker = ud.marker;
+    kdfread(&ud.ffire, sizeof(ud.ffire), 1, fil);
+    ud.m_ffire = ud.ffire;
 
-     if(ps[myconnectindex].over_shoulder_on != 0)
-     {
-         cameradist = 0;
-         cameraclock = 0;
-         ps[myconnectindex].over_shoulder_on = 1;
-     }
+    kdfread(&camsprite, sizeof(camsprite), 1, fil);
+    kdfread(&connecthead, sizeof(connecthead), 1, fil);
+    kdfread(connectpoint2, sizeof(connectpoint2), 1, fil);
+    kdfread(&numplayersprites, sizeof(numplayersprites), 1, fil);
+    kdfread((short*)&frags[0][0], sizeof(frags), 1, fil);
 
-     screenpeek = myconnectindex;
+    kdfread(&randomseed, sizeof(randomseed), 1, fil);
+    kdfread(&global_random, sizeof(global_random), 1, fil);
+    kdfread(&parallaxyscale, sizeof(parallaxyscale), 1, fil);
 
-     clearbufbyte(gotpic,sizeof(gotpic),0L);
-     clearsoundlocks();
-         cacheit();
-     docacheit();
+    kclose(fil);
 
-     if(music_changed == 0)
-        music_select = (ud.volume_number*11) + ud.level_number;
-     playmusic(&music_fn[0][music_select][0]);
+    if (ps[myconnectindex].over_shoulder_on != 0)
+    {
+        cameradist = 0;
+        cameraclock = 0;
+        ps[myconnectindex].over_shoulder_on = 1;
+    }
 
-     ps[myconnectindex].gm = MODE_GAME;
-         ud.recstat = 0;
+    screenpeek = myconnectindex;
 
-     if(ps[myconnectindex].jetpack_on)
-         spritesound(DUKE_JETPACK_IDLE,ps[myconnectindex].i);
+    clearbufbyte(gotpic, sizeof(gotpic), 0L);
+    clearsoundlocks();
+    cacheit();
+    docacheit();
 
-     restorepalette = 1;
-     setpal(&ps[myconnectindex]);
-     vscrn();
+    if (music_changed == 0)
+        music_select = (ud.volume_number * 11) + ud.level_number;
+    playmusic(&music_fn[0][music_select][0]);
 
-     FX_SetReverb(0);
+    ps[myconnectindex].gm = MODE_GAME;
+    ud.recstat = 0;
 
-     if(ud.lockout == 0)
-     {
-         for(x=0;x<numanimwalls;x++)
-             if( wall[animwall[x].wallnum].extra >= 0 )
-                 wall[animwall[x].wallnum].picnum = wall[animwall[x].wallnum].extra;
-     }
-     else
-     {
-         for(x=0;x<numanimwalls;x++)
-             switch(wall[animwall[x].wallnum].picnum)
-         {
-             case FEMPIC1:
-                 wall[animwall[x].wallnum].picnum = BLANKSCREEN;
-                 break;
-             case FEMPIC2:
-             case FEMPIC3:
-                 wall[animwall[x].wallnum].picnum = SCREENBREAK6;
-                 break;
-         }
-     }
+    if (ps[myconnectindex].jetpack_on)
+        spritesound(DUKE_JETPACK_IDLE, ps[myconnectindex].i);
 
-     numinterpolations = 0;
-     startofdynamicinterpolations = 0;
+    restorepalette = 1;
+    setpal(&ps[myconnectindex]);
+    vscrn();
 
-     k = headspritestat[3];
-     while(k >= 0)
-     {
-        switch(sprite[k].lotag)
-        {
-            case 31:
-                setinterpolation(&sector[sprite[k].sectnum].floorz);
+    FX_SetReverb(0);
+
+    if (ud.lockout == 0)
+    {
+        for (x = 0; x < numanimwalls; x++)
+            if (wall[animwall[x].wallnum].extra >= 0)
+                wall[animwall[x].wallnum].picnum = wall[animwall[x].wallnum].extra;
+    }
+    else
+    {
+        for (x = 0; x < numanimwalls; x++)
+            switch (wall[animwall[x].wallnum].picnum)
+            {
+            case FEMPIC1:
+                wall[animwall[x].wallnum].picnum = BLANKSCREEN;
                 break;
-            case 32:
-                setinterpolation(&sector[sprite[k].sectnum].ceilingz);
+            case FEMPIC2:
+            case FEMPIC3:
+                wall[animwall[x].wallnum].picnum = SCREENBREAK6;
                 break;
-            case 25:
-                setinterpolation(&sector[sprite[k].sectnum].floorz);
-                setinterpolation(&sector[sprite[k].sectnum].ceilingz);
-                break;
-            case 17:
-                setinterpolation(&sector[sprite[k].sectnum].floorz);
-                setinterpolation(&sector[sprite[k].sectnum].ceilingz);
-                break;
-            case 0:
-            case 5:
-            case 6:
-            case 11:
-            case 14:
-            case 15:
-            case 16:
-            case 26:
-            case 30:
-                setsectinterpolate(k);
-                break;
+            }
+    }
+
+    numinterpolations = 0;
+    startofdynamicinterpolations = 0;
+
+    k = headspritestat[3];
+    while (k >= 0)
+    {
+        switch (sprite[k].lotag)
+        {
+        case 31:
+            setinterpolation(&sector[sprite[k].sectnum].floorz);
+            break;
+        case 32:
+            setinterpolation(&sector[sprite[k].sectnum].ceilingz);
+            break;
+        case 25:
+            setinterpolation(&sector[sprite[k].sectnum].floorz);
+            setinterpolation(&sector[sprite[k].sectnum].ceilingz);
+            break;
+        case 17:
+            setinterpolation(&sector[sprite[k].sectnum].floorz);
+            setinterpolation(&sector[sprite[k].sectnum].ceilingz);
+            break;
+        case 0:
+        case 5:
+        case 6:
+        case 11:
+        case 14:
+        case 15:
+        case 16:
+        case 26:
+        case 30:
+            setsectinterpolate(k);
+            break;
         }
 
         k = nextspritestat[k];
-     }
+    }
 
-     for(i=numinterpolations-1;i>=0;i--) bakipos[i] = *curipos[i];
-     for(i = animatecnt-1;i>=0;i--)
-         setinterpolation(animateptr[i]);
+    for (i = numinterpolations - 1; i >= 0; i--) bakipos[i] = *curipos[i];
+    for (i = animatecnt - 1; i >= 0; i--)
+        setinterpolation(animateptr[i]);
 
-     show_shareware = 0;
-     everyothertime = 0;
+    show_shareware = 0;
+    everyothertime = 0;
 
-     clearbufbyte(playerquitflag,MAXPLAYERS,0x01010101);
+    clearbufbyte(playerquitflag, MAXPLAYERS, 0x01010101);
 
-     resetmys();
+    resetmys();
 
-     ready2send = 1;
+    ready2send = 1;
 
-     flushpackets();
-     clearfifo();
-     waitforeverybody();
+    flushpackets();
+    clearfifo();
+    waitforeverybody();
 
-     resettimevars();
+    resettimevars();
 
-     return(0);
+    return(0);
 }
 
 int saveplayer(int8_t spot)
 {
-     int32_t i, j;
-     char  fn[] = "game0.sav";
-     char  mpfn[] = "gameA_00.sav";
-     char  *fnptr,scriptptrs[MAXSCRIPTSIZE];
-         FILE *fil;
-     int32_t bv = BYTEVERSION;
-	 char  fullpathsavefilename[16];
+    int32_t i;
+    intptr_t j;
+    char  fn[] = "game0.sav";
+    char  mpfn[] = "gameA_00.sav";
+    char* fnptr, scriptptrs[MAXSCRIPTSIZE];
+    FILE* fil;
+    int32_t bv = BYTEVERSION;
+    char  fullpathsavefilename[16];
 
-     if(spot < 0)
-     {
+    if (spot < 0)
+    {
         multiflag = 1;
         multiwhat = 1;
-        multipos = -spot-1;
+        multipos = -spot - 1;
         return -1;
-     }
+    }
 
-     waitforeverybody();
+    waitforeverybody();
 
-     if( multiflag == 2 && multiwho != myconnectindex )
-     {
-         fnptr = mpfn;
-         mpfn[4] = spot + 'A';
+    if (multiflag == 2 && multiwho != myconnectindex)
+    {
+        fnptr = mpfn;
+        mpfn[4] = spot + 'A';
 
-         if(ud.multimode > 9)
-         {
-             mpfn[6] = (multiwho/10) + '0';
-             mpfn[7] = multiwho + '0';
-         }
-         else mpfn[7] = multiwho + '0';
-     }
-     else
-     {
+        if (ud.multimode > 9)
+        {
+            mpfn[6] = (multiwho / 10) + '0';
+            mpfn[7] = multiwho + '0';
+        }
+        else mpfn[7] = multiwho + '0';
+    }
+    else
+    {
         fnptr = fn;
         fn[4] = spot + '0';
-     }
+    }
 
 
-	// Are we loading a TC?
-	if(getGameDir()[0] != '\0')
-	{
-		// Yes
-		sprintf(fullpathsavefilename, "%s\\%s", getGameDir(), fnptr);
-	}
-	else
-	{
-		// No 
-		sprintf(fullpathsavefilename, "%s", fnptr);
-	}
+    // Are we loading a TC?
+    if (getGameDir()[0] != '\0')
+    {
+        // Yes
+        sprintf(fullpathsavefilename, "%s\\%s", getGameDir(), fnptr);
+    }
+    else
+    {
+        // No 
+        sprintf(fullpathsavefilename, "%s", fnptr);
+    }
 
-     if ((fil = fopen(fullpathsavefilename,"wb")) == 0) return(-1);
+    if ((fil = fopen(fullpathsavefilename, "wb")) == 0) return(-1);
 
-     ready2send = 0;
+    ready2send = 0;
 
-     dfwrite(&bv,4,1,fil);
-     dfwrite(&ud.multimode,sizeof(ud.multimode),1,fil);
+    dfwrite(&bv, 4, 1, fil);
+    dfwrite(&ud.multimode, sizeof(ud.multimode), 1, fil);
 
-         dfwrite(&ud.savegame[spot][0],19,1,fil);
-         dfwrite(&ud.volume_number,sizeof(ud.volume_number),1,fil);
-     dfwrite(&ud.level_number,sizeof(ud.level_number),1,fil);
-         dfwrite(&ud.player_skill,sizeof(ud.player_skill),1,fil);
-     dfwrite(tiles[MAXTILES-1].data,160,100,fil);
+    dfwrite(&ud.savegame[spot][0], 19, 1, fil);
+    dfwrite(&ud.volume_number, sizeof(ud.volume_number), 1, fil);
+    dfwrite(&ud.level_number, sizeof(ud.level_number), 1, fil);
+    dfwrite(&ud.player_skill, sizeof(ud.player_skill), 1, fil);
+    dfwrite(tiles[MAXTILES - 1].data, 160, 100, fil);
 
-         dfwrite(&numwalls,2,1,fil);
-     dfwrite(&wall[0],sizeof(walltype),MAXWALLS,fil);
-         dfwrite(&numsectors,2,1,fil);
-     dfwrite(&sector[0],sizeof(sectortype),MAXSECTORS,fil);
-         dfwrite(&sprite[0],sizeof(spritetype),MAXSPRITES,fil);
-         dfwrite(&headspritesect[0],2,MAXSECTORS+1,fil);
-         dfwrite(&prevspritesect[0],2,MAXSPRITES,fil);
-         dfwrite(&nextspritesect[0],2,MAXSPRITES,fil);
-         dfwrite(&headspritestat[0],2,MAXSTATUS+1,fil);
-         dfwrite(&prevspritestat[0],2,MAXSPRITES,fil);
-         dfwrite(&nextspritestat[0],2,MAXSPRITES,fil);
-         dfwrite(&numcyclers,sizeof(numcyclers),1,fil);
-         dfwrite(&cyclers[0][0],12,MAXCYCLERS,fil);
-     dfwrite(ps,sizeof(ps),1,fil);
-     dfwrite(po,sizeof(po),1,fil);
-         dfwrite(&numanimwalls,sizeof(numanimwalls),1,fil);
-         dfwrite(&animwall,sizeof(animwall),1,fil);
-         dfwrite(&msx[0],sizeof(int32_t),sizeof(msx)/sizeof(int32_t),fil);
-         dfwrite(&msy[0],sizeof(int32_t),sizeof(msy)/sizeof(int32_t),fil);
-     dfwrite(&spriteqloc,sizeof(short),1,fil);
-     dfwrite(&spriteqamount,sizeof(short),1,fil);
-     dfwrite(&spriteq[0],sizeof(short),spriteqamount,fil);
-         dfwrite(&mirrorcnt,sizeof(short),1,fil);
-         dfwrite(&mirrorwall[0],sizeof(short),64,fil);
-         dfwrite(&mirrorsector[0],sizeof(short),64,fil);
-     dfwrite(&show2dsector[0],sizeof(uint8_t ),MAXSECTORS>>3,fil);
-     dfwrite(&actortype[0],sizeof(uint8_t ),MAXTILES,fil);
-     dfwrite(&boardfilename[0],sizeof(boardfilename),1,fil);
+    dfwrite(&numwalls, 2, 1, fil);
+    dfwrite(&wall[0], sizeof(walltype), MAXWALLS, fil);
+    dfwrite(&numsectors, 2, 1, fil);
+    dfwrite(&sector[0], sizeof(sectortype), MAXSECTORS, fil);
+    dfwrite(&sprite[0], sizeof(spritetype), MAXSPRITES, fil);
+    dfwrite(&headspritesect[0], 2, MAXSECTORS + 1, fil);
+    dfwrite(&prevspritesect[0], 2, MAXSPRITES, fil);
+    dfwrite(&nextspritesect[0], 2, MAXSPRITES, fil);
+    dfwrite(&headspritestat[0], 2, MAXSTATUS + 1, fil);
+    dfwrite(&prevspritestat[0], 2, MAXSPRITES, fil);
+    dfwrite(&nextspritestat[0], 2, MAXSPRITES, fil);
+    dfwrite(&numcyclers, sizeof(numcyclers), 1, fil);
+    dfwrite(&cyclers[0][0], 12, MAXCYCLERS, fil);
+    dfwrite(ps, sizeof(ps), 1, fil);
+    dfwrite(po, sizeof(po), 1, fil);
+    dfwrite(&numanimwalls, sizeof(numanimwalls), 1, fil);
+    dfwrite(&animwall, sizeof(animwall), 1, fil);
+    dfwrite(&msx[0], sizeof(int32_t), sizeof(msx) / sizeof(int32_t), fil);
+    dfwrite(&msy[0], sizeof(int32_t), sizeof(msy) / sizeof(int32_t), fil);
+    dfwrite(&spriteqloc, sizeof(short), 1, fil);
+    dfwrite(&spriteqamount, sizeof(short), 1, fil);
+    dfwrite(&spriteq[0], sizeof(short), spriteqamount, fil);
+    dfwrite(&mirrorcnt, sizeof(short), 1, fil);
+    dfwrite(&mirrorwall[0], sizeof(short), 64, fil);
+    dfwrite(&mirrorsector[0], sizeof(short), 64, fil);
+    dfwrite(&show2dsector[0], sizeof(uint8_t), MAXSECTORS >> 3, fil);
+    dfwrite(&actortype[0], sizeof(uint8_t), MAXTILES, fil);
+    dfwrite(&boardfilename[0], sizeof(boardfilename), 1, fil);
 
-     dfwrite(&numclouds,sizeof(numclouds),1,fil);
-     dfwrite(&clouds[0],sizeof(short)<<7,1,fil);
-     dfwrite(&cloudx[0],sizeof(short)<<7,1,fil);
-     dfwrite(&cloudy[0],sizeof(short)<<7,1,fil);
+    dfwrite(&numclouds, sizeof(numclouds), 1, fil);
+    dfwrite(&clouds[0], sizeof(short) << 7, 1, fil);
+    dfwrite(&cloudx[0], sizeof(short) << 7, 1, fil);
+    dfwrite(&cloudy[0], sizeof(short) << 7, 1, fil);
 
-     for(i=0;i<MAXSCRIPTSIZE;i++)
-     {
-          if( (int32_t)script[i] >= (int32_t)(&script[0]) && (int32_t)script[i] < (int32_t)(&script[MAXSCRIPTSIZE]) )
-          {
-                scriptptrs[i] = 1;
-                j = (int32_t)script[i] - (int32_t)&script[0];
-                script[i] = j;
-          }
-          else scriptptrs[i] = 0;
-     }
+    for (i = 0; i < MAXSCRIPTSIZE; i++)
+    {
+        if (script[i] >= (intptr_t)(&script[0]) && script[i] < (intptr_t)(&script[MAXSCRIPTSIZE]))
+        {
+            scriptptrs[i] = 1;
+            j = script[i] - (intptr_t)&script[0];
+            script[i] = j;
+        }
+        else scriptptrs[i] = 0;
+    }
 
-     dfwrite(&scriptptrs[0],1,MAXSCRIPTSIZE,fil);
-     dfwrite(&script[0],4,MAXSCRIPTSIZE,fil);
+    dfwrite(&scriptptrs[0], 1, MAXSCRIPTSIZE, fil);
+    dfwrite(&script[0], 4, MAXSCRIPTSIZE, fil);
 
-     for(i=0;i<MAXSCRIPTSIZE;i++)
-        if( scriptptrs[i] )
-     {
-        j = script[i]+(int32_t)&script[0];
-        script[i] = j;
-     }
+    for (i = 0; i < MAXSCRIPTSIZE; i++)
+        if (scriptptrs[i])
+        {
+            j = script[i] + (intptr_t)&script[0];
+            script[i] = j;
+        }
 
-     for(i=0;i<MAXTILES;i++)
-         if(actorscrptr[i])
-     {
-        j = (int32_t)actorscrptr[i]-(int32_t)&script[0];
-        actorscrptr[i] = (int32_t *)j;
-     }
-     dfwrite(&actorscrptr[0],4,MAXTILES,fil);
-     for(i=0;i<MAXTILES;i++)
-         if(actorscrptr[i])
-     {
-         j = (int32_t)actorscrptr[i]+(int32_t)&script[0];
-         actorscrptr[i] = (int32_t *)j;
-     }
+    for (i = 0; i < MAXTILES; i++)
+        if (actorscrptr[i])
+        {
+            j = (intptr_t)actorscrptr[i] - (intptr_t)&script[0];
+            actorscrptr[i] = (intptr_t*)j;
+        }
+    dfwrite(&actorscrptr[0], 4, MAXTILES, fil);
+    for (i = 0; i < MAXTILES; i++)
+        if (actorscrptr[i])
+        {
+            j = (intptr_t)actorscrptr[i] + (intptr_t)&script[0];
+            actorscrptr[i] = (intptr_t*)j;
+        }
 
-     for(i=0;i<MAXSPRITES;i++)
-     {
+    for (i = 0; i < MAXSPRITES; i++)
+    {
         scriptptrs[i] = 0;
 
-        if(actorscrptr[PN] == 0) continue;
+        if (actorscrptr[PN] == 0) continue;
 
-        j = (int32_t)&script[0];
+        j = (intptr_t)&script[0];
 
-        if(T2 >= j && T2 < (int32_t)(&script[MAXSCRIPTSIZE]) )
+        if (T2 >= j && T2 < (intptr_t)(&script[MAXSCRIPTSIZE]))
         {
             scriptptrs[i] |= 1;
             T2 -= j;
         }
-        if(T5 >= j && T5 < (int32_t)(&script[MAXSCRIPTSIZE]) )
+        if (T5 >= j && T5 < (intptr_t)(&script[MAXSCRIPTSIZE]))
         {
             scriptptrs[i] |= 2;
             T5 -= j;
         }
-        if(T6 >= j && T6 < (int32_t)(&script[MAXSCRIPTSIZE]) )
+        if (T6 >= j && T6 < (intptr_t)(&script[MAXSCRIPTSIZE]))
         {
             scriptptrs[i] |= 4;
             T6 -= j;
@@ -706,73 +709,73 @@
         }
     }
 
-    dfwrite(&scriptptrs[0],1,MAXSPRITES,fil);
-    dfwrite(&hittype[0],sizeof(struct weaponhit),MAXSPRITES,fil);
+    dfwrite(&scriptptrs[0], 1, MAXSPRITES, fil);
+    dfwrite(&hittype[0], sizeof(struct weaponhit), MAXSPRITES, fil);
 
-    for(i=0;i<MAXSPRITES;i++)
+    for (i = 0; i < MAXSPRITES; i++)
     {
-        if(actorscrptr[PN] == 0) continue;
-        j = (int32_t)&script[0];
+        if (actorscrptr[PN] == 0) continue;
+        j = (intptr_t)&script[0];
 
-        if(scriptptrs[i]&1)
+        if (scriptptrs[i] & 1)
             T2 += j;
-        if(scriptptrs[i]&2)
+        if (scriptptrs[i] & 2)
             T5 += j;
-        if(scriptptrs[i]&4)
+        if (scriptptrs[i] & 4)
             T6 += j;
     }
 
-         dfwrite(&lockclock,sizeof(lockclock),1,fil);
-     dfwrite(&pskybits,sizeof(pskybits),1,fil);
-     dfwrite(&pskyoff[0],sizeof(pskyoff[0]),MAXPSKYTILES,fil);
-         dfwrite(&animatecnt,sizeof(animatecnt),1,fil);
-         dfwrite(&animatesect[0],2,MAXANIMATES,fil);
-         for(i = animatecnt-1;i>=0;i--) animateptr[i] = (int32_t *)((int32_t)animateptr[i]-(int32_t)(&sector[0]));
-         dfwrite(&animateptr[0],4,MAXANIMATES,fil);
-         for(i = animatecnt-1;i>=0;i--) animateptr[i] = (int32_t *)((int32_t)animateptr[i]+(int32_t)(&sector[0]));
-         dfwrite(&animategoal[0],4,MAXANIMATES,fil);
-         dfwrite(&animatevel[0],4,MAXANIMATES,fil);
+    dfwrite(&lockclock, sizeof(lockclock), 1, fil);
+    dfwrite(&pskybits, sizeof(pskybits), 1, fil);
+    dfwrite(&pskyoff[0], sizeof(pskyoff[0]), MAXPSKYTILES, fil);
+    dfwrite(&animatecnt, sizeof(animatecnt), 1, fil);
+    dfwrite(&animatesect[0], 2, MAXANIMATES, fil);
+    for (i = animatecnt - 1; i >= 0; i--) animateptr[i] = (int32_t*)((intptr_t)animateptr[i] - (intptr_t)(&sector[0]));
+    dfwrite(&animateptr[0], 4, MAXANIMATES, fil);
+    for (i = animatecnt - 1; i >= 0; i--) animateptr[i] = (int32_t*)((intptr_t)animateptr[i] + (intptr_t)(&sector[0]));
+    dfwrite(&animategoal[0], 4, MAXANIMATES, fil);
+    dfwrite(&animatevel[0], 4, MAXANIMATES, fil);
 
-         dfwrite(&earthquaketime,sizeof(earthquaketime),1,fil);
-         dfwrite(&ud.from_bonus,sizeof(ud.from_bonus),1,fil);
-     dfwrite(&ud.secretlevel,sizeof(ud.secretlevel),1,fil);
-     dfwrite(&ud.respawn_monsters,sizeof(ud.respawn_monsters),1,fil);
-     dfwrite(&ud.respawn_items,sizeof(ud.respawn_items),1,fil);
-     dfwrite(&ud.respawn_inventory,sizeof(ud.respawn_inventory),1,fil);
-     dfwrite(&ud.god,sizeof(ud.god),1,fil);
-     dfwrite(&ud.auto_run,sizeof(ud.auto_run),1,fil);
-     dfwrite(&ud.crosshair,sizeof(ud.crosshair),1,fil);
-     dfwrite(&ud.monsters_off,sizeof(ud.monsters_off),1,fil);
-     dfwrite(&ud.last_level,sizeof(ud.last_level),1,fil);
-     dfwrite(&ud.eog,sizeof(ud.eog),1,fil);
-     dfwrite(&ud.coop,sizeof(ud.coop),1,fil);
-     dfwrite(&ud.marker,sizeof(ud.marker),1,fil);
-     dfwrite(&ud.ffire,sizeof(ud.ffire),1,fil);
-     dfwrite(&camsprite,sizeof(camsprite),1,fil);
-     dfwrite(&connecthead,sizeof(connecthead),1,fil);
-     dfwrite(connectpoint2,sizeof(connectpoint2),1,fil);
-     dfwrite(&numplayersprites,sizeof(numplayersprites),1,fil);
-     dfwrite((short *)&frags[0][0],sizeof(frags),1,fil);
+    dfwrite(&earthquaketime, sizeof(earthquaketime), 1, fil);
+    dfwrite(&ud.from_bonus, sizeof(ud.from_bonus), 1, fil);
+    dfwrite(&ud.secretlevel, sizeof(ud.secretlevel), 1, fil);
+    dfwrite(&ud.respawn_monsters, sizeof(ud.respawn_monsters), 1, fil);
+    dfwrite(&ud.respawn_items, sizeof(ud.respawn_items), 1, fil);
+    dfwrite(&ud.respawn_inventory, sizeof(ud.respawn_inventory), 1, fil);
+    dfwrite(&ud.god, sizeof(ud.god), 1, fil);
+    dfwrite(&ud.auto_run, sizeof(ud.auto_run), 1, fil);
+    dfwrite(&ud.crosshair, sizeof(ud.crosshair), 1, fil);
+    dfwrite(&ud.monsters_off, sizeof(ud.monsters_off), 1, fil);
+    dfwrite(&ud.last_level, sizeof(ud.last_level), 1, fil);
+    dfwrite(&ud.eog, sizeof(ud.eog), 1, fil);
+    dfwrite(&ud.coop, sizeof(ud.coop), 1, fil);
+    dfwrite(&ud.marker, sizeof(ud.marker), 1, fil);
+    dfwrite(&ud.ffire, sizeof(ud.ffire), 1, fil);
+    dfwrite(&camsprite, sizeof(camsprite), 1, fil);
+    dfwrite(&connecthead, sizeof(connecthead), 1, fil);
+    dfwrite(connectpoint2, sizeof(connectpoint2), 1, fil);
+    dfwrite(&numplayersprites, sizeof(numplayersprites), 1, fil);
+    dfwrite((short*)&frags[0][0], sizeof(frags), 1, fil);
 
-     dfwrite(&randomseed,sizeof(randomseed),1,fil);
-     dfwrite(&global_random,sizeof(global_random),1,fil);
-     dfwrite(&parallaxyscale,sizeof(parallaxyscale),1,fil);
+    dfwrite(&randomseed, sizeof(randomseed), 1, fil);
+    dfwrite(&global_random, sizeof(global_random), 1, fil);
+    dfwrite(&parallaxyscale, sizeof(parallaxyscale), 1, fil);
 
-         fclose(fil);
+    fclose(fil);
 
-     if(ud.multimode < 2)
-     {
-         strcpy(fta_quotes[122],"GAME SAVED");
-         FTA(122,&ps[myconnectindex],1);
-     }
+    if (ud.multimode < 2)
+    {
+        strcpy(fta_quotes[122], "GAME SAVED");
+        FTA(122, &ps[myconnectindex], 1);
+    }
 
-     ready2send = 1;
+    ready2send = 1;
 
-     waitforeverybody();
+    waitforeverybody();
 
-     ototalclock = totalclock;
+    ototalclock = totalclock;
 
-     return(0);
+    return(0);
 }
 
 #define LMB (buttonstat&1)
@@ -1307,7 +1310,7 @@
 	}
 	while (_dos_findnext(&fileinfo) == 0);
 
-#elif (defined PLATFORM_UNIX)
+#elif (defined UNIX)
 
     DIR *dir;
     struct dirent *dent;
--- a/Game/src/sector.c
+++ b/Game/src/sector.c
@@ -341,7 +341,7 @@
 
 	j = -1;
     for(i=animatecnt-1;i>=0;i--)
-        if (animptr == (int32_t *)animateptr[i])
+        if (animptr == animateptr[i])
 		{
 			j = i;
 			break;
--