ref: c1414921e4a25ae93629a6430f4edf1f304607ee
parent: 30670c674ee6ae1f468e1ac29b66e0480a113ede
author: fabien sanglard <[email protected]>
date: Sat Dec 22 19:28:01 EST 2012
Created network module. Removed warnings. Changed draw system signatures.
--- a/Engine/src/cache.c
+++ b/Engine/src/cache.c
@@ -59,8 +59,15 @@
static int32_t cachesize = 0;
int32_t cachecount = 0;
uint8_t zerochar = 0;
-int32_t cachestart = 0, cacnum = 0, agecount = 0;
-typedef struct { int32_t *hand, leng; uint8_t *lock; } cactype;
+uint8_t* cachestart = NULL;
+int32_t cacnum = 0, agecount = 0;
+
+typedef struct {
+ uint8_t** hand;
+ int32_t leng;
+ uint8_t *lock; }
+cactype;
+
cactype cac[MAXCACHEOBJECTS];
int32_t lockrecip[200];
@@ -67,7 +74,7 @@
// TC game directory
char game_dir[512] = { '\0' };
-void initcache(int32_t dacachestart, int32_t dacachesize)
+void initcache(uint8_t* dacachestart, int32_t dacachesize)
{
int32_t i;
@@ -212,7 +219,7 @@
for(i=0;i<cacnum;i++)
{
printf("%d- ",i);
- printf("ptr: 0x%x, ",*cac[i].hand);
+ printf("ptr: 0x%x, ",(int8_t)*cac[i].hand);
printf("leng: %d, ",cac[i].leng);
printf("lock: %d\n",*cac[i].lock);
j += cac[i].leng;
--- a/Engine/src/cache.h
+++ b/Engine/src/cache.h
@@ -17,7 +17,7 @@
#ifndef _INCLUDE_CACHE1D_H_
#define _INCLUDE_CACHE1D_H_
-void initcache(int32_t dacachestart, int32_t dacachesize);
+void initcache(uint8_t* dacachestart, int32_t dacachesize);
void allocache (uint8_t* *newhandle, int32_t newbytes, uint8_t *newlockptr);
void suckcache (int32_t *suckptr);
void agecache(void);
--- a/Engine/src/display.c
+++ b/Engine/src/display.c
@@ -41,11 +41,11 @@
#include "display.h"
#include "fixedPoint_math.h"
#include "engine.h"
-//#include "engine_protos.h"
+#include "network.h"
#include "mmulti_unstable.h"
#include "mmulti_stable.h"
-
+#include "network.h"
#include "icon.h"
// NATIVE TIMER FUNCTION DECLARATION
@@ -64,211 +64,8 @@
-// NETWORK STUFF
-void Setup_UnstableNetworking();
-void Setup_StableNetworking();
-int nNetMode = 0;
-//TODO ( "[Fix this horrible networking mess. Function pointers not happy]" )
-// I do not like this one bit.
-// Figure out what was causing the problems with the function pointers.
-// This mess is a direct result of my lack of time.. bleh
-// This mess shouldn't even be in this file. /slap /slap
-void callcommit(void)
-{
-#ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_callcommit();
- break;
- case 1:
- stable_callcommit();
- break;
- }
-#endif
-}
-void initcrc(void)
-{
- #ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_initcrc();
- break;
- case 1:
- stable_initcrc();
- break;
- }
-#endif
-}
-int32_t getcrc(uint8_t *buffer, short bufleng)
-{
- #ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- return unstable_getcrc(buffer, bufleng);
- case 1:
- return stable_getcrc(buffer, bufleng);
- }
-#endif
- return 0;
-}
-void initmultiplayers(uint8_t damultioption, uint8_t dacomrateoption, uint8_t dapriority)
-{
-#ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_initmultiplayers(damultioption, dacomrateoption, dapriority);
- break;
- case 1:
- stable_initmultiplayers(damultioption, dacomrateoption, dapriority);
- break;
- }
-#endif
-}
-void sendpacket(int32_t other, uint8_t *bufptr, int32_t messleng)
-{
-#ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_sendpacket(other, bufptr, messleng);
- break;
- case 1:
- stable_sendpacket(other, bufptr, messleng);
- break;
- }
-#endif
-}
-void setpackettimeout(int32_t datimeoutcount, int32_t daresendagaincount)
-{
-#ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_setpackettimeout(datimeoutcount, daresendagaincount);
- break;
- case 1:
- stable_setpackettimeout(datimeoutcount, daresendagaincount);
- break;
- }
-#endif
-}
-void uninitmultiplayers(void)
-{
- #ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_uninitmultiplayers();
- break;
- case 1:
- stable_uninitmultiplayers();
- break;
- }
-#endif
-}
-void sendlogon(void)
-{
- #ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_sendlogon();
- break;
- case 1:
- unstable_sendlogon();
- break;
- }
-#endif
-}
-void sendlogoff(void)
-{
- #ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_sendlogoff();
- break;
- case 1:
- stable_sendlogoff();
- break;
- }
-#endif
-}
-int getoutputcirclesize(void)
-{
- #ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- return unstable_getoutputcirclesize();
- case 1:
- return stable_getoutputcirclesize();
- }
-#endif
- return 0;
-}
-void setsocket(short newsocket)
-{
- #ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_setsocket(newsocket);
- break;
- case 1:
- stable_setsocket(newsocket);
- break;
- }
-#endif
-}
-short getpacket(short *other, uint8_t *bufptr)
-{
-#ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- return unstable_getpacket(other, bufptr); // default
- case 1:
- return stable_getpacket(other, bufptr);
- }
-#endif
- return 0;
-}
-void flushpackets(void)
-{
- #ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_flushpackets();
- break;
- case 1:
- stable_flushpackets();
- break;
- }
-#endif
-}
-void genericmultifunction(int32_t other, char *bufptr, int32_t messleng, int32_t command)
-{
- #ifndef USER_DUMMY_NETWORK
- switch(nNetMode)
- {
- case 0:
- unstable_genericmultifunction(other, bufptr, messleng, command);
- break;
- case 1:
- stable_genericmultifunction(other, bufptr, messleng, command);
- break;
- }
-#endif
-}
-
#if ((defined PLATFORM_WIN32))
#include <windows.h>
#endif
@@ -931,16 +728,7 @@
-//#include "mmulti_stable.h"
-void Setup_UnstableNetworking()
-{
- nNetMode = 0;
-}
-void Setup_StableNetworking()
-{
- nNetMode = 1;
-}
void _platform_init(int argc, char **argv, const char *title, const char *iconName)
--- a/Engine/src/draw.c
+++ b/Engine/src/draw.c
@@ -37,7 +37,7 @@
/* --------------- WALLS RENDERING METHOD (USED TO BE HIGHLY OPTIMIZED ASSEMBLY) ----------------------------*/
extern int32_t asm1;
extern int32_t asm2;
-extern int32_t asm3;
+extern uint8_t *asm3;
extern int32_t asm4;
static uint8_t machxbits_al;
@@ -714,7 +714,7 @@
}
static uint8_t * textureData;
-static int32_t mmach_asm3;
+static uint8_t * mmach_asm3;
static int32_t mmach_asm1;
static int32_t mmach_asm2;
@@ -744,7 +744,7 @@
//Skip transparent color.
if ((colorIndex&0xff) != 0xff){
if (pixelsAllowed-- > 0)
- *dest = (((uint8_t *)mmach_asm3)[colorIndex]);
+ *dest = mmach_asm3[colorIndex];
}
i2 += mmach_asm1;
i5 += mmach_asm2;
@@ -764,12 +764,12 @@
} /* msethlineshift */
-static int32_t tmach_eax;
-static int32_t tmach_asm3;
+static uint8_t * tmach_eax;
+static uint8_t * tmach_asm3;
static int32_t tmach_asm1;
static int32_t tmach_asm2;
-void thline(int32_t i1, int32_t i2, int32_t i3, int32_t i4, int32_t i5, int32_t i6)
+void thline(uint8_t * i1, int32_t i2, int32_t i3, int32_t i4, int32_t i5, uint8_t * i6)
{
tmach_eax = i1;
tmach_asm3 = asm3;
@@ -780,7 +780,7 @@
static uint8_t tshift_al = 26;
static uint8_t tshift_bl = 6;
-void thlineskipmodify(int32_t i1, uint32_t i2, uint32_t i3, int32_t i4, int32_t i5, int32_t i6)
+void thlineskipmodify(int32_t i1, uint32_t i2, uint32_t i3, int32_t i4, int32_t i5, uint8_t * i6)
{
uint32_t ebx;
int counter = (i3>>16);
@@ -788,17 +788,17 @@
{
ebx = i2 >> tshift_al;
ebx = shld (ebx, (uint32_t)i5, tshift_bl);
- i1 = ((uint8_t *)tmach_eax)[ebx];
+ i1 = tmach_eax[ebx];
if ((i1&0xff) != 0xff)
{
- uint16_t val = (((uint8_t *)tmach_asm3)[i1]);
- val |= (*((uint8_t *)i6)<<8);
+ uint16_t val = tmach_asm3[i1];
+ val |= (*i6)<<8;
if (transrev)
val = ((val>>8)|(val<<8));
if (pixelsAllowed-- > 0)
- *((uint8_t *)i6) = transluc[val];
+ *i6 = transluc[val];
}
i2 += tmach_asm1;
@@ -852,7 +852,8 @@
{
bitwisef2i c;
uint32_t ecx,eax,ebx,edx,esi,edi;
- float a = (float) asm3 + asm2_f;
+#pragma This is so bad to cast asm3 to int then float :( !!!
+ float a = (float)(int32_t) asm3 + asm2_f;
i1 -= slopemach_ecx;
esi = i5 + low32((__int64)globalx3 * (__int64)(i2<<3));
edi = i6 + low32((__int64)globaly3 * (__int64)(i2<<3));
--- a/Engine/src/draw.h
+++ b/Engine/src/draw.h
@@ -26,7 +26,8 @@
extern uint8_t *globalpalwritten;
extern int16_t globalshiftval;
-extern int32_t vplce[4], vince[4], bufplce[4];
+extern int32_t vplce[4], vince[4];
+extern int32_t bufplce[4];
extern uint8_t* palookupoffse[4];
void sethlinesizes(int32_t,int32_t,uint8_t *);
@@ -61,8 +62,8 @@
void mhline(uint8_t *,int32_t,int32_t,int32_t,int32_t,uint8_t*);
void mhlineskipmodify(uint32_t,int32_t,int32_t,uint8_t*);
void msethlineshift(int32_t,int32_t);
-void thline(int32_t,int32_t,int32_t,int32_t,int32_t,int32_t);
-void thlineskipmodify(int32_t,uint32_t,uint32_t,int32_t,int32_t,int32_t);
+void thline(uint8_t*,int32_t,int32_t,int32_t,int32_t,uint8_t *);
+void thlineskipmodify(int32_t,uint32_t,uint32_t,int32_t,int32_t,uint8_t *);
void tsethlineshift(int32_t,int32_t);
void setupslopevlin(int32_t,int32_t,int32_t);
void slopevlin(int32_t,uint32_t,int32_t,int32_t,int32_t,int32_t);
--- a/Engine/src/engine.c
+++ b/Engine/src/engine.c
@@ -205,7 +205,8 @@
int32_t asm1, asm2, asm3, asm4;
-int32_t vplce[4], vince[4], bufplce[4];
+int32_t vplce[4], vince[4];
+int32_t bufplce[4];
uint8_t* palookupoffse[4];
@@ -1369,7 +1370,8 @@
if (u4 > y1ve[3])
vplce[3] = prevlineasm1(vince[3],palookupoffse[3],u4-y1ve[3]-1,vplce[3],bufplce[3],ylookup[y1ve[3]]+x+frameoffset+3);
- if (d4 >= u4) vlineasm4(d4-u4+1,ylookup[u4]+x+frameoffset);
+ if (d4 >= u4)
+ vlineasm4(d4-u4+1,ylookup[u4]+x+frameoffset);
i = x+frameoffset+ylookup[d4+1];
@@ -3749,7 +3751,8 @@
int32_t cy1, int32_t cx2, int32_t cy2)
{
int32_t cosang, sinang, v, nextv, dax1, dax2, oy, bx, by, ny1, ny2;
- int32_t i, x, y, x1, y1, x2, y2, gx1, gy1, bufplc;
+ int32_t i, x, y, x1, y1, x2, y2, gx1, gy1;
+ uint8_t* bufplc;
uint8_t* palookupoffs;
uint8_t* p;
int32_t xoff, yoff, npoints, yplc, yinc, lx, rx, xx, xend;
@@ -3966,25 +3969,37 @@
{
if ((bad != 0) || (u4 >= d4))
{
- if (!(bad&1)) prevlineasm1(vince[0],palookupoffse[0],y2ve[0]-y1ve[0],vplce[0],bufplce[0],ylookup[y1ve[0]]+p+0);
- if (!(bad&2)) prevlineasm1(vince[1],palookupoffse[1],y2ve[1]-y1ve[1],vplce[1],bufplce[1],ylookup[y1ve[1]]+p+1);
- if (!(bad&4)) prevlineasm1(vince[2],palookupoffse[2],y2ve[2]-y1ve[2],vplce[2],bufplce[2],ylookup[y1ve[2]]+p+2);
- if (!(bad&8)) prevlineasm1(vince[3],palookupoffse[3],y2ve[3]-y1ve[3],vplce[3],bufplce[3],ylookup[y1ve[3]]+p+3);
+ if (!(bad&1))
+ prevlineasm1(vince[0],palookupoffse[0],y2ve[0]-y1ve[0],vplce[0],bufplce[0],ylookup[y1ve[0]]+p+0);
+ if (!(bad&2))
+ prevlineasm1(vince[1],palookupoffse[1],y2ve[1]-y1ve[1],vplce[1],bufplce[1],ylookup[y1ve[1]]+p+1);
+ if (!(bad&4))
+ prevlineasm1(vince[2],palookupoffse[2],y2ve[2]-y1ve[2],vplce[2],bufplce[2],ylookup[y1ve[2]]+p+2);
+ if (!(bad&8))
+ prevlineasm1(vince[3],palookupoffse[3],y2ve[3]-y1ve[3],vplce[3],bufplce[3],ylookup[y1ve[3]]+p+3);
continue;
}
- if (u4 > y1ve[0]) vplce[0] = prevlineasm1(vince[0],palookupoffse[0],u4-y1ve[0]-1,vplce[0],bufplce[0],ylookup[y1ve[0]]+p+0);
- if (u4 > y1ve[1]) vplce[1] = prevlineasm1(vince[1],palookupoffse[1],u4-y1ve[1]-1,vplce[1],bufplce[1],ylookup[y1ve[1]]+p+1);
- if (u4 > y1ve[2]) vplce[2] = prevlineasm1(vince[2],palookupoffse[2],u4-y1ve[2]-1,vplce[2],bufplce[2],ylookup[y1ve[2]]+p+2);
- if (u4 > y1ve[3]) vplce[3] = prevlineasm1(vince[3],palookupoffse[3],u4-y1ve[3]-1,vplce[3],bufplce[3],ylookup[y1ve[3]]+p+3);
+ if (u4 > y1ve[0])
+ vplce[0] = prevlineasm1(vince[0],palookupoffse[0],u4-y1ve[0]-1,vplce[0],bufplce[0],ylookup[y1ve[0]]+p+0);
+ if (u4 > y1ve[1])
+ vplce[1] = prevlineasm1(vince[1],palookupoffse[1],u4-y1ve[1]-1,vplce[1],bufplce[1],ylookup[y1ve[1]]+p+1);
+ if (u4 > y1ve[2])
+ vplce[2] = prevlineasm1(vince[2],palookupoffse[2],u4-y1ve[2]-1,vplce[2],bufplce[2],ylookup[y1ve[2]]+p+2);
+ if (u4 > y1ve[3])
+ vplce[3] = prevlineasm1(vince[3],palookupoffse[3],u4-y1ve[3]-1,vplce[3],bufplce[3],ylookup[y1ve[3]]+p+3);
if (d4 >= u4) vlineasm4(d4-u4+1,ylookup[u4]+p);
i = p+ylookup[d4+1];
- if (y2ve[0] > d4) prevlineasm1(vince[0],palookupoffse[0],y2ve[0]-d4-1,vplce[0],bufplce[0],i+0);
- if (y2ve[1] > d4) prevlineasm1(vince[1],palookupoffse[1],y2ve[1]-d4-1,vplce[1],bufplce[1],i+1);
- if (y2ve[2] > d4) prevlineasm1(vince[2],palookupoffse[2],y2ve[2]-d4-1,vplce[2],bufplce[2],i+2);
- if (y2ve[3] > d4) prevlineasm1(vince[3],palookupoffse[3],y2ve[3]-d4-1,vplce[3],bufplce[3],i+3);
+ if (y2ve[0] > d4)
+ prevlineasm1(vince[0],palookupoffse[0],y2ve[0]-d4-1,vplce[0],bufplce[0],i+0);
+ if (y2ve[1] > d4)
+ prevlineasm1(vince[1],palookupoffse[1],y2ve[1]-d4-1,vplce[1],bufplce[1],i+1);
+ if (y2ve[2] > d4)
+ prevlineasm1(vince[2],palookupoffse[2],y2ve[2]-d4-1,vplce[2],bufplce[2],i+2);
+ if (y2ve[3] > d4)
+ prevlineasm1(vince[3],palookupoffse[3],y2ve[3]-d4-1,vplce[3],bufplce[3],i+3);
}
else
{
@@ -8942,7 +8957,8 @@
/* MUST USE RESTOREFORDRAWROOMS AFTER DRAWING */
int32_t setviewcnt = 0;
int32_t bakvidoption[4];
-int32_t bakframeplace[4], bakxsiz[4], bakysiz[4];
+uint8_t* bakframeplace[4];
+int32_t bakxsiz[4], bakysiz[4];
int32_t bakwindowx1[4], bakwindowy1[4];
int32_t bakwindowx2[4], bakwindowy2[4];
--- a/Engine/src/engine.h
+++ b/Engine/src/engine.h
@@ -137,12 +137,14 @@
#include "display.h"
#include "fixedPoint_math.h"
#include "tiles.h"
+#include "network.h"
//Exported for tile module
extern int32_t setviewcnt;
extern int32_t bakvidoption[4];
- extern int32_t bakframeplace[4], bakxsiz[4], bakysiz[4];
+ extern uint8_t* bakframeplace[4];
+ extern int32_t bakxsiz[4], bakysiz[4];
extern int32_t bakwindowx1[4], bakwindowy1[4];
extern int32_t bakwindowx2[4], bakwindowy2[4];
extern uint8_t picsiz[MAXTILES], tilefilenum[MAXTILES];
--- a/Engine/src/filesystem.c
+++ b/Engine/src/filesystem.c
@@ -404,6 +404,110 @@
static uint8_t lzwbuflock[5];
static short *lzwbuf2, *lzwbuf3;
+
+
+int32_t compress(uint8_t *lzwinbuf, int32_t uncompleng, uint8_t *lzwoutbuf)
+{
+ int32_t i, addr, newaddr, addrcnt, zx, *longptr;
+ int32_t bytecnt1, bitcnt, numbits, oneupnumbits;
+ short *shortptr;
+
+ for(i=255;i>=0;i--) { lzwbuf1[i] = (uint8_t ) i; lzwbuf3[i] = (short) ((i+1)&255); }
+ clearbuf((void *) FP_OFF(lzwbuf2),256>>1,0xffffffff);
+ clearbuf((void *) FP_OFF(lzwoutbuf),((uncompleng+15)+3)>>2,0L);
+
+ addrcnt = 256; bytecnt1 = 0; bitcnt = (4<<3);
+ numbits = 8; oneupnumbits = (1<<8);
+ do
+ {
+ addr = lzwinbuf[bytecnt1];
+ do
+ {
+ bytecnt1++;
+ if (bytecnt1 == uncompleng) break;
+ if (lzwbuf2[addr] < 0) {lzwbuf2[addr] = (short) addrcnt; break;}
+ newaddr = lzwbuf2[addr];
+ while (lzwbuf1[newaddr] != lzwinbuf[bytecnt1])
+ {
+ zx = lzwbuf3[newaddr];
+ if (zx < 0) {lzwbuf3[newaddr] = (short) addrcnt; break;}
+ newaddr = zx;
+ }
+ if (lzwbuf3[newaddr] == addrcnt) break;
+ addr = newaddr;
+ } while (addr >= 0);
+ lzwbuf1[addrcnt] = lzwinbuf[bytecnt1];
+ lzwbuf2[addrcnt] = -1;
+ lzwbuf3[addrcnt] = -1;
+
+ longptr = (int32_t *)&lzwoutbuf[bitcnt>>3];
+ longptr[0] |= (addr<<(bitcnt&7));
+ bitcnt += numbits;
+ if ((addr&((oneupnumbits>>1)-1)) > ((addrcnt-1)&((oneupnumbits>>1)-1)))
+ bitcnt--;
+
+ addrcnt++;
+ if (addrcnt > oneupnumbits) { numbits++; oneupnumbits <<= 1; }
+ } while ((bytecnt1 < uncompleng) && (bitcnt < (uncompleng<<3)));
+
+ longptr = (int32_t *)&lzwoutbuf[bitcnt>>3];
+ longptr[0] |= (addr<<(bitcnt&7));
+ bitcnt += numbits;
+ if ((addr&((oneupnumbits>>1)-1)) > ((addrcnt-1)&((oneupnumbits>>1)-1)))
+ bitcnt--;
+
+ shortptr = (short *)lzwoutbuf;
+ shortptr[0] = (short)uncompleng;
+ if (((bitcnt+7)>>3) < uncompleng)
+ {
+ shortptr[1] = (short)addrcnt;
+ return((bitcnt+7)>>3);
+ }
+ shortptr[1] = (short)0;
+ for(i=0;i<uncompleng;i++) lzwoutbuf[i+4] = lzwinbuf[i];
+ return(uncompleng+4);
+}
+
+int32_t uncompress(uint8_t *lzwinbuf, int32_t compleng, uint8_t *lzwoutbuf)
+{
+ int32_t strtot, currstr, numbits, oneupnumbits;
+ int32_t i, dat, leng, bitcnt, outbytecnt, *longptr;
+ short *shortptr;
+
+ shortptr = (short *)lzwinbuf;
+ strtot = (int32_t )shortptr[1];
+ if (strtot == 0)
+ {
+ copybuf((void *)(FP_OFF(lzwinbuf)+4),(void *)(FP_OFF(lzwoutbuf)),((compleng-4)+3)>>2);
+ return((int32_t )shortptr[0]); /* uncompleng */
+ }
+ for(i=255;i>=0;i--) { lzwbuf2[i] = (short) i; lzwbuf3[i] = (short) i; }
+ currstr = 256; bitcnt = (4<<3); outbytecnt = 0;
+ numbits = 8; oneupnumbits = (1<<8);
+ do
+ {
+ longptr = (int32_t *)&lzwinbuf[bitcnt>>3];
+ dat = ((longptr[0]>>(bitcnt&7)) & (oneupnumbits-1));
+ bitcnt += numbits;
+ if ((dat&((oneupnumbits>>1)-1)) > ((currstr-1)&((oneupnumbits>>1)-1)))
+ { dat &= ((oneupnumbits>>1)-1); bitcnt--; }
+
+ lzwbuf3[currstr] = (short) dat;
+
+ for(leng=0;dat>=256;leng++,dat=lzwbuf3[dat])
+ lzwbuf1[leng] = (uint8_t ) lzwbuf2[dat];
+
+ lzwoutbuf[outbytecnt++] = (uint8_t ) dat;
+ for(i=leng-1;i>=0;i--) lzwoutbuf[outbytecnt++] = lzwbuf1[i];
+
+ lzwbuf2[currstr-1] = (short) dat; lzwbuf2[currstr] = (short) dat;
+ currstr++;
+ if (currstr > oneupnumbits) { numbits++; oneupnumbits <<= 1; }
+ } while (currstr < strtot);
+ return((int32_t )shortptr[0]); /* uncompleng */
+}
+
+
void kdfread(void *buffer, size_t dasizeof, size_t count, int32_t fil)
{
size_t i, j;
@@ -413,8 +517,8 @@
lzwbuflock[0] = lzwbuflock[1] = lzwbuflock[2] = lzwbuflock[3] = lzwbuflock[4] = 200;
if (lzwbuf1 == NULL) allocache(&lzwbuf1,LZWSIZE+(LZWSIZE>>4),&lzwbuflock[0]);
- if (lzwbuf2 == NULL) allocache(&lzwbuf2,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[1]);
- if (lzwbuf3 == NULL) allocache(&lzwbuf3,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[2]);
+ if (lzwbuf2 == NULL) allocache((uint8_t**)&lzwbuf2,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[1]);
+ if (lzwbuf3 == NULL) allocache((uint8_t**)&lzwbuf3,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[2]);
if (lzwbuf4 == NULL) allocache(&lzwbuf4,LZWSIZE,&lzwbuflock[3]);
if (lzwbuf5 == NULL) allocache(&lzwbuf5,LZWSIZE+(LZWSIZE>>4),&lzwbuflock[4]);
@@ -450,11 +554,11 @@
uint8_t *ptr;
lzwbuflock[0] = lzwbuflock[1] = lzwbuflock[2] = lzwbuflock[3] = lzwbuflock[4] = 200;
- if (lzwbuf1 == NULL) allocache((int32_t *)&lzwbuf1,LZWSIZE+(LZWSIZE>>4),&lzwbuflock[0]);
- if (lzwbuf2 == NULL) allocache((int32_t *)&lzwbuf2,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[1]);
- if (lzwbuf3 == NULL) allocache((int32_t *)&lzwbuf3,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[2]);
- if (lzwbuf4 == NULL) allocache((int32_t *)&lzwbuf4,LZWSIZE,&lzwbuflock[3]);
- if (lzwbuf5 == NULL) allocache((int32_t *)&lzwbuf5,LZWSIZE+(LZWSIZE>>4),&lzwbuflock[4]);
+ if (lzwbuf1 == NULL) allocache(&lzwbuf1,LZWSIZE+(LZWSIZE>>4),&lzwbuflock[0]);
+ if (lzwbuf2 == NULL) allocache((uint8_t**)&lzwbuf2,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[1]);
+ if (lzwbuf3 == NULL) allocache((uint8_t**)&lzwbuf3,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[2]);
+ if (lzwbuf4 == NULL) allocache(&lzwbuf4,LZWSIZE,&lzwbuflock[3]);
+ if (lzwbuf5 == NULL) allocache(&lzwbuf5,LZWSIZE+(LZWSIZE>>4),&lzwbuflock[4]);
if (dasizeof > LZWSIZE) {
count *= dasizeof;
@@ -494,8 +598,8 @@
lzwbuflock[0] = lzwbuflock[1] = lzwbuflock[2] = lzwbuflock[3] = lzwbuflock[4] = 200;
if (lzwbuf1 == NULL) allocache(&lzwbuf1,LZWSIZE+(LZWSIZE>>4),&lzwbuflock[0]);
- if (lzwbuf2 == NULL) allocache(&lzwbuf2,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[1]);
- if (lzwbuf3 == NULL) allocache(&lzwbuf3,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[2]);
+ if (lzwbuf2 == NULL) allocache((uint8_t**)&lzwbuf2,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[1]);
+ if (lzwbuf3 == NULL) allocache((uint8_t**)&lzwbuf3,(LZWSIZE+(LZWSIZE>>4))*2,&lzwbuflock[2]);
if (lzwbuf4 == NULL) allocache(&lzwbuf4,LZWSIZE,&lzwbuflock[3]);
if (lzwbuf5 == NULL) allocache(&lzwbuf5,LZWSIZE+(LZWSIZE>>4),&lzwbuflock[4]);
@@ -530,106 +634,7 @@
lzwbuflock[0] = lzwbuflock[1] = lzwbuflock[2] = lzwbuflock[3] = lzwbuflock[4] = 1;
}
-int32_t compress(uint8_t *lzwinbuf, int32_t uncompleng, uint8_t *lzwoutbuf)
-{
- int32_t i, addr, newaddr, addrcnt, zx, *longptr;
- int32_t bytecnt1, bitcnt, numbits, oneupnumbits;
- short *shortptr;
-
- for(i=255;i>=0;i--) { lzwbuf1[i] = (uint8_t ) i; lzwbuf3[i] = (short) ((i+1)&255); }
- clearbuf((void *) FP_OFF(lzwbuf2),256>>1,0xffffffff);
- clearbuf((void *) FP_OFF(lzwoutbuf),((uncompleng+15)+3)>>2,0L);
-
- addrcnt = 256; bytecnt1 = 0; bitcnt = (4<<3);
- numbits = 8; oneupnumbits = (1<<8);
- do
- {
- addr = lzwinbuf[bytecnt1];
- do
- {
- bytecnt1++;
- if (bytecnt1 == uncompleng) break;
- if (lzwbuf2[addr] < 0) {lzwbuf2[addr] = (short) addrcnt; break;}
- newaddr = lzwbuf2[addr];
- while (lzwbuf1[newaddr] != lzwinbuf[bytecnt1])
- {
- zx = lzwbuf3[newaddr];
- if (zx < 0) {lzwbuf3[newaddr] = (short) addrcnt; break;}
- newaddr = zx;
- }
- if (lzwbuf3[newaddr] == addrcnt) break;
- addr = newaddr;
- } while (addr >= 0);
- lzwbuf1[addrcnt] = lzwinbuf[bytecnt1];
- lzwbuf2[addrcnt] = -1;
- lzwbuf3[addrcnt] = -1;
-
- longptr = (int32_t *)&lzwoutbuf[bitcnt>>3];
- longptr[0] |= (addr<<(bitcnt&7));
- bitcnt += numbits;
- if ((addr&((oneupnumbits>>1)-1)) > ((addrcnt-1)&((oneupnumbits>>1)-1)))
- bitcnt--;
-
- addrcnt++;
- if (addrcnt > oneupnumbits) { numbits++; oneupnumbits <<= 1; }
- } while ((bytecnt1 < uncompleng) && (bitcnt < (uncompleng<<3)));
-
- longptr = (int32_t *)&lzwoutbuf[bitcnt>>3];
- longptr[0] |= (addr<<(bitcnt&7));
- bitcnt += numbits;
- if ((addr&((oneupnumbits>>1)-1)) > ((addrcnt-1)&((oneupnumbits>>1)-1)))
- bitcnt--;
-
- shortptr = (short *)lzwoutbuf;
- shortptr[0] = (short)uncompleng;
- if (((bitcnt+7)>>3) < uncompleng)
- {
- shortptr[1] = (short)addrcnt;
- return((bitcnt+7)>>3);
- }
- shortptr[1] = (short)0;
- for(i=0;i<uncompleng;i++) lzwoutbuf[i+4] = lzwinbuf[i];
- return(uncompleng+4);
-}
-int32_t uncompress(uint8_t *lzwinbuf, int32_t compleng, uint8_t *lzwoutbuf)
-{
- int32_t strtot, currstr, numbits, oneupnumbits;
- int32_t i, dat, leng, bitcnt, outbytecnt, *longptr;
- short *shortptr;
-
- shortptr = (short *)lzwinbuf;
- strtot = (int32_t )shortptr[1];
- if (strtot == 0)
- {
- copybuf((void *)(FP_OFF(lzwinbuf)+4),(void *)(FP_OFF(lzwoutbuf)),((compleng-4)+3)>>2);
- return((int32_t )shortptr[0]); /* uncompleng */
- }
- for(i=255;i>=0;i--) { lzwbuf2[i] = (short) i; lzwbuf3[i] = (short) i; }
- currstr = 256; bitcnt = (4<<3); outbytecnt = 0;
- numbits = 8; oneupnumbits = (1<<8);
- do
- {
- longptr = (int32_t *)&lzwinbuf[bitcnt>>3];
- dat = ((longptr[0]>>(bitcnt&7)) & (oneupnumbits-1));
- bitcnt += numbits;
- if ((dat&((oneupnumbits>>1)-1)) > ((currstr-1)&((oneupnumbits>>1)-1)))
- { dat &= ((oneupnumbits>>1)-1); bitcnt--; }
-
- lzwbuf3[currstr] = (short) dat;
-
- for(leng=0;dat>=256;leng++,dat=lzwbuf3[dat])
- lzwbuf1[leng] = (uint8_t ) lzwbuf2[dat];
-
- lzwoutbuf[outbytecnt++] = (uint8_t ) dat;
- for(i=leng-1;i>=0;i--) lzwoutbuf[outbytecnt++] = lzwbuf1[i];
-
- lzwbuf2[currstr-1] = (short) dat; lzwbuf2[currstr] = (short) dat;
- currstr++;
- if (currstr > oneupnumbits) { numbits++; oneupnumbits <<= 1; }
- } while (currstr < strtot);
- return((int32_t )shortptr[0]); /* uncompleng */
-}
int SafeFileExists ( const char * _filename );
int32_t TCkopen4load(const char *filename, int readfromGRP)
--- /dev/null
+++ b/Engine/src/network.c
@@ -1,0 +1,222 @@
+//
+// network.c
+// Duke3D
+//
+// Created by fabien sanglard on 12-12-22.
+// Copyright (c) 2012 fabien sanglard. All rights reserved.
+//
+
+#include "network.h"
+
+int nNetMode = 0;
+
+//#include "mmulti_stable.h"
+void Setup_UnstableNetworking()
+{
+ nNetMode = 0;
+}
+
+void Setup_StableNetworking()
+{
+ nNetMode = 1;
+}
+
+
+//TODO ( "[Fix this horrible networking mess. Function pointers not happy]" )
+// I do not like this one bit.
+// Figure out what was causing the problems with the function pointers.
+// This mess is a direct result of my lack of time.. bleh
+// This mess shouldn't even be in this file. /slap /slap
+void callcommit(void)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_callcommit();
+ break;
+ case 1:
+ stable_callcommit();
+ break;
+ }
+#endif
+}
+void initcrc(void)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_initcrc();
+ break;
+ case 1:
+ stable_initcrc();
+ break;
+ }
+#endif
+}
+int32_t getcrc(uint8_t *buffer, short bufleng)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ return unstable_getcrc(buffer, bufleng);
+ case 1:
+ return stable_getcrc(buffer, bufleng);
+ }
+#endif
+ return 0;
+}
+void initmultiplayers(uint8_t damultioption, uint8_t dacomrateoption, uint8_t dapriority)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_initmultiplayers(damultioption, dacomrateoption, dapriority);
+ break;
+ case 1:
+ stable_initmultiplayers(damultioption, dacomrateoption, dapriority);
+ break;
+ }
+#endif
+}
+void sendpacket(int32_t other, uint8_t *bufptr, int32_t messleng)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_sendpacket(other, bufptr, messleng);
+ break;
+ case 1:
+ stable_sendpacket(other, bufptr, messleng);
+ break;
+ }
+#endif
+}
+void setpackettimeout(int32_t datimeoutcount, int32_t daresendagaincount)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_setpackettimeout(datimeoutcount, daresendagaincount);
+ break;
+ case 1:
+ stable_setpackettimeout(datimeoutcount, daresendagaincount);
+ break;
+ }
+#endif
+}
+void uninitmultiplayers(void)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_uninitmultiplayers();
+ break;
+ case 1:
+ stable_uninitmultiplayers();
+ break;
+ }
+#endif
+}
+void sendlogon(void)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_sendlogon();
+ break;
+ case 1:
+ unstable_sendlogon();
+ break;
+ }
+#endif
+}
+void sendlogoff(void)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_sendlogoff();
+ break;
+ case 1:
+ stable_sendlogoff();
+ break;
+ }
+#endif
+}
+int getoutputcirclesize(void)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ return unstable_getoutputcirclesize();
+ case 1:
+ return stable_getoutputcirclesize();
+ }
+#endif
+ return 0;
+}
+void setsocket(short newsocket)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_setsocket(newsocket);
+ break;
+ case 1:
+ stable_setsocket(newsocket);
+ break;
+ }
+#endif
+}
+short getpacket(short *other, uint8_t *bufptr)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ return unstable_getpacket(other, bufptr); // default
+ case 1:
+ return stable_getpacket(other, bufptr);
+ }
+#endif
+ return 0;
+}
+void flushpackets(void)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_flushpackets();
+ break;
+ case 1:
+ stable_flushpackets();
+ break;
+ }
+#endif
+}
+void genericmultifunction(int32_t other, char *bufptr, int32_t messleng, int32_t command)
+{
+#ifndef USER_DUMMY_NETWORK
+ switch(nNetMode)
+ {
+ case 0:
+ unstable_genericmultifunction(other, bufptr, messleng, command);
+ break;
+ case 1:
+ stable_genericmultifunction(other, bufptr, messleng, command);
+ break;
+ }
+#endif
+}
\ No newline at end of file
--- /dev/null
+++ b/Engine/src/network.h
@@ -1,0 +1,33 @@
+//
+// network.h
+// Duke3D
+//
+// Created by fabien sanglard on 12-12-22.
+// Copyright (c) 2012 fabien sanglard. All rights reserved.
+//
+
+#ifndef Duke3D_network_h
+#define Duke3D_network_h
+
+#include "platform.h"
+
+void Setup_UnstableNetworking();
+void Setup_StableNetworking();
+
+void callcommit(void);
+void initcrc(void);
+int32_t getcrc(uint8_t *buffer, short bufleng);
+void initmultiplayers(uint8_t damultioption, uint8_t dacomrateoption, uint8_t dapriority);
+void sendpacket(int32_t other, uint8_t *bufptr, int32_t messleng);
+void setpackettimeout(int32_t datimeoutcount, int32_t daresendagaincount);
+void uninitmultiplayers(void);
+void sendlogon(void);
+void sendlogoff(void);
+int getoutputcirclesize(void);
+void setsocket(short newsocket);
+short getpacket(short *other, uint8_t *bufptr);
+void flushpackets(void);
+void genericmultifunction(int32_t other, char *bufptr, int32_t messleng, int32_t command);
+
+
+#endif
--- a/Engine/src/tiles.c
+++ b/Engine/src/tiles.c
@@ -273,7 +273,7 @@
cachesize -= 65536L;
if (cachesize < 65536) return(-1);
}
- initcache(((int32_t)FP_OFF(pic)+15)&0xfffffff0,(cachesize-((-(int32_t)FP_OFF(pic))&15))&0xfffffff0);
+ initcache(pic,cachesize);
for(i=0; i<MAXTILES; i++)
{
--- a/Game/src/actors.c
+++ b/Game/src/actors.c
@@ -1293,7 +1293,7 @@
s->xvel = 128;
s->ang = p->ang;
s->extra++;
- IFMOVING;
+
}
else
{
@@ -1569,7 +1569,7 @@
s->picnum = CRANE+1;
s->xvel += 8;
}
- IFMOVING;
+
if(sect == t[1])
t[0]++;
}
@@ -1664,7 +1664,7 @@
if( s->xvel < 192 )
s->xvel += 8;
s->ang = getangle(msx[t[4]]-s->x,msy[t[4]]-s->y);
- IFMOVING;
+
if( ((s->x-msx[t[4]])*(s->x-msx[t[4]])+(s->y-msy[t[4]])*(s->y-msy[t[4]]) ) < (128*128) )
t[0]++;
}
--- a/Game/src/audiolib/fx_man.c
+++ b/Game/src/audiolib/fx_man.c
@@ -654,7 +654,7 @@
int FX_PlayLoopedVOC
(
- char *ptr,
+ uint8_t *ptr,
int32_t loopstart,
int32_t loopend,
int32_t pitchoffset,
@@ -720,7 +720,7 @@
int FX_PlayLoopedWAV
(
- char *ptr,
+ uint8_t *ptr,
int32_t loopstart,
int32_t loopend,
int32_t pitchoffset,
@@ -755,7 +755,7 @@
int FX_PlayVOC3D
(
- char *ptr,
+ uint8_t *ptr,
int32_t pitchoffset,
int32_t angle,
int32_t distance,
@@ -787,7 +787,7 @@
int FX_PlayWAV3D
(
- char *ptr,
+ uint8_t *ptr,
int32_t pitchoffset,
int32_t angle,
int32_t distance,
@@ -818,7 +818,7 @@
int FX_PlayRaw
(
- char *ptr,
+ uint8_t *ptr,
uint32_t length,
uint32_t rate,
int32_t pitchoffset,
@@ -852,7 +852,7 @@
int FX_PlayLoopedRaw
(
- char *ptr,
+ uint8_t *ptr,
uint32_t length,
char *loopstart,
char *loopend,
--- a/Game/src/audiolib/fx_man.h
+++ b/Game/src/audiolib/fx_man.h
@@ -108,22 +108,22 @@
int FX_PlayVOC( char *ptr, int pitchoffset, int vol, int left, int right,
int priority, uint32_t callbackval );
-int FX_PlayLoopedVOC( char *ptr, int32_t loopstart, int32_t loopend,
+int FX_PlayLoopedVOC( uint8_t *ptr, int32_t loopstart, int32_t loopend,
int32_t pitchoffset, int32_t vol, int32_t left, int32_t right, int32_t priority,
uint32_t callbackval );
int FX_PlayWAV( char *ptr, int pitchoffset, int vol, int left, int right,
int priority, uint32_t callbackval );
-int FX_PlayLoopedWAV( char *ptr, int32_t loopstart, int32_t loopend,
+int FX_PlayLoopedWAV( uint8_t *ptr, int32_t loopstart, int32_t loopend,
int32_t pitchoffset, int32_t vol, int32_t left, int32_t right, int32_t priority,
uint32_t callbackval );
-int FX_PlayVOC3D( char *ptr, int32_t pitchoffset, int32_t angle, int32_t distance,
+int FX_PlayVOC3D( uint8_t *ptr, int32_t pitchoffset, int32_t angle, int32_t distance,
int32_t priority, uint32_t callbackval );
-int FX_PlayWAV3D( char *ptr, int pitchoffset, int angle, int distance,
+int FX_PlayWAV3D( uint8_t *ptr, int pitchoffset, int angle, int distance,
int priority, uint32_t callbackval );
-int FX_PlayRaw( char *ptr, uint32_t length, uint32_t rate,
+int FX_PlayRaw( uint8_t *ptr, uint32_t length, uint32_t rate,
int32_t pitchoffset, int32_t vol, int32_t left, int32_t right, int32_t priority,
uint32_t callbackval );
-int FX_PlayLoopedRaw( char *ptr, uint32_t length, char *loopstart,
+int FX_PlayLoopedRaw( uint8_t *ptr, uint32_t length, char *loopstart,
char *loopend, uint32_t rate, int32_t pitchoffset, int32_t vol, int32_t left,
int32_t right, int32_t priority, uint32_t callbackval );
int32_t FX_Pan3D( int handle, int angle, int distance );
--- a/Game/src/audiolib/multivoc.c
+++ b/Game/src/audiolib/multivoc.c
@@ -2131,7 +2131,7 @@
int MV_PlayRaw
(
- char *ptr,
+ uint8_t *ptr,
unsigned long length,
unsigned rate,
int pitchoffset,
@@ -2161,7 +2161,7 @@
int MV_PlayLoopedRaw
(
- char *ptr,
+ uint8_t *ptr,
unsigned long length,
char *loopstart,
char *loopend,
@@ -2258,7 +2258,7 @@
int MV_PlayWAV3D
(
- char *ptr,
+ uint8_t *ptr,
int pitchoffset,
int angle,
int distance,
@@ -2310,7 +2310,7 @@
int MV_PlayLoopedWAV
(
- char *ptr,
+ uint8_t *ptr,
long loopstart,
long loopend,
int pitchoffset,
@@ -2447,7 +2447,7 @@
int MV_PlayVOC3D
(
- char *ptr,
+ uint8_t *ptr,
int pitchoffset,
int angle,
int distance,
@@ -2527,7 +2527,7 @@
int MV_PlayLoopedVOC
(
- char *ptr,
+ uint8_t *ptr,
long loopstart,
long loopend,
int pitchoffset,
@@ -2760,7 +2760,7 @@
void MV_SetCallBack
(
- void ( *function )( unsigned long )
+ void ( *function )( int32_t )
)
{
--- a/Game/src/audiolib/multivoc.h
+++ b/Game/src/audiolib/multivoc.h
@@ -91,31 +91,31 @@
int MV_StartDemandFeedPlayback( void ( *function )( char **ptr, uint32_t *length ),
int rate, int pitchoffset, int vol, int left, int right,
int priority, unsigned long callbackval );
-int MV_PlayRaw( char *ptr, unsigned long length,
+int MV_PlayRaw( uint8_t *ptr, unsigned long length,
unsigned rate, int pitchoffset, int vol, int left,
int right, int priority, unsigned long callbackval );
-int MV_PlayLoopedRaw( char *ptr, unsigned long length,
+int MV_PlayLoopedRaw( uint8_t *ptr, unsigned long length,
char *loopstart, char *loopend, unsigned rate, int pitchoffset,
int vol, int left, int right, int priority,
unsigned long callbackval );
int MV_PlayWAV( char *ptr, int pitchoffset, int vol, int left,
int right, int priority, unsigned long callbackval );
-int MV_PlayWAV3D( char *ptr, int pitchoffset, int angle, int distance,
+int MV_PlayWAV3D( uint8_t *ptr, int pitchoffset, int angle, int distance,
int priority, unsigned long callbackval );
-int MV_PlayLoopedWAV( char *ptr, long loopstart, long loopend,
+int MV_PlayLoopedWAV( uint8_t *ptr, long loopstart, long loopend,
int pitchoffset, int vol, int left, int right, int priority,
unsigned long callbackval );
-int MV_PlayVOC3D( char *ptr, int pitchoffset, int angle, int distance,
+int MV_PlayVOC3D( uint8_t *ptr, int pitchoffset, int angle, int distance,
int priority, unsigned long callbackval );
int MV_PlayVOC( char *ptr, int pitchoffset, int vol, int left, int right,
int priority, unsigned long callbackval );
-int MV_PlayLoopedVOC( char *ptr, long loopstart, long loopend,
+int MV_PlayLoopedVOC( uint8_t *ptr, long loopstart, long loopend,
int pitchoffset, int vol, int left, int right, int priority,
uint32_t callbackval );
void MV_CreateVolumeTable( int index, int volume, int MaxVolume );
void MV_SetVolume( int volume );
int MV_GetVolume( void );
-void MV_SetCallBack( void ( *function )( unsigned long ) );
+void MV_SetCallBack( void ( *function )( int32_t ) );
void MV_SetReverseStereo( int setting );
int MV_GetReverseStereo( void );
int MV_Init( int soundcard, int MixRate, int Voices, int numchannels,
--- a/Game/src/cvar_defs.c
+++ b/Game/src/cvar_defs.c
@@ -12,6 +12,7 @@
//We need a way to access duke to change the level
#include "duke3d.h"
+
//We need to access debug soundinfo
#include "sounddebugdefs.h"
--- a/Game/src/duke3d.h
+++ b/Game/src/duke3d.h
@@ -356,7 +356,7 @@
typedef struct
{
- char *ptr;
+ uint8_t *ptr;
uint8_t lock;
int length, num;
} SAMPLE;
--- a/Game/src/game.c
+++ b/Game/src/game.c
@@ -104,7 +104,7 @@
int recfilep,totalreccnt;
uint8_t debug_on = 0,actor_tog = 0,memorycheckoveride=0;
-char *rtsptr;
+uint8_t *rtsptr;
extern uint8_t syncstate;
@@ -657,7 +657,7 @@
if (SoundToggle == 0 || ud.lockout == 1 || FXDevice == NumSoundCards)
break;
- rtsptr = (char *)RTS_GetSound(packbuf[1]-1);
+ rtsptr = RTS_GetSound(packbuf[1]-1);
if (*rtsptr == 'C')
FX_PlayVOC3D(rtsptr,0,0,0,255,-packbuf[1]);
else
@@ -781,6 +781,8 @@
}
}
+//From player.c
+void computergetinput(int32_t snum, input *syn);
void faketimerhandler()
{
int32_t i, j, k;
@@ -1101,7 +1103,12 @@
}
extern int32_t cacnum;
-typedef struct { int32_t *hand, leng; uint8_t *lock; } cactype;
+
+typedef struct {
+ uint8_t *hand;
+ int32_t leng;
+ uint8_t *lock; }
+cactype;
extern cactype cac[];
void caches(void)
@@ -2553,14 +2560,15 @@
void typemode(void)
{
- short ch, hitstate, i, j;
-
+ short ch, hitstate, i, j;
+ char text[512];
+
if( ps[myconnectindex].gm&MODE_SENDTOWHOM )
{
if(sendmessagecommand != -1 || ud.multimode < 3 || movesperpacket == 4)
{
- tempbuf[0] = 4; // message command
- tempbuf[1] = 0;
+ text[0] = 4; // message command
+ text[1] = 0;
recbuf[0] = 0;
if(ud.multimode < 3)
@@ -2571,7 +2579,7 @@
strcat(recbuf,typebuf);
j = strlen(recbuf);
recbuf[j] = 0;
- strcat(tempbuf+1,recbuf);
+ strcat(text+1,recbuf);
if(sendmessagecommand >= ud.multimode || movesperpacket == 4)
{
@@ -4412,7 +4420,7 @@
break;
case WATERDRIP:
- if(j >= 0 && sprite[j].statnum == 10 || sprite[j].statnum == 1)
+ if((j >= 0 && sprite[j].statnum == 10) || sprite[j].statnum == 1)
{
sp->shade = 32;
if(sprite[j].pal != 1)
@@ -6598,6 +6606,7 @@
{
short i,ch;
int32_t j;
+ char text[512];
if(ud.recstat == 2)
{
@@ -6734,11 +6743,11 @@
if(music_select == 44) music_select = 0;
}
- strcpy(&tempbuf[0],"PLAYING ");
- strcat(&tempbuf[0],&music_fn[0][music_select][0]);
+ strcpy(text,"PLAYING ");
+ strcat(text,&music_fn[0][music_select][0]);
MUSIC_StopSong(); // FIX_00074: Shift f5 doesn't change hi-res tunes, but only midi tunes.
playmusic(&music_fn[0][music_select][0]);
- strcpy(&fta_quotes[26][0],&tempbuf[0]);
+ strcpy(&fta_quotes[26][0],text);
FTA(26,&ps[myconnectindex],1);
return;
}
@@ -6749,7 +6758,7 @@
tempbuf[ch] = 4;
tempbuf[ch+1] = 0;
- strcat(tempbuf+1,ud.ridecule[i-1]);
+ strcat((char*)tempbuf+1,ud.ridecule[i-1]);
i = 1+strlen(ud.ridecule[i-1]);
@@ -6756,7 +6765,7 @@
if(ud.multimode > 1)
for(ch=connecthead;ch>=0;ch=connectpoint2[ch])
if (ch != myconnectindex)
- sendpacket(ch,(uint8_t*)tempbuf,i);
+ sendpacket(ch,tempbuf,i);
pus = NUMPAGES;
pub = NUMPAGES;
@@ -6768,7 +6777,7 @@
if(ud.lockout == 0)
if(SoundToggle && ALT_IS_PRESSED && ( RTS_NumSounds() > 0 ) && rtsplaying == 0 && VoiceToggle )
{
- rtsptr = (char *)RTS_GetSound (i-1);
+ rtsptr = RTS_GetSound (i-1);
if(*rtsptr == 'C')
FX_PlayVOC3D( rtsptr,0,0,0,255,-i);
else FX_PlayWAV3D( rtsptr,0,0,0,255,-i);
@@ -6957,9 +6966,9 @@
if( KB_KeyPressed( sc_F5 ) && MusicDevice != NumSoundCards )
{
KB_ClearKeyDown( sc_F5 );
- strcpy(&tempbuf[0],&music_fn[0][music_select][0]);
- strcat(&tempbuf[0],". USE SHIFT-F5 TO CHANGE.");
- strcpy(&fta_quotes[26][0],&tempbuf[0]);
+ strcpy(text,&music_fn[0][music_select][0]);
+ strcat(text,". USE SHIFT-F5 TO CHANGE.");
+ strcpy(fta_quotes[26],text);
FTA(26,&ps[myconnectindex],1);
}
@@ -10576,7 +10585,7 @@
time(&time4file);
tmHMS = localtime(&time4file);
- sprintf(tempbuf, "xDuke(v%d.%d) %.4d.%.2d.%.2d %.2dh%.2dm%.2ds",
+ sprintf(text, "xDuke(v%d.%d) %.4d.%.2d.%.2d %.2dh%.2dm%.2ds",
XDUKE_REV_X,
XDUKE_REV_DOT_Y,
tmHMS->tm_year+1900,
--- a/Game/src/player.c
+++ b/Game/src/player.c
@@ -2697,11 +2697,11 @@
p->look_ang -= (p->look_ang>>2);
// 1<<6: toggle ud.auto_aim
- if( (ud.playing_demo_rev == BYTEVERSION_27 ||
+ if( ((ud.playing_demo_rev == BYTEVERSION_27 ||
ud.playing_demo_rev == BYTEVERSION_28 ||
ud.playing_demo_rev == BYTEVERSION_116 ||
ud.playing_demo_rev == BYTEVERSION_117) &&
- sb_snum&(1<<6) ||
+ sb_snum&(1<<6)) ||
(ACTION(gamefunc_Look_Left) && (p->gm&MODE_GAME) &&
!(p->gm&MODE_MENU) && !(p->gm&MODE_TYPE) && !(ud.pause_on) && (ud.recstat != 2)))
{
--- a/Game/src/premap.c
+++ b/Game/src/premap.c
@@ -250,7 +250,7 @@
( l < 12288 ) )
{
Sound[num].lock = 2;
- allocache((int32_t *)&Sound[num].ptr,l,&Sound[num].lock);
+ allocache(&Sound[num].ptr,l,&Sound[num].lock);
if(Sound[num].ptr != NULL)
kread( fp, Sound[num].ptr , l);
}
@@ -300,7 +300,7 @@
if( tiles[sector[i].ceilingpicnum].data == NULL )
{
tloadtile( sector[i].ceilingpicnum );
- if( tiles[sector[i].ceilingpicnum].data == LA)
+ if( tiles[sector[i].ceilingpicnum].data == (uint8_t*)LA)
{
tloadtile(LA+1);
tloadtile(LA+2);
--- a/Game/src/rts.c
+++ b/Game/src/rts.c
@@ -32,7 +32,7 @@
//=============
int32 numlumps;
-static void **lumpcache;
+static uint8_t **lumpcache;
static lumpinfo_t *lumpinfo; // location of each lump on disk
static boolean RTS_Started = false;
@@ -225,7 +225,7 @@
if (lumpcache[lump] == NULL)
{
lumplockbyte[lump] = 200;
- allocache((int32_t *)&lumpcache[lump],(int32_t)RTS_SoundLength(lump-1),&lumplockbyte[lump]);
+ allocache(&lumpcache[lump],(int32_t)RTS_SoundLength(lump-1),&lumplockbyte[lump]);
RTS_ReadLump(lump, lumpcache[lump]);
}
else
--- a/Game/src/sector.c
+++ b/Game/src/sector.c
@@ -2454,8 +2454,8 @@
if( playing_old_demo && !(sb_snum&((15<<8)|(1<<12)|(1<<15)|(1<<16)|(1<<22)|(1<<19)|(1<<20)|(1<<21)|(1<<24)|(1<<25)|(1<<27)|(1<<28)|(1<<29)|(1<<30)|(1<<31))) )
p->interface_toggle_flag = 0;
- else if((p->interface_toggle_flag == 0 && ( sb_snum&(1<<17) ) == 0) && playing_old_demo ||
- (sb_snum && ( sync[snum].bits&(1<<17) ) == 0) && !playing_old_demo)
+ else if(((p->interface_toggle_flag == 0 && ( sb_snum&(1<<17) ) == 0) && playing_old_demo) ||
+ ((sb_snum && ( sync[snum].bits&(1<<17) ) == 0) && !playing_old_demo))
{
if(playing_old_demo)
p->interface_toggle_flag = 1;
--- a/Game/src/sounds.c
+++ b/Game/src/sounds.c
@@ -284,7 +284,7 @@
Sound[num].lock = 200;
- allocache((int32_t *)&Sound[num].ptr,l,(uint8_t *)&Sound[num].lock);
+ allocache(&Sound[num].ptr,l,(uint8_t *)&Sound[num].lock);
kread( fp, Sound[num].ptr , l);
kclose( fp );
return 1;
--- a/xcode/Duke3D.xcodeproj/project.pbxproj
+++ b/xcode/Duke3D.xcodeproj/project.pbxproj
@@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
2D058BD01686520B00E283DC /* tiles.c in Sources */ = {isa = PBXBuildFile; fileRef = 2D058BCF1686520B00E283DC /* tiles.c */; };
+ 2D058BE4168689B200E283DC /* network.c in Sources */ = {isa = PBXBuildFile; fileRef = 2D058BE3168689B200E283DC /* network.c */; };
2D2A07CA168286D500064107 /* filesystem.c in Sources */ = {isa = PBXBuildFile; fileRef = 2D2A07C9168286D400064107 /* filesystem.c */; };
2D4FB6FF167D430F00915887 /* sdl_midi.c in Sources */ = {isa = PBXBuildFile; fileRef = 2D4FB6FE167D430F00915887 /* sdl_midi.c */; };
2D7B621D1678885A00E35E54 /* draw.c in Sources */ = {isa = PBXBuildFile; fileRef = 2D7B61F11678885A00E35E54 /* draw.c */; };
@@ -74,6 +75,8 @@
/* Begin PBXFileReference section */
2D058BCD168651F700E283DC /* tiles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = tiles.h; path = ../../Engine/src/tiles.h; sourceTree = "<group>"; };
2D058BCF1686520B00E283DC /* tiles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tiles.c; path = ../../Engine/src/tiles.c; sourceTree = "<group>"; };
+ 2D058BE2168689A500E283DC /* network.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = network.h; path = ../../Engine/src/network.h; sourceTree = "<group>"; };
+ 2D058BE3168689B200E283DC /* network.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = network.c; path = ../../Engine/src/network.c; sourceTree = "<group>"; };
2D2A07B8167EFA4900064107 /* music.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = music.h; path = ../../Game/src/audiolib/music.h; sourceTree = "<group>"; };
2D2A07BA167EFB5500064107 /* premap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = premap.h; path = ../../Game/src/premap.h; sourceTree = "<group>"; };
2D2A07BB167F1ABA00064107 /* global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = global.h; path = ../../Game/src/global.h; sourceTree = "<group>"; };
@@ -210,6 +213,7 @@
2D7B62191678885A00E35E54 /* platform.h */,
2D7B621B1678885A00E35E54 /* fixedPoint_math.h */,
2D058BCD168651F700E283DC /* tiles.h */,
+ 2D058BE2168689A500E283DC /* network.h */,
);
name = headers;
sourceTree = "<group>";
@@ -226,6 +230,7 @@
2D2A07C9168286D400064107 /* filesystem.c */,
2D7B621A1678885A00E35E54 /* fixedPoint_math.c */,
2D058BCF1686520B00E283DC /* tiles.c */,
+ 2D058BE3168689B200E283DC /* network.c */,
);
name = implementations;
sourceTree = "<group>";
@@ -511,6 +516,7 @@
2D4FB6FF167D430F00915887 /* sdl_midi.c in Sources */,
2D2A07CA168286D500064107 /* filesystem.c in Sources */,
2D058BD01686520B00E283DC /* tiles.c in Sources */,
+ 2D058BE4168689B200E283DC /* network.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -535,6 +541,9 @@
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
+ GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = NO;
+ GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
@@ -561,6 +570,9 @@
FRAMEWORK_SEARCH_PATHS = "/Library/Frameworks/**";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+ GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
+ GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = NO;
+ GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;