R_MarkLights is now about 3% instead of about 15%, I've lost 8 fps on my
null GL speed test. However, R_AddDynamicLights has jumped up a bit, so I'm
wording if maybe more surfaces are being lit.
another builtin by name, and returns it.
Soon I'll change all our new builtins to by allocated dynamically, as
well as changing the number checkfunction uses, and happily break
everything that uses them :D
generice, and also more in line with the rest of quake's clipping system
(ie, support the entity size selected hulls). I'm not /entirly happy with
what's here, but it's a start, and the force fields in customtf work /much/
better :)
integer constants and float function args/return values.
pr_comp.h:
o add the integer opcodes to pr_opcode_e
pr_edict.c:
o add "quaternion" and "integer" to type_name[]
o support quatnernion and integers types when printing values
o support the integer opcodes when bounds checking
pr_exec.c
o enable the integer opcodes
pr_opcode:
o add the integer opcodes to the opcode table
o logical operators all result in an integer rather than a value
expr.h:
o rename int_val to integer_val
qfcc.h:
o kill another magic number
expr.c:
o move the opcode to string conversion out of type_mismatch and into
get_op_string
o rename int_val to integer_val
o general integer type support.
o generate an internal comipiler error for null opcodes rather than
segging.
pr_imm.c:
o rename int_val to integer_val
o support integer constants, converting to float when needed.
pr_lex.c:
o magic number death and support quaternions and integers in type_size[]
qc-lex.l
o rename int_val to integer_val
o support quaternion and integer type keywords
qc-parse.y:
o rename int_val to integer_val
o use binary_expr instead of new_binary_expr for local initialized
variables
builtins.c:
o rename int_val to integer_val
o fix most (all?) of the INT related FIXMEs
defs.qc:
o use integer instead of float where it makes sense
main.c:
o read_result is now integer rather than float
main.qc:
o float -> integer where appropriate
o new test for int const to float arg
build the client and server plugins
client.c:
get to build, though it's very crippled
server.c:
re-print the message to the buffer after re-sizing the buffer
capitolise CRC and add a \n to the message
sv_progs.c (both nq and qw):
don't bother checking the progdefs.h crc: it's just not needed any more
pr_imm.c:
use r instead of rep when checking the hash tables.
main.c (quaq):
make developer work and set com_filesize (otherwise, progs crc doesn't
get set properly (com_filesize, not developer:))
api change: Cmd_Args () now takes a parameter inidcating which arg to
start at for grabbing the un-parsed command line
qw/source/sv_ccmds.c:
implement kk's tell command and user name matching (though # is used for
the wildcard and it's still case sensitive)
everything else:
adjust for the new Cmd_Args protype
implementation of his sound/focus patch. NOTE: only alsa 0.9 is tested
(Rhamph, can you test 0.5, please?) and only the alsa drivers stop the
hardware right ow.
WARNING!!! you /will/ have to re-install your plugins, or you will get
segfaults when the window gains/loses focus.
How do you tell if a window has focus on first mapping in X11?
remove include of glob.h. not needed and causes win32 build to fail
plugin.c:
include compat.h and cast the return of GetProcAddress
gl_funcs.c:
fix parse error and type mismatch
qfgl_ext.c:
half re-write QFGL_ExtensionAddress to use QFGL_ProcAddress
vid_wgl.c:
fix for the new gl linking
Sys_Printf still has the format attribute. To redirect Sys_Printf, declare the
redrecting function as void (const char *, va_list) and call Sys_SetPrintf
with this function as its parameter.
way.. Sys_Printf is now Sys_StdPrintf for now. Sys_Printf is a function
pointer and will end up replacing Con_Printf as well. Names will change
to something intelligent when I'm done. Win32 is not yet touched, but I
haven't forgotten it.
The reason for this is the assumption that Con_Printf and Sys_Printf do
not overlap. The new server console WILL change that, requiring that we
change how we handle both functions. The plan: Default to using stubs
and swap them for full-featured functions on Console init which do all
the things we expect. Will also do a stderr version later.
for me. This may be due to the NVIDIA libGL problem (which they claim is a
bug in libc), but it could very well be that Mercury was right and we
can't have the same names internally as the libGL names. Even so, this
code will probably work on Windows.
The major change is that we no longer require libGL to even exist on the
system at compile time for the GL targets, we dynamicly link to the
libGL of choice at run time. (This probably breaks most non-linux
systems, and all GL targets except -glx, some fixup will be needed.)
(This also kills glquake, dead dead DEAD! GONE FOREVER! WHEE!)
Some gl_draw cleanup.
Commented out equake alias model occlusion test stuff, very experimental.
Added the .lo and .la patterns to the .gitignore files.
Some minor sbar cleanup. (We don't use the disc in use symbol for
anything.)
(and thus have a new simpler PL_ObjectForKey() function to get a value for
a key). Also, you can now call PL_FreeItem() on a plitem_t to free a
property list item and all of its descendants (if it has any).
Binary plist values are still not supported.
define PROG_ID_VERSION as 6 and redefine PROG_VERSION as 0x00fff001
(0.fff.001) for the new qc features.
pr_edict.c:
support version 6 and version 0.fff.001 progs
qfcc.h:
add version field to options_t
add min_version field to opcode_t
pr_opcode.c:
set the minumum version of each opcode (gee, that table is getting ugly)
filter out opcodes with too high a min_version when initializing the opcode
hash tables.
qfcc.c:
update help output.
accept --id to limit code generation to id compatable (ver 6) progs.
default progs generation to 0.fff.001
add no_exec_limit field. Set to 1 to disable the runaway loop check
for unlimited runs (eg, in qwaq)
pr_exec.c:
don't bother checking the profile counter if pr->no_exec_limit is set
pr_strings.c:
free unreferenced dynamic strings rather than referenced.
add OP_ADD_S. WARNING!!! this /will/ move.
progs.h:
add prototype for PR_PrintStatement
pr_edict.c:
add OP_ADD_S support in the progs checker
pr_exec.c:
implement OP_ADD_S
tools/qfcc/include/.gitignore:
add config.h.in
qfcc.h:
nuke PR_NameImmediate and change PR_ParseImmediate's prototype (see
pr_imm.c)
pr_comp.c:
add ADD_S, adjust for PR_ParseImmediate's prototype, make
PR_ParseExpression work with non-sequential opcodes (slow, will work on
that next). Fix up initialised global parsing.
pr_imm.c:
nuke PR_NameImmediate. didn't work well and wasn't such a good idea anyway.
PR_ParseImmediate now accepts a def_t * arg. if null, will allocate a
new global def, otherwise it will initialize the def passed in.
qwaq/main.c:
sports some debugging code (dumps info about the progs it's running)
qwaq/main.qc:
better ADD_S testing
Some sbar cleanups (still broken, suspect driver issues.).
Removal of pmodel and emodel infokeys, waste of info space.
For servers allow people downloading to hear people talking.
create a field_offset macro that takes a structure type and a field and
returns the offset of the field within the structure
everything else:
use field_offset to calculate the size of variable sized structs
quakeio.h -> vfile.h
More diff reduction between trunk and my VFS code. Also took the time to
put some headers in order and fix a few #include's pointed out by moving
things around a bit.
add a crc field to aliashdr_t
model_alias.c:
set it for all models
cl_parse.c:
set the pmodel and emodel info keys to the crcs of the player and eye
models
Don't bother checking vid_gamma for CVAR_ROM becuase it is impossible to
get to VID_UpdateGamma when it is set except for when the cvar is
initially created, and we /want/ the code to execute in that case.
vid.h:
add initialized to viddef_t
vid_common_gl.c:
actually /use/ gammatable (it tends to help)
vid_*.c:
clean up rendundant decls of gammatable, vid_initialized (now
vid.initialized) and make sure vid.initialized gets set.
gl_view.c:
remove gammatable decls