mirror of
https://git.code.sf.net/p/quake/quake2forge
synced 2025-06-01 17:22:36 +00:00
make quake2 architecture independent. from Jaq (Jamie Wilkinson)
This commit is contained in:
parent
45955b16f2
commit
8d78a44c1b
14 changed files with 151 additions and 151 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -3,6 +3,6 @@
|
||||||
*.opt
|
*.opt
|
||||||
*.plg
|
*.plg
|
||||||
.vimrc
|
.vimrc
|
||||||
debugi386
|
debug*
|
||||||
quake2
|
quake2
|
||||||
releasei386
|
release*
|
||||||
|
|
170
Makefile
170
Makefile
|
@ -11,7 +11,7 @@
|
||||||
# Here are your build options, no more will be added!
|
# Here are your build options, no more will be added!
|
||||||
# (Note: not all options are available for all platforms).
|
# (Note: not all options are available for all platforms).
|
||||||
# quake2 (uses OSS for sound, cdrom ioctls for cd audio) is automatically built.
|
# quake2 (uses OSS for sound, cdrom ioctls for cd audio) is automatically built.
|
||||||
# game{i386,axp,ppc}.so is automatically built.
|
# game$(ARCH).so is automatically built.
|
||||||
BUILD_SDLQUAKE2=YES # sdlquake2 executable (uses SDL for cdrom and sound)
|
BUILD_SDLQUAKE2=YES # sdlquake2 executable (uses SDL for cdrom and sound)
|
||||||
BUILD_SVGA=YES # SVGAlib driver. Seems to work fine.
|
BUILD_SVGA=YES # SVGAlib driver. Seems to work fine.
|
||||||
BUILD_X11=YES # X11 software driver. Works somewhat ok.
|
BUILD_X11=YES # X11 software driver. Works somewhat ok.
|
||||||
|
@ -22,48 +22,46 @@ BUILD_SDLGL=YES # SDL OpenGL driver. Works fine for some people.
|
||||||
BUILD_CTFDLL=YES # gamei386.so for ctf
|
BUILD_CTFDLL=YES # gamei386.so for ctf
|
||||||
# i can add support for building xatrix and rogue libs if needed
|
# i can add support for building xatrix and rogue libs if needed
|
||||||
|
|
||||||
|
# unportable
|
||||||
# Check OS type.
|
# Check OS type.
|
||||||
OSTYPE := $(shell uname -s)
|
#OSTYPE := $(shell uname -s)
|
||||||
|
#
|
||||||
ifneq ($(OSTYPE),Linux)
|
#ifneq ($(OSTYPE),Linux)
|
||||||
$(error OS $(OSTYPE) is currently not supported)
|
#$(error OS $(OSTYPE) is currently not supported)
|
||||||
endif
|
#endif
|
||||||
|
|
||||||
# this nice line comes from the linux kernel makefile
|
# this nice line comes from the linux kernel makefile
|
||||||
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/)
|
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc/ -e s/sparc64/sparc/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/)
|
||||||
|
#ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/)
|
||||||
|
|
||||||
ifneq ($(ARCH),i386)
|
# This is preventing builds on sparc and ia64, etc
|
||||||
ifneq ($(ARCH),axp)
|
#ifneq ($(ARCH),i386)
|
||||||
ifneq ($(ARCH),ppc)
|
#ifneq ($(ARCH),axp)
|
||||||
ifneq ($(ARCH),sparc)
|
#ifneq ($(ARCH),ppc)
|
||||||
$(error arch $(ARCH) is currently not supported)
|
#$(error arch $(ARCH) is currently not supported)
|
||||||
endif
|
#endif
|
||||||
endif
|
#endif
|
||||||
endif
|
#endif
|
||||||
endif
|
|
||||||
|
|
||||||
CC=gcc
|
CC=gcc
|
||||||
|
|
||||||
ifeq ($(ARCH),axp)
|
# make this more port friendly
|
||||||
RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops \
|
#ifeq ($(ARCH),axp)
|
||||||
|
RELEASE_CFLAGS=$(BASE_CFLAGS) -ffast-math -funroll-loops \
|
||||||
-fomit-frame-pointer -fexpensive-optimizations
|
-fomit-frame-pointer -fexpensive-optimizations
|
||||||
endif
|
#endif
|
||||||
|
#
|
||||||
ifeq ($(ARCH),ppc)
|
#ifeq ($(ARCH),ppc)
|
||||||
RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops \
|
#RELEASE_CFLAGS=$(BASE_CFLAGS) -ffast-math -funroll-loops \
|
||||||
-fomit-frame-pointer -fexpensive-optimizations
|
# -fomit-frame-pointer -fexpensive-optimizations
|
||||||
endif
|
#endif
|
||||||
|
|
||||||
ifeq ($(ARCH),sparc)
|
|
||||||
RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops \
|
|
||||||
-fomit-frame-pointer -fexpensive-optimizations
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),i386)
|
ifeq ($(ARCH),i386)
|
||||||
RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops -malign-loops=2 \
|
#RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops -malign-loops=2 \
|
||||||
-malign-jumps=2 -malign-functions=2
|
# -malign-jumps=2 -malign-functions=2 -g
|
||||||
|
RELEASE_CFLAGS+=-O2 -malign-loops=2 -malign-jumps=2 -malign-functions=2 -g
|
||||||
# compiler bugs with gcc 2.96 and 3.0.1 can cause bad builds with heavy opts.
|
# compiler bugs with gcc 2.96 and 3.0.1 can cause bad builds with heavy opts.
|
||||||
#RELEASE_CFLAGS=$(BASE_CFLAGS) -O6 -march=i686 -ffast-math -funroll-loops \
|
#RELEASE_CFLAGS=$(BASE_CFLAGS) -O6 -m486 -ffast-math -funroll-loops \
|
||||||
# -fomit-frame-pointer -fexpensive-optimizations -malign-loops=2 \
|
# -fomit-frame-pointer -fexpensive-optimizations -malign-loops=2 \
|
||||||
# -malign-jumps=2 -malign-functions=2
|
# -malign-jumps=2 -malign-functions=2
|
||||||
endif
|
endif
|
||||||
|
@ -85,7 +83,11 @@ GAME_DIR=$(MOUNT_DIR)/game
|
||||||
CTF_DIR=$(MOUNT_DIR)/ctf
|
CTF_DIR=$(MOUNT_DIR)/ctf
|
||||||
XATRIX_DIR=$(MOUNT_DIR)/xatrix
|
XATRIX_DIR=$(MOUNT_DIR)/xatrix
|
||||||
|
|
||||||
BASE_CFLAGS=-Dstricmp=strcasecmp -Wall -Werror
|
BASE_CFLAGS=-Dstricmp=strcasecmp -Wall -Werror -pipe
|
||||||
|
|
||||||
|
ifneq ($(ARCH),i386)
|
||||||
|
BASE_CFLAGS+=-DC_ONLY
|
||||||
|
endif
|
||||||
|
|
||||||
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
|
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
|
||||||
|
|
||||||
|
@ -114,11 +116,12 @@ SHLIBEXT=so
|
||||||
SHLIBCFLAGS=-fPIC
|
SHLIBCFLAGS=-fPIC
|
||||||
SHLIBLDFLAGS=-shared
|
SHLIBLDFLAGS=-shared
|
||||||
|
|
||||||
DO_CC=$(CC) $(CFLAGS) -o $@ -c $<
|
# added $(ARCH) here as make would munge the quoting in BASE_CFLAGS above
|
||||||
DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
|
DO_CC=$(CC) -DARCH=\""$(ARCH)"\" $(CFLAGS) -o $@ -c $<
|
||||||
DO_GL_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) $(GLCFLAGS) -o $@ -c $<
|
DO_SHLIB_CC=$(CC) -DARCH=\""$(ARCH)"\" $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
|
||||||
DO_AS=$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
DO_GL_SHLIB_CC=$(CC) -DARCH=\""$(ARCH)"\" $(CFLAGS) $(SHLIBCFLAGS) $(GLCFLAGS) -o $@ -c $<
|
||||||
DO_SHLIB_AS=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
DO_AS=$(CC) -DARCH=\""$(ARCH)"\" $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
||||||
|
DO_SHLIB_AS=$(CC) -DARCH=\""$(ARCH)"\" $(CFLAGS) $(SHLIBCFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
# SETUP AND BUILD
|
# SETUP AND BUILD
|
||||||
|
@ -132,74 +135,16 @@ ifeq ($(strip $(BUILD_CTFDLL)),YES)
|
||||||
TARGETS += $(BUILDDIR)/ctf/game$(ARCH).$(SHLIBEXT)
|
TARGETS += $(BUILDDIR)/ctf/game$(ARCH).$(SHLIBEXT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(ARCH),axp)
|
|
||||||
ifeq ($(strip $(BUILD_SDLQUAKE2)),YES)
|
ifeq ($(strip $(BUILD_SDLQUAKE2)),YES)
|
||||||
TARGETS += $(BUILDDIR)/sdlquake2
|
TARGETS += $(BUILDDIR)/sdlquake2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_SVGA)),YES)
|
# svgalib just doesn't work with non-i386 at the moment, so don't bother
|
||||||
$(warning Warning: SVGAlib support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_X11)),YES)
|
|
||||||
$(warning Warning: X11 support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_GLX)),YES)
|
|
||||||
$(warning Warning: support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_FXGL)),YES)
|
|
||||||
$(warning Warning: FXGL support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_SDL)),YES)
|
|
||||||
$(warning Warning: SDL support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_SDLGL)),YES)
|
|
||||||
$(warning Warning: SDLGL support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
endif # ARCH axp
|
|
||||||
|
|
||||||
ifeq ($(ARCH),ppc)
|
|
||||||
ifeq ($(strip $(BUILD_SDLQUAKE2)),YES)
|
|
||||||
$(warning Warning: SDLQuake2 not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_SVGA)),YES)
|
|
||||||
$(warning Warning: SVGAlib support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_X11)),YES)
|
|
||||||
$(warning Warning: X11 support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_GLX)),YES)
|
|
||||||
$(warning Warning: GLX support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_FXGL)),YES)
|
|
||||||
$(warning Warning: FXGL support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_SDL)),YES)
|
|
||||||
$(warning Warning: SDL support not supported for $(ARCH))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_SDLGL)),YES)
|
|
||||||
TARGETS += $(BUILDDIR)/ref_sdlgl.$(SHLIBEXT)
|
|
||||||
endif
|
|
||||||
endif # ARCH ppc
|
|
||||||
|
|
||||||
ifeq ($(ARCH),i386)
|
ifeq ($(ARCH),i386)
|
||||||
ifeq ($(strip $(BUILD_SDLQUAKE2)),YES)
|
|
||||||
TARGETS += $(BUILDDIR)/sdlquake2
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_SVGA)),YES)
|
ifeq ($(strip $(BUILD_SVGA)),YES)
|
||||||
TARGETS += $(BUILDDIR)/ref_soft.$(SHLIBEXT)
|
TARGETS += $(BUILDDIR)/ref_soft.$(SHLIBEXT)
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(BUILD_X11)),YES)
|
ifeq ($(strip $(BUILD_X11)),YES)
|
||||||
TARGETS += $(BUILDDIR)/ref_softx.$(SHLIBEXT)
|
TARGETS += $(BUILDDIR)/ref_softx.$(SHLIBEXT)
|
||||||
|
@ -220,7 +165,6 @@ ifeq ($(ARCH),i386)
|
||||||
ifeq ($(strip $(BUILD_SDLGL)),YES)
|
ifeq ($(strip $(BUILD_SDLGL)),YES)
|
||||||
TARGETS += $(BUILDDIR)/ref_sdlgl.$(SHLIBEXT)
|
TARGETS += $(BUILDDIR)/ref_sdlgl.$(SHLIBEXT)
|
||||||
endif
|
endif
|
||||||
endif # ARCH i386
|
|
||||||
|
|
||||||
all: build_debug build_release
|
all: build_debug build_release
|
||||||
|
|
||||||
|
@ -307,11 +251,11 @@ QUAKE2_SDL_OBJS = \
|
||||||
$(BUILDDIR)/client/cd_sdl.o \
|
$(BUILDDIR)/client/cd_sdl.o \
|
||||||
$(BUILDDIR)/client/snd_sdl.o
|
$(BUILDDIR)/client/snd_sdl.o
|
||||||
|
|
||||||
ifeq ($(ARCH),axp)
|
# more i386 asm
|
||||||
QUAKE2_AS_OBJS = #blank
|
ifeq ($(ARCH),i386)
|
||||||
|
QUAKE2_AS_OBJS = $(BUILDDIR)/client/snd_mixa.o
|
||||||
else
|
else
|
||||||
QUAKE2_AS_OBJS = \
|
QUAKE2_AS_OBJS = #blank
|
||||||
$(BUILDDIR)/client/snd_mixa.o
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(BUILDDIR)/quake2 : $(QUAKE2_OBJS) $(QUAKE2_LNX_OBJS) $(QUAKE2_AS_OBJS)
|
$(BUILDDIR)/quake2 : $(QUAKE2_OBJS) $(QUAKE2_LNX_OBJS) $(QUAKE2_AS_OBJS)
|
||||||
|
@ -401,7 +345,7 @@ $(BUILDDIR)/client/cvar.o : $(COMMON_DIR)/cvar.c
|
||||||
$(BUILDDIR)/client/files.o : $(COMMON_DIR)/files.c
|
$(BUILDDIR)/client/files.o : $(COMMON_DIR)/files.c
|
||||||
$(DO_CC)
|
$(DO_CC)
|
||||||
|
|
||||||
$(BUILDDIR)/client/mdfour.o : $(COMMON_DIR)/mdfour.c
|
$(BUILDDIR)/client/mdfour.o : $(COMMON_DIR)/mdfour.c
|
||||||
$(DO_CC)
|
$(DO_CC)
|
||||||
|
|
||||||
$(BUILDDIR)/client/net_chan.o : $(COMMON_DIR)/net_chan.c
|
$(BUILDDIR)/client/net_chan.o : $(COMMON_DIR)/net_chan.c
|
||||||
|
@ -1020,7 +964,12 @@ REF_SOFT_OBJS = \
|
||||||
$(BUILDDIR)/ref_soft/r_scan.o \
|
$(BUILDDIR)/ref_soft/r_scan.o \
|
||||||
$(BUILDDIR)/ref_soft/r_sprite.o \
|
$(BUILDDIR)/ref_soft/r_sprite.o \
|
||||||
$(BUILDDIR)/ref_soft/r_surf.o \
|
$(BUILDDIR)/ref_soft/r_surf.o \
|
||||||
\
|
$(BUILDDIR)/ref_soft/q_shared.o \
|
||||||
|
$(BUILDDIR)/ref_soft/q_shlinux.o \
|
||||||
|
$(BUILDDIR)/ref_soft/glob.o
|
||||||
|
|
||||||
|
ifeq ($(ARCH),i386)
|
||||||
|
REF_SOFT_OBJS += \
|
||||||
$(BUILDDIR)/ref_soft/r_aclipa.o \
|
$(BUILDDIR)/ref_soft/r_aclipa.o \
|
||||||
$(BUILDDIR)/ref_soft/r_draw16.o \
|
$(BUILDDIR)/ref_soft/r_draw16.o \
|
||||||
$(BUILDDIR)/ref_soft/r_drawa.o \
|
$(BUILDDIR)/ref_soft/r_drawa.o \
|
||||||
|
@ -1031,11 +980,8 @@ REF_SOFT_OBJS = \
|
||||||
$(BUILDDIR)/ref_soft/math.o \
|
$(BUILDDIR)/ref_soft/math.o \
|
||||||
$(BUILDDIR)/ref_soft/d_polysa.o \
|
$(BUILDDIR)/ref_soft/d_polysa.o \
|
||||||
$(BUILDDIR)/ref_soft/r_varsa.o \
|
$(BUILDDIR)/ref_soft/r_varsa.o \
|
||||||
$(BUILDDIR)/ref_soft/sys_dosa.o \
|
$(BUILDDIR)/ref_soft/sys_dosa.o
|
||||||
\
|
endif
|
||||||
$(BUILDDIR)/ref_soft/q_shared.o \
|
|
||||||
$(BUILDDIR)/ref_soft/q_shlinux.o \
|
|
||||||
$(BUILDDIR)/ref_soft/glob.o
|
|
||||||
|
|
||||||
REF_SOFT_SVGA_OBJS = \
|
REF_SOFT_SVGA_OBJS = \
|
||||||
$(BUILDDIR)/ref_soft/rw_svgalib.o \
|
$(BUILDDIR)/ref_soft/rw_svgalib.o \
|
||||||
|
@ -1283,6 +1229,6 @@ clean2:
|
||||||
$(REF_GL_OBJS)
|
$(REF_GL_OBJS)
|
||||||
|
|
||||||
distclean:
|
distclean:
|
||||||
@-rm -rf $(BUILD_DEBUG_DIR) $(BUILD_RELEASE_DIR)
|
-rm -rf $(BUILD_DEBUG_DIR) $(BUILD_RELEASE_DIR)
|
||||||
@-rm -f `find . \( -not -type d \) -and \
|
-rm -f `find . \( -not -type d \) -and \
|
||||||
\( -name '*~' \) -type f -print`
|
\( -name '*~' \) -type f -print`
|
||||||
|
|
|
@ -412,7 +412,7 @@ cblock_t Huff1Decompress (cblock_t in)
|
||||||
|
|
||||||
if (input - in.data != in.count && input - in.data != in.count+1)
|
if (input - in.data != in.count && input - in.data != in.count+1)
|
||||||
{
|
{
|
||||||
Com_Printf ("Decompression overread by %i", (input - in.data) - in.count);
|
Com_Printf ("Decompression overread by %i", (int) (input - in.data) - in.count);
|
||||||
}
|
}
|
||||||
out.count = out_p - out.data;
|
out.count = out_p - out.data;
|
||||||
|
|
||||||
|
|
|
@ -614,11 +614,11 @@ int entitycmpfnc( const entity_t *a, const entity_t *b )
|
||||||
*/
|
*/
|
||||||
if ( a->model == b->model )
|
if ( a->model == b->model )
|
||||||
{
|
{
|
||||||
return ( ( int ) a->skin - ( int ) b->skin );
|
return (long int) a->skin - (long int) b->skin;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return ( ( int ) a->model - ( int ) b->model );
|
return (long int) a->model - (long int) b->model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -253,7 +253,7 @@ void DumpChunks(void)
|
||||||
memcpy (str, data_p, 4);
|
memcpy (str, data_p, 4);
|
||||||
data_p += 4;
|
data_p += 4;
|
||||||
iff_chunk_len = GetLittleLong();
|
iff_chunk_len = GetLittleLong();
|
||||||
Com_Printf ("0x%x : %s (%d)\n", (int)(data_p - 4), str, iff_chunk_len);
|
Com_Printf ("0x%p : %s (%d)\n", data_p - 4, str, iff_chunk_len);
|
||||||
data_p += (iff_chunk_len + 1) & ~1;
|
data_p += (iff_chunk_len + 1) & ~1;
|
||||||
} while (data_p < iff_end);
|
} while (data_p < iff_end);
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,7 +175,7 @@ void InitGame (void)
|
||||||
//ZOID
|
//ZOID
|
||||||
//This game.dll only supports deathmatch
|
//This game.dll only supports deathmatch
|
||||||
if (!deathmatch->value) {
|
if (!deathmatch->value) {
|
||||||
gi.dprintf("Forcing deathmatch.");
|
gi.dprintf("Forcing deathmatch.\n");
|
||||||
gi.cvar_set("deathmatch", "1");
|
gi.cvar_set("deathmatch", "1");
|
||||||
}
|
}
|
||||||
//force coop off
|
//force coop off
|
||||||
|
|
|
@ -11,14 +11,34 @@ access to other platforms.
|
||||||
Be sure to install SDL 1.2 (http://www.libsdl.org) if you want to use the
|
Be sure to install SDL 1.2 (http://www.libsdl.org) if you want to use the
|
||||||
softsdl or sdlgl drivers, or the sdlquake2 binary.
|
softsdl or sdlgl drivers, or the sdlquake2 binary.
|
||||||
|
|
||||||
You can change what drivers you wish to build by editing the Makefile and
|
|
||||||
changing the BUILD_ lines at the very top.
|
|
||||||
|
|
||||||
'make' will, by default, build both the debug and release files.
|
'make' will, by default, build both the debug and release files.
|
||||||
To build fully optimized binaries: make build_release
|
To build fully optimized binaries: make build_release
|
||||||
The resulting binaries are then put in releasei386.
|
The resulting binaries are then put in releasei386.
|
||||||
|
|
||||||
|
|
||||||
|
Makefile options:
|
||||||
|
-----------------
|
||||||
|
(quake2 and gamei386.so are always built, but the following options can be
|
||||||
|
changed by editing the Makefile)
|
||||||
|
BUILD_SDLQUAKE2 Build sdlquake2, a quake2 binary that uses SDL for
|
||||||
|
CD audio and sound access (default = YES).
|
||||||
|
BUILD_SVGA Build ref_soft.so, a quake2 video driver that uses
|
||||||
|
SVGAlib (default = NO).
|
||||||
|
BUILD_X11 Build ref_softx.so, a quake2 video driver that uses
|
||||||
|
X11 (default = YES).
|
||||||
|
BUILD_GLX Build ref_glx.so, a quake2 video driver that uses
|
||||||
|
X11's GLX (default = YES).
|
||||||
|
BUILD_FXGL Build ref_gl.so [might be renamed to fxgl later],
|
||||||
|
a quake2 video driver that uses fxMesa (default =
|
||||||
|
NO). This option is currently untested because I do
|
||||||
|
not have a Voodoo 1 or 2.
|
||||||
|
BUILD_SDL Build ref_softsdl.so, a quake2 video driver that
|
||||||
|
uses SDL (default = YES).
|
||||||
|
BUILD_SDLGL Build ref_sdlgl.so, a quake2 video driver that uses
|
||||||
|
OpenGL with SDL (default = YES).
|
||||||
|
BUILD_CTFDLL Build the Threewave CTF gamei386.so (default = NO).
|
||||||
|
|
||||||
|
|
||||||
To install the Quake2 gamedata:
|
To install the Quake2 gamedata:
|
||||||
-------------------------------
|
-------------------------------
|
||||||
(installdir is wherever you want to install quake2, and cdromdir is wherever
|
(installdir is wherever you want to install quake2, and cdromdir is wherever
|
||||||
|
@ -59,11 +79,20 @@ line).
|
||||||
Configuration files and such are saved in ~/.quake2/, so <installdir> can be
|
Configuration files and such are saved in ~/.quake2/, so <installdir> can be
|
||||||
made read-only or whatever.
|
made read-only or whatever.
|
||||||
|
|
||||||
WARNING: Please do not make quake2 or any of the libraries suid root!
|
WARNING: Please do not make quake2 or any of the libraries suid root! Doing
|
||||||
|
so is at your own risk.
|
||||||
|
|
||||||
NOTE: Save games will most likely not work across different versions or
|
NOTE: Save games will not work across different versions or builds, because
|
||||||
builds (this is due to how savegames were stored).
|
of the way they are stored.
|
||||||
|
|
||||||
|
Dedicated Server:
|
||||||
|
-----------------
|
||||||
|
If there is a demand for it, I can add support for an explicit q2ded binary.
|
||||||
|
Else, using +set dedicated 1 should be fine.
|
||||||
|
|
||||||
|
Joystick Support:
|
||||||
|
-----------------
|
||||||
|
None yet.
|
||||||
|
|
||||||
Commonly used commands:
|
Commonly used commands:
|
||||||
-----------------------
|
-----------------------
|
||||||
|
@ -80,28 +109,63 @@ vid_restart // restart video driver
|
||||||
snd_restart // restart sound driver
|
snd_restart // restart sound driver
|
||||||
basedir <dir> // point quake2 to where the data is
|
basedir <dir> // point quake2 to where the data is
|
||||||
gl_driver <libGL.so> // point quake2 to your libGL
|
gl_driver <libGL.so> // point quake2 to your libGL
|
||||||
|
dedicated 1 // run quake2 as a dedicated server
|
||||||
|
|
||||||
|
When using these commands on the quake2 command line, use +set to cause the
|
||||||
|
variables be set before the config files are loaded (important for
|
||||||
|
gl_driver). e.g.
|
||||||
|
./quake2 +set vid_ref glx +set gl_driver /usr/lib/libGL.so.1
|
||||||
|
|
||||||
|
If quake2 crashes when trying to load an OpenGL based driver (glx, sdlgl),
|
||||||
|
make sure its not loading the wrong libGL.
|
||||||
|
|
||||||
|
Have a NVIDIA card and it _still_ crashes? Try
|
||||||
|
export LD_PRELOAD=/usr/lib/libGL.so, and run quake2 again.
|
||||||
|
|
||||||
|
Is lighting slow in OpenGL (while firing, explosions, etc.)? Disable
|
||||||
|
multitexturing (gl_ext_multitexture 0; vid_restart).
|
||||||
|
|
||||||
|
|
||||||
Website:
|
Website:
|
||||||
--------
|
--------
|
||||||
I'll post any updates I make at http://www.icculus.org/quake/
|
I'll post any updates I make at http://www.icculus.org/quake2/
|
||||||
(which currently redirects to http://www.icculus.org/~relnev/)
|
(which currently redirects to http://www.icculus.org/~relnev/)
|
||||||
|
|
||||||
|
Mailing List:
|
||||||
|
-------------
|
||||||
|
to subscribe: send a blank email to quake2-subscribe@icculus.org
|
||||||
|
to post: send email to quake2@icculus.org
|
||||||
|
|
||||||
Anonymous CVS access:
|
Anonymous CVS access:
|
||||||
---------------------
|
---------------------
|
||||||
cvs -d:pserver:anonymous@icculus.org:/cvs/cvsroot login
|
cvs -d:pserver:anonymous@icculus.org:/cvs/cvsroot login
|
||||||
(password is "anonymous" without the quotes.)
|
(password is "anonymous" without the quotes.)
|
||||||
cvs -z3 -d:pserver:anonymous@icculus.org:/cvs/cvsroot co quake2
|
cvs -z3 -d:pserver:anonymous@icculus.org:/cvs/cvsroot co quake2
|
||||||
|
|
||||||
Questions:
|
Bugzilla:
|
||||||
----------
|
---------
|
||||||
What's the best way of handling international keyboards with SDL?
|
https://bugzilla.icculus.org
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
-----
|
-----
|
||||||
|
Try out RCG's key idea.
|
||||||
Fix save games.
|
Fix save games.
|
||||||
|
Verify FXGL works.
|
||||||
|
Joystick support.
|
||||||
|
Fullscreen/DGA support in X11 driver.
|
||||||
|
Fully switch to glext.h.
|
||||||
Suggestions, anyone?
|
Suggestions, anyone?
|
||||||
|
|
||||||
|
v0.0.8: [01/04/02]
|
||||||
|
-------
|
||||||
|
+ Fixed C-only ref_soft building.
|
||||||
|
+ SDL CD audio looping fix (Robert Bäuml)
|
||||||
|
+ ~/.quake2/<game> added to the search path for mods. (Ludwig Nussel)
|
||||||
|
+ Minor change to fix compilation with OpenGL 1.3 headers.
|
||||||
|
+ Fixed changing video drivers using the menu.
|
||||||
|
+ Fixed autoexec.cfg on startup.
|
||||||
|
+ Sparc Linux support (Vincent Cojot)
|
||||||
|
|
||||||
v0.0.7: [12/28/01]
|
v0.0.7: [12/28/01]
|
||||||
-------
|
-------
|
||||||
+ Merged in Quake2 3.21 source.
|
+ Merged in Quake2 3.21 source.
|
||||||
|
@ -150,7 +214,10 @@ John Allensworth
|
||||||
Stephen Anthony
|
Stephen Anthony
|
||||||
William Aoki
|
William Aoki
|
||||||
Robert Bäuml
|
Robert Bäuml
|
||||||
|
Vincent Cojot
|
||||||
|
Michel Dänzer
|
||||||
Ryan C. Gordon
|
Ryan C. Gordon
|
||||||
Ludwig Nussel
|
Ludwig Nussel
|
||||||
|
Peter van Paassen
|
||||||
Zachary 'zakk' Slater
|
Zachary 'zakk' Slater
|
||||||
Matti Valtonen
|
Matti Valtonen
|
||||||
|
|
|
@ -26,8 +26,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
|
||||||
#include <asm/io.h>
|
|
||||||
|
|
||||||
#include "vga.h"
|
#include "vga.h"
|
||||||
#include "vgakeyboard.h"
|
#include "vgakeyboard.h"
|
||||||
#include "vgamouse.h"
|
#include "vgamouse.h"
|
||||||
|
|
|
@ -42,8 +42,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
|
||||||
#include <asm/io.h>
|
|
||||||
|
|
||||||
#include "vga.h"
|
#include "vga.h"
|
||||||
#include "vgakeyboard.h"
|
#include "vgakeyboard.h"
|
||||||
#include "vgamouse.h"
|
#include "vgamouse.h"
|
||||||
|
|
|
@ -40,7 +40,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
#include "../qcommon/qcommon.h"
|
#include "../qcommon/qcommon.h"
|
||||||
|
#include "../game/game.h"
|
||||||
#include "../linux/rw_linux.h"
|
#include "../linux/rw_linux.h"
|
||||||
|
|
||||||
cvar_t *nostdout;
|
cvar_t *nostdout;
|
||||||
|
@ -214,22 +214,13 @@ Loads the game dll
|
||||||
*/
|
*/
|
||||||
void *Sys_GetGameAPI (void *parms)
|
void *Sys_GetGameAPI (void *parms)
|
||||||
{
|
{
|
||||||
void *(*GetGameAPI) (void *);
|
game_export_t *(*GetGameAPI) (game_import_t *);
|
||||||
|
|
||||||
char name[MAX_OSPATH];
|
char name[MAX_OSPATH];
|
||||||
char *path;
|
char *path;
|
||||||
char *str_p;
|
char *str_p;
|
||||||
#if defined __i386__
|
|
||||||
const char *gamename = "gamei386.so";
|
const char *gamename = "game"ARCH".so";
|
||||||
#elif defined __alpha__
|
|
||||||
const char *gamename = "gameaxp.so";
|
|
||||||
#elif defined __powerpc__
|
|
||||||
const char *gamename = "gameppc.so";
|
|
||||||
#elif defined __sparc__
|
|
||||||
const char *gamename = "gamesparc.so";
|
|
||||||
#else
|
|
||||||
#error Unknown arch
|
|
||||||
#endif
|
|
||||||
|
|
||||||
setreuid(getuid(), getuid());
|
setreuid(getuid(), getuid());
|
||||||
setegid(getgid());
|
setegid(getgid());
|
||||||
|
@ -265,7 +256,7 @@ void *Sys_GetGameAPI (void *parms)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GetGameAPI = (void *)dlsym (game_library, "GetGameAPI");
|
GetGameAPI = (game_export_t * (*)(game_import_t *)) dlsym(game_library, "GetGameAPI");
|
||||||
|
|
||||||
if (!GetGameAPI)
|
if (!GetGameAPI)
|
||||||
{
|
{
|
||||||
|
|
|
@ -69,7 +69,7 @@ static char *rd_buffer;
|
||||||
static int rd_buffersize;
|
static int rd_buffersize;
|
||||||
static void (*rd_flush)(int target, char *buffer);
|
static void (*rd_flush)(int target, char *buffer);
|
||||||
|
|
||||||
void Com_BeginRedirect (int target, char *buffer, int buffersize, void (*flush))
|
void Com_BeginRedirect (int target, char *buffer, int buffersize, void (*flush)(int, char*))
|
||||||
{
|
{
|
||||||
if (!target || !buffer || !buffersize || !flush)
|
if (!target || !buffer || !buffersize || !flush)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -735,7 +735,7 @@ MISC
|
||||||
#define PRINT_ALL 0
|
#define PRINT_ALL 0
|
||||||
#define PRINT_DEVELOPER 1 // only print when "developer 1"
|
#define PRINT_DEVELOPER 1 // only print when "developer 1"
|
||||||
|
|
||||||
void Com_BeginRedirect (int target, char *buffer, int buffersize, void (*flush));
|
void Com_BeginRedirect (int target, char *buffer, int buffersize, void (*flush)(int, char*));
|
||||||
void Com_EndRedirect (void);
|
void Com_EndRedirect (void);
|
||||||
void Com_Printf (char *fmt, ...) __attribute__((format(printf,1,2)));
|
void Com_Printf (char *fmt, ...) __attribute__((format(printf,1,2)));
|
||||||
void Com_DPrintf (char *fmt, ...) __attribute__((format(printf,1,2)));
|
void Com_DPrintf (char *fmt, ...) __attribute__((format(printf,1,2)));
|
||||||
|
|
|
@ -1074,7 +1074,7 @@ void D_DrawflatSurfaces (void)
|
||||||
|
|
||||||
// make a stable color for each surface by taking the low
|
// make a stable color for each surface by taking the low
|
||||||
// bits of the msurface pointer
|
// bits of the msurface pointer
|
||||||
D_FlatFillSurface (s, (int)s->msurf & 0xFF);
|
D_FlatFillSurface (s, (long int) s->msurf & 0xFF);
|
||||||
D_DrawZSpans (s->spans);
|
D_DrawZSpans (s->spans);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -450,7 +450,7 @@ surfcache_t *D_SCAlloc (int width, int size)
|
||||||
if ((size <= 0) || (size > 0x10000))
|
if ((size <= 0) || (size > 0x10000))
|
||||||
ri.Sys_Error (ERR_FATAL,"D_SCAlloc: bad cache size %d\n", size);
|
ri.Sys_Error (ERR_FATAL,"D_SCAlloc: bad cache size %d\n", size);
|
||||||
|
|
||||||
size = (int)&((surfcache_t *)0)->data[size];
|
size = (long int)&((surfcache_t *)0)->data[size];
|
||||||
size = (size + 3) & ~3;
|
size = (size + 3) & ~3;
|
||||||
if (size > sc_size)
|
if (size > sc_size)
|
||||||
ri.Sys_Error (ERR_FATAL,"D_SCAlloc: %i > cache size of %i",size, sc_size);
|
ri.Sys_Error (ERR_FATAL,"D_SCAlloc: %i > cache size of %i",size, sc_size);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue