/* $Filename:    WormWars/Source/diff.h $
 * $VER:         WormWars 5.0 $
 * $Description: Header file for Worm Wars 5.0-5.2 for Amiga $
 *
 * © Copyright 1999 James R. Jacobs.
 */

#include <exec/types.h>

/* SAME ON EACH PLATFORM --------------------------------------------------

types */

#define AGLOBAL				;		// global (project-scope)
#define MODULE				static	// external static (file-scope)
#define PERSIST				static	// internal static (function-scope)
typedef signed char			ABOOL;	// 8-bit signed quantity (replaces ABOOL)
typedef signed char			SBYTE;	// 8-bit signed quantity (replaces Amiga BYTE)
typedef signed short		SWORD;	// 16-bit signed quantity (replaces Amiga WORD)
typedef signed long			SLONG;	/* 32-bit signed quantity (same as LONG)

DIFFERING ON EACH PLATFORM ------------------------------------------------

types */

typedef signed char			COLOUR;		// 8-bit signed
typedef unsigned char		SCANCODE;	/* 8-bit unsigned

miscellaneous */

#define DEFAULTSET			"PROGDIR:WormWars.fset"
#define DELAY_MAX			16000L
#define DELAY_DEC			 1000L
#define DELAY_MIN			 6000L
#define FONTX				    8				// in pixels...
#define FONTY				    8
#define HISCOREDISTANCE		   13
#define SCREENXPIXEL		  639
#define SCREENYPIXEL		  245
#define STARTXPIXEL			   83
#define STARTYPIXEL			   11

// scancodes

#define ALPHAONE			0x01	// row 1. alphabetic 1
#define ALPHATWO			0x02	// row 1. alphabetic 2
#define ALPHATHREE			0x03	// row 1. alphabetic 3
#define ALPHAFOUR			0x04	// row 1. alphabetic 4
#define ALPHAFIVE			0x05	// row 1. alphabetic 5
#define ALPHASIX			0x06	// row 1. alphabetic 6
#define ALPHASEVEN			0x07	// row 1. alphabetic 7
#define ALPHAEIGHT			0x08	// row 1. alphabetic 8
#define ALPHANINE			0x09	// row 1. alphabetic 9
#define NUMERICZERO			0x0F	// row 5. numeric 0
#define Q					0x10	// row 2.
#define W					0x11	// row 2.
#define E					0x12	// row 2. erase
#define I					0x17	// row 2. insert
#define O					0x18	// row 2. open...
#define P					0x19	// row 2.
#define NUMERICONE			0x1D	// row 5. numeric 1
#define NUMERICTWO			0x1E	// row 5. numeric 2
#define NUMERICTHREE		0x1F	// row 5. numeric 3
#define A					0x20	// row 3. save as...
#define S					0x21	// row 3. save
#define D					0x22	// row 3. delete
#define F					0x23	// row 3. effects
#define K		 			0x27	// row 3. append
#define INTERNATIONALONE	0x2B	/* row 3. international key adj. to
										Return (on some keyboards) */
#define NUMERICFOUR	 		0x2D	// row 5. numeric 4
#define NUMERICFIVE	 		0x2E	// row 5. numeric 5
#define NUMERICSIX	 		0x2F	// row 5. numeric 6
#define INTERNATIONALTWO	0x30	/* row 4. international key adj. to
										Left Shift (on some keyboards) */
#define Z		 			0x31	// row 4.
#define KEY_X				0x32	// row 4.
#define C					0x33	// row 4.
#define V					0x34	// row 4.
#define N					0x36	// row 4. new
#define M					0x37	// row 4. music
#define NUMERICDOT			0x3C	// row 5. numeric .
#define NUMERICSEVEN		0x3D	// row 5. numeric 7
#define NUMERICEIGHT		0x3E	// row 5. numeric 8
#define NUMERICNINE			0x3F	// row 5. numeric 9
#define SPACEBAR			0x40	// row 4.
#define ENTER				0x43	// row 5. numeric Enter
#define RETURN				0x44	// row 2. alphabetic Return
#define ESCAPE				0x45	// row 0.
#define DELETE				0x46	// row 3.
#define NUMERICMINUS		0x4A	// row 5. numeric -
#define UP					0x4C	// row 1.
#define DOWN				0x4D	// row 4.
#define RIGHT				0x4E	// row 3.
#define LEFT				0x4F	// row 2.
#define F1					0x50	// row 0.
#define F2					0x51	// row 0.
#define F3					0x52	// row 0.
#define F4					0x53	// row 0.
#define F5					0x54	// row 0.
#define F6					0x55	// row 0.
#define F7					0x56	// row 0.
#define F8					0x57	// row 0.
#define F9					0x58	// row 0.
#define NUMERICOPEN			0x5A	// row 0. numeric (
#define NUMERICCLOSE		0x5B	// row 0. numeric )
#define NUMERICSLASH		0x5C	// row 5. numeric /
#define NUMERICASTERISK		0x5D	// row 5. numeric *
#define NUMERICPLUS			0x5E	// row 5. numeric +
#define HELP				0x5F	// row 0.
#define FIRSTQUALIFIER		0x61
#define LASTQUALIFIER		0x67
#define KEYUP				0x80	// key release

// colours

#define BLACK		 0
#define WHITE		 1
#define DARKGREY	 2
#define MEDIUMGREY	 3
#define LIGHTGREY	 4
#define ORANGE		 5
#define PURPLE		 6
#define DARKGREEN	 8
#define GREEN		 9
#define DARKRED		10
#define RED			11
#define DARKBLUE	12
#define BLUE		13
#define DARKYELLOW	14
#define YELLOW		15

// AMIGA-ONLY -------------------------------------------------------------

#define JOYDELAY        	50000L		// 1,000,000 / JOYDELAY = movement in squares per second

// Must have blank line at EOF.
