DRNG ::= "DRNG" # { DRange DColor* DIndex* }
a <cell> is where the color or register appears within the range
The RNG_ACTIVE flags is set when the range is cyclable. A range
should only have the RNG_ACTIVE if it:
1> contains at least one color register
2> has a defined rate
3> has more than one color and/or color register
If the above conditions are met then RNG_ACTIVE is a user/program
preference. If the bit is NOT set the program should NOT cycle the
range.
The RNG_DP_RESERVED flags should always be 0!!!
typedef struct {
UBYTE min; /* min cell value */
UBYTE max; /* max cell value */
SHORT rate; /* color cycling rate, 16384 = 60 steps/second */
SHORT flags; /* 1=RNG_ACTIVE,4=RNG_DP_RESERVED */
UBYTE ntrue; /* number of DColor structs to follow */
UBYTE nregs; /* number of DIndex structs to follow */
} DRange;
typedef struct { UBYTE cell; UBYTE r,g,b; } DColor; /* true color cell */
typedef struct { UBYTE cell; UBYTE index; } DIndex;
/* color register cell */