From 6db5e70888261c8b44b6a2dd15c750295b55a3e0 Mon Sep 17 00:00:00 2001 From: terminx Date: Sun, 10 Sep 2006 17:40:34 +0000 Subject: [PATCH] git-svn-id: https://svn.eduke32.com/eduke32@292 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/build/Makefile | 10 +- polymer/build/Makefile.deps | 4 +- polymer/build/Makefile.msvc | 9 +- polymer/build/Makefile.shared | 8 +- polymer/build/Makefile.watcom | 9 +- polymer/build/include/a.h | 98 +++++---- polymer/build/src/a-c.c | 6 +- polymer/eduke32/Makefile | 5 +- polymer/eduke32/source/game.c | 359 +++++++++++++++++--------------- polymer/eduke32/source/player.c | 20 +- 10 files changed, 270 insertions(+), 258 deletions(-) diff --git a/polymer/build/Makefile b/polymer/build/Makefile index daf0d52f0..b0dc8ecf9 100644 --- a/polymer/build/Makefile +++ b/polymer/build/Makefile @@ -10,14 +10,12 @@ # SUPERBUILD - enables voxels # POLYMOST - enables Polymost renderer # USE_OPENGL - enables OpenGL support in Polymost -# USE_A_C - enables use of C version of classic renderer # NOASM - disables the use of inline assembly pragmas # # SETSPRITEZ - set to 1 for Shadow Warrior SUPERBUILD ?= 1 POLYMOST ?= 1 USE_OPENGL ?= 1 -USE_A_C ?= 0 NOASM ?= 0 SETSPRITEZ ?= 0 @@ -71,13 +69,13 @@ EXESUFFIX= include Makefile.shared -ifneq (0,$(USE_A_C)) - ENGINEOBJS=$(OBJ)/a-c.$o -else - ENGINEOBJS=$(OBJ)/a.$o +ENGINEOBJS= +ifeq (0,$(NOASM)) + ENGINEOBJS+= $(OBJ)/a.$o endif ENGINEOBJS+= \ + $(OBJ)/a-c.$o \ $(OBJ)/baselayer.$o \ $(OBJ)/cache1d.$o \ $(OBJ)/compat.$o \ diff --git a/polymer/build/Makefile.deps b/polymer/build/Makefile.deps index 67581427d..4b46d9af1 100644 --- a/polymer/build/Makefile.deps +++ b/polymer/build/Makefile.deps @@ -40,8 +40,8 @@ $(OBJ)/buildres.$(res): $(SRC)/misc/buildres.rc $(INC)/startwin.editor.h $(OBJ)/startwin.editor.$o: $(SRC)/startwin.editor.c $(INC)/build.h $(INC)/editor.h $(INC)/winlayer.h $(INC)/compat.h $(INC)/startwin.editor.h $(OBJ)/startgtk.editor.$o: $(SRC)/startgtk.editor.c $(INC)/baselayer.h $(INC)/build.h $(INC)/editor.h $(INC)/compat.h -$(OBJ)/game_icon.$o: $(RSRC)game_icon.c -$(OBJ)/build_icon.$o: $(RSRC)build_icon.c +$(OBJ)/game_icon.$o: $(RSRC)/game_icon.c +$(OBJ)/build_icon.$o: $(RSRC)/build_icon.c $(OBJ)/kextract.$o: $(SRC)/util/kextract.c $(INC)/compat.h $(OBJ)/kgroup.$o: $(SRC)/util/kgroup.c $(INC)/compat.h diff --git a/polymer/build/Makefile.msvc b/polymer/build/Makefile.msvc index bc7b7400a..568f81447 100644 --- a/polymer/build/Makefile.msvc +++ b/polymer/build/Makefile.msvc @@ -24,13 +24,8 @@ DXROOT=c:\sdks\directx\dx7 FMODROOT=c:\sdks\fmodapi374win\api # /D these to enable certain features of the port's compile process -# USE_A_C This uses a C version of the classic renderer code rather -# than the assembly version in A.ASM. -# If this is defined, alter the $(OBJ)\a.$o in the -# ENGINEOBJS declaration to be $(OBJ)\a-c.$o -# NOASM When defined, uses C instead of Microsoft inline -# assembly for the features in PRAGMAS.H -TARGETOPTS=#/DUSE_A_C #/DNOASM +# NOASM When defined, uses C instead of assembly code +TARGETOPTS=#/DNOASM !ifdef DEBUG # debugging options diff --git a/polymer/build/Makefile.shared b/polymer/build/Makefile.shared index 3daf4bffc..b8c6dcd30 100644 --- a/polymer/build/Makefile.shared +++ b/polymer/build/Makefile.shared @@ -80,7 +80,7 @@ endif ifeq ($(PLATFORM),SKYOS) RENDERTYPE=SDL EXESUFFIX=.app - override USE_A_C=1 + override NOASM=1 BUILDCFLAGS+= -DUNDERSCORES SDLCONFIG= SDLCONFIG_CFLAGS=-I/boot/programs/sdk/include/sdl @@ -89,7 +89,7 @@ endif ifeq ($(PLATFORM),QNX) RENDERTYPE=SDL override USE_OPENGL=0 - override USE_A_C=1 + override NOASM=1 STDCPPLIB=-lstdc++ LIBS+= -lsocket endif @@ -97,7 +97,6 @@ ifeq ($(PLATFORM),SUNOS) RENDERTYPE=SDL override USE_OPENGL=0 override NOASM=1 - override USE_A_C=1 STDCPPLIB=-lstdc++ LIBS+= -lsocket -lnsl endif @@ -147,9 +146,6 @@ endif ifneq (0,$(USE_OPENGL)) BUILDCFLAGS+= -DUSE_OPENGL endif -ifneq (0,$(USE_A_C)) - BUILDCFLAGS+= -DUSE_A_C -endif ifneq (0,$(NOASM)) BUILDCFLAGS+= -DNOASM endif diff --git a/polymer/build/Makefile.watcom b/polymer/build/Makefile.watcom index b33d48ffa..37e982512 100644 --- a/polymer/build/Makefile.watcom +++ b/polymer/build/Makefile.watcom @@ -29,13 +29,8 @@ DXROOT=c:\sdks\directx\dx7 !endif # -d these to enable certain features of the port's compile process -# USE_A_C This uses a C version of the classic renderer code rather -# than the assembly version in A.ASM. -# If this is defined, alter the $(OBJ)\a.$o in the -# ENGINEOBJS declaration to be $(OBJ)\a-c.$o -# NOASM When defined, uses C code instead of Watcom inline -# assembly for the features in PRAGMAS.H -TARGETOPTS=#-dUSE_A_C #-dNOASM +# NOASM When defined, uses C code instead assembly code +TARGETOPTS=#-dNOASM CC=wcc386 CXX=wpp386 diff --git a/polymer/build/include/a.h b/polymer/build/include/a.h index eb174e79f..baad0cef2 100644 --- a/polymer/build/include/a.h +++ b/polymer/build/include/a.h @@ -6,54 +6,7 @@ #ifndef __a_h__ #define __a_h__ -#if defined(USE_A_C) - -#define ENGINE_USING_A_C - -void setvlinebpl(long dabpl); -void fixtransluscence(long datransoff); -void settransnormal(void); -void settransreverse(void); - -void sethlinesizes(long logx, long logy, long bufplc); -void setpalookupaddress(char *paladdr); -void setuphlineasm4(long bxinc, long byinc); -void hlineasm4(long cnt, long skiploadincs, long paloffs, unsigned long by, unsigned long bx, long p); - -void setupslopevlin(long logylogx, long bufplc, long pinc); -void slopevlin(long p, long i, long slopaloffs, long cnt, long bx, long by); - -void setupvlineasm(long neglogy); -void vlineasm1(long vinc, long paloffs, long cnt, unsigned long vplc, long bufplc, long p); - -void setupmvlineasm(long neglogy); -void mvlineasm1(long vinc, long paloffs, long cnt, unsigned long vplc, long bufplc, long p); - -void setuptvlineasm(long neglogy); -void tvlineasm1(long vinc, long paloffs, long cnt, unsigned long vplc, long bufplc, long p); - -void msethlineshift(long logx, long logy); -void mhline(long bufplc, unsigned long bx, long cntup16, long junk, unsigned long by, long p); - -void tsethlineshift(long logx, long logy); -void thline(long bufplc, unsigned long bx, long cntup16, long junk, unsigned long by, long p); - -void setupspritevline(long paloffs, long bxinc, long byinc, long ysiz); -void spritevline(long bx, long by, long cnt, long bufplc, long p); - -void msetupspritevline(long paloffs, long bxinc, long byinc, long ysiz); -void mspritevline(long bx, long by, long cnt, long bufplc, long p); - -void tsetupspritevline(long paloffs, long bxinc, long byinc, long ysiz); -void tspritevline(long bx, long by, long cnt, long bufplc, long p); - -void setupdrawslab (long dabpl, long pal); -void drawslab (long dx, long v, long dy, long vi, long vptr, long p); -void stretchhline (long p0, long u, long cnt, long uinc, long rptr, long p); - -void mmxoverlay(); - -#elif defined(__WATCOMC__) // USE_A_C +#if defined(__WATCOMC__) && !defined(NOASM) extern long mmxoverlay(); #pragma aux mmxoverlay modify [eax ebx ecx edx]; @@ -140,7 +93,7 @@ extern long setupdrawslab(long,long); extern long drawslab(long,long,long,long,long,long); #pragma aux drawslab parm [eax][ebx][ecx][edx][esi][edi]; -#elif defined(__GNUC__) && defined(__i386__) // __WATCOMC__ +#elif defined(__GNUC__) && defined(__i386__) && !defined(NOASM) // __WATCOMC__ #if defined(__linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__SYLLABLE__) #define __cdecl @@ -190,7 +143,7 @@ extern long __cdecl setupdrawslab(long,long); extern long __cdecl drawslab(long,long,long,long,long,long); extern void __cdecl stretchhline(long,long,long,long,long,long); -#elif defined(_MSC_VER) // __GNUC__ && __i386__ +#elif defined(_MSC_VER) && !defined(NOASM) // __GNUC__ && __i386__ extern long _cdecl mmxoverlay(); extern long _cdecl sethlinesizes(long,long,long); @@ -238,7 +191,50 @@ extern void _cdecl stretchhline(long,long,long,long,long,long); #else // _MSC_VER -#error Unsupported compiler or architecture. +#define ENGINE_USING_A_C + +void setvlinebpl(long dabpl); +void fixtransluscence(long datransoff); +void settransnormal(void); +void settransreverse(void); + +void sethlinesizes(long logx, long logy, long bufplc); +void setpalookupaddress(char *paladdr); +void setuphlineasm4(long bxinc, long byinc); +void hlineasm4(long cnt, long skiploadincs, long paloffs, unsigned long by, unsigned long bx, long p); + +void setupslopevlin(long logylogx, long bufplc, long pinc); +void slopevlin(long p, long i, long slopaloffs, long cnt, long bx, long by); + +void setupvlineasm(long neglogy); +void vlineasm1(long vinc, long paloffs, long cnt, unsigned long vplc, long bufplc, long p); + +void setupmvlineasm(long neglogy); +void mvlineasm1(long vinc, long paloffs, long cnt, unsigned long vplc, long bufplc, long p); + +void setuptvlineasm(long neglogy); +void tvlineasm1(long vinc, long paloffs, long cnt, unsigned long vplc, long bufplc, long p); + +void msethlineshift(long logx, long logy); +void mhline(long bufplc, unsigned long bx, long cntup16, long junk, unsigned long by, long p); + +void tsethlineshift(long logx, long logy); +void thline(long bufplc, unsigned long bx, long cntup16, long junk, unsigned long by, long p); + +void setupspritevline(long paloffs, long bxinc, long byinc, long ysiz); +void spritevline(long bx, long by, long cnt, long bufplc, long p); + +void msetupspritevline(long paloffs, long bxinc, long byinc, long ysiz); +void mspritevline(long bx, long by, long cnt, long bufplc, long p); + +void tsetupspritevline(long paloffs, long bxinc, long byinc, long ysiz); +void tspritevline(long bx, long by, long cnt, long bufplc, long p); + +void setupdrawslab (long dabpl, long pal); +void drawslab (long dx, long v, long dy, long vi, long vptr, long p); +void stretchhline (long p0, long u, long cnt, long uinc, long rptr, long p); + +void mmxoverlay(); #endif // else diff --git a/polymer/build/src/a-c.c b/polymer/build/src/a-c.c index 8453757ae..d4bae930d 100644 --- a/polymer/build/src/a-c.c +++ b/polymer/build/src/a-c.c @@ -8,10 +8,7 @@ #include "a.h" -#ifndef ENGINE_USING_A_C -# error A.H has indicated that optimized code has been requested. This means a-c.c is being compiled \ - when USE_A_C has not been defined. -#endif +#ifdef ENGINE_USING_A_C long krecip(long num); // from engine.c @@ -292,6 +289,7 @@ void stretchhline (long p0, long u, long cnt, long uinc, long rptr, long p) void mmxoverlay() { } +#endif /* * vim:ts=4: */ diff --git a/polymer/eduke32/Makefile b/polymer/eduke32/Makefile index 413c187af..d1f849976 100644 --- a/polymer/eduke32/Makefile +++ b/polymer/eduke32/Makefile @@ -7,7 +7,6 @@ SUPERBUILD = 1 POLYMOST = 1 USE_OPENGL = 1 -USE_A_C = 0 NOASM = 0 # Debugging options @@ -36,7 +35,7 @@ CC=gcc CXX=g++ # -Werror-implicit-function-declaration OURCFLAGS=$(debug) -W -Wall -Wimplicit -Wno-char-subscripts -Wunused \ - -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS -DNOCOPYPROTECT \ + -fno-pic -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS -DNOCOPYPROTECT \ -I$(INC) -I$(EINC) -I$(SRC)/jmact -I$(SRC)/jaudiolib -I../jfaud/inc OURCXXFLAGS=-fno-exceptions -fno-rtti LIBS=-lm @@ -188,7 +187,7 @@ enginelib editorlib: -mkdir $(EOBJ) $(MAKE) -C $(EROOT)/ "OBJ=$(CURDIR)/$(EOBJ)" \ SUPERBUILD=$(SUPERBUILD) POLYMOST=$(POLYMOST) \ - USE_OPENGL=$(USE_OPENGL) USE_A_C=$(USE_A_C) \ + USE_OPENGL=$(USE_OPENGL) \ NOASM=$(NOASM) RELEASE=$(RELEASE) $@ $(EOBJ)/$(ENGINELIB): enginelib diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index 4eb4f13c9..25d28b359 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -66,6 +66,10 @@ static int32 CommandMusicToggleOff = 0; static char *CommandMap = NULL; static char *CommandName = NULL,*CommandNet = NULL; int32 CommandWeaponChoice = 0; +static struct strllist { + struct strllist *next; + char *str; +} *CommandPaths = NULL, *CommandGrps = NULL; char confilename[BMAX_PATH] = {"EDUKE.CON"}, boardfilename[BMAX_PATH] = {0}; char waterpal[768], slimepal[768], titlepal[768], drealms[768], endingpal[768]; @@ -7678,6 +7682,7 @@ void comlinehelp(char **argv) "-i#\t\tNetwork mode (1/0) (multiplayer only) (default == 1)\n" "-f#\t\tSend fewer packets (1, 2, 4) (multiplayer only)\n" "-gFILE\t\tUse multiple group files (must be last on command line)\n" + "-jDIRECTORY\t\tAdd a directory to the file path stack\n" "-hFILE\t\tUse FILE instead of DUKE3D.DEF\n" "-xFILE\t\tUse specified CON file (default EDUKE.CON/GAME.CON)\n" "-u#########\tUser's favorite weapon order (default: 3425689071)\n" @@ -7847,21 +7852,13 @@ void checkcommandline(int argc,char **argv) c = argv[i]; if (((*c == '/') || (*c == '-')) && (!firstnet)) { - if (!Bstrcasecmp(c+1,"addpath")) { - if (argc > i+1) - { - Bstrcpy(tempbuf,argv[i+1]); - addsearchpath(tempbuf); - i++; - } - i++; - continue; - } if (!Bstrcasecmp(c+1,"nam")) { + strcpy(defaultduke3dgrp, "nam.grp"); i++; continue; } if (!Bstrcasecmp(c+1,"setup")) { + CommandSetup = TRUE; i++; continue; } @@ -7881,6 +7878,7 @@ void checkcommandline(int argc,char **argv) } if (!Bstrcasecmp(c+1,"rmnet")) { + NoSetup = TRUE; if (argc > i+1) { CommandNet = argv[i+1]; @@ -7976,6 +7974,7 @@ void checkcommandline(int argc,char **argv) continue; } if (!Bstrcasecmp(c+1,"net")) { + NoSetup = TRUE; firstnet = i; netparamcount = argc - i - 1; netparam = (char **)calloc(netparamcount, sizeof(char**)); @@ -8030,87 +8029,15 @@ void checkcommandline(int argc,char **argv) c++; switch(*c) { - default: break; - case 'x': - case 'X': - c++; - if(*c) - { - Bstrcpy(confilename,c); - userconfiles = 1; - initprintf("Using CON file: %s.\n",confilename); - } + case '?': + comlinehelp(argv); + exit(0); break; - case 'g': - case 'G': - c++; - if(*c) - { - Bstrcpy(tempbuf,c); - if( strchr(tempbuf,'.') == 0) - Bstrcat(tempbuf,".grp"); - - j = initgroupfile(tempbuf); - if( j == -1 ) - initprintf("Could not find GRP file: %s.\n",tempbuf); - else - { - groupfile = j; - initprintf("Using GRP file: %s.\n",tempbuf); - } - } - - break; - case 'h': - case 'H': - c++; - if (*c) { - duke3ddef = c; - initprintf("Using DEF file: %s.\n",duke3ddef); - } - break; - case 'a': case 'A': ud.playerai = 1; initprintf("Other player AI.\n"); break; - case 'n': - case 'N': - c++; - if(*c == 's' || *c == 'S') - { - CommandSoundToggleOff = 2; - initprintf("Sound off.\n"); - } - else if(*c == 'm' || *c == 'M') - { - CommandMusicToggleOff = 1; - initprintf("Music off.\n"); - } - - else if( *c == 'D') - { - FILE * fp=fopen("gamevars.txt","w"); - InitGameVars(); - DumpGameVars(fp); - fclose(fp); - initprintf("Game variables saved to gamevars.txt.\n"); - } - - else - { - comlinehelp(argv); - exit(-1); - } - break; - case 'i': - case 'I': - c++; - if(*c == '0') networkmode = 0; - if(*c == '1') networkmode = 1; - initprintf("Network Mode %d\n",networkmode); - break; case 'c': case 'C': @@ -8139,6 +8066,14 @@ void checkcommandline(int argc,char **argv) // break; //} break; + case 'd': + case 'D': + c++; + if( strchr(c,'.') == 0) + Bstrcat(c,".dmo"); + initprintf("Play demo %s.\n",c); + Bstrcpy(firstdemofile,c); + break; case 'f': case 'F': c++; @@ -8152,19 +8087,64 @@ void checkcommandline(int argc,char **argv) setpackettimeout(0x3fffffff,0x3fffffff); } break; - case 't': - case 'T': + case 'g': + case 'G': c++; - if(*c == '1') ud.m_respawn_monsters = 1; - else if(*c == '2') ud.m_respawn_items = 1; - else if(*c == '3') ud.m_respawn_inventory = 1; - else + if(!*c) break; + strcpy(tempbuf,c); + if( strchr(tempbuf,'.') == 0) + strcat(tempbuf,".grp"); + { - ud.m_respawn_monsters = 1; - ud.m_respawn_items = 1; - ud.m_respawn_inventory = 1; + struct strllist *s; + s = (struct strllist *)calloc(1,sizeof(struct strllist)); + s->str = strdup(tempbuf); + if (CommandGrps) { + struct strllist *t; + for (t = CommandGrps; t->next; t=t->next) ; + t->next = s; + } else { + CommandGrps = s; + } } - initprintf("Respawn on.\n"); + break; + case 'h': + case 'H': + c++; + if (*c) { + duke3ddef = c; + initprintf("Using DEF file: %s.\n",duke3ddef); + } + break; + case 'i': + case 'I': + c++; + if(*c == '0') networkmode = 0; + if(*c == '1') networkmode = 1; + initprintf("Network Mode %d\n",networkmode); + break; + case 'j': + case 'J': + c++; + if(!*c) break; + { + struct strllist *s; + s = (struct strllist *)calloc(1,sizeof(struct strllist)); + s->str = strdup(c); + if (CommandPaths) { + struct strllist *t; + for (t = CommandPaths; t->next; t=t->next) ; + t->next = s; + } else { + CommandPaths = s; + } + } + break; + case 'l': + case 'L': + ud.warp_on = 1; + c++; + ud.m_level_number = ud.level_number = (atol(c)-1)%11; break; case 'm': case 'M': @@ -8175,9 +8155,32 @@ void checkcommandline(int argc,char **argv) initprintf("Monsters off.\n"); } break; - case 'w': - case 'W': - ud.coords = 1; + case 'n': + case 'N': + c++; + if(*c == 's' || *c == 'S') + { + CommandSoundToggleOff = 2; + initprintf("Sound off.\n"); + } + else if(*c == 'm' || *c == 'M') + { + CommandMusicToggleOff = 1; + initprintf("Music off.\n"); + } + else if(*c == 'd' || *c == 'D') + { + FILE * fp=fopen("gamevars.txt","w"); + InitGameVars(); + DumpGameVars(fp); + fclose(fp); + initprintf("Game variables saved to gamevars.txt.\n"); + } + else + { + comlinehelp(argv); + exit(-1); + } break; case 'q': case 'Q': @@ -8195,31 +8198,6 @@ void checkcommandline(int argc,char **argv) ud.m_recstat = 1; initprintf("Demo record mode on.\n"); break; - case 'd': - case 'D': - c++; - if( strchr(c,'.') == 0) - Bstrcat(c,".dmo"); - initprintf("Play demo %s.\n",c); - Bstrcpy(firstdemofile,c); - break; - case 'l': - case 'L': - ud.warp_on = 1; - c++; - ud.m_level_number = ud.level_number = (atol(c)-1)%11; - break; - case 'j': - case 'J': - initprintf(HEAD2); - exit(0); - - case 'v': - case 'V': - c++; - ud.warp_on = 1; - ud.m_volume_number = ud.volume_number = atol(c)-1; - break; case 's': case 'S': c++; @@ -8227,17 +8205,19 @@ void checkcommandline(int argc,char **argv) if(ud.m_player_skill == 4) ud.m_respawn_monsters = ud.respawn_monsters = 1; break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - ud.warp_on = 2 + (*c) - '0'; + case 't': + case 'T': + c++; + if(*c == '1') ud.m_respawn_monsters = 1; + else if(*c == '2') ud.m_respawn_items = 1; + else if(*c == '3') ud.m_respawn_inventory = 1; + else + { + ud.m_respawn_monsters = 1; + ud.m_respawn_items = 1; + ud.m_respawn_inventory = 1; + } + initprintf("Respawn on.\n"); break; case 'u': case 'U': @@ -8277,7 +8257,38 @@ void checkcommandline(int argc,char **argv) ud.wchoice[0][8] = 9; ud.wchoice[0][9] = 1; } - + break; + case 'v': + case 'V': + c++; + ud.warp_on = 1; + ud.m_volume_number = ud.volume_number = atol(c)-1; + break; + case 'w': + case 'W': + ud.coords = 1; + break; + case 'x': + case 'X': + c++; + if(*c) + { + Bstrcpy(confilename,c); + userconfiles = 1; + initprintf("Using CON file: %s.\n",confilename); + } + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + ud.warp_on = 2 + (*c) - '0'; break; case 'z': case 'Z': @@ -8923,6 +8934,29 @@ void app_main(int argc,char **argv) initprintf("Copyright (c) 1996, 2003 3D Realms Entertainment\n"); initprintf("Copyright (c) 2006 EDuke32 team\n"); +#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) + addsearchpath("/usr/share/games/eduke32"); + addsearchpath("/usr/local/share/games/eduke32"); +#elif defined(__APPLE__) + addsearchpath("/Library/Application Support/EDuke32"); +#endif + + ud.multimode = 1; + + checkcommandline(argc,argv); + + { + struct strllist *s; + while (CommandPaths) { + s = CommandPaths->next; + addsearchpath(CommandPaths->str); + + free(CommandPaths->str); + free(CommandPaths); + CommandPaths = s; + } + } + #if defined(_WIN32) if (!access("user_profiles_enabled", F_OK)) #else @@ -8933,12 +8967,6 @@ void app_main(int argc,char **argv) char *homedir; int asperr; -#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) - addsearchpath("/usr/share/games/eduke32"); - addsearchpath("/usr/local/share/games/eduke32"); -#elif defined(__APPLE__) - addsearchpath("/Library/Application Support/EDuke32"); -#endif if (getcwd(cwd,BMAX_PATH)) addsearchpath(cwd); if ((homedir = Bgethomedir())) { Bsnprintf(cwd,sizeof(cwd),"%s/" @@ -8961,22 +8989,10 @@ void app_main(int argc,char **argv) } } - for (i=1;inext; + j = initgroupfile(CommandGrps->str); + if( j == -1 ) initprintf("Warning: could not find group file %s.\n",CommandGrps->str); + else { + groupfile = j; + initprintf("Using group file %s.\n",CommandGrps->str); + } + + free(CommandGrps->str); + free(CommandGrps); + CommandGrps = s; + } + } + + loadgroupfiles(duke3ddef); + copyprotect(); if (cp) return; - ud.multimode = 1; - - checkcommandline(argc,argv); - if (netparamcount > 0) _buildargc = (argc -= netparamcount+1); // crop off the net parameters - if (VOLUMEALL) - loadgroupfiles(duke3ddef); // gotta set the proper title after we compile the CONs if this is the full version @@ -10457,14 +10485,17 @@ char domovethings(void) for(i=connecthead;i>=0;i=connectpoint2[i]) { - if(gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM) + if(sync[i].extbits&(1<<6)) { - if(sync[i].extbits&(1<<6)) + ps[i].team = ud.pteam[i]; + if(gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM) { - ps[i].team = ud.pteam[i]; hittype[ps[i].i].picnum = APLAYERTOP; quickkill(&ps[i]); } + } + if(gametype_flags[ud.coop] & GAMETYPE_FLAG_TDM) + { j = 0; switch(ps[i].team) { diff --git a/polymer/eduke32/source/player.c b/polymer/eduke32/source/player.c index a9c94ab67..fd9a9a6c9 100644 --- a/polymer/eduke32/source/player.c +++ b/polymer/eduke32/source/player.c @@ -2740,23 +2740,27 @@ void getinput(short snum) { if(info.dpitch > 0) { - info.dpitch -= MouseFilter; - if(info.dpitch < 0) info.dpitch = 0; + if(info.dpitch > MouseFilter) + info.dpitch -= MouseFilter; + else info.dpitch = 0; } else if(info.dpitch < 0) { - info.dpitch += MouseFilter; - if(info.dpitch > 0) info.dpitch = 0; + if(info.dpitch < -MouseFilter) + info.dpitch += MouseFilter; + else info.dpitch = 0; } if(info.dyaw > 0) { - info.dyaw -= MouseFilter; - if(info.dyaw < 0) info.dyaw = 0; + if(info.dyaw > MouseFilter) + info.dyaw -= MouseFilter; + else info.dyaw = 0; } else if(info.dyaw < 0) { - info.dyaw += MouseFilter; - if(info.dyaw > 0) info.dyaw = 0; + if(info.dyaw < -MouseFilter) + info.dyaw += MouseFilter; + else info.dyaw = 0; } }