Environment variables:

Boolean; default off
====================
M4D_ALL_AT_ONCE -- if set, pass animation frames to X server in one shot
M4D_CMAP_RESTRICT -- X: controls colormap allocation
M4D_CULLVERTS -- currently no-op; would get rid of unused vertices
                 when a frame is calculated.  Could be useful if we
                 someday store animation frames in files
M4D_DONT_CHECK_BBOX -- controls how stickers are picked
M4D_DONT_DRAW_FRAME -- X: suppresses drawing of frame
*M4D_DRAW_NEW_STATE -- forces explicit drawing of new state after each
                       move.  Useful for debugging.
M4D_EYEW -- Position of the "eye" in 4-space, on the +W axis.  Note that
            the radius of the inscribed circle of the hypercube is LENGTH
            (as described above, 3 by default).
M4D_EYEZ -- Position of the eye in 3-space, on the +Z axis.
M4D_HISTORY_DEBUG -- turns on debugging in History.cpp
M4D_NOCOMPRESSMOTION -- X: keeps X server from compressing motion events
                        while dragging the whole cube with shift-middle-down
M4D_NOCULLCELLS -- if set, frontcell culling is disabled
M4D_NOCULLFACES -- if set, backface culling is disabled
M4D_NOZSORT -- if set, z-sorting is disabled
M4D_NO_STRDUP_FIX -- X: toggles use of workaround
*M4D_OUTLINE -- determines whether outlines should be drawn around stickers
M4D_RESIZE_TOPLEVEL_FROM_TEXT -- X: related to resizing macros form
M4D_XVERBOSE -- X: turn on verbose messages
M4D_MACROS_ON_RIGHT -- place macros frame to the right
M4D_FAST_AUTOMOVES -- if set, skip animation while running moves
                      automatically such as during macro execution and
                      moving to marks

Default if unspecified
======================
*M4D_FACESHRINK -- fraction of full face size displayed
*M4D_INC -- how many degrees of tilt/twirl x/y/X/Y/shift-middle-down do
M4D_LENGTH -- initial dimensions.  Must be set before call to machine_init
*M4D_NFRAMES_120 -- number of frames of animation for 120 degree turn
*M4D_NFRAMES_180 -- number of frames of animation for 180 degree turn
*M4D_NFRAMES_90 -- number of frames of animation for 90 degree turn
*M4D_NSCRAMBLECHEN -- number of moves hitting "S" causes
M4D_NSHADES -- X: number of shades to use
*M4D_LOGFILE -- default logfile name
*M4D_STICKERSHRINK -- fraction of full sticker size displayed
M4D_TILT -- tilt (left-right position) of initial position
M4D_TWIRL -- twirl (forward-backward position) of initial position


In X implementation, all *'ed environment variables can be replaced by
commandline options or X Resource values as follows:

For example, adding "-outline" is equivalent to setting M4D_OUTLINE
and adding "-logfile ~/tmp/magiccube4d.log" is equivalent to setting
M4D_LOGFILE to ~/tmp/magiccube4d.log.

M4D_DRAW_NEW_STATE: redraw
M4D_OUTLINE: outline
M4D_MACROS_ON_RIGHT: rightmacros
M4D_FAST_AUTOMOVES: fastautomoves
M4D_FACESHRINK: faceshrink
M4D_INC: degrees
M4D_NFRAMES_120: nframes120
M4D_NFRAMES_180: nframes180
M4D_NFRAMES_90: nframes90
M4D_NSCRAMBLECHEN: nscramblechen
M4D_LOGFILE: logfile
M4D_STICKERSHRINK: stickershrink

No validation is done on this.  At machine initialization, these
commandline options or resource values are converted to environment
variable definitions to avoid having to touch the rest of the code.
