/******************************************************************************** ------------------------- Ultra 64 MARIO Brothers ------------------------- File : pathmacs.h Description : pathdata command macros Date : 1995.x.x Author : H.yajima ********************************************************************************/ /******************************************************************************** ENUM LABEL LIST ********************************************************************************/ #define stw_imm 0 #define stw_flag 1 #define stw_enemyflag 2 #define stw_my_status 3 #define stw_hit_status 4 #define stw_hit_timer 5 #define stw_worldX 6 #define stw_worldY 7 #define stw_worldZ 8 #define stw_speedX 9 #define stw_speedY 10 #define stw_speedZ 11 #define stw_speedF 12 #define stw_speedL 13 #define stw_speedU 14 #define stw_angleX 15 #define stw_angleY 16 #define stw_angleZ 17 #define stw_animeangleX 18 #define stw_animeangleY 19 #define stw_animeangleZ 20 #define stw_animepositionY 21 #define stw_effect 22 #define stw_gravity 23 #define stw_groundY 24 #define stw_movestatus 25 #define stw_animecounter 26 #define stw_work0 27 #define stw_work1 28 #define stw_work2 29 #define stw_work3 30 #define stw_work4 31 #define stw_work5 32 #define stw_work6 33 #define stw_work7 34 #define stw_anglespeedX 35 #define stw_anglespeedY 36 #define stw_anglespeedZ 37 #define stw_skelanime 38 #define stw_actionmode 39 #define stw_wall_offsetR 40 #define stw_air_fric 41 #define stw_objname 42 #define stw_mail 43 #define stw_skeletonX 44 #define stw_skeletonY 45 #define stw_skeletonZ 46 #define stw_programselect 47 #define stw_breakflag 48 #define stw_mode 49 #define stw_process 50 #define stw_timer 51 #define stw_bound_e 52 #define stw_playerdist 53 #define stw_targetangle 54 #define stw_worldX_attention 55 #define stw_worldY_attention 56 #define stw_worldZ_attention 57 #define stw_friction 58 #define stw_specificG 59 #define stw_skelanimeNo 60 #define stw_alpha 61 #define stw_ap 62 #define stw_hp 63 #define stw_actorcode 64 #define stw_oldmode 65 #define stw_enemyinfo 66 #define stw_movebg_checkdist 67 #define stw_havecoin 68 #define stw_shapeLOD 69 #define stw_areamap_info 70 #define stw_enemytype 71 #define stw_taginfo 72 #define stw_work8 73 #define stw_work9 74 #define stw_wallangleY 75 #define stw_bgparam 76 #define stw_returnangle 77 #define stw_bgpointer 78 #define stw_soundparam 79 /*-----------------------------------------------------------------------------*/ #define look_player1 0 #define look_player2 1 #define look_mother 2 #define look_nearshape 3 #define look_nearenemy 4 #define look_nearplayer 5 #define look_neartarget 6 /*-----------------------------------------------------------------------------*/ #define CLEARSTAR_PLAYERPOS 0 #define CLEARSTAR_NOWPOS 1 #define CLEARSTAR_LOWSTAR 2 #define CLEARSTAR_RAILSTAR 3 /*-----------------------------------------------------------------------------*/ #define CHILEDMODE_NO_CATCH 0 #define CHILEDMODE_CATCH 1 #define CHILEDMODE_THROW 2 #define CHILEDMODE_DROP 3 #define CHILEDMODE_RESET 4 /*-----------------------------------------------------------------------------*/ #define ENFLAG_FLY 1 #define ENFLAG_DOWN 2 /*-----------------------------------------------------------------------------*/ #define BGTYPE_MOVEBG 1 #define BGTYPE_BGCHECK_CAMERASKIP 2 #define BGTYPE_BGCHECK_PLAYERSKIP 4 #define BGTYPE_BGCHECK_WALL_XTYPE 8 /*-----------------------------------------------------------------------------*/ #define MOVESTAT_BGBOUND 1 #define MOVESTAT_BGTOUCH 2 #define MOVESTAT_BGTAKEOFF 4 #define MOVESTAT_DIVE 8 #define MOVESTAT_SURFACEWATER 16 #define MOVESTAT_UNDERWATER 32 #define MOVESTAT_BOTTOMWATER 64 #define MOVESTAT_SKY 128 #define MOVESTAT_OUTSCOPE 256 #define MOVESTAT_WALL 512 #define MOVESTAT_GAKE 1024 #define MOVESTAT_FIRE 2048 #define MOVESTAT_WATERJUMP 4096 #define MOVESTAT_BIGBOUND 8192 #define MOVESTAT_DEATHCODE 16384 /*-----------------------------------------------------------------------------*/ #define STRATMAIN_COINCLEAR 1 #define STRATMAIN_DEMOMODE 2 #define STRATMAIN_ENEMYSTOP 4 #define STRATMAIN_PLAYERSTOP 8 #define STRATMAIN_ALLSTOP 16 #define STRATMAIN_DOOROPEN 32 #define STRATMAIN_DEMOMODE_OK 64 /*-----------------------------------------------------------------------------*/ #define OBJNAME_BIRD 1 #define OBJNAME_TAKE 2 #define OBJNAME_DOOR 4 #define OBJNAME_DAMAGE 8 #define OBJNAME_COIN 16 #define OBJNAME_ITEMHAT 32 #define OBJNAME_BAR 64 #define OBJNAME_NOKONOKO 128 #define OBJNAME_TOGEZO 256 #define OBJNAME_PUNCHITEM 512 #define OBJNAME_WIND 1024 #define OBJNAME_TRIPDOOR 2048 #define OBJNAME_TRIPSTAR 4096 #define OBJNAME_TRIPCHIMNEY 8192 #define OBJNAME_CANNON 16384 #define OBJNAME_PUNCHATTACK 32768 #define OBJNAME_RECOVER 65536 #define OBJNAME_MOTOS 131072 #define OBJNAME_FIRE 262144 #define OBJNAME_NOKOBOARD 524288 #define OBJNAME_HANACYAN 1048576 #define OBJNAME_WANWAN 2097152 #define OBJNAME_HEYHO 4194304 #define OBJNAME_FRIEND 8388608 #define OBJNAME_TORNEDO 16777216 #define OBJNAME_DRAINPIPE 33554432 #define OBJNAME_SHELL 67108864 #define OBJNAME_TRIPKAGO 134217728 #define OBJNAME_TAMA 268435456 #define OBJNAME_BIRIBIRI 536870912 /*-----------------------------------------------------------------------------*/ #define ENEMYINFO_ROBCOIN 1 #define ENEMYINFO_DAMAGEOFF 2 #define ENEMYINFO_CARRY 4 #define ENEMYINFO_KUPPA 8 #define ENEMYINFO_FRIEND_ENEMY 16 #define ENEMYINFO_AUTO_DOOR 32 #define ENEMYINFO_CATCH_OFF_REQUEST 64 #define ENEMYINFO_FURAFURA 128 #define ENEMYINFO_BOMB 256 #define ENEMYINFO_HORIAGE 512 #define ENEMYINFO_EXTSTAR 1024 #define ENEMYINFO_FINALSTAR 2048 #define ENEMYINFO_KANBAN 4096 #define ENEMYINFO_EAT 8192 #define ENEMYINFO_MESSAGE 16384 /*-----------------------------------------------------------------------------*/ #define objtype_player 0 #define objtype_allfire 1 #define objtype_plfire 2 #define objtype_enfire 3 #define objtype_enemyA 4 #define objtype_enemyB 5 #define objtype_item 6 #define objtype_build 7 #define objtype_option 8 #define objtype_moveBG 9 #define objtype_player_friend 10 #define objtype_control 11 #define objtype_effect 12 #define objtype_totalcount 13 /*-----------------------------------------------------------------------------*/ #define code_player 1 #define code_enemy 2 #define code_zako 4 #define code_kabe 8 /*-----------------------------------------------------------------------------*/ #define OBJECT_ON 1 #define OBJECT_ERASE 2 #define OBJECT_CALC_MOVEBG 4 #define OBJECT_AREAOUT 8 #define OBJECT_DEMOMOVEOBJ 16 #define OBJECT_DEMOMOVEENTRY 32 #define OBJECT_GHOST 64 #define OBJECT_DITHER 128 #define OBJECT_INITIAL 256 #define OBJECT_PLFIRE_OFF 512 #define OBJECT_NOWATER 1024 /*-----------------------------------------------------------------------------*/ #define ENEMYDEMO_LOOKPLAYER 1 #define ENEMYDEMO_SETMESSAGE 2 #define ENEMYDEMO_SETMESSAGE_YESNO 4 #define ENEMYDEMO_CAMERA 8 #define ENEMYDEMO_DLOG_NOSTOP 16 /*-----------------------------------------------------------------------------*/ #define stf_smoke 1 #define stf_splash 2 #define stf_sleep 4 #define stf_twinkle 8 #define stf_crash 16 #define stf_bubble 32 #define stf_diving 64 #define stf_ripple 128 #define stf_sink 256 #define stf_bubblejet 512 #define stf_wave 1024 #define stf_firesmoke 2048 #define stf_jumpsink 4096 #define stf_grass 8192 #define stf_sand 16384 #define stf_mowan 32768 #define stf_snow 65536 #define stf_breath 131072 #define stf_wallcrash 262144 #define stf_punchcrash 524288 /*-----------------------------------------------------------------------------*/ #define stf_moveON 1 #define stf_FspeedON 2 #define stf_YspeedON 4 #define stf_YangleSAME 8 #define stf_ALLangleSAME 16 #define stf_createON 32 #define stf_playerdistON 64 #define stf_alldispON 128 #define stf_playerON 256 #define stf_relativeON 512 #define stf_catchON 1024 #define stf_matrixON 2048 #define stf_programstopON 4096 #define stf_playerangleON 8192 #define stf_NOramsave 16384 /*-----------------------------------------------------------------------------*/ #define stratmode_player1 1 #define stratmode_player2 2 #define stratmode_program 4 #define stratmode_actorset_object 8 #define stratmode_wakidashi_on 16 #define stratmode_enemy_dead 32 /*-----------------------------------------------------------------------------*/ #define mks_exit 0 #define mks_root 1 #define mks_begin 2 #define mks_end 3 #define mks_joint 4 /*-----------------------------------------------------------------------------*/ #define ACTORTYPE_MAKEOBJ 0 #define ACTORTYPE_ACTOR 1 #define ACTORTYPE_TAG 2 /*-----------------------------------------------------------------------------*/ #define MODE_SWITCH_OFF 0 #define MODE_SWITCH_ON_ANIME 1 #define MODE_SWITCH_ON 2 #define MODE_SWITCH_OFF_ANIME 3 #define MODE_SWITCH_OFF_WAIT 4 /*-----------------------------------------------------------------------------*/ #define BURNSET_NOTHING 0 #define BURNSET_NORMAL_COIN 1 #define BURNSET_ESCAPE_COIN 2 /*-----------------------------------------------------------------------------*/ #define ITEMCODE_HAT_WING 0 #define ITEMCODE_HAT_METAL 1 #define ITEMCODE_HAT_ERASE 2 #define ITEMCODE_NOKO 3 #define ITEMCODE_COIN_1 4 #define ITEMCODE_COIN_3 5 #define ITEMCODE_COIN_10 6 #define ITEMCODE_1UP 7 #define ITEMCODE_GOALSTAR 8 #define ITEMCODE_1UP_ESCAPE 9 #define ITEMCODE_GOALSTAR_1 10 #define ITEMCODE_GOALSTAR_2 11 #define ITEMCODE_GOALSTAR_3 12 #define ITEMCODE_GOALSTAR_4 13 #define ITEMCODE_GOALSTAR_5 14 #define ITEMCODE_GOALSTAR_6 15 /*-----------------------------------------------------------------------------*/ /******************************************************************************** PATH PROGRAM MACRO ********************************************************************************/ #define stw_erasedist stw_movebg_checkdist #define MOVESTAT_NOSKY (MOVESTAT_BGBOUND+MOVESTAT_BGTOUCH+MOVESTAT_UNDERWATER+MOVESTAT_SURFACEWATER) #define MOVESTAT_GROUND (MOVESTAT_BGBOUND+MOVESTAT_BGTOUCH) #define MOVESTAT_WATER (MOVESTAT_DIVE+MOVESTAT_SURFACEWATER+MOVESTAT_UNDERWATER+MOVESTAT_BOTTOMWATER) #define MOVESTAT_STOP (MOVESTAT_SURFACEWATER+MOVESTAT_BOTTOMWATER+MOVESTAT_BGTOUCH) #define OBJNAME_KAMAKURA (0x40000000) #define OBJNAME_0 0 #define OBJNAME_KURIBO OBJNAME_PUNCHATTACK #define OBJNAME_KILLER OBJNAME_DAMAGE #define OBJNAME_BIGSTONE OBJNAME_PUNCHATTACK #define objtype_enemyC objtype_item #define STF_HITINITIAL (1<<30) #define ITEMCODE_END 99 #define allbit 0xffff #define p_animereset p_setd(animecounter,-1) #define p_animeinc p_addd(animecounter,1) #define p_animeset(n) p_setd(animecounter,(n)) #define p_hitOFF p_setd(hit_timer,-1) #define p_hitON p_setd(hit_timer,0) #define p_setname(name) p_setd(objname,OBJNAME_##name) #define p_movebginfo(addr) p_setshapeinfo(addr) #define _pcmd(num) ((num)<<24) #define _pindex(num,index,work) ((num)<<24)+((index)<<16)+((work)&0xffff) #define _pdata(dataH,dataL) (((dataH)&0xffff)<<16)+((dataL)&0xffff) #define _pbyte(c0,c1,c2,c3) ((c0)<<24)+((c1)<<16)+((c2)<<8)+(c3) #define p_killobj p_killshape /******************************************************************************** PATH COMMAND INDEX LIST ********************************************************************************/ #define pc_initialize 0 #define pc_wait 1 #define pc_jsr 2 #define pc_rts 3 #define pc_jmp 4 #define pc_do 5 #define pc_next 6 #define pc_next_imm 7 #define pc_while 8 #define pc_loop 9 #define pc_end 10 #define pc_exit 11 #define pc_program 12 #define pc_addf 13 #define pc_setf 14 #define pc_addd 15 #define pc_setd 16 #define pc_setbit 17 #define pc_clrbit 18 #define pc_setangle_random 19 #define pc_setf_random 20 #define pc_setd_random 21 #define pc_addf_random 22 #define pc_addd_random 23 #define pc_dprintf 24 #define pc_dprintx 25 #define pc_dprintd 26 #define pc_changeshape 27 #define pc_makeshape 28 #define pc_killshape 29 #define pc_BGcheckYset 30 #define pc_WADDf 31 #define pc_WADDd 32 #define pc_softspritemodeON 33 #define pc_shapeOFF 34 #define pc_sethitbox 35 #define pc_softspriteanime 36 #define pc_wait_work 37 #define pc_do_work 38 #define pc_set_pointer 39 #define pc_set_skelanime_number 40 #define pc_makeobj 41 #define pc_setshapeinfo 42 #define pc_sethitbox2 43 #define pc_makeobj_child 44 #define pc_save_nowpos 45 #define pc_setdamagebox 46 #define pc_setobjname 47 #define pc_setmovedata 48 #define pc_setobjinfo 49 #define pc_set_scale 50 #define pc_mother_clrbit 51 #define pc_inc_frame 52 #define pc_shapeDISABLE 53 #define pc_setlong 54 #define pc_makeobj_initdata 55 /******************************************************************************** PATH COMMAND MACRO ********************************************************************************/ #define p_initialize(type) .word _pindex(pc_initialize,objtype_##type,0) #define p_wait(var) .word _pindex(pc_wait,0,var) #define p_jsr(addr) .word _pcmd(pc_jsr),addr #define p_rts .word _pcmd(pc_rts) #define p_jmp(addr) .word _pcmd(pc_jmp),addr #define p_do(var) .word _pindex(pc_do,0,var) #define p_next .word _pcmd(pc_next) #define p_next_imm .word _pcmd(pc_next_imm) #define p_while .word _pcmd(pc_while) #define p_loop .word _pcmd(pc_loop) #define p_end .word _pcmd(pc_end) #define p_exit .word _pcmd(pc_exit) #define p_program(addr) .word _pcmd(pc_program),addr #define p_addf(index,work) .word _pindex(pc_addf,stw_##index,work) #define p_setf(index,work) .word _pindex(pc_setf,stw_##index,work) #define p_addd(index,work) .word _pindex(pc_addd,stw_##index,work) #define p_setd(index,work) .word _pindex(pc_setd,stw_##index,work) #define p_setbit(index,flag) .word _pindex(pc_setbit,stw_##index,flag) #define p_clrbit(index,flag) .word _pindex(pc_clrbit,stw_##index,flag) #define p_setangle_random(index,base,offset) .word _pindex(pc_setangle_random,stw_##index,base),_pdata(offset,0) #define p_setf_random(index,base,offset) .word _pindex(pc_setf_random,stw_##index,base),_pdata(offset,0) #define p_setd_random(index,base,offset) .word _pindex(pc_setd_random,stw_##index,base),_pdata(offset,0) #define p_addf_random(index,base,offset) .word _pindex(pc_addf_random,stw_##index,base),_pdata(offset,0) #define p_addd_random(index,base,offset) .word _pindex(pc_addd_random,stw_##index,base),_pdata(offset,0) #define p_dprintf(index) .word _pindex(pc_dprintf,stw_##index,0) #define p_dprintx(index) .word _pindex(pc_dprintx,stw_##index,0) #define p_dprintd(index) .word _pindex(pc_dprintd,stw_##index,0) #define p_changeshape(index,shape) .word _pindex(pc_changeshape,stw_##index,shape) #define p_makeshape(shape,strat) .word _pcmd(pc_makeshape),shape,strat #define p_killshape .word _pcmd(pc_killshape) #define p_BGcheckYset .word _pcmd(pc_BGcheckYset) #define p_WADDf(s1,s2,s3) .word _pbyte(pc_WADDf,stw_##s1,stw_##s2,stw_##s3) #define p_WADDd(s1,s2,s3) .word _pbyte(pc_WADDd,stw_##s1,stw_##s2,stw_##s3) #define p_softspritemodeON .word _pcmd(pc_softspritemodeON) #define p_shapeOFF .word _pcmd(pc_shapeOFF) #define p_sethitbox(Rdata,Hdata) .word _pcmd(pc_sethitbox),_pdata(Rdata,Hdata) #define p_softspriteanime(animeNo) .word _pindex(pc_softspriteanime,0,animeNo) #define p_wait_work(work) .word _pindex(pc_wait_work,stw_##work,0) #define p_do_work(work) .word _pindex(pc_do_work,stw_##work,0) #define p_set_pointer(work,addr) .word _pindex(pc_set_pointer,stw_##work,0),addr #define p_set_skelanime_number(n) .word _pindex(pc_set_skelanime_number,n,0) #define p_makeobj(shape,strat,number) .word _pindex(pc_makeobj,0,number),shape,strat #define p_setshapeinfo(addr) .word _pcmd(pc_setshapeinfo),addr #define p_sethitbox2(Rdata,Hdata,Ldata) .word _pcmd(pc_sethitbox2),_pdata(Rdata,Hdata),_pdata(Ldata,0) #define p_makeobj_child(shape,strat) .word _pcmd(pc_makeobj_child),shape,strat #define p_save_nowpos .word _pcmd(pc_save_nowpos) #define p_setdamagebox(Rdata,Hdata) .word _pcmd(pc_setdamagebox),_pdata(Rdata,Hdata) #define p_setobjname(name) .word _pcmd(pc_setobjname),OBJNAME_##name #define p_setmovedata(d0,d1,d2,d3,d4,d5,d6,d7) .word _pcmd(pc_setmovedata),_pdata(d0,d1),_pdata(d2,d3),_pdata(d4,d5),_pdata(d6,d7) #define p_setobjinfo(name) .word _pcmd(pc_setobjinfo),ENEMYINFO_##name #define p_set_scale(scale) .word _pindex(pc_set_scale,0,scale) #define p_mother_clrbit(index,flag) .word _pindex(pc_mother_clrbit,stw_##index,0),flag #define p_inc_frame(index,frame) .word _pindex(pc_inc_frame,stw_##index,frame) #define p_shapeDISABLE .word _pcmd(pc_shapeDISABLE) #define p_setlong(index,data) .word _pindex(pc_setlong,stw_##index,0),data #define p_makeobj_initdata(addr) .word _pcmd(pc_makeobj_initdata),addr /*=============================================================================== End Of File ===============================================================================*/