* 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_158 = 0x00000158,
SOUND_15E = 0x0000015E,
SOUND_160 = 0x00000160,
SOUND_161 = 0x00000161,
SOUND_162 = 0x00000162,
SOUND_ENTER_PIPE = 0x00000163,

View File

@ -117,10 +117,6 @@ extern SpriteShadingProfile* D_80151328;
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 gGameState;

View File

@ -766,12 +766,10 @@ void add_xz_vec3f_copy2(Vec3f* vector, f32 speed, f32 angleDeg) {
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) {
f32 temp_f0;
f32 temp_f20;
f32 temp_f20_2;
f32 theta;
f32 sinTheta;
f32 cosTheta;
if (var0 == 2) {
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;
} else if (D_802938A8++ >= 4) {
D_802938A8 = 0;
temp_f20 = DEG_TO_RAD(clamp_angle(-angleDeg));
temp_f20_2 = sin_rad(temp_f20);
temp_f0 = cos_rad(temp_f20);
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);
theta = DEG_TO_RAD(clamp_angle(-angleDeg));
sinTheta = sin_rad(theta);
cosTheta = cos_rad(theta);
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* part = &actor->partsTable[0];

View File

@ -1079,7 +1079,7 @@ ApiStatus func_80273444(Evt* script, s32 isInitialCall) {
script->functionTemp[0] = FALSE;
}
if (!script->functionTemp[0]) {
if (script->functionTemp[0] == 0) {
player->state.moveTime = evt_get_variable(script, *args++);
player->state.moveArcAmplitude = 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->velocity -= playerState->acceleration;
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 = clamp_angle(playerState->unk_24);
player->currentPos.x = playerState->currentPos.x;
@ -1711,11 +1711,702 @@ ApiStatus func_802749F8(Evt* script, s32 isInitialCall) {
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) {
Bytecode* args = script->ptrReadPos;

View File

@ -1,33 +1,14 @@
#include "common.h"
#include "script_api/battle.h"
#include "effects.h"
#define NAMESPACE battle_star_star_beam
#include "common/StarPower.inc.c"
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) {
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;
}
ApiStatus func_802A2468_798428(Evt* script, s32 isInitialCall);
ApiStatus func_802A247C_79843C(Evt* script, s32 isInitialCall);
EvtScript N(802A24F0) = {
EVT_CALL(GetOwnerID, LVarA)
@ -283,19 +264,18 @@ EvtScript N(802A33A8) = {
EVT_END
};
// TODO: type this data used by func_802A1518_7974D8
s32 D_802A3514_7994D4[] = {
0x00000023, 0x00000000, 0x00000005, 0x0000000A, 0x0000000F, 0x00000014, 0x00000019, 0x0000001E,
};
s32 D_802A3514_7994D4[] = { 35, 0, 5, 10, 15, 20, 25, 30 };
s32 D_802A3534_7994F4[] = { 35, 0, 5, 10, 15, 20, 25, 30 };
s32 D_802A3534_7994F4[] = {
0x00000023, 0x00000000, 0x00000005, 0x0000000A, 0x0000000F, 0x00000014, 0x00000019, 0x0000001E,
};
s32 D_802A3554_799514[] = {
0x42B20000, 0x43340000, 0x00000000, 0xC2100000, 0x43340000, 0x00000000, 0x434C0000, 0x43340000,
0x00000000, 0x41F00000, 0x42C20000, 0x43EE8000, 0x43660000, 0x42A20000, 0x00000000, 0x43010000,
0x43340000, 0x00000000, 0xC2700000, 0x43340000, 0x00000000, 0xC36A0000, 0x421C0000, 0x00000000,
Vec3f D_802A3554_799514[] = {
{ 89.0f, 180.0f, 0.0f },
{ -36.0f, 180.0f, 0.0f },
{ 204.0f, 180.0f, 0.0f },
{ 30.0f, 97.0f, 477.0f },
{ 230.0f, 81.0f, 0.0f },
{ 129.0f, 180.0f, 0.0f },
{ -60.0f, 180.0f, 0.0f },
{ -234.0f, 39.0f, 0.0f },
};
EvtScript N(usePower) = {
@ -337,3 +317,492 @@ EvtScript N(usePower) = {
EVT_RETURN
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 typing import Optional
from Levenshtein import ratio
import os
import sys
@ -121,7 +120,6 @@ def parse_map() -> OrderedDict[str, Symbol]:
return syms
@dataclass
class Match:
query_offset: int
@ -131,6 +129,16 @@ class Match:
def __str__(self):
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]:
ret = []
@ -146,6 +154,30 @@ def get_hashes(bytes: Bytes, window_size: int) -> list[int]:
ret.append(bytes.normalized[i : i + window_size])
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):
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)
matches: list[Match] = get_pair_matches(query_hashes, sym_hashes)
for match in matches:
print(f"{query} {symbol} {match}")
if matches:
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))
def do_query(query, window_size):
matches = 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()
get_matches(query, window_size)
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("-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)
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
/* 797AC4 802A1B04 2403001E */ addiu $v1, $zero, 0x1e
/* 797AC8 802A1B08 24120007 */ addiu $s2, $zero, 7
/* 797ACC 802A1B0C 3C02802A */ lui $v0, %hi(D_802A3834)
/* 797AD0 802A1B10 24423834 */ addiu $v0, $v0, %lo(D_802A3834)
/* 797ACC 802A1B0C 3C02802A */ lui $v0, %hi(D_802A3834 - 0x4)
/* 797AD0 802A1B10 24423834 */ addiu $v0, $v0, %lo(D_802A3834 - 0x4)
/* 797AD4 802A1B14 E63C000C */ swc1 $f28, 0xc($s1)
/* 797AD8 802A1B18 E6380010 */ swc1 $f24, 0x10($s1)
/* 797ADC 802A1B1C E63A0014 */ swc1 $f26, 0x14($s1)
@ -884,8 +884,8 @@ glabel func_802A1518_7974D8
/* 79816C 802A21AC 24120007 */ addiu $s2, $zero, 7
/* 798170 802A21B0 AC60003C */ sw $zero, 0x3c($v1)
/* 798174 802A21B4 8C42000C */ lw $v0, 0xc($v0)
/* 798178 802A21B8 3C03802A */ lui $v1, %hi(D_802A3834)
/* 79817C 802A21BC 24633834 */ addiu $v1, $v1, %lo(D_802A3834)
/* 798178 802A21B8 3C03802A */ lui $v1, %hi(D_802A3834 - 0x4)
/* 79817C 802A21BC 24633834 */ addiu $v1, $v1, %lo(D_802A3834 - 0x4)
/* 798180 802A21C0 AC400024 */ sw $zero, 0x24($v0)
.L802A21C4:
/* 798184 802A21C4 AC640000 */ sw $a0, ($v1)