sm64/data/p/pathsplash.p
2022-12-04 22:27:02 -05:00

337 lines
8.3 KiB
OpenEdge ABL

/********************************************************************************
-------------------------
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
===============================================================================*/