/********************************************************************************
	seqlang.h: Ultra 64 MARIO Brothers include file

	Copyright (c) 1996 Nintendo co., ltd.  All rights reserved

	April 15, 1996
 ********************************************************************************/

#ifndef SEQLANG_H
#define	SEQLANG_H

#define	ShapePlayer1		1
#define	ShapePlayer2		2


#define	SEQ_WIPE_FADEIN				0
#define	SEQ_WIPE_FADEOUT			1

#define	WIPE_FADE_IN				0
#define	WIPE_FADE_OUT				1

#define	WIPE_TRI_SCR_OPEN			2
#define	WIPE_TRI_SCR_CLOSE			3

#define	WIPE_RECT_SCR_OPEN			4
#define	WIPE_RECT_SCR_CLOSE			5

#define	WIPE_R_DITHER_IN			6
#define	WIPE_R_DITHER_OUT			7

#define	WIPE_STAR_WIN_OPEN			8
#define	WIPE_STAR_WIN_CLOSE			9

#define	WIPE_CIRCLE_WIN_OPEN		10
#define	WIPE_CIRCLE_WIN_CLOSE		11

#define	WIPE_POLY_STAR_OPEN			12
#define	WIPE_POLY_STAR_CLOSE		13


#define	SEQ_MESG_ENTRANT			0


#define	SEQ_WATER_IN		0
#define	SEQ_WATER_OUT		1

#define	SEQ_KOOPA_NON		0
#define	SEQ_KOOPA_LIVE		1
#define	SEQ_KOOPA_DIED		2
#define	SEQ_STAR_LEVEL		3


#define	ENV_SNOW					2

#define	ENV_PLAIN					0x00
#define	ENV_ROCKMT					0x01
#define	ENV_SNOWMT					0x02
#define	ENV_DESERT					0x03
#define	ENV_HOUSE					0x04
#define	ENV_WATER					0x05
#define	ENV_SLIDER					0x06
#define	ENV_CODEMASK				0x07


#define	SEQ_AND		0
#define	SEQ_NAND	1
#define	SEQ_EQ		2
#define	SEQ_NE		3
#define	SEQ_GT		4
#define	SEQ_GE		5
#define	SEQ_LT		6
#define	SEQ_LE		7

#define	PAD			0


#define	STAR_00001		0x01
#define	STAR_00010		0x02
#define	STAR_00011		0x03
#define	STAR_00100		0x04
#define	STAR_00101		0x05
#define	STAR_00110		0x06
#define	STAR_00111		0x07
#define	STAR_01000		0x08
#define	STAR_01001		0x09
#define	STAR_01010		0x0A
#define	STAR_01011		0x0B
#define	STAR_01100		0x0C
#define	STAR_01101		0x0D
#define	STAR_01110		0x0E
#define	STAR_01111		0x0F
#define	STAR_10000		0x10
#define	STAR_10001		0x11
#define	STAR_10010		0x12
#define	STAR_10011		0x13
#define	STAR_10100		0x14
#define	STAR_10101		0x15
#define	STAR_10110		0x16
#define	STAR_10111		0x17
#define	STAR_11000		0x18
#define	STAR_11001		0x19
#define	STAR_11010		0x1A
#define	STAR_11011		0x1B
#define	STAR_11100		0x1C
#define	STAR_11101		0x1D
#define	STAR_11110		0x1E
#define	STAR_11111		0x1F


/********************************************************************************/
/*	Geometry render mode.														*/
/********************************************************************************/

#define	GMODE_PLAYER	0
#define	GMODE_COURSE	1
#define	GMODE_LEVEL		2
#define	GMODE_STAGE		3
#define	GMODE_SCENE		4



/********************************************************************************/
/*	C Language only.															*/
/********************************************************************************/

#ifndef ASSEMBLER

typedef uchar	Sequence, *SequencePtr;

extern SequencePtr
ExecuteSequence(SequencePtr sequence);

#endif

/********************************************************************************/
/*	Sequence language command ID.												*/
/********************************************************************************/

#define	_seqExecute_id				 0
#define	_seqChain_id				 1
#define	_seqExit_id					 2
#define	_seqWait_id					 3
#define	_seqFreeze_id				 4
#define	_seqJump_id					 5
#define	_seqCall_id					 6
#define	_seqReturn_id				 7
#define	_seqDo_id					 8
#define	_seqNext_id					 9
#define	_seqRepeat_id				10
#define	_seqUntil_id				11
#define	_seqTstJump_id				12
#define	_seqTstCall_id				13
#define	_seqIf_id					14
#define	_seqElse_id					15
#define	_seqEndif_id				16
#define	_seqCProgram_id				17
#define	_seqRunning_id				18
#define	_seqSetResult_id			19

#define	_seqLinkMemory_id			20
#define	_seqUnlinkMemory_id			21
#define	_seqLoadCode_id				22
#define	_seqLoadData_id				23
#define	_seqLoadPres_id				24
#define	_seqLoadFace_id				25
#define	_seqLoadText_id				26

#define	_seqInitStage_id			27
#define	_seqDestroyStage_id			28
#define	_seqBeginConstruction_id	29
#define	_seqEndConstruction_id		30
#define	_seqBeginScene_id			31
#define	_seqEndScene_id				32
#define	_seqGfxShape_id				33
#define	_seqHmsShape_id				34
#define	_seqSclShape_id				35
#define	_seqActor_id				36
#define	_seqStarring_id				37
#define	_seqPort_id					38
#define	_seqBGPort_id				39
#define	_seqConnect_id				40

#define	_seqOpenScene_id			41
#define	_seqCloseScene_id			42
#define	_seqEnterPlayer_id			43
#define	_seqExitPlayer_id			44
#define	_seqExecStrategy_id			45

#define	_seqMapInfo_id				46
#define	_seqAreaInfo_id				47
#define	_seqMessage_id				48
#define	_seqEnvironment_id			49
#define	_seqBlankColor_id			50

#define	_seqWipe_id					51
#define	_seqBlanking_id				52
#define	_seqGamma_id				53

#define	_seqSetMusic_id				54
#define	_seqPlayMusic_id			55
#define	_seqStopMusic_id			56

#define	_seqTagInfo_id				57
#define	_seqWindZone_id				58
#define	_seqWaterJet_id				59

#define	_seqGameMode_id				60

#ifdef ASSEMBLER

#define	RGBA16(r,g,b,a)		(((r)<<11) | ((g)<<6) | ((b)<<1) | (a))
#define	AudFrame(n)			((n)*8-2)

/*===============================================================================
 *
 *	Sequence control command
 */

/********************************************************************************/
/*	seqExecute																	*/
/********************************************************************************/

#define	seqExecute(segment, romStart, romEnd, procedure) \
	.byte	_seqExecute_id; \
	.byte	16;				\
	.half	segment;		\
	.word	romStart;		\
	.word	romEnd;			\
	.word	procedure

/********************************************************************************/
/*	seqChain																	*/
/********************************************************************************/

#define	seqChain(segment, romStart, romEnd, procedure) \
	.byte	_seqChain_id; \
	.byte	16;			  \
	.half	segment;	  \
	.word	romStart;	  \
	.word	romEnd;		  \
	.word	procedure

/********************************************************************************/
/*	seqExit																		*/
/********************************************************************************/

#define	seqExit			 \
	.byte	_seqExit_id; \
	.byte	4;			 \
	.half	PAD

/********************************************************************************/
/*	seqEnd																		*/
/********************************************************************************/

#define	seqEnd			 \
	.byte	_seqWait_id; \
	.byte	4;			 \
	.half	PAD

/********************************************************************************/
/*	seqWait																		*/
/********************************************************************************/

#define	seqWait(nframes) \
	.byte	_seqWait_id; \
	.byte	4;			 \
	.half	nframes

/********************************************************************************/
/*	seqFreeze																	*/
/********************************************************************************/

#define	seqFreeze(nframes) \
	.byte	_seqFreeze_id; \
	.byte	4;			   \
	.half	nframes

/********************************************************************************/
/*	seqJump																		*/
/********************************************************************************/

#define	seqJump(procedure) \
	.byte	_seqJump_id;   \
	.byte	8;			   \
	.half	PAD;		   \
	.word	procedure	

/********************************************************************************/
/*	seqCall																		*/
/********************************************************************************/

#define	seqCall(procedure) \
	.byte	_seqCall_id;   \
	.byte	8;			   \
	.half	PAD;		   \
	.word	procedure

/********************************************************************************/
/*	seqReturn																	*/
/********************************************************************************/

#define	seqReturn		   \
	.byte	_seqReturn_id; \
	.byte	4;			   \
	.half	PAD

/********************************************************************************/
/*	seqDo																		*/
/********************************************************************************/

