MiniRacer Linux Port Changelog
------------------------------

12/17/02: began porting the code (wrote a makefile) to see what gets compiled
and what not


12/19/02: added portable code from QW/client/keys.c to win32-only file keys.c
files:
	misc/keys.c

converted from <CR-LF> to <CR> format
files:
	mathlib.h

12/22/02: replaced win32 code from misc/load.c by posix dirent routines
files:
	misc/load.c

replaced asm code from client/mathlib.c by a simple definition, FP_BITS() macro
rewritten (replaced DWORD by unsigned long)
files:
	client/mathlib.c

replaced sys_win.c by sys_linux.c, made some changes to sys_linux.c
files:
	client/sys_linux.c

changed name of game internal struct mode_t to MR_mode_t to avoid conflicts
with mode_t in sys/types.h (both defs have nothing in common!!!)
files:
	quakedef.h
	opengl/gl_vidnt.c (win32 code, probably not usable)

converted from <CR-LF> to <CR> format
files:
	opengl/gl_car.c

removed APIENTRY statements from definitions
files:
	opengl/gl_draw.c
	opengl/gl_rsurf.c
	opengl/gl_skids.c

replaced win32 Sleep() call by posix sleep()
files:
	opengl/gl_screen.c

replaced opengl/gl_vidnt.c by QW/gl_vidlinuxglx.c
files:
	opengl/gl_vidlinuxglx.c

changed _windowed_mouse.value to _windowed_mouse.fvalue to make it possible
to use cvar_t from miniracer, deactivated much code, added definitions from
QW/clients/keys.h, QW/clients/common.h, QW/clients/both.h, QW/clients/client.h,
QW/clients/protocol.h and QW/clients/quakedef.h
files:
	opengl/gl_vidlinuxglx.c

converted from <CR-LF> to <CR> format
files:
	opengl/gl_warp.c

included stdlib.h in quakedef.h
files:
	quakedef.h

changed name of variable random to randomized to avoid conflicts with stdlib.h 
files:
	opengl/gl_smoke.c

included string.h, stdio.h and unistd.h in quakedef.h and added some useful
definitions
files:
	quakedef.h

all variables have to be declared in .h and in .c file, added missing variables
(host_frametime, realtime, host_fromecount)
to c-files (MSVC uses precompiled headers instead)
files:
	client/cl_main.c

added functions from QW/client/sys_null.c to sys_linux.c
files:
	misc/sys_linux.c

removed almost all code from sound.c, because the sound engine is win32
files:
	sound/sound.c

added missing variables
(vid)
files:
	opengl/gl_screen.c

added missing variables from sys_win.c
(isDedicated)
files:
	misc/sys_linux.c

removed VID_SetGamma call calls from gamma.c
files:
	misc/gamma.c

removed all code from Menu_Mouse()
files:
	misc/menu.c

added CompleteCommand() from QW/client/keys.c
files:
	misc/keys.c

changed network from winsock to udp, changed value to fvalue and disabled qport
to make it possible to use struct cvar_t from minracer
files:
	net.h
	network/net_chan.c
	network/net_udp.c

added variable net_activeconnections from original net.h
files:
	net.h

12/23/02:
changed definition for NET_Init() so that it takes a port number, required by
NET_Init() from QW
files:
	host/host.c

added variables tcpipAvailable and my_tcp_address and other code from original
net.h
files:
	net.h

added missing variables from net_main.c
(net_activeconnections)
files:
	host/host.c

changed networking: added net_dgrm.c, net_loop.c, net_main.c and net_win.c
written net_fake.c with code from net_loop.c
files:
	network/net_dgrm.c
	network/net_main.c
	network/net_win.c
	network/net_loop.c
	network/net_fake.c
	net.h
	host/host.c (NET_Init)

removed net_dgrm.c and net_fake.c, removed lan_drivers_t in net_win.c

added GL_SelectTexture from QW/client/gl_rsurf.c to opengl/gl_rsurf.c

12/30/02:
realized that MiniRacer engine uses WinQuake, not QW, restarted the work...
added networking, changed the Q_ functions in net_udp.c to MR_, enabled
the std strrchr function instead of Q_strrchr, added declaration for inet_addr
from WinQuake/net_dgrm.c ro network/net_dgrm.c
files:
	network/net_bsd.c (added from WinQuake, changed)
	network/net_dgrm.c (old, changed)
	network/net_main.c (old)
	network/net_loop.c (old)
	network/net_vcr.c (added from WinQuake, changed)
	network/net_udp.c (added from WinQuake, changed)
	net_vcr.h
	net_udp.h

removed unistd.h from quakedef.h (conflicting types)
files:
	quakedef.h

