logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

fteqcc - FTE QuakeC compiler

Author

       fteqcc    was    written    by    David    Walton   <acceptthis@users.sourceforge.net>   and   J.   Smith
       <timeserv@users.sourceforge.net>.

       This manual page was written by RenΓ© van Bevern <rvb@debian.org>, for the Debian project (but may be used
       by others). Most information was obtained from comments in the source codes.

                                                  Juni 26, 2005                                        FTEQCC(1)

Description

       This manual page documents briefly the fteqcc command.

       fteqcc  is  a  program that compiles QuakeC sourcecode to binaray game data of Quake1 or QuakeWorld based
       games.

Format

fteqcc supports several output formats.

       -Tstandard,-Tq1,-Tquakec
              This is the default setting and generates code compatible with original Quake1.

       -Thexen2,-Th2
              Outputs Hexen2 compatible code.

       -Tkkqwsv,-Tkk7,-Tbigprogs,-Tversion7,-Tkkqwsv
              Generates KK Version 7 compatible progs

       -Tfte  Generates code specific to FTE Quake.

Name

       fteqcc - FTE QuakeC compiler

Optimisation

       The following options may be used to fine-tune optimisation. Some of them are activated automatically.

       -Oassignments
              c = a*b is performed in one operation rather than two, and can cause older decompilers to fail.

       -Oshortenifs
              if  (!a)  was  traditionally compiled in two statements. This optimisation does it in one, but can
              cause some decompilers to get confused.

       -Ononvec_parms
              In the origional qcc, function parameters were specified as a vector store even for  floats.  This
              fixes that.

       -Oconstant_names
              strips  out  the  names  of  constants  from  your  progs,  resulting  in  smaller files. It makes
              decompilers leave out names or fabricate numerical ones.

       -Oconstant_name_strings
              strips out the names of string constants from your progs. This can break addons, so don't  use  it
              in those cases.

       -Odupconstdefs
              merge  definitions  of  constants  which  are the same value. Pay extra attention to assignment to
              constant warnings.

       -Onouplicatestrings
              compact the string table that is stored in the progs. It will be considerably smaller with this.

       -Olocals
              Strips out local names and definitions. This makes it REALLY hard to decompile

       -Ofunction_names
              This strips out the names of functions which are never called. Doesn't  make  much  of  an  impact
              though.

       -Ofilenames
              This  strips  out  the filenames of the progs. This can confuse the really old decompilers, but is
              nothing to the more recent ones.

       -Ounreferenced
              Removes the entries of unreferenced variables. Doesn't make a difference in well maintained code.

       -Ooverlaptemps
              Optimises the pr_globals count by overlapping temporaries. In QC, every  multiplication,  division
              or  operation  in general produces a temporary variable. This optimisation prevents excess, and in
              the case of Hexen2's gamecode, reduces the count by 50k. This is the most important  optimisation,
              ever.

       -Oconstantarithmatic
              5*6  actually  emits  an operation into the progs. This prevents that happening, effectivly making
              the compiler see 30

       -Oprecache_file
              Strip out stuff wasted used in function calls and strings to the precache_file builtin  (which  is
              actually a stub in quake).

       -Oreturn_only
              Functions  ending  in  a return statement do not need a done statement at the end of the function.
              This can confuse some decompilers, making functions appear larger than they were.

       -Ocompound_jumps
              This optimisation plays an effect mostly with nested if/else statements, instead of jumping to  an
              unconditional  jump  statement,  it'll  jump  to the final destination instead. This will bewilder
              decompilers.

       -Ostrip_functions
              Strips out the 'defs' of functions that were only ever called directly. This does not affect saved
              games.

       -Olocals_marshalling
              Store all locals in one section of the pr_globals. Vastly reducing it. This  effectivly  does  the
              job  of overlaptemps. It's been noticed as buggy by a few, however, and the curcumstances where it
              causes problems are not yet known.

       -Ovectorcals
              Where a function is called with just a vector, this causes the function call to store three floats
              instead of one vector. This can save a good number of pr_globals where those vectors contain  many
              duplicate coordinates but do not match entirly.

Options

--help Show summary of options.

       -Fautoproto
              enable automatic prototyping

       -Fwasm dump all assembler code to qc.asm

       -Kkeyword,-Kno-keyword
              turn language keywords on or off. Keywords available to  toggle  are:  asm,  break,  case,  class,
              const,  continue, default, entity, enum, enumflags, extern, float, for, goto, int, integer, noref,
              nosave, shared, state, string, struct, switch, thinktime, typedef, union, var and vector.

       -O0,-O1,-O2,-O3,
              use optimisation level between 0 and 3. With 0, no optimisation takes place, other values  include
              more or less of the options in the section OPTIMISATION.

       -srcdirectory
              Specify a directory to look for source files (progs.src) in.

       -Wall  show all warnings

Synopsis

fteqcc [options]

See Also