#pragma warn -pro\r
#pragma warn -use\r
\r
-//#define THREEBYTEGRSTARTS\r
+#define THREEBYTEGRSTARTS\r
//https://github.com/open-watcom/open-watcom-v2/issues/279#issuecomment-244587566 for _seg\r
//http://www.shikadi.net/moddingwiki/GameMaps_Format for info on the code\r
/*\r
int grhandle; // handle to EGAGRAPH\r
int maphandle; // handle to MAPTEMP / GAMEMAPS\r
int audiohandle; // handle to AUDIOT / AUDIO\r
-\r
-long c hunkcomplen,c hunkexplen;\r
-\r
+*/\r
+long chunkcomplen,chunkexplen;\r
+/*\r
SDMode oldsoundmode;\r
\r
\r
#ifdef THREEBYTEGRSTARTS\r
#define FILEPOSSIZE 3\r
//#define GRFILEPOS(c) (*(long far *)(((byte far *)grstarts)+(c)*3)&0xffffff)\r
-long GRFILEPOS(int c, global_game_variables_t *gvar)\r
+CASVT GRFILEPOS(int c, global_game_variables_t *gvar)\r
{\r
- long value;\r
+ CASVT value;\r
int offset;\r
\r
offset = c*3;\r
\r
- value = *(long far *)(((byte far *)gvar->ca.grstarts)+offset);\r
+ value = *(CASVT far *)(((byte far *)gvar->ca.grstarts)+offset);\r
\r
value &= 0x00ffffffl;\r
\r
};\r
#else\r
#define FILEPOSSIZE 4\r
-#define GRFILEPOS(c) (gvar->ca.grstarts[c])\r
+//#define GRFILEPOS(c) (gvar->ca.grstarts[c])\r
+CASVT GRFILEPOS(int c, global_game_variables_t *gvar)\r
+{\r
+ return gvar->ca.grstarts[c];\r
+}\r
#endif\r
\r
/*\r
\r
void CAL_GetGrChunkLength (int chunk,global_game_variables_t *gvar)\r
{\r
- lseek(gvar->ca.file.grhandle,GRFILEPOS(chunk),SEEK_SET);\r
+ lseek(gvar->ca.file.grhandle,GRFILEPOS(chunk,gvar),SEEK_SET);\r
read(gvar->ca.file.grhandle,&gvar->ca.chunkexplen,sizeof(gvar->ca.chunkexplen));\r
- gvar->ca.chunkcomplen = GRFILEPOS(chunk+1)-GRFILEPOS(chunk)-4;\r
+ gvar->ca.chunkcomplen = GRFILEPOS(chunk+1,gvar)-GRFILEPOS(chunk,gvar)-4;\r
}\r
\r
\r
//\r
// load the data offsets from ???head.ext\r
//\r
- MM_GetPtr (MEMPTR gvar->ca.grstarts,(NUMCHUNKS+1)*FILEPOSSIZE, gvar);\r
+ MM_GetPtr (MEMPTRCONV gvar->ca.grstarts,(NUMCHUNKS+1)*FILEPOSSIZE, gvar);\r
\r
strcpy(fname,GHEADNAME);\r
strcat(fname,EXTENSION);\r
// load the pic and sprite headers into the arrays in the data segment\r
//\r
#if NUMPICS>0\r
- MM_GetPtr(MEMPTR gvar->video.pictable,NUMPICS*sizeof(pictabletype),gvar);\r
+ MM_GetPtr(MEMPTRCONV gvar->video.pictable,NUMPICS*sizeof(pictabletype),gvar);\r
CAL_GetGrChunkLength(STRUCTPIC,gvar); // position file pointer\r
- MM_GetPtr(&compseg,gvar->ca.chunkcomplen, gvar);\r
+ printf("CAL_SetupGrFile:\n");\r
+ printf(" gvar->ca.chunkcomplen size is %lu\n", gvar->ca.chunkcomplen);\r
+ MM_GetPtr(&compseg,gvar->ca.chunkcomplen,gvar);\r
+ IN_Ack(gvar);\r
CA_FarRead (gvar->ca.file.grhandle,compseg,gvar->ca.chunkcomplen,gvar);\r
CAL_HuffExpand (compseg, (byte far *)gvar->video.pictable,NUMPICS*sizeof(pictabletype),gvar->ca.grhuffman);\r
MM_FreePtr(&compseg,gvar);\r
#endif\r
\r
#if NUMPICM>0\r
- MM_GetPtr(MEMPTR picmtable,NUMPICM*sizeof(pictabletype));\r
+ MM_GetPtr(MEMPTRCONV picmtable,NUMPICM*sizeof(pictabletype));\r
CAL_GetGrChunkLength(STRUCTPICM); // position file pointer\r
MM_GetPtr(&compseg,gvar->ca.chunkcomplen);\r
CA_FarRead (gvar->ca.file.grhandle,compseg,gvar->ca.chunkcomplen);\r
#endif\r
\r
#if NUMSPRITES>0\r
- MM_GetPtr(MEMPTR spritetable,NUMSPRITES*sizeof(spritetabletype));\r
+ MM_GetPtr(MEMPTRCONV spritetable,NUMSPRITES*sizeof(spritetabletype));\r
CAL_GetGrChunkLength(STRUCTSPRITE); // position file pointer\r
MM_GetPtr(&compseg,gvar->ca.chunkcomplen);\r
CA_FarRead (gvar->ca.file.grhandle,compseg,gvar->ca.chunkcomplen);\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
Quit (gvar, "Can't open maphead.mph");\r
length = filelength(handle);\r
- MM_GetPtr (MEMPTR gvar->ca.tinf,length,gvar);\r
+ MM_GetPtr (MEMPTRCONV gvar->ca.tinf,length,gvar);\r
CA_FarRead(handle, gvar->ca.tinf, length,gvar);\r
close(handle);\r
//#else\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
Quit (gvar, "Can't open AUDIOHED.16""!");\r
length = filelength(handle);\r
- MM_GetPtr (MEMPTR audiostarts,length);\r
+ MM_GetPtr (MEMPTRCONV audiostarts,length);\r
CA_FarRead(handle, (byte far *)audiostarts, length);\r
close(handle);\r
#else\r
\r
if (audiosegs[chunk])\r
{\r
- MM_SetPurge (MEMPTR audiosegs[chunk],0);\r
+ MM_SetPurge (MEMPTRCONV audiosegs[chunk],0);\r
return; // allready in memory\r
}\r
\r
\r
#ifndef AUDIOHEADERLINKED\r
\r
- MM_GetPtr (MEMPTR audiosegs[chunk],compressed);\r
+ MM_GetPtr (MEMPTRCONV audiosegs[chunk],compressed);\r
if (mmerror)\r
return;\r
\r
\r
expanded = *(long far *)source;\r
source += 4; // skip over length\r
- MM_GetPtr (MEMPTR audiosegs[chunk],expanded);\r
+ MM_GetPtr (MEMPTRCONV audiosegs[chunk],expanded);\r
if (mmerror)\r
goto done;\r
CAL_HuffExpand (source,audiosegs[chunk],expanded,audiohuffman);\r
\r
for (i=0;i<NUMSOUNDS;i++,start++)\r
if (audiosegs[start])\r
- MM_SetPurge (MEMPTR audiosegs[start],3); // make purgable\r
+ MM_SetPurge (MEMPTRCONV audiosegs[start],3); // make purgable\r
\r
cachein:\r
\r
// load the chunk into a buffer, either the miscbuffer if it fits, or allocate\r
// a larger buffer\r
//\r
- pos = GRFILEPOS(chunk);\r
+ pos = GRFILEPOS(chunk,gvar);\r
if (pos<0) // $FFFFFFFF start is a sparse tile\r
return;\r
\r
next = chunk +1;\r
- while (GRFILEPOS(next) == -1) // skip past any sparse tiles\r
+ while (GRFILEPOS(next,gvar) == -1) // skip past any sparse tiles\r
next++;\r
\r
- compressed = GRFILEPOS(next)-pos;\r
+ compressed = GRFILEPOS(next,gvar)-pos;\r
\r
lseek(gvar->ca.file.grhandle,pos,SEEK_SET);\r
\r
// load the chunk into a buffer, either the miscbuffer if it fits, or allocate\r
// a larger buffer\r
//\r
- pos = GRFILEPOS(chunk);\r
+ pos = GRFILEPOS(chunk,gvar);\r
if (pos<0) // $FFFFFFFF start is a sparse tile\r
return;\r
\r
while (GRFILEPOS(next) == -1) // skip past any sparse tiles\r
next++;\r
\r
- compressed = GRFILEPOS(next)-pos;\r
+ compressed = GRFILEPOS(next,gvar)-pos;\r
\r
lseek(gvar->ca.file.grhandle,pos,SEEK_SET);\r
\r
// if (pos<0) // $FFFFFFFF start is a sparse map\r
// printf("CA_CacheMap: Tried to load a non existent map!");\r
\r
-// MM_GetPtr(MEMPTR gvar->ca.camapheaderseg[mapnum],sizeof(maptype));\r
+// MM_GetPtr(MEMPTRCONV gvar->ca.camapheaderseg[mapnum],sizeof(maptype));\r
// lseek(maphandle,pos,SEEK_SET);\r
// CA_FarRead (maphandle,(memptr)mapheaderseg[mapnum],sizeof(maptype));\r
// }\r
// else\r
-// MM_SetPurge (MEMPTR mapheaderseg[mapnum], 0, &(gvar->mm));\r
+// MM_SetPurge (MEMPTRCONV mapheaderseg[mapnum], 0, &(gvar->mm));\r
\r
//\r
// load the planes in\r
if (!compressed)\r
continue; // the plane is not used in this game\r
\r
- dest = MEMPTR mapsegs[plane];\r
+ dest = MEMPTRCONV mapsegs[plane];\r
MM_GetPtr(dest,size);\r
\r
lseek(maphandle,pos,SEEK_SET);\r
if (dialog && updatecachebox)\r
updatecachebox ();\r
\r
- pos = GRFILEPOS(i);\r
+ pos = GRFILEPOS(i,gvar);\r
if (pos<0)\r
continue;\r
\r
while (GRFILEPOS(next) == -1) // skip past any sparse tiles\r
next++;\r
\r
- compressed = GRFILEPOS(next)-pos;\r
+ compressed = GRFILEPOS(next,gvar)-pos;\r
endpos = pos+compressed;\r
\r
if (compressed<=BUFFERSIZE)\r
if (next == NUMCHUNKS)\r
continue;\r
\r
- nextpos = GRFILEPOS(next);\r
- while (GRFILEPOS(++next) == -1) // skip past any sparse tiles\r
+ nextpos = GRFILEPOS(next,gvar);\r
+ while (GRFILEPOS(++next,gvar) == -1) // skip past any sparse tiles\r
;\r
- nextendpos = GRFILEPOS(next);\r
+ nextendpos = GRFILEPOS(next,gvar);\r
if (nextpos - endpos <= MAXEMPTYREAD\r
&& nextendpos-pos <= BUFFERSIZE)\r
endpos = nextendpos;\r