added definitions from WinQuake/sys_linux.c to misc/sys_linux.c, replaced
Sys_FloatTime() from sys_null.c
files:
	misc/sys_linux.c

added variable vcrFile from WinQuake/net_main.c to network/net_main.c
files:
	network/net_main.c

01/03/03:
added int memsize to struct MR_parms_t and changed Host_Init to
accept this parameter, to avoid segfault caused by memcpy() at start
files:
	quakedef.h
	host/host.c
	zone.h
	misc/zone.c
	misc/sys_linux.c

LoadList() from misc/load.c does not accept wildcars, but the call from
misc/menu.c contains wildcards
files:
	misc/menu.c
	
01/04/03:
gl_vidlinuxglx.c replaced by derivation from WinQuake
added initializers to console.c (variable y)
TODO:	load palette.lmp from Quake for default GL palette (gl_vidlinuxglx.c) 
files:
	opengl/gl_vidlinuxglx.c
	console/console.c

01/05/03:
debugging output in load.c: problems with case sensitivity
removed temp[list_count]-=32, unknown if this is right!

game_precache.c: tries to open models/%.car, but glob returns full paths, fixed
same in gl_car.c

using strtok() in load.c to solve the problem with glob, cause COM_LoadFile from
Quake adds the substring data/ to each filename

strtok() returns segfault! ->disabled

new try with strstr() -> success!

renamed f40.car to F40.car, case sensititity!
renamed f40.mrt to F40.mrt, case sensititity!

01/06/03:
load.c: added code to remove leading path names

01/06/03:
tried to compile with gcc under win32, added code to sys_win.c (problems with
nameless unions), compilation with gcc now simply requires -DNONAMELESSUNION,
added definition for CDS_FULLSCREEN to gl_vidnt.c (from Borland BCC 5.5 Includes)
 


01/08/03:
load.c: rewritten LoadFile, path name and file name are now seperated. For use with
Win32 the will be strcat'ed before FindFirstFile(). For Unix we do a chdir() to
pathname and then a glob() for filename, after glob() a chdir() back to old path.
This is the best solution i found...
files:
	load.c
	menu.h
	menu.c
	game_precache.c
	gl_draw.c (added some debugging output)

Now i have a massive problem with GL, i think i have to learn it...

01/12/03:
added some stuff from gl_vidnt.c, removed unneccessary cod
files:
	opengl/vid_linuxglx.c

01/19/03:
gl_vidlinuxglx.c: tried to rewrite with code from gl_vidnt.c, WinQuake and
GL tutorials
	
01/20/03:
changed vid_linuxglx.c, added code from vid_nt.c and function based on GL tutorials,
we have now graphics!!! wow! we have no textures yet. now i know that my idea
to load palette.lmp from Quake was unneccessary or wrong or both.
files:
	opengl/vid_linuxglx.c

01/21/03:
completely rewritten misc/load.c, fixed bugs: S_ISDIR() has always failed because
its argument was not statbuf.st_mode and chdir(oldpath) was called too early
files:
	misc/load.c

