/******************************************************************************** ------------------------- Ultra 64 MARIO Brothers ------------------------- File : pathdownbar.s Description : Date : 1995. Author : H.yajima ********************************************************************************/ /*################*/ #ifdef ASSEMBLER /*################*/ /******************************************************************************** --------------------- castle down bar --------------------- ********************************************************************************/ e_downbar_object: p_initialize(moveBG) p_setbit( flag,stf_moveON | stf_YangleSAME) p_setf(movebg_checkdist,300) p_while p_program(s_castle_downbar_1) p_program(stMainMoveBG) p_loop /*====================================================*/ e_downbridge: e_castle_downbar: p_initialize(control) p_setbit( flag,stf_moveON | stf_playerdistON | stf_alldispON ) p_save_nowpos p_while p_program(s_downbar) p_loop /*====================================================*/ e_d_teretrap: p_initialize(control) p_setbit(flag,stf_moveON | stf_playerdistON | stf_alldispON ) p_save_nowpos /* p_program(s_areastage_init) */ p_setd(programselect,1) p_while p_program(s_downbar) p_loop /*====================================================*/ e_mapobj_motos_07: p_initialize(control) p_setbit( flag,stf_moveON | stf_playerdistON | stf_alldispON ) p_save_nowpos /* p_changeshape(imm,S_motos_obj07_far) */ p_setd(programselect,2) p_while p_program(s_downbar) p_loop /*################*/ #else /*################*/ /******************************************************************************** --------------------- castle down bar --------------------- ********************************************************************************/ #define castle_bar_accel (execstp->s[stw_work0].d) extern short down_b_info[]; extern short d_trap_check_info[]; extern short motos_obj07_info[]; extern short e2_kuzure01_check_info[]; /*------------------------------------------------------------------------------*/ extern void s_castle_downbar_1(void) { switch (obj_mode){ case 0: if ( player1stp->ride_strat == execstp ){ obj_mode++; castle_bar_accel = 0x80 * RandomSign(); } break; #if 1 case 1: s_groundcheck(); if ( obj_timer > 5 ){ obj_mode++; objsound(NA_SE2_BRIDGEFALL); } break; case 2: if ( obj_anglespeedX < 0x400 ){ obj_anglespeedX += 0x80; } if ( -0x400 < obj_anglespeedZ && obj_anglespeedZ < 0x400 ){ obj_anglespeedZ += castle_bar_accel; } obj_gravity = -3; s_move_animeangle(); s_optionmove_F(); if ( obj_worldY < ( obj_groundY - 300 ) ) obj_mode++; break; case 3: break; #endif } if ( execstp->motherobj->s[stw_mode].d == mode_castle_downbar_exit ) s_remove_obj(execstp); } /*------------------------------------------------------------------------------*/ /* 0 .... castle downbar 1 .... obake downbar 2 .... motos downbar */ typedef struct { short count; short Zoffset; short Zadd; short shape; short *funlike; } DownbarRecord; static DownbarRecord downbar_data[] = { { 9,-512,128, S_down_bridge ,down_b_info }, { 9,-412,103, S_movebg03 ,d_trap_check_info }, { 9,-512,128, S_motos_obj07_near ,motos_obj07_info }, { 9,-512,128, S_movebg11 ,e2_kuzure01_check_info }, }; static void castle_downbar_init(void) { StrategyRecord *stp; int i; int n = obj_programselect; int x,z; int y = 0; int yoffset = 0; for(i=0;i 1200 ){ obj_mode = mode_castle_downbar_exit; s_shape_disp(); } } } /*------------------------------------------------------------------------------*/ static void castle_downbar_exit(void) { s_shape_disp(); obj_mode = mode_castle_downbar_wait; } /*------------------------------------------------------------------------------*/ static void castle_downbar_wait(void) { if ( s_check_pathname( e_mapobj_motos_07 ) || obj_playerdist < 1000 ){ obj_mode = mode_castle_downbar_init; } } /*------------------------------------------------------------------------------*/ static void *castle_downbar_modejmp[] = { castle_downbar_wait, castle_downbar_init, castle_downbar_main, castle_downbar_exit }; extern void s_downbar(void) { s_modejmp(castle_downbar_modejmp); } /*################*/ #endif /*################*/ /*=============================================================================== end end end end end end end end ===============================================================================*/