progs CRC not recognised from quake nor clones

Discuss programming in the QuakeC language.
Post Reply
Nahuel
Posts: 495
Joined: Wed Jan 12, 2011 8:42 pm
Location: mar del plata

progs CRC not recognised from quake nor clones

Post by Nahuel »

hello forum, my question is simple, what does this message of fteqccgui mean?
is there any way to avoid it?
ty in advance
hi, I am nahuel, I love quake and qc.
Spike
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK
Contact:

Re: progs CRC not recognised from quake nor clones

Post by Spike »

don't change anything before defs.qc's end_sys_fields. that's how you avoid it.

the vanilla qcc wrote a (now-useless) progdefs.h file for inclusion in the engine's code so that things matched (and generates the progs crc value from that file), so if you change the name/order/basic type of any of those system defs that the vanilla engine can see then you change the progdefs.h and resulting crc too, which normally causes engines to refuse to load it.
(note that fteqcc's -Th2 [or -Tfteh2] args/pragmas also change the progdefs.h and thus the crc, but I doubt this is your issue. There is a pragma that allows you to force the crc, but only evil people use evil hacks like this so I won't name it here)

iirc, DP completely ignores the crc, linking purely by symbol names instead of hardcoded offsets.
FTE does something similar (though more complicated so that it can correctly handle aliases/renames/strips), however it also recognises known crc values and enables various compatibility modes in an attempt to behave the way the mod expects the engine to behave (assuming NQ/FTECSQC behaviours if its not recognised, which means any DPCSQC/QW/Hexen2/etc mods will malfunction in weird ways if they have the wrong crc).
Other engines will just reject your progs entirely.

So get the crc right by not modifying any of those system defs!

you can also #include "fteextensions.qc" before your defs.qc, and in doing so use the systemdefs defined within (this also works with a preceding #define CSQC or QWSSQC to change the type of progs you want to write). This allows you to freely change your defs.qc file (although you may need to delete your defs.qc's builtin definitions, at least where they're buggy or unextended.
Nahuel
Posts: 495
Joined: Wed Jan 12, 2011 8:42 pm
Location: mar del plata

Re: progs CRC not recognised from quake nor clones

Post by Nahuel »

ty spike :)
"There is a pragma that allows you to force the crc, but only evil people use evil hacks like this so I won't name it here"
Now I'm really intrigued about that pragma, maybe using that evil hack cause problems in the multiplayer protocol?
ty
hi, I am nahuel, I love quake and qc.
Spike
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK
Contact:

Re: progs CRC not recognised from quake nor clones

Post by Spike »

changing the crc just means that fte will enable different compatibility modes (eg: qw crc means prints have an extra 'level' arg etc, and reconfigures the server's network translation logic).
dp doesn't even bother checking it, iirc (so yeah, don't ever use that progs.dat from qw with it, so have fun with that).
other engines will just crash out.

so yeah, using the wrong crc will just screw you over. so yeah, I'm not going to say that the pragma is actually named forcecrc. oops. seriously though, don't use it.
Post Reply