// Function numbers for the SPRITE16.COM driver, according to SPRITE16.DOC.
// Refer to this file for the actual documentation on the functions itself,
// the comments here only provide additional context.
// Only includes functions that are actually used in TH03.

#define SPRITE16 0x42

typedef enum {
	// Derives SPRITE16's internal alpha masks used for monochrome and
	// overlapped drawing from the sprite data area in VRAM. Should
	// consequently be called after every change to that area.
	SPRITE16_GENERATE_ALPHA = 1,
	SPRITE16_PUT = 2,
	SPRITE16_SET_MONO = 3,
	SPRITE16_SET_COLOR = 4,
	// Determines whether the VRAM area that will be occupied by newly drawn
	// sprites will be
	// • cleared using the alpha mask generated by SPRITE16_GENERATE_ALPHA
	//   before drawing (DX = OVERLAP_CLEAR, default)
	// • or left as is, with the bits of the new sprite being ORed on top of
	//   the existing VRAM content, separately on every individual bitplane
	//   (DX = OVERLAP_OR). This will consequently produce interesting colors
	//   wherever two sprites overlap.
	// This setting is ignored when in monochrome mode, which always touches
	// all bitplanes according to the alpha mask, identical to monochrome
	// blitting using the GRCG in RMW mode (e.g. using master.lib's
	// grcg_setcolor()).
	SPRITE16_SET_OVERLAP = 5,
	SPRITE16_SET_MASK = 8
} sprite16_func_t;

typedef enum {
	OVERLAP_CLEAR = 1,
	OVERLAP_OR = 0
} sprite16_overlap_t;

#define SPRITE16_RES_Y 200