Bill Currie
36fe939ea5
don't hang when processing \{N} escape sequences and fix a comment
2010-01-13 06:21:29 +00:00
Bill Currie
9ac15436d9
More docs.
...
Enhance qfprogs qfo debugging.
Make sure functions marked as extern don't emit anything. Fixes the segfault
when building klik.
2008-08-01 13:54:24 +00:00
Bill Currie
23e3fc0cb8
document most of obj_file.h (and a few other doc tweaks)
2008-08-01 00:47:38 +00:00
Bill Currie
3e50aae01f
"print" command for dumping values in the progs and add return type info to the debugging information
2007-09-15 07:47:31 +00:00
Bill Currie
ca0bbd909c
correctly save and restore the parameters when calling +initialize. fixes the segfault in the qwaq test.
2007-06-09 13:44:06 +00:00
Bill Currie
57bd43fc52
make the watchpoint (optionally) conditional
2007-05-08 02:25:01 +00:00
Bill Currie
fe4a4a9e55
"hardware" (haha) watch points (one!) in progs. only catches changes done by progs, and the expression parser is as flaky as anything, but it's better than nothing :)
2007-05-08 02:04:47 +00:00
Bill Currie
59498cd5e7
make the edict macros consistent in return type
2007-04-09 08:55:05 +00:00
Bill Currie
b5e6aa4519
for pr_debug 1, don't dump disassembly when tracing, just source lines. pr_debug >= 2 forces disassembly. detailed disassembly now on pr_debug >= 3 figure out the types of arguments in a function call
2007-04-09 06:16:03 +00:00
Bill Currie
124506fda2
Fix the access alignment bug on 64 bit archs.
2007-04-07 01:41:23 +00:00
Bill Currie
5b761bac83
make progs related code a little more consistent with its int type usage
2007-04-06 00:47:41 +00:00
Bill Currie
38254186da
other than floats, progs should now be int size safe
2007-04-04 12:30:49 +00:00
Bill Currie
c290e9a988
use plists for save-games. old save-games can still be read, but new ones will always be in the new format. might be a good idea to back up any old saves until more testing has been done.
2006-12-09 02:35:44 +00:00
Bill Currie
2a79f42eb5
progs now internally uses plists for entity/global initialization, with support for direct conversion from id's format. This means that the entity string in a map (or the external ent file) can be a plist.
2006-12-09 00:02:57 +00:00
Bill Currie
6fbddc3d43
so that's the right way to do groups and subgroups...
2006-12-05 11:40:00 +00:00
Bill Currie
42f1334b87
I've discovered \par :)
2006-12-04 13:08:52 +00:00
Bill Currie
d28952dfcc
fix a bunch of gcc-4.1 warnings (thanks for the heads up, jordi)
2006-11-30 22:52:36 +00:00
Bill Currie
e3c9cfd3d2
some documentation work
2005-07-27 12:14:35 +00:00
Bill Currie
762aefc9b1
implement Raven's calling convention (rcall: first 2 params in opb and
...
opc). should give a general speedup to most progs.
2005-06-12 09:54:01 +00:00
Bill Currie
b7def83d19
patch from raorn ("Alexey I. Froloff" <sir_raorn@immo.ru>) to fix
...
interaction between -hipnotic (etc) and -game
2005-02-14 09:08:32 +00:00
Bill Currie
23f71485d1
more tree recovering. This includes Despair's anisotropy support work.
2005-01-02 14:23:20 +00:00
Bill Currie
0e324d1851
use the script api for parsing ent data and savegames
...
This is an imperfect revision of history.
2004-11-12 02:39:00 +00:00
Bill Currie
64cc8c60d2
compile time protocol support seems to be complete now. fortunatly, protocols had never been written out so the corrections to the protocol related stuctures do not need a progs version bump. runtime protocol support hasn't been fully tested yet.
...
+load runtime support seems to be working.
This is an imperfect revision of history.
2004-11-11 00:34:00 +00:00
Bill Currie
b35561504c
do proper selector registration. unfortunatly, I discovered I'd created pr_method_t incorrectly and so had to bump the progs version again
...
This is an imperfect revision of history.
2004-11-10 05:37:00 +00:00
Bill Currie
78d98ea787
remove the time pointer (not really needed)
...
This is an imperfect revision of history.
2004-11-09 22:32:00 +00:00
Bill Currie
8770df39e5
start documenting things (progs building still borked)
...
This is an imperfect revision of history.
2004-11-08 23:27:00 +00:00
Bill Currie
f5bc90a53a
clean up some redundant progs functions (may be broken for a while)
...
This is an imperfect revision of history.
2004-11-05 11:49:00 +00:00
Bill Currie
33bc7858f7
avoid using the hunk in the progs engine (except for the override-able load and alloc functions) so tools (qfprogs and qwaq) don't need to create it.
...
register only the first instance of a progs provided string
This is an imperfect revision of history.
2004-11-02 04:59:00 +00:00
Bill Currie
ff5b215c13
multi statement macro fixes as pointed out by Grievre
2004-03-16 04:15:07 +00:00
Bill Currie
24294c8778
make printing of global contents in PR_PrintStatement optional so
...
disassembly output is cleaner
2004-01-31 04:26:01 +00:00
Bill Currie
390ca99a92
first step to making qfdefs redundant. "standard" progs now get resolved
...
staticly rather than looking up the defs. "broken" progs should now work.
2004-01-21 08:09:47 +00:00
Bill Currie
249aee2e9f
move the OO runtime support code from libQFgamecode to libQFruamoko where
...
it really belongs :)
2004-01-16 08:02:31 +00:00
Bill Currie
c5c5c33e7d
I had forgotten the free string refs list /had/ to be in the progs vm
2004-01-08 04:03:47 +00:00
Bill Currie
e455b760ca
use a cycled pool of "return strings". I'd love to come up with something
...
better, but this will do (similar to what qwe does, but qf style:)
2004-01-07 05:22:57 +00:00
Bill Currie
133879f8fa
provide builtin mappings for id (none, really), qf and ktpro/qwe (qw only),
...
add qwe builtin extensions to qw-server. provide sv_progs_ext to control
the builtin mapping. valid values are "id", "qf" (our old static builtins),
"qwe"/"ktpro" (either works. for ktpro mod support) and "none" (no
mapping). any other value is equivalent to "none".
2004-01-06 07:00:39 +00:00
Bill Currie
d7592781d7
add builtin mapping support (not used yet) and fix an uninitialized
...
variable
2004-01-06 06:08:59 +00:00
Bill Currie
acd54afff7
move to using a hash table for builtin number -> builtin lookup so sparse
...
ranges can be used efficiently. move the auto-allocated builtins to
0x10000000-0x7fffffff. should be more than enough :)
use static builtin tables ("nul" terminated) instead of a series of
function calls to add builtins to a vm. should be more memory efficient.
2004-01-06 05:51:09 +00:00
Bill Currie
595280decb
do the builtin function lookup at load time rather than runtime and store
...
the function address in the progs function descriptor. this will speed up
calls to builtin functions, especially when ranges get introduced.
2004-01-05 08:08:46 +00:00
Bill Currie
dfc83c1f5f
add PR_PushFrame and PR_PopFrame so temp strings are easy to use for
...
parameters to progs functions.
double the progs stack sizes (call depth of 32? eek)
allow one extra call on the progs stack :)
misc minor cleanups
2004-01-05 07:10:32 +00:00
Bill Currie
dfe7f263c7
new internal printf engine for progs, mostly thanks to Deek.
...
also a few cleanup bits
2004-01-04 07:42:43 +00:00
Bill Currie
a533761770
Nuke PR_GarbageCollect as it's both redundant with the new temp strings
...
and wrong anyway (could free strings it wasn't supposed to).
Don't free the string pointed to by a strref since it's already been
implicity freed (whole memory space nuked). Fixes new map crash.
2004-01-04 02:03:30 +00:00
Bill Currie
bd561fafc3
o all progs strings are now stored in progs memory
...
o temporary strings automaticly get freed when the function they're
created in (results of str + str and most strings returned from
builtins). a way to keep temp strings will be provided later
o fix up qwaq to test the temp strings
2004-01-03 08:43:57 +00:00
Bill Currie
09143b7fb1
more whitespace
2003-12-06 22:49:18 +00:00
Bill Currie
4d3ca27227
white space
2003-12-05 22:33:11 +00:00
Bill Currie
cd8035319d
PR_GetString should have been returning const char *. now does
2003-11-21 21:34:53 +00:00
Bill Currie
5f5662a063
PF_VarString return a plain char * and make it easier to add "at load" init
...
functions
2003-11-20 07:46:56 +00:00
Bill Currie
84ea81a770
fix E_POINTER and E_FUNCTION
2003-09-12 23:12:21 +00:00
Bill Currie
b50d283b28
make sel_get_uid and class_get_instance_method work
2003-08-23 22:16:42 +00:00
Bill Currie
0806fc33dd
debugging improvements. opcodes now sport an optional format specifier for
...
printing their args (default is "%Ga, %Gb, %gc") and PR_ValueString will
try to print what a pointer points to
2003-07-30 22:24:16 +00:00
Bill Currie
cb6bf2e2ae
minor house-keeping
2003-07-15 16:34:43 +00:00
Bill Currie
f7d806e8d5
can now handle > vector sized parameters
2003-04-22 20:11:16 +00:00
Bill Currie
e732cf591d
remove all references to OFS_* from the C code. only the macros in progs.h
...
use them now
2003-04-22 18:20:15 +00:00
Bill Currie
eb099ae0d3
make qf gcc 3.3 clean
2003-04-17 00:01:48 +00:00
Bill Currie
71a60717d9
make pr_source_path a ; separated list of dirs and make it controllable in
...
qfprogs
2003-03-12 22:31:44 +00:00
Bill Currie
71196fedf6
make gcc more anal about prototypes, string constants and function
...
visibility (ie, global functions must have a prototype)
2003-01-06 18:28:13 +00:00
Bill Currie
836c469737
sys.[ch]:
...
handle SIGFPE and allow the registered signal handler to do recovery
rather than bail
progs.h, pr_exec.c, pr_load.c:
if pr_faultchecks is 1 (0 is default), handle division by 0 gracefully
by loading the maximum representable number into the answer
Closes : #58
the rest:
kill the SIGFPE stuff
2002-11-13 19:26:44 +00:00
Bill Currie
aa36b85ba6
add PR_StringValid and PR_EdictValid to check the validity of progs string
...
and entity values without crashing.
2002-10-29 05:07:10 +00:00
Bill Currie
80e85226b9
pr_xstatement now always reflects the currently executing statement making
...
debugging easier in the event of a segfault
2002-10-22 15:07:54 +00:00
Bill Currie
1f0b6e84a5
change pr_obj_msgSend and pr_obj_msgSend_super so they either call builtin
...
methods directly or setup the progs struct for a normal function call to
call a progs method rather than recursively calling PR_ExecuteProgram. This
will reduce method call overhead (both cpu and stack usage), fix the loss
of tracing when calling a method and makes it possible to break out of the
progs engine simply if threaded progs are ever implemented.
2002-10-15 18:53:33 +00:00
Bill Currie
eec3b7d8bc
fix missed header commit
2002-09-14 07:51:53 +00:00
Bill Currie
ec47e08e1c
go back to using QFile, quakeio.h and quakefs.h
2002-08-27 07:16:28 +00:00
Bill Currie
de22355371
use P_* for params and R_* for return values in builtins code
2002-07-24 21:42:33 +00:00
Bill Currie
0b1d1ade73
qfprogs can now read the debug data
2002-06-11 17:24:37 +00:00
Bill Currie
ef57625355
move pr_type_t
2002-06-07 20:56:54 +00:00
Bill Currie
55fcead77c
look for the .this field but don't complain if not found
2002-05-31 17:21:38 +00:00
Bill Currie
a7b5b56a2c
implement Z_Realloc, PR_Zone_Realloc and pr_obj_realloc
2002-05-29 20:58:53 +00:00
Bill Currie
33e055209e
Semi-major (more than minor:) progs convenience macro cleanup. There will
...
be more to come.
2002-05-22 22:35:37 +00:00
Bill Currie
dc3f106faf
define G_POINTER convenince macro. null progs pointers will be null in C
...
redefine G_STRUCT to use G_POINTER
2002-05-22 21:50:24 +00:00
Bill Currie
9820c5d45a
start working in the obj runtime. any and all functions named ".ctor" will
...
be run in the order found.
2002-05-21 21:29:49 +00:00
Bill Currie
c76f7d88ce
fix an API snafu (oops:)
2002-01-30 08:09:53 +00:00
Bill Currie
c66bc5a6eb
whitespace
2002-01-30 06:29:32 +00:00
Bill Currie
8561dfa93a
basic resource management system for the VM
2002-01-30 06:21:20 +00:00
Bill Currie
0ea713eda4
redo the progs loader to allocate all the memory needed for progs in one
...
shot, allowing for caller specified alloc and edicts and zone memory sizes.
(progs + edicts + zone).
2002-01-29 20:53:44 +00:00
Bill Currie
21b6e68a8c
break out the non-edict code into sensible locations
2002-01-28 17:15:36 +00:00
Bill Currie
68637eea9e
start implementing dynamic memory for progs
2002-01-23 22:35:48 +00:00
Bill Currie
14ac3acc17
add a builtin (gametype) for detecting the, well, game type (ie, netquake
...
or quakeworld) which just returns the apprproate string. the single player
menu is now acessable in nq but not qw :)
2002-01-20 03:09:03 +00:00
Bill Currie
6af9a5d8e6
make the builtins an array of pointers so the hash table doesn't get royally
...
screwed up
2002-01-19 03:31:51 +00:00
Bill Currie
ac71d101d2
menu code now gets initialized (menu_init in the progs).
2002-01-18 22:02:59 +00:00
Bill Currie
bb96a5b736
first use of client side QuakeC :) (and having more than one progs instance
...
seems to work, too). The menu code gets loaded, but is currently otherwise
unused as of yet.
2002-01-18 19:19:33 +00:00
Bill Currie
3dafbebf10
fix up #0 builtin functions at runtime. not done automaticly (need to call
...
PR_RelocateBuiltins) and fix a bug with profiling and unlimited execution
counts
2001-12-14 08:15:04 +00:00
Bill Currie
b03a1bee42
ok, structures seem to generate correct code now
2001-12-08 08:19:48 +00:00
Bill Currie
12a0a10d33
more alpha portability fixes
2001-11-29 19:35:25 +00:00
Bill Currie
d27cd9cc21
s/type_size/pr_type_size/
...
remove the redundant type_size from qfcc
2001-11-12 23:56:46 +00:00
Bill Currie
928d343295
pr_comp.h:
...
o add ev_uniteger to the types enum
o add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
progs.h:
o add uinteger accessors
pr_exec.c:
o implement ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
pr_opcode.c:
o add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
expr.h:
o prototype inc_users
qfcc.h:
o add externs for op_ifbe, op_ifb, op_ifae and op_ifa
emit.c:
o don't bother emiting an assignment to a temp def that's only used once
(ie, it's never read, only written to)
o support the new if* instructions
expr.c:
o support the new if* insructions
o dectect expression loops in append_expr
o support unsigned integers
o re-work temp def usage counting
pr_def.c
o debugging for temp def usage counts
pr_opcode.c:
o support the new if* instructions
qc-parse.y:
o provide defines for IFBE IFB IFAE IFA
switch.c:
o do binary searches for strings, floats and ints if there are more than
8 cases in a switch. Strings need more testing.
2001-11-09 00:58:16 +00:00
Bill Currie
5bf5278c2b
pr_comp.h:
...
- new opcodes for pointers
progs.h:
- prototype PR_Check_Opcodes
pr_edict.c:
- move the static bounds checking to PR_Check_Opcodes in pr_opcode.c
pr_exec.c:
- vector instruction cleanup
- temporarily nuke bounds checking from storep.*
- move base of address results from pr->edicts to pr->pr_globals
- implement new pointer related instructions
- nuke proposed global pointer instructions (not flexible enough)
pr_opcode.c:
- add new pointer instuctions
- re-implement static bounds/invalid opcode checking. no more multiple
case statements to keep track of.
2001-11-02 22:41:11 +00:00
Bill Currie
78a3e398d5
* taniwha gets medieval on extern
2001-10-28 04:23:37 +00:00
Bill Currie
3a366f4f7e
break out the backtrace code from PR_RunError into PR_DumpState and use
...
PR_DumpState instead of PR_RunError in seg_fault_handler so we get both a
progs trace /and/ a core file (ulimit allowing)
2001-10-08 03:46:44 +00:00
Adam Olsen
07b0d91900
- add a NUM_FOR_BAD_EDICT function, which doesn't care if it's a bad
...
value
- switch some prints over NUM_FOR_BAD_EDICT
- change NUM_FOR_EDICT to call PR_RunError on error, instead of
PR_Error. That was it prints out a backtrace.
(I did it in reverse order ;)
2001-09-23 01:29:52 +00:00
Bill Currie
3edd4550d2
heh, nor do we need PROGHEADER_CRC
2001-08-27 21:13:00 +00:00
Adam Olsen
36786400ad
Doh, need this header change to compile.
2001-08-26 10:13:03 +00:00
Adam Olsen
17ba7ef92f
- move alot of the builtins to libQFgamecode_builtins
...
- move the init into qw and nq
2001-08-22 03:24:25 +00:00
Adam Olsen
1314c89b6c
- add libs/gamecode/builtins subdir, with libQFgamecode_builtins.la
...
- add .gitignore files
- fix building :)
2001-08-21 22:34:20 +00:00
Bill Currie
07a09e0812
statement printing now infers the type of a def from the instruction where
...
possible, thus allowing anonymous defs to print their contents.
2001-08-13 23:49:04 +00:00
Bill Currie
2a6830d2d8
revised dynamic string handling. allows for `bounds checking'
2001-08-13 20:01:37 +00:00
Bill Currie
bbef4b0b6f
ugh, I hate the need for this, but it's needed. sv_old_entity_free is my
...
compromise :) set it to 1 to allow progs like MegaTF to work (reload crash).
2001-08-12 04:14:25 +00:00
Adam Olsen
dc98a63098
Add a getfunction, which gives an error if it's not found
2001-08-04 23:44:50 +00:00
Adam Olsen
ae133d0a90
Modify progs to add builtins at runtime. It should be trivial to
...
lookup functions by name, and make all our new QC builtins allocate
numbers automatically.
2001-08-03 06:40:28 +00:00
Bill Currie
6cb2cb5bdc
start making the rotated bounding box (really dynamic clipping huls) more
...
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 :)
2001-07-30 04:33:59 +00:00
Bill Currie
22c9716b56
rename int_var to integer_var
2001-07-22 20:20:46 +00:00
Bill Currie
edcc313501
debug info for local variables is now used. only works when tracing atm:/
2001-07-19 07:27:14 +00:00