#define	seqDo(nrounds) \
	.byte	_seqDo_id; \
	.byte	4;		   \
	.half	nrounds

/********************************************************************************/
/*	seqNext																		*/
/********************************************************************************/

#define	seqNext			 \
	.byte	_seqNext_id; \
	.byte	4;			 \
	.half	PAD

/********************************************************************************/
/*	seqRepeat																	*/
/********************************************************************************/

#define	seqRepeat		   \
	.byte	_seqRepeat_id; \
	.byte	4;			   \
	.half	PAD

/********************************************************************************/
/*	seqUntil																	*/
/********************************************************************************/

#define	seqUntil(condition, value) \
	.byte	_seqUntil_id; \
	.byte	8;			  \
	.byte	condition;	  \
	.byte	PAD;		  \
	.word	value

/********************************************************************************/
/*	seqTstJump																	*/
/********************************************************************************/

#define	seqTstJump(condition, value, procedure) \
	.byte	_seqTstJump_id; \
	.byte	12;				\
	.byte	condition;		\
	.byte	PAD;			\
	.word	value;			\
	.word	procedure

/********************************************************************************/
/*	seqTstCall																	*/
/********************************************************************************/

#define	seqTstCall(condition, value, procedure) \
	.byte	_seqTstCall_id; \
	.byte	12;				\
	.byte	condition;		\
	.byte	PAD;			\
	.word	value;			\
	.word	procedure

/********************************************************************************/
/*	seqIf																		*/
/********************************************************************************/

#define	seqIf(condition, index, value) \
	.byte	_seqIf_id; \
	.byte	8;		   \
	.byte	condition; \
	.byte	PAD;	   \
	.word	value

/********************************************************************************/
/*	seqElse																		*/
/********************************************************************************/

#define	seqElse			 \
	.byte	_seqElse_id; \
	.byte	4;			 \
	.half	PAD

/********************************************************************************/
/*	seqEndif																	*/
/********************************************************************************/

#define	seqEndif		  \
	.byte	_seqEndif_id; \
	.byte	4;			  \
	.half	PAD

/********************************************************************************/
/*	seqCProgram																	*/
/********************************************************************************/

#define	seqCProgram(program, code) \
	.byte	_seqCProgram_id; \
	.byte	8;				 \
	.half	code;			 \
	.word	program

/********************************************************************************/
/*	seqRunning																	*/
/********************************************************************************/

#define	seqRunning(program, code) \
	.byte	_seqRunning_id; \
	.byte	8;				\
	.half	code;			\
	.word	program

/********************************************************************************/
/*	seqSetResult																*/
/********************************************************************************/

#define	seqSetResult(code) \
	.byte	_seqSetResult_id; \
	.byte	4;				  \
	.half	code;







/*===============================================================================
 *
 *	Memory allocation command
 */

/********************************************************************************/
/*	seqLinkMemory																*/
/********************************************************************************/

#define	seqLinkMemory()		   \
	.byte	_seqLinkMemory_id; \
	.byte	4;				   \
	.half	PAD

/********************************************************************************/
/*	seqUnlinkMemory																*/
/********************************************************************************/

#define	seqUnlinkMemory()		 \
	.byte	_seqUnlinkMemory_id; \
	.byte	4;					 \
	.half	PAD

/********************************************************************************/
/*	seqLoadCode																	*/
/********************************************************************************/

#define	seqLoadCode(ramAddr, romStart, romEnd) \
	.byte	_seqLoadCode_id; \
	.byte	16;				 \
	.half	PAD;			 \
	.word	ramAddr;		 \
	.word	romStart;		 \
	.word	romEnd

/********************************************************************************/
/*	seqLoadData																	*/
/********************************************************************************/

#define	seqLoadData(segment, romStart, romEnd) \
	.byte	_seqLoadData_id; \
	.byte	12;				 \
	.half	segment;		 \
	.word	romStart;		 \
	.word	romEnd

/********************************************************************************/
/*	seqLoadPres																	*/
/********************************************************************************/

#define	seqLoadPres(segment, romStart, romEnd) \
	.byte	_seqLoadPres_id; \
	.byte	12;				 \
	.half	segment;		 \
	.word	romStart;		 \
	.word	romEnd

/********************************************************************************/
/*	seqLoadFace																	*/
/********************************************************************************/

#define	seqLoadFace(number)  \
	.byte	_seqLoadFace_id; \
	.byte	4;				 \
	.half	number

