127 lines
3.0 KiB
OpenEdge ABL
127 lines
3.0 KiB
OpenEdge ABL
/********************************************************************************
|
|
-------------------------
|
|
Ultra 64 MARIO Brothers
|
|
-------------------------
|
|
|
|
File : pathchiri.s
|
|
Description :
|
|
Date : 1995.
|
|
Author : H.yajima
|
|
|
|
********************************************************************************/
|
|
|
|
|
|
/*################*/
|
|
#ifdef ASSEMBLER
|
|
/*################*/
|
|
|
|
/********************************************************************************
|
|
|
|
EFFECT OBJECT << chiri >>
|
|
|
|
********************************************************************************/
|
|
|
|
e_chiri:
|
|
p_initialize(effect)
|
|
p_setbit(flag,stf_moveON )
|
|
p_softspritemodeON
|
|
p_while
|
|
p_program(s_chiri)
|
|
p_loop
|
|
|
|
/*################*/
|
|
#else
|
|
/*################*/
|
|
|
|
#define chiri_scale (execstp->s[stw_work0].f)
|
|
#define chiri_scale_timer (execstp->s[stw_work1].d)
|
|
#define chiri_scale_mode (execstp->s[stw_work2].d)
|
|
|
|
/********************************************************************************
|
|
|
|
EFFECT OBJECT << chiri >>
|
|
|
|
********************************************************************************/
|
|
extern void s_chiri(void)
|
|
{
|
|
|
|
float scale;
|
|
|
|
if ( obj_timer == 0 ){
|
|
s_calcobj_speedF();
|
|
chiri_scale = execstp->map.scale[0];
|
|
switch(obj_programselect){
|
|
case EFFECT_BURN:
|
|
obj_alpha = 254;
|
|
chiri_scale_timer = -21;
|
|
chiri_scale_mode = 0;
|
|
break;
|
|
case EFFECT_MOWAN:
|
|
obj_alpha = 254;
|
|
chiri_scale_timer = -13;
|
|
chiri_scale_mode = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
s_optionmove_XZ();
|
|
s_calc_friction(obj_air_fric);
|
|
if ( obj_speedY > 100 ) obj_speedY = 100;
|
|
if ( obj_timer > 20 ) s_remove_obj(execstp);
|
|
|
|
if ( obj_alpha != 0 ){
|
|
obj_alpha += chiri_scale_timer;
|
|
if ( obj_alpha <= 1 ) s_remove_obj(execstp);
|
|
if ( chiri_scale_mode ) scale = chiri_scale * ( (254 - obj_alpha) / 254.0 );
|
|
else scale = chiri_scale * ( obj_alpha / 254.0 );
|
|
s_set_scale(scale);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/********************************************************************************
|
|
|
|
bomb effect
|
|
|
|
********************************************************************************/
|
|
|
|
static EffectRecord burneffect = {
|
|
EFFECT_BURN,
|
|
20, /* effect count */
|
|
S_hiteffect, /* effect character */
|
|
// S_blackeffect, /* effect character */
|
|
0, /* ================ */
|
|
40,5, /* speed F */
|
|
30,20, /* speed Y */
|
|
-4, /* gravity */
|
|
30, /* air fric */
|
|
330.0f, /* ================ */
|
|
10.0f /* ================ */
|
|
};
|
|
|
|
extern void s_burneffect(int flag,int offsetY,float scale)
|
|
{
|
|
|
|
burneffect.scale_min = scale;
|
|
burneffect.scale_random = scale / 20.0;
|
|
burneffect.offsetY = offsetY;
|
|
if ( flag == 0 ) burneffect.total = 20;
|
|
else if (flag > 20 ) burneffect.total = flag;
|
|
else burneffect.total = 4;
|
|
s_makeeffect_chiri(&burneffect);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*################*/
|
|
#endif
|
|
/*################*/
|
|
/*===============================================================================
|
|
end end end end end end end end
|
|
===============================================================================*/
|
|
|
|
|
|
|