* progrz

* 3 big boys

* play_movement_dust_effects

* clean
This commit is contained in:
Ethan Roseman 2022-10-12 06:13:08 +09:00 committed by GitHub
parent 2e8a4efa30
commit f394da14cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 1266 additions and 2740 deletions

View File

@ -673,6 +673,7 @@ enum SoundIDs {
SOUND_SEARCH_BUSH = 0x00000153, SOUND_SEARCH_BUSH = 0x00000153,
SOUND_158 = 0x00000158, SOUND_158 = 0x00000158,
SOUND_15E = 0x0000015E, SOUND_15E = 0x0000015E,
SOUND_160 = 0x00000160,
SOUND_161 = 0x00000161, SOUND_161 = 0x00000161,
SOUND_162 = 0x00000162, SOUND_162 = 0x00000162,
SOUND_ENTER_PIPE = 0x00000163, SOUND_ENTER_PIPE = 0x00000163,

View File

@ -117,10 +117,6 @@ extern SpriteShadingProfile* D_80151328;
extern Window gWindows[64]; extern Window gWindows[64];
extern struct EffectInstance* D_802A37F0;
extern s32 D_802A37F8;
extern s32 D_802A3818;
extern s32 D_802A3834;
extern s32 D_802A3838; extern s32 D_802A3838;
extern s32 gGameState; extern s32 gGameState;

View File

@ -766,12 +766,10 @@ void add_xz_vec3f_copy2(Vec3f* vector, f32 speed, f32 angleDeg) {
vector->z += -speed * cosAngleRad; vector->z += -speed * cosAngleRad;
} }
// matching after data migration
#ifdef NON_MATCHING
void play_movement_dust_effects(s32 var0, f32 xPos, f32 yPos, f32 zPos, f32 angleDeg) { void play_movement_dust_effects(s32 var0, f32 xPos, f32 yPos, f32 zPos, f32 angleDeg) {
f32 temp_f0; f32 theta;
f32 temp_f20; f32 sinTheta;
f32 temp_f20_2; f32 cosTheta;
if (var0 == 2) { if (var0 == 2) {
fx_landing_dust(0, xPos, yPos + 0.0f, zPos, D_802938A4); fx_landing_dust(0, xPos, yPos + 0.0f, zPos, D_802938A4);
@ -779,15 +777,19 @@ void play_movement_dust_effects(s32 var0, f32 xPos, f32 yPos, f32 zPos, f32 angl
D_802938A8 = 4; D_802938A8 = 4;
} else if (D_802938A8++ >= 4) { } else if (D_802938A8++ >= 4) {
D_802938A8 = 0; D_802938A8 = 0;
temp_f20 = DEG_TO_RAD(clamp_angle(-angleDeg)); theta = DEG_TO_RAD(clamp_angle(-angleDeg));
temp_f20_2 = sin_rad(temp_f20); sinTheta = sin_rad(theta);
temp_f0 = cos_rad(temp_f20); cosTheta = cos_rad(theta);
fx_walking_dust(0, xPos + (temp_f20_2 * 24.0f * 0.2f), yPos + 1.5f, zPos + (temp_f0 * 24.0f * 0.2f), temp_f20_2, temp_f0); fx_walking_dust(
0,
xPos + (sinTheta * 24.0f * 0.2f),
yPos + 1.5f,
zPos + (cosTheta * 24.0f * 0.2f),
sinTheta,
cosTheta
);
} }
} }
#else
INCLUDE_ASM(void, "190B20", play_movement_dust_effects, s32 var0, f32 xPos, f32 yPos, f32 zPos, f32 angleDeg);
#endif
ActorPart* get_actor_part(Actor* actor, s32 partIndex) { ActorPart* get_actor_part(Actor* actor, s32 partIndex) {
ActorPart* part = &actor->partsTable[0]; ActorPart* part = &actor->partsTable[0];

View File

@ -1079,7 +1079,7 @@ ApiStatus func_80273444(Evt* script, s32 isInitialCall) {
script->functionTemp[0] = FALSE; script->functionTemp[0] = FALSE;
} }
if (!script->functionTemp[0]) { if (script->functionTemp[0] == 0) {
player->state.moveTime = evt_get_variable(script, *args++); player->state.moveTime = evt_get_variable(script, *args++);
player->state.moveArcAmplitude = evt_get_variable(script, *args++); player->state.moveArcAmplitude = evt_get_variable(script, *args++);
script->functionTemp[1] = evt_get_variable(script, *args++); script->functionTemp[1] = evt_get_variable(script, *args++);
@ -1142,7 +1142,7 @@ ApiStatus func_80273444(Evt* script, s32 isInitialCall) {
playerState->currentPos.y += playerVel; playerState->currentPos.y += playerVel;
playerState->velocity -= playerState->acceleration; playerState->velocity -= playerState->acceleration;
temp_f20_2 = playerState->speed; temp_f20_2 = playerState->speed;
add_xz_vec3f(&playerState->currentPos, temp_f20_2 + sin_rad(DEG_TO_RAD(playerState->unk_24), playerState->angle); add_xz_vec3f(&playerState->currentPos, temp_f20_2 + sin_rad(DEG_TO_RAD(playerState->unk_24)), playerState->angle);
playerState->unk_24 += playerState->unk_28; playerState->unk_24 += playerState->unk_28;
playerState->unk_24 = clamp_angle(playerState->unk_24); playerState->unk_24 = clamp_angle(playerState->unk_24);
player->currentPos.x = playerState->currentPos.x; player->currentPos.x = playerState->currentPos.x;
@ -1711,11 +1711,702 @@ ApiStatus func_802749F8(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE2; return ApiStatus_DONE2;
} }
INCLUDE_ASM(s32, "19FAF0", func_80274A18); ApiStatus func_80274A18(Evt* script, s32 isInitialCall) {
BattleStatus* battleStatus = &gBattleStatus;
Bytecode* args = script->ptrReadPos;
Actor* player = battleStatus->playerActor;
ActorState* playerState = &player->state;
f32 posX, posY, posZ;
f32 goalX, goalZ;
f32 temp;
f64 temp_f20_2;
f64 vel1, vel2;
f64 vel3, vel4;
f64 acc1, acc2;
f64 acc3, acc4;
INCLUDE_ASM(s32, "19FAF0", func_802752AC); if (isInitialCall) {
player->state.moveTime = evt_get_variable(script, *args++);
player->state.moveArcAmplitude = evt_get_variable(script, *args++);
script->functionTemp[1] = 0;
script->functionTemp[0] = 0;
if (player->state.moveArcAmplitude == 1) {
script->functionTemp[0] = 2;
}
}
INCLUDE_ASM(s32, "19FAF0", func_80275F00); if (script->functionTemp[0] == 0) {
playerState->currentPos.x = player->currentPos.x;
playerState->currentPos.y = player->currentPos.y;
playerState->currentPos.z = player->currentPos.z;
goalX = playerState->goalPos.x;
goalZ = playerState->goalPos.z;
posX = playerState->currentPos.x;
posY = playerState->currentPos.y;
posZ = playerState->currentPos.z;
playerState->angle = atan2(posX, posZ, goalX, goalZ);
playerState->distance = dist2D(posX, posZ, goalX, goalZ);
if (playerState->moveTime == 0) {
playerState->moveTime = playerState->distance / playerState->speed;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
} else {
playerState->speed = playerState->distance / playerState->moveTime;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
}
if (playerState->moveTime == 0) {
return ApiStatus_DONE2;
}
playerState->unk_30.x = (playerState->goalPos.x - playerState->currentPos.x) / playerState->moveTime;
playerState->unk_30.y = (playerState->goalPos.y - playerState->currentPos.y) / playerState->moveTime;
playerState->unk_30.z = (playerState->goalPos.z - playerState->currentPos.z) / playerState->moveTime;
playerState->acceleration = PI_S / playerState->moveTime;
playerState->velocity = 0.0f;
playerState->speed += temp / playerState->moveTime;
if (playerState->moveArcAmplitude < 3) {
temp = playerState->distance;
temp -= 20.0;
temp /= 6.0;
temp += 47.0;
playerState->bounceDivisor = temp;
playerState->unk_24 = 90.0f;
playerState->unk_28 = 360 / playerState->moveTime;
if (playerState->moveArcAmplitude == 2) {
playerState->bounceDivisor = temp * 1.12;
}
playerState->unk_18.x = 0.0f;
playerState->unk_18.y = 0.0f;
vel1 = playerState->velocity;
acc1 = playerState->acceleration;
playerState->velocity = vel1 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53 * acc1) + acc1);
} else {
temp = playerState->distance;
temp -= 20.0;
temp /= 6.0;
temp += 47.0;
playerState->bounceDivisor = temp;
playerState->unk_24 = 90.0f;
playerState->unk_28 = 360 / playerState->moveTime;
if (playerState->moveArcAmplitude == 4) {
playerState->bounceDivisor = temp * 1.25;
}
playerState->unk_18.x = 0.0f;
playerState->unk_18.y = 0.0f;
vel2 = playerState->velocity;
acc2 = playerState->acceleration;
playerState->velocity = vel2 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.8 * acc2) + acc2);
}
set_animation(0, 0, playerState->animJumpRise);
sfx_play_sound_at_position(SOUND_160, 0, player->currentPos.x, player->currentPos.y, player->currentPos.z);
script->functionTemp[0] = 1;
}
switch (script->functionTemp[0]) {
case 1:
if (playerState->velocity > PI_S / 2) {
set_animation(ACTOR_PLAYER, 0, playerState->animJumpFall);
}
playerState->currentPos.x += playerState->unk_30.x;
playerState->currentPos.y += playerState->unk_30.y;
playerState->currentPos.z += playerState->unk_30.z;
playerState->unk_18.x = player->currentPos.y;
player->currentPos.x = playerState->currentPos.x;
player->currentPos.y = playerState->currentPos.y + (playerState->bounceDivisor * sin_rad(playerState->velocity));
player->currentPos.z = playerState->currentPos.z;
if (playerState->goalPos.y > player->currentPos.y && playerState->moveTime < 3) {
player->currentPos.y = playerState->goalPos.y;
}
playerState->unk_18.y = player->currentPos.y;
if (playerState->moveArcAmplitude < 3) {
vel3 = playerState->velocity;
acc3 = playerState->acceleration;
playerState->velocity = vel3 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53 * acc3) + acc3);
} else {
vel4 = playerState->velocity;
acc4 = playerState->acceleration;
playerState->velocity = vel4 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.8 * acc4) + acc4);
}
playerState->unk_24 += playerState->unk_28;
playerState->unk_24 = clamp_angle(playerState->unk_24);
playerState->moveTime--;
if (playerState->moveTime == 0) {
player->currentPos.y = playerState->goalPos.y;
playerState->acceleration = 1.8f;
playerState->velocity = -(playerState->unk_18.x - playerState->unk_18.y);
set_animation(ACTOR_PLAYER, 0, playerState->animJumpLand);
return ApiStatus_DONE1;
}
break;
case 2:
if (battleStatus->unk_83 == 0) {
return ApiStatus_DONE2;
}
playerState->moveTime = 1;
playerState->acceleration = 1.8f;
playerState->unk_24 = 90.0f;
playerState->velocity = -(playerState->unk_18.x - playerState->unk_18.y);
playerState->bounceDivisor = fabsf(playerState->unk_18.x - playerState->unk_18.y) / 16.5;
playerState->unk_28 = 360 / playerState->moveTime;
playerState->currentPos.x = player->currentPos.x;
playerState->currentPos.y = player->currentPos.y;
playerState->currentPos.z = player->currentPos.z;
script->functionTemp[0] = 3;
// fallthrough
case 3:
temp_f20_2 = playerState->currentPos.x;
playerState->currentPos.x = temp_f20_2 + ((playerState->bounceDivisor * sin_rad(DEG_TO_RAD(playerState->unk_24))) / 33.0);
playerState->currentPos.y -= (playerState->bounceDivisor * sin_rad(DEG_TO_RAD(playerState->unk_24)));
playerState->unk_24 += playerState->unk_28;
playerState->unk_24 = clamp_angle(playerState->unk_24);
player->currentPos.x = playerState->currentPos.x;
player->currentPos.y = playerState->currentPos.y;
player->currentPos.z = playerState->currentPos.z;
if (gBattleStatus.flags1 & BS_FLAGS1_2000) {
return ApiStatus_DONE2;
}
playerState->moveTime--;
if (playerState->moveTime == 0) {
return ApiStatus_DONE1;
}
break;
}
return ApiStatus_BLOCK;
}
ApiStatus func_802752AC(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
Actor* player = gBattleStatus.playerActor;
ActorState* playerState = &player->state;
f32 posX, posY, posZ;
f32 goalX, goalZ;
f32 temp;
f64 temp_f20;
f64 vel1, vel2;
f64 vel3, vel4;
f64 vel5, vel6;
f64 vel7, vel8;
f64 acc1, acc2;
f64 acc3, acc4;
f64 acc5, acc6;
f64 acc7, acc8;
if (isInitialCall) {
player->state.moveTime = evt_get_variable(script, *args++);
player->state.moveArcAmplitude = evt_get_variable(script, *args++);
script->functionTemp[0] = 0;
if (player->state.moveArcAmplitude == 1 ||
player->state.moveArcAmplitude == 5 ||
player->state.moveArcAmplitude == 6)
{
script->functionTemp[0] = 10;
}
if (playerState->moveArcAmplitude == 2) {
script->functionTemp[0] = 20;
}
}
switch (script->functionTemp[0]) {
case 0:
playerState->currentPos.x = player->currentPos.x;
playerState->currentPos.y = player->currentPos.y;
playerState->currentPos.z = player->currentPos.z;
goalX = playerState->goalPos.x;
goalZ = playerState->goalPos.z;
posX = playerState->currentPos.x;
posY = playerState->currentPos.y;
posZ = playerState->currentPos.z;
playerState->angle = atan2(posX, posZ, goalX, goalZ);
playerState->distance = dist2D(posX, posZ, goalX, goalZ);
if (playerState->moveTime == 0) {
playerState->moveTime = playerState->distance / playerState->speed;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
} else {
playerState->speed = playerState->distance / playerState->moveTime;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
}
if (playerState->moveTime == 0) {
return ApiStatus_DONE2;
}
playerState->unk_30.x = (playerState->goalPos.x - playerState->currentPos.x) / playerState->moveTime;
playerState->unk_30.y = (playerState->goalPos.y - playerState->currentPos.y) / playerState->moveTime;
playerState->unk_30.z = (playerState->goalPos.z - playerState->currentPos.z) / playerState->moveTime;
playerState->acceleration = (PI_S / 2) / playerState->moveTime;
playerState->velocity = 0.0f;
playerState->speed += temp / playerState->moveTime;
set_animation(ACTOR_PLAYER, 0, playerState->animJumpRise);
sfx_play_sound_at_position(SOUND_160, 0, player->currentPos.x, player->currentPos.y, player->currentPos.z);
playerState->unk_24 = 90.0f;
playerState->bounceDivisor = 45.0f;
playerState->unk_28 = 360 / playerState->moveTime;
if (playerState->moveArcAmplitude == 4) {
playerState->bounceDivisor = 56.25f;
}
playerState->unk_18.x = 0.0f;
playerState->unk_18.y = 0.0f;
if (playerState->moveArcAmplitude == 0) {
vel1 = playerState->velocity;
acc1 = playerState->acceleration;
playerState->velocity = (vel1 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53 * acc1) + acc1));
} else {
vel2 = playerState->velocity;
acc2 = playerState->acceleration;
playerState->velocity = (vel2 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.01 * acc2) + acc2));
}
script->functionTemp[0] = 1;
break;
case 10:
playerState->currentPos.x = player->currentPos.x;
playerState->currentPos.y = player->currentPos.y;
playerState->currentPos.z = player->currentPos.z;
goalX = playerState->goalPos.x;
goalZ = playerState->goalPos.z;
posX = playerState->currentPos.x;
posY = playerState->currentPos.y;
posZ = playerState->currentPos.z;
playerState->angle = atan2(posX, posZ, goalX, goalZ);
playerState->distance = dist2D(posX, posZ, goalX, goalZ);
if (playerState->moveTime == 0) {
playerState->moveTime = playerState->distance / playerState->speed;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
} else {
playerState->speed = playerState->distance / playerState->moveTime;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
}
if (playerState->moveTime == 0) {
return ApiStatus_DONE2;
}
playerState->unk_30.x = (playerState->goalPos.x - playerState->currentPos.x) / playerState->moveTime;
playerState->unk_30.y = (playerState->goalPos.y - playerState->currentPos.y) / playerState->moveTime;
playerState->unk_30.z = (playerState->goalPos.z - playerState->currentPos.z) / playerState->moveTime;
playerState->velocity = (PI_S / 2);
playerState->acceleration = (PI_S / 4) / (playerState->moveTime + 1);
playerState->speed += temp / playerState->moveTime;
set_animation(ACTOR_PLAYER, 0, playerState->animJumpLand);
playerState->unk_24 = 90.0f;
playerState->bounceDivisor = 45.0f;
playerState->unk_28 = (360 / playerState->moveTime);
if (playerState->moveArcAmplitude == 5) {
playerState->bounceDivisor = 56.25f;
}
playerState->unk_18.x = 0.0f;
playerState->unk_18.y = 0.0f;
if (playerState->moveArcAmplitude == 1) {
vel3 = playerState->velocity;
acc3 = playerState->acceleration;
playerState->velocity = (vel3 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53 * acc3) + acc3));
} else {
vel4 = playerState->velocity;
acc4 = playerState->acceleration;
playerState->velocity = (vel4 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.01 * acc4) + acc4));
}
playerState->currentPos.y = player->currentPos.y - playerState->bounceDivisor;
script->functionTemp[0] = 11;
break;
case 20:
playerState->moveTime = 1;
playerState->unk_24 = 90.0f;
playerState->bounceDivisor = (fabsf(playerState->unk_18.x - playerState->unk_18.y) / 16.5);
playerState->unk_28 = (360 / playerState->moveTime);
playerState->currentPos.x = player->currentPos.x;
playerState->currentPos.y = player->currentPos.y;
playerState->currentPos.z = player->currentPos.z;
script->functionTemp[0] = 21;
break;
}
switch (script->functionTemp[0]) {
case 1:
if (playerState->moveArcAmplitude == 0) {
vel5 = playerState->velocity;
acc5 = playerState->acceleration;
playerState->velocity = (vel5 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53 * acc5) + acc5));
} else {
vel6 = playerState->velocity;
acc6 = playerState->acceleration;
playerState->velocity = (vel6 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.01 * acc6) + acc6));
}
playerState->currentPos.x += playerState->unk_30.x;
playerState->currentPos.y += playerState->unk_30.y;
playerState->currentPos.z += playerState->unk_30.z;
playerState->unk_18.x = player->currentPos.y;
player->currentPos.x = playerState->currentPos.x;
player->currentPos.y = playerState->currentPos.y + (playerState->bounceDivisor * sin_rad(sin_rad(sin_rad(playerState->velocity) * (PI_S / 2)) * (PI_S / 2)));
player->currentPos.z = playerState->currentPos.z;
playerState->unk_18.y = player->currentPos.y;
playerState->unk_24 += playerState->unk_28;
playerState->unk_24 = clamp_angle(playerState->unk_24);
playerState->moveTime--;
if (playerState->moveTime == 0) {
sfx_play_sound_at_position(SOUND_160, 0, player->currentPos.x, player->currentPos.y, player->currentPos.z);
set_animation(ACTOR_PLAYER, 0, playerState->animJumpFall);
player->rotationPivotOffset.y = 14;
player->rotation.z -= 66.0f;
playerState->moveTime = 7;
script->functionTemp[0] = 2;
}
break;
case 2:
player->rotationPivotOffset.y = 14;
player->rotation.z -= 66.0f;
playerState->moveTime--;
if (playerState->moveTime == 0) {
player->rotation.z = 0.0f;
player->rotationPivotOffset.y = 0;
set_animation(ACTOR_PLAYER, 0, playerState->animJumpLand);
return ApiStatus_DONE1;
}
break;
case 11:
playerState->currentPos.x += playerState->unk_30.x;
playerState->currentPos.y += playerState->unk_30.y;
playerState->currentPos.z += playerState->unk_30.z;
playerState->unk_18.x = player->currentPos.y;
player->currentPos.x = playerState->currentPos.x;
player->currentPos.y = playerState->currentPos.y + (playerState->bounceDivisor * sin_rad(playerState->velocity));
player->currentPos.z = playerState->currentPos.z;
if (playerState->goalPos.y > player->currentPos.y) {
player->currentPos.y = playerState->goalPos.y;
}
playerState->unk_18.y = player->currentPos.y;
if (playerState->moveArcAmplitude == 1) {
vel7 = playerState->velocity;
acc7 = playerState->acceleration;
playerState->velocity = (vel7 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53 * acc7) + acc7));
} else {
vel8 = playerState->velocity;
acc8 = playerState->acceleration;
playerState->velocity = (vel8 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.01 * acc8) + acc8));
}
playerState->unk_24 += playerState->unk_28;
playerState->unk_24 = clamp_angle(playerState->unk_24);
playerState->moveTime--;
if (playerState->moveTime == 0) {
player->currentPos.y = playerState->goalPos.y;
set_animation(ACTOR_PLAYER, 0, 0x1000C);
return ApiStatus_DONE1;
}
break;
case 21:
temp_f20 = playerState->currentPos.x;
temp_f20 += (playerState->bounceDivisor * sin_rad(DEG_TO_RAD(playerState->unk_24))) / 33.0;
playerState->currentPos.x = temp_f20;
playerState->currentPos.y -= playerState->bounceDivisor * sin_rad(DEG_TO_RAD(playerState->unk_24));
playerState->unk_24 += playerState->unk_28;
playerState->unk_24 = clamp_angle(playerState->unk_24);
player->currentPos.x = playerState->currentPos.x;
player->currentPos.y = playerState->currentPos.y;
player->currentPos.z = playerState->currentPos.z;
if (gBattleStatus.flags1 & BS_FLAGS1_2000) {
return ApiStatus_DONE2;
}
playerState->moveTime--;
if (playerState->moveTime == 0) {
return ApiStatus_DONE1;
}
break;
}
return ApiStatus_BLOCK;
}
ApiStatus func_80275F00(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
Actor* player = gBattleStatus.playerActor;
ActorState* playerState = &player->state;
f32 posX, posY, posZ;
f32 goalX, goalZ;
f32 speed;
f32 temp;
f64 temp_f20;
f64 temp_f20_2;
f64 temp_f20_4;
f64 temp_f20_5;
f64 temp_f20_6;
f64 temp_f20_7;
f64 temp_f22;
f64 temp_f22_2;
f64 temp_f22_3;
f64 temp_f22_4;
f64 temp_f22_5;
f64 temp_f22_6;
f64 temp_f22_7;
if (isInitialCall) {
player->state.moveTime = evt_get_variable(script, *args++);
player->state.moveArcAmplitude = evt_get_variable(script, *args++);
script->functionTemp[1] = 0;
script->functionTemp[0] = 0;
if (player->state.moveArcAmplitude == 1) {
script->functionTemp[0] = 11;
}
if (player->state.moveArcAmplitude == 3) {
script->functionTemp[0] = 20;
}
if (player->state.moveArcAmplitude == 2 || player->state.moveArcAmplitude == 4) {
script->functionTemp[0] = 30;
}
}
switch (script->functionTemp[0]) {
case 0:
playerState->currentPos.x = player->currentPos.x;
playerState->currentPos.y = player->currentPos.y;
playerState->currentPos.z = player->currentPos.z;
goalX = playerState->goalPos.x;
goalZ = playerState->goalPos.z;
posX = playerState->currentPos.x;
posY = playerState->currentPos.y;
posZ = playerState->currentPos.z;
playerState->angle = atan2(posX, posZ, goalX, goalZ);
playerState->distance = dist2D(posX, posZ, goalX, goalZ);
if (playerState->moveTime == 0) {
playerState->moveTime = playerState->distance / playerState->speed;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
} else {
playerState->speed = playerState->distance / playerState->moveTime;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
}
playerState->acceleration = PI_S / playerState->moveTime;
playerState->velocity = 0.0f;
playerState->unk_30.x = (playerState->goalPos.x - playerState->currentPos.x) / playerState->moveTime;
playerState->unk_30.y = (playerState->goalPos.y - playerState->currentPos.y) / playerState->moveTime;
playerState->unk_30.z = (playerState->goalPos.z - playerState->currentPos.z) / playerState->moveTime;
playerState->speed += temp / playerState->moveTime;
set_animation(ACTOR_PLAYER, 0, playerState->animJumpFall);
sfx_play_sound_at_position(SOUND_160, 0, player->currentPos.x, player->currentPos.y, player->currentPos.z);
sfx_play_sound_at_position(SOUND_TORNADO_JUMP, 0, player->currentPos.x, player->currentPos.y, player->currentPos.z);
playerState->unk_18.x = 0.0f;
playerState->unk_18.y = 0.0f;
playerState->unk_24 = 90.0f;
temp = playerState->distance;
temp -= 20.0;
temp /= 6.0;
temp += 47.0;
playerState->bounceDivisor = temp;
temp_f20 = playerState->velocity;
temp_f22 = playerState->acceleration;
playerState->unk_28 = 360 / playerState->moveTime;
playerState->velocity = temp_f20 + (((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53) * temp_f22) + temp_f22);
script->functionTemp[0] = 1;
break;
case 10:
playerState->currentPos.x = player->currentPos.x;
playerState->currentPos.y = player->currentPos.y;
playerState->currentPos.z = player->currentPos.z;
goalX = playerState->goalPos.x;
goalZ = playerState->goalPos.z;
posX = playerState->currentPos.x;
posY = playerState->currentPos.y;
posZ = playerState->currentPos.z;
playerState->angle = atan2(posX, posZ, goalX, goalZ);
playerState->distance = dist2D(posX, posZ, goalX, goalZ);
if (playerState->moveTime == 0) {
playerState->moveTime = playerState->distance / playerState->speed;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
} else {
speed = playerState->distance / playerState->moveTime;
playerState->speed = speed;
temp = playerState->distance - (playerState->moveTime * speed);
}
playerState->acceleration = PI_S / playerState->moveTime;
playerState->velocity = 0.0f;
playerState->unk_30.x = (playerState->goalPos.x - playerState->currentPos.x) / playerState->moveTime;
playerState->unk_30.y = (playerState->goalPos.y - playerState->currentPos.y) / playerState->moveTime;
playerState->unk_30.z = (playerState->goalPos.z - playerState->currentPos.z) / playerState->moveTime;
playerState->speed += temp / playerState->moveTime;
set_animation(ACTOR_PLAYER, 0, playerState->animJumpRise);
sfx_play_sound_at_position(SOUND_160, 0, player->currentPos.x, player->currentPos.y, player->currentPos.z);
sfx_play_sound_at_position(SOUND_TORNADO_JUMP, 0, player->currentPos.x, player->currentPos.y, player->currentPos.z);
playerState->unk_18.x = 0.0f;
playerState->unk_18.y = 0.0f;
playerState->unk_24 = 90.0f;
temp_f20_2 = playerState->velocity;
temp_f22_2 = playerState->acceleration;
temp = playerState->distance;
temp -= 20.0;
temp /= 6.0;
temp += 47.0;
playerState->bounceDivisor = temp;
playerState->unk_28 = 360 / playerState->moveTime;
playerState->velocity = temp_f20_2 + (((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53) * temp_f22_2) + temp_f22_2);
script->functionTemp[0] = 11;
break;
case 20:
playerState->moveTime = 1;
set_animation(ACTOR_PLAYER, 1, 0x1000C);
player->rotation.y = 0.0f;
playerState->unk_24 = 90.0f;
playerState->bounceDivisor = fabsf(playerState->unk_18.x - playerState->unk_18.y) / 16.5;
playerState->unk_28 = 360 / playerState->moveTime;
playerState->currentPos.x = player->currentPos.x;
playerState->currentPos.y = player->currentPos.y;
playerState->currentPos.z = player->currentPos.z;
script->functionTemp[0] = 21;
break;
case 30:
playerState->currentPos.x = player->currentPos.x;
playerState->currentPos.y = player->currentPos.y;
playerState->currentPos.z = player->currentPos.z;
goalX = playerState->goalPos.x;
goalZ = playerState->goalPos.z;
posX = playerState->currentPos.x;
posY = playerState->currentPos.y;
posZ = playerState->currentPos.z;
playerState->angle = atan2(posX, posZ, goalX, goalZ);
playerState->distance = dist2D(posX, posZ, goalX, goalZ);
if (playerState->moveTime == 0) {
playerState->moveTime = playerState->distance / playerState->speed;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
} else {
playerState->speed = playerState->distance / playerState->moveTime;
temp = playerState->distance - (playerState->moveTime * playerState->speed);
}
playerState->acceleration = PI_S / (playerState->moveTime + 1);
playerState->velocity = 0.0f;
playerState->unk_30.x = (playerState->goalPos.x - playerState->currentPos.x) / playerState->moveTime;
playerState->unk_30.y = (playerState->goalPos.y - playerState->currentPos.y) / playerState->moveTime;
playerState->unk_30.z = (playerState->goalPos.z - playerState->currentPos.z) / playerState->moveTime;
playerState->speed += temp / playerState->moveTime;
set_animation(ACTOR_PLAYER, 0, playerState->animJumpRise);
sfx_play_sound_at_position(SOUND_160, 0, player->currentPos.x, player->currentPos.y, player->currentPos.z);
playerState->unk_24 = 90.0f;
playerState->bounceDivisor = 45.0f;
playerState->unk_28 = 360 / playerState->moveTime;
if (playerState->moveArcAmplitude == 4) {
playerState->bounceDivisor = 56.25f;
}
playerState->unk_18.x = 0.0f;
playerState->unk_18.y = 0.0f;
temp_f22_3 = playerState->acceleration;
temp_f22_7 = playerState->velocity;
temp_f22_7 = temp_f22_7 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53 * temp_f22_3) + temp_f22_3);
playerState->velocity = temp_f22_7;
script->functionTemp[0] = 31;
break;
}
switch (script->functionTemp[0]) {
case 1:
temp_f22_4 = playerState->velocity;
temp_f20_4 = playerState->acceleration;
playerState->velocity = temp_f22_4 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53 * temp_f20_4) + temp_f20_4);
playerState->currentPos.x += playerState->unk_30.x;
playerState->currentPos.y += playerState->unk_30.y;
playerState->currentPos.z += playerState->unk_30.z;
playerState->unk_18.x = player->currentPos.y;
player->currentPos.x = playerState->currentPos.x;
player->currentPos.y = playerState->currentPos.y + (playerState->bounceDivisor * sin_rad(playerState->velocity));
player->currentPos.z = playerState->currentPos.z;
playerState->unk_18.y = player->currentPos.y;
playerState->unk_24 += playerState->unk_28;
playerState->unk_24 = clamp_angle(playerState->unk_24);
player->rotation.y += 133.0f;
player->rotation.y = clamp_angle(player->rotation.y);
if (gBattleStatus.flags1 & BS_FLAGS1_2000) {
return ApiStatus_DONE2;
}
playerState->moveTime--;
if (playerState->moveTime == 4) {
return ApiStatus_DONE1;
}
break;
case 11:
temp_f22_6 = playerState->velocity;
temp_f20_7 = playerState->acceleration;
playerState->velocity = temp_f22_6 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53 * temp_f20_7) + temp_f20_7);
playerState->currentPos.x += playerState->unk_30.x;
playerState->currentPos.y += playerState->unk_30.y;
playerState->currentPos.z += playerState->unk_30.z;
playerState->unk_18.x = player->currentPos.y;
player->currentPos.x = playerState->currentPos.x;
player->currentPos.y = playerState->currentPos.y + (playerState->bounceDivisor * sin_rad(playerState->velocity));
player->currentPos.z = playerState->currentPos.z;
if (playerState->goalPos.y > player->currentPos.y && playerState->moveTime < 3) {
player->currentPos.y = playerState->goalPos.y;
}
playerState->unk_18.y = player->currentPos.y;
playerState->unk_24 += playerState->unk_28;
playerState->unk_24 = clamp_angle(playerState->unk_24);
set_animation(ACTOR_PLAYER, 0, playerState->animJumpFall);
player->rotation.y += 133.0f;
player->rotation.y = clamp_angle(player->rotation.y);
playerState->moveTime--;
if (playerState->moveTime == 0) {
playerState->acceleration = 1.8f;
playerState->velocity = -(playerState->unk_18.x - playerState->unk_18.y);
player->currentPos.y = playerState->goalPos.y;
player->rotation.y = 0.0f;
set_animation(ACTOR_PLAYER, 0, playerState->animJumpLand);
play_movement_dust_effects(2, player->currentPos.x, player->currentPos.y, player->currentPos.z, player->yaw);
return ApiStatus_DONE1;
}
break;
case 21:
temp_f20_5 = playerState->currentPos.x;
temp_f20_5 += (playerState->bounceDivisor * sin_rad(DEG_TO_RAD(playerState->unk_24))) / 33.0;
playerState->currentPos.x = temp_f20_5;
playerState->currentPos.y -= playerState->bounceDivisor * sin_rad(DEG_TO_RAD(playerState->unk_24));
playerState->unk_24 += playerState->unk_28;
playerState->unk_24 = clamp_angle(playerState->unk_24);
player->currentPos.x = playerState->currentPos.x;
player->currentPos.y = playerState->currentPos.y;
player->currentPos.z = playerState->currentPos.z;
if (gBattleStatus.flags1 & BS_FLAGS1_2000) {
return ApiStatus_DONE2;
}
playerState->moveTime--;
if (playerState->moveTime == 0) {
return ApiStatus_DONE1;
}
break;
case 31:
temp_f22_5 = playerState->velocity;
temp_f20_6 = playerState->acceleration;
playerState->velocity = temp_f22_5 + ((sin_rad(DEG_TO_RAD(playerState->unk_24)) * 0.53 * temp_f20_6) + temp_f20_6);
playerState->currentPos.x += playerState->unk_30.x;
playerState->currentPos.y += playerState->unk_30.y;
playerState->currentPos.z += playerState->unk_30.z;
playerState->unk_18.x = player->currentPos.y;
player->currentPos.x = playerState->currentPos.x;
player->currentPos.y = playerState->currentPos.y + (playerState->bounceDivisor * sin_rad(playerState->velocity));
player->currentPos.z = playerState->currentPos.z;
if (playerState->goalPos.y > player->currentPos.y && playerState->moveTime < 3) {
player->currentPos.y = playerState->goalPos.y;
}
playerState->unk_18.y = player->currentPos.y;
playerState->unk_24 += playerState->unk_28;
playerState->unk_24 = clamp_angle(playerState->unk_24);
set_animation(ACTOR_PLAYER, 0, playerState->animJumpFall);
player->rotation.y += 133.0f;
player->rotation.y = clamp_angle(player->rotation.y);
playerState->moveTime--;
if (playerState->moveTime == 0) {
player->currentPos.y = playerState->goalPos.y;
player->rotation.y = 0.0f;
set_animation(ACTOR_PLAYER, 0, playerState->animJumpLand);
playerState->acceleration = 1.8f;
playerState->velocity = -(playerState->unk_18.x - playerState->unk_18.y);
return ApiStatus_DONE1;
}
break;
}
return ApiStatus_BLOCK;
}
ApiStatus DidActionSucceed(Evt* script, s32 isInitialCall) { ApiStatus DidActionSucceed(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;

View File

@ -1,33 +1,14 @@
#include "common.h" #include "common.h"
#include "script_api/battle.h" #include "script_api/battle.h"
#include "effects.h"
#define NAMESPACE battle_star_star_beam #define NAMESPACE battle_star_star_beam
#include "common/StarPower.inc.c" #include "common/StarPower.inc.c"
ApiStatus func_802A1518_7974D8(Evt* script, s32 isInitialCall); ApiStatus func_802A1518_7974D8(Evt* script, s32 isInitialCall);
INCLUDE_ASM(s32, "battle/star/star_beam/796FC0", func_802A1518_7974D8); ApiStatus func_802A2468_798428(Evt* script, s32 isInitialCall);
ApiStatus func_802A247C_79843C(Evt* script, s32 isInitialCall);
ApiStatus func_802A2468_798428(Evt* script, s32 isInitialCall) {
script->varTable[0] = D_802A3838;
return ApiStatus_DONE2;
}
ApiStatus func_802A247C_79843C(Evt* script, s32 isInitialCall) {
if (isInitialCall) {
script->functionTemp[0] = 230;
}
set_background_color_blend(0, 0, 0, script->functionTemp[0]);
script->functionTemp[0] -= 5;
if (script->functionTemp[0] <= 200) {
set_background_color_blend(0, 0, 0, 200);
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
EvtScript N(802A24F0) = { EvtScript N(802A24F0) = {
EVT_CALL(GetOwnerID, LVarA) EVT_CALL(GetOwnerID, LVarA)
@ -283,19 +264,18 @@ EvtScript N(802A33A8) = {
EVT_END EVT_END
}; };
// TODO: type this data used by func_802A1518_7974D8 s32 D_802A3514_7994D4[] = { 35, 0, 5, 10, 15, 20, 25, 30 };
s32 D_802A3514_7994D4[] = { s32 D_802A3534_7994F4[] = { 35, 0, 5, 10, 15, 20, 25, 30 };
0x00000023, 0x00000000, 0x00000005, 0x0000000A, 0x0000000F, 0x00000014, 0x00000019, 0x0000001E,
};
s32 D_802A3534_7994F4[] = { Vec3f D_802A3554_799514[] = {
0x00000023, 0x00000000, 0x00000005, 0x0000000A, 0x0000000F, 0x00000014, 0x00000019, 0x0000001E, { 89.0f, 180.0f, 0.0f },
}; { -36.0f, 180.0f, 0.0f },
{ 204.0f, 180.0f, 0.0f },
s32 D_802A3554_799514[] = { { 30.0f, 97.0f, 477.0f },
0x42B20000, 0x43340000, 0x00000000, 0xC2100000, 0x43340000, 0x00000000, 0x434C0000, 0x43340000, { 230.0f, 81.0f, 0.0f },
0x00000000, 0x41F00000, 0x42C20000, 0x43EE8000, 0x43660000, 0x42A20000, 0x00000000, 0x43010000, { 129.0f, 180.0f, 0.0f },
0x43340000, 0x00000000, 0xC2700000, 0x43340000, 0x00000000, 0xC36A0000, 0x421C0000, 0x00000000, { -60.0f, 180.0f, 0.0f },
{ -234.0f, 39.0f, 0.0f },
}; };
EvtScript N(usePower) = { EvtScript N(usePower) = {
@ -337,3 +317,492 @@ EvtScript N(usePower) = {
EVT_RETURN EVT_RETURN
EVT_END EVT_END
}; };
BSS EffectInstance* D_802A37F0;
BSS char D_802A37F4[4];
BSS s32 D_802A37F8[8];
BSS s32 D_802A3818[8];
BSS s32 D_802A3834[8];
// flots
#ifdef NON_MATCHING
ApiStatus func_802A1518_7974D8(Evt* script, s32 isInitialCall) {
PeachStarBeamFXData* sp28;
PeachStarBeamInner* part;
Bytecode* args = script->ptrReadPos;
Actor* player = gBattleStatus.playerActor;
ActorState* playerState = &player->state;
s32 i;
f32 playerX, playerY, playerZ;
f32 playerGoalX, playerGoalY, playerGoalZ;
f32 goalX, goalY, goalZ;
f32 tx, ty, tz;
s32 cond;
Actor* target;
Evt* script;
f32 dist;
f32 dist2;
f32 temp_f20;
f32 temp_f22;
f32 temp_f30;
s32 var_a0;
if (isInitialCall) {
D_802A3838 = 0;
script->functionTemp[2] = evt_get_variable(script, *args++);
script->functionTemp[0] = 0;
}
if (player->targetListLength == 1) {
target = get_actor(player->targetActorID);
if (target == NULL) {
return ApiStatus_DONE2;
}
get_actor_part(target, player->targetPartIndex);
goalX = target->currentPos.x + target->headOffset.x;
if (target->flags & 0x800) {
goalY = (target->currentPos.y + target->headOffset.y) - target->size.y;
} else if (!(target->flags & 0x8000)) {
goalY = target->size.y + (target->currentPos.y + target->headOffset.y);
} else {
goalY = target->currentPos.y + target->headOffset.y + (target->size.y * 2);
}
goalZ = target->currentPos.z + target->headOffset.z;
} else {
goalX = 64.0f;
goalY = 80.0f;
goalZ = 0.0f;
}
switch (script->functionTemp[0]) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
sp28 = D_802A37F0->data.peachStarBeam;
for (i = 0; i < ARRAY_COUNT(sp28->parts); i++) {
if (script->functionTemp[2] != 0 || i != 0) {
part = &sp28->parts[i];
if (D_802A37F8[i] != 0) {
D_802A37F8[i]--;
} else {
D_802A37F8[i] = 20;
if (D_802A3514_7994D4[i] <= 0) {
fx_misc_particles(4, part->unk_10.x, part->unk_10.y, part->unk_10.z, 20.0f, 20.0f, 1.0f, 10, 20);
} else {
fx_misc_particles(4, part->unk_04.x, part->unk_04.y, part->unk_04.z, 20.0f, 20.0f, 1.0f, 10, 20);
}
}
}
}
break;
case 10:
sp28 = D_802A37F0->data.peachStarBeam;
for (i = 0; i < ARRAY_COUNT(sp28->parts); i++) {
if (script->functionTemp[2] != 0 || i != 0) {
part = &sp28->parts[i];
if (D_802A37F8[i] != 0) {
D_802A37F8[i]--;
} else {
D_802A37F8[i] = 20;
if (D_802A3534_7994F4[i] <= 0) {
fx_misc_particles(4, part->unk_10.x, part->unk_10.y, part->unk_10.z, 20.0f, 20.0f, 1.0f, 10, 20);
} else {
fx_misc_particles(4, part->unk_04.x, part->unk_04.y, part->unk_04.z, 20.0f, 20.0f, 1.0f, 10, 20);
}
}
}
}
break;
}
switch (script->functionTemp[0]) {
case 0:
temp_f20 = player->currentPos.x;
temp_f30 = player->currentPos.z;
playerState->currentPos.x = temp_f20;
temp_f22 = player->currentPos.y + player->size.y + 30.0f;
playerState->currentPos.z = temp_f30;
playerState->goalPos.x = temp_f20;
playerState->goalPos.z = temp_f30;
playerState->goalPos.y = temp_f22;
playerState->currentPos.y = playerState->goalPos.y + 150.0f;
if (script->functionTemp[2] == 0) {
D_802A37F0 = fx_peach_star_beam(0, temp_f20, temp_f22, temp_f30, 1.0f, 0);
} else {
D_802A37F0 = fx_peach_star_beam(1, temp_f20, temp_f22, temp_f30, 1.0f, 0);
}
playerState->distance = 48.0f;
D_802A37F0->data.peachStarBeam->unk_3C = 0;
D_802A37F0->data.peachStarBeam->unk_48 = playerState->distance;
D_802A37F0->data.peachStarBeam->alpha = 0;
D_802A37F0->data.peachStarBeam->unk_58 = 30.0f;
D_802A37F0->data.peachStarBeam->unk_40 = 5.0f;
for (i = 0; i < ARRAY_COUNT(D_802A37F8); i++) {
D_802A37F8[i] = rand_int(20);
}
script->functionTemp[1] = 40;
if (script->functionTemp[2] == 0) {
sfx_play_sound(0x80000068);
} else {
sfx_play_sound(0x80000069);
}
script->functionTemp[0] = 1;
break;
case 1:
playerState->currentPos.y += (playerState->goalPos.y - playerState->currentPos.y) / 10.0f;
D_802A37F0->data.peachStarBeam->unk_4C = playerState->currentPos.x;
D_802A37F0->data.peachStarBeam->unk_50 = playerState->currentPos.y;
D_802A37F0->data.peachStarBeam->unk_54 = playerState->currentPos.z;
D_802A37F0->data.peachStarBeam->unk_3C = 0;
D_802A37F0->data.peachStarBeam->unk_48 = playerState->distance;
D_802A37F0->data.peachStarBeam->alpha = 0;
if (script->functionTemp[1] == 0) {
script->functionTemp[1] = 20;
script->functionTemp[0] = 2;
} else {
script->functionTemp[1]--;
}
break;
case 2:
if (script->functionTemp[1] == 0) {
btl_cam_use_preset(2);
btl_cam_move(10);
script->functionTemp[1] = 15;
script->functionTemp[0] = 3;
} else {
script->functionTemp[1]--;
}
break;
case 3:
playerState->distance += (24.0f - playerState->distance) * 0.125f;
D_802A37F0->data.peachStarBeam->unk_48 = playerState->distance;
if (script->functionTemp[1] == 0) {
playerState->goalPos.x = goalX;
playerState->goalPos.y = goalY;
playerState->goalPos.z = goalZ;
for (i = 0; i < ARRAY_COUNT(D_802A3834); i++) {
D_802A3834[i] = 30;
}
if (script->functionTemp[2] == 0) {
sfx_play_sound(0x648);
} else {
sfx_play_sound(0x649);
}
script->functionTemp[0] = 4;
} else {
script->functionTemp[1]--;
}
break;
case 4:
cond = FALSE;
playerState->distance += (48.0f - playerState->distance) * 0.25f;
D_802A37F0->data.peachStarBeam->unk_48 = playerState->distance;
for (i = 0; i < 2; i++) {
if (i != 0) {
if (D_802A3514_7994D4[i] < 0) {
playerState->currentPos.x += playerState->goalPos.x - playerState->currentPos.x;
playerState->currentPos.y += playerState->goalPos.y - playerState->currentPos.y;
playerState->currentPos.z += playerState->goalPos.z - playerState->currentPos.z;
} else {
cond = TRUE;
if (D_802A3514_7994D4[i] != 0) {
D_802A3514_7994D4[i]--;
} else {
playerX = playerState->currentPos.x;
playerY = playerState->currentPos.y;
playerZ = playerState->currentPos.z;
playerGoalX = playerState->goalPos.x;
playerGoalY = playerState->goalPos.y;
playerGoalZ = playerState->goalPos.z;
dist = dist2D(playerX, playerZ, playerGoalX, playerGoalZ);
playerState->currentPos.x += (playerGoalX - playerX) / D_802A3818[i];
playerState->currentPos.y += (playerGoalY - playerY) / D_802A3818[i];
playerState->currentPos.z += (playerGoalZ - playerZ) / D_802A3818[i];
if (D_802A3818[i] == 1) {
D_802A3514_7994D4[i] = -1;
playerState->currentPos.x = playerGoalX;
playerState->currentPos.y = playerGoalY;
playerState->currentPos.z = playerGoalZ;
} else {
playerState->currentPos.y += dist / 60.0f;
}
D_802A3818[i]--;
}
}
}
}
D_802A37F0->data.peachStarBeam->unk_4C = playerState->currentPos.x;
D_802A37F0->data.peachStarBeam->unk_50 = playerState->currentPos.y;
D_802A37F0->data.peachStarBeam->unk_54 = playerState->currentPos.z;
D_802A37F0->data.peachStarBeam->pos.x = playerState->currentPos.x;
D_802A37F0->data.peachStarBeam->pos.y = 0.0f;
D_802A37F0->data.peachStarBeam->pos.z = playerState->currentPos.z;
if (!cond) {
playerState->currentPos.x = playerState->goalPos.x;
playerState->currentPos.y = playerState->goalPos.y;
playerState->currentPos.z = playerState->goalPos.z;
D_802A37F0->data.peachStarBeam->unk_4C = playerState->currentPos.x;
D_802A37F0->data.peachStarBeam->unk_50 = playerState->currentPos.y;
D_802A37F0->data.peachStarBeam->unk_54 = playerState->currentPos.z;
D_802A37F0->data.peachStarBeam->pos.x = playerState->currentPos.x;
D_802A37F0->data.peachStarBeam->pos.y = 0.0f;
D_802A37F0->data.peachStarBeam->pos.z = playerState->currentPos.z;
sp28 = D_802A37F0->data.peachStarBeam;
for (i = 0; i < ARRAY_COUNT(sp28->parts); i++) {
if ((script->functionTemp[2] != 0) || (i != 0)) {
part = &sp28->parts[i];
D_802A3514_7994D4[i] = 1;
part->flags &= ~2;
}
}
btl_cam_use_preset(3);
btl_cam_move(30);
script->functionTemp[1] = 15;
script->functionTemp[0] = 5;
}
break;
case 5:
if (script->functionTemp[1] == 0) {
playerState->moveTime = 0;
D_802A37F0->data.peachStarBeam->unk_3C = 0;
D_802A37F0->data.peachStarBeam->alpha = 0;
if (script->functionTemp[2] != 0) {
D_802A37F0->data.peachStarBeam->primR = 240;
D_802A37F0->data.peachStarBeam->primG = 80;
D_802A37F0->data.peachStarBeam->primB = 200;
D_802A37F0->data.peachStarBeam->envR = 240;
D_802A37F0->data.peachStarBeam->envG = 240;
D_802A37F0->data.peachStarBeam->envB = 240;
}
script = start_script(battle_star_star_beam_802A33A8, 0xA, 0);
script->varTable[0] = playerState->currentPos.x;
script->varTable[1] = playerState->currentPos.y * 0.5f;
script->varTable[2] = playerState->currentPos.z;
script->varTable[10] = script->functionTemp[2];
sfx_play_sound(0x24A);
script->functionTemp[1] = 45;
script->functionTemp[0] = 6;
} else {
script->functionTemp[1]--;
}
break;
case 6:
playerState->moveTime += 30;
if (playerState->moveTime > 255) {
playerState->moveTime = 255;
}
D_802A37F0->data.peachStarBeam->unk_3C = playerState->moveTime;
D_802A37F0->data.peachStarBeam->alpha = playerState->moveTime;
if (script->functionTemp[1] == 0) {
D_802A3838 = 1;
if (script->functionTemp[2] == 0 && player->targetListLength == 1) {
if (get_actor_part(get_actor(player->targetActorID), player->targetPartIndex)->eventFlags & 0x80000) {
script->functionTemp[0] = 20;
} else {
script->functionTemp[1] = 15;
script->functionTemp[0] = 7;
}
} else {
script->functionTemp[1] = 15;
script->functionTemp[0] = 7;
}
} else {
script->functionTemp[1]--;
}
break;
case 7:
if (script->functionTemp[1] == 0) {
script->functionTemp[1] = 10;
script->functionTemp[0] = 8;
} else {
script->functionTemp[1]--;
}
break;
case 8:
playerState->moveTime -= 30;
if (playerState->moveTime < 0) {
playerState->moveTime = 0;
}
D_802A37F0->data.peachStarBeam->unk_3C = playerState->moveTime;
D_802A37F0->data.peachStarBeam->alpha = playerState->moveTime;
if (script->functionTemp[1] == 0) {
script->functionTemp[1] = 10;
script->functionTemp[0] = 9;
} else {
script->functionTemp[1]--;
}
break;
case 9:
if (script->functionTemp[1] != 0) {
script->functionTemp[1]--;
break;
}
playerState->goalPos.x = goalX;
playerState->goalPos.y = goalY + 170.0f;
playerState->goalPos.z = goalZ;
script->functionTemp[1] = 20;
script->functionTemp[0] = 10;
break;
case 10:
if (script->functionTemp[1] != 0) {
script->functionTemp[1]--;
if (script->functionTemp[1] == 0) {
if (script->functionTemp[2] == 0) {
func_80149A6C(0x248, 1);
sfx_play_sound(0x648);
} else {
func_80149A6C(0x249, 1);
sfx_play_sound(0x649);
}
}
}
cond = FALSE;
for (i = 0; i < ARRAY_COUNT(sp28->parts); i++) {
if (script->functionTemp[2] != 0 || i != 0) {
part = &sp28->parts[i];
if (D_802A3534_7994F4[i] >= 0) {
cond = TRUE;
if (D_802A3534_7994F4[i] != 0) {
D_802A3534_7994F4[i]--;
} else {
part->flags |= 2;
part->unk_10.y += (playerState->goalPos.y - part->unk_10.y) / 10.0f;
if (fabsf(part->unk_10.y - playerState->goalPos.y) < 1.0) {
D_802A3534_7994F4[i] = -1;
}
}
}
}
}
if (!cond) {
D_802A3838 = 2;
D_802A37F0->flags |= 0x10;
return ApiStatus_DONE2;
}
break;
case 20:
D_802A37F0->data.peachStarBeam->unk_3C = 0;
D_802A37F0->data.peachStarBeam->alpha = 0;
for (i = 0; i < ARRAY_COUNT(D_802A3834); i++) {
D_802A3834[i] = 15;
}
if (script->functionTemp[2] == 0) {
func_80149A6C(0x248, 0);
} else {
func_80149A6C(0x249, 0);
}
script->functionTemp[0] = 0x15;
break;
case 21:
cond = FALSE;
sp28 = D_802A37F0->data.peachStarBeam;
for (i = 0; i < ARRAY_COUNT(sp28->parts); i++) {
if ((script->functionTemp[2] != 0) || (i != 0)) {
part = &sp28->parts[i];
if (D_802A3514_7994D4[i] < 0) {
part->unk_10.x += D_802A3554_799514[i].x - part->unk_10.x;
part->unk_10.y += D_802A3554_799514[i].y - part->unk_10.y;
part->unk_10.z += D_802A3554_799514[i].z - part->unk_10.z;
} else {
cond = TRUE;
if (D_802A3514_7994D4[i] != 0) {
D_802A3514_7994D4[i]--;
} else {
part->flags |= 2;
tx = D_802A3554_799514[i].x;
ty = D_802A3554_799514[i].y;
tz = D_802A3554_799514[i].z;
dist2 = dist2D(part->unk_10.x, part->unk_10.z, tx, tz);
part->unk_10.x += (tx - part->unk_10.x) / D_802A3818[i];
part->unk_10.y += (ty - part->unk_10.y) / D_802A3818[i];
part->unk_10.z += (tz - part->unk_10.z) / D_802A3818[i];
if (D_802A3818[i] == 1) {
D_802A3514_7994D4[i] = -1;
part->unk_10.x = tx;
part->unk_10.y = ty;
part->unk_10.z = tz;
} else {
part->unk_10.y = (part->unk_10.y + (dist2 / 60.0f));
}
D_802A3818[i]--;
}
}
}
}
if (!cond) {
D_802A3838 = 2;
D_802A37F0->flags |= 0x10;
return ApiStatus_DONE2;
}
break;
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
break;
}
return ApiStatus_BLOCK;
}
#else
INCLUDE_ASM(s32, "battle/star/star_beam/796FC0", func_802A1518_7974D8);
#endif
ApiStatus func_802A2468_798428(Evt* script, s32 isInitialCall) {
script->varTable[0] = D_802A3838;
return ApiStatus_DONE2;
}
ApiStatus func_802A247C_79843C(Evt* script, s32 isInitialCall) {
if (isInitialCall) {
script->functionTemp[0] = 230;
}
set_background_color_blend(0, 0, 0, script->functionTemp[0]);
script->functionTemp[0] -= 5;
if (script->functionTemp[0] <= 200) {
set_background_color_blend(0, 0, 0, 200);
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}

View File

@ -6,7 +6,6 @@ from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from typing import Optional from typing import Optional
from Levenshtein import ratio
import os import os
import sys import sys
@ -121,7 +120,6 @@ def parse_map() -> OrderedDict[str, Symbol]:
return syms return syms
@dataclass @dataclass
class Match: class Match:
query_offset: int query_offset: int
@ -131,6 +129,16 @@ class Match:
def __str__(self): def __str__(self):
return f"{self.query_offset} {self.target_offset} {self.length}" return f"{self.query_offset} {self.target_offset} {self.length}"
@dataclass
class Result:
query: str
target: str
query_start: int
target_start: int
length: int
def get_pair_matches(query_hashes: list[int], sym_hashes: list[int]) -> list[Match]: def get_pair_matches(query_hashes: list[int], sym_hashes: list[int]) -> list[Match]:
ret = [] ret = []
@ -146,6 +154,30 @@ def get_hashes(bytes: Bytes, window_size: int) -> list[int]:
ret.append(bytes.normalized[i : i + window_size]) ret.append(bytes.normalized[i : i + window_size])
return ret return ret
def group_matches(query: str, target: str, matches: list[Match]) -> list[Result]:
ret = []
matches.sort(key=lambda m: m.query_offset)
match_groups = []
last_start = matches[0].query_offset
for match in matches:
if match.query_offset == last_start + 1:
match_groups[-1].append(match)
else:
match_groups.append([match])
last_start = match.query_offset
for group in match_groups:
query_start = group[0].query_offset
target_start = group[0].target_offset
length = len(group)
ret.append(Result(query, target, query_start, target_start, length))
return ret
def get_matches(query: str, window_size: int): def get_matches(query: str, window_size: int):
query_bytes: Optional[Bytes] = get_symbol_bytes(query) query_bytes: Optional[Bytes] = get_symbol_bytes(query)
@ -169,40 +201,28 @@ def get_matches(query: str, window_size: int):
sym_hashes = get_hashes(sym_bytes, window_size) sym_hashes = get_hashes(sym_bytes, window_size)
matches: list[Match] = get_pair_matches(query_hashes, sym_hashes) matches: list[Match] = get_pair_matches(query_hashes, sym_hashes)
for match in matches: if matches:
print(f"{query} {symbol} {match}") results = group_matches(query, symbol, matches)
decompiled_str = ""
if syms[symbol].is_decompiled:
decompiled_str = " (decompiled)"
print(symbol + ":" + decompiled_str)
for result in results:
total_len = result.length + window_size
query_str = f"{query} [{result.query_start}-{result.query_start + total_len}]"
target_str = f"{symbol} [{result.target_start}-{result.target_start + total_len}]"
print(f"\t{query_str} matches {target_str} ({total_len})")
return OrderedDict(sorted(ret.items(), key=lambda kv: kv[1], reverse=True)) return OrderedDict(sorted(ret.items(), key=lambda kv: kv[1], reverse=True))
def do_query(query, window_size): def do_query(query, window_size):
matches = get_matches(query, window_size) get_matches(query, window_size)
num_matches = len(matches)
if num_matches == 0:
print(query + " - found no matches")
return
i = 0
more_str = ":"
if args.num_out < num_matches:
more_str = " (showing only " + str(args.num_out) + "):"
print(query + " - found " + str(num_matches) + " matches total" + more_str)
for match in matches:
if i == args.num_out:
break
match_str = "{:.3f} - {}".format(matches[match], match)
if syms[match].is_decompiled:
match_str += " (decompiled)"
print(match_str)
i += 1
print()
parser = argparse.ArgumentParser(description="Tool to find duplicate portions of code from one function in code across the codebase") parser = argparse.ArgumentParser(description="Tool to find duplicate portions of code from one function in code across the codebase")
parser.add_argument("query", help="function") parser.add_argument("query", help="function")
parser.add_argument("-t", "--threshold", help="score threshold between 0 and 1 (higher is more restrictive)", type=float, default=0.9, required=False)
parser.add_argument("-n", "--num-out", help="number of results to display", type=int, default=100, required=False)
parser.add_argument("-w", "--window-size", help="number of bytes to compare", type=int, default=20, required=False) parser.add_argument("-w", "--window-size", help="number of bytes to compare", type=int, default=20, required=False)
args = parser.parse_args() args = parser.parse_args()

View File

@ -1,98 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel play_movement_dust_effects
/* 192BD0 802642F0 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 192BD4 802642F4 F7B60028 */ sdc1 $f22, 0x28($sp)
/* 192BD8 802642F8 4485B000 */ mtc1 $a1, $f22
/* 192BDC 802642FC F7B80030 */ sdc1 $f24, 0x30($sp)
/* 192BE0 80264300 4486C000 */ mtc1 $a2, $f24
/* 192BE4 80264304 F7BA0038 */ sdc1 $f26, 0x38($sp)
/* 192BE8 80264308 4487D000 */ mtc1 $a3, $f26
/* 192BEC 8026430C 24020002 */ addiu $v0, $zero, 2
/* 192BF0 80264310 AFBF0018 */ sw $ra, 0x18($sp)
/* 192BF4 80264314 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 192BF8 80264318 1482000C */ bne $a0, $v0, .L8026434C
/* 192BFC 8026431C 24020001 */ addiu $v0, $zero, 1
/* 192C00 80264320 44800000 */ mtc1 $zero, $f0
/* 192C04 80264324 00000000 */ nop
/* 192C08 80264328 4600C600 */ add.s $f24, $f24, $f0
/* 192C0C 8026432C 3C018029 */ lui $at, %hi(D_802938A4)
/* 192C10 80264330 C42038A4 */ lwc1 $f0, %lo(D_802938A4)($at)
/* 192C14 80264334 4406C000 */ mfc1 $a2, $f24
/* 192C18 80264338 0000202D */ daddu $a0, $zero, $zero
/* 192C1C 8026433C 0C01BEB4 */ jal fx_landing_dust
/* 192C20 80264340 E7A00010 */ swc1 $f0, 0x10($sp)
/* 192C24 80264344 08099110 */ j .L80264440
/* 192C28 80264348 00000000 */ nop
.L8026434C:
/* 192C2C 8026434C 14820004 */ bne $a0, $v0, .L80264360
/* 192C30 80264350 24020004 */ addiu $v0, $zero, 4
/* 192C34 80264354 3C018029 */ lui $at, %hi(D_802938A8)
/* 192C38 80264358 08099110 */ j .L80264440
/* 192C3C 8026435C A42238A8 */ sh $v0, %lo(D_802938A8)($at)
.L80264360:
/* 192C40 80264360 3C048029 */ lui $a0, %hi(D_802938A8)
/* 192C44 80264364 248438A8 */ addiu $a0, $a0, %lo(D_802938A8)
/* 192C48 80264368 94820000 */ lhu $v0, ($a0)
/* 192C4C 8026436C 24430001 */ addiu $v1, $v0, 1
/* 192C50 80264370 00021400 */ sll $v0, $v0, 0x10
/* 192C54 80264374 00021403 */ sra $v0, $v0, 0x10
/* 192C58 80264378 28420004 */ slti $v0, $v0, 4
/* 192C5C 8026437C 14400030 */ bnez $v0, .L80264440
/* 192C60 80264380 A4830000 */ sh $v1, ($a0)
/* 192C64 80264384 A4800000 */ sh $zero, ($a0)
/* 192C68 80264388 C7AC0050 */ lwc1 $f12, 0x50($sp)
/* 192C6C 8026438C 0C00A6C9 */ jal clamp_angle
/* 192C70 80264390 46006307 */ neg.s $f12, $f12
/* 192C74 80264394 3C0140C9 */ lui $at, 0x40c9
/* 192C78 80264398 34210FD0 */ ori $at, $at, 0xfd0
/* 192C7C 8026439C 44811000 */ mtc1 $at, $f2
/* 192C80 802643A0 00000000 */ nop
/* 192C84 802643A4 46020502 */ mul.s $f20, $f0, $f2
/* 192C88 802643A8 00000000 */ nop
/* 192C8C 802643AC 3C0143B4 */ lui $at, 0x43b4
/* 192C90 802643B0 44810000 */ mtc1 $at, $f0
/* 192C94 802643B4 00000000 */ nop
/* 192C98 802643B8 4600A503 */ div.s $f20, $f20, $f0
/* 192C9C 802643BC 0C00A85B */ jal sin_rad
/* 192CA0 802643C0 4600A306 */ mov.s $f12, $f20
/* 192CA4 802643C4 4600A306 */ mov.s $f12, $f20
/* 192CA8 802643C8 0C00A874 */ jal cos_rad
/* 192CAC 802643CC 46000506 */ mov.s $f20, $f0
/* 192CB0 802643D0 3C0141C0 */ lui $at, 0x41c0
/* 192CB4 802643D4 44812000 */ mtc1 $at, $f4
/* 192CB8 802643D8 00000000 */ nop
/* 192CBC 802643DC 4604A182 */ mul.s $f6, $f20, $f4
/* 192CC0 802643E0 00000000 */ nop
/* 192CC4 802643E4 46040102 */ mul.s $f4, $f0, $f4
/* 192CC8 802643E8 00000000 */ nop
/* 192CCC 802643EC 3C013E4C */ lui $at, 0x3e4c
/* 192CD0 802643F0 3421CCCD */ ori $at, $at, 0xcccd
/* 192CD4 802643F4 44811000 */ mtc1 $at, $f2
/* 192CD8 802643F8 00000000 */ nop
/* 192CDC 802643FC 46023182 */ mul.s $f6, $f6, $f2
/* 192CE0 80264400 00000000 */ nop
/* 192CE4 80264404 46022102 */ mul.s $f4, $f4, $f2
/* 192CE8 80264408 00000000 */ nop
/* 192CEC 8026440C 3C013FC0 */ lui $at, 0x3fc0
/* 192CF0 80264410 44811000 */ mtc1 $at, $f2
/* 192CF4 80264414 00000000 */ nop
/* 192CF8 80264418 4602C600 */ add.s $f24, $f24, $f2
/* 192CFC 8026441C 4606B580 */ add.s $f22, $f22, $f6
/* 192D00 80264420 4604D680 */ add.s $f26, $f26, $f4
/* 192D04 80264424 4406C000 */ mfc1 $a2, $f24
/* 192D08 80264428 4405B000 */ mfc1 $a1, $f22
/* 192D0C 8026442C 4407D000 */ mfc1 $a3, $f26
/* 192D10 80264430 0000202D */ daddu $a0, $zero, $zero
/* 192D14 80264434 E7B40010 */ swc1 $f20, 0x10($sp)
/* 192D18 80264438 0C01BECC */ jal fx_walking_dust
/* 192D1C 8026443C E7A00014 */ swc1 $f0, 0x14($sp)
.L80264440:
/* 192D20 80264440 8FBF0018 */ lw $ra, 0x18($sp)
/* 192D24 80264444 D7BA0038 */ ldc1 $f26, 0x38($sp)
/* 192D28 80264448 D7B80030 */ ldc1 $f24, 0x30($sp)
/* 192D2C 8026444C D7B60028 */ ldc1 $f22, 0x28($sp)
/* 192D30 80264450 D7B40020 */ ldc1 $f20, 0x20($sp)
/* 192D34 80264454 03E00008 */ jr $ra
/* 192D38 80264458 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,609 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_8029D8A0
.double 47.0
dlabel D_8029D8A8
.double 1.12
dlabel D_8029D8B0
.double 0.53
dlabel D_8029D8B8
.double 47.0
dlabel D_8029D8C0
.double 0.8
dlabel D_8029D8C8
.double 0.53
dlabel D_8029D8D0
.double 0.8
dlabel D_8029D8D8
.double 16.5
dlabel D_8029D8E0
.double 33.0
.section .text
glabel func_80274A18
/* 1A32F8 80274A18 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 1A32FC 80274A1C AFB30024 */ sw $s3, 0x24($sp)
/* 1A3300 80274A20 0080982D */ daddu $s3, $a0, $zero
/* 1A3304 80274A24 AFB40028 */ sw $s4, 0x28($sp)
/* 1A3308 80274A28 3C14800E */ lui $s4, %hi(gBattleStatus)
/* 1A330C 80274A2C 2694C070 */ addiu $s4, $s4, %lo(gBattleStatus)
/* 1A3310 80274A30 AFBF002C */ sw $ra, 0x2c($sp)
/* 1A3314 80274A34 AFB20020 */ sw $s2, 0x20($sp)
/* 1A3318 80274A38 AFB1001C */ sw $s1, 0x1c($sp)
/* 1A331C 80274A3C AFB00018 */ sw $s0, 0x18($sp)
/* 1A3320 80274A40 F7BA0048 */ sdc1 $f26, 0x48($sp)
/* 1A3324 80274A44 F7B80040 */ sdc1 $f24, 0x40($sp)
/* 1A3328 80274A48 F7B60038 */ sdc1 $f22, 0x38($sp)
/* 1A332C 80274A4C F7B40030 */ sdc1 $f20, 0x30($sp)
/* 1A3330 80274A50 8E9200D8 */ lw $s2, 0xd8($s4)
/* 1A3334 80274A54 8E71000C */ lw $s1, 0xc($s3)
/* 1A3338 80274A58 10A00010 */ beqz $a1, .L80274A9C
/* 1A333C 80274A5C 2650000C */ addiu $s0, $s2, 0xc
/* 1A3340 80274A60 8E250000 */ lw $a1, ($s1)
/* 1A3344 80274A64 0C0B1EAF */ jal evt_get_variable
/* 1A3348 80274A68 26310004 */ addiu $s1, $s1, 4
/* 1A334C 80274A6C A6420070 */ sh $v0, 0x70($s2)
/* 1A3350 80274A70 8E250000 */ lw $a1, ($s1)
/* 1A3354 80274A74 0C0B1EAF */ jal evt_get_variable
/* 1A3358 80274A78 0260202D */ daddu $a0, $s3, $zero
/* 1A335C 80274A7C A6420072 */ sh $v0, 0x72($s2)
/* 1A3360 80274A80 AE600074 */ sw $zero, 0x74($s3)
/* 1A3364 80274A84 AE600070 */ sw $zero, 0x70($s3)
/* 1A3368 80274A88 86430072 */ lh $v1, 0x72($s2)
/* 1A336C 80274A8C 24020001 */ addiu $v0, $zero, 1
/* 1A3370 80274A90 14620002 */ bne $v1, $v0, .L80274A9C
/* 1A3374 80274A94 24020002 */ addiu $v0, $zero, 2
/* 1A3378 80274A98 AE620070 */ sw $v0, 0x70($s3)
.L80274A9C:
/* 1A337C 80274A9C 8E620070 */ lw $v0, 0x70($s3)
/* 1A3380 80274AA0 144000FC */ bnez $v0, .L80274E94
/* 1A3384 80274AA4 00000000 */ nop
/* 1A3388 80274AA8 C6400144 */ lwc1 $f0, 0x144($s2)
/* 1A338C 80274AAC C618000C */ lwc1 $f24, 0xc($s0)
/* 1A3390 80274AB0 C61A0014 */ lwc1 $f26, 0x14($s0)
/* 1A3394 80274AB4 E6000000 */ swc1 $f0, ($s0)
/* 1A3398 80274AB8 C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A339C 80274ABC 4406C000 */ mfc1 $a2, $f24
/* 1A33A0 80274AC0 4407D000 */ mfc1 $a3, $f26
/* 1A33A4 80274AC4 C6160000 */ lwc1 $f22, ($s0)
/* 1A33A8 80274AC8 E6000004 */ swc1 $f0, 4($s0)
/* 1A33AC 80274ACC C654014C */ lwc1 $f20, 0x14c($s2)
/* 1A33B0 80274AD0 4600B306 */ mov.s $f12, $f22
/* 1A33B4 80274AD4 4600A386 */ mov.s $f14, $f20
/* 1A33B8 80274AD8 0C00A720 */ jal atan2
/* 1A33BC 80274ADC E6140008 */ swc1 $f20, 8($s0)
/* 1A33C0 80274AE0 4600B306 */ mov.s $f12, $f22
/* 1A33C4 80274AE4 4406C000 */ mfc1 $a2, $f24
/* 1A33C8 80274AE8 4407D000 */ mfc1 $a3, $f26
/* 1A33CC 80274AEC 4600A386 */ mov.s $f14, $f20
/* 1A33D0 80274AF0 0C00A7B5 */ jal dist2D
/* 1A33D4 80274AF4 E6000048 */ swc1 $f0, 0x48($s0)
/* 1A33D8 80274AF8 86020064 */ lh $v0, 0x64($s0)
/* 1A33DC 80274AFC 46000106 */ mov.s $f4, $f0
/* 1A33E0 80274B00 14400012 */ bnez $v0, .L80274B4C
/* 1A33E4 80274B04 E604004C */ swc1 $f4, 0x4c($s0)
/* 1A33E8 80274B08 C6000040 */ lwc1 $f0, 0x40($s0)
/* 1A33EC 80274B0C C6020040 */ lwc1 $f2, 0x40($s0)
/* 1A33F0 80274B10 46002003 */ div.s $f0, $f4, $f0
/* 1A33F4 80274B14 4600028D */ trunc.w.s $f10, $f0
/* 1A33F8 80274B18 44035000 */ mfc1 $v1, $f10
/* 1A33FC 80274B1C 00000000 */ nop
/* 1A3400 80274B20 00031400 */ sll $v0, $v1, 0x10
/* 1A3404 80274B24 00021403 */ sra $v0, $v0, 0x10
/* 1A3408 80274B28 44820000 */ mtc1 $v0, $f0
/* 1A340C 80274B2C 00000000 */ nop
/* 1A3410 80274B30 46800020 */ cvt.s.w $f0, $f0
/* 1A3414 80274B34 46020002 */ mul.s $f0, $f0, $f2
/* 1A3418 80274B38 00000000 */ nop
/* 1A341C 80274B3C 46002086 */ mov.s $f2, $f4
/* 1A3420 80274B40 A6030064 */ sh $v1, 0x64($s0)
/* 1A3424 80274B44 0809D2E0 */ j .L80274B80
/* 1A3428 80274B48 46001201 */ sub.s $f8, $f2, $f0
.L80274B4C:
/* 1A342C 80274B4C 44821000 */ mtc1 $v0, $f2
/* 1A3430 80274B50 00000000 */ nop
/* 1A3434 80274B54 468010A0 */ cvt.s.w $f2, $f2
/* 1A3438 80274B58 86020064 */ lh $v0, 0x64($s0)
/* 1A343C 80274B5C 46022083 */ div.s $f2, $f4, $f2
/* 1A3440 80274B60 44820000 */ mtc1 $v0, $f0
/* 1A3444 80274B64 00000000 */ nop
/* 1A3448 80274B68 46800020 */ cvt.s.w $f0, $f0
/* 1A344C 80274B6C 46020002 */ mul.s $f0, $f0, $f2
/* 1A3450 80274B70 00000000 */ nop
/* 1A3454 80274B74 C604004C */ lwc1 $f4, 0x4c($s0)
/* 1A3458 80274B78 E6020040 */ swc1 $f2, 0x40($s0)
/* 1A345C 80274B7C 46002201 */ sub.s $f8, $f4, $f0
.L80274B80:
/* 1A3460 80274B80 86030064 */ lh $v1, 0x64($s0)
/* 1A3464 80274B84 106001BD */ beqz $v1, .L8027527C
/* 1A3468 80274B88 24020002 */ addiu $v0, $zero, 2
/* 1A346C 80274B8C 86020064 */ lh $v0, 0x64($s0)
/* 1A3470 80274B90 C602000C */ lwc1 $f2, 0xc($s0)
/* 1A3474 80274B94 3C014049 */ lui $at, 0x4049
/* 1A3478 80274B98 34210FD0 */ ori $at, $at, 0xfd0
/* 1A347C 80274B9C 44810000 */ mtc1 $at, $f0
/* 1A3480 80274BA0 C6040000 */ lwc1 $f4, ($s0)
/* 1A3484 80274BA4 44823000 */ mtc1 $v0, $f6
/* 1A3488 80274BA8 00000000 */ nop
/* 1A348C 80274BAC 468031A0 */ cvt.s.w $f6, $f6
/* 1A3490 80274BB0 46060003 */ div.s $f0, $f0, $f6
/* 1A3494 80274BB4 46041081 */ sub.s $f2, $f2, $f4
/* 1A3498 80274BB8 E600003C */ swc1 $f0, 0x3c($s0)
/* 1A349C 80274BBC 44830000 */ mtc1 $v1, $f0
/* 1A34A0 80274BC0 00000000 */ nop
/* 1A34A4 80274BC4 46800020 */ cvt.s.w $f0, $f0
/* 1A34A8 80274BC8 46001083 */ div.s $f2, $f2, $f0
/* 1A34AC 80274BCC C6000010 */ lwc1 $f0, 0x10($s0)
/* 1A34B0 80274BD0 E6020030 */ swc1 $f2, 0x30($s0)
/* 1A34B4 80274BD4 C6020004 */ lwc1 $f2, 4($s0)
/* 1A34B8 80274BD8 AE000044 */ sw $zero, 0x44($s0)
/* 1A34BC 80274BDC 46020001 */ sub.s $f0, $f0, $f2
/* 1A34C0 80274BE0 C6040014 */ lwc1 $f4, 0x14($s0)
/* 1A34C4 80274BE4 46003086 */ mov.s $f2, $f6
/* 1A34C8 80274BE8 46020003 */ div.s $f0, $f0, $f2
/* 1A34CC 80274BEC E6000034 */ swc1 $f0, 0x34($s0)
/* 1A34D0 80274BF0 46003006 */ mov.s $f0, $f6
/* 1A34D4 80274BF4 46004003 */ div.s $f0, $f8, $f0
/* 1A34D8 80274BF8 C6020008 */ lwc1 $f2, 8($s0)
/* 1A34DC 80274BFC 86020066 */ lh $v0, 0x66($s0)
/* 1A34E0 80274C00 46022101 */ sub.s $f4, $f4, $f2
/* 1A34E4 80274C04 C6020040 */ lwc1 $f2, 0x40($s0)
/* 1A34E8 80274C08 28420003 */ slti $v0, $v0, 3
/* 1A34EC 80274C0C 46001080 */ add.s $f2, $f2, $f0
/* 1A34F0 80274C10 46062103 */ div.s $f4, $f4, $f6
/* 1A34F4 80274C14 E6040038 */ swc1 $f4, 0x38($s0)
/* 1A34F8 80274C18 10400045 */ beqz $v0, .L80274D30
/* 1A34FC 80274C1C E6020040 */ swc1 $f2, 0x40($s0)
/* 1A3500 80274C20 86020064 */ lh $v0, 0x64($s0)
/* 1A3504 80274C24 24030168 */ addiu $v1, $zero, 0x168
/* 1A3508 80274C28 14400002 */ bnez $v0, .L80274C34
/* 1A350C 80274C2C 0062001A */ div $zero, $v1, $v0
/* 1A3510 80274C30 0007000D */ break 7
.L80274C34:
/* 1A3514 80274C34 2401FFFF */ addiu $at, $zero, -1
/* 1A3518 80274C38 14410004 */ bne $v0, $at, .L80274C4C
/* 1A351C 80274C3C 3C018000 */ lui $at, 0x8000
/* 1A3520 80274C40 14610002 */ bne $v1, $at, .L80274C4C
/* 1A3524 80274C44 00000000 */ nop
/* 1A3528 80274C48 0006000D */ break 6
.L80274C4C:
/* 1A352C 80274C4C 00001812 */ mflo $v1
/* 1A3530 80274C50 C608004C */ lwc1 $f8, 0x4c($s0)
/* 1A3534 80274C54 3C014034 */ lui $at, 0x4034
/* 1A3538 80274C58 44811800 */ mtc1 $at, $f3
/* 1A353C 80274C5C 44801000 */ mtc1 $zero, $f2
/* 1A3540 80274C60 46004021 */ cvt.d.s $f0, $f8
/* 1A3544 80274C64 46220001 */ sub.d $f0, $f0, $f2
/* 1A3548 80274C68 3C014018 */ lui $at, 0x4018
/* 1A354C 80274C6C 44811800 */ mtc1 $at, $f3
/* 1A3550 80274C70 44801000 */ mtc1 $zero, $f2
/* 1A3554 80274C74 46200220 */ cvt.s.d $f8, $f0
/* 1A3558 80274C78 46004021 */ cvt.d.s $f0, $f8
/* 1A355C 80274C7C 46220003 */ div.d $f0, $f0, $f2
/* 1A3560 80274C80 46200220 */ cvt.s.d $f8, $f0
/* 1A3564 80274C84 3C01802A */ lui $at, %hi(D_8029D8A0)
/* 1A3568 80274C88 D422D8A0 */ ldc1 $f2, %lo(D_8029D8A0)($at)
/* 1A356C 80274C8C 46004021 */ cvt.d.s $f0, $f8
/* 1A3570 80274C90 46220000 */ add.d $f0, $f0, $f2
/* 1A3574 80274C94 3C0142B4 */ lui $at, 0x42b4
/* 1A3578 80274C98 44811000 */ mtc1 $at, $f2
/* 1A357C 80274C9C 46200220 */ cvt.s.d $f8, $f0
/* 1A3580 80274CA0 44830000 */ mtc1 $v1, $f0
/* 1A3584 80274CA4 00000000 */ nop
/* 1A3588 80274CA8 46800020 */ cvt.s.w $f0, $f0
/* 1A358C 80274CAC 86030066 */ lh $v1, 0x66($s0)
/* 1A3590 80274CB0 24020002 */ addiu $v0, $zero, 2
/* 1A3594 80274CB4 E6020024 */ swc1 $f2, 0x24($s0)
/* 1A3598 80274CB8 E6080050 */ swc1 $f8, 0x50($s0)
/* 1A359C 80274CBC 14620008 */ bne $v1, $v0, .L80274CE0
/* 1A35A0 80274CC0 E6000028 */ swc1 $f0, 0x28($s0)
/* 1A35A4 80274CC4 3C01802A */ lui $at, %hi(D_8029D8A8)
/* 1A35A8 80274CC8 D422D8A8 */ ldc1 $f2, %lo(D_8029D8A8)($at)
/* 1A35AC 80274CCC 46004021 */ cvt.d.s $f0, $f8
/* 1A35B0 80274CD0 46220002 */ mul.d $f0, $f0, $f2
/* 1A35B4 80274CD4 00000000 */ nop
/* 1A35B8 80274CD8 46200020 */ cvt.s.d $f0, $f0
/* 1A35BC 80274CDC E6000050 */ swc1 $f0, 0x50($s0)
.L80274CE0:
/* 1A35C0 80274CE0 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A35C4 80274CE4 3C0140C9 */ lui $at, 0x40c9
/* 1A35C8 80274CE8 34210FD0 */ ori $at, $at, 0xfd0
/* 1A35CC 80274CEC 44810000 */ mtc1 $at, $f0
/* 1A35D0 80274CF0 C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A35D4 80274CF4 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A35D8 80274CF8 AE000018 */ sw $zero, 0x18($s0)
/* 1A35DC 80274CFC 46006302 */ mul.s $f12, $f12, $f0
/* 1A35E0 80274D00 00000000 */ nop
/* 1A35E4 80274D04 AE00001C */ sw $zero, 0x1c($s0)
/* 1A35E8 80274D08 4600A521 */ cvt.d.s $f20, $f20
/* 1A35EC 80274D0C 3C0143B4 */ lui $at, 0x43b4
/* 1A35F0 80274D10 44810000 */ mtc1 $at, $f0
/* 1A35F4 80274D14 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A35F8 80274D18 0C00A85B */ jal sin_rad
/* 1A35FC 80274D1C 46006303 */ div.s $f12, $f12, $f0
/* 1A3600 80274D20 3C01802A */ lui $at, %hi(D_8029D8B0)
/* 1A3604 80274D24 D422D8B0 */ ldc1 $f2, %lo(D_8029D8B0)($at)
/* 1A3608 80274D28 0809D390 */ j .L80274E40
/* 1A360C 80274D2C 46000021 */ cvt.d.s $f0, $f0
.L80274D30:
/* 1A3610 80274D30 86020064 */ lh $v0, 0x64($s0)
/* 1A3614 80274D34 24030168 */ addiu $v1, $zero, 0x168
/* 1A3618 80274D38 14400002 */ bnez $v0, .L80274D44
/* 1A361C 80274D3C 0062001A */ div $zero, $v1, $v0
/* 1A3620 80274D40 0007000D */ break 7
.L80274D44:
/* 1A3624 80274D44 2401FFFF */ addiu $at, $zero, -1
/* 1A3628 80274D48 14410004 */ bne $v0, $at, .L80274D5C
/* 1A362C 80274D4C 3C018000 */ lui $at, 0x8000
/* 1A3630 80274D50 14610002 */ bne $v1, $at, .L80274D5C
/* 1A3634 80274D54 00000000 */ nop
/* 1A3638 80274D58 0006000D */ break 6
.L80274D5C:
/* 1A363C 80274D5C 00001812 */ mflo $v1
/* 1A3640 80274D60 C608004C */ lwc1 $f8, 0x4c($s0)
/* 1A3644 80274D64 3C014034 */ lui $at, 0x4034
/* 1A3648 80274D68 44811800 */ mtc1 $at, $f3
/* 1A364C 80274D6C 44801000 */ mtc1 $zero, $f2
/* 1A3650 80274D70 46004021 */ cvt.d.s $f0, $f8
/* 1A3654 80274D74 46220001 */ sub.d $f0, $f0, $f2
/* 1A3658 80274D78 3C014018 */ lui $at, 0x4018
/* 1A365C 80274D7C 44811800 */ mtc1 $at, $f3
/* 1A3660 80274D80 44801000 */ mtc1 $zero, $f2
/* 1A3664 80274D84 46200220 */ cvt.s.d $f8, $f0
/* 1A3668 80274D88 46004021 */ cvt.d.s $f0, $f8
/* 1A366C 80274D8C 46220003 */ div.d $f0, $f0, $f2
/* 1A3670 80274D90 46200220 */ cvt.s.d $f8, $f0
/* 1A3674 80274D94 3C01802A */ lui $at, %hi(D_8029D8B8)
/* 1A3678 80274D98 D422D8B8 */ ldc1 $f2, %lo(D_8029D8B8)($at)
/* 1A367C 80274D9C 46004021 */ cvt.d.s $f0, $f8
/* 1A3680 80274DA0 46220000 */ add.d $f0, $f0, $f2
/* 1A3684 80274DA4 3C0142B4 */ lui $at, 0x42b4
/* 1A3688 80274DA8 44811000 */ mtc1 $at, $f2
/* 1A368C 80274DAC 46200220 */ cvt.s.d $f8, $f0
/* 1A3690 80274DB0 44830000 */ mtc1 $v1, $f0
/* 1A3694 80274DB4 00000000 */ nop
/* 1A3698 80274DB8 46800020 */ cvt.s.w $f0, $f0
/* 1A369C 80274DBC 86030066 */ lh $v1, 0x66($s0)
/* 1A36A0 80274DC0 24020004 */ addiu $v0, $zero, 4
/* 1A36A4 80274DC4 E6020024 */ swc1 $f2, 0x24($s0)
/* 1A36A8 80274DC8 E6080050 */ swc1 $f8, 0x50($s0)
/* 1A36AC 80274DCC 14620009 */ bne $v1, $v0, .L80274DF4
/* 1A36B0 80274DD0 E6000028 */ swc1 $f0, 0x28($s0)
/* 1A36B4 80274DD4 3C013FF4 */ lui $at, 0x3ff4
/* 1A36B8 80274DD8 44811800 */ mtc1 $at, $f3
/* 1A36BC 80274DDC 44801000 */ mtc1 $zero, $f2
/* 1A36C0 80274DE0 46004021 */ cvt.d.s $f0, $f8
/* 1A36C4 80274DE4 46220002 */ mul.d $f0, $f0, $f2
/* 1A36C8 80274DE8 00000000 */ nop
/* 1A36CC 80274DEC 46200020 */ cvt.s.d $f0, $f0
/* 1A36D0 80274DF0 E6000050 */ swc1 $f0, 0x50($s0)
.L80274DF4:
/* 1A36D4 80274DF4 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A36D8 80274DF8 3C0140C9 */ lui $at, 0x40c9
/* 1A36DC 80274DFC 34210FD0 */ ori $at, $at, 0xfd0
/* 1A36E0 80274E00 44810000 */ mtc1 $at, $f0
/* 1A36E4 80274E04 C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A36E8 80274E08 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A36EC 80274E0C AE000018 */ sw $zero, 0x18($s0)
/* 1A36F0 80274E10 46006302 */ mul.s $f12, $f12, $f0
/* 1A36F4 80274E14 00000000 */ nop
/* 1A36F8 80274E18 AE00001C */ sw $zero, 0x1c($s0)
/* 1A36FC 80274E1C 4600A521 */ cvt.d.s $f20, $f20
/* 1A3700 80274E20 3C0143B4 */ lui $at, 0x43b4
/* 1A3704 80274E24 44810000 */ mtc1 $at, $f0
/* 1A3708 80274E28 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A370C 80274E2C 0C00A85B */ jal sin_rad
/* 1A3710 80274E30 46006303 */ div.s $f12, $f12, $f0
/* 1A3714 80274E34 3C01802A */ lui $at, %hi(D_8029D8C0)
/* 1A3718 80274E38 D422D8C0 */ ldc1 $f2, %lo(D_8029D8C0)($at)
/* 1A371C 80274E3C 46000021 */ cvt.d.s $f0, $f0
.L80274E40:
/* 1A3720 80274E40 46220002 */ mul.d $f0, $f0, $f2
/* 1A3724 80274E44 00000000 */ nop
/* 1A3728 80274E48 46360002 */ mul.d $f0, $f0, $f22
/* 1A372C 80274E4C 00000000 */ nop
/* 1A3730 80274E50 46360000 */ add.d $f0, $f0, $f22
/* 1A3734 80274E54 4620A500 */ add.d $f20, $f20, $f0
/* 1A3738 80274E58 4620A520 */ cvt.s.d $f20, $f20
/* 1A373C 80274E5C E6140044 */ swc1 $f20, 0x44($s0)
/* 1A3740 80274E60 0000202D */ daddu $a0, $zero, $zero
/* 1A3744 80274E64 8E060058 */ lw $a2, 0x58($s0)
/* 1A3748 80274E68 0C098F3F */ jal set_animation
/* 1A374C 80274E6C 0080282D */ daddu $a1, $a0, $zero
/* 1A3750 80274E70 C640014C */ lwc1 $f0, 0x14c($s2)
/* 1A3754 80274E74 24040160 */ addiu $a0, $zero, 0x160
/* 1A3758 80274E78 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A375C 80274E7C 8E460144 */ lw $a2, 0x144($s2)
/* 1A3760 80274E80 8E470148 */ lw $a3, 0x148($s2)
/* 1A3764 80274E84 0C052757 */ jal sfx_play_sound_at_position
/* 1A3768 80274E88 0000282D */ daddu $a1, $zero, $zero
/* 1A376C 80274E8C 24020001 */ addiu $v0, $zero, 1
/* 1A3770 80274E90 AE620070 */ sw $v0, 0x70($s3)
.L80274E94:
/* 1A3774 80274E94 8E630070 */ lw $v1, 0x70($s3)
/* 1A3778 80274E98 24020002 */ addiu $v0, $zero, 2
/* 1A377C 80274E9C 10620089 */ beq $v1, $v0, .L802750C4
/* 1A3780 80274EA0 28620003 */ slti $v0, $v1, 3
/* 1A3784 80274EA4 10400005 */ beqz $v0, .L80274EBC
/* 1A3788 80274EA8 24020001 */ addiu $v0, $zero, 1
/* 1A378C 80274EAC 10620008 */ beq $v1, $v0, .L80274ED0
/* 1A3790 80274EB0 0000102D */ daddu $v0, $zero, $zero
/* 1A3794 80274EB4 0809D49F */ j .L8027527C
/* 1A3798 80274EB8 00000000 */ nop
.L80274EBC:
/* 1A379C 80274EBC 24020003 */ addiu $v0, $zero, 3
/* 1A37A0 80274EC0 106200B2 */ beq $v1, $v0, .L8027518C
/* 1A37A4 80274EC4 0000102D */ daddu $v0, $zero, $zero
/* 1A37A8 80274EC8 0809D49F */ j .L8027527C
/* 1A37AC 80274ECC 00000000 */ nop
.L80274ED0:
/* 1A37B0 80274ED0 C6020044 */ lwc1 $f2, 0x44($s0)
/* 1A37B4 80274ED4 3C013FC9 */ lui $at, 0x3fc9
/* 1A37B8 80274ED8 34210FD0 */ ori $at, $at, 0xfd0
/* 1A37BC 80274EDC 44810000 */ mtc1 $at, $f0
/* 1A37C0 80274EE0 00000000 */ nop
/* 1A37C4 80274EE4 4602003C */ c.lt.s $f0, $f2
/* 1A37C8 80274EE8 00000000 */ nop
/* 1A37CC 80274EEC 45000004 */ bc1f .L80274F00
/* 1A37D0 80274EF0 0000202D */ daddu $a0, $zero, $zero
/* 1A37D4 80274EF4 8E06005C */ lw $a2, 0x5c($s0)
/* 1A37D8 80274EF8 0C098F3F */ jal set_animation
/* 1A37DC 80274EFC 0080282D */ daddu $a1, $a0, $zero
.L80274F00:
/* 1A37E0 80274F00 C6060000 */ lwc1 $f6, ($s0)
/* 1A37E4 80274F04 C6000030 */ lwc1 $f0, 0x30($s0)
/* 1A37E8 80274F08 C6040004 */ lwc1 $f4, 4($s0)
/* 1A37EC 80274F0C 46003180 */ add.s $f6, $f6, $f0
/* 1A37F0 80274F10 C6000034 */ lwc1 $f0, 0x34($s0)
/* 1A37F4 80274F14 C6020008 */ lwc1 $f2, 8($s0)
/* 1A37F8 80274F18 46002100 */ add.s $f4, $f4, $f0
/* 1A37FC 80274F1C C6000038 */ lwc1 $f0, 0x38($s0)
/* 1A3800 80274F20 46001080 */ add.s $f2, $f2, $f0
/* 1A3804 80274F24 E6060000 */ swc1 $f6, ($s0)
/* 1A3808 80274F28 E6040004 */ swc1 $f4, 4($s0)
/* 1A380C 80274F2C E6020008 */ swc1 $f2, 8($s0)
/* 1A3810 80274F30 C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A3814 80274F34 46003086 */ mov.s $f2, $f6
/* 1A3818 80274F38 E6000018 */ swc1 $f0, 0x18($s0)
/* 1A381C 80274F3C E6420144 */ swc1 $f2, 0x144($s2)
/* 1A3820 80274F40 0C00A85B */ jal sin_rad
/* 1A3824 80274F44 C60C0044 */ lwc1 $f12, 0x44($s0)
/* 1A3828 80274F48 C6020050 */ lwc1 $f2, 0x50($s0)
/* 1A382C 80274F4C 46001082 */ mul.s $f2, $f2, $f0
/* 1A3830 80274F50 00000000 */ nop
/* 1A3834 80274F54 C6000004 */ lwc1 $f0, 4($s0)
/* 1A3838 80274F58 46020000 */ add.s $f0, $f0, $f2
/* 1A383C 80274F5C E6400148 */ swc1 $f0, 0x148($s2)
/* 1A3840 80274F60 C6000008 */ lwc1 $f0, 8($s0)
/* 1A3844 80274F64 E640014C */ swc1 $f0, 0x14c($s2)
/* 1A3848 80274F68 C6020010 */ lwc1 $f2, 0x10($s0)
/* 1A384C 80274F6C C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A3850 80274F70 4602003C */ c.lt.s $f0, $f2
/* 1A3854 80274F74 00000000 */ nop
/* 1A3858 80274F78 45000005 */ bc1f .L80274F90
/* 1A385C 80274F7C 00000000 */ nop
/* 1A3860 80274F80 86020064 */ lh $v0, 0x64($s0)
/* 1A3864 80274F84 28420003 */ slti $v0, $v0, 3
/* 1A3868 80274F88 54400001 */ bnel $v0, $zero, .L80274F90
/* 1A386C 80274F8C E6420148 */ swc1 $f2, 0x148($s2)
.L80274F90:
/* 1A3870 80274F90 86020066 */ lh $v0, 0x66($s0)
/* 1A3874 80274F94 C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A3878 80274F98 28420003 */ slti $v0, $v0, 3
/* 1A387C 80274F9C 10400013 */ beqz $v0, .L80274FEC
/* 1A3880 80274FA0 E600001C */ swc1 $f0, 0x1c($s0)
/* 1A3884 80274FA4 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A3888 80274FA8 3C0140C9 */ lui $at, 0x40c9
/* 1A388C 80274FAC 34210FD0 */ ori $at, $at, 0xfd0
/* 1A3890 80274FB0 44810000 */ mtc1 $at, $f0
/* 1A3894 80274FB4 C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A3898 80274FB8 46006302 */ mul.s $f12, $f12, $f0
/* 1A389C 80274FBC 00000000 */ nop
/* 1A38A0 80274FC0 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A38A4 80274FC4 4600A521 */ cvt.d.s $f20, $f20
/* 1A38A8 80274FC8 3C0143B4 */ lui $at, 0x43b4
/* 1A38AC 80274FCC 44810000 */ mtc1 $at, $f0
/* 1A38B0 80274FD0 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A38B4 80274FD4 0C00A85B */ jal sin_rad
/* 1A38B8 80274FD8 46006303 */ div.s $f12, $f12, $f0
/* 1A38BC 80274FDC 3C01802A */ lui $at, %hi(D_8029D8C8)
/* 1A38C0 80274FE0 D422D8C8 */ ldc1 $f2, %lo(D_8029D8C8)($at)
/* 1A38C4 80274FE4 0809D40C */ j .L80275030
/* 1A38C8 80274FE8 46000021 */ cvt.d.s $f0, $f0
.L80274FEC:
/* 1A38CC 80274FEC C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A38D0 80274FF0 3C0140C9 */ lui $at, 0x40c9
/* 1A38D4 80274FF4 34210FD0 */ ori $at, $at, 0xfd0
/* 1A38D8 80274FF8 44810000 */ mtc1 $at, $f0
/* 1A38DC 80274FFC C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A38E0 80275000 46006302 */ mul.s $f12, $f12, $f0
/* 1A38E4 80275004 00000000 */ nop
/* 1A38E8 80275008 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A38EC 8027500C 4600A521 */ cvt.d.s $f20, $f20
/* 1A38F0 80275010 3C0143B4 */ lui $at, 0x43b4
/* 1A38F4 80275014 44810000 */ mtc1 $at, $f0
/* 1A38F8 80275018 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A38FC 8027501C 0C00A85B */ jal sin_rad
/* 1A3900 80275020 46006303 */ div.s $f12, $f12, $f0
/* 1A3904 80275024 3C01802A */ lui $at, %hi(D_8029D8D0)
/* 1A3908 80275028 D422D8D0 */ ldc1 $f2, %lo(D_8029D8D0)($at)
/* 1A390C 8027502C 46000021 */ cvt.d.s $f0, $f0
.L80275030:
/* 1A3910 80275030 46220002 */ mul.d $f0, $f0, $f2
/* 1A3914 80275034 00000000 */ nop
/* 1A3918 80275038 46360002 */ mul.d $f0, $f0, $f22
/* 1A391C 8027503C 00000000 */ nop
/* 1A3920 80275040 46360000 */ add.d $f0, $f0, $f22
/* 1A3924 80275044 4620A500 */ add.d $f20, $f20, $f0
/* 1A3928 80275048 4620A520 */ cvt.s.d $f20, $f20
/* 1A392C 8027504C E6140044 */ swc1 $f20, 0x44($s0)
/* 1A3930 80275050 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A3934 80275054 C6000028 */ lwc1 $f0, 0x28($s0)
/* 1A3938 80275058 46006300 */ add.s $f12, $f12, $f0
/* 1A393C 8027505C 0C00A6C9 */ jal clamp_angle
/* 1A3940 80275060 E60C0024 */ swc1 $f12, 0x24($s0)
/* 1A3944 80275064 96020064 */ lhu $v0, 0x64($s0)
/* 1A3948 80275068 E6000024 */ swc1 $f0, 0x24($s0)
/* 1A394C 8027506C 2442FFFF */ addiu $v0, $v0, -1
/* 1A3950 80275070 A6020064 */ sh $v0, 0x64($s0)
/* 1A3954 80275074 00021400 */ sll $v0, $v0, 0x10
/* 1A3958 80275078 14400080 */ bnez $v0, .L8027527C
/* 1A395C 8027507C 0000102D */ daddu $v0, $zero, $zero
/* 1A3960 80275080 C6000010 */ lwc1 $f0, 0x10($s0)
/* 1A3964 80275084 0000202D */ daddu $a0, $zero, $zero
/* 1A3968 80275088 E6400148 */ swc1 $f0, 0x148($s2)
/* 1A396C 8027508C C6000018 */ lwc1 $f0, 0x18($s0)
/* 1A3970 80275090 C602001C */ lwc1 $f2, 0x1c($s0)
/* 1A3974 80275094 8E060060 */ lw $a2, 0x60($s0)
/* 1A3978 80275098 46020001 */ sub.s $f0, $f0, $f2
/* 1A397C 8027509C 3C013FE6 */ lui $at, 0x3fe6
/* 1A3980 802750A0 34216666 */ ori $at, $at, 0x6666
/* 1A3984 802750A4 44811000 */ mtc1 $at, $f2
/* 1A3988 802750A8 0080282D */ daddu $a1, $a0, $zero
/* 1A398C 802750AC E602003C */ swc1 $f2, 0x3c($s0)
/* 1A3990 802750B0 46000007 */ neg.s $f0, $f0
/* 1A3994 802750B4 0C098F3F */ jal set_animation
/* 1A3998 802750B8 E6000044 */ swc1 $f0, 0x44($s0)
/* 1A399C 802750BC 0809D49F */ j .L8027527C
/* 1A39A0 802750C0 24020001 */ addiu $v0, $zero, 1
.L802750C4:
/* 1A39A4 802750C4 82820083 */ lb $v0, 0x83($s4)
/* 1A39A8 802750C8 10400063 */ beqz $v0, .L80275258
/* 1A39AC 802750CC 24020001 */ addiu $v0, $zero, 1
/* 1A39B0 802750D0 A6020064 */ sh $v0, 0x64($s0)
/* 1A39B4 802750D4 86020064 */ lh $v0, 0x64($s0)
/* 1A39B8 802750D8 24030168 */ addiu $v1, $zero, 0x168
/* 1A39BC 802750DC 14400002 */ bnez $v0, .L802750E8
/* 1A39C0 802750E0 0062001A */ div $zero, $v1, $v0
/* 1A39C4 802750E4 0007000D */ break 7
.L802750E8:
/* 1A39C8 802750E8 2401FFFF */ addiu $at, $zero, -1
/* 1A39CC 802750EC 14410004 */ bne $v0, $at, .L80275100
/* 1A39D0 802750F0 3C018000 */ lui $at, 0x8000
/* 1A39D4 802750F4 14610002 */ bne $v1, $at, .L80275100
/* 1A39D8 802750F8 00000000 */ nop
/* 1A39DC 802750FC 0006000D */ break 6
.L80275100:
/* 1A39E0 80275100 00001812 */ mflo $v1
/* 1A39E4 80275104 C6020018 */ lwc1 $f2, 0x18($s0)
/* 1A39E8 80275108 C600001C */ lwc1 $f0, 0x1c($s0)
/* 1A39EC 8027510C 3C013FE6 */ lui $at, 0x3fe6
/* 1A39F0 80275110 34216666 */ ori $at, $at, 0x6666
/* 1A39F4 80275114 44814000 */ mtc1 $at, $f8
/* 1A39F8 80275118 C604001C */ lwc1 $f4, 0x1c($s0)
/* 1A39FC 8027511C 46001081 */ sub.s $f2, $f2, $f0
/* 1A3A00 80275120 C6000018 */ lwc1 $f0, 0x18($s0)
/* 1A3A04 80275124 3C0142B4 */ lui $at, 0x42b4
/* 1A3A08 80275128 44813000 */ mtc1 $at, $f6
/* 1A3A0C 8027512C 46040001 */ sub.s $f0, $f0, $f4
/* 1A3A10 80275130 E608003C */ swc1 $f8, 0x3c($s0)
/* 1A3A14 80275134 E6060024 */ swc1 $f6, 0x24($s0)
/* 1A3A18 80275138 46001087 */ neg.s $f2, $f2
/* 1A3A1C 8027513C E6020044 */ swc1 $f2, 0x44($s0)
/* 1A3A20 80275140 3C01802A */ lui $at, %hi(D_8029D8D8)
/* 1A3A24 80275144 D422D8D8 */ ldc1 $f2, %lo(D_8029D8D8)($at)
/* 1A3A28 80275148 46000005 */ abs.s $f0, $f0
/* 1A3A2C 8027514C 46000021 */ cvt.d.s $f0, $f0
/* 1A3A30 80275150 46220003 */ div.d $f0, $f0, $f2
/* 1A3A34 80275154 46200020 */ cvt.s.d $f0, $f0
/* 1A3A38 80275158 E6000050 */ swc1 $f0, 0x50($s0)
/* 1A3A3C 8027515C 44830000 */ mtc1 $v1, $f0
/* 1A3A40 80275160 00000000 */ nop
/* 1A3A44 80275164 46800020 */ cvt.s.w $f0, $f0
/* 1A3A48 80275168 E6000028 */ swc1 $f0, 0x28($s0)
/* 1A3A4C 8027516C C6400144 */ lwc1 $f0, 0x144($s2)
/* 1A3A50 80275170 E6000000 */ swc1 $f0, ($s0)
/* 1A3A54 80275174 C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A3A58 80275178 E6000004 */ swc1 $f0, 4($s0)
/* 1A3A5C 8027517C C640014C */ lwc1 $f0, 0x14c($s2)
/* 1A3A60 80275180 24020003 */ addiu $v0, $zero, 3
/* 1A3A64 80275184 E6000008 */ swc1 $f0, 8($s0)
/* 1A3A68 80275188 AE620070 */ sw $v0, 0x70($s3)
.L8027518C:
/* 1A3A6C 8027518C C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A3A70 80275190 3C0140C9 */ lui $at, 0x40c9
/* 1A3A74 80275194 34210FD0 */ ori $at, $at, 0xfd0
/* 1A3A78 80275198 4481B000 */ mtc1 $at, $f22
/* 1A3A7C 8027519C 00000000 */ nop
/* 1A3A80 802751A0 46166302 */ mul.s $f12, $f12, $f22
/* 1A3A84 802751A4 00000000 */ nop
/* 1A3A88 802751A8 C6140000 */ lwc1 $f20, ($s0)
/* 1A3A8C 802751AC 3C0143B4 */ lui $at, 0x43b4
/* 1A3A90 802751B0 4481C000 */ mtc1 $at, $f24
/* 1A3A94 802751B4 4600A521 */ cvt.d.s $f20, $f20
/* 1A3A98 802751B8 0C00A85B */ jal sin_rad
/* 1A3A9C 802751BC 46186303 */ div.s $f12, $f12, $f24
/* 1A3AA0 802751C0 C6020050 */ lwc1 $f2, 0x50($s0)
/* 1A3AA4 802751C4 46001082 */ mul.s $f2, $f2, $f0
/* 1A3AA8 802751C8 00000000 */ nop
/* 1A3AAC 802751CC C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A3AB0 802751D0 46166302 */ mul.s $f12, $f12, $f22
/* 1A3AB4 802751D4 00000000 */ nop
/* 1A3AB8 802751D8 3C01802A */ lui $at, %hi(D_8029D8E0)
/* 1A3ABC 802751DC D420D8E0 */ ldc1 $f0, %lo(D_8029D8E0)($at)
/* 1A3AC0 802751E0 460010A1 */ cvt.d.s $f2, $f2
/* 1A3AC4 802751E4 46201083 */ div.d $f2, $f2, $f0
/* 1A3AC8 802751E8 4622A500 */ add.d $f20, $f20, $f2
/* 1A3ACC 802751EC 46186303 */ div.s $f12, $f12, $f24
/* 1A3AD0 802751F0 4620A520 */ cvt.s.d $f20, $f20
/* 1A3AD4 802751F4 0C00A85B */ jal sin_rad
/* 1A3AD8 802751F8 E6140000 */ swc1 $f20, ($s0)
/* 1A3ADC 802751FC C6020050 */ lwc1 $f2, 0x50($s0)
/* 1A3AE0 80275200 46001082 */ mul.s $f2, $f2, $f0
/* 1A3AE4 80275204 00000000 */ nop
/* 1A3AE8 80275208 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A3AEC 8027520C C6000028 */ lwc1 $f0, 0x28($s0)
/* 1A3AF0 80275210 46006300 */ add.s $f12, $f12, $f0
/* 1A3AF4 80275214 C6000004 */ lwc1 $f0, 4($s0)
/* 1A3AF8 80275218 46020001 */ sub.s $f0, $f0, $f2
/* 1A3AFC 8027521C E60C0024 */ swc1 $f12, 0x24($s0)
/* 1A3B00 80275220 0C00A6C9 */ jal clamp_angle
/* 1A3B04 80275224 E6000004 */ swc1 $f0, 4($s0)
/* 1A3B08 80275228 C6020000 */ lwc1 $f2, ($s0)
/* 1A3B0C 8027522C E6000024 */ swc1 $f0, 0x24($s0)
/* 1A3B10 80275230 E6420144 */ swc1 $f2, 0x144($s2)
/* 1A3B14 80275234 C6000004 */ lwc1 $f0, 4($s0)
/* 1A3B18 80275238 E6400148 */ swc1 $f0, 0x148($s2)
/* 1A3B1C 8027523C C6000008 */ lwc1 $f0, 8($s0)
/* 1A3B20 80275240 E640014C */ swc1 $f0, 0x14c($s2)
/* 1A3B24 80275244 3C02800E */ lui $v0, %hi(gBattleStatus)
/* 1A3B28 80275248 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0)
/* 1A3B2C 8027524C 30422000 */ andi $v0, $v0, 0x2000
/* 1A3B30 80275250 10400003 */ beqz $v0, .L80275260
/* 1A3B34 80275254 00000000 */ nop
.L80275258:
/* 1A3B38 80275258 0809D49F */ j .L8027527C
/* 1A3B3C 8027525C 24020002 */ addiu $v0, $zero, 2
.L80275260:
/* 1A3B40 80275260 96030064 */ lhu $v1, 0x64($s0)
/* 1A3B44 80275264 2463FFFF */ addiu $v1, $v1, -1
/* 1A3B48 80275268 A6030064 */ sh $v1, 0x64($s0)
/* 1A3B4C 8027526C 00031C00 */ sll $v1, $v1, 0x10
/* 1A3B50 80275270 10600002 */ beqz $v1, .L8027527C
/* 1A3B54 80275274 24020001 */ addiu $v0, $zero, 1
/* 1A3B58 80275278 0000102D */ daddu $v0, $zero, $zero
.L8027527C:
/* 1A3B5C 8027527C 8FBF002C */ lw $ra, 0x2c($sp)
/* 1A3B60 80275280 8FB40028 */ lw $s4, 0x28($sp)
/* 1A3B64 80275284 8FB30024 */ lw $s3, 0x24($sp)
/* 1A3B68 80275288 8FB20020 */ lw $s2, 0x20($sp)
/* 1A3B6C 8027528C 8FB1001C */ lw $s1, 0x1c($sp)
/* 1A3B70 80275290 8FB00018 */ lw $s0, 0x18($sp)
/* 1A3B74 80275294 D7BA0048 */ ldc1 $f26, 0x48($sp)
/* 1A3B78 80275298 D7B80040 */ ldc1 $f24, 0x40($sp)
/* 1A3B7C 8027529C D7B60038 */ ldc1 $f22, 0x38($sp)
/* 1A3B80 802752A0 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 1A3B84 802752A4 03E00008 */ jr $ra
/* 1A3B88 802752A8 27BD0050 */ addiu $sp, $sp, 0x50

View File

@ -1,868 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_8029D8E8
.double 0.53
dlabel D_8029D8F0
.double 0.01
dlabel D_8029D8F8
.double 0.53
dlabel D_8029D900
.double 0.01
dlabel D_8029D908
.double 16.5
dlabel D_8029D910
.double 0.53
dlabel D_8029D918
.double 0.01
dlabel D_8029D920
.double 0.53
dlabel D_8029D928
.double 0.01
dlabel D_8029D930
.double 33.0
.section .text
glabel func_802752AC
/* 1A3B8C 802752AC 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 1A3B90 802752B0 AFB20020 */ sw $s2, 0x20($sp)
/* 1A3B94 802752B4 3C12800E */ lui $s2, %hi(gBattleStatus+0xD8)
/* 1A3B98 802752B8 8E52C148 */ lw $s2, %lo(gBattleStatus+0xD8)($s2)
/* 1A3B9C 802752BC AFB30024 */ sw $s3, 0x24($sp)
/* 1A3BA0 802752C0 0080982D */ daddu $s3, $a0, $zero
/* 1A3BA4 802752C4 AFBF0028 */ sw $ra, 0x28($sp)
/* 1A3BA8 802752C8 AFB1001C */ sw $s1, 0x1c($sp)
/* 1A3BAC 802752CC AFB00018 */ sw $s0, 0x18($sp)
/* 1A3BB0 802752D0 F7BA0048 */ sdc1 $f26, 0x48($sp)
/* 1A3BB4 802752D4 F7B80040 */ sdc1 $f24, 0x40($sp)
/* 1A3BB8 802752D8 F7B60038 */ sdc1 $f22, 0x38($sp)
/* 1A3BBC 802752DC F7B40030 */ sdc1 $f20, 0x30($sp)
/* 1A3BC0 802752E0 8E71000C */ lw $s1, 0xc($s3)
/* 1A3BC4 802752E4 10A00019 */ beqz $a1, .L8027534C
/* 1A3BC8 802752E8 2650000C */ addiu $s0, $s2, 0xc
/* 1A3BCC 802752EC 8E250000 */ lw $a1, ($s1)
/* 1A3BD0 802752F0 0C0B1EAF */ jal evt_get_variable
/* 1A3BD4 802752F4 26310004 */ addiu $s1, $s1, 4
/* 1A3BD8 802752F8 A6420070 */ sh $v0, 0x70($s2)
/* 1A3BDC 802752FC 8E250000 */ lw $a1, ($s1)
/* 1A3BE0 80275300 0C0B1EAF */ jal evt_get_variable
/* 1A3BE4 80275304 0260202D */ daddu $a0, $s3, $zero
/* 1A3BE8 80275308 A6420072 */ sh $v0, 0x72($s2)
/* 1A3BEC 8027530C AE600070 */ sw $zero, 0x70($s3)
/* 1A3BF0 80275310 86430072 */ lh $v1, 0x72($s2)
/* 1A3BF4 80275314 24020001 */ addiu $v0, $zero, 1
/* 1A3BF8 80275318 10620005 */ beq $v1, $v0, .L80275330
/* 1A3BFC 8027531C 24020005 */ addiu $v0, $zero, 5
/* 1A3C00 80275320 10620003 */ beq $v1, $v0, .L80275330
/* 1A3C04 80275324 24020006 */ addiu $v0, $zero, 6
/* 1A3C08 80275328 14620003 */ bne $v1, $v0, .L80275338
/* 1A3C0C 8027532C 00000000 */ nop
.L80275330:
/* 1A3C10 80275330 2402000A */ addiu $v0, $zero, 0xa
/* 1A3C14 80275334 AE620070 */ sw $v0, 0x70($s3)
.L80275338:
/* 1A3C18 80275338 86030066 */ lh $v1, 0x66($s0)
/* 1A3C1C 8027533C 24020002 */ addiu $v0, $zero, 2
/* 1A3C20 80275340 14620002 */ bne $v1, $v0, .L8027534C
/* 1A3C24 80275344 24020014 */ addiu $v0, $zero, 0x14
/* 1A3C28 80275348 AE620070 */ sw $v0, 0x70($s3)
.L8027534C:
/* 1A3C2C 8027534C 8E630070 */ lw $v1, 0x70($s3)
/* 1A3C30 80275350 2402000A */ addiu $v0, $zero, 0xa
/* 1A3C34 80275354 106200C0 */ beq $v1, $v0, .L80275658
/* 1A3C38 80275358 2862000B */ slti $v0, $v1, 0xb
/* 1A3C3C 8027535C 10400005 */ beqz $v0, .L80275374
/* 1A3C40 80275360 24020014 */ addiu $v0, $zero, 0x14
/* 1A3C44 80275364 10600007 */ beqz $v1, .L80275384
/* 1A3C48 80275368 24020002 */ addiu $v0, $zero, 2
/* 1A3C4C 8027536C 0809D679 */ j .L802759E4
/* 1A3C50 80275370 00000000 */ nop
.L80275374:
/* 1A3C54 80275374 10620172 */ beq $v1, $v0, .L80275940
/* 1A3C58 80275378 24020001 */ addiu $v0, $zero, 1
/* 1A3C5C 8027537C 0809D677 */ j .L802759DC
/* 1A3C60 80275380 00000000 */ nop
.L80275384:
/* 1A3C64 80275384 C6400144 */ lwc1 $f0, 0x144($s2)
/* 1A3C68 80275388 C618000C */ lwc1 $f24, 0xc($s0)
/* 1A3C6C 8027538C C61A0014 */ lwc1 $f26, 0x14($s0)
/* 1A3C70 80275390 E6000000 */ swc1 $f0, ($s0)
/* 1A3C74 80275394 46000586 */ mov.s $f22, $f0
/* 1A3C78 80275398 4406C000 */ mfc1 $a2, $f24
/* 1A3C7C 8027539C C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A3C80 802753A0 4600B306 */ mov.s $f12, $f22
/* 1A3C84 802753A4 E6000004 */ swc1 $f0, 4($s0)
/* 1A3C88 802753A8 C640014C */ lwc1 $f0, 0x14c($s2)
/* 1A3C8C 802753AC 4407D000 */ mfc1 $a3, $f26
/* 1A3C90 802753B0 46000506 */ mov.s $f20, $f0
/* 1A3C94 802753B4 4600A386 */ mov.s $f14, $f20
/* 1A3C98 802753B8 0C00A720 */ jal atan2
/* 1A3C9C 802753BC E6140008 */ swc1 $f20, 8($s0)
/* 1A3CA0 802753C0 4600B306 */ mov.s $f12, $f22
/* 1A3CA4 802753C4 4406C000 */ mfc1 $a2, $f24
/* 1A3CA8 802753C8 4407D000 */ mfc1 $a3, $f26
/* 1A3CAC 802753CC 4600A386 */ mov.s $f14, $f20
/* 1A3CB0 802753D0 0C00A7B5 */ jal dist2D
/* 1A3CB4 802753D4 E6000048 */ swc1 $f0, 0x48($s0)
/* 1A3CB8 802753D8 86020064 */ lh $v0, 0x64($s0)
/* 1A3CBC 802753DC 46000106 */ mov.s $f4, $f0
/* 1A3CC0 802753E0 14400012 */ bnez $v0, .L8027542C
/* 1A3CC4 802753E4 E604004C */ swc1 $f4, 0x4c($s0)
/* 1A3CC8 802753E8 C6000040 */ lwc1 $f0, 0x40($s0)
/* 1A3CCC 802753EC C6020040 */ lwc1 $f2, 0x40($s0)
/* 1A3CD0 802753F0 46002003 */ div.s $f0, $f4, $f0
/* 1A3CD4 802753F4 4600028D */ trunc.w.s $f10, $f0
/* 1A3CD8 802753F8 44035000 */ mfc1 $v1, $f10
/* 1A3CDC 802753FC 00000000 */ nop
/* 1A3CE0 80275400 00031400 */ sll $v0, $v1, 0x10
/* 1A3CE4 80275404 00021403 */ sra $v0, $v0, 0x10
/* 1A3CE8 80275408 44820000 */ mtc1 $v0, $f0
/* 1A3CEC 8027540C 00000000 */ nop
/* 1A3CF0 80275410 46800020 */ cvt.s.w $f0, $f0
/* 1A3CF4 80275414 46020002 */ mul.s $f0, $f0, $f2
/* 1A3CF8 80275418 00000000 */ nop
/* 1A3CFC 8027541C 46002086 */ mov.s $f2, $f4
/* 1A3D00 80275420 A6030064 */ sh $v1, 0x64($s0)
/* 1A3D04 80275424 0809D518 */ j .L80275460
/* 1A3D08 80275428 46001201 */ sub.s $f8, $f2, $f0
.L8027542C:
/* 1A3D0C 8027542C 44821000 */ mtc1 $v0, $f2
/* 1A3D10 80275430 00000000 */ nop
/* 1A3D14 80275434 468010A0 */ cvt.s.w $f2, $f2
/* 1A3D18 80275438 86020064 */ lh $v0, 0x64($s0)
/* 1A3D1C 8027543C 46022083 */ div.s $f2, $f4, $f2
/* 1A3D20 80275440 44820000 */ mtc1 $v0, $f0
/* 1A3D24 80275444 00000000 */ nop
/* 1A3D28 80275448 46800020 */ cvt.s.w $f0, $f0
/* 1A3D2C 8027544C 46020002 */ mul.s $f0, $f0, $f2
/* 1A3D30 80275450 00000000 */ nop
/* 1A3D34 80275454 C604004C */ lwc1 $f4, 0x4c($s0)
/* 1A3D38 80275458 E6020040 */ swc1 $f2, 0x40($s0)
/* 1A3D3C 8027545C 46002201 */ sub.s $f8, $f4, $f0
.L80275460:
/* 1A3D40 80275460 86030064 */ lh $v1, 0x64($s0)
/* 1A3D44 80275464 1060029B */ beqz $v1, .L80275ED4
/* 1A3D48 80275468 24020002 */ addiu $v0, $zero, 2
/* 1A3D4C 8027546C 86020064 */ lh $v0, 0x64($s0)
/* 1A3D50 80275470 C602000C */ lwc1 $f2, 0xc($s0)
/* 1A3D54 80275474 3C013FC9 */ lui $at, 0x3fc9
/* 1A3D58 80275478 34210FD0 */ ori $at, $at, 0xfd0
/* 1A3D5C 8027547C 44810000 */ mtc1 $at, $f0
/* 1A3D60 80275480 C6040000 */ lwc1 $f4, ($s0)
/* 1A3D64 80275484 44823000 */ mtc1 $v0, $f6
/* 1A3D68 80275488 00000000 */ nop
/* 1A3D6C 8027548C 468031A0 */ cvt.s.w $f6, $f6
/* 1A3D70 80275490 46060003 */ div.s $f0, $f0, $f6
/* 1A3D74 80275494 46041081 */ sub.s $f2, $f2, $f4
/* 1A3D78 80275498 E600003C */ swc1 $f0, 0x3c($s0)
/* 1A3D7C 8027549C 44830000 */ mtc1 $v1, $f0
/* 1A3D80 802754A0 00000000 */ nop
/* 1A3D84 802754A4 46800020 */ cvt.s.w $f0, $f0
/* 1A3D88 802754A8 46001083 */ div.s $f2, $f2, $f0
/* 1A3D8C 802754AC C6000010 */ lwc1 $f0, 0x10($s0)
/* 1A3D90 802754B0 0000202D */ daddu $a0, $zero, $zero
/* 1A3D94 802754B4 E6020030 */ swc1 $f2, 0x30($s0)
/* 1A3D98 802754B8 C6020004 */ lwc1 $f2, 4($s0)
/* 1A3D9C 802754BC 8E060058 */ lw $a2, 0x58($s0)
/* 1A3DA0 802754C0 46020001 */ sub.s $f0, $f0, $f2
/* 1A3DA4 802754C4 C6040014 */ lwc1 $f4, 0x14($s0)
/* 1A3DA8 802754C8 46003086 */ mov.s $f2, $f6
/* 1A3DAC 802754CC 46020003 */ div.s $f0, $f0, $f2
/* 1A3DB0 802754D0 C6020008 */ lwc1 $f2, 8($s0)
/* 1A3DB4 802754D4 0080282D */ daddu $a1, $a0, $zero
/* 1A3DB8 802754D8 AE000044 */ sw $zero, 0x44($s0)
/* 1A3DBC 802754DC E6000034 */ swc1 $f0, 0x34($s0)
/* 1A3DC0 802754E0 46003006 */ mov.s $f0, $f6
/* 1A3DC4 802754E4 46022101 */ sub.s $f4, $f4, $f2
/* 1A3DC8 802754E8 C6020040 */ lwc1 $f2, 0x40($s0)
/* 1A3DCC 802754EC 46004003 */ div.s $f0, $f8, $f0
/* 1A3DD0 802754F0 46001080 */ add.s $f2, $f2, $f0
/* 1A3DD4 802754F4 46062103 */ div.s $f4, $f4, $f6
/* 1A3DD8 802754F8 E6040038 */ swc1 $f4, 0x38($s0)
/* 1A3DDC 802754FC 0C098F3F */ jal set_animation
/* 1A3DE0 80275500 E6020040 */ swc1 $f2, 0x40($s0)
/* 1A3DE4 80275504 C640014C */ lwc1 $f0, 0x14c($s2)
/* 1A3DE8 80275508 24040160 */ addiu $a0, $zero, 0x160
/* 1A3DEC 8027550C E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A3DF0 80275510 8E460144 */ lw $a2, 0x144($s2)
/* 1A3DF4 80275514 8E470148 */ lw $a3, 0x148($s2)
/* 1A3DF8 80275518 0C052757 */ jal sfx_play_sound_at_position
/* 1A3DFC 8027551C 0000282D */ daddu $a1, $zero, $zero
/* 1A3E00 80275520 86030064 */ lh $v1, 0x64($s0)
/* 1A3E04 80275524 24020168 */ addiu $v0, $zero, 0x168
/* 1A3E08 80275528 14600002 */ bnez $v1, .L80275534
/* 1A3E0C 8027552C 0043001A */ div $zero, $v0, $v1
/* 1A3E10 80275530 0007000D */ break 7
.L80275534:
/* 1A3E14 80275534 2401FFFF */ addiu $at, $zero, -1
/* 1A3E18 80275538 14610004 */ bne $v1, $at, .L8027554C
/* 1A3E1C 8027553C 3C018000 */ lui $at, 0x8000
/* 1A3E20 80275540 14410002 */ bne $v0, $at, .L8027554C
/* 1A3E24 80275544 00000000 */ nop
/* 1A3E28 80275548 0006000D */ break 6
.L8027554C:
/* 1A3E2C 8027554C 00001012 */ mflo $v0
/* 1A3E30 80275550 3C0142B4 */ lui $at, 0x42b4
/* 1A3E34 80275554 44810000 */ mtc1 $at, $f0
/* 1A3E38 80275558 3C014234 */ lui $at, 0x4234
/* 1A3E3C 8027555C 44811000 */ mtc1 $at, $f2
/* 1A3E40 80275560 86030066 */ lh $v1, 0x66($s0)
/* 1A3E44 80275564 E6000024 */ swc1 $f0, 0x24($s0)
/* 1A3E48 80275568 E6020050 */ swc1 $f2, 0x50($s0)
/* 1A3E4C 8027556C 44820000 */ mtc1 $v0, $f0
/* 1A3E50 80275570 00000000 */ nop
/* 1A3E54 80275574 46800020 */ cvt.s.w $f0, $f0
/* 1A3E58 80275578 24020004 */ addiu $v0, $zero, 4
/* 1A3E5C 8027557C 14620005 */ bne $v1, $v0, .L80275594
/* 1A3E60 80275580 E6000028 */ swc1 $f0, 0x28($s0)
/* 1A3E64 80275584 3C014261 */ lui $at, 0x4261
/* 1A3E68 80275588 44810000 */ mtc1 $at, $f0
/* 1A3E6C 8027558C 00000000 */ nop
/* 1A3E70 80275590 E6000050 */ swc1 $f0, 0x50($s0)
.L80275594:
/* 1A3E74 80275594 86020066 */ lh $v0, 0x66($s0)
/* 1A3E78 80275598 AE000018 */ sw $zero, 0x18($s0)
/* 1A3E7C 8027559C 14400013 */ bnez $v0, .L802755EC
/* 1A3E80 802755A0 AE00001C */ sw $zero, 0x1c($s0)
/* 1A3E84 802755A4 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A3E88 802755A8 3C0140C9 */ lui $at, 0x40c9
/* 1A3E8C 802755AC 34210FD0 */ ori $at, $at, 0xfd0
/* 1A3E90 802755B0 44810000 */ mtc1 $at, $f0
/* 1A3E94 802755B4 C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A3E98 802755B8 46006302 */ mul.s $f12, $f12, $f0
/* 1A3E9C 802755BC 00000000 */ nop
/* 1A3EA0 802755C0 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A3EA4 802755C4 4600A521 */ cvt.d.s $f20, $f20
/* 1A3EA8 802755C8 3C0143B4 */ lui $at, 0x43b4
/* 1A3EAC 802755CC 44810000 */ mtc1 $at, $f0
/* 1A3EB0 802755D0 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A3EB4 802755D4 0C00A85B */ jal sin_rad
/* 1A3EB8 802755D8 46006303 */ div.s $f12, $f12, $f0
/* 1A3EBC 802755DC 3C01802A */ lui $at, %hi(D_8029D8E8)
/* 1A3EC0 802755E0 D422D8E8 */ ldc1 $f2, %lo(D_8029D8E8)($at)
/* 1A3EC4 802755E4 0809D58C */ j .L80275630
/* 1A3EC8 802755E8 46000021 */ cvt.d.s $f0, $f0
.L802755EC:
/* 1A3ECC 802755EC C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A3ED0 802755F0 3C0140C9 */ lui $at, 0x40c9
/* 1A3ED4 802755F4 34210FD0 */ ori $at, $at, 0xfd0
/* 1A3ED8 802755F8 44810000 */ mtc1 $at, $f0
/* 1A3EDC 802755FC C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A3EE0 80275600 46006302 */ mul.s $f12, $f12, $f0
/* 1A3EE4 80275604 00000000 */ nop
/* 1A3EE8 80275608 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A3EEC 8027560C 4600A521 */ cvt.d.s $f20, $f20
/* 1A3EF0 80275610 3C0143B4 */ lui $at, 0x43b4
/* 1A3EF4 80275614 44810000 */ mtc1 $at, $f0
/* 1A3EF8 80275618 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A3EFC 8027561C 0C00A85B */ jal sin_rad
/* 1A3F00 80275620 46006303 */ div.s $f12, $f12, $f0
/* 1A3F04 80275624 3C01802A */ lui $at, %hi(D_8029D8F0)
/* 1A3F08 80275628 D422D8F0 */ ldc1 $f2, %lo(D_8029D8F0)($at)
/* 1A3F0C 8027562C 46000021 */ cvt.d.s $f0, $f0
.L80275630:
/* 1A3F10 80275630 46220002 */ mul.d $f0, $f0, $f2
/* 1A3F14 80275634 00000000 */ nop
/* 1A3F18 80275638 46360002 */ mul.d $f0, $f0, $f22
/* 1A3F1C 8027563C 00000000 */ nop
/* 1A3F20 80275640 46360000 */ add.d $f0, $f0, $f22
/* 1A3F24 80275644 4620A500 */ add.d $f20, $f20, $f0
/* 1A3F28 80275648 4620A520 */ cvt.s.d $f20, $f20
/* 1A3F2C 8027564C E6140044 */ swc1 $f20, 0x44($s0)
/* 1A3F30 80275650 0809D676 */ j .L802759D8
/* 1A3F34 80275654 24020001 */ addiu $v0, $zero, 1
.L80275658:
/* 1A3F38 80275658 C6400144 */ lwc1 $f0, 0x144($s2)
/* 1A3F3C 8027565C C618000C */ lwc1 $f24, 0xc($s0)
/* 1A3F40 80275660 C61A0014 */ lwc1 $f26, 0x14($s0)
/* 1A3F44 80275664 E6000000 */ swc1 $f0, ($s0)
/* 1A3F48 80275668 46000586 */ mov.s $f22, $f0
/* 1A3F4C 8027566C 4406C000 */ mfc1 $a2, $f24
/* 1A3F50 80275670 C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A3F54 80275674 4600B306 */ mov.s $f12, $f22
/* 1A3F58 80275678 E6000004 */ swc1 $f0, 4($s0)
/* 1A3F5C 8027567C C640014C */ lwc1 $f0, 0x14c($s2)
/* 1A3F60 80275680 4407D000 */ mfc1 $a3, $f26
/* 1A3F64 80275684 46000506 */ mov.s $f20, $f0
/* 1A3F68 80275688 4600A386 */ mov.s $f14, $f20
/* 1A3F6C 8027568C 0C00A720 */ jal atan2
/* 1A3F70 80275690 E6140008 */ swc1 $f20, 8($s0)
/* 1A3F74 80275694 4600B306 */ mov.s $f12, $f22
/* 1A3F78 80275698 4406C000 */ mfc1 $a2, $f24
/* 1A3F7C 8027569C 4407D000 */ mfc1 $a3, $f26
/* 1A3F80 802756A0 4600A386 */ mov.s $f14, $f20
/* 1A3F84 802756A4 0C00A7B5 */ jal dist2D
/* 1A3F88 802756A8 E6000048 */ swc1 $f0, 0x48($s0)
/* 1A3F8C 802756AC 86020064 */ lh $v0, 0x64($s0)
/* 1A3F90 802756B0 46000106 */ mov.s $f4, $f0
/* 1A3F94 802756B4 14400012 */ bnez $v0, .L80275700
/* 1A3F98 802756B8 E604004C */ swc1 $f4, 0x4c($s0)
/* 1A3F9C 802756BC C6000040 */ lwc1 $f0, 0x40($s0)
/* 1A3FA0 802756C0 C6020040 */ lwc1 $f2, 0x40($s0)
/* 1A3FA4 802756C4 46002003 */ div.s $f0, $f4, $f0
/* 1A3FA8 802756C8 4600028D */ trunc.w.s $f10, $f0
/* 1A3FAC 802756CC 44035000 */ mfc1 $v1, $f10
/* 1A3FB0 802756D0 00000000 */ nop
/* 1A3FB4 802756D4 00031400 */ sll $v0, $v1, 0x10
/* 1A3FB8 802756D8 00021403 */ sra $v0, $v0, 0x10
/* 1A3FBC 802756DC 44820000 */ mtc1 $v0, $f0
/* 1A3FC0 802756E0 00000000 */ nop
/* 1A3FC4 802756E4 46800020 */ cvt.s.w $f0, $f0
/* 1A3FC8 802756E8 46020002 */ mul.s $f0, $f0, $f2
/* 1A3FCC 802756EC 00000000 */ nop
/* 1A3FD0 802756F0 46002086 */ mov.s $f2, $f4
/* 1A3FD4 802756F4 A6030064 */ sh $v1, 0x64($s0)
/* 1A3FD8 802756F8 0809D5CD */ j .L80275734
/* 1A3FDC 802756FC 46001201 */ sub.s $f8, $f2, $f0
.L80275700:
/* 1A3FE0 80275700 44821000 */ mtc1 $v0, $f2
/* 1A3FE4 80275704 00000000 */ nop
/* 1A3FE8 80275708 468010A0 */ cvt.s.w $f2, $f2
/* 1A3FEC 8027570C 86020064 */ lh $v0, 0x64($s0)
/* 1A3FF0 80275710 46022083 */ div.s $f2, $f4, $f2
/* 1A3FF4 80275714 44820000 */ mtc1 $v0, $f0
/* 1A3FF8 80275718 00000000 */ nop
/* 1A3FFC 8027571C 46800020 */ cvt.s.w $f0, $f0
/* 1A4000 80275720 46020002 */ mul.s $f0, $f0, $f2
/* 1A4004 80275724 00000000 */ nop
/* 1A4008 80275728 C604004C */ lwc1 $f4, 0x4c($s0)
/* 1A400C 8027572C E6020040 */ swc1 $f2, 0x40($s0)
/* 1A4010 80275730 46002201 */ sub.s $f8, $f4, $f0
.L80275734:
/* 1A4014 80275734 86030064 */ lh $v1, 0x64($s0)
/* 1A4018 80275738 106001DD */ beqz $v1, .L80275EB0
/* 1A401C 8027573C 0000202D */ daddu $a0, $zero, $zero
/* 1A4020 80275740 8E060060 */ lw $a2, 0x60($s0)
/* 1A4024 80275744 3C013FC9 */ lui $at, 0x3fc9
/* 1A4028 80275748 34210FD0 */ ori $at, $at, 0xfd0
/* 1A402C 8027574C 44810000 */ mtc1 $at, $f0
/* 1A4030 80275750 86020064 */ lh $v0, 0x64($s0)
/* 1A4034 80275754 C602000C */ lwc1 $f2, 0xc($s0)
/* 1A4038 80275758 C6040000 */ lwc1 $f4, ($s0)
/* 1A403C 8027575C 24420001 */ addiu $v0, $v0, 1
/* 1A4040 80275760 44823000 */ mtc1 $v0, $f6
/* 1A4044 80275764 00000000 */ nop
/* 1A4048 80275768 468031A0 */ cvt.s.w $f6, $f6
/* 1A404C 8027576C 46041081 */ sub.s $f2, $f2, $f4
/* 1A4050 80275770 E6000044 */ swc1 $f0, 0x44($s0)
/* 1A4054 80275774 3C013F49 */ lui $at, 0x3f49
/* 1A4058 80275778 34210FD0 */ ori $at, $at, 0xfd0
/* 1A405C 8027577C 44810000 */ mtc1 $at, $f0
/* 1A4060 80275780 86020064 */ lh $v0, 0x64($s0)
/* 1A4064 80275784 46060003 */ div.s $f0, $f0, $f6
/* 1A4068 80275788 E600003C */ swc1 $f0, 0x3c($s0)
/* 1A406C 8027578C 44830000 */ mtc1 $v1, $f0
/* 1A4070 80275790 00000000 */ nop
/* 1A4074 80275794 46800020 */ cvt.s.w $f0, $f0
/* 1A4078 80275798 46001083 */ div.s $f2, $f2, $f0
/* 1A407C 8027579C C6000010 */ lwc1 $f0, 0x10($s0)
/* 1A4080 802757A0 E6020030 */ swc1 $f2, 0x30($s0)
/* 1A4084 802757A4 C6020004 */ lwc1 $f2, 4($s0)
/* 1A4088 802757A8 C6040014 */ lwc1 $f4, 0x14($s0)
/* 1A408C 802757AC 46020001 */ sub.s $f0, $f0, $f2
/* 1A4090 802757B0 44821000 */ mtc1 $v0, $f2
/* 1A4094 802757B4 00000000 */ nop
/* 1A4098 802757B8 468010A0 */ cvt.s.w $f2, $f2
/* 1A409C 802757BC 46001186 */ mov.s $f6, $f2
/* 1A40A0 802757C0 46020003 */ div.s $f0, $f0, $f2
/* 1A40A4 802757C4 C6020008 */ lwc1 $f2, 8($s0)
/* 1A40A8 802757C8 0080282D */ daddu $a1, $a0, $zero
/* 1A40AC 802757CC E6000034 */ swc1 $f0, 0x34($s0)
/* 1A40B0 802757D0 46003006 */ mov.s $f0, $f6
/* 1A40B4 802757D4 46022101 */ sub.s $f4, $f4, $f2
/* 1A40B8 802757D8 C6020040 */ lwc1 $f2, 0x40($s0)
/* 1A40BC 802757DC 46004003 */ div.s $f0, $f8, $f0
/* 1A40C0 802757E0 46001080 */ add.s $f2, $f2, $f0
/* 1A40C4 802757E4 46062103 */ div.s $f4, $f4, $f6
/* 1A40C8 802757E8 E6040038 */ swc1 $f4, 0x38($s0)
/* 1A40CC 802757EC 0C098F3F */ jal set_animation
/* 1A40D0 802757F0 E6020040 */ swc1 $f2, 0x40($s0)
/* 1A40D4 802757F4 86030064 */ lh $v1, 0x64($s0)
/* 1A40D8 802757F8 24020168 */ addiu $v0, $zero, 0x168
/* 1A40DC 802757FC 14600002 */ bnez $v1, .L80275808
/* 1A40E0 80275800 0043001A */ div $zero, $v0, $v1
/* 1A40E4 80275804 0007000D */ break 7
.L80275808:
/* 1A40E8 80275808 2401FFFF */ addiu $at, $zero, -1
/* 1A40EC 8027580C 14610004 */ bne $v1, $at, .L80275820
/* 1A40F0 80275810 3C018000 */ lui $at, 0x8000
/* 1A40F4 80275814 14410002 */ bne $v0, $at, .L80275820
/* 1A40F8 80275818 00000000 */ nop
/* 1A40FC 8027581C 0006000D */ break 6
.L80275820:
/* 1A4100 80275820 00001012 */ mflo $v0
/* 1A4104 80275824 3C0142B4 */ lui $at, 0x42b4
/* 1A4108 80275828 44810000 */ mtc1 $at, $f0
/* 1A410C 8027582C 3C014234 */ lui $at, 0x4234
/* 1A4110 80275830 44811000 */ mtc1 $at, $f2
/* 1A4114 80275834 86030066 */ lh $v1, 0x66($s0)
/* 1A4118 80275838 E6000024 */ swc1 $f0, 0x24($s0)
/* 1A411C 8027583C E6020050 */ swc1 $f2, 0x50($s0)
/* 1A4120 80275840 44820000 */ mtc1 $v0, $f0
/* 1A4124 80275844 00000000 */ nop
/* 1A4128 80275848 46800020 */ cvt.s.w $f0, $f0
/* 1A412C 8027584C 24020005 */ addiu $v0, $zero, 5
/* 1A4130 80275850 14620005 */ bne $v1, $v0, .L80275868
/* 1A4134 80275854 E6000028 */ swc1 $f0, 0x28($s0)
/* 1A4138 80275858 3C014261 */ lui $at, 0x4261
/* 1A413C 8027585C 44810000 */ mtc1 $at, $f0
/* 1A4140 80275860 00000000 */ nop
/* 1A4144 80275864 E6000050 */ swc1 $f0, 0x50($s0)
.L80275868:
/* 1A4148 80275868 86030066 */ lh $v1, 0x66($s0)
/* 1A414C 8027586C 24020001 */ addiu $v0, $zero, 1
/* 1A4150 80275870 AE000018 */ sw $zero, 0x18($s0)
/* 1A4154 80275874 14620013 */ bne $v1, $v0, .L802758C4
/* 1A4158 80275878 AE00001C */ sw $zero, 0x1c($s0)
/* 1A415C 8027587C C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A4160 80275880 3C0140C9 */ lui $at, 0x40c9
/* 1A4164 80275884 34210FD0 */ ori $at, $at, 0xfd0
/* 1A4168 80275888 44810000 */ mtc1 $at, $f0
/* 1A416C 8027588C C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A4170 80275890 46006302 */ mul.s $f12, $f12, $f0
/* 1A4174 80275894 00000000 */ nop
/* 1A4178 80275898 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A417C 8027589C 4600A521 */ cvt.d.s $f20, $f20
/* 1A4180 802758A0 3C0143B4 */ lui $at, 0x43b4
/* 1A4184 802758A4 44810000 */ mtc1 $at, $f0
/* 1A4188 802758A8 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A418C 802758AC 0C00A85B */ jal sin_rad
/* 1A4190 802758B0 46006303 */ div.s $f12, $f12, $f0
/* 1A4194 802758B4 3C01802A */ lui $at, %hi(D_8029D8F8)
/* 1A4198 802758B8 D422D8F8 */ ldc1 $f2, %lo(D_8029D8F8)($at)
/* 1A419C 802758BC 0809D642 */ j .L80275908
/* 1A41A0 802758C0 46000021 */ cvt.d.s $f0, $f0
.L802758C4:
/* 1A41A4 802758C4 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A41A8 802758C8 3C0140C9 */ lui $at, 0x40c9
/* 1A41AC 802758CC 34210FD0 */ ori $at, $at, 0xfd0
/* 1A41B0 802758D0 44810000 */ mtc1 $at, $f0
/* 1A41B4 802758D4 C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A41B8 802758D8 46006302 */ mul.s $f12, $f12, $f0
/* 1A41BC 802758DC 00000000 */ nop
/* 1A41C0 802758E0 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A41C4 802758E4 4600A521 */ cvt.d.s $f20, $f20
/* 1A41C8 802758E8 3C0143B4 */ lui $at, 0x43b4
/* 1A41CC 802758EC 44810000 */ mtc1 $at, $f0
/* 1A41D0 802758F0 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A41D4 802758F4 0C00A85B */ jal sin_rad
/* 1A41D8 802758F8 46006303 */ div.s $f12, $f12, $f0
/* 1A41DC 802758FC 3C01802A */ lui $at, %hi(D_8029D900)
/* 1A41E0 80275900 D422D900 */ ldc1 $f2, %lo(D_8029D900)($at)
/* 1A41E4 80275904 46000021 */ cvt.d.s $f0, $f0
.L80275908:
/* 1A41E8 80275908 46220002 */ mul.d $f0, $f0, $f2
/* 1A41EC 8027590C 00000000 */ nop
/* 1A41F0 80275910 46360002 */ mul.d $f0, $f0, $f22
/* 1A41F4 80275914 00000000 */ nop
/* 1A41F8 80275918 46360000 */ add.d $f0, $f0, $f22
/* 1A41FC 8027591C 4620A500 */ add.d $f20, $f20, $f0
/* 1A4200 80275920 4620A520 */ cvt.s.d $f20, $f20
/* 1A4204 80275924 E6140044 */ swc1 $f20, 0x44($s0)
/* 1A4208 80275928 C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A420C 8027592C C6020050 */ lwc1 $f2, 0x50($s0)
/* 1A4210 80275930 46020001 */ sub.s $f0, $f0, $f2
/* 1A4214 80275934 2402000B */ addiu $v0, $zero, 0xb
/* 1A4218 80275938 0809D676 */ j .L802759D8
/* 1A421C 8027593C E6000004 */ swc1 $f0, 4($s0)
.L80275940:
/* 1A4220 80275940 A6020064 */ sh $v0, 0x64($s0)
/* 1A4224 80275944 86020064 */ lh $v0, 0x64($s0)
/* 1A4228 80275948 24030168 */ addiu $v1, $zero, 0x168
/* 1A422C 8027594C 14400002 */ bnez $v0, .L80275958
/* 1A4230 80275950 0062001A */ div $zero, $v1, $v0
/* 1A4234 80275954 0007000D */ break 7
.L80275958:
/* 1A4238 80275958 2401FFFF */ addiu $at, $zero, -1
/* 1A423C 8027595C 14410004 */ bne $v0, $at, .L80275970
/* 1A4240 80275960 3C018000 */ lui $at, 0x8000
/* 1A4244 80275964 14610002 */ bne $v1, $at, .L80275970
/* 1A4248 80275968 00000000 */ nop
/* 1A424C 8027596C 0006000D */ break 6
.L80275970:
/* 1A4250 80275970 00001812 */ mflo $v1
/* 1A4254 80275974 C6000018 */ lwc1 $f0, 0x18($s0)
/* 1A4258 80275978 C602001C */ lwc1 $f2, 0x1c($s0)
/* 1A425C 8027597C 46020001 */ sub.s $f0, $f0, $f2
/* 1A4260 80275980 3C0142B4 */ lui $at, 0x42b4
/* 1A4264 80275984 44811000 */ mtc1 $at, $f2
/* 1A4268 80275988 00000000 */ nop
/* 1A426C 8027598C E6020024 */ swc1 $f2, 0x24($s0)
/* 1A4270 80275990 3C01802A */ lui $at, %hi(D_8029D908)
/* 1A4274 80275994 D422D908 */ ldc1 $f2, %lo(D_8029D908)($at)
/* 1A4278 80275998 46000005 */ abs.s $f0, $f0
/* 1A427C 8027599C 46000021 */ cvt.d.s $f0, $f0
/* 1A4280 802759A0 46220003 */ div.d $f0, $f0, $f2
/* 1A4284 802759A4 46200020 */ cvt.s.d $f0, $f0
/* 1A4288 802759A8 E6000050 */ swc1 $f0, 0x50($s0)
/* 1A428C 802759AC 44830000 */ mtc1 $v1, $f0
/* 1A4290 802759B0 00000000 */ nop
/* 1A4294 802759B4 46800020 */ cvt.s.w $f0, $f0
/* 1A4298 802759B8 E6000028 */ swc1 $f0, 0x28($s0)
/* 1A429C 802759BC C6400144 */ lwc1 $f0, 0x144($s2)
/* 1A42A0 802759C0 E6000000 */ swc1 $f0, ($s0)
/* 1A42A4 802759C4 C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A42A8 802759C8 E6000004 */ swc1 $f0, 4($s0)
/* 1A42AC 802759CC C640014C */ lwc1 $f0, 0x14c($s2)
/* 1A42B0 802759D0 24020015 */ addiu $v0, $zero, 0x15
/* 1A42B4 802759D4 E6000008 */ swc1 $f0, 8($s0)
.L802759D8:
/* 1A42B8 802759D8 AE620070 */ sw $v0, 0x70($s3)
.L802759DC:
/* 1A42BC 802759DC 8E630070 */ lw $v1, 0x70($s3)
/* 1A42C0 802759E0 24020002 */ addiu $v0, $zero, 2
.L802759E4:
/* 1A42C4 802759E4 10620085 */ beq $v1, $v0, .L80275BFC
/* 1A42C8 802759E8 28620003 */ slti $v0, $v1, 3
/* 1A42CC 802759EC 10400005 */ beqz $v0, .L80275A04
/* 1A42D0 802759F0 24020001 */ addiu $v0, $zero, 1
/* 1A42D4 802759F4 1062000A */ beq $v1, $v0, .L80275A20
/* 1A42D8 802759F8 0000102D */ daddu $v0, $zero, $zero
/* 1A42DC 802759FC 0809D7B5 */ j .L80275ED4
/* 1A42E0 80275A00 00000000 */ nop
.L80275A04:
/* 1A42E4 80275A04 2402000B */ addiu $v0, $zero, 0xb
/* 1A42E8 80275A08 10620090 */ beq $v1, $v0, .L80275C4C
/* 1A42EC 80275A0C 24020015 */ addiu $v0, $zero, 0x15
/* 1A42F0 80275A10 106200F4 */ beq $v1, $v0, .L80275DE4
/* 1A42F4 80275A14 0000102D */ daddu $v0, $zero, $zero
/* 1A42F8 80275A18 0809D7B5 */ j .L80275ED4
/* 1A42FC 80275A1C 00000000 */ nop
.L80275A20:
/* 1A4300 80275A20 86020066 */ lh $v0, 0x66($s0)
/* 1A4304 80275A24 14400013 */ bnez $v0, .L80275A74
/* 1A4308 80275A28 00000000 */ nop
/* 1A430C 80275A2C C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A4310 80275A30 3C0140C9 */ lui $at, 0x40c9
/* 1A4314 80275A34 34210FD0 */ ori $at, $at, 0xfd0
/* 1A4318 80275A38 44810000 */ mtc1 $at, $f0
/* 1A431C 80275A3C C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A4320 80275A40 46006302 */ mul.s $f12, $f12, $f0
/* 1A4324 80275A44 00000000 */ nop
/* 1A4328 80275A48 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A432C 80275A4C 4600A521 */ cvt.d.s $f20, $f20
/* 1A4330 80275A50 3C0143B4 */ lui $at, 0x43b4
/* 1A4334 80275A54 44810000 */ mtc1 $at, $f0
/* 1A4338 80275A58 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A433C 80275A5C 0C00A85B */ jal sin_rad
/* 1A4340 80275A60 46006303 */ div.s $f12, $f12, $f0
/* 1A4344 80275A64 3C01802A */ lui $at, %hi(D_8029D910)
/* 1A4348 80275A68 D422D910 */ ldc1 $f2, %lo(D_8029D910)($at)
/* 1A434C 80275A6C 0809D6AE */ j .L80275AB8
/* 1A4350 80275A70 46000021 */ cvt.d.s $f0, $f0
.L80275A74:
/* 1A4354 80275A74 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A4358 80275A78 3C0140C9 */ lui $at, 0x40c9
/* 1A435C 80275A7C 34210FD0 */ ori $at, $at, 0xfd0
/* 1A4360 80275A80 44810000 */ mtc1 $at, $f0
/* 1A4364 80275A84 C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A4368 80275A88 46006302 */ mul.s $f12, $f12, $f0
/* 1A436C 80275A8C 00000000 */ nop
/* 1A4370 80275A90 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A4374 80275A94 4600A521 */ cvt.d.s $f20, $f20
/* 1A4378 80275A98 3C0143B4 */ lui $at, 0x43b4
/* 1A437C 80275A9C 44810000 */ mtc1 $at, $f0
/* 1A4380 80275AA0 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A4384 80275AA4 0C00A85B */ jal sin_rad
/* 1A4388 80275AA8 46006303 */ div.s $f12, $f12, $f0
/* 1A438C 80275AAC 3C01802A */ lui $at, %hi(D_8029D918)
/* 1A4390 80275AB0 D422D918 */ ldc1 $f2, %lo(D_8029D918)($at)
/* 1A4394 80275AB4 46000021 */ cvt.d.s $f0, $f0
.L80275AB8:
/* 1A4398 80275AB8 46220002 */ mul.d $f0, $f0, $f2
/* 1A439C 80275ABC 00000000 */ nop
/* 1A43A0 80275AC0 46360002 */ mul.d $f0, $f0, $f22
/* 1A43A4 80275AC4 00000000 */ nop
/* 1A43A8 80275AC8 46360000 */ add.d $f0, $f0, $f22
/* 1A43AC 80275ACC 4620A500 */ add.d $f20, $f20, $f0
/* 1A43B0 80275AD0 4620A520 */ cvt.s.d $f20, $f20
/* 1A43B4 80275AD4 E6140044 */ swc1 $f20, 0x44($s0)
/* 1A43B8 80275AD8 C6060000 */ lwc1 $f6, ($s0)
/* 1A43BC 80275ADC C6000030 */ lwc1 $f0, 0x30($s0)
/* 1A43C0 80275AE0 C6040004 */ lwc1 $f4, 4($s0)
/* 1A43C4 80275AE4 46003180 */ add.s $f6, $f6, $f0
/* 1A43C8 80275AE8 C6000034 */ lwc1 $f0, 0x34($s0)
/* 1A43CC 80275AEC C6020008 */ lwc1 $f2, 8($s0)
/* 1A43D0 80275AF0 46002100 */ add.s $f4, $f4, $f0
/* 1A43D4 80275AF4 C6000038 */ lwc1 $f0, 0x38($s0)
/* 1A43D8 80275AF8 46001080 */ add.s $f2, $f2, $f0
/* 1A43DC 80275AFC E6060000 */ swc1 $f6, ($s0)
/* 1A43E0 80275B00 E6040004 */ swc1 $f4, 4($s0)
/* 1A43E4 80275B04 E6020008 */ swc1 $f2, 8($s0)
/* 1A43E8 80275B08 C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A43EC 80275B0C 46003086 */ mov.s $f2, $f6
/* 1A43F0 80275B10 E6000018 */ swc1 $f0, 0x18($s0)
/* 1A43F4 80275B14 E6420144 */ swc1 $f2, 0x144($s2)
/* 1A43F8 80275B18 C60C0044 */ lwc1 $f12, 0x44($s0)
/* 1A43FC 80275B1C 3C013FC9 */ lui $at, 0x3fc9
/* 1A4400 80275B20 34210FD0 */ ori $at, $at, 0xfd0
/* 1A4404 80275B24 4481A000 */ mtc1 $at, $f20
/* 1A4408 80275B28 0C00A85B */ jal sin_rad
/* 1A440C 80275B2C 00000000 */ nop
/* 1A4410 80275B30 46140302 */ mul.s $f12, $f0, $f20
/* 1A4414 80275B34 0C00A85B */ jal sin_rad
/* 1A4418 80275B38 00000000 */ nop
/* 1A441C 80275B3C 46140302 */ mul.s $f12, $f0, $f20
/* 1A4420 80275B40 0C00A85B */ jal sin_rad
/* 1A4424 80275B44 00000000 */ nop
/* 1A4428 80275B48 C6020050 */ lwc1 $f2, 0x50($s0)
/* 1A442C 80275B4C 46001082 */ mul.s $f2, $f2, $f0
/* 1A4430 80275B50 00000000 */ nop
/* 1A4434 80275B54 C6000004 */ lwc1 $f0, 4($s0)
/* 1A4438 80275B58 46020000 */ add.s $f0, $f0, $f2
/* 1A443C 80275B5C E6400148 */ swc1 $f0, 0x148($s2)
/* 1A4440 80275B60 C6000008 */ lwc1 $f0, 8($s0)
/* 1A4444 80275B64 E640014C */ swc1 $f0, 0x14c($s2)
/* 1A4448 80275B68 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A444C 80275B6C C6000028 */ lwc1 $f0, 0x28($s0)
/* 1A4450 80275B70 46006300 */ add.s $f12, $f12, $f0
/* 1A4454 80275B74 C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A4458 80275B78 E600001C */ swc1 $f0, 0x1c($s0)
/* 1A445C 80275B7C 0C00A6C9 */ jal clamp_angle
/* 1A4460 80275B80 E60C0024 */ swc1 $f12, 0x24($s0)
/* 1A4464 80275B84 96020064 */ lhu $v0, 0x64($s0)
/* 1A4468 80275B88 E6000024 */ swc1 $f0, 0x24($s0)
/* 1A446C 80275B8C 2442FFFF */ addiu $v0, $v0, -1
/* 1A4470 80275B90 A6020064 */ sh $v0, 0x64($s0)
/* 1A4474 80275B94 00021400 */ sll $v0, $v0, 0x10
/* 1A4478 80275B98 144000CE */ bnez $v0, .L80275ED4
/* 1A447C 80275B9C 0000102D */ daddu $v0, $zero, $zero
/* 1A4480 80275BA0 C640014C */ lwc1 $f0, 0x14c($s2)
/* 1A4484 80275BA4 24040160 */ addiu $a0, $zero, 0x160
/* 1A4488 80275BA8 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A448C 80275BAC 8E460144 */ lw $a2, 0x144($s2)
/* 1A4490 80275BB0 8E470148 */ lw $a3, 0x148($s2)
/* 1A4494 80275BB4 0C052757 */ jal sfx_play_sound_at_position
/* 1A4498 80275BB8 0000282D */ daddu $a1, $zero, $zero
/* 1A449C 80275BBC 0000202D */ daddu $a0, $zero, $zero
/* 1A44A0 80275BC0 8E06005C */ lw $a2, 0x5c($s0)
/* 1A44A4 80275BC4 0C098F3F */ jal set_animation
/* 1A44A8 80275BC8 0080282D */ daddu $a1, $a0, $zero
/* 1A44AC 80275BCC C6420164 */ lwc1 $f2, 0x164($s2)
/* 1A44B0 80275BD0 3C014284 */ lui $at, 0x4284
/* 1A44B4 80275BD4 44810000 */ mtc1 $at, $f0
/* 1A44B8 80275BD8 2402000E */ addiu $v0, $zero, 0xe
/* 1A44BC 80275BDC 46001081 */ sub.s $f2, $f2, $f0
/* 1A44C0 80275BE0 A642016A */ sh $v0, 0x16a($s2)
/* 1A44C4 80275BE4 24020007 */ addiu $v0, $zero, 7
/* 1A44C8 80275BE8 E6420164 */ swc1 $f2, 0x164($s2)
/* 1A44CC 80275BEC A6020064 */ sh $v0, 0x64($s0)
/* 1A44D0 80275BF0 24020002 */ addiu $v0, $zero, 2
/* 1A44D4 80275BF4 0809D7B4 */ j .L80275ED0
/* 1A44D8 80275BF8 AE620070 */ sw $v0, 0x70($s3)
.L80275BFC:
/* 1A44DC 80275BFC C6420164 */ lwc1 $f2, 0x164($s2)
/* 1A44E0 80275C00 3C014284 */ lui $at, 0x4284
/* 1A44E4 80275C04 44810000 */ mtc1 $at, $f0
/* 1A44E8 80275C08 00000000 */ nop
/* 1A44EC 80275C0C 46001081 */ sub.s $f2, $f2, $f0
/* 1A44F0 80275C10 2402000E */ addiu $v0, $zero, 0xe
/* 1A44F4 80275C14 A642016A */ sh $v0, 0x16a($s2)
/* 1A44F8 80275C18 E6420164 */ swc1 $f2, 0x164($s2)
/* 1A44FC 80275C1C 96020064 */ lhu $v0, 0x64($s0)
/* 1A4500 80275C20 2442FFFF */ addiu $v0, $v0, -1
/* 1A4504 80275C24 A6020064 */ sh $v0, 0x64($s0)
/* 1A4508 80275C28 00021400 */ sll $v0, $v0, 0x10
/* 1A450C 80275C2C 144000A9 */ bnez $v0, .L80275ED4
/* 1A4510 80275C30 0000102D */ daddu $v0, $zero, $zero
/* 1A4514 80275C34 0000202D */ daddu $a0, $zero, $zero
/* 1A4518 80275C38 AE400164 */ sw $zero, 0x164($s2)
/* 1A451C 80275C3C A640016A */ sh $zero, 0x16a($s2)
/* 1A4520 80275C40 8E060060 */ lw $a2, 0x60($s0)
/* 1A4524 80275C44 0809D775 */ j .L80275DD4
/* 1A4528 80275C48 0080282D */ daddu $a1, $a0, $zero
.L80275C4C:
/* 1A452C 80275C4C C6060000 */ lwc1 $f6, ($s0)
/* 1A4530 80275C50 C6000030 */ lwc1 $f0, 0x30($s0)
/* 1A4534 80275C54 C6040004 */ lwc1 $f4, 4($s0)
/* 1A4538 80275C58 46003180 */ add.s $f6, $f6, $f0
/* 1A453C 80275C5C C6000034 */ lwc1 $f0, 0x34($s0)
/* 1A4540 80275C60 C6020008 */ lwc1 $f2, 8($s0)
/* 1A4544 80275C64 46002100 */ add.s $f4, $f4, $f0
/* 1A4548 80275C68 C6000038 */ lwc1 $f0, 0x38($s0)
/* 1A454C 80275C6C 46001080 */ add.s $f2, $f2, $f0
/* 1A4550 80275C70 E6060000 */ swc1 $f6, ($s0)
/* 1A4554 80275C74 E6040004 */ swc1 $f4, 4($s0)
/* 1A4558 80275C78 E6020008 */ swc1 $f2, 8($s0)
/* 1A455C 80275C7C C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A4560 80275C80 46003086 */ mov.s $f2, $f6
/* 1A4564 80275C84 E6000018 */ swc1 $f0, 0x18($s0)
/* 1A4568 80275C88 E6420144 */ swc1 $f2, 0x144($s2)
/* 1A456C 80275C8C 0C00A85B */ jal sin_rad
/* 1A4570 80275C90 C60C0044 */ lwc1 $f12, 0x44($s0)
/* 1A4574 80275C94 C6020050 */ lwc1 $f2, 0x50($s0)
/* 1A4578 80275C98 46001082 */ mul.s $f2, $f2, $f0
/* 1A457C 80275C9C 00000000 */ nop
/* 1A4580 80275CA0 C6000004 */ lwc1 $f0, 4($s0)
/* 1A4584 80275CA4 46020000 */ add.s $f0, $f0, $f2
/* 1A4588 80275CA8 E6400148 */ swc1 $f0, 0x148($s2)
/* 1A458C 80275CAC C6000008 */ lwc1 $f0, 8($s0)
/* 1A4590 80275CB0 E640014C */ swc1 $f0, 0x14c($s2)
/* 1A4594 80275CB4 C6020010 */ lwc1 $f2, 0x10($s0)
/* 1A4598 80275CB8 C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A459C 80275CBC 4602003C */ c.lt.s $f0, $f2
/* 1A45A0 80275CC0 00000000 */ nop
/* 1A45A4 80275CC4 45030001 */ bc1tl .L80275CCC
/* 1A45A8 80275CC8 E6420148 */ swc1 $f2, 0x148($s2)
.L80275CCC:
/* 1A45AC 80275CCC C6400148 */ lwc1 $f0, 0x148($s2)
/* 1A45B0 80275CD0 86030066 */ lh $v1, 0x66($s0)
/* 1A45B4 80275CD4 24020001 */ addiu $v0, $zero, 1
/* 1A45B8 80275CD8 14620013 */ bne $v1, $v0, .L80275D28
/* 1A45BC 80275CDC E600001C */ swc1 $f0, 0x1c($s0)
/* 1A45C0 80275CE0 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A45C4 80275CE4 3C0140C9 */ lui $at, 0x40c9
/* 1A45C8 80275CE8 34210FD0 */ ori $at, $at, 0xfd0
/* 1A45CC 80275CEC 44810000 */ mtc1 $at, $f0
/* 1A45D0 80275CF0 C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A45D4 80275CF4 46006302 */ mul.s $f12, $f12, $f0
/* 1A45D8 80275CF8 00000000 */ nop
/* 1A45DC 80275CFC C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A45E0 80275D00 4600A521 */ cvt.d.s $f20, $f20
/* 1A45E4 80275D04 3C0143B4 */ lui $at, 0x43b4
/* 1A45E8 80275D08 44810000 */ mtc1 $at, $f0
/* 1A45EC 80275D0C 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A45F0 80275D10 0C00A85B */ jal sin_rad
/* 1A45F4 80275D14 46006303 */ div.s $f12, $f12, $f0
/* 1A45F8 80275D18 3C01802A */ lui $at, %hi(D_8029D920)
/* 1A45FC 80275D1C D422D920 */ ldc1 $f2, %lo(D_8029D920)($at)
/* 1A4600 80275D20 0809D75B */ j .L80275D6C
/* 1A4604 80275D24 46000021 */ cvt.d.s $f0, $f0
.L80275D28:
/* 1A4608 80275D28 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A460C 80275D2C 3C0140C9 */ lui $at, 0x40c9
/* 1A4610 80275D30 34210FD0 */ ori $at, $at, 0xfd0
/* 1A4614 80275D34 44810000 */ mtc1 $at, $f0
/* 1A4618 80275D38 C6140044 */ lwc1 $f20, 0x44($s0)
/* 1A461C 80275D3C 46006302 */ mul.s $f12, $f12, $f0
/* 1A4620 80275D40 00000000 */ nop
/* 1A4624 80275D44 C616003C */ lwc1 $f22, 0x3c($s0)
/* 1A4628 80275D48 4600A521 */ cvt.d.s $f20, $f20
/* 1A462C 80275D4C 3C0143B4 */ lui $at, 0x43b4
/* 1A4630 80275D50 44810000 */ mtc1 $at, $f0
/* 1A4634 80275D54 4600B5A1 */ cvt.d.s $f22, $f22
/* 1A4638 80275D58 0C00A85B */ jal sin_rad
/* 1A463C 80275D5C 46006303 */ div.s $f12, $f12, $f0
/* 1A4640 80275D60 3C01802A */ lui $at, %hi(D_8029D928)
/* 1A4644 80275D64 D422D928 */ ldc1 $f2, %lo(D_8029D928)($at)
/* 1A4648 80275D68 46000021 */ cvt.d.s $f0, $f0
.L80275D6C:
/* 1A464C 80275D6C 46220002 */ mul.d $f0, $f0, $f2
/* 1A4650 80275D70 00000000 */ nop
/* 1A4654 80275D74 46360002 */ mul.d $f0, $f0, $f22
/* 1A4658 80275D78 00000000 */ nop
/* 1A465C 80275D7C 46360000 */ add.d $f0, $f0, $f22
/* 1A4660 80275D80 4620A500 */ add.d $f20, $f20, $f0
/* 1A4664 80275D84 4620A520 */ cvt.s.d $f20, $f20
/* 1A4668 80275D88 E6140044 */ swc1 $f20, 0x44($s0)
/* 1A466C 80275D8C C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A4670 80275D90 C6000028 */ lwc1 $f0, 0x28($s0)
/* 1A4674 80275D94 46006300 */ add.s $f12, $f12, $f0
/* 1A4678 80275D98 0C00A6C9 */ jal clamp_angle
/* 1A467C 80275D9C E60C0024 */ swc1 $f12, 0x24($s0)
/* 1A4680 80275DA0 96020064 */ lhu $v0, 0x64($s0)
/* 1A4684 80275DA4 E6000024 */ swc1 $f0, 0x24($s0)
/* 1A4688 80275DA8 2442FFFF */ addiu $v0, $v0, -1
/* 1A468C 80275DAC A6020064 */ sh $v0, 0x64($s0)
/* 1A4690 80275DB0 00021400 */ sll $v0, $v0, 0x10
/* 1A4694 80275DB4 14400047 */ bnez $v0, .L80275ED4
/* 1A4698 80275DB8 0000102D */ daddu $v0, $zero, $zero
/* 1A469C 80275DBC 0000202D */ daddu $a0, $zero, $zero
/* 1A46A0 80275DC0 0080282D */ daddu $a1, $a0, $zero
/* 1A46A4 80275DC4 3C060001 */ lui $a2, 1
/* 1A46A8 80275DC8 C6000010 */ lwc1 $f0, 0x10($s0)
/* 1A46AC 80275DCC 34C6000C */ ori $a2, $a2, 0xc
/* 1A46B0 80275DD0 E6400148 */ swc1 $f0, 0x148($s2)
.L80275DD4:
/* 1A46B4 80275DD4 0C098F3F */ jal set_animation
/* 1A46B8 80275DD8 00000000 */ nop
/* 1A46BC 80275DDC 0809D7B5 */ j .L80275ED4
/* 1A46C0 80275DE0 24020001 */ addiu $v0, $zero, 1
.L80275DE4:
/* 1A46C4 80275DE4 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A46C8 80275DE8 3C0140C9 */ lui $at, 0x40c9
/* 1A46CC 80275DEC 34210FD0 */ ori $at, $at, 0xfd0
/* 1A46D0 80275DF0 4481B000 */ mtc1 $at, $f22
/* 1A46D4 80275DF4 00000000 */ nop
/* 1A46D8 80275DF8 46166302 */ mul.s $f12, $f12, $f22
/* 1A46DC 80275DFC 00000000 */ nop
/* 1A46E0 80275E00 C6140000 */ lwc1 $f20, ($s0)
/* 1A46E4 80275E04 3C0143B4 */ lui $at, 0x43b4
/* 1A46E8 80275E08 4481C000 */ mtc1 $at, $f24
/* 1A46EC 80275E0C 4600A521 */ cvt.d.s $f20, $f20
/* 1A46F0 80275E10 0C00A85B */ jal sin_rad
/* 1A46F4 80275E14 46186303 */ div.s $f12, $f12, $f24
/* 1A46F8 80275E18 C6020050 */ lwc1 $f2, 0x50($s0)
/* 1A46FC 80275E1C 46001082 */ mul.s $f2, $f2, $f0
/* 1A4700 80275E20 00000000 */ nop
/* 1A4704 80275E24 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A4708 80275E28 46166302 */ mul.s $f12, $f12, $f22
/* 1A470C 80275E2C 00000000 */ nop
/* 1A4710 80275E30 3C01802A */ lui $at, %hi(D_8029D930)
/* 1A4714 80275E34 D420D930 */ ldc1 $f0, %lo(D_8029D930)($at)
/* 1A4718 80275E38 460010A1 */ cvt.d.s $f2, $f2
/* 1A471C 80275E3C 46201083 */ div.d $f2, $f2, $f0
/* 1A4720 80275E40 4622A500 */ add.d $f20, $f20, $f2
/* 1A4724 80275E44 46186303 */ div.s $f12, $f12, $f24
/* 1A4728 80275E48 4620A520 */ cvt.s.d $f20, $f20
/* 1A472C 80275E4C 0C00A85B */ jal sin_rad
/* 1A4730 80275E50 E6140000 */ swc1 $f20, ($s0)
/* 1A4734 80275E54 C6020050 */ lwc1 $f2, 0x50($s0)
/* 1A4738 80275E58 46001082 */ mul.s $f2, $f2, $f0
/* 1A473C 80275E5C 00000000 */ nop
/* 1A4740 80275E60 C60C0024 */ lwc1 $f12, 0x24($s0)
/* 1A4744 80275E64 C6000028 */ lwc1 $f0, 0x28($s0)
/* 1A4748 80275E68 46006300 */ add.s $f12, $f12, $f0
/* 1A474C 80275E6C C6000004 */ lwc1 $f0, 4($s0)
/* 1A4750 80275E70 46020001 */ sub.s $f0, $f0, $f2
/* 1A4754 80275E74 E60C0024 */ swc1 $f12, 0x24($s0)
/* 1A4758 80275E78 0C00A6C9 */ jal clamp_angle
/* 1A475C 80275E7C E6000004 */ swc1 $f0, 4($s0)
/* 1A4760 80275E80 C6020000 */ lwc1 $f2, ($s0)
/* 1A4764 80275E84 E6000024 */ swc1 $f0, 0x24($s0)
/* 1A4768 80275E88 E6420144 */ swc1 $f2, 0x144($s2)
/* 1A476C 80275E8C C6000004 */ lwc1 $f0, 4($s0)
/* 1A4770 80275E90 E6400148 */ swc1 $f0, 0x148($s2)
/* 1A4774 80275E94 C6000008 */ lwc1 $f0, 8($s0)
/* 1A4778 80275E98 E640014C */ swc1 $f0, 0x14c($s2)
/* 1A477C 80275E9C 3C02800E */ lui $v0, %hi(gBattleStatus)
/* 1A4780 80275EA0 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0)
/* 1A4784 80275EA4 30422000 */ andi $v0, $v0, 0x2000
/* 1A4788 80275EA8 10400003 */ beqz $v0, .L80275EB8
/* 1A478C 80275EAC 00000000 */ nop
.L80275EB0:
/* 1A4790 80275EB0 0809D7B5 */ j .L80275ED4
/* 1A4794 80275EB4 24020002 */ addiu $v0, $zero, 2
.L80275EB8:
/* 1A4798 80275EB8 96030064 */ lhu $v1, 0x64($s0)
/* 1A479C 80275EBC 2463FFFF */ addiu $v1, $v1, -1
/* 1A47A0 80275EC0 A6030064 */ sh $v1, 0x64($s0)
/* 1A47A4 80275EC4 00031C00 */ sll $v1, $v1, 0x10
/* 1A47A8 80275EC8 10600002 */ beqz $v1, .L80275ED4
/* 1A47AC 80275ECC 24020001 */ addiu $v0, $zero, 1
.L80275ED0:
/* 1A47B0 80275ED0 0000102D */ daddu $v0, $zero, $zero
.L80275ED4:
/* 1A47B4 80275ED4 8FBF0028 */ lw $ra, 0x28($sp)
/* 1A47B8 80275ED8 8FB30024 */ lw $s3, 0x24($sp)
/* 1A47BC 80275EDC 8FB20020 */ lw $s2, 0x20($sp)
/* 1A47C0 80275EE0 8FB1001C */ lw $s1, 0x1c($sp)
/* 1A47C4 80275EE4 8FB00018 */ lw $s0, 0x18($sp)
/* 1A47C8 80275EE8 D7BA0048 */ ldc1 $f26, 0x48($sp)
/* 1A47CC 80275EEC D7B80040 */ ldc1 $f24, 0x40($sp)
/* 1A47D0 80275EF0 D7B60038 */ ldc1 $f22, 0x38($sp)
/* 1A47D4 80275EF4 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 1A47D8 80275EF8 03E00008 */ jr $ra
/* 1A47DC 80275EFC 27BD0050 */ addiu $sp, $sp, 0x50

File diff suppressed because it is too large Load Diff

View File

@ -422,8 +422,8 @@ glabel func_802A1518_7974D8
/* 797AC0 802A1B00 2442FFFF */ addiu $v0, $v0, -1 /* 797AC0 802A1B00 2442FFFF */ addiu $v0, $v0, -1
/* 797AC4 802A1B04 2403001E */ addiu $v1, $zero, 0x1e /* 797AC4 802A1B04 2403001E */ addiu $v1, $zero, 0x1e
/* 797AC8 802A1B08 24120007 */ addiu $s2, $zero, 7 /* 797AC8 802A1B08 24120007 */ addiu $s2, $zero, 7
/* 797ACC 802A1B0C 3C02802A */ lui $v0, %hi(D_802A3834) /* 797ACC 802A1B0C 3C02802A */ lui $v0, %hi(D_802A3834 - 0x4)
/* 797AD0 802A1B10 24423834 */ addiu $v0, $v0, %lo(D_802A3834) /* 797AD0 802A1B10 24423834 */ addiu $v0, $v0, %lo(D_802A3834 - 0x4)
/* 797AD4 802A1B14 E63C000C */ swc1 $f28, 0xc($s1) /* 797AD4 802A1B14 E63C000C */ swc1 $f28, 0xc($s1)
/* 797AD8 802A1B18 E6380010 */ swc1 $f24, 0x10($s1) /* 797AD8 802A1B18 E6380010 */ swc1 $f24, 0x10($s1)
/* 797ADC 802A1B1C E63A0014 */ swc1 $f26, 0x14($s1) /* 797ADC 802A1B1C E63A0014 */ swc1 $f26, 0x14($s1)
@ -884,8 +884,8 @@ glabel func_802A1518_7974D8
/* 79816C 802A21AC 24120007 */ addiu $s2, $zero, 7 /* 79816C 802A21AC 24120007 */ addiu $s2, $zero, 7
/* 798170 802A21B0 AC60003C */ sw $zero, 0x3c($v1) /* 798170 802A21B0 AC60003C */ sw $zero, 0x3c($v1)
/* 798174 802A21B4 8C42000C */ lw $v0, 0xc($v0) /* 798174 802A21B4 8C42000C */ lw $v0, 0xc($v0)
/* 798178 802A21B8 3C03802A */ lui $v1, %hi(D_802A3834) /* 798178 802A21B8 3C03802A */ lui $v1, %hi(D_802A3834 - 0x4)
/* 79817C 802A21BC 24633834 */ addiu $v1, $v1, %lo(D_802A3834) /* 79817C 802A21BC 24633834 */ addiu $v1, $v1, %lo(D_802A3834 - 0x4)
/* 798180 802A21C0 AC400024 */ sw $zero, 0x24($v0) /* 798180 802A21C0 AC400024 */ sw $zero, 0x24($v0)
.L802A21C4: .L802A21C4:
/* 798184 802A21C4 AC640000 */ sw $a0, ($v1) /* 798184 802A21C4 AC640000 */ sw $a0, ($v1)