/********************************************************************************/
/*	seqLoadText																	*/
/********************************************************************************/

#define	seqLoadText(segment, romStart, romEnd) \
	.byte	_seqLoadText_id; \
	.byte	12;				 \
	.half	segment;		 \
	.word	romStart;		 \
	.word	romEnd














/*================================================================================
 *
 *	Stage construction command
 */

/********************************************************************************/
/*	seqInitStage																*/
/********************************************************************************/

#define seqInitStage() \
	.byte	_seqInitStage_id; \
	.byte	4;				  \
	.half	PAD

/********************************************************************************/
/*	seqDestroyStage																*/
/********************************************************************************/

#define seqDestroyStage()		 \
	.byte	_seqDestroyStage_id; \
	.byte	4;					 \
	.half	PAD

/********************************************************************************/
/*	seqStageConstruction														*/
/********************************************************************************/

#define	seqBeginConstruction()		  \
	.byte	_seqBeginConstruction_id; \
	.byte	4;						  \
	.half	PAD

/********************************************************************************/
/*	seqEndConstruction															*/
/********************************************************************************/

#define	seqEndConstruction()  		\
	.byte	_seqEndConstruction_id; \
	.byte	4;						\
	.half	PAD

/********************************************************************************/
/*	seqBeginScene																*/
/********************************************************************************/

#define seqBeginScene(sceneNo, hierarchy) \
	.byte	_seqBeginScene_id; \
	.byte	8;				   \
	.byte	sceneNo;		   \
	.byte	PAD;			   \
	.word	hierarchy

/********************************************************************************/
/*	seqEndScene																	*/
/********************************************************************************/

#define seqEndScene() \
	.byte	_seqEndScene_id; \
	.byte	4;				 \
	.half	PAD

/********************************************************************************/
/*	seqGfxShape																	*/
/********************************************************************************/

#define	seqGfxShape(shapeNo, gfxlist, mode) \
	.byte	_seqGfxShape_id;   \
	.byte	8;				   \
	.half	mode*4096+shapeNo; \
	.word	gfxlist

/********************************************************************************/
/*	seqHmsShape																	*/
/********************************************************************************/

#define	seqHmsShape(shapeNo, hierarchy) \
	.byte	_seqHmsShape_id; \
	.byte	8;				 \
	.half	shapeNo;		 \
	.word	hierarchy

/********************************************************************************/
/*	seqSclShape																	*/
/********************************************************************************/

#define	seqSclShape(shapeNo, gfxlist, mode, scale) \
	.byte	_seqSclShape_id;   \
	.byte	12;				   \
	.half	mode*4096+shapeNo; \
	.word	gfxlist;		   \
	.float	scale

/********************************************************************************/
/*	seqHmsMario																	*/
/********************************************************************************/

#define	seqHmsMario(shapeNo, code, strategy) \
	.byte	_seqStarring_id; \
	.byte	12;				 \
	.byte	0;				 \
	.byte	shapeNo;		 \
	.word	code;			 \
	.word	strategy

/********************************************************************************/
/*	seqHmsLuigi																	*/
/********************************************************************************/

#define	seqHmsLuigi(shapeNo, code, strategy) \
	.byte	_seqStarring_id; \
	.byte	12;				 \
	.byte	1;				 \
	.byte	shapeNo;		 \
	.word	code;			 \
	.word	strategy

/********************************************************************************/
/*	seqActor																	*/
/********************************************************************************/

#define	seqActor(shapeNo, posx, posy, posz, angx, angy, angz, code1, code2, flags, strategy) \
	.byte	_seqActor_id; \
	.byte	24;			  \
	.byte	0x1f;		  \
	.byte	shapeNo;	  \
	.half	posx;		  \
	.half	posy;		  \
	.half	posz;		  \
	.half	angx;		  \
	.half	angy;		  \
	.half	angz;		  \
	.byte	code1;		  \
	.byte	code2;		  \
	.half	flags;		  \
	.word	strategy

#define	seqLevelActor(level, shapeNo, posx, posy, posz, angx, angy, angz, code1, code2, flags, strategy) \
	.byte	_seqActor_id; \
	.byte	24;			  \
	.byte	level;		  \
	.byte	shapeNo;	  \
	.half	posx;		  \
	.half	posy;		  \
	.half	posz;		  \
	.half	angx;		  \
	.half	angy;		  \
	.half	angz;		  \
	.byte	code1;		  \
	.byte	code2;		  \
	.half	flags;		  \
	.word	strategy

/********************************************************************************/
/*	seqPort																		*/
/********************************************************************************/

#define	seqGameClear(stage, scene, port)		seqPort(0xf0,stage,scene,port)
#define	seqGameOver(stage, scene, port)			seqPort(0xf1,stage,scene,port)
#define	seqViewRoof(stage, scene, port)			seqPort(0xf2,stage,scene,port)
#define	seqCourseOut(stage, scene, port)		seqPort(0xf3,stage,scene,port)

#define	seqPort(number, stage, scene, port) \
	.byte	_seqPort_id; \
	.byte	8;			 \
	.byte	number;		 \
	.byte	stage;		 \
	.byte	scene;		 \
	.byte	port;		 \
	.byte	0x00;		 \
	.byte	PAD

#define	seqMidPort(number, stage, scene, port) \
	.byte	_seqPort_id; \
	.byte	8;			 \
	.byte	number;		 \
	.byte	stage;		 \
	.byte	scene;		 \
	.byte	port;		 \
	.byte	0x80;		 \
	.byte	PAD

/********************************************************************************/
/*	seqBGPort																	*/
/********************************************************************************/

#define	seqBGPort(bgattr, stage, scene, port) \
	.byte	_seqBGPort_id; \
	.byte	8;			   \
	.byte	bgattr;		   \
	.byte	stage;		   \
	.byte	scene;		   \
	.byte	port;		   \
	.byte	0x00;		   \
	.byte	PAD

#define	seqMidBGPort(bgattr, stage, scene, port) \
	.byte	_seqBGPort_id; \
	.byte	8;			   \
	.byte	bgattr;		   \
	.byte	stage;		   \
	.byte	scene;		   \
	.byte	port;		   \
	.byte	0x80;		   \
	.byte	PAD

/********************************************************************************/
/*	seqConnect																	*/
/********************************************************************************/

#define	seqConnect(number, scene, offsetx, offsety, offsetz) \
	.byte	_seqConnect_id; \
	.byte	12;				\
	.byte	number;			\
	.byte	scene;			\
	.half	offsetx;		\
	.half	offsety;		\
	.half	offsetz;		\
	.half	PAD

/********************************************************************************/
/*	seqGround																	*/
/********************************************************************************/

#define	seqGround(address) \
	.byte	_seqGround_id; \
	.byte	8;			   \
	.half	PAD;		   \
	.word	address

/********************************************************************************/
/*	seqMapInfo																	*/
/********************************************************************************/

#define	seqMapInfo(address) \
	.byte	_seqMapInfo_id; \
	.byte	8;				\
	.half	PAD;			\
	.word	address

/********************************************************************************/
/*	seqAreaInfo																	*/
/********************************************************************************/

#define	seqAreaInfo(address) \
	.byte	_seqAreaInfo_id; \
	.byte	8;				 \
	.half	PAD;			 \
	.word	address

/********************************************************************************/
/*	seqTagInfo																	*/
/********************************************************************************/

#define	seqTagInfo(address) \
	.byte	_seqTagInfo_id; \
	.byte	8;				\
	.half	PAD;			\
	.word	address







/*===============================================================================
 *
 *	Scene control command
 */

/********************************************************************************/
/*	seqOpenScene																*/
/********************************************************************************/

#define	seqOpenScene(scene)   \
	.byte	_seqOpenScene_id; \
	.byte	4;				  \
	.byte	scene;			  \
	.byte	PAD

/********************************************************************************/
/*	seqCloseScene																*/
/********************************************************************************/

#define	seqCloseScene(scene)   \
	.byte	_seqCloseScene_id; \
	.byte	4;				   \
	.byte	scene;			   \
	.byte	PAD

/********************************************************************************/
/*	seqEnterMario																*/
/********************************************************************************/

#define	seqEnterMario(scene, angle, posx, posy, posz) \
	.byte	_seqEnterPlayer_id; \
	.byte	12;					\
	.byte	scene;				\
	.byte	0;					\
	.half	angle;				\
	.half	posx;				\
	.half	posy;				\
	.half	posz

/********************************************************************************/
/*	seqEnterLuigi																*/
/********************************************************************************/

#define	seqEnterLuigi(scene, angle, posx, posy, posz) \
	.byte	_seqEnterPlayer_id; \
	.byte	12;					\
	.byte	scene;				\
	.byte	1;					\
	.half	angle;				\
	.half	posx;				\
	.half	posy;				\
	.half	posz


/********************************************************************************/
/*	seqExitMario																*/
/********************************************************************************/

#define	seqExitMario()		   \
	.byte	_seqExitPlayer_id; \
	.byte	4;				   \
	.byte	PAD;			   \
	.byte	0

/********************************************************************************/
/*	seqExitLuigi																*/
/********************************************************************************/

#define	seqExitLuigi()		   \
	.byte	_seqExitPlayer_id; \
	.byte	4;				   \
	.byte	PAD;			   \
	.byte	1

/********************************************************************************/
/*	seqExecStrategy																*/
/********************************************************************************/

#define	seqExecStrategy()		 \
	.byte	_seqExecStrategy_id; \
	.byte	4;					 \
	.half	PAD

/********************************************************************************/
/*	seqWipe																		*/
/********************************************************************************/

#define	seqWipe(mode, nframes, r, g, b) \
	.byte	_seqWipe_id; \
	.byte	8;			 \
	.byte	mode;		 \
	.byte	nframes;	 \
	.byte	r;			 \
	.byte	g;			 \
	.byte	b;			 \
	.byte	PAD

/********************************************************************************/
/*	seqBlanking																	*/
/********************************************************************************/

#define	seqBlanking(blankSw) \
	.byte	_seqBlanking_id; \
	.byte	4;				 \
	.byte	blankSw;		 \
	.byte	PAD

/********************************************************************************/
/*	seqGamma																	*/
/********************************************************************************/

#define	seqGammaCorrection(gammaSw) \
	.byte	_seqGamma_id; \
	.byte	4;			  \
	.byte	gammaSw;	  \
	.byte	PAD

/********************************************************************************/
/*	seqEnvironment																*/
/********************************************************************************/

#define	seqEnvironment(flags)	\
	.byte	_seqEnvironment_id; \
	.byte	4;					\
	.half	flags

/********************************************************************************/
/*	seqBlankColor																*/
/********************************************************************************/

#define	seqBlankColor(color) \
	.byte	_seqBlankColor_id; \
	.byte	4;				   \
	.half	color

/********************************************************************************/
/*	seqMessage																	*/
/********************************************************************************/

#define	seqMessage(type, message) \
	.byte	_seqMessage_id; \
	.byte	4;				   \
	.byte	type;			   \
	.byte	message

/********************************************************************************/
/*	seqSetMusic																	*/
/********************************************************************************/

#define	seqSetMusic(type, music) \
	.byte	_seqSetMusic_id; \
	.byte	8;				 \
	.half	type;			 \
	.half	music;			 \
	.half	PAD

/********************************************************************************/
/*	seqPlayMusic																*/
/********************************************************************************/

#define	seqPlayMusic(music, fade) \
	.byte	_seqPlayMusic_id; \
	.byte	4;				  \
	.half	music

/********************************************************************************/
/*	seqStopMusic																*/
/********************************************************************************/

#define	seqStopMusic(fade) \
	.byte	_seqStopMusic_id; \
	.byte	4;				  \
	.half	fade

/********************************************************************************/
/*	seqWindZone																	*/
/********************************************************************************/

#define	seqWindZone(px1, pz1, px2, pz2, angle)  \
	.byte	_seqWindZone_id; \
	.byte	12;				 \
	.half	px1;			 \
	.half	pz1;			 \
	.half	px2;			 \
	.half	pz2;			 \
	.half	angle

/********************************************************************************/
/*	seqWaterJet																	*/
/********************************************************************************/

#define	seqWaterJet(number, posx, posy, posz, force, koopa2)  \
	.byte	_seqWaterJet_id; \
	.byte	12;				 \
	.byte	number;			 \
	.byte	koopa2;		 	 \
	.half	posx;			 \
	.half	posy;			 \
	.half	posz;			 \
	.half	force

/********************************************************************************/
/*	seqSetGameMode																*/
/********************************************************************************/

#define	seqSetGameMode(type) \
	.byte	_seqGameMode_id; \
	.byte	4;				 \
	.byte	0;				 \
	.byte	type

/********************************************************************************/
/*	seqGetGameMode																*/
/********************************************************************************/

#define	seqGetGameMode(type) \
	.byte	_seqGameMode_id; \
	.byte	4;				 \
	.byte	1;				 \
	.byte	type


#endif
#endif
