/******************************************************************************** ------------------------- Ultra 64 MARIO Brothers ------------------------- File : pathsplash.s Description : Date : 1995.7.27 Author : H.yajima ********************************************************************************/ /*################*/ #ifdef ASSEMBLER /*################*/ /********************************************************************************/ /* */ /* << OPTION >> */ /* */ /********************************************************************************/ /********************************************************************************/ /* */ /* PLAYER GA RIPPLE SURU */ /* */ /********************************************************************************/ /********************************************************************************/ /* */ /* PLAYER WATER RIPPLE */ /* */ /********************************************************************************/ e_rtest: p_initialize(option) p_setbit(flag,stf_moveON) p_setf(animeangleX,0) p_setf(animeangleY,0) p_setf(animeangleZ,0) p_animereset p_while p_animeinc p_wait(6) p_loop e_waterrippleB: p_initialize(option) p_setbit(flag,stf_moveON) p_setf(animeangleX,0) p_setf(animeangleY,0) p_setf(animeangleZ,0) p_animereset p_program(s_playerripple_init) /* PlayerRipple Initialize */ p_animeinc p_wait(6) p_while p_program(s_playerripple_main) p_animeinc p_do(6) p_program(s_playerripple_main) p_next p_loop /********************************************************************************/ /* */ /* PLAYER bubble wave */ /* */ /********************************************************************************/ e_playerwave: p_initialize(option) /* intital */ p_setbit(flag,stf_moveON) /* move mode ON */ p_mother_clrbit(effect,stf_wave) p_program(s_playerripple_init) /* PlayerRipple Initialize */ p_program(s_playerwave_init) /* PlayerRipple Initialize */ p_setf(animeangleX,0) p_setf(animeangleY,0) p_setf(animeangleZ,0) p_animereset p_do(8) p_animeinc p_wait(2) p_next p_killshape e_enemywave: p_initialize(option) /* intital */ p_setbit(flag,stf_moveON) /* move mode ON */ p_program(s_enemyripple_init) /* PlayerRipple Initialize */ p_setf(animeangleX,0) p_setf(animeangleY,0) p_setf(animeangleZ,0) p_animereset p_do(8) p_animeinc p_wait(2) p_next p_killshape /********************************************************************************/ /* */ /* PLAYER Water Ripple (A) */ /* */ /********************************************************************************/ e_rippleA: p_initialize(option) p_setbit(flag,stf_moveON) p_setf(animeangleX,0) p_setf(animeangleY,0) p_setf(animeangleZ,0) p_animereset p_do(6) p_animeinc p_next p_killshape /********************************************************************************/ /* */ /* PLAYER GA SPLASH SURU */ /* */ /********************************************************************************/ /********************************************************************************/ /* player splash */ /********************************************************************************/ e_splashanime: p_initialize(option) p_softspritemodeON p_setbit(flag,stf_moveON) p_setf(animepositionY,100) p_animereset p_do(3) p_animeinc p_next p_mother_clrbit(effect,stf_splash) p_killshape /********************************************************************************/ /* */ /* MIZU NO BAKUHATSU !!!!! */ /* */ /********************************************************************************/ /********************************************************************************/ /* Water Column */ /********************************************************************************/ e_watercoloumn: p_initialize(option) p_setbit(flag,stf_moveON) p_softspritemodeON p_setbit(flag,stf_moveON) p_animereset p_program(s_divinginit) watercoloumn_main: p_do(3) p_animeinc p_makeshape(S_waterdrop,e_waterdrop) p_makeshape(S_waterdrop,e_waterdrop) p_makeshape(S_waterdrop,e_waterdrop) p_wait(1) p_makeshape(S_waterdrop,e_waterdrop) p_makeshape(S_waterdrop,e_waterdrop) p_makeshape(S_waterdrop,e_waterdrop) p_next p_do(5) p_animeinc p_wait(1) p_next p_mother_clrbit(effect,stf_diving) p_killshape /********************************************************************************/ /* Water Drop */ /********************************************************************************/ e_waterdrop: p_initialize(option) p_setbit(flag,stf_moveON | stf_FspeedON | stf_YspeedON ) p_softspritemodeON p_setbit(flag,stf_moveON) p_animereset p_setf(groundY,-8000) p_setf(gravity,-5) p_setf_random(speedF,2,5) p_setf_random(speedY,20,30) p_setangle_random(angleY,0,0) p_wait(1) p_while p_program(s_dropmain) /* Water DropMain */ p_loop /********************************************************************************/ /* Water Drop Ripple */ /********************************************************************************/ e_dropripple: p_initialize(option) p_setbit(flag,stf_moveON) p_setf(animeangleX,0) p_setf(animeangleY,0) p_setf(animeangleZ,0) p_animereset p_program(s_drop_init) p_do(6) p_animeinc p_next p_killshape /*################*/ #else /*################*/ /********************************************************************************/ /* */ /* C Program */ /* */ /********************************************************************************/ /********************************************************************************/ /* player ripple */ /********************************************************************************/ /*------------------------------------------------------------------------------*/ extern void s_playerripple_init(void) { execstp->s[stw_worldY].f = playerWorks[0].water + 5; } extern void s_playerwave_init(void) { if ( frameCounter % 2 ) s_remove_obj(execstp); } /*------------------------------------------------------------------------------*/ extern void s_enemyripple_init(void) { float water = mcWaterCheck(obj_worldX,obj_worldZ); execstp->s[stw_worldY].f = water + 5; s_set_scale(4.0); } /*------------------------------------------------------------------------------*/ extern void s_playerripple_main(void) { execstp->s[stw_worldX].f = player1stp->s[stw_worldX].f; execstp->s[stw_worldZ].f = player1stp->s[stw_worldZ].f; /*---- End Check ----*/ if ( ( player1stp->s[stw_work0].d & PLAYER_RIPPLE ) == 0 ){ player1stp->s[stw_effect].d = player1stp->s[stw_effect].d & (stf_ripple^0xffff ); execstp->status = 0; /* Shape Remove */ } } /********************************************************************************/ /* water drop Program */ /********************************************************************************/ extern void s_divinginit(void) { float bgY = playerWorks[0].water; execstp->s[stw_worldY].f = bgY; } extern void s_dropmain(void) { StrategyRecord *stratp; float bgY = playerWorks[0].water; if ( bgY > (execstp->s[stw_worldY].f) ){ stratp = s_makeobj(execstp,0,S_rippleA,e_dropripple); stratp->s[stw_worldX].f = execstp->s[stw_worldX].f; stratp->s[stw_worldY].f = bgY + 5; stratp->s[stw_worldZ].f = execstp->s[stw_worldZ].f; execstp->status = 0; /* s_removeobj */ /* object remove */ } } /********************************************************************************/ /* water drop Program */ /********************************************************************************/ extern void s_drop_init(void) { stSetScale(execstp,0.5,1.0,0.5); } /*################*/ #endif /*################*/ /*=============================================================================== end end end end end end end end ===============================================================================*/