01/22/03:
changed symbol names for the test object (searched for symbols which are not
in the GL library, added GL_VENDOR output 
files:
	opengl/vid_linuxglx.c

merged VID_SetMode() into VID_Init, re-added videomode selection code to
VID_Init() and VID_Shutdown(), the key handler now works
files:
	opengl/vid_linuxglx.c

01/23/03:
unable to start the game, because there was simply no start key binding
in config.cfg, fixed, now the game is startable, but after the countdown it
gets stuck
files:
	data/config.cfg
	
tried to play around with the functions in gl_vidlinuxglx.c, found a strange
behaviour with the textures when trying GL_Init() from WinQuake: program uses
the miniracer logo as texture

01/24/03:
i work on 2 linux boxes, synced my code and ChangeLog changes, realized
that my change in host.c (variable y) is really a bug
files on my 2nd linux box:
	console/console.c (undone all changes, we can use the native file)
	game_precache.c (undone all changes, but changed LoadList() call)
	menu.h (changed LoadList call)
	menu.c (undone all changes, but changed LoadList() call)

Further work on gl_vidlinuxglx.c and gl_rsurf.c, figured out that the ARB
Multitexture Extension is not useable (segfault), but we can use SGIS.
miniracer does not find multitxture extensions, but the routines in gl_rsurf.c
need them! if there is no multitexture support, the program will segfault,
there is no checking and disabling like in Quake!
(Quake: CheckMultiTextureExtensions() sets a variable gl_mtexable,
when gl_mtexable is false, multitexture wrapper functions in gl_rsurf.c return
no value, else the symbols from qglSelectTextureSGIS and qglMTexCoord2f will be
used.)

Now trying to use all original opengl stuff, except gl_vidnt.c (replaced by
gl_vidlinuxglx.c) and gl_rsurf.c (added wrapper functions for glSelecttexture
and glMTexCoord2f)

01/24/03:
backport to windows: check if it still works with windows, because of the
subtile error when trying to start the game: 
asm code in mathlib.c is only useable with masm and i use the GNU toolchain,
enclosed it in #ifdef _MASM #endif
in_addr, which is used in net_dgrm.c is declared in winsock.h,
enclosed it in #ifndef _WIN32 #endif
removed debugging output from gl_draw.c
declaration of _mkdir in gl_screen is only useable with msvc,
enclosed it in #ifdef _MSVC #endif
sv_main.c: removed debugging statements, now using original code again
cl_main.c: removed debugging statements, now using original code again

01/25/03:
back to the roots: now using original zone.h and host.c again! added definiton
to zone.c that enough memory is allocated (we need 8*1024*1024 under win32 and
16*1024*1024 under linux). but the memsize field from MR_mode_t in
quakedef.h is not obsolete, it is still required in sys_linux.c, try to fix it
later. cleaned the code and removed all unneccessary stuff that i have
implemented for compatibility with the quake sourcecode and debugging
files:
	client.h (removed viewangles from client_t)
	opengl/gl_vidlinuxglx.c (removed all mousehandling stuff, we don't need it yet)
	misc/common.c (using original again)
	misc/cl_main.c (using original again)

backport to win:
f40 must not be have a big letter at the beginning!!! (LoadList returns &40,
possibly the statement temp[list_count][0]-=32 causes this error)
miniracer runs under windows, with and without multitexture und vertex arrays,
changed names for glLockArraysEXT and glLockArraysEXT, because these function
really exist under Linux and NV-Hardware
new names for wrappers around GlSelectTexture() and glMTexCoord2f()
glLockArraysEXT -> MRglLockArraysEXT (name clash under linux)
glUnlockArraysEXT -> glUnlockArraysEXT (name clash under linux)
glSelectTexture -> MRglSelectTexture
glMTexCoord2f -> MRglMTexCoord2f
files:
    opengl/gl_draw.c
    opengl/gl_skids.c
    opengl/gl_smoke.c
    opengl/gl_rsurf.c
    opengl/gl_vidnt.c
    opengl/gl_vidlinuxglx.c

now using miniracer MR_strcpy and MR_strcmp functions instead of preprocessor
macros
files:
    misc/keys.c 

01/26/03:
under linux we _need_ multitexture support, removed old wrapper functions from
gl_rsurf.c, wrote some new wrapper functions in gl_vidlinuxglx.c and added
variable gl_vertex to determine whether Vertex Arrays are present or not:
MR1glLockArraysEXT -> MRglLockArraysEXT
MR1glUnlockArraysEXT -> glUnlockArraysEXT
MR1glSelectTexture -> MRglSelectTexture
MR1glMTexCoord2f -> MRglMTexCoord2f

The ARB Multitexture Extension is now useable!
NOW WE HAVE TEXTURES!!! WOW!!!

but the game still does not start...
files:
    opengl/gl_rsurf.c
    opengl/gl_vidlinuxglx.c

01/29/03:
reactivated assembler code for DotProduct using gcc inline assembly.
files:
    misc/mathlib.c
 
01/29/03:
found starting error: played around with the function MoveBot() and GetCarToMove(),
especially with the AngleVector() call from thees functions. found that something goes
wrong with the trigonometrical functions from MiniRacer (perhaps the sine table) under
Linux, replaced them by the native calls from libm.
MINIRACER IS NOW RUNNING!!! YABBADABBADOO!!!
files:
    misc/mathlib.c

02/02/03:
found the math problem: Math_Init() must be called from Sys_Init(), added this missing
call from sys_win.c to sys_linux.c, added compiler definition _NATIVE_MATH for using
native or MiniRacer math functions and _NO_ASM for DotProduct() when no assember is
available.
files:
    misc/sys_linux.c
    misc/mathlib.c

02/03/03:                                                                            
added some code from WinQuake to make the game playable without multitexture support
(playable but no textures, looks ugly, for testing only)
files:
	opengl/gl_rsurf.c

car setup did not work, found the reason: obsolete #ifdef _WIN32... construct in
gl_car.c (added to make my obsolete modified version of load.c work), now using
the original file again (<CR-LF> to <CR> converted version of the original file).
files:
    opengl/gl_car.c

made some changes in the Makefile, added new Makefile.nativemath for compiling
MiniRacer using native math functions from libm instead of MiniRacers mathlib.c
and no assemler routine for DotProduct(), for testing
files:
    Makefile
    Makefile.nativemath

02/04/03:
reactivated videomode switching using install_grabs() (with patch from
Linux-Quake-HOWTO) and uninstall_grabs(). game now playable in fullscreen mode.
files:
    opengl/gl_vidlinuxglx.c

cleaned the code and removed obsolete versions of files (*.1st, *.save, *.w32)
renamed load.c to load_unix.c
files:
    misc/load_w32.c
    misc/load_unix.c
    Makefile
    Makefile.nativemath

dgamouse caused problems on my linux box and we do not need it for MiniRacer,
removed dgamouse and all unneccessary stuff from gl_vidlinuxglx.c
files:
    misc/gl_vidlinuxglx.c

win32 version: added variable gl_mtexable to gl_vidnt.c, needed for
R_DrawMTexPoly() in gl_rsurf.c
files:
    opengl/gl_vidnt.c

02/06/03:
win32 version: removed obsolete winquake.h, made decision for case sensitivity: MiniRacer's
file loading routines will be (and stay) case sensitive.
files:
    engine.dev

02/08/03:
problems with mathlib.c under dev-c++, <CR><LF> mixed, converted the file
files:
    misc/mathlib.c

fixed the console bug, removed obsolete code from keys.c. it's now the original
file again, with some additional #ifdef _WIN32 ... #endif statements.
files:
    misc/keys.c

removed obsolete code for win32 mouse handler from menu.c
files:
    misc/menu.c

02/09/03:
removed obsolete code for win32 mouse handler from menu.c
files:
    misc/menu.c

found a bug when loading themes and cars, theme selection under windows does
not work, car selection under linux has bugs. the program made an invalid entry
for car stingrayRecord in config.cfg!!!
there must be an error in LoadList() from load_w32.c and load_unix.c!

02/12/03:
probably reason for windows bug: variable dir in M_SetupCar_Change() from menu.c
does not get initialized, the LoadList() function is NOT the cause.
found new bug under linux: screenshot does not work (kills the program).
fixed keyboard and pointer grabbing bug (now doing keyboard grabbing and mouse
blanking only in fullscreen mode), functions install_grabs() and uninstall_grabs():
files:
    opengl/gl_vidlinuxglx.c

02/16/03:
fixed the windows load bug: global variables theme_count, car_count, current_car
and current_theme must be initialized to work with gcc for win32.
files:
    misc/menu.c

case sensitivity: renamed themes and cars
files:
    data/textures/*
    data/models/*.car
    data/models/*.mrt

02/19/03:
tried to find the linux bug:
using an older version of menu.c which has no bug (with additional initializers
for gcc under win32), unable to find the reason why it works, the old file has
some more win32 mouse handler code that is not disabled under linux)...
added fclose() to SaveRecords() from records.c
added globfree() to LoadFile() from load_unix.c
files:
    misc/menu.c
    misc/records.c
    misc/load_unix.c

02/20/03:
added Sys_mkdir() from WinQuake/sys_win.c to sys_win.c, now using Sys_mkdir()
in gl_screen.c, removed obsolete #ifdef _MSVC ... #endif statement 
files:
    misc/sys_win.c
    misc/gl_screen.c
    quakedef.h
    sys.h

02/22/03:
verified that it works with gcc under windows, too. now we have the first
portable release of miniracer. demo recording, screenshots and networking are
full featured under linux and windows. at this time the linux version only lacks
menu mouse support, gamma correcture function and, most important, sound.
the next challenge will be integrating these features and, also very important,
the dedicated server mode.
have fun!

02/23/03:
Menu_Mouse() is working!!! now using the original menu.c file again (only
changes: additional initializers for gcc under win32). took the neccessary POINT
structure from wine and declared it in menu.h, added wrapper functions
GetCursorPos() and SetCursorPos() using XQueryPointer() and XWarpPointer() to
gl_vidlinuxglx.c
files:
    misc/menu.c
    opengl/gl_vidlinuxglx.c
    menu.h

gamma correcture is working! porting was easy because XFree86 Vidmode Extensions
since version 2.0 provide gamma ramp functions similar to win32 functions.
now using the original gamma.c file again. VID_Init() checks for Vidmode
Extensions >2.0 and enables or disables gamma correcture functions. it works!
files:
    misc/gamma.c
    opengl/gl_vidlinuxglx.c

inet_addr() was declared in net_dgrm.c, removed this declaration and included
arpa/inet.h instead
files:
    network/net_dgrm.c
    network/net_udp.c

added an os string to the MiniRacer version on the menu screen: win32 or linux
files:
    opengl/gl_draw.c

02/28/03:
fixed a bug: dlclose() in CheckExtensions() came before the vertex array check,
vertex array check could nver be successful, fixed.
gamma functions check now done by a dlsym() routine, wrote additional wrapper
functions, so that we (hopefully) can compile without having XFree86
VidModeExtensions >2.0
files:
    opengl/gl_vidlinuxglx.c

03/02/03:
splitted CheckExtensions(): CheckExtensions() now only does GL checks, gamma
function checks are now be done by CheckGammaExtensions(), because gamma checks
must be done before GL checks. removed external reference to gl_mtexable from
gl_rsurf.c and removed this variable from gl_vidnt.c, gl_mtexable is only used
in gl_vidlinuxglx.c 
files:
    opengl/gl_vidlinuxglx.c
    opengl/gl_vidnt.c
    opengl/gl_rsurf.c

03/05/03:
found a bug: CheckGammaExtensions() only works if libXxf86vm.so is available.
when libXxf86vm.a is linked, then XF86VidGetModeGammaRamp() and
XF86VidModeSetGammaRamp() are not linked from the library, because they are not
explicitely needed. the check with dlsym then always fails. no further solution
at this time.
files:
    opengl/gl_vidlinuxglx.c (not changed)

03/10/03:
found a solution for the gamma problem: now we use a compiler definition
VIDMODEXT_GAMMA_RAMP. in the future a check for VIDMODEXT_GAMMA_RAMP can be
done by autoconf or this extension can be added to the source code, independent
from libXxf86vm, like in the SDL.
files:
    opengl/gl_vidlinuxglx.c
    Makefile

removed unneccessary stuff from Makefile, added a compiler definition SOUND for
enabling or disabling sound
files:
    sound/sound.c
    Makefile

03/29/03:
increased length for oldpath to 128, because 64 was too short
files:
    misc/load_unix.c

found bug: if the game was started in fullscreen mode but exited from menu
without playing, the video mode will not be restored.

04/07/03:
completed the sound engine
files:
    sound/sound_sdl.h
    sound/sound_sdl.c
    sound/soundfx.c

04/10/03:
added a RPM spec file
files:
    MiniRacer.spec

04/29/03:
added a miniracer start script
files:
    miniracer

05/06/03:
added readme files to make the release 1.02 complete, finally converted all *.c
and *.h files to unix <CR> format
files:
    README
    CREDITS
    INSTALL
    */*.c
    */*.h

05/29/03:
changed file names and definitions for the sound engine:
files:
    sound.h
    sound/sound_sdl.h -> sound/soundfx.h
    sound/sound_sdl.c
    
06/01/03:
changed pitch factor, now pitched engine sound when using SDL is the same as
when using directx-based sound.dll under win32
replaced Dev-C++ project file for win32 MiniRacer, old file was buggy
files:
    sound/sound_sdl.c
    engine.dev

09/16/03:
changed some properties for debian package management and added a manual page
files:
    debian/menu
    debian/miniracer.6

09/21/03:
began adding pak file support: changed LoadList() to use list files,
made changes to implement full Quake Filesystem support, now the game files
except sounds can be taken from data/pak0.pak
files:
    misc/load_w32.c  -> misc/load.c
    misc/load_unix.c -> misc/load.c
    misc/menu.c
    menu.h
    misc/common.c
    common.h
    misc/zone.c
    game/game_precache.c
    opengl/gl_draw.c
    data/pak0.pak added
    Makefile
    Makefile.linuxglx
    Makefile.win
    Makefile.wincross
    engine.dev
    engine.dsp

09/22/03:
fixed compiler warning in common.c, improved LoadList(), made neccessary
changes to the sound engine to add pak support for sound.
now SDL must be used under win32, too, the original interface sound.dll
can't be used any longer, temporarily disabled sound support for win32
files:
    misc/common.c
    sound/sound.c
    sound/sound_sdl.c
    misc/load.c
    data/pak0.pak/sounds/*
    sound.dll removed
    sound.lib removed
    Makefile.win
    Makefile.wincross
    engine.dev
    engine.dsp
    sound.h
    misc/menu.c
    menu.h
    game/game_precache.c

added a replacement function for Draw_BeginDisc() and Draw_EndDisc from Quake,
added an icon for these functions
files:
    opengl/gl_draw.c
    pak0.pak (added icon.mrt)

09/23/03:
added tga support and replaced all *.mrt files by *.tga
files:
    opengl/gl_draw.c
    data/pak0.pak

09/24/03:
further working on tga support

09/27/03:
now using original tga loader from glquake, fixed a bug in Draw_BeginDisc():
calling Draw_BeginDisc() before DrawInitTextures() will always fail, because
icon texture is not loaded yet. now checking if texture is loaded and returning
without an action if not
files:
    opengl/gl_draw.c


09/28/03:
added support for greyscale tga images, converted mask textures to greyscale.
Now 24bit RGB, 32bit RGB and 8bit greyscale images are supported. 
files:
    opengl/gl_draw.c
    data/pak0.pak

replaced option "-fullscreen" by "-window"
files:
    opengl/gl_vidlinuxglx.c
    opengl/gl_vidnt.c

now supporting both, "top to bottom" and "bottom to top" tga images, added
the neccessary check to LoadTGA()
files:
    opengl/gl_draw.c

09/29/03:
found a bug in the texture converter: when converting a *.mrt file to tga,
six pixels in the resulting *.tga file were missing

09/30/03:
fixed the bug in the texture converter and converted the *.mrt files
files
    data/pak0.pak

texture replacement and pak file support are now complete, so changed version
number, fixed some warnings from COM_LoadPackFile() and COM_AddGameDirectory()
files:
    quakedef.h
    common.c

updated manual page and spec file
files:
    miniracer.6
    miniracer.spec

10/03/03:
number of bots was fixed to 7, made it variable, added a variable numclients
files:
    menu.h
    game/game_bot.c
    game/game_client.c

10/05/03:
began with the implementation of dedicated server mode. in quake the start map
from "progs.dat" is loaded with PR_Init() in Host_Init().  
perhaps we need "progs.dat" and a start map in the future, for now it is done
with SV_SpawnServer("mrmap1kz"). even in dedicated server mode we need X for the
GLXContext, this should be fixed...
changed Draw_BeginDisc() to use the "host_initialized" variable to check if
video is initialized
files:
    host/host.c
    opengl/gl_vidlinuxglx.c

10/06/03:
improved dedicated server mode, replaced Sys_ConsoleInput() by original version
from Quake to make console in dedicated server mode work
files:
    host/host.c
    misc/sys_linux.c
    opengl/gl_vidlinuxglx.c

10/08/03:
changed functions to use the miniracer implementations of system functions
instead of the native versions
files:
    misc/sys_linux.c
    misc/common.c
    misc/cvar.c
    network/net_udp.c
    opengl/gl_draw.c
    misc/sys_win.c

10/11/03:
removed unused variables, replaced COM_LoadTempfile() in load.c by
COM_LoadHunkFile(), added dedicated server mode to VID_Init() in gl_vidnt.c,
removed some warning statements
files:
    misc/common.c
    misc/load.c
    misc/host.c
    opengl/gl_draw.c
    opengl/gl_vidnt.c
    opengl/gl_vidlinuxglx.c

10/13/03:
updated man page and spec file
files:
    miniracer.6
    miniracer.spec

10/14/03:
changed #include "../menu.h" in game.h to #include "menu.h"
because game.h is in toplevel directory, 
updated debian, spec, dev and readme files, fixed some warnings,
removed unneccessary variables, now we have release 1.03
files:
    Makefile.linuxglx
    Makefile.win
    Makefile.wincross
    debian/changelog
    debian/copyright
    debian/rules
    debian/control
    miniracer.spec
    engine.dev
    README
    TODO
    glminiracer.h
    sys.h
    sound/sound_sdl.c
    draw.h
    zone.h
    quakedef.h
    misc/records.c

11/11/03:
fixed a serious bug in dedicated server mode: starting of dedicated server in
fullscreen mode lockes the x server because inputs are grabbed, and this was
the default. changed VID_Init() in gl_vidlinuxglx.c so that it isn't possible
to combine dedicated server and fullscreen mode, did the same in gl_vidnt.c,
changed Host_Init() to load default.cfg instead of config.cfg in dedicated
server mode, updated spec file
files:
    opengl/gl_vidlinuxglx.c
    opengl/gl_vidnt.c
    miniracer.6
    miniracer.spec

03/03/04:
continued the work after a long time... added compiler definition _NO_BOTS for
disabling bot support to find the client count bug: number of bots is
incremented with every new race and is set to 255 after the second connect into
the server...
removed variable numclients, it was useless...
files:
    host/host_cmd.c
    game/game_client.c
    game/game_bot.c
    game/game_bots.c
    game/game_main.c

31/03/04:
added a command line option "-nobots" for disabling bots, removed compiler
definition _NO_BOTS
files:
    host/host_cmd.c
    game/game_bot.c
    game/game_bots.c
    game/game_main.c

10/05/04:
found the reason why MiniRacer on linux never worked without multitexture
extensions: the win32 version uses function pointers for the extensions:
void *MRglMTexCoord2f(GLenum, float, float)
void *MRglSelectTexture(GLenum)
to find out if a function available or not, it checks if its function pointer
is NULL:
if(MRglSelectTexture) {...}
on linux we're also using function pointers:
void *MR1glMTexCoord2f(GLenum, float, float)
void *MR1glSelectTexture(GLenum)
but the linux version doesn't like NULL for these function pointers, so i
wrapped them up into real funtions. these functions have the same names as the
function pointers in the win32 version:
void MRglMTexCoord2f(GLenum, float, float)
void MRglSelectTexture(GLenum)
so a check like
if(MRglSelectTexture) {...}
would never fail, even if the extension is not present!!!
now we're using qboolean variables, gl_mtexable and gl_mvertex, for the checks
(that's also the same way as it's done in quake)
files:
    opengl/gl_vidlinuxglx.c
    opengl/gl_vidnt.c
    opengl/gl_rsurf.c
    opengl/gl_draw.c
    opengl/gl_skids.c
    opengl/gl_smoke.c
    glminiracer.h

10/08/04:
found the REAL reason why the extensions failed:
when i began porting MiniRacer i had no knowledge about function pointers,
so i declared them as normal pointers. the compiler could not find this
semantic error and my x server provides these extensions, so i didn't
find this error...
files:
    opengl/gl_vidlinuxglx.c
    opengl/gl_vidnt.c
    opengl/gl_rsurf.c
    opengl/gl_draw.c
    opengl/gl_skids.c
    opengl/gl_smoke.c
    glminiracer.h

10/11/04:
joe has began to replace textures and sounds, we have a new pak file
files:
    data/pak0.pak 
 
01/03/05:
commented out #warning directives because only gcc knows them
improvements in the sound engine, removed unneccessary mouse grabbing from
VID_Init(), worked on dedicated server 
files:
    host/host_cmd.c
    host/host.c
    game/game_bot.c
    game/game_client.c
    game/game_main.c
    sound/sound_sdl.c
    opengl/gl_vidlinuxglx.c

02/14/05:
it still fails with the ati firegl driver. temporarily disabled all gl
extensions until bug is found...
files:
    opengl/gl_vidlinuxglx.c

02/15/05:
further disabling of gl stuff...

02/17/05:
further disabling of gl stuff...

02/19/05:
back to windows: bug also exist. back to tomaz' code: bug exists only when compiling without debugging support. argh!
restarting the investigation at this point...

03/01/05:
found a critical linux bug: it seems that the proprietary ATI driver doesn't
like glLockArraysEXT() and glUnlockArraysEXT(), even if we only check for this
extension without using it! no solution at this point, Mesa works fine.

03/03/05:
found the windows bug: it was only a _Win32 instead of a _WIN32 in zone.c from
WinQuake. The result was wrong hunk_size allocation in Memory_Init() and so
the game crashed. Now we can re-enable the temporarily disabled gl stuff.
fixed a warning in network/net_wins.c: i accidently changed BlockingHook from
BOOL to qboolean, undone. fixed some warnings from sys_win.c (missing
typecasts). removed unneccessary -Igame from dev-cpp project file.
files:
    misc/zone.c
    opengl/gl_vidnt.c
    opengl/gl_vidlinuxglx.c
    network/net_wins.c
    engine.dev
    sys_win.c

03/09/05:
found a bug: compiling without -DVIDMODEXT_GAMMA_RAMP caused a bug because
not all functions were disabled
files:
    opengl/gl_draw.c
    opengl/gl_screen.c
    opengl/gl_vidlinuxglx.c
    misc/gamma.c
    host/host.c

found a malloc bug using libefence in R_ResampleTexture() 
files:
    opengl/gldraw.c

it works on linux with ATI proprietary driver!
seems that we have a bug in Con_Printf() aka Draw_CharArrays() and SCR_UpdateScreen()
files:
    opengl/gl_model.c

fixed GL_BeginRendering()/GL_EndRendering(), using WinQuake implementations now
files:
    opengl/gl_vidlinuxglx.c

03/10/05:
using Draw_Character() from WinQuake avoids the bug but doesn't support colored
text. the solution is simple: just calling glColor4ub() with the appropriate
glTexEnvi() setting. it works!
files:
    opengl/gl_draw.c
    opengl/gl_screen.c

03/11/05:
the problem is glDrawArrays() !!!
i think the number of element to render is too high. disabling factor 4 in
GL_DrawSmoke() and GL_DrawSkids() seems to be a (tomporary) workaround.
files:
    opengl/gl_smoke.c
    opengl/gl_skids.c

Draw_Character() seems to work if we call Draw_CharArrays() more often, set
count from 1024 to 64. nevertheless i think we should not use glDrawArrays()
where we dont't neccessarily need it, especially while we don't know for sure
whether it works...
Draw_Character() uses the modified implementation from WinQuake now, original
MiniRacer implementation can be enabled by setting -DGL_ARRAYS_FOR_TEXT
    opengl/gl_draw.c

added a compiler definition for the glLockArraysEXT extension. this extension
must not be used with the proprietary ATI FireGL linux driver (even checking
causes a segfault!) so it is now disabled by default and can be enabled with
-DGL_LOCK_ARRAYS_EXT
files:
    opengl/gl_vidlinuxglx.c

03/13/05:
possibly found the bug: there were strange stride values for gl arrays, set
them all to 0
files:
    opengl/gl_draw.c
    opengl/gl_smoke.c
    opengl/gl_skids.c

03/14/05:
the stride values were NOT the problem...
glDrawArrays always fails. i think the arrays aren't packed properly for this
call. the solution for now: using glArrayElement() within a for loop between
glBegin()/glEnd() statements. it works!
files:
    opengl/gl_draw.c
    opengl/gl_smoke.c
    opengl/gl_skids.c

03/15/05:
worked on dedicated server mode. we don't need opengl and VID_Init() any longer.
dedicated server doesn't overwrite config.cfg no more.
now we can run it on the console. yeah!
files:
    host/host.c
    opengl/gl_vidlinuxglx.c

03/22/05:
there were still opengl calls in dedicated server mode. wrote if()-statements
to avoid them, especially to avoid texture loading.
found a new problem: dedicated server causes 100% cpu load...
files:
    host/host.c
    misc/common.c
    opengl/gl_model.c

03/23/05:
found the server bug: MiniRacer has no variable sys_ticrate so i had removed the
wait cycle for dedicated server mode in the beginning of porting. that was the
reason for the heavy cpu load. adding the missing code from WinQuake/sys_linux.c
with 0.05 as sys_ticrate.value solved this problem
files:
    misc/sys_linux.c

removed the unneccessary variable glxpixmap, removed all opengl code for
dedicated server
files:
    opengl/gl_vidlinuxglx.c
    opengl/gl_vidnt.c

fixed a win32 build problem: -DVIDMODEXT_GAMMA_RAMP was explicitely required
since changes of 03/09/05
files:
    misc/gamma.c
    misc/host.c

03/24/05:
updated pakfile
files:
    data/pak0.pak

03/29/05:
updated pakfile and set new version number to 1.04, fixed a mouse grabbing
problem in fullscreen mode:
i think the engine is ready to release now!
files:
    data/pak0.pak
    data/pak1.pak
    opengl/gl_vidlinuxglx.c

04/10/05:
updated pak files
files:
    data/pak0.pak
    data/pak1.pak

04/12/05:
removed unneeded variable maps from load.c, began implementing support for a
list of loadable maps (they were compiled in before), temporarily disabled
records list to do that 
files:
    misc/load.c
    data/maps/maps0.lst
    misc/records.c
    misc/menu.c
    client/cl_parse.c

04/18/05:
re-enabled records support but it doesn't work correctly
files:
    misc/records.c

04/19/05:
tried to fix records support, no success
files:
    misc/records.c

04/21/05:
records work again, it was because initial index was i=1, set it to i=0
files:
    misc/records.c

added a parameter qboolean fatal to LoadList() to indicate whether an error is
fatal or not, using this feature for loading an optional map list maps/maps1.lst
files:
    menu.h
    misc/menu.c
    misc/load.c
    misc/records.c
    game/game_precache.c

04/26/05:
added a simple check to ensure that maps[i].laprecord and maps[i].racerecord
contain non-zero values
files:
    misc/records.c

04/27/05:
improved the record check, added support for an optional map list maps/maps2.lst
and added map lists to pak files
files:
    misc/records.c
    data/pak0.pak
    data/pak1.pak

05/01/05:
found out more about mapping: the editor uses textures from the wad file and
only if that's not possible the textures from the pak file. removed pak1.pak
because we don't need it and put the maps from it into a folder
files:
    data/pak1.pak removed
    data/maps/jgmr.bsp
    data/maps/square.bsp
    data/maps/test.bsp

05/02/05:
updated pak file, new sound
files:
    data/pak0.pak

05/04/05:
added some maps, updated manual page, makefile and README
files:
    data/maps/jgmr.bsp
    data/maps/square.bsp
    data/maps/test.bsp
    data/maps/maps1.lst
    miniracer.6
    Makefile.linuxglx
    README

05/05/05:
updated debian build files, spec file and built packages:
new release 1.04 is ready!
files:
    debian/changelog
    debian/control
    debian/copyright
    miniracer.spec
