The first commit
This commit is contained in:
162
src/CC/ch/sawblade.c
Normal file
162
src/CC/ch/sawblade.c
Normal file
@@ -0,0 +1,162 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
typedef struct {
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
}Struct_CC_3130_0;
|
||||
|
||||
typedef struct {
|
||||
Struct_CC_3130_0 *unk0;
|
||||
s32 unk4;
|
||||
}ActorLocal_CC_3130;
|
||||
|
||||
void chSawblade_update(Actor *this);
|
||||
|
||||
/* .data */
|
||||
Struct_CC_3130_0 D_80389C30[] = {
|
||||
{ -80.0f, 0.4f},
|
||||
{-160.0f, 0.6f},
|
||||
{-240.0f, 0.8f},
|
||||
{ 80.0f, 0.4f},
|
||||
{ 160.0f, 0.6f},
|
||||
{ 240.0f, 0.8f},
|
||||
{ -80.0f, 0.4f},
|
||||
{-160.0f, 0.6f},
|
||||
{-240.0f, 0.8f},
|
||||
{ 80.0f, 0.4f},
|
||||
{ 160.0f, 0.6f},
|
||||
{ 240.0f, 0.8f}
|
||||
};
|
||||
|
||||
ActorInfo D_80389C90 = {
|
||||
0x28, ACTOR_3D_CLANKER_SAWBLADE_PROPELLOR_1, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389CB4 = {
|
||||
0x28, ACTOR_3E_CLANKER_SAWBLADE_PROPELLOR_2, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389CD8 = {
|
||||
0x28, ACTOR_3F_CLANKER_SAWBLADE_PROPELLOR_3, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389CFC = {
|
||||
0x28, ACTOR_40_CLANKER_SAWBLADE_PROPELLOR_4, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389D20 = {
|
||||
0x28, ACTOR_41_CLANKER_SAWBLADE_PROPELLOR_5, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389D44 = {
|
||||
0x28, ACTOR_42_CLANKER_SAWBLADE_PROPELLOR_6, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389D68 = {
|
||||
0x28, ACTOR_290_CLANKER_SAWBLADE_PROPELLOR_7, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389D8C = {
|
||||
0x28, ACTOR_291_CLANKER_SAWBLADE_PROPELLOR_8, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389DB0 = {
|
||||
0x28, ACTOR_292_CLANKER_SAWBLADE_PROPELLOR_9, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389DD4 = {
|
||||
0x28, ACTOR_293_CLANKER_SAWBLADE_PROPELLOR_10, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389DF8 = {
|
||||
0x28, ACTOR_294_CLANKER_SAWBLADE_PROPELLOR_11, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80389E1C = {
|
||||
0x28, ACTOR_295_CLANKER_SAWBLADE_PROPELLOR_12, ASSET_43A_MODEL_CLANKER_SAWBLADE_PROPELLOR,
|
||||
0, NULL,
|
||||
chSawblade_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_80389520(ActorMarker *marker, ActorMarker *otherMarker){
|
||||
FUNC_8030E624(SFX_65_METALLIC_SCRATCH, 1.0f, 30000);
|
||||
}
|
||||
|
||||
void func_8038954C(ActorMarker *marker, ActorMarker *otherMarker){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
ActorLocal_CC_3130 *local = (ActorLocal_CC_3130 *) &actor->local;
|
||||
|
||||
if(local->unk4 == 0){
|
||||
FUNC_8030E624(SFX_20_METAL_CLANK_1, 1.0f, 30000);
|
||||
}
|
||||
local->unk4 = 2;
|
||||
}
|
||||
|
||||
void chSawblade_update(Actor *this){
|
||||
ActorLocal_CC_3130 *local = (ActorLocal_CC_3130 *)&this->local;
|
||||
f32 tmp_f2;
|
||||
f32 sp34 = time_getDelta();
|
||||
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
this->roll = this->yaw;
|
||||
this->yaw = 0.0f;
|
||||
marker_setCollisionScripts(this->marker, func_80389520, NULL, func_8038954C);
|
||||
local->unk0 = &D_80389C30[(this->modelCacheIndex < 0x43) ? this->modelCacheIndex - 0x3D : this->modelCacheIndex - 0x28A];
|
||||
local->unk4 = 0;
|
||||
func_80256C60(this->position, 100);
|
||||
if(map_get() == MAP_21_CC_WITCH_SWITCH_ROOM){
|
||||
this->position_z += 64.0f;
|
||||
}
|
||||
}//L80389660
|
||||
tmp_f2 = this->roll;
|
||||
this->roll += local->unk0->unk0 * sp34;
|
||||
this->roll += (this->roll < 0.0f)? 360 : 0;
|
||||
this->roll -= (this->roll >= 360.0f)? 360 : 0;
|
||||
if( ( tmp_f2 < 90.0f && this->roll >= 90.0f )
|
||||
|| ( tmp_f2 < 270.0f && this->roll >= 270.0f )
|
||||
|| ( 90.0f < tmp_f2 && this->roll <= 90.0f )
|
||||
|| ( 270.0f < tmp_f2 && this->roll <= 270.0f )
|
||||
){//L80389790
|
||||
func_8030E878(SFX_2_CLAW_SWIPE, local->unk0->unk4, 30000, this->position, 500.0f, 1000.0f);
|
||||
}//L803897C8
|
||||
if(local->unk4 > 0)
|
||||
local->unk4--;
|
||||
}
|
Reference in New Issue
Block a user