1013 lines
28 KiB
C
1013 lines
28 KiB
C
/********************************************************************************
|
|
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
|