The attached patch makes Warzone almost compile with "g++ -fpermissive".
It contains mainly explicit casts, some type changes, a few fixes. In
other words, just code cleanup. Comments in the next mail.
-- 
Oh, wow!  Look at the moon!
Index: src/scriptfuncs.c
===================================================================
--- src/scriptfuncs.c   (revision 358)
+++ src/scriptfuncs.c   (working copy)
@@ -6600,7 +6600,7 @@
        ASSERT( PTRVALID(psTemplate, sizeof(DROID_TEMPLATE)),
                "scrFactoryGetTemplate: Invalid template pointer" );
 
-       if (!stackPushResult(ST_TEMPLATE, (UDWORD)psTemplate))
+       if (!stackPushResult((INTERP_TYPE)ST_TEMPLATE, (UDWORD)psTemplate))
        {
                debug(LOG_ERROR, "scrFactoryGetTemplate: stackPushResult 
failed");
                return FALSE;
@@ -8174,7 +8174,7 @@
                psStruct = NULL;
        }
 
-       if (!stackPushResult(ST_STRUCTURE, (UDWORD)psStruct))
+       if (!stackPushResult((INTERP_TYPE)ST_STRUCTURE, (UDWORD)psStruct))
        {
                return FALSE;
        }
@@ -8331,14 +8331,14 @@
 
        if(bFound)
        {
-               if (!stackPushResult(ST_BASEOBJECT, (SDWORD)psObj))
+               if (!stackPushResult((INTERP_TYPE)ST_BASEOBJECT, (SDWORD)psObj))
                {
                        return FALSE;
                }
        }
        else
        {
-               if (!stackPushResult(ST_BASEOBJECT, (SDWORD)NULL))
+               if (!stackPushResult((INTERP_TYPE)ST_BASEOBJECT, (SDWORD)NULL))
                {
                        return FALSE;
                }
@@ -8691,14 +8691,14 @@
 
        if(bFound)
        {
-               if (!stackPushResult(ST_DROID, (SDWORD)foundDroid))
+               if (!stackPushResult((INTERP_TYPE)ST_DROID, (SDWORD)foundDroid))
                {
                        return FALSE;
                }
        }
        else
        {
-               if (!stackPushResult(ST_DROID, (SDWORD)NULL))
+               if (!stackPushResult((INTERP_TYPE)ST_DROID, (SDWORD)NULL))
                {
                        return FALSE;
                }
@@ -8772,14 +8772,14 @@
 
        if(bFound)
        {
-               if (!stackPushResult(ST_STRUCTURE, (SDWORD)foundStruct))
+               if (!stackPushResult((INTERP_TYPE)ST_STRUCTURE, 
(SDWORD)foundStruct))
                {
                        return FALSE;
                }
        }
        else
        {
-               if (!stackPushResult(ST_STRUCTURE, (SDWORD)NULL))
+               if (!stackPushResult((INTERP_TYPE)ST_STRUCTURE, (SDWORD)NULL))
                {
                        return FALSE;
                }
@@ -9381,7 +9381,7 @@
                }
        }
 
-       if (!stackPushResult(ST_DROID, (SDWORD)psClosestDroid))
+       if (!stackPushResult((INTERP_TYPE)ST_DROID, (SDWORD)psClosestDroid))
        {
                return FALSE;
        }
Index: src/group.c
===================================================================
--- src/group.c (revision 358)
+++ src/group.c (working copy)
@@ -42,7 +42,7 @@
 // create a new group
 BOOL grpCreate(DROID_GROUP     **ppsGroup)
 {
-       if (!HEAP_ALLOC(psGrpHeap, (void*) ppsGroup))
+       if (!HEAP_ALLOC(psGrpHeap, (void**) ppsGroup))
        {
                return FALSE;
        }
Index: src/scriptobj.c
===================================================================
--- src/scriptobj.c     (revision 358)
+++ src/scriptobj.c     (working copy)
@@ -250,13 +250,13 @@
 
                if (psObj->type == OBJ_STRUCTURE)
                {
-                       type = ST_STRUCTURESTAT;
+                       type = (INTERP_TYPE)ST_STRUCTURESTAT;
                        val = ((STRUCTURE *)psObj)->pStructureType - 
asStructureStats;
                }
                else if (psObj->type == OBJ_DROID)
                {
                        //psStructStats = (STRUCTURE_STATS*)psDroid->psTarStats;
-                       type = ST_STRUCTURESTAT;
+                       type = (INTERP_TYPE)ST_STRUCTURESTAT;
                        val = (SDWORD)((STRUCTURE_STATS *)(((DROID 
*)psObj)->psTarStats) - asStructureStats);
                }
                else            //Nothing else supported
@@ -272,13 +272,13 @@
                //added object->psTarget
                if (psObj->type == OBJ_STRUCTURE)
                {
-                       type = ST_BASEOBJECT;
+                       type = (INTERP_TYPE)ST_BASEOBJECT;
                        val = (SDWORD)((STRUCTURE *)psObj)->psTarget;
                }
                else if (psObj->type == OBJ_DROID)
                {
                        //psStructStats = (STRUCTURE_STATS*)psDroid->psTarStats;
-                       type = ST_BASEOBJECT;
+                       type = (INTERP_TYPE)ST_BASEOBJECT;
                        val = (SDWORD)(((DROID *)psObj)->psTarget);
                }
                else            //Nothing else supported
Index: src/droid.c
===================================================================
--- src/droid.c (revision 358)
+++ src/droid.c (working copy)
@@ -2855,7 +2855,7 @@
 
        for (i=0; i < NumDroids; i++)
        {
-               if (!HEAP_ALLOC(psTemplateHeap, (void*) &pDroidDesign))
+               if (!HEAP_ALLOC(psTemplateHeap, (void**) &pDroidDesign))
                {
                        debug( LOG_ERROR, "Out of memory - Droid Templates" );
                        abort();
Index: src/data.c
===================================================================
--- src/data.c  (revision 358)
+++ src/data.c  (working copy)
@@ -900,13 +900,13 @@
        }
        else
        {
-               NewTexturePage = MALLOC(sizeof(TEXTUREPAGE));
+               NewTexturePage = (TEXTUREPAGE*)MALLOC(sizeof(TEXTUREPAGE));
                if (!NewTexturePage) return FALSE;
 
                NewTexturePage->Texture=NULL;
                NewTexturePage->Palette=NULL;
 
-               psPal = MALLOC(sizeof(iPalette));
+               psPal = (iPalette*)MALLOC(sizeof(iPalette));
                if (!psPal) return FALSE;
 
                psSprite = (iSprite*)MALLOC(sizeof(iSprite));
@@ -1071,7 +1071,7 @@
 
 void dataAnimRelease( void *pData )
 {
-       anim_ReleaseAnim(pData);
+       anim_ReleaseAnim((BASEANIM*)pData);
 }
 
 /* Load a string resource file */
Index: src/formation.c
===================================================================
--- src/formation.c     (revision 358)
+++ src/formation.c     (working copy)
@@ -115,7 +115,7 @@
        SDWORD          i;
 
        // get a heap structure
-       if (!HEAP_ALLOC(psFHeap, (void*) &psNew))
+       if (!HEAP_ALLOC(psFHeap, (void**) &psNew))
        {
                return FALSE;
        }
Index: src/effects.c
===================================================================
--- src/effects.c       (revision 358)
+++ src/effects.c       (working copy)
@@ -2925,7 +2925,7 @@
        fileSize = ( sizeof(struct _fx_save_header) + ( fxEntries*sizeof(struct 
_effect_def) ) );
 
        /* Try and allocate it - freed up in same function */
-       pFileData = MALLOC(fileSize);
+       pFileData = (char*)MALLOC(fileSize);
 
        /* Did we get it? */
        if(!pFileData)
@@ -3091,7 +3091,7 @@
                if(asEffectsList[i].imd)
                {
                        /* Restore the pointer from the hashed ID */
-                       endian_udword(&asEffectsList[i].imd);
+                       endian_udword((UDWORD*)&asEffectsList[i].imd);
                        asEffectsList[i].imd = 
(iIMDShape*)resGetDataFromHash("IMD",(UDWORD)asEffectsList[i].imd);
                }
        }
Index: src/environ.c
===================================================================
--- src/environ.c       (revision 358)
+++ src/environ.c       (working copy)
@@ -67,7 +67,7 @@
 //this function just allocates the memory now for MaxMapWidth, MaxMapHeight
 BOOL    environInit( void )
 {
-       pEnvironData = MALLOC(sizeof(struct environ_data) * MAP_MAXWIDTH * 
MAP_MAXHEIGHT);
+       pEnvironData = (ENVIRON_DATA*)MALLOC(sizeof(struct environ_data) * 
MAP_MAXWIDTH * MAP_MAXHEIGHT);
        if(!pEnvironData)
        {
                debug( LOG_ERROR, "Can't get memory for the environment data" );
Index: src/gatewaysup.c
===================================================================
--- src/gatewaysup.c    (revision 358)
+++ src/gatewaysup.c    (working copy)
@@ -505,7 +505,7 @@
                gwFreeZoneMap();
        }
 
-       apRLEZones = MALLOC(sizeof(UBYTE *) * gwMapHeight());
+       apRLEZones = (UBYTE**)MALLOC(sizeof(UBYTE *) * gwMapHeight());
        if (apRLEZones == NULL)
        {
                debug( LOG_ERROR, "gwCreateBlankZoneMap: Out of memory" );
@@ -515,7 +515,7 @@
        for(i=0; i< gwMapHeight(); i++)
        {
 
-               apRLEZones[i] = MALLOC(gwMapWidth() * 2);
+               apRLEZones[i] = (UBYTE*)MALLOC(gwMapWidth() * 2);
 
                if (apRLEZones[i] == NULL)
                {
Index: src/game.c
===================================================================
--- src/game.c  (revision 358)
+++ src/game.c  (working copy)
@@ -10153,7 +10153,7 @@
                psSaveMessage = (SAVE_MESSAGE *) pFileData;
 
                /* SAVE_MESSAGE */
-               endian_sdword(&psSaveMessage->type);    /* FIXME: enum may not 
be this type! */
+               endian_sdword((SDWORD*)&psSaveMessage->type);   /* FIXME: enum 
may not be this type! */
                endian_udword(&psSaveMessage->objId);
                endian_udword(&psSaveMessage->player);
 
@@ -10317,7 +10317,7 @@
                        psSaveMessage->read = psMessage->read;                  
//flag to indicate whether message has been read
                        psSaveMessage->player = psMessage->player;              
//which player this message belongs to
 
-                       endian_sdword(&psSaveMessage->type); /* FIXME: enum may 
be different type! */
+                       endian_sdword((SDWORD*)&psSaveMessage->type); /* FIXME: 
enum may be different type! */
                        endian_udword(&psSaveMessage->objId);
                        endian_udword(&psSaveMessage->player);
 
@@ -10591,7 +10591,7 @@
                psSaveflag = (SAVE_FLAG *) pFileData;
 
                /* SAVE_FLAG */
-               endian_sdword(&psSaveflag->type); /* FIXME: enum may not be 
this type! */
+               endian_sdword((SDWORD*)psSaveflag->type); /* FIXME: enum may 
not be this type! */
                endian_udword(&psSaveflag->frameNumber);
                endian_udword(&psSaveflag->screenX);
                endian_udword(&psSaveflag->screenY);
@@ -10791,7 +10791,7 @@
                        }
 
                        /* SAVE_FLAG */
-                       endian_sdword(&psSaveflag->type); /* FIXME: enum may be 
different type! */
+                       endian_sdword((SDWORD*)&psSaveflag->type); /* FIXME: 
enum may be different type! */
                        endian_udword(&psSaveflag->frameNumber);
                        endian_udword(&psSaveflag->screenX);
                        endian_udword(&psSaveflag->screenY);
@@ -10842,7 +10842,7 @@
                                                        }
 
                                                        /* SAVE_FLAG */
-                                                       
endian_sdword(&psSaveflag->type); /* FIXME: enum may be different type! */
+                                                       
endian_sdword((SDWORD*)&psSaveflag->type); /* FIXME: enum may be different 
type! */
                                                        
endian_udword(&psSaveflag->frameNumber);
                                                        
endian_udword(&psSaveflag->screenX);
                                                        
endian_udword(&psSaveflag->screenY);
Index: src/multiplay.c
===================================================================
--- src/multiplay.c     (revision 358)
+++ src/multiplay.c     (working copy)
@@ -1335,7 +1335,7 @@
        MultiMsgPlayerTo = selectedPlayer;
 
        strcpy(MultiplayMsg,&(pMsg->body[4]));
-       eventFireCallbackTrigger(CALL_AI_MSG);
+       eventFireCallbackTrigger((TRIGGER_TYPE)CALL_AI_MSG);
 
        // make some noise!
        if(titleMode == MULTIOPTION || titleMode == MULTILIMIT)
@@ -1938,7 +1938,7 @@
 
                        strcpy(MultiplayMsg, msg);
 
-                       eventFireCallbackTrigger(CALL_BEACON);
+                       eventFireCallbackTrigger((TRIGGER_TYPE)CALL_BEACON);
                        break;
 
                case CALL_AI_MSG:
@@ -1953,7 +1953,7 @@
 
                        strcpy(MultiplayMsg, msg);
 
-                       eventFireCallbackTrigger(CALL_AI_MSG);
+                       eventFireCallbackTrigger((TRIGGER_TYPE)CALL_AI_MSG);
                        break;
 
                default:
@@ -1987,4 +1987,4 @@
        strcpy(beaconReceiveMsg[sender], msg);
 
        return addHelpBlip(locX,locY,receiver,sender,beaconReceiveMsg[sender]);
-}
\ No newline at end of file
+}
Index: src/init.c
===================================================================
--- src/init.c  (revision 358)
+++ src/init.c  (working copy)
@@ -1014,7 +1014,7 @@
        {
                displayBufferSize = 5000000;
        }
-       DisplayBuffer = MALLOC(displayBufferSize);
+       DisplayBuffer = (char*)MALLOC(displayBufferSize);
        if (DisplayBuffer == NULL)
        {
                debug( LOG_ERROR, "Unable to allocate memory for display 
buffer" );
Index: src/scriptai.c
===================================================================
--- src/scriptai.c      (revision 358)
+++ src/scriptai.c      (working copy)
@@ -2320,7 +2320,7 @@
                psDroid = NULL;
        }
 
-       if (!stackPushResult(ST_DROID, (SDWORD)psDroid))
+       if (!stackPushResult((INTERP_TYPE)ST_DROID, (SDWORD)psDroid))
        {
                debug(LOG_ERROR, "scrIterateGroupB: stackPushResult failed");
                return FALSE;
Index: src/frontend.c
===================================================================
--- src/frontend.c      (revision 358)
+++ src/frontend.c      (working copy)
@@ -70,7 +70,7 @@
 extern void set_active_data_directory(int);
 
 extern CURSORSNAP InterfaceSnap;
-extern void ProcessCursorSnap(VOID);
+extern void ProcessCursorSnap(void);
 
 int StartWithGame = 1; // New game starts in Cam 1.
 
Index: src/keybind.c
===================================================================
--- src/keybind.c       (revision 358)
+++ src/keybind.c       (working copy)
@@ -1855,7 +1855,7 @@
                                //--------------------------
                                ConsolePlayer = selectedPlayer;
                                strcpy(ConsoleMsg,sTextToSend);
-                               eventFireCallbackTrigger(CALL_CONSOLE);
+                               
eventFireCallbackTrigger((TRIGGER_TYPE)CALL_CONSOLE);
 
 
                                if(bMultiPlayer && NetPlay.bComms)
Index: src/feature.c
===================================================================
--- src/feature.c       (revision 358)
+++ src/feature.c       (working copy)
@@ -1043,7 +1043,8 @@
 /* Remove a Feature and free it's memory */
 void destroyFeature(FEATURE *psDel)
 {
-       UDWORD                  widthScatter,breadthScatter,heightScatter, i, 
explosionSize;
+       UDWORD                  widthScatter,breadthScatter,heightScatter, i;
+       EFFECT_TYPE             explosionSize;
        iVector                 pos;
        UDWORD                  width,breadth;
        UDWORD                  mapX,mapY;
Index: src/gateway.c
===================================================================
--- src/gateway.c       (revision 358)
+++ src/gateway.c       (working copy)
@@ -160,7 +160,7 @@
                return FALSE;
        }
 
-       psNew = MALLOC(sizeof(GATEWAY));
+       psNew = (GATEWAY*)MALLOC(sizeof(GATEWAY));
        if (!psNew)
        {
                debug( LOG_ERROR, "gwNewGateway: out of memory" );
@@ -232,7 +232,7 @@
                return FALSE;
        }
 
-       psNew = MALLOC(sizeof(GATEWAY));
+       psNew = (GATEWAY*)MALLOC(sizeof(GATEWAY));
        if (!psNew)
        {
                debug( LOG_ERROR, "gwNewGateway: out of memory" );
@@ -705,7 +705,7 @@
 
 
        // note which zones have a gateway
-       aZoneReachable = MALLOC( sizeof(UBYTE) * gwNumZones );
+       aZoneReachable = (UBYTE*)MALLOC( sizeof(UBYTE) * gwNumZones );
        if (aZoneReachable == NULL)
        {
                debug( LOG_ERROR, "gwLinkGateways: out of memory" );
@@ -795,7 +795,7 @@
                }
                if (zone1Links+zone2Links > 0)
                {
-                       psCurr->psLinks = MALLOC(sizeof(GATEWAY_LINK) * 
(zone1Links+zone2Links));
+                       psCurr->psLinks = 
(GATEWAY_LINK*)MALLOC(sizeof(GATEWAY_LINK) * (zone1Links+zone2Links));
                        if (psCurr->psLinks == NULL)
                        {
                                debug( LOG_ERROR, "gwLinkGateways: out of 
memory" );
@@ -910,7 +910,7 @@
                gwFreeZoneMap();
        }
 
-       apRLEZones = MALLOC(sizeof(UBYTE *) * gwMapHeight());
+       apRLEZones = (UBYTE**)MALLOC(sizeof(UBYTE *) * gwMapHeight());
        if (apRLEZones == NULL)
        {
                debug( LOG_ERROR, "gwNewZoneMap: Out of memory" );
@@ -937,7 +937,7 @@
                FREE(apRLEZones[Line]);
        }
 
-       apRLEZones[Line] = MALLOC(Size);
+       apRLEZones[Line] = (UBYTE*)MALLOC(Size);
        if (apRLEZones[Line] == NULL)
        {
                debug( LOG_ERROR, "gwNewZoneLine: Out of memory" );
@@ -1032,7 +1032,7 @@
                "gwNewEquivTable: invalid number of zones" );
 
        gwNumZones = numZones;
-       aNumEquiv = MALLOC(sizeof(UBYTE) * numZones);
+       aNumEquiv = (UBYTE*)MALLOC(sizeof(UBYTE) * numZones);
        if (aNumEquiv == NULL)
        {
                debug( LOG_ERROR, "gwNewEquivTable: out of memory" );
@@ -1044,7 +1044,7 @@
                aNumEquiv[i] = 0;
        }
 
-       apEquivZones = MALLOC(sizeof(UBYTE *) * numZones);
+       apEquivZones = (UBYTE**)MALLOC(sizeof(UBYTE *) * numZones);
        if (apEquivZones == NULL)
        {
                debug( LOG_ERROR, "gwNewEquivTable: out of memory" );
@@ -1095,7 +1095,7 @@
        ASSERT( numEquiv <= gwNumZones,
                "gwSetZoneEquiv: invalid number of zone equivalents" );
 
-       apEquivZones[zone] = MALLOC(sizeof(UBYTE) * numEquiv);
+       apEquivZones[zone] = (UBYTE*)MALLOC(sizeof(UBYTE) * numEquiv);
        if (apEquivZones[zone] == NULL)
        {
                debug( LOG_ERROR, "gwSetZoneEquiv: out of memory" );
Index: src/main.c
===================================================================
--- src/main.c  (revision 358)
+++ src/main.c  (working copy)
@@ -3,6 +3,7 @@
  *
  */
 #include "lib/framework/frame.h"
+#include "lib/framework/configfile.h"
 
 /* For SHGetFolderPath */
 #ifdef WIN32
@@ -84,7 +85,6 @@
 char   MultiPlayersPath[MAX_PATH];
 char   KeyMapPath[MAX_PATH];
 char   UserMusicPath[MAX_PATH];
-char   RegFilePath[MAX_PATH];
 
 void debug_callback_stderr( void**, const char * );
 void debug_callback_win32debug( void**, const char * );
Index: src/intdisplay.c
===================================================================
--- src/intdisplay.c    (revision 358)
+++ src/intdisplay.c    (working copy)
@@ -2319,7 +2319,7 @@
        UDWORD i;
 
        for(i=0; i<NUM_OBJECTSURFACES; i++) {
-               ObjectSurfaces[i].Buffer = MALLOC(Width*Height);
+               ObjectSurfaces[i].Buffer = (uint8*)MALLOC(Width*Height);
                ASSERT( ObjectSurfaces[i].Buffer!=NULL,"intInitialise : Failed 
to allocate Object surface" );
                ObjectSurfaces[i].Surface = 
iV_SurfaceCreate(REND_SURFACE_USR,Width,Height,10,10,ObjectSurfaces[i].Buffer);
                ASSERT( ObjectSurfaces[i].Surface!=NULL,"intInitialise : Failed 
to create Object surface" );
@@ -2331,7 +2331,7 @@
        }
 
        for(i=0; i<NUM_SYSTEM0SURFACES; i++) {
-               System0Surfaces[i].Buffer = MALLOC(Width*Height);
+               System0Surfaces[i].Buffer = (uint8*)MALLOC(Width*Height);
                ASSERT( System0Surfaces[i].Buffer!=NULL,"intInitialise : Failed 
to allocate System0 surface" );
                System0Surfaces[i].Surface = 
iV_SurfaceCreate(REND_SURFACE_USR,Width,Height,10,10,System0Surfaces[i].Buffer);
                ASSERT( System0Surfaces[i].Surface!=NULL,"intInitialise : 
Failed to create System0 surface" );
@@ -2343,7 +2343,7 @@
        }
 
        for(i=0; i<NUM_TOPICSURFACES; i++) {
-               TopicSurfaces[i].Buffer = MALLOC(WidthTopic*HeightTopic);
+               TopicSurfaces[i].Buffer = 
(uint8*)MALLOC(WidthTopic*HeightTopic);
                ASSERT( TopicSurfaces[i].Buffer!=NULL,"intInitialise : Failed 
to allocate Topic surface" );
                TopicSurfaces[i].Surface = 
iV_SurfaceCreate(REND_SURFACE_USR,WidthTopic,HeightTopic,10,10,TopicSurfaces[i].Buffer);
                ASSERT( TopicSurfaces[i].Surface!=NULL,"intInitialise : Failed 
to create Topic surface" );
@@ -2355,7 +2355,7 @@
        }
 
        for(i=0; i<NUM_STATSURFACES; i++) {
-               StatSurfaces[i].Buffer = MALLOC(Width*Height);
+               StatSurfaces[i].Buffer = (uint8*)MALLOC(Width*Height);
                ASSERT( StatSurfaces[i].Buffer!=NULL,"intInitialise : Failed to 
allocate Stats surface" );
                StatSurfaces[i].Surface = 
iV_SurfaceCreate(REND_SURFACE_USR,Width,Height,10,10,StatSurfaces[i].Buffer);
                ASSERT( StatSurfaces[i].Surface!=NULL,"intInitialise : Failed 
to create Stat surface" );
Index: src/scriptvals_parser.y
===================================================================
--- src/scriptvals_parser.y     (revision 358)
+++ src/scriptvals_parser.y     (working copy)
@@ -168,20 +168,20 @@
                                        {
                                                if 
(resPresent("BLO",stringname)==TRUE)
                                                {
-                                                       
psCurrScript=resGetData("BLO",stringname);
+                                                       psCurrScript = 
(SCRIPT_CODE*)resGetData("BLO",stringname);
                                                }
                                                else
                                                {
                                                        // change extension to 
"slo"
                                                        stringname[extpos]='s';
-                                                       
psCurrScript=resGetData("SCRIPT",stringname);
+                                                       psCurrScript = 
(SCRIPT_CODE*)resGetData("SCRIPT",stringname);
                                                }
                                        }
                                        else if 
(strncmp(&stringname[extpos],"slo",3)==0)
                                        {
                                                if 
(resPresent("SCRIPT",stringname)==TRUE)
                                                {
-                                                       
psCurrScript=resGetData("SCRIPT",stringname);
+                                                       psCurrScript = 
(SCRIPT_CODE*)resGetData("SCRIPT",stringname);
                                                }
                                        }
 
Index: src/astar.c
===================================================================
--- src/astar.c (revision 358)
+++ src/astar.c (working copy)
@@ -128,7 +128,7 @@
        }
 
 #if OPEN_LIST == 2
-       apsNodes = MALLOC(sizeof(FP_NODE *) * FPATH_TABLESIZE);
+       apsNodes = (FP_NODE**)MALLOC(sizeof(FP_NODE *) * FPATH_TABLESIZE);
        if (!apsNodes)
        {
                return FALSE;
@@ -759,7 +759,7 @@
 {
        FP_NODE *psNode;
 
-       if (!HEAP_ALLOC(psFPNodeHeap, (void*) &psNode))
+       if (!HEAP_ALLOC(psFPNodeHeap, (void**) &psNode))
        {
                return NULL;
        }
Index: lib/gamelib/ptrlist.c
===================================================================
--- lib/gamelib/ptrlist.c       (revision 358)
+++ lib/gamelib/ptrlist.c       (working copy)
@@ -27,7 +27,7 @@
                                UDWORD udwExtElements, UDWORD udwElementSize )
 {
        /* create ptr list struct */
-       (*ppsList) = MALLOC( sizeof(PTRLIST) );
+       (*ppsList) = (PTRLIST*)MALLOC( sizeof(PTRLIST) );
 
        /* allocate heaps */
        if ( !HEAP_CREATE( &(*ppsList)->psNodeHeap, sizeof(LISTNODE),
@@ -178,7 +178,7 @@
                        "ptrList_InsertElement: element pointer invalid\n" );
 
        /* get node from heap */
-       HEAP_ALLOC( ptrList->psNodeHeap, (void*) &psNode );
+       HEAP_ALLOC( ptrList->psNodeHeap, (void**) &psNode );
 
        /* set node elements */
        psNode->sdwKey    = sdwKey;
Index: lib/gamelib/animobj.c
===================================================================
--- lib/gamelib/animobj.c       (revision 358)
+++ lib/gamelib/animobj.c       (working copy)
@@ -126,7 +126,7 @@
        SDWORD          dwTime;
        BOOL            bRemove;
 
-       psObj = hashTable_GetFirst( g_pAnimObjTable );
+       psObj = (ANIM_OBJECT*)hashTable_GetFirst( g_pAnimObjTable );
 
        while ( psObj != NULL )
        {
@@ -166,7 +166,7 @@
                        }
                }
 
-               psObj = hashTable_GetNext( g_pAnimObjTable );
+               psObj = (ANIM_OBJECT*)hashTable_GetNext( g_pAnimObjTable );
        }
 }
 
@@ -191,7 +191,7 @@
 
 
        /* get object from table */
-       psObj = hashTable_GetElement( g_pAnimObjTable );
+       psObj = (ANIM_OBJECT*)hashTable_GetElement( g_pAnimObjTable );
 
 
        if (psObj==NULL)
@@ -282,7 +282,7 @@
 ANIM_OBJECT *
 animObj_GetNext( void )
 {
-       return hashTable_GetNext( g_pAnimObjTable );
+       return (ANIM_OBJECT*)hashTable_GetNext( g_pAnimObjTable );
 }
 
 /***************************************************************************/
@@ -290,7 +290,7 @@
 ANIM_OBJECT *
 animObj_Find( void *pParentObj, int iAnimID )
 {
-       return hashTable_FindElement( g_pAnimObjTable,
+       return (ANIM_OBJECT*)hashTable_FindElement( g_pAnimObjTable,
                                                                                
(int) pParentObj, iAnimID );
 }
 
Index: lib/gamelib/anim.c
===================================================================
--- lib/gamelib/anim.c  (revision 358)
+++ lib/gamelib/anim.c  (working copy)
@@ -121,7 +121,7 @@
        psAnim->uwAnimTime  = (UWORD) (uwStates*1000 / psAnim->uwFrameRate);
 
        /* allocate frames */
-       psAnim->psStates = MALLOC( uwObj*psAnim->uwStates*sizeof(ANIM_STATE) );
+       psAnim->psStates = (ANIM_STATE*)MALLOC( 
uwObj*psAnim->uwStates*sizeof(ANIM_STATE) );
 }
 
 /***************************************************************************/
@@ -135,7 +135,7 @@
        UWORD           uwFrames, i;
 
        /* allocate anim */
-       if ( (psAnim3D = MALLOC(sizeof(ANIM3D))) == NULL )
+       if ( (psAnim3D = (ANIM3D*)MALLOC(sizeof(ANIM3D))) == NULL )
        {
                return FALSE;
        }
@@ -169,7 +169,7 @@
        }
 
        /* get pointers to individual frames */
-       psAnim3D->apFrame = MALLOC( uwFrames*sizeof(iIMDShape *) );
+       psAnim3D->apFrame = (iIMDShape**)MALLOC( uwFrames*sizeof(iIMDShape *) );
        psFrames = psAnim3D->psFrames;
        for ( i=0; i<uwFrames; i++ )
        {
@@ -295,7 +295,7 @@
 anim_SetVals( char szFileName[], UWORD uwAnimID )
 {
        /* get track pointer from resource */
-       BASEANIM        *psAnim = resGetData( "ANI", szFileName );
+       BASEANIM        *psAnim = (BASEANIM*)resGetData( "ANI", szFileName );
 
        if ( psAnim == NULL )
        {
Index: lib/gamelib/hashtabl.c
===================================================================
--- lib/gamelib/hashtabl.c      (revision 358)
+++ lib/gamelib/hashtabl.c      (working copy)
@@ -74,9 +74,9 @@
        /* allocate and init table */
 
 
-       (*ppsTable) = MALLOC( sizeof(HASHTABLE) );
+       (*ppsTable) = (HASHTABLE*)MALLOC( sizeof(HASHTABLE) );
        udwSize = udwTableSize * sizeof(HASHNODE *);
-       (*ppsTable)->ppsNode = MALLOC( udwSize );
+       (*ppsTable)->ppsNode = (HASHNODE**)MALLOC( udwSize );
        memset( (*ppsTable)->ppsNode, 0, udwSize );
 
        /* allocate heaps */
@@ -260,7 +260,7 @@
        udwHashIndex = hashTable_GetHashKey( psTable, iKey1, iKey2 );
 
        /* get node from heap */
-       HEAP_ALLOC( psTable->psNodeHeap, (void*) &psNode );
+       HEAP_ALLOC( psTable->psNodeHeap, (void**) &psNode );
 
        /* set node elements */
        psNode->iKey1     = iKey1;
Index: lib/gamelib/anim.h
===================================================================
--- lib/gamelib/anim.h  (revision 358)
+++ lib/gamelib/anim.h  (working copy)
@@ -95,7 +95,7 @@
 
 /***************************************************************************/
 
-typedef void * (* GETSHAPEFUNC) ( STRING *pStr );
+typedef iIMDShape * (* GETSHAPEFUNC) ( STRING *pStr );
 
 typedef struct ANIMGLOBALS
 {
Index: lib/ivis_common/imdload.c
===================================================================
--- lib/ivis_common/imdload.c   (revision 358)
+++ lib/ivis_common/imdload.c   (working copy)
@@ -531,7 +531,7 @@
        }
 
        // Build table of nodes - we sort out the links later
-       NodeList=MALLOC((sizeof(BSPTREENODE))*BSPNodeCount);    // Allocate the 
entire node tree
+       NodeList = (BSPTREENODE*)MALLOC((sizeof(BSPTREENODE))*BSPNodeCount);    
// Allocate the entire node tree
 
        memset(NodeList,0,(sizeof(BSPTREENODE))*BSPNodeCount);  // Zero it out 
... we need to make all pointers NULL
 
Index: lib/ivis_common/piestate.c
===================================================================
--- lib/ivis_common/piestate.c  (revision 358)
+++ lib/ivis_common/piestate.c  (working copy)
@@ -18,7 +18,6 @@
        pie_SetFogColour(0x00000000);//nicks colour
 
        //depth Buffer on
-       rendStates.depthBuffer = FALSE;//to force reset to true
        pie_SetDepthBufferStatus(DEPTH_CMP_LEQ_WRT_ON);
 
        //set render mode
Index: lib/ivis_common/bitimage.c
===================================================================
--- lib/ivis_common/bitimage.c  (revision 358)
+++ lib/ivis_common/bitimage.c  (working copy)
@@ -84,20 +84,20 @@
        endian_uword(&Header->BitDepth);
        endian_uword(&Header->NumTPages);
 
-       ImageFile = MALLOC(sizeof(IMAGEFILE));
+       ImageFile = (IMAGEFILE*)MALLOC(sizeof(IMAGEFILE));
        if(ImageFile == NULL) {
                debug( LOG_ERROR, "Out of memory" );
                return NULL;
        }
 
 
-       ImageFile->TexturePages = MALLOC(sizeof(iSprite)*Header->NumTPages);
+       ImageFile->TexturePages = 
(iSprite*)MALLOC(sizeof(iSprite)*Header->NumTPages);
        if(ImageFile->TexturePages == NULL) {
                debug( LOG_ERROR, "Out of memory" );
                return NULL;
        }
 
-       ImageFile->ImageDefs = MALLOC(sizeof(IMAGEDEF)*Header->NumImages);
+       ImageFile->ImageDefs = 
(IMAGEDEF*)MALLOC(sizeof(IMAGEDEF)*Header->NumImages);
        if(ImageFile->ImageDefs == NULL) {
                debug( LOG_ERROR, "Out of memory" );
                return NULL;
Index: lib/ivis_common/piestate.h
===================================================================
--- lib/ivis_common/piestate.h  (revision 358)
+++ lib/ivis_common/piestate.h  (working copy)
@@ -100,7 +100,6 @@
 
 typedef struct RENDER_STATE
                                {
-                                       DEPTH_MODE                      
depthBuffer;
                                        BOOL                            
translucent;
                                        BOOL                            
additive;
                                        FOG_CAP                         fogCap;
Index: lib/ivis_common/pcx.c
===================================================================
--- lib/ivis_common/pcx.c       (revision 358)
+++ lib/ivis_common/pcx.c       (working copy)
@@ -103,7 +103,7 @@
                        s->width = w;
                        s->height = h;
                        // Freeing s->bmp before allocating new mem would give 
a HEAP error on Windows (Invalid Address specified to RtlFreeHeap( x, x )).
-                       s->bmp = malloc(w*h*info_ptr->channels);
+                       s->bmp = (iBitmap*)malloc(w*h*info_ptr->channels);
                }
 
                {
Index: lib/widget/editbox.c
===================================================================
--- lib/widget/editbox.c        (revision 358)
+++ lib/widget/editbox.c        (working copy)
@@ -54,7 +54,7 @@
        *ppsWidget = (W_EDITBOX *)MALLOC(sizeof(W_EDITBOX));
        if (*ppsWidget == NULL)
 #else
-       if (!HEAP_ALLOC(psEdbHeap, (void*) ppsWidget))
+       if (!HEAP_ALLOC(psEdbHeap, (void**) ppsWidget))
 #endif
        {
                ASSERT( FALSE, "Out of memory" );
Index: lib/widget/form.c
===================================================================
--- lib/widget/form.c   (revision 358)
+++ lib/widget/form.c   (working copy)
@@ -88,7 +88,7 @@
        *ppsWidget = (W_FORM *)MALLOC(sizeof(W_FORM));
        if (*ppsWidget == NULL)
 #else
-       if (!HEAP_ALLOC(psFormHeap, (void*) ppsWidget))
+       if (!HEAP_ALLOC(psFormHeap, (void**) ppsWidget))
 #endif
        {
                ASSERT( FALSE, "formCreatePlain: Out of memory" );
@@ -152,7 +152,7 @@
        *ppsWidget = (W_CLICKFORM *)MALLOC(sizeof(W_CLICKFORM));
        if (*ppsWidget == NULL)
 #else
-       if (!HEAP_ALLOC(psCFormHeap, (void*) ppsWidget))
+       if (!HEAP_ALLOC(psCFormHeap, (void**) ppsWidget))
 #endif
        {
                ASSERT( FALSE, "formCreateClickable: Out of memory" );
@@ -279,7 +279,7 @@
        *ppsWidget = (W_TABFORM *)MALLOC(sizeof(W_TABFORM));
        if (*ppsWidget == NULL)
 #else
-       if (!HEAP_ALLOC(psTFormHeap, (void*) ppsWidget))
+       if (!HEAP_ALLOC(psTFormHeap, (void**) ppsWidget))
 #endif
        {
                ASSERT( FALSE, "formCreateTabbed: Out of memory" );
Index: lib/widget/bar.c
===================================================================
--- lib/widget/bar.c    (revision 358)
+++ lib/widget/bar.c    (working copy)
@@ -48,7 +48,7 @@
        *ppsWidget = (W_BARGRAPH *)MALLOC(sizeof(W_BARGRAPH));
        if (*ppsWidget == NULL)
 #else
-       if (!HEAP_ALLOC(psBarHeap, (void*) ppsWidget))
+       if (!HEAP_ALLOC(psBarHeap, (void**) ppsWidget))
 #endif
        {
                ASSERT( FALSE, "barGraphCreate: Out of memory" );
Index: lib/widget/button.c
===================================================================
--- lib/widget/button.c (revision 358)
+++ lib/widget/button.c (working copy)
@@ -47,7 +47,7 @@
        *ppsWidget = (W_BUTTON *)MALLOC(sizeof(W_BUTTON));
        if (*ppsWidget == NULL)
 #else
-       if (!HEAP_ALLOC(psButHeap, (void*) ppsWidget))
+       if (!HEAP_ALLOC(psButHeap, (void**) ppsWidget))
 #endif
        {
                ASSERT( FALSE, "buttonCreate: Out of memory" );
Index: lib/widget/label.c
===================================================================
--- lib/widget/label.c  (revision 358)
+++ lib/widget/label.c  (working copy)
@@ -36,7 +36,7 @@
        *ppsWidget = (W_LABEL *)MALLOC(sizeof(W_LABEL));
        if (*ppsWidget == NULL)
 #else
-       if (!HEAP_ALLOC(psLabHeap, (void*) ppsWidget))
+       if (!HEAP_ALLOC(psLabHeap, (void**) ppsWidget))
 #endif
        {
                ASSERT( FALSE, "Out of memory" );
Index: lib/widget/slider.c
===================================================================
--- lib/widget/slider.c (revision 358)
+++ lib/widget/slider.c (working copy)
@@ -64,7 +64,7 @@
        *ppsWidget = (W_SLIDER *)MALLOC(sizeof(W_SLIDER));
        if (*ppsWidget == NULL)
 #else
-       if (!HEAP_ALLOC(psSldHeap, (void*) ppsWidget))
+       if (!HEAP_ALLOC(psSldHeap, (void**) ppsWidget))
 #endif
        {
                ASSERT( FALSE, "sliderCreate: Out of memory" );
Index: lib/widget/widget.c
===================================================================
--- lib/widget/widget.c (revision 358)
+++ lib/widget/widget.c (working copy)
@@ -144,7 +144,7 @@
 /* Get a string from the string heap */
 BOOL widgAllocString(STRING **ppStr)
 {
-       if (!HEAP_ALLOC(psStrHeap, (void*) ppStr))
+       if (!HEAP_ALLOC(psStrHeap, (void**) ppStr))
        {
                return FALSE;
        }
@@ -174,7 +174,7 @@
  */
 BOOL widgAllocCopyString(STRING **ppDest, STRING *pSrc)
 {
-       if (!HEAP_ALLOC(psStrHeap, (void*) ppDest))
+       if (!HEAP_ALLOC(psStrHeap, (void**) ppDest))
        {
                *ppDest = NULL;
                return FALSE;
Index: lib/script/interp.c
===================================================================
--- lib/script/interp.c (revision 358)
+++ lib/script/interp.c (working copy)
@@ -329,7 +329,7 @@
                                case OP_FUNC:
                                        //debug( LOG_SCRIPT, "-OP_FUNC" );
                                        //debug( LOG_SCRIPT, "OP_FUNC: remember 
event %d, ip=%d", CurEvent, (ip + 2) );
-                                       if(!RetStackRemember(CurEvent, (ip + 
2)))       //Remember where to jump back later
+                                       if(!RetStackRemember(CurEvent, *(ip + 
2)))      //Remember where to jump back later
                                        {
                                                debug( LOG_ERROR, 
"interpRunScript() - RetStackRemember() failed.");
                                                return FALSE;
Index: lib/script/stack.c
===================================================================
--- lib/script/stack.c  (revision 358)
+++ lib/script/stack.c  (working copy)
@@ -72,7 +72,7 @@
                {
                        return FALSE;
                }
-               psCurrChunk->psNext->aVals = MALLOC(sizeof(INTERP_VAL) * size);
+               psCurrChunk->psNext->aVals = 
(INTERP_VAL*)MALLOC(sizeof(INTERP_VAL) * size);
                if (!psCurrChunk->psNext->aVals)
                {
                        FREE(psCurrChunk->psNext);
@@ -627,7 +627,7 @@
                abort();
                return FALSE;
        }
-       psStackBase->aVals = MALLOC(sizeof(INTERP_VAL) * INIT_SIZE);
+       psStackBase->aVals = (INTERP_VAL*)MALLOC(sizeof(INTERP_VAL) * 
INIT_SIZE);
        if (!psStackBase->aVals)
        {
                debug( LOG_ERROR, "Out of memory" );
Index: lib/script/script_parser.y
===================================================================
--- lib/script/script_parser.y  (revision 358)
+++ lib/script/script_parser.y  (working copy)
@@ -4086,7 +4086,6 @@
                                        //debug(LOG_SCRIPT,"[YACC]: PUT_DATA 
VAL_STRING, val: '%s'",yyvsp[0].sval);
 
                                        /* Manage string stack */
-                                       *STRSTACK[CURSTACKSTR] = 
(char)MALLOC(MAXSTRLEN);
                                        
widgCopyString(STRSTACK[CURSTACKSTR],yyvsp[0].sval);
                                        CURSTACKSTR = CURSTACKSTR + 1;          
/* Increment 'pointer' to the top of the string stack */
 
Index: lib/script/interp.h
===================================================================
--- lib/script/interp.h (revision 358)
+++ lib/script/interp.h (working copy)
@@ -158,7 +158,7 @@
 typedef struct _array_data
 {
        UDWORD                  base;                   // the base index of 
the array values
-       UBYTE                   type;                   // the array data type
+       INTERP_TYPE             type;                   // the array data type
        UBYTE                   dimensions;
        UBYTE                   elements[VAR_MAX_DIMENSIONS];
 } ARRAY_DATA;
@@ -193,7 +193,7 @@
 /* Description of a trigger for the SCRIPT_CODE */
 typedef struct _trigger_data
 {
-       UWORD                   type;           // Type of trigger
+       TRIGGER_TYPE            type;           // Type of trigger
        UWORD                   code;           // BOOL - is there code with 
this trigger
        UDWORD                  time;           // How often to check the 
trigger
 } TRIGGER_DATA;
Index: lib/script/script.h
===================================================================
--- lib/script/script.h (revision 358)
+++ lib/script/script.h (working copy)
@@ -94,13 +94,6 @@
  * Event system functions
  */
 
-// Whether a context is released when there are no active triggers for it
-typedef enum _context_release
-{
-       CR_RELEASE,             // release the context
-       CR_NORELEASE,   // do not release the context
-} CONTEXT_RELEASE;
-
 // reset the event system
 extern void eventReset(void);
 
Index: lib/script/parse.h
===================================================================
--- lib/script/parse.h  (revision 358)
+++ lib/script/parse.h  (working copy)
@@ -66,7 +66,7 @@
 /* Type for a user type symbol */
 typedef struct _type_symbol
 {
-       SWORD                   typeID;         // The type id to use in the 
type field of values
+       INTERP_TYPE             typeID;         // The type id to use in the 
type field of values
        SWORD                   accessType;     // Whether the type is an 
object or a simple value
        STRING                  *pIdent;        // Type identifier
        SCR_VAL_SAVE    saveFunc;       // load and save functions
Index: lib/script/event.c
===================================================================
--- lib/script/event.c  (revision 358)
+++ lib/script/event.c  (working copy)
@@ -366,14 +366,15 @@
                                         SCRIPT_CONTEXT **ppsContext)
 {
        SCRIPT_CONTEXT  *psContext;
-       SDWORD          val, storeIndex, type, arrayNum, i,j, arraySize;
+       SDWORD          val, storeIndex, arrayNum, i,j, arraySize;
+       INTERP_TYPE     type;
        VAL_CHUNK       *psNewChunk, *psNextChunk;
 
        ASSERT( PTRVALID(psCode, sizeof(SCRIPT_CODE)),
                "eventNewContext: Invalid code pointer" );
 
        // Get a new context
-       if (!HEAP_ALLOC(psContHeap, (void*) &psContext))
+       if (!HEAP_ALLOC(psContHeap, (void**) &psContext))
        {
                debug(LOG_ERROR,"eventNewContext: HEAP_ALLOC failed");
                return FALSE;
@@ -382,7 +383,7 @@
        // Initialise the context
        psContext->psCode = psCode;
        psContext->triggerCount = 0;
-       psContext->release = (SWORD)(release == CR_RELEASE ? TRUE : FALSE);
+       psContext->release = release;
        psContext->psGlobals = NULL;
        psContext->id = -1;             // only used by the save game
        val = psCode->numGlobals + psCode->arraySize - 1;
@@ -457,7 +458,7 @@
 
        while (val >= 0)
        {
-               if (!HEAP_ALLOC(psValHeap, (void*) &psNewChunk))
+               if (!HEAP_ALLOC(psValHeap, (void**) &psNewChunk))
                {
                        for(psNewChunk=psContext->psGlobals; psNewChunk; 
psNewChunk = psNextChunk)
                        {
@@ -842,7 +843,7 @@
        }
 
        // Get a trigger object
-       if (!HEAP_ALLOC(psTrigHeap, (void*) &psNewTrig))
+       if (!HEAP_ALLOC(psTrigHeap, (void**) &psNewTrig))
        {
                return FALSE;
        }
@@ -876,7 +877,7 @@
                "eventLoadTrigger: Trigger out of range" );
 
        // Get a trigger object
-       if (!HEAP_ALLOC(psTrigHeap, (void*) &psNewTrig))
+       if (!HEAP_ALLOC(psTrigHeap, (void**) &psNewTrig))
        {
                debug( LOG_ERROR, "eventLoadTrigger: out of memory" );
                abort();
@@ -909,7 +910,7 @@
                "eventAddTrigger: Event out of range" );
 
        // Get a trigger object
-       if (!HEAP_ALLOC(psTrigHeap, (void*) &psNewTrig))
+       if (!HEAP_ALLOC(psTrigHeap, (void**) &psNewTrig))
        {
                return FALSE;
        }
Index: lib/script/event.h
===================================================================
--- lib/script/event.h  (revision 358)
+++ lib/script/event.h  (working copy)
@@ -29,14 +29,21 @@
        struct _link_chunk *psNext;
 } LINK_CHUNK;
 
+// Whether a context is released when there are no active triggers for it
+typedef enum _context_release
+{
+       CR_RELEASE,             // release the context
+       CR_NORELEASE,   // do not release the context
+} CONTEXT_RELEASE;
 
+
 /* The data needed within an object to run a script */
 typedef struct _script_context
 {
        SCRIPT_CODE             *psCode;                // The actual script to 
run
        VAL_CHUNK               *psGlobals;             // The objects copy of 
the global variables
        SDWORD                  triggerCount;   // Number of currently active 
triggers
-       SWORD                   release;                // Whether to release 
the context when there are no triggers
+       CONTEXT_RELEASE         release;                // Whether to release 
the context when there are no triggers
        SWORD                   id;
 
        struct _script_context *psNext;
Index: lib/script/evntsave.c
===================================================================
--- lib/script/evntsave.c       (revision 358)
+++ lib/script/evntsave.c       (working copy)
@@ -171,7 +171,7 @@
        char                            *pPos;
        STRING                          *pScriptID;
        SCRIPT_CODE                     *psCode;
-       SWORD                           release;
+       CONTEXT_RELEASE                 release;
        INTERP_VAL                      *psVal;
 
        size = 0;
@@ -187,7 +187,7 @@
        {
                // get the script code
                pScriptID = (STRING *)pPos;
-               psCode = resGetData("SCRIPT", pScriptID);
+               psCode = (SCRIPT_CODE*)resGetData("SCRIPT", pScriptID);
                pPos += strlen(pScriptID) + 1;
 
                // check the number of variables
@@ -200,7 +200,7 @@
                }
                pPos += sizeof(SWORD);
 
-               release = *pPos;
+               release = (CONTEXT_RELEASE)*pPos;
                pPos += sizeof(UBYTE);
 
                // create the context
@@ -218,7 +218,7 @@
                for(i=0; i < numVars; i+= 1)
                {
                        // get the variable type
-                       type = *((SWORD*)pPos);
+                       type = (INTERP_TYPE)*pPos;
                        pPos += sizeof(SWORD);
                        size += sizeof(SWORD);
 
@@ -289,7 +289,7 @@
 //not hashed   STRING                          *pScriptID;
        UDWORD                          hashedName;
        SCRIPT_CODE                     *psCode;
-       SWORD                           release;
+       CONTEXT_RELEASE                 release;
        INTERP_VAL                      *psVal;
 
        size = 0;
@@ -309,7 +309,7 @@
 //notHashed            pPos += strlen(pScriptID) + 1;
                hashedName = *((UDWORD*)pPos);
                pPos += sizeof(UDWORD);
-               psCode = resGetDataFromHash("SCRIPT", hashedName);
+               psCode = (SCRIPT_CODE*)resGetDataFromHash("SCRIPT", hashedName);
 
 
                // check the number of variables
@@ -322,7 +322,7 @@
                }
                pPos += sizeof(SWORD);
 
-               release = *pPos;
+               release = (CONTEXT_RELEASE)*pPos;
                pPos += sizeof(UBYTE);
 
                // create the context
@@ -340,7 +340,7 @@
                for(i=0; i < numVars; i+= 1)
                {
                        // get the variable type
-                       type = *((SWORD*)pPos);
+                       type = (INTERP_TYPE)*pPos;
                        pPos += sizeof(SWORD);
                        size += sizeof(SWORD);
 
@@ -584,7 +584,7 @@
 
 
        // Allocate the buffer to save to
-       pBuffer = MALLOC(totalSize);
+       pBuffer = (char*)MALLOC(totalSize);
        if (pBuffer == NULL)
        {
                debug( LOG_ERROR, "eventSaveState: out of memory" );
Index: lib/sequence/rpl_reader.c
===================================================================
--- lib/sequence/rpl_reader.c   (revision 358)
+++ lib/sequence/rpl_reader.c   (working copy)
@@ -25,7 +25,7 @@
                if (data_buffer != NULL) {
                        free(data_buffer);
                }
-               data_buffer = malloc(size);
+               data_buffer = (char*)malloc(size);
                data_buffer_size = size;
        }
 }
@@ -185,7 +185,7 @@
                unsigned int i;
                unsigned int max_video_size = 0;
 
-               rpl->chunks = malloc(sizeof(RPL_chunk_info_t)*rpl->nb_chunks);
+               rpl->chunks = 
(RPL_chunk_info_t*)malloc(sizeof(RPL_chunk_info_t)*rpl->nb_chunks);
                PHYSFS_seek(f, rpl->otcc);
 
                for (i = 0; i < rpl->nb_chunks; ++i) {
@@ -228,7 +228,7 @@
                total_audio_size += rpl->chunks[i].audio_size;
        }
 
-       audio_buffer = malloc(total_audio_size);
+       audio_buffer = (char*)malloc(total_audio_size);
        tmp = audio_buffer;
 
        for (i = 0; i < rpl->nb_chunks; ++i) {
@@ -289,7 +289,7 @@
                if (audio_frame_size > tmp_buffer_size) {
                        tmp_buffer_size = audio_frame_size << 1;
                        free(tmp_buffer);
-                       tmp_buffer = malloc(tmp_buffer_size);
+                       tmp_buffer = (unsigned char*)malloc(tmp_buffer_size);
                }
                PHYSFS_seek(rpl->f, 
rpl->chunks[cf].offset+rpl->chunks[cf].video_size);
                PHYSFS_read(rpl->f, tmp_buffer, audio_frame_size, 1);
Index: lib/sound/playlist.c
===================================================================
--- lib/sound/playlist.c        (revision 358)
+++ lib/sound/playlist.c        (working copy)
@@ -29,7 +29,7 @@
        unsigned int i;
 
        for (i = 0; i < NB_TRACKS; ++i) {
-               playlist[i].songs = malloc(2*sizeof(char*));
+               playlist[i].songs = (char**)malloc(2*sizeof(char*));
                playlist[i].list_size = 2;
                playlist[i].nb_songs = 0;
                memset( playlist[i].songs, 0, 
playlist[i].list_size*sizeof(char*) );
@@ -100,10 +100,10 @@
                        char* filepath;
 
                        if (path_to_music == NULL) {
-                               filepath = malloc(strlen(filename)+1);
+                               filepath = (char*)malloc(strlen(filename)+1);
                                sprintf(filepath, "%s", filename);
                        } else {
-                               filepath = malloc(  strlen(filename)
+                               filepath = (char*)malloc(  strlen(filename)
                                                  + strlen(path_to_music)+2);
                                sprintf(filepath, "%s/%s", path_to_music, 
filename);
                        }
@@ -111,7 +111,7 @@
 
                        if (CURRENT_TRACK.nb_songs == CURRENT_TRACK.list_size) {
                                CURRENT_TRACK.list_size <<= 1;
-                               CURRENT_TRACK.songs = 
realloc(CURRENT_TRACK.songs,
+                               CURRENT_TRACK.songs = 
(char**)realloc(CURRENT_TRACK.songs,
                                                              
CURRENT_TRACK.list_size*sizeof(char*));
                        }
 
Index: lib/sound/audio.c
===================================================================
--- lib/sound/audio.c   (revision 358)
+++ lib/sound/audio.c   (working copy)
@@ -371,7 +371,7 @@
        }
 
 //     debug(LOG_SOUND, "audio_queuetrack called1" );
-       HEAP_ALLOC( g_psSampleHeap, (void *) &psSample );
+       HEAP_ALLOC( g_psSampleHeap, (void **) &psSample );
        if ( psSample != NULL )
        {
                memset( psSample, 0, sizeof(AUDIO_SAMPLE) );            
//[check] -Q
@@ -650,7 +650,7 @@
 // 
=======================================================================================================================
 // 
=======================================================================================================================
 //
-void *audio_LoadTrackFromBuffer(char *pBuffer, UDWORD udwSize)
+TRACK *audio_LoadTrackFromBuffer(char *pBuffer, UDWORD udwSize)
 {
        // if audio not enabled return TRUE to carry on game without audio
        if ( g_bAudioEnabled == FALSE )
@@ -703,7 +703,7 @@
        }
 
        // get track pointer from resource
-       psTrack = resGetData( "WAV", szFileName );              //at this point 
we have 4 valid entries, and 8 invalid -Q
+       psTrack = (TRACK*)resGetData( "WAV", szFileName );              //at 
this point we have 4 valid entries, and 8 invalid -Q
        if ( psTrack == NULL )
        {
                debug( LOG_NEVER, "audio_SetTrackVals: track %s resource not 
found\n", szFileName );
@@ -755,7 +755,7 @@
        }
 
        // get track pointer from resource
-       psTrack = resGetDataFromHash( "WAV", hash );
+       psTrack = (TRACK*)resGetDataFromHash( "WAV", hash );
        if ( psTrack == NULL )
        {
                return FALSE;
@@ -859,7 +859,7 @@
                return FALSE;
        }
 
-       HEAP_ALLOC( g_psSampleHeap, (void *) &psSample );
+       HEAP_ALLOC( g_psSampleHeap, (void **) &psSample );
        if ( psSample == NULL )
        {
                return FALSE;
@@ -987,7 +987,7 @@
                return FALSE;
        }
 
-       HEAP_ALLOC( g_psSampleHeap, (void *) &psSample );
+       HEAP_ALLOC( g_psSampleHeap, (void **) &psSample );
        if ( psSample != NULL )
        {
                memset( psSample, 0, sizeof(AUDIO_SAMPLE) );
@@ -1058,7 +1058,7 @@
                return;
        }
 
-       HEAP_ALLOC( g_psSampleHeap, (void *) &psSample );
+       HEAP_ALLOC( g_psSampleHeap, (void **) &psSample );
        if ( psSample != NULL )
        {
                // setup sample
@@ -1259,7 +1259,7 @@
        }
        else
        {
-               psTrack = resGetData( "WAV", szFileName );
+               psTrack = (TRACK*)resGetData( "WAV", szFileName );
                if ( psTrack == NULL )
                {
                        return SAMPLE_NOT_FOUND;
@@ -1290,7 +1290,7 @@
        }
        else
        {
-               psTrack = resGetDataFromHash( "WAV", hash );
+               psTrack = (TRACK*)resGetDataFromHash( "WAV", hash );
                if ( psTrack == NULL )
                {
                        return SAMPLE_NOT_FOUND;
Index: lib/sound/track.c
===================================================================
--- lib/sound/track.c   (revision 358)
+++ lib/sound/track.c   (working copy)
@@ -234,7 +234,7 @@
 // 
=======================================================================================================================
 // 
=======================================================================================================================
 //
-void *sound_LoadTrackFromBuffer(char *pBuffer, UDWORD udwSize)
+TRACK *sound_LoadTrackFromBuffer(char *pBuffer, UDWORD udwSize)
 {
        //~~~~~~~~~~~~
        TRACK   *pTrack;
@@ -252,7 +252,7 @@
        else
        {
                pTrack->bMemBuffer = TRUE;
-               pTrack->pName = MALLOC( strlen(GetLastResourceFilename()) + 1 );
+               pTrack->pName = (STRING*)MALLOC( 
strlen(GetLastResourceFilename()) + 1 );
                if ( pTrack->pName == NULL )
                {
                        debug( LOG_ERROR, "sound_LoadTrackFromBuffer: couldn't 
allocate memory\n" );
@@ -296,7 +296,7 @@
        if ( pTrack != NULL )
        {
                pTrack->bMemBuffer = FALSE;
-               pTrack->pName = MALLOC( strlen((char*) szFileName) + 1 );
+               pTrack->pName = (STRING*)MALLOC( strlen((char*) szFileName) + 1 
);
                if ( pTrack->pName == NULL )
                {
                        debug( LOG_ERROR, "sound_LoadTrackFromFile: Out of 
memory" );
@@ -469,7 +469,7 @@
 // 
=======================================================================================================================
 // 
=======================================================================================================================
 //
-char *sound_GetTrackName( SDWORD iTrack )
+const char *sound_GetTrackName( SDWORD iTrack )
 {
        if ( iTrack == SAMPLE_NOT_FOUND ) return NULL;
        ASSERT( g_apTrack[iTrack] != NULL, "sound_GetTrackName: unallocated 
track" );
Index: lib/sound/audio.h
===================================================================
--- lib/sound/audio.h   (revision 358)
+++ lib/sound/audio.h   (working copy)
@@ -17,7 +17,7 @@
 extern BOOL            audio_Disabled( void );
 
 extern BOOL            audio_LoadTrackFromFile( char szFileName[] );
-extern void *  audio_LoadTrackFromBuffer(char *pBuffer, UDWORD udwSize);
+extern TRACK * audio_LoadTrackFromBuffer(char *pBuffer, UDWORD udwSize);
 extern BOOL            audio_SetTrackVals( char szFileName[], BOOL bLoop, int 
*piID,
                                        int iVol, int iPriority, int 
iAudibleRadius, int VagID );
 extern BOOL            audio_SetTrackValsHashName( UDWORD hash, BOOL bLoop, 
int iTrack, int iVol,
Index: lib/sound/cdaudio.c
===================================================================
--- lib/sound/cdaudio.c (revision 358)
+++ lib/sound/cdaudio.c (working copy)
@@ -231,8 +231,6 @@
   return sample >> (MAD_F_FRACBITS + 1 - 16);
 }
 
-#define MIN(x, y) (((x) < (y)) ? (x) : (y))
-
 static int mp3_read_buffer(char *buffer, const int size) {
        int samples = 0;
 
Index: lib/sound/track.h
===================================================================
--- lib/sound/track.h   (revision 358)
+++ lib/sound/track.h   (working copy)
@@ -99,7 +99,7 @@
 BOOL   sound_Shutdown(void);
 
 BOOL   sound_LoadTrackFromFile(char szFileName[]);
-void * sound_LoadTrackFromBuffer(char *pBuffer, UDWORD udwSize);
+TRACK *        sound_LoadTrackFromBuffer(char *pBuffer, UDWORD udwSize);
 BOOL   sound_SetTrackVals( TRACK *psTrack, BOOL bLoop, SDWORD iTrack,
                        SDWORD iVol, SDWORD iPriority, SDWORD iAudibleRadius,
                        SDWORD VagID );
@@ -117,7 +117,7 @@
 SDWORD sound_GetTrackPriority( SDWORD iTrack );
 SDWORD sound_GetTrackAudibleRadius( SDWORD iTrack );
 SDWORD sound_GetTrackVolume( SDWORD iTrack );
-char * sound_GetTrackName( SDWORD iTrack );
+const char *   sound_GetTrackName( SDWORD iTrack );
 UDWORD sound_GetTrackHashName( SDWORD iTrack );
 
 BOOL   sound_TrackLooped( SDWORD iTrack );
Index: lib/framework/configfile.h
===================================================================
--- lib/framework/configfile.h  (revision 358)
+++ lib/framework/configfile.h  (working copy)
@@ -9,3 +9,5 @@
 extern BOOL setWarzoneKeyNumeric       (const STRING *pName,DWORD val);
 extern BOOL getWarzoneKeyString(const STRING *pName, STRING *pString);
 extern BOOL setWarzoneKeyString(const STRING *pName, const STRING *pString);
+
+extern char RegFilePath[MAX_PATH];
Index: lib/framework/strres.c
===================================================================
--- lib/framework/strres.c      (revision 358)
+++ lib/framework/strres.c      (working copy)
@@ -48,7 +48,7 @@
        memset((*ppsBlock)->apStrings, 0, sizeof(STRING *) * size);
 
 #ifdef DEBUG
-       (*ppsBlock)->aUsage = MALLOC(sizeof(UDWORD) * size);
+       (*ppsBlock)->aUsage = (UDWORD*)MALLOC(sizeof(UDWORD) * size);
        memset((*ppsBlock)->aUsage, 0, sizeof(UDWORD) * size);
 #endif
 
Index: lib/framework/frame.c
===================================================================
--- lib/framework/frame.c       (revision 358)
+++ lib/framework/frame.c       (working copy)
@@ -512,7 +512,7 @@
 
        if (AllocateMem == TRUE) {
                // Allocate a buffer to store the data and a terminating zero
-               *ppFileData = MALLOC(filesize + 1);
+               *ppFileData = (char*)MALLOC(filesize + 1);
                if (*ppFileData == NULL) {
                        debug(LOG_ERROR, "loadFile2: Out of memory loading %s", 
pFileName);
                        assert(FALSE);
Index: lib/ivis_opengl/screen.c
===================================================================
--- lib/ivis_opengl/screen.c    (revision 358)
+++ lib/ivis_opengl/screen.c    (working copy)
@@ -234,7 +234,7 @@
        if (image->data != NULL) {
                free(image->data);
        }
-       image->data = malloc(width*height*channels);
+       image->data = (unsigned char*)malloc(width*height*channels);
 
        return FALSE;
 }
@@ -534,7 +534,7 @@
                        free(buffer);
                }
                buffer_size = row_stride * screen->h;
-               buffer = malloc(buffer_size);
+               buffer = (unsigned char*)malloc(buffer_size);
        }
        glReadPixels(0, 0, screen->w, screen->h, GL_RGB, GL_UNSIGNED_BYTE, 
buffer);
 
_______________________________________________
Warzone-dev mailing list
Warzone-dev@gna.org
https://mail.gna.org/listinfo/warzone-dev

Reply via email to