sm64/data/iwa_path/kame.s

139 lines
3.5 KiB
ArmAsm

/********************************************************************************
-------------------------
Ultra 64 MARIO Brothers
-------------------------
Strategy
Feburary 31 1996 programed by Iwamoto Daiki
********************************************************************************/
/*################*/
#ifdef ASSEMBLER
/*################*/
/********************************************************************************
Kame (nokonoko) Path Data
********************************************************************************/
e_new_kame:
p_initialize(enemyA)
p_setbit(flag,stf_moveON | stf_catchON )
p_setd(objname,OBJNAME_TAKE)
p_BGcheckYset
p_sethitbox(40,50)
p_program(s_new_kame_init)
p_while
p_hitON
p_program(s_new_kame_main)
p_loop
/********************************************************************************
Kame (nokonoko) Path Data (Old Version)
********************************************************************************/
e_kame2:
p_initialize(option)
p_end
/*-----------------------------------------*/
emode_kame_wait:
p_initialize(option)
p_end
/*-----------------------------------------*/
emode_kame_catch:
p_initialize(option)
p_end
/*-----------------------------------------*/
emode_kame_drop:
p_initialize(option)
p_end
/*-----------------------------------------*/
emode_kame_throw:
p_initialize(option)
p_end
emode_kame_next:
p_initialize(option)
p_end
/*################*/
#else
/*################*/
/*=================================================================================================
New Kame Move Event
===================================================================================================*/
/***************************************************************************************************
New Kame Init
***************************************************************************************************/
extern void s_new_kame_init()
{
execstp->s[stw_gravity].f = 2.5;
// execstp->s[stw_friction].f = 0.9999;
execstp->s[stw_friction].f = 0.8;
execstp->s[stw_specificG].f = 1.3;
}
/***************************************************************************************************
Kame Drop
***************************************************************************************************/
static void KameDrop(void)
{
s_shapeON();
s_mode_drop();
execstp->s[stw_actionmode].d = CHILEDMODE_NO_CATCH;
execstp->s[stw_speedF].f = 0.;
execstp->s[stw_speedY].f = 0.;
}
/***************************************************************************************************
Kame Throw
***************************************************************************************************/
static void KameThrow(void)
{
s_throw_object();
s_shapeON();
execstp->s[stw_actionmode].d = CHILEDMODE_NO_CATCH;
execstp->s[stw_flag].d &= (stf_YangleSAME^0xffffffff);
execstp->s[stw_speedF].f = 40.;
execstp->s[stw_speedY].f = 20.;
}
/***************************************************************************************************
Kame Main
***************************************************************************************************/
extern void s_new_kame_main(void)
{
switch(execstp->s[stw_actionmode].d) {
case CHILEDMODE_NO_CATCH: ObjMoveEvent(); break;
case CHILEDMODE_CATCH: s_shapeOFF(); break;
case CHILEDMODE_THROW: KameThrow(); break;
case CHILEDMODE_DROP: KameDrop(); break;
}
}
/*################*/
#endif
/*################*/