matched some battle movement functions (#714)

* match 5 functions

* move update_lerp_battle declaration

* PR suggestions
This commit is contained in:
Unnunu 2022-05-22 10:48:09 +03:00 committed by GitHub
parent 1e91e60cb6
commit 6815d6b296
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 618 additions and 980 deletions

View File

@ -1591,9 +1591,9 @@ typedef struct ActorPartMovement {
/* 0x24 */ f32 jumpScale;
/* 0x28 */ f32 moveSpeed;
/* 0x2C */ f32 unk_2C;
/* 0x30 */ f32 unk_30;
/* 0x34 */ f32 unk_34;
/* 0x38 */ s16 unk_38;
/* 0x30 */ f32 angle;
/* 0x34 */ f32 distance;
/* 0x38 */ s16 moveTime;
/* 0x3A */ s16 unk_3A;
/* 0x3C */ s32 unk_3C;
/* 0x40 */ char unk_40[0xC];

View File

@ -552,6 +552,7 @@ void func_802D74C0(f32 x, f32 y, f32 z, s32 arg3);
void show_damage_popup(f32 x, f32 y, f32 z, s32 damageAmount, s32);
void add_xz_vec3f(Vec3f* vector, f32 speed, f32 angleDeg);
void add_xz_vec3f_copy1(Vec3f* vector, f32 speed, f32 angleDeg);
void add_xz_vec3f_copy2(Vec3f* vector, f32 speed, f32 angleDeg);
void play_movement_dust_effects(s32 var0, f32 xPos, f32 yPos, f32 zPos, f32 angleDeg);
void func_80138D88(s32, s32, s32, s32, f32);

View File

@ -1054,15 +1054,340 @@ ApiStatus LandJump(Evt* script, s32 isInitialCall) {
return ApiStatus_BLOCK;
}
INCLUDE_ASM(s32, "1A5830", FallToGoal);
ApiStatus FallToGoal(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
Actor* actor;
ActorState* state;
f32 x, y, z;
f32 goalX, goalY, goalZ;
if (isInitialCall) {
script->functionTemp[0] = 0;
}
if (script->functionTemp[0] == 0) {
s32 actorID = evt_get_variable(script, *args++);
if (actorID == ACTOR_SELF) {
actorID = script->owner1.enemyID;
}
actor = get_actor(actorID);
state = &actor->state;
script->functionTempPtr[1] = actor;
actor->state.moveTime = evt_get_variable(script, *args++);
actor->state.currentPos.x = actor->currentPos.x;
actor->state.currentPos.y = actor->currentPos.y;
actor->state.currentPos.z = actor->currentPos.z;
x = actor->state.currentPos.x;
y = actor->state.currentPos.y;
z = actor->state.currentPos.z;
goalX = actor->state.goalPos.x;
goalY = actor->state.goalPos.y;
goalZ = actor->state.goalPos.z;
actor->state.angle = atan2(x, z, goalX, goalZ);
actor->state.distance = dist2D(x, z, goalX, goalZ);
y = goalY - y;
if (actor->state.moveTime == 0) {
actor->state.moveTime = actor->state.distance / actor->state.speed;
} else {
actor->state.speed = actor->state.distance / actor->state.moveTime;
}
state->velocity = 0.0f;
state->acceleration = (y / state->moveTime - state->velocity) / (-state->moveTime * 0.5);
if (actor->actorTypeData1[4] != 0) {
sfx_play_sound_at_position(actor->actorTypeData1[4], 0, actor->currentPos.x, actor->currentPos.y, actor->currentPos.z);
}
script->functionTemp[0] = 1;
}
actor = script->functionTempPtr[1];
actor->state.currentPos.y += actor->state.velocity;
actor->state.velocity -= actor->state.acceleration;
add_xz_vec3f(&actor->state.currentPos, actor->state.speed, actor->state.angle);
actor->currentPos.x = actor->state.currentPos.x;
actor->currentPos.y = actor->state.currentPos.y;
actor->currentPos.z = actor->state.currentPos.z;
actor->state.moveTime--;
if (actor->state.moveTime <= 0) {
play_movement_dust_effects(2, actor->state.goalPos.x, actor->state.goalPos.y, actor->state.goalPos.z, actor->state.angle);
actor->currentPos.x = actor->state.goalPos.x;
actor->currentPos.y = actor->state.goalPos.y;
actor->currentPos.z = actor->state.goalPos.z;
return ApiStatus_DONE1;
} else {
return ApiStatus_BLOCK;
}
}
INCLUDE_ASM(s32, "1A5830", RunToGoal);
#ifdef NON_EQUIVALENT
s32 IdleRunToGoal(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
Actor* actor;
ActorMovement* fly;
f32 x1, z1, x2, z2;
if (isInitialCall) {
script->functionTemp[0] = FALSE;
}
if (!script->functionTemp[0]) {
s32 actorID = evt_get_variable(script, *args++);
if (actorID == ACTOR_SELF) {
actorID = script->owner1.actorID;
}
actor = get_actor(actorID);
script->functionTempPtr[1] = actor;
fly = &actor->fly;
actor->flyTime = evt_get_variable(script, *args++);
actor->fly.currentPos.x = actor->currentPos.x;
actor->fly.currentPos.y = actor->currentPos.y;
actor->fly.currentPos.z = actor->currentPos.z;
actor->fly.unk_18.x = actor->fly.goalPos.x;
actor->fly.unk_18.y = actor->fly.goalPos.y;
actor->fly.unk_18.z = actor->fly.goalPos.z;
x1 = actor->fly.currentPos.x;
z1 = actor->fly.currentPos.z;
x2 = actor->fly.goalPos.x;
z2 = actor->fly.goalPos.z;
actor->fly.angle = atan2(x1, z1, x2, z2);
actor->fly.distance = dist2D(x1, z1, x2, z2);
if (actor->flyTime == 0) {
actor->flyTime = actor->fly.distance / actor->fly.speed;
if (actor->flyTime == 0) {
actor->flyTime = 1;
}
actor->fly.speed += (actor->fly.distance - actor->flyTime * actor->fly.speed) / actor->flyTime;
} else {
actor->fly.speed = actor->fly.distance / actor->flyTime;
}
if (actor->actorTypeData1b[0] >= 0) {
fly->distance = actor->actorTypeData1b[0] + 1;
} else {
fly->distance = ~actor->actorTypeData1b[0];
}
script->functionTemp[0] = TRUE;
}
actor = script->functionTempPtr[1];
fly = &actor->fly;
add_xz_vec3f_copy2(&fly->currentPos, actor->fly.speed, actor->fly.angle);
if (actor->fly.speed < 4.0f) {
play_movement_dust_effects(0, actor->fly.currentPos.x, actor->fly.currentPos.y, actor->fly.currentPos.z, actor->fly.angle);
} else {
play_movement_dust_effects(1, actor->fly.currentPos.x, actor->fly.currentPos.y, actor->fly.currentPos.z, actor->fly.angle);
}
actor->currentPos.x = fly->currentPos.x;
actor->currentPos.z = fly->currentPos.z;
actor->flyTime--;
if (actor->flyTime > 0) {
return ApiStatus_BLOCK;
} else {
actor->currentPos.x = fly->unk_18.x;
actor->currentPos.z = fly->unk_18.z;
if (actor->actorTypeData1[0] != 0 && actor->actorTypeData1[1] == 0) {
snd_stop_sound(actor->actorTypeData1[0]);
}
return ApiStatus_DONE1;
}
}
#else
INCLUDE_ASM(s32, "1A5830", IdleRunToGoal);
#endif
INCLUDE_ASM(s32, "1A5830", JumpPartTo);
s32 JumpPartTo(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
Actor* actor;
ActorPart* part;
ActorPartMovement* movement;
s32 actorID, partIndex;
f32 x, y, z;
f32 x1, y1, z1;
f32 deltaDist;
INCLUDE_ASM(s32, "1A5830", FallPartTo);
if (isInitialCall) {
script->functionTemp[0] = 0;
}
if (script->functionTemp[0] == 0) {
actorID = evt_get_variable(script, *args++);
if (actorID == ACTOR_SELF) {
actorID = script->owner1.actorID;
}
partIndex = evt_get_variable(script, *args++);
actor = get_actor(actorID);
part = get_actor_part(actor, partIndex);
script->functionTempPtr[1] = actor;
script->functionTempPtr[2] = part;
movement = part->movement;
x = evt_get_variable(script, *args++);
y = evt_get_variable(script, *args++);
z = evt_get_variable(script, *args++);
movement->goalPos.x = x;
movement->goalPos.y = y;
movement->goalPos.z = z;
movement->moveTime = evt_get_variable(script, *args++);
script->functionTemp[3] = evt_get_variable(script, *args++);
x1 = movement->goalPos.x;
y1 = movement->goalPos.y;
z1 = movement->goalPos.z;
movement->unk_00.x = part->absolutePosition.x;
movement->unk_00.y = part->absolutePosition.y;
movement->unk_00.z = part->absolutePosition.z;
x = movement->unk_00.x;
y = movement->unk_00.y;
z = movement->unk_00.z;
movement->angle = atan2(x, z, x1, z1);
movement->distance = dist2D(x, z, x1, z1);
y = y1 - y;
if (movement->moveTime == 0) {
movement->moveTime = movement->distance / movement->moveSpeed;
deltaDist = movement->distance - movement->moveTime * movement->moveSpeed;
} else {
movement->moveSpeed = movement->distance / movement->moveTime;
deltaDist = movement->distance - movement->moveTime * movement->moveSpeed;
}
movement->moveSpeed += deltaDist / movement->moveTime;
movement->unk_2C = movement->jumpScale * movement->moveTime * 0.5f + y / movement->moveTime;
if (part->partTypeData[4] != 0) {
sfx_play_sound_at_position(part->partTypeData[4], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
script->functionTemp[0] = 1;
}
part = script->functionTempPtr[2];
movement = part->movement;
movement->unk_00.y += movement->unk_2C;
movement->unk_2C -= movement->jumpScale;
add_xz_vec3f_copy1(&movement->unk_00, movement->moveSpeed, movement->angle);
part->absolutePosition.x = movement->unk_00.x;
part->absolutePosition.y = movement->unk_00.y;
part->absolutePosition.z = movement->unk_00.z;
movement->moveTime--;
if (movement->moveTime <= 0) {
if (script->functionTemp[3] != 0) {
play_movement_dust_effects(2, movement->goalPos.x, movement->goalPos.y, movement->goalPos.z, movement->angle);
}
part->absolutePosition.x = movement->goalPos.x;
part->absolutePosition.y = movement->goalPos.y;
part->absolutePosition.z = movement->goalPos.z;
return ApiStatus_DONE1;
} else {
return ApiStatus_BLOCK;
}
}
s32 FallPartTo(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
Actor* actor;
ActorPart* part;
ActorPartMovement* movement;
s32 actorID, partIndex;
f32 x, y, z;
f32 x1, y1, z1;
if (isInitialCall) {
script->functionTemp[0] = 0;
}
if (script->functionTemp[0] == 0) {
actorID = evt_get_variable(script, *args++);
if (actorID == ACTOR_SELF) {
actorID = script->owner1.actorID;
}
partIndex = evt_get_variable(script, *args++);
actor = get_actor(actorID);
part = get_actor_part(actor, partIndex);
script->functionTempPtr[1] = actor;
script->functionTempPtr[2] = part;
movement = part->movement;
x = evt_get_variable(script, *args++);
y = evt_get_variable(script, *args++);
z = evt_get_variable(script, *args++);
movement->goalPos.x = x;
movement->goalPos.y = y;
movement->goalPos.z = z;
movement->moveTime = evt_get_variable(script, *args++);
x1 = movement->goalPos.x;
y1 = movement->goalPos.y;
z1 = movement->goalPos.z;
movement->unk_00.x = part->absolutePosition.x;
movement->unk_00.y = part->absolutePosition.y;
movement->unk_00.z = part->absolutePosition.z;
x = movement->unk_00.x;
y = movement->unk_00.y;
z = movement->unk_00.z;
movement->angle = atan2(x, z, x1, z1);
movement->distance = dist2D(x, z, x1, z1);
y = y1 - y;
if (movement->moveTime == 0) {
movement->moveTime = movement->distance / movement->moveSpeed;
} else {
movement->moveSpeed = movement->distance / movement->moveTime;
}
movement->unk_2C = 0.0f;
movement->jumpScale = (y / movement->moveTime - movement->unk_2C) / (-movement->moveTime * 0.5);
if (part->partTypeData[4] != 0) {
sfx_play_sound_at_position(part->partTypeData[4], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
script->functionTemp[0] = 1;
}
part = script->functionTempPtr[2];
movement = part->movement;
movement->unk_00.y += movement->unk_2C;
movement->unk_2C -= movement->jumpScale;
add_xz_vec3f_copy1(&movement->unk_00, movement->moveSpeed, movement->angle);
part->absolutePosition.x = movement->unk_00.x;
part->absolutePosition.y = movement->unk_00.y;
part->absolutePosition.z = movement->unk_00.z;
movement->moveTime--;
if (movement->moveTime <= 0) {
play_movement_dust_effects(2, movement->goalPos.x, movement->goalPos.y, movement->goalPos.z, movement->angle);
part->absolutePosition.x = movement->goalPos.x;
part->absolutePosition.y = movement->goalPos.y;
part->absolutePosition.z = movement->goalPos.z;
return ApiStatus_DONE1;
} else {
return ApiStatus_BLOCK;
}
}
s32 LandJumpPart(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
@ -1097,7 +1422,7 @@ s32 LandJumpPart(Evt* script, s32 isInitialCall) {
movement = part->movement;
movement->unk_00.y += movement->unk_2C;
movement->unk_2C -= movement->jumpScale;
add_xz_vec3f_copy1(&movement->unk_00, movement->moveSpeed, movement->unk_30);
add_xz_vec3f_copy1(&movement->unk_00, movement->moveSpeed, movement->angle);
part->absolutePosition.x = movement->unk_00.x;
part->absolutePosition.y = movement->unk_00.y;
part->absolutePosition.z = movement->unk_00.z;
@ -1111,15 +1436,291 @@ s32 LandJumpPart(Evt* script, s32 isInitialCall) {
return ApiStatus_BLOCK;
}
INCLUDE_ASM(s32, "1A5830", RunPartTo);
s32 RunPartTo(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
Actor* actor;
ActorPart* part;
ActorPartMovement* movement;
s32 actorID, partIndex;
f32 x, y, z;
f32 x1, y1, z1;
f32 deltaDist;
if (isInitialCall) {
script->functionTemp[0] = 0;
}
if (script->functionTemp[0] == 0) {
actorID = evt_get_variable(script, *args++);
if (actorID == ACTOR_SELF) {
actorID = script->owner1.actorID;
}
partIndex = evt_get_variable(script, *args++);
actor = get_actor(actorID);
part = get_actor_part(actor, partIndex);
script->functionTempPtr[1] = actor;
script->functionTempPtr[2] = part;
movement = part->movement;
x = evt_get_variable(script, *args++);
y = evt_get_variable(script, *args++);
z = evt_get_variable(script, *args++);
movement->goalPos.x = x;
movement->goalPos.y = y;
movement->goalPos.z = z;
movement->moveTime = evt_get_variable(script, *args++);
x1 = movement->goalPos.x;
y1 = movement->goalPos.y;
z1 = movement->goalPos.z;
movement->unk_00.x = part->absolutePosition.x;
movement->unk_00.y = part->absolutePosition.y;
movement->unk_00.z = part->absolutePosition.z;
x = movement->unk_00.x;
y = movement->unk_00.y;
z = movement->unk_00.z;
movement->angle = atan2(x, z, x1, z1);
movement->distance = dist2D(x, z, x1, z1);
if (movement->moveTime == 0) {
movement->moveTime = movement->distance / movement->moveSpeed;
} else {
movement->moveSpeed = movement->distance / movement->moveTime;
}
if (part->actorTypeData2b[0] >= 0) {
movement->distance = part->actorTypeData2b[0] + 1;
} else {
movement->distance = ~part->actorTypeData2b[0];
}
if (part->partTypeData[0] != 0 && part->partTypeData[1] == 0) {
sfx_play_sound_at_position(part->partTypeData[0], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
script->functionTemp[0] = 1;
}
part = script->functionTempPtr[2];
movement = part->movement;
actor = script->functionTempPtr[1];
add_xz_vec3f_copy1(&movement->unk_00, movement->moveSpeed, movement->angle);
if (movement->moveSpeed < 4.0f) {
play_movement_dust_effects(0, movement->unk_00.x, movement->unk_00.y, movement->unk_00.z, movement->angle);
} else {
play_movement_dust_effects(1, movement->unk_00.x, movement->unk_00.y, movement->unk_00.z, movement->angle);
}
part->absolutePosition.x = movement->unk_00.x;
part->absolutePosition.y = movement->unk_00.y;
part->absolutePosition.z = movement->unk_00.z;
if (part->partTypeData[0] != 0 && part->partTypeData[1] != 0) {
if (part->actorTypeData2b[0] >= 0) {
movement->distance += movement->moveSpeed;
if (part->actorTypeData2b[0] < movement->distance) {
actor->footStepCounter++;
movement->distance = 0;
if (actor->footStepCounter % 2 != 0) {
if (part->partTypeData[0] != 0) {
sfx_play_sound_at_position(part->partTypeData[0], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
} else {
if (part->partTypeData[1] != 0) {
sfx_play_sound_at_position(part->partTypeData[1], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
}
}
} else {
movement->distance += 1.0f;
if (-part->actorTypeData2b[0] <= movement->distance) {
actor->footStepCounter++;
movement->distance = 0;
if (actor->footStepCounter % 2 != 0) {
if (part->partTypeData[0] != 0) {
sfx_play_sound_at_position(part->partTypeData[0], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
} else {
if (part->partTypeData[1] != 0) {
sfx_play_sound_at_position(part->partTypeData[1], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
}
}
}
}
movement->moveTime--;
if (movement->moveTime > 0) {
return ApiStatus_BLOCK;
} else {
part->absolutePosition.x = movement->goalPos.x;
part->absolutePosition.z = movement->goalPos.z;
if (part->partTypeData[0] != 0 && part->partTypeData[1] == 0) {
snd_stop_sound(part->partTypeData[0]);
}
return ApiStatus_DONE1;
}
}
f32 update_lerp_battle(s32 easing, f32 start, f32 end, s32 elapsed, s32 duration);
INCLUDE_ASM(s32, "1A5830", update_lerp_battle);
INCLUDE_ASM(s32, "1A5830", FlyToGoal);
INCLUDE_ASM(s32, "1A5830", IdleFlyToGoal);
#ifdef NON_MATCHING
s32 FlyPartTo(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
Actor* actor;
ActorPart* part;
ActorPartMovement* partMovement;
s32 actorID, partIndex;
f32 f2, f4;
f32 d1, d2, d3, delta;
f32 d1_, d2_, d3_, delta_;
if (isInitialCall) {
actorID = evt_get_variable(script, *args++);
if (actorID == ACTOR_SELF) {
actorID = script->owner1.actorID;
}
partIndex = evt_get_variable(script, *args++);
actor = get_actor(actorID);
part = get_actor_part(actor, partIndex);
script->functionTempPtr[1] = actor;
script->functionTempPtr[2] = part;
partMovement = part->movement;
partMovement->goalPos.x = evt_get_variable(script, *args++);
partMovement->goalPos.y = evt_get_variable(script, *args++);
partMovement->goalPos.z = evt_get_variable(script, *args++);
partMovement->moveTime = evt_get_variable(script, *args++);
partMovement->unk_3A = evt_get_variable(script, *args++);
script->functionTemp[3] = evt_get_variable(script, *args++);
partMovement->unk_18.x = partMovement->unk_00.x = part->absolutePosition.x;
d1_ = SQ((partMovement->unk_00.x - partMovement->goalPos.x));
partMovement->unk_18.y = partMovement->unk_00.y = part->absolutePosition.y;
d2_ = SQ((partMovement->unk_00.y - partMovement->goalPos.z));
partMovement->unk_18.z = partMovement->unk_00.z = part->absolutePosition.z;
d3_ = SQ((partMovement->unk_00.z - partMovement->goalPos.z));
partMovement->distance = sqrtf(d1_ + d2_ + d3_);
if (partMovement->moveTime == 0) {
partMovement->moveTime = partMovement->distance / partMovement->moveSpeed;
} else {
partMovement->moveSpeed = partMovement->distance / partMovement->moveTime;
}
if (partMovement->moveTime == 0) {
return ApiStatus_DONE2;
}
if (part->partTypeData[2] != 0 && part->partTypeData[3] == 0) {
sfx_play_sound_at_position(part->partTypeData[2], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
partMovement->unk_3C = 0;
partMovement->angle = 0.0f;
if (part->actorTypeData2b[1] >= 0) {
partMovement->unk_2C = actor->actorTypeData1b[1] + 1;
} else {
partMovement->unk_2C = ~actor->actorTypeData1b[1];
}
}
part = script->functionTempPtr[2];
partMovement = part->movement;
actor = script->functionTempPtr[1];
partMovement->unk_00.x = update_lerp_battle(script->functionTemp[3], partMovement->unk_18.x, partMovement->goalPos.x, partMovement->unk_3C, partMovement->moveTime);
partMovement->unk_00.y = update_lerp_battle(script->functionTemp[3], partMovement->unk_18.y, partMovement->goalPos.y, partMovement->unk_3C, partMovement->moveTime);
partMovement->unk_00.z = update_lerp_battle(script->functionTemp[3], partMovement->unk_18.z, partMovement->goalPos.z, partMovement->unk_3C, partMovement->moveTime);
partMovement->unk_3C++;
if (partMovement->moveTime < partMovement->unk_3C) {
part->absolutePosition.x = partMovement->goalPos.x;
part->absolutePosition.y = partMovement->goalPos.y;
part->absolutePosition.z = partMovement->goalPos.z;
if (part->partTypeData[2] != 0 && part->partTypeData[3] == 0) {
snd_stop_sound(part->partTypeData[2]);
}
return ApiStatus_DONE2;
}
if (part->partTypeData[2] != 0 && part->partTypeData[3] != 0) {
if (part->actorTypeData2b[1] >= 0) {
partMovement->unk_2C += partMovement->moveSpeed;
if (part->actorTypeData2b[1] < partMovement->unk_2C) {
actor->footStepCounter++;
partMovement->unk_2C = 0;
if (actor->footStepCounter % 2 != 0) {
if (part->partTypeData[2] != 0) {
sfx_play_sound_at_position(part->partTypeData[2], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
} else {
if (part->partTypeData[3] != 0) {
sfx_play_sound_at_position(part->partTypeData[3], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
}
}
} else {
partMovement->unk_2C += 1.0f;
if (-part->actorTypeData2b[1] <= partMovement->unk_2C) {
actor->footStepCounter++;
partMovement->unk_2C = 0;
if (actor->footStepCounter % 2 != 0) {
if (part->partTypeData[2] != 0) {
sfx_play_sound_at_position(part->partTypeData[2], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
} else {
if (part->partTypeData[3] != 0) {
sfx_play_sound_at_position(part->partTypeData[3], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
}
}
}
}
}
delta = partMovement->goalPos.x;
delta -= partMovement->unk_00.x;
d1 = SQ(delta);
delta = partMovement->goalPos.y - partMovement->unk_00.y;
d2 = SQ(delta);
delta = partMovement->goalPos.z - partMovement->unk_00.z;
d3 = SQ(delta);
f2 = sqrtf(d1 + d2 + d3);
//f2 = sqrtf(SQ((partMovement->unk_00.x - partMovement->goalPos.x)) + SQ((partMovement->unk_00.y - partMovement->goalPos.y)) + SQ((partMovement->unk_00.z - partMovement->goalPos.z)));
if (f2 == 0.0f) {
f2 = 1.0f;
}
if (partMovement->distance == 0.0f) {
partMovement->distance = 1.0f;
}
f4 = sin_deg((1.0 - f2 / partMovement->distance) * 180.0);
if (partMovement->unk_3A == 0) {
f4 = 0.0f;
}
if (partMovement->unk_3A < 0) {
f4 = -f4 * (-partMovement->unk_3A);
}
if (partMovement->unk_3A > 0) {
f4 = f4 * partMovement->unk_3A;
}
part->absolutePosition.x = partMovement->unk_00.x;
part->absolutePosition.y = partMovement->unk_00.y + f4;
part->absolutePosition.z = partMovement->unk_00.z;
return ApiStatus_BLOCK;
}
#else
INCLUDE_ASM(s32, "1A5830", FlyPartTo);
#endif
ApiStatus GetLastEvent(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
@ -1220,8 +1821,6 @@ ApiStatus GetEnemyMaxHP(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
// battlestatus shtuff
#ifdef NON_EQUIVALENT
ApiStatus RemoveActor(Evt* script, s32 isInitialCall) {
BattleStatus* battleStatus = &gBattleStatus;
EncounterStatus* currentEncounter = &gCurrentEncounter;
@ -1229,29 +1828,30 @@ ApiStatus RemoveActor(Evt* script, s32 isInitialCall) {
s32 actorID = evt_get_variable(script, *args++);
Actor* actor;
s32 i;
s32 numEnemies;
s16* enemyIDs;
if (actorID == ACTOR_SELF) {
actorID = script->owner1.actorID;
}
actor = get_actor(actorID);
numEnemies = battleStatus->numEnemyActors;
enemyIDs = battleStatus->enemyIDs;
for (i = 0; i < battleStatus->numEnemyActors; i++) {
if (actor == battleStatus->enemyActors[(u8)battleStatus->enemyIDs[i]]) {
battleStatus->enemyIDs[i] = -1;
for (i = 0; i < numEnemies; i++) {
if (actor == battleStatus->enemyActors[enemyIDs[i] & 0xFF]) {
enemyIDs[i] = -1;
}
}
currentEncounter->coinsEarned += actor->extraCoinBonus;
currentEncounter->coinsEarned += actor->actorBlueprint->coinReward;
btl_delete_actor(actor);
battleStatus->enemyActors[(u8)actorID] = NULL;
battleStatus->enemyActors[actorID & 0xFF] = NULL;
return ApiStatus_DONE2;
}
#else
INCLUDE_ASM(s32, "1A5830", RemoveActor);
#endif
ApiStatus DropStarPoints(Evt* script, s32 isInitialCall) {
BattleStatus* battleStatus = &gBattleStatus;

View File

@ -1,205 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel FallPartTo
/* 1A9134 8027A854 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 1A9138 8027A858 AFB30024 */ sw $s3, 0x24($sp)
/* 1A913C 8027A85C 0080982D */ daddu $s3, $a0, $zero
/* 1A9140 8027A860 AFBF0028 */ sw $ra, 0x28($sp)
/* 1A9144 8027A864 AFB20020 */ sw $s2, 0x20($sp)
/* 1A9148 8027A868 AFB1001C */ sw $s1, 0x1c($sp)
/* 1A914C 8027A86C AFB00018 */ sw $s0, 0x18($sp)
/* 1A9150 8027A870 F7BE0058 */ sdc1 $f30, 0x58($sp)
/* 1A9154 8027A874 F7BC0050 */ sdc1 $f28, 0x50($sp)
/* 1A9158 8027A878 F7BA0048 */ sdc1 $f26, 0x48($sp)
/* 1A915C 8027A87C F7B80040 */ sdc1 $f24, 0x40($sp)
/* 1A9160 8027A880 F7B60038 */ sdc1 $f22, 0x38($sp)
/* 1A9164 8027A884 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 1A9168 8027A888 8E72000C */ lw $s2, 0xc($s3)
/* 1A916C 8027A88C 54A00001 */ bnel $a1, $zero, .L8027A894
/* 1A9170 8027A890 AE600070 */ sw $zero, 0x70($s3)
.L8027A894:
/* 1A9174 8027A894 8E620070 */ lw $v0, 0x70($s3)
/* 1A9178 8027A898 1440007C */ bnez $v0, .L8027AA8C
/* 1A917C 8027A89C 00000000 */ nop
/* 1A9180 8027A8A0 8E450000 */ lw $a1, ($s2)
/* 1A9184 8027A8A4 26520004 */ addiu $s2, $s2, 4
/* 1A9188 8027A8A8 0C0B1EAF */ jal evt_get_variable
/* 1A918C 8027A8AC 0260202D */ daddu $a0, $s3, $zero
/* 1A9190 8027A8B0 0040802D */ daddu $s0, $v0, $zero
/* 1A9194 8027A8B4 2402FF81 */ addiu $v0, $zero, -0x7f
/* 1A9198 8027A8B8 16020002 */ bne $s0, $v0, .L8027A8C4
/* 1A919C 8027A8BC 00000000 */ nop
/* 1A91A0 8027A8C0 8E700148 */ lw $s0, 0x148($s3)
.L8027A8C4:
/* 1A91A4 8027A8C4 8E450000 */ lw $a1, ($s2)
/* 1A91A8 8027A8C8 26520004 */ addiu $s2, $s2, 4
/* 1A91AC 8027A8CC 0C0B1EAF */ jal evt_get_variable
/* 1A91B0 8027A8D0 0260202D */ daddu $a0, $s3, $zero
/* 1A91B4 8027A8D4 0200202D */ daddu $a0, $s0, $zero
/* 1A91B8 8027A8D8 0C09A75B */ jal get_actor
/* 1A91BC 8027A8DC 0040882D */ daddu $s1, $v0, $zero
/* 1A91C0 8027A8E0 0040802D */ daddu $s0, $v0, $zero
/* 1A91C4 8027A8E4 0200202D */ daddu $a0, $s0, $zero
/* 1A91C8 8027A8E8 0C099117 */ jal get_actor_part
/* 1A91CC 8027A8EC 0220282D */ daddu $a1, $s1, $zero
/* 1A91D0 8027A8F0 0040882D */ daddu $s1, $v0, $zero
/* 1A91D4 8027A8F4 AE700074 */ sw $s0, 0x74($s3)
/* 1A91D8 8027A8F8 AE710078 */ sw $s1, 0x78($s3)
/* 1A91DC 8027A8FC 8E450000 */ lw $a1, ($s2)
/* 1A91E0 8027A900 26520004 */ addiu $s2, $s2, 4
/* 1A91E4 8027A904 8E300010 */ lw $s0, 0x10($s1)
/* 1A91E8 8027A908 0C0B1EAF */ jal evt_get_variable
/* 1A91EC 8027A90C 0260202D */ daddu $a0, $s3, $zero
/* 1A91F0 8027A910 4482E000 */ mtc1 $v0, $f28
/* 1A91F4 8027A914 00000000 */ nop
/* 1A91F8 8027A918 4680E720 */ cvt.s.w $f28, $f28
/* 1A91FC 8027A91C 8E450000 */ lw $a1, ($s2)
/* 1A9200 8027A920 26520004 */ addiu $s2, $s2, 4
/* 1A9204 8027A924 0C0B1EAF */ jal evt_get_variable
/* 1A9208 8027A928 0260202D */ daddu $a0, $s3, $zero
/* 1A920C 8027A92C 4482F000 */ mtc1 $v0, $f30
/* 1A9210 8027A930 00000000 */ nop
/* 1A9214 8027A934 4680F7A0 */ cvt.s.w $f30, $f30
/* 1A9218 8027A938 8E450000 */ lw $a1, ($s2)
/* 1A921C 8027A93C 26520004 */ addiu $s2, $s2, 4
/* 1A9220 8027A940 0C0B1EAF */ jal evt_get_variable
/* 1A9224 8027A944 0260202D */ daddu $a0, $s3, $zero
/* 1A9228 8027A948 44820000 */ mtc1 $v0, $f0
/* 1A922C 8027A94C 00000000 */ nop
/* 1A9230 8027A950 46800020 */ cvt.s.w $f0, $f0
/* 1A9234 8027A954 E61C000C */ swc1 $f28, 0xc($s0)
/* 1A9238 8027A958 E61E0010 */ swc1 $f30, 0x10($s0)
/* 1A923C 8027A95C E6000014 */ swc1 $f0, 0x14($s0)
/* 1A9240 8027A960 8E450000 */ lw $a1, ($s2)
/* 1A9244 8027A964 0C0B1EAF */ jal evt_get_variable
/* 1A9248 8027A968 0260202D */ daddu $a0, $s3, $zero
/* 1A924C 8027A96C A6020038 */ sh $v0, 0x38($s0)
/* 1A9250 8027A970 C620002C */ lwc1 $f0, 0x2c($s1)
/* 1A9254 8027A974 C618000C */ lwc1 $f24, 0xc($s0)
/* 1A9258 8027A978 C61A0014 */ lwc1 $f26, 0x14($s0)
/* 1A925C 8027A97C C6160010 */ lwc1 $f22, 0x10($s0)
/* 1A9260 8027A980 E6000000 */ swc1 $f0, ($s0)
/* 1A9264 8027A984 46000706 */ mov.s $f28, $f0
/* 1A9268 8027A988 4406C000 */ mfc1 $a2, $f24
/* 1A926C 8027A98C 4407D000 */ mfc1 $a3, $f26
/* 1A9270 8027A990 C6200030 */ lwc1 $f0, 0x30($s1)
/* 1A9274 8027A994 4600E306 */ mov.s $f12, $f28
/* 1A9278 8027A998 E6000004 */ swc1 $f0, 4($s0)
/* 1A927C 8027A99C C6340034 */ lwc1 $f20, 0x34($s1)
/* 1A9280 8027A9A0 46000786 */ mov.s $f30, $f0
/* 1A9284 8027A9A4 4600A386 */ mov.s $f14, $f20
/* 1A9288 8027A9A8 0C00A720 */ jal atan2
/* 1A928C 8027A9AC E6140008 */ swc1 $f20, 8($s0)
/* 1A9290 8027A9B0 4600E306 */ mov.s $f12, $f28
/* 1A9294 8027A9B4 4600A386 */ mov.s $f14, $f20
/* 1A9298 8027A9B8 4406C000 */ mfc1 $a2, $f24
/* 1A929C 8027A9BC 4407D000 */ mfc1 $a3, $f26
/* 1A92A0 8027A9C0 461EB781 */ sub.s $f30, $f22, $f30
/* 1A92A4 8027A9C4 0C00A7B5 */ jal dist2D
/* 1A92A8 8027A9C8 E6000030 */ swc1 $f0, 0x30($s0)
/* 1A92AC 8027A9CC 86020038 */ lh $v0, 0x38($s0)
/* 1A92B0 8027A9D0 46000086 */ mov.s $f2, $f0
/* 1A92B4 8027A9D4 14400007 */ bnez $v0, .L8027A9F4
/* 1A92B8 8027A9D8 E6020034 */ swc1 $f2, 0x34($s0)
/* 1A92BC 8027A9DC C6000028 */ lwc1 $f0, 0x28($s0)
/* 1A92C0 8027A9E0 46001003 */ div.s $f0, $f2, $f0
/* 1A92C4 8027A9E4 4600018D */ trunc.w.s $f6, $f0
/* 1A92C8 8027A9E8 44023000 */ mfc1 $v0, $f6
/* 1A92CC 8027A9EC 0809EA82 */ j .L8027AA08
/* 1A92D0 8027A9F0 A6020038 */ sh $v0, 0x38($s0)
.L8027A9F4:
/* 1A92D4 8027A9F4 44820000 */ mtc1 $v0, $f0
/* 1A92D8 8027A9F8 00000000 */ nop
/* 1A92DC 8027A9FC 46800020 */ cvt.s.w $f0, $f0
/* 1A92E0 8027AA00 46001003 */ div.s $f0, $f2, $f0
/* 1A92E4 8027AA04 E6000028 */ swc1 $f0, 0x28($s0)
.L8027AA08:
/* 1A92E8 8027AA08 86030038 */ lh $v1, 0x38($s0)
/* 1A92EC 8027AA0C 3C013FE0 */ lui $at, 0x3fe0
/* 1A92F0 8027AA10 44810800 */ mtc1 $at, $f1
/* 1A92F4 8027AA14 44800000 */ mtc1 $zero, $f0
/* 1A92F8 8027AA18 00031023 */ negu $v0, $v1
/* 1A92FC 8027AA1C 44821000 */ mtc1 $v0, $f2
/* 1A9300 8027AA20 00000000 */ nop
/* 1A9304 8027AA24 468010A1 */ cvt.d.w $f2, $f2
/* 1A9308 8027AA28 46201082 */ mul.d $f2, $f2, $f0
/* 1A930C 8027AA2C 00000000 */ nop
/* 1A9310 8027AA30 AE00002C */ sw $zero, 0x2c($s0)
/* 1A9314 8027AA34 C604002C */ lwc1 $f4, 0x2c($s0)
/* 1A9318 8027AA38 44830000 */ mtc1 $v1, $f0
/* 1A931C 8027AA3C 00000000 */ nop
/* 1A9320 8027AA40 46800020 */ cvt.s.w $f0, $f0
/* 1A9324 8027AA44 4600F003 */ div.s $f0, $f30, $f0
/* 1A9328 8027AA48 46040001 */ sub.s $f0, $f0, $f4
/* 1A932C 8027AA4C 46000021 */ cvt.d.s $f0, $f0
/* 1A9330 8027AA50 46220003 */ div.d $f0, $f0, $f2
/* 1A9334 8027AA54 46200020 */ cvt.s.d $f0, $f0
/* 1A9338 8027AA58 E6000024 */ swc1 $f0, 0x24($s0)
/* 1A933C 8027AA5C 8E2200B4 */ lw $v0, 0xb4($s1)
/* 1A9340 8027AA60 10400009 */ beqz $v0, .L8027AA88
/* 1A9344 8027AA64 24020001 */ addiu $v0, $zero, 1
/* 1A9348 8027AA68 C6200034 */ lwc1 $f0, 0x34($s1)
/* 1A934C 8027AA6C E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A9350 8027AA70 8E2400B4 */ lw $a0, 0xb4($s1)
/* 1A9354 8027AA74 8E26002C */ lw $a2, 0x2c($s1)
/* 1A9358 8027AA78 8E270030 */ lw $a3, 0x30($s1)
/* 1A935C 8027AA7C 0C052757 */ jal sfx_play_sound_at_position
/* 1A9360 8027AA80 0000282D */ daddu $a1, $zero, $zero
/* 1A9364 8027AA84 24020001 */ addiu $v0, $zero, 1
.L8027AA88:
/* 1A9368 8027AA88 AE620070 */ sw $v0, 0x70($s3)
.L8027AA8C:
/* 1A936C 8027AA8C 8E710078 */ lw $s1, 0x78($s3)
/* 1A9370 8027AA90 8E300010 */ lw $s0, 0x10($s1)
/* 1A9374 8027AA94 C6040004 */ lwc1 $f4, 4($s0)
/* 1A9378 8027AA98 C600002C */ lwc1 $f0, 0x2c($s0)
/* 1A937C 8027AA9C 8E050028 */ lw $a1, 0x28($s0)
/* 1A9380 8027AAA0 46002100 */ add.s $f4, $f4, $f0
/* 1A9384 8027AAA4 C6020024 */ lwc1 $f2, 0x24($s0)
/* 1A9388 8027AAA8 8E060030 */ lw $a2, 0x30($s0)
/* 1A938C 8027AAAC 46020001 */ sub.s $f0, $f0, $f2
/* 1A9390 8027AAB0 0200202D */ daddu $a0, $s0, $zero
/* 1A9394 8027AAB4 E6040004 */ swc1 $f4, 4($s0)
/* 1A9398 8027AAB8 0C099070 */ jal add_xz_vec3f_copy1
/* 1A939C 8027AABC E600002C */ swc1 $f0, 0x2c($s0)
/* 1A93A0 8027AAC0 C6000000 */ lwc1 $f0, ($s0)
/* 1A93A4 8027AAC4 E620002C */ swc1 $f0, 0x2c($s1)
/* 1A93A8 8027AAC8 C6000004 */ lwc1 $f0, 4($s0)
/* 1A93AC 8027AACC E6200030 */ swc1 $f0, 0x30($s1)
/* 1A93B0 8027AAD0 C6000008 */ lwc1 $f0, 8($s0)
/* 1A93B4 8027AAD4 E6200034 */ swc1 $f0, 0x34($s1)
/* 1A93B8 8027AAD8 96020038 */ lhu $v0, 0x38($s0)
/* 1A93BC 8027AADC 2442FFFF */ addiu $v0, $v0, -1
/* 1A93C0 8027AAE0 A6020038 */ sh $v0, 0x38($s0)
/* 1A93C4 8027AAE4 00021400 */ sll $v0, $v0, 0x10
/* 1A93C8 8027AAE8 1C40000F */ bgtz $v0, .L8027AB28
/* 1A93CC 8027AAEC 0000102D */ daddu $v0, $zero, $zero
/* 1A93D0 8027AAF0 C6000030 */ lwc1 $f0, 0x30($s0)
/* 1A93D4 8027AAF4 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A93D8 8027AAF8 8E05000C */ lw $a1, 0xc($s0)
/* 1A93DC 8027AAFC 8E060010 */ lw $a2, 0x10($s0)
/* 1A93E0 8027AB00 8E070014 */ lw $a3, 0x14($s0)
/* 1A93E4 8027AB04 0C0990BC */ jal play_movement_dust_effects
/* 1A93E8 8027AB08 24040002 */ addiu $a0, $zero, 2
/* 1A93EC 8027AB0C C600000C */ lwc1 $f0, 0xc($s0)
/* 1A93F0 8027AB10 E620002C */ swc1 $f0, 0x2c($s1)
/* 1A93F4 8027AB14 C6000010 */ lwc1 $f0, 0x10($s0)
/* 1A93F8 8027AB18 E6200030 */ swc1 $f0, 0x30($s1)
/* 1A93FC 8027AB1C C6000014 */ lwc1 $f0, 0x14($s0)
/* 1A9400 8027AB20 24020001 */ addiu $v0, $zero, 1
/* 1A9404 8027AB24 E6200034 */ swc1 $f0, 0x34($s1)
.L8027AB28:
/* 1A9408 8027AB28 8FBF0028 */ lw $ra, 0x28($sp)
/* 1A940C 8027AB2C 8FB30024 */ lw $s3, 0x24($sp)
/* 1A9410 8027AB30 8FB20020 */ lw $s2, 0x20($sp)
/* 1A9414 8027AB34 8FB1001C */ lw $s1, 0x1c($sp)
/* 1A9418 8027AB38 8FB00018 */ lw $s0, 0x18($sp)
/* 1A941C 8027AB3C D7BE0058 */ ldc1 $f30, 0x58($sp)
/* 1A9420 8027AB40 D7BC0050 */ ldc1 $f28, 0x50($sp)
/* 1A9424 8027AB44 D7BA0048 */ ldc1 $f26, 0x48($sp)
/* 1A9428 8027AB48 D7B80040 */ ldc1 $f24, 0x40($sp)
/* 1A942C 8027AB4C D7B60038 */ ldc1 $f22, 0x38($sp)
/* 1A9430 8027AB50 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 1A9434 8027AB54 03E00008 */ jr $ra
/* 1A9438 8027AB58 27BD0060 */ addiu $sp, $sp, 0x60

View File

@ -1,170 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel FallToGoal
/* 1A84CC 80279BEC 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 1A84D0 80279BF0 AFB20020 */ sw $s2, 0x20($sp)
/* 1A84D4 80279BF4 0080902D */ daddu $s2, $a0, $zero
/* 1A84D8 80279BF8 AFBF0024 */ sw $ra, 0x24($sp)
/* 1A84DC 80279BFC AFB1001C */ sw $s1, 0x1c($sp)
/* 1A84E0 80279C00 AFB00018 */ sw $s0, 0x18($sp)
/* 1A84E4 80279C04 F7BE0050 */ sdc1 $f30, 0x50($sp)
/* 1A84E8 80279C08 F7BC0048 */ sdc1 $f28, 0x48($sp)
/* 1A84EC 80279C0C F7BA0040 */ sdc1 $f26, 0x40($sp)
/* 1A84F0 80279C10 F7B80038 */ sdc1 $f24, 0x38($sp)
/* 1A84F4 80279C14 F7B60030 */ sdc1 $f22, 0x30($sp)
/* 1A84F8 80279C18 F7B40028 */ sdc1 $f20, 0x28($sp)
/* 1A84FC 80279C1C 8E51000C */ lw $s1, 0xc($s2)
/* 1A8500 80279C20 54A00001 */ bnel $a1, $zero, .L80279C28
/* 1A8504 80279C24 AE400070 */ sw $zero, 0x70($s2)
.L80279C28:
/* 1A8508 80279C28 8E420070 */ lw $v0, 0x70($s2)
/* 1A850C 80279C2C 1440005A */ bnez $v0, .L80279D98
/* 1A8510 80279C30 00000000 */ nop
/* 1A8514 80279C34 8E250000 */ lw $a1, ($s1)
/* 1A8518 80279C38 26310004 */ addiu $s1, $s1, 4
/* 1A851C 80279C3C 0C0B1EAF */ jal evt_get_variable
/* 1A8520 80279C40 0240202D */ daddu $a0, $s2, $zero
/* 1A8524 80279C44 0040202D */ daddu $a0, $v0, $zero
/* 1A8528 80279C48 2402FF81 */ addiu $v0, $zero, -0x7f
/* 1A852C 80279C4C 14820002 */ bne $a0, $v0, .L80279C58
/* 1A8530 80279C50 00000000 */ nop
/* 1A8534 80279C54 8E440148 */ lw $a0, 0x148($s2)
.L80279C58:
/* 1A8538 80279C58 0C09A75B */ jal get_actor
/* 1A853C 80279C5C 00000000 */ nop
/* 1A8540 80279C60 0040802D */ daddu $s0, $v0, $zero
/* 1A8544 80279C64 AE500074 */ sw $s0, 0x74($s2)
/* 1A8548 80279C68 8E250000 */ lw $a1, ($s1)
/* 1A854C 80279C6C 0C0B1EAF */ jal evt_get_variable
/* 1A8550 80279C70 0240202D */ daddu $a0, $s2, $zero
/* 1A8554 80279C74 C6000148 */ lwc1 $f0, 0x148($s0)
/* 1A8558 80279C78 C61A0018 */ lwc1 $f26, 0x18($s0)
/* 1A855C 80279C7C C61C0020 */ lwc1 $f28, 0x20($s0)
/* 1A8560 80279C80 C614014C */ lwc1 $f20, 0x14c($s0)
/* 1A8564 80279C84 C618001C */ lwc1 $f24, 0x1c($s0)
/* 1A8568 80279C88 A6020070 */ sh $v0, 0x70($s0)
/* 1A856C 80279C8C E6000010 */ swc1 $f0, 0x10($s0)
/* 1A8570 80279C90 46000786 */ mov.s $f30, $f0
/* 1A8574 80279C94 4406D000 */ mfc1 $a2, $f26
/* 1A8578 80279C98 4407E000 */ mfc1 $a3, $f28
/* 1A857C 80279C9C C6000144 */ lwc1 $f0, 0x144($s0)
/* 1A8580 80279CA0 4600A386 */ mov.s $f14, $f20
/* 1A8584 80279CA4 E6140014 */ swc1 $f20, 0x14($s0)
/* 1A8588 80279CA8 E600000C */ swc1 $f0, 0xc($s0)
/* 1A858C 80279CAC 46000586 */ mov.s $f22, $f0
/* 1A8590 80279CB0 0C00A720 */ jal atan2
/* 1A8594 80279CB4 4600B306 */ mov.s $f12, $f22
/* 1A8598 80279CB8 4600B306 */ mov.s $f12, $f22
/* 1A859C 80279CBC 4600A386 */ mov.s $f14, $f20
/* 1A85A0 80279CC0 4406D000 */ mfc1 $a2, $f26
/* 1A85A4 80279CC4 4407E000 */ mfc1 $a3, $f28
/* 1A85A8 80279CC8 461EC781 */ sub.s $f30, $f24, $f30
/* 1A85AC 80279CCC 0C00A7B5 */ jal dist2D
/* 1A85B0 80279CD0 E6000054 */ swc1 $f0, 0x54($s0)
/* 1A85B4 80279CD4 46000086 */ mov.s $f2, $f0
/* 1A85B8 80279CD8 86020070 */ lh $v0, 0x70($s0)
/* 1A85BC 80279CDC 2611000C */ addiu $s1, $s0, 0xc
/* 1A85C0 80279CE0 14400007 */ bnez $v0, .L80279D00
/* 1A85C4 80279CE4 E6020058 */ swc1 $f2, 0x58($s0)
/* 1A85C8 80279CE8 C600004C */ lwc1 $f0, 0x4c($s0)
/* 1A85CC 80279CEC 46001003 */ div.s $f0, $f2, $f0
/* 1A85D0 80279CF0 4600018D */ trunc.w.s $f6, $f0
/* 1A85D4 80279CF4 44023000 */ mfc1 $v0, $f6
/* 1A85D8 80279CF8 0809E745 */ j .L80279D14
/* 1A85DC 80279CFC A6020070 */ sh $v0, 0x70($s0)
.L80279D00:
/* 1A85E0 80279D00 44820000 */ mtc1 $v0, $f0
/* 1A85E4 80279D04 00000000 */ nop
/* 1A85E8 80279D08 46800020 */ cvt.s.w $f0, $f0
/* 1A85EC 80279D0C 46001003 */ div.s $f0, $f2, $f0
/* 1A85F0 80279D10 E600004C */ swc1 $f0, 0x4c($s0)
.L80279D14:
/* 1A85F4 80279D14 86230064 */ lh $v1, 0x64($s1)
/* 1A85F8 80279D18 3C013FE0 */ lui $at, 0x3fe0
/* 1A85FC 80279D1C 44810800 */ mtc1 $at, $f1
/* 1A8600 80279D20 44800000 */ mtc1 $zero, $f0
/* 1A8604 80279D24 00031023 */ negu $v0, $v1
/* 1A8608 80279D28 44821000 */ mtc1 $v0, $f2
/* 1A860C 80279D2C 00000000 */ nop
/* 1A8610 80279D30 468010A1 */ cvt.d.w $f2, $f2
/* 1A8614 80279D34 46201082 */ mul.d $f2, $f2, $f0
/* 1A8618 80279D38 00000000 */ nop
/* 1A861C 80279D3C AE200044 */ sw $zero, 0x44($s1)
/* 1A8620 80279D40 C6240044 */ lwc1 $f4, 0x44($s1)
/* 1A8624 80279D44 44830000 */ mtc1 $v1, $f0
/* 1A8628 80279D48 00000000 */ nop
/* 1A862C 80279D4C 46800020 */ cvt.s.w $f0, $f0
/* 1A8630 80279D50 4600F003 */ div.s $f0, $f30, $f0
/* 1A8634 80279D54 46040001 */ sub.s $f0, $f0, $f4
/* 1A8638 80279D58 46000021 */ cvt.d.s $f0, $f0
/* 1A863C 80279D5C 46220003 */ div.d $f0, $f0, $f2
/* 1A8640 80279D60 46200020 */ cvt.s.d $f0, $f0
/* 1A8644 80279D64 E620003C */ swc1 $f0, 0x3c($s1)
/* 1A8648 80279D68 8E0201AC */ lw $v0, 0x1ac($s0)
/* 1A864C 80279D6C 10400009 */ beqz $v0, .L80279D94
/* 1A8650 80279D70 24020001 */ addiu $v0, $zero, 1
/* 1A8654 80279D74 C600014C */ lwc1 $f0, 0x14c($s0)
/* 1A8658 80279D78 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A865C 80279D7C 8E0401AC */ lw $a0, 0x1ac($s0)
/* 1A8660 80279D80 8E060144 */ lw $a2, 0x144($s0)
/* 1A8664 80279D84 8E070148 */ lw $a3, 0x148($s0)
/* 1A8668 80279D88 0C052757 */ jal sfx_play_sound_at_position
/* 1A866C 80279D8C 0000282D */ daddu $a1, $zero, $zero
/* 1A8670 80279D90 24020001 */ addiu $v0, $zero, 1
.L80279D94:
/* 1A8674 80279D94 AE420070 */ sw $v0, 0x70($s2)
.L80279D98:
/* 1A8678 80279D98 8E500074 */ lw $s0, 0x74($s2)
/* 1A867C 80279D9C C6040010 */ lwc1 $f4, 0x10($s0)
/* 1A8680 80279DA0 C6000050 */ lwc1 $f0, 0x50($s0)
/* 1A8684 80279DA4 8E05004C */ lw $a1, 0x4c($s0)
/* 1A8688 80279DA8 46002100 */ add.s $f4, $f4, $f0
/* 1A868C 80279DAC C6020048 */ lwc1 $f2, 0x48($s0)
/* 1A8690 80279DB0 8E060054 */ lw $a2, 0x54($s0)
/* 1A8694 80279DB4 46020001 */ sub.s $f0, $f0, $f2
/* 1A8698 80279DB8 2604000C */ addiu $a0, $s0, 0xc
/* 1A869C 80279DBC E6040010 */ swc1 $f4, 0x10($s0)
/* 1A86A0 80279DC0 0C09904A */ jal add_xz_vec3f
/* 1A86A4 80279DC4 E6000050 */ swc1 $f0, 0x50($s0)
/* 1A86A8 80279DC8 C600000C */ lwc1 $f0, 0xc($s0)
/* 1A86AC 80279DCC C6020010 */ lwc1 $f2, 0x10($s0)
/* 1A86B0 80279DD0 96020070 */ lhu $v0, 0x70($s0)
/* 1A86B4 80279DD4 C6040014 */ lwc1 $f4, 0x14($s0)
/* 1A86B8 80279DD8 2442FFFF */ addiu $v0, $v0, -1
/* 1A86BC 80279DDC A6020070 */ sh $v0, 0x70($s0)
/* 1A86C0 80279DE0 00021400 */ sll $v0, $v0, 0x10
/* 1A86C4 80279DE4 E6000144 */ swc1 $f0, 0x144($s0)
/* 1A86C8 80279DE8 E6020148 */ swc1 $f2, 0x148($s0)
/* 1A86CC 80279DEC 18400003 */ blez $v0, .L80279DFC
/* 1A86D0 80279DF0 E604014C */ swc1 $f4, 0x14c($s0)
/* 1A86D4 80279DF4 0809E78D */ j .L80279E34
/* 1A86D8 80279DF8 0000102D */ daddu $v0, $zero, $zero
.L80279DFC:
/* 1A86DC 80279DFC C6000054 */ lwc1 $f0, 0x54($s0)
/* 1A86E0 80279E00 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A86E4 80279E04 8E050018 */ lw $a1, 0x18($s0)
/* 1A86E8 80279E08 8E06001C */ lw $a2, 0x1c($s0)
/* 1A86EC 80279E0C 8E070020 */ lw $a3, 0x20($s0)
/* 1A86F0 80279E10 0C0990BC */ jal play_movement_dust_effects
/* 1A86F4 80279E14 24040002 */ addiu $a0, $zero, 2
/* 1A86F8 80279E18 C6000018 */ lwc1 $f0, 0x18($s0)
/* 1A86FC 80279E1C C602001C */ lwc1 $f2, 0x1c($s0)
/* 1A8700 80279E20 C6040020 */ lwc1 $f4, 0x20($s0)
/* 1A8704 80279E24 24020001 */ addiu $v0, $zero, 1
/* 1A8708 80279E28 E6000144 */ swc1 $f0, 0x144($s0)
/* 1A870C 80279E2C E6020148 */ swc1 $f2, 0x148($s0)
/* 1A8710 80279E30 E604014C */ swc1 $f4, 0x14c($s0)
.L80279E34:
/* 1A8714 80279E34 8FBF0024 */ lw $ra, 0x24($sp)
/* 1A8718 80279E38 8FB20020 */ lw $s2, 0x20($sp)
/* 1A871C 80279E3C 8FB1001C */ lw $s1, 0x1c($sp)
/* 1A8720 80279E40 8FB00018 */ lw $s0, 0x18($sp)
/* 1A8724 80279E44 D7BE0050 */ ldc1 $f30, 0x50($sp)
/* 1A8728 80279E48 D7BC0048 */ ldc1 $f28, 0x48($sp)
/* 1A872C 80279E4C D7BA0040 */ ldc1 $f26, 0x40($sp)
/* 1A8730 80279E50 D7B80038 */ ldc1 $f24, 0x38($sp)
/* 1A8734 80279E54 D7B60030 */ ldc1 $f22, 0x30($sp)
/* 1A8738 80279E58 D7B40028 */ ldc1 $f20, 0x28($sp)
/* 1A873C 80279E5C 03E00008 */ jr $ra
/* 1A8740 80279E60 27BD0058 */ addiu $sp, $sp, 0x58

View File

@ -1,232 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel JumpPartTo
/* 1A8DC4 8027A4E4 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 1A8DC8 8027A4E8 AFB30024 */ sw $s3, 0x24($sp)
/* 1A8DCC 8027A4EC 0080982D */ daddu $s3, $a0, $zero
/* 1A8DD0 8027A4F0 AFBF0028 */ sw $ra, 0x28($sp)
/* 1A8DD4 8027A4F4 AFB20020 */ sw $s2, 0x20($sp)
/* 1A8DD8 8027A4F8 AFB1001C */ sw $s1, 0x1c($sp)
/* 1A8DDC 8027A4FC AFB00018 */ sw $s0, 0x18($sp)
/* 1A8DE0 8027A500 F7BE0058 */ sdc1 $f30, 0x58($sp)
/* 1A8DE4 8027A504 F7BC0050 */ sdc1 $f28, 0x50($sp)
/* 1A8DE8 8027A508 F7BA0048 */ sdc1 $f26, 0x48($sp)
/* 1A8DEC 8027A50C F7B80040 */ sdc1 $f24, 0x40($sp)
/* 1A8DF0 8027A510 F7B60038 */ sdc1 $f22, 0x38($sp)
/* 1A8DF4 8027A514 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 1A8DF8 8027A518 8E72000C */ lw $s2, 0xc($s3)
/* 1A8DFC 8027A51C 54A00001 */ bnel $a1, $zero, .L8027A524
/* 1A8E00 8027A520 AE600070 */ sw $zero, 0x70($s3)
.L8027A524:
/* 1A8E04 8027A524 8E620070 */ lw $v0, 0x70($s3)
/* 1A8E08 8027A528 14400093 */ bnez $v0, .L8027A778
/* 1A8E0C 8027A52C 00000000 */ nop
/* 1A8E10 8027A530 8E450000 */ lw $a1, ($s2)
/* 1A8E14 8027A534 26520004 */ addiu $s2, $s2, 4
/* 1A8E18 8027A538 0C0B1EAF */ jal evt_get_variable
/* 1A8E1C 8027A53C 0260202D */ daddu $a0, $s3, $zero
/* 1A8E20 8027A540 0040802D */ daddu $s0, $v0, $zero
/* 1A8E24 8027A544 2402FF81 */ addiu $v0, $zero, -0x7f
/* 1A8E28 8027A548 16020002 */ bne $s0, $v0, .L8027A554
/* 1A8E2C 8027A54C 00000000 */ nop
/* 1A8E30 8027A550 8E700148 */ lw $s0, 0x148($s3)
.L8027A554:
/* 1A8E34 8027A554 8E450000 */ lw $a1, ($s2)
/* 1A8E38 8027A558 26520004 */ addiu $s2, $s2, 4
/* 1A8E3C 8027A55C 0C0B1EAF */ jal evt_get_variable
/* 1A8E40 8027A560 0260202D */ daddu $a0, $s3, $zero
/* 1A8E44 8027A564 0200202D */ daddu $a0, $s0, $zero
/* 1A8E48 8027A568 0C09A75B */ jal get_actor
/* 1A8E4C 8027A56C 0040882D */ daddu $s1, $v0, $zero
/* 1A8E50 8027A570 0040802D */ daddu $s0, $v0, $zero
/* 1A8E54 8027A574 0200202D */ daddu $a0, $s0, $zero
/* 1A8E58 8027A578 0C099117 */ jal get_actor_part
/* 1A8E5C 8027A57C 0220282D */ daddu $a1, $s1, $zero
/* 1A8E60 8027A580 0040882D */ daddu $s1, $v0, $zero
/* 1A8E64 8027A584 AE700074 */ sw $s0, 0x74($s3)
/* 1A8E68 8027A588 AE710078 */ sw $s1, 0x78($s3)
/* 1A8E6C 8027A58C 8E450000 */ lw $a1, ($s2)
/* 1A8E70 8027A590 26520004 */ addiu $s2, $s2, 4
/* 1A8E74 8027A594 8E300010 */ lw $s0, 0x10($s1)
/* 1A8E78 8027A598 0C0B1EAF */ jal evt_get_variable
/* 1A8E7C 8027A59C 0260202D */ daddu $a0, $s3, $zero
/* 1A8E80 8027A5A0 4482E000 */ mtc1 $v0, $f28
/* 1A8E84 8027A5A4 00000000 */ nop
/* 1A8E88 8027A5A8 4680E720 */ cvt.s.w $f28, $f28
/* 1A8E8C 8027A5AC 8E450000 */ lw $a1, ($s2)
/* 1A8E90 8027A5B0 26520004 */ addiu $s2, $s2, 4
/* 1A8E94 8027A5B4 0C0B1EAF */ jal evt_get_variable
/* 1A8E98 8027A5B8 0260202D */ daddu $a0, $s3, $zero
/* 1A8E9C 8027A5BC 4482F000 */ mtc1 $v0, $f30
/* 1A8EA0 8027A5C0 00000000 */ nop
/* 1A8EA4 8027A5C4 4680F7A0 */ cvt.s.w $f30, $f30
/* 1A8EA8 8027A5C8 8E450000 */ lw $a1, ($s2)
/* 1A8EAC 8027A5CC 26520004 */ addiu $s2, $s2, 4
/* 1A8EB0 8027A5D0 0C0B1EAF */ jal evt_get_variable
/* 1A8EB4 8027A5D4 0260202D */ daddu $a0, $s3, $zero
/* 1A8EB8 8027A5D8 44820000 */ mtc1 $v0, $f0
/* 1A8EBC 8027A5DC 00000000 */ nop
/* 1A8EC0 8027A5E0 46800020 */ cvt.s.w $f0, $f0
/* 1A8EC4 8027A5E4 E61C000C */ swc1 $f28, 0xc($s0)
/* 1A8EC8 8027A5E8 E61E0010 */ swc1 $f30, 0x10($s0)
/* 1A8ECC 8027A5EC E6000014 */ swc1 $f0, 0x14($s0)
/* 1A8ED0 8027A5F0 8E450000 */ lw $a1, ($s2)
/* 1A8ED4 8027A5F4 26520004 */ addiu $s2, $s2, 4
/* 1A8ED8 8027A5F8 0C0B1EAF */ jal evt_get_variable
/* 1A8EDC 8027A5FC 0260202D */ daddu $a0, $s3, $zero
/* 1A8EE0 8027A600 A6020038 */ sh $v0, 0x38($s0)
/* 1A8EE4 8027A604 8E450000 */ lw $a1, ($s2)
/* 1A8EE8 8027A608 0C0B1EAF */ jal evt_get_variable
/* 1A8EEC 8027A60C 0260202D */ daddu $a0, $s3, $zero
/* 1A8EF0 8027A610 AE62007C */ sw $v0, 0x7c($s3)
/* 1A8EF4 8027A614 C620002C */ lwc1 $f0, 0x2c($s1)
/* 1A8EF8 8027A618 C618000C */ lwc1 $f24, 0xc($s0)
/* 1A8EFC 8027A61C C61A0014 */ lwc1 $f26, 0x14($s0)
/* 1A8F00 8027A620 C6160010 */ lwc1 $f22, 0x10($s0)
/* 1A8F04 8027A624 E6000000 */ swc1 $f0, ($s0)
/* 1A8F08 8027A628 46000706 */ mov.s $f28, $f0
/* 1A8F0C 8027A62C 4406C000 */ mfc1 $a2, $f24
/* 1A8F10 8027A630 4407D000 */ mfc1 $a3, $f26
/* 1A8F14 8027A634 C6200030 */ lwc1 $f0, 0x30($s1)
/* 1A8F18 8027A638 4600E306 */ mov.s $f12, $f28
/* 1A8F1C 8027A63C E6000004 */ swc1 $f0, 4($s0)
/* 1A8F20 8027A640 C6340034 */ lwc1 $f20, 0x34($s1)
/* 1A8F24 8027A644 46000786 */ mov.s $f30, $f0
/* 1A8F28 8027A648 4600A386 */ mov.s $f14, $f20
/* 1A8F2C 8027A64C 0C00A720 */ jal atan2
/* 1A8F30 8027A650 E6140008 */ swc1 $f20, 8($s0)
/* 1A8F34 8027A654 4600E306 */ mov.s $f12, $f28
/* 1A8F38 8027A658 4600A386 */ mov.s $f14, $f20
/* 1A8F3C 8027A65C 4406C000 */ mfc1 $a2, $f24
/* 1A8F40 8027A660 4407D000 */ mfc1 $a3, $f26
/* 1A8F44 8027A664 461EB781 */ sub.s $f30, $f22, $f30
/* 1A8F48 8027A668 0C00A7B5 */ jal dist2D
/* 1A8F4C 8027A66C E6000030 */ swc1 $f0, 0x30($s0)
/* 1A8F50 8027A670 86020038 */ lh $v0, 0x38($s0)
/* 1A8F54 8027A674 46000106 */ mov.s $f4, $f0
/* 1A8F58 8027A678 14400012 */ bnez $v0, .L8027A6C4
/* 1A8F5C 8027A67C E6040034 */ swc1 $f4, 0x34($s0)
/* 1A8F60 8027A680 C6000028 */ lwc1 $f0, 0x28($s0)
/* 1A8F64 8027A684 C6020028 */ lwc1 $f2, 0x28($s0)
/* 1A8F68 8027A688 46002003 */ div.s $f0, $f4, $f0
/* 1A8F6C 8027A68C 4600028D */ trunc.w.s $f10, $f0
/* 1A8F70 8027A690 44035000 */ mfc1 $v1, $f10
/* 1A8F74 8027A694 00000000 */ nop
/* 1A8F78 8027A698 00031400 */ sll $v0, $v1, 0x10
/* 1A8F7C 8027A69C 00021403 */ sra $v0, $v0, 0x10
/* 1A8F80 8027A6A0 44820000 */ mtc1 $v0, $f0
/* 1A8F84 8027A6A4 00000000 */ nop
/* 1A8F88 8027A6A8 46800020 */ cvt.s.w $f0, $f0
/* 1A8F8C 8027A6AC 46020002 */ mul.s $f0, $f0, $f2
/* 1A8F90 8027A6B0 00000000 */ nop
/* 1A8F94 8027A6B4 46002086 */ mov.s $f2, $f4
/* 1A8F98 8027A6B8 A6030038 */ sh $v1, 0x38($s0)
/* 1A8F9C 8027A6BC 0809E9BE */ j .L8027A6F8
/* 1A8FA0 8027A6C0 46001201 */ sub.s $f8, $f2, $f0
.L8027A6C4:
/* 1A8FA4 8027A6C4 44821000 */ mtc1 $v0, $f2
/* 1A8FA8 8027A6C8 00000000 */ nop
/* 1A8FAC 8027A6CC 468010A0 */ cvt.s.w $f2, $f2
/* 1A8FB0 8027A6D0 86020038 */ lh $v0, 0x38($s0)
/* 1A8FB4 8027A6D4 46022083 */ div.s $f2, $f4, $f2
/* 1A8FB8 8027A6D8 44820000 */ mtc1 $v0, $f0
/* 1A8FBC 8027A6DC 00000000 */ nop
/* 1A8FC0 8027A6E0 46800020 */ cvt.s.w $f0, $f0
/* 1A8FC4 8027A6E4 46020002 */ mul.s $f0, $f0, $f2
/* 1A8FC8 8027A6E8 00000000 */ nop
/* 1A8FCC 8027A6EC C6040034 */ lwc1 $f4, 0x34($s0)
/* 1A8FD0 8027A6F0 E6020028 */ swc1 $f2, 0x28($s0)
/* 1A8FD4 8027A6F4 46002201 */ sub.s $f8, $f4, $f0
.L8027A6F8:
/* 1A8FD8 8027A6F8 86020038 */ lh $v0, 0x38($s0)
/* 1A8FDC 8027A6FC C6020024 */ lwc1 $f2, 0x24($s0)
/* 1A8FE0 8027A700 44823000 */ mtc1 $v0, $f6
/* 1A8FE4 8027A704 00000000 */ nop
/* 1A8FE8 8027A708 468031A0 */ cvt.s.w $f6, $f6
/* 1A8FEC 8027A70C 46061082 */ mul.s $f2, $f2, $f6
/* 1A8FF0 8027A710 00000000 */ nop
/* 1A8FF4 8027A714 3C013F00 */ lui $at, 0x3f00
/* 1A8FF8 8027A718 44810000 */ mtc1 $at, $f0
/* 1A8FFC 8027A71C 00000000 */ nop
/* 1A9000 8027A720 46001082 */ mul.s $f2, $f2, $f0
/* 1A9004 8027A724 00000000 */ nop
/* 1A9008 8027A728 C6040028 */ lwc1 $f4, 0x28($s0)
/* 1A900C 8027A72C 46003006 */ mov.s $f0, $f6
/* 1A9010 8027A730 46004003 */ div.s $f0, $f8, $f0
/* 1A9014 8027A734 46002100 */ add.s $f4, $f4, $f0
/* 1A9018 8027A738 4606F183 */ div.s $f6, $f30, $f6
/* 1A901C 8027A73C 46061080 */ add.s $f2, $f2, $f6
/* 1A9020 8027A740 E6040028 */ swc1 $f4, 0x28($s0)
/* 1A9024 8027A744 E602002C */ swc1 $f2, 0x2c($s0)
/* 1A9028 8027A748 8E2200B4 */ lw $v0, 0xb4($s1)
/* 1A902C 8027A74C 10400009 */ beqz $v0, .L8027A774
/* 1A9030 8027A750 24020001 */ addiu $v0, $zero, 1
/* 1A9034 8027A754 C6200034 */ lwc1 $f0, 0x34($s1)
/* 1A9038 8027A758 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A903C 8027A75C 8E2400B4 */ lw $a0, 0xb4($s1)
/* 1A9040 8027A760 8E26002C */ lw $a2, 0x2c($s1)
/* 1A9044 8027A764 8E270030 */ lw $a3, 0x30($s1)
/* 1A9048 8027A768 0C052757 */ jal sfx_play_sound_at_position
/* 1A904C 8027A76C 0000282D */ daddu $a1, $zero, $zero
/* 1A9050 8027A770 24020001 */ addiu $v0, $zero, 1
.L8027A774:
/* 1A9054 8027A774 AE620070 */ sw $v0, 0x70($s3)
.L8027A778:
/* 1A9058 8027A778 8E710078 */ lw $s1, 0x78($s3)
/* 1A905C 8027A77C 8E300010 */ lw $s0, 0x10($s1)
/* 1A9060 8027A780 C6040004 */ lwc1 $f4, 4($s0)
/* 1A9064 8027A784 C600002C */ lwc1 $f0, 0x2c($s0)
/* 1A9068 8027A788 8E050028 */ lw $a1, 0x28($s0)
/* 1A906C 8027A78C 46002100 */ add.s $f4, $f4, $f0
/* 1A9070 8027A790 C6020024 */ lwc1 $f2, 0x24($s0)
/* 1A9074 8027A794 8E060030 */ lw $a2, 0x30($s0)
/* 1A9078 8027A798 46020001 */ sub.s $f0, $f0, $f2
/* 1A907C 8027A79C 0200202D */ daddu $a0, $s0, $zero
/* 1A9080 8027A7A0 E6040004 */ swc1 $f4, 4($s0)
/* 1A9084 8027A7A4 0C099070 */ jal add_xz_vec3f_copy1
/* 1A9088 8027A7A8 E600002C */ swc1 $f0, 0x2c($s0)
/* 1A908C 8027A7AC C6000000 */ lwc1 $f0, ($s0)
/* 1A9090 8027A7B0 E620002C */ swc1 $f0, 0x2c($s1)
/* 1A9094 8027A7B4 C6000004 */ lwc1 $f0, 4($s0)
/* 1A9098 8027A7B8 E6200030 */ swc1 $f0, 0x30($s1)
/* 1A909C 8027A7BC C6000008 */ lwc1 $f0, 8($s0)
/* 1A90A0 8027A7C0 E6200034 */ swc1 $f0, 0x34($s1)
/* 1A90A4 8027A7C4 96020038 */ lhu $v0, 0x38($s0)
/* 1A90A8 8027A7C8 2442FFFF */ addiu $v0, $v0, -1
/* 1A90AC 8027A7CC A6020038 */ sh $v0, 0x38($s0)
/* 1A90B0 8027A7D0 00021400 */ sll $v0, $v0, 0x10
/* 1A90B4 8027A7D4 1C400012 */ bgtz $v0, .L8027A820
/* 1A90B8 8027A7D8 0000102D */ daddu $v0, $zero, $zero
/* 1A90BC 8027A7DC 8E62007C */ lw $v0, 0x7c($s3)
/* 1A90C0 8027A7E0 10400008 */ beqz $v0, .L8027A804
/* 1A90C4 8027A7E4 00000000 */ nop
/* 1A90C8 8027A7E8 C6000030 */ lwc1 $f0, 0x30($s0)
/* 1A90CC 8027A7EC E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A90D0 8027A7F0 8E05000C */ lw $a1, 0xc($s0)
/* 1A90D4 8027A7F4 8E060010 */ lw $a2, 0x10($s0)
/* 1A90D8 8027A7F8 8E070014 */ lw $a3, 0x14($s0)
/* 1A90DC 8027A7FC 0C0990BC */ jal play_movement_dust_effects
/* 1A90E0 8027A800 24040002 */ addiu $a0, $zero, 2
.L8027A804:
/* 1A90E4 8027A804 C600000C */ lwc1 $f0, 0xc($s0)
/* 1A90E8 8027A808 E620002C */ swc1 $f0, 0x2c($s1)
/* 1A90EC 8027A80C C6000010 */ lwc1 $f0, 0x10($s0)
/* 1A90F0 8027A810 E6200030 */ swc1 $f0, 0x30($s1)
/* 1A90F4 8027A814 C6000014 */ lwc1 $f0, 0x14($s0)
/* 1A90F8 8027A818 24020001 */ addiu $v0, $zero, 1
/* 1A90FC 8027A81C E6200034 */ swc1 $f0, 0x34($s1)
.L8027A820:
/* 1A9100 8027A820 8FBF0028 */ lw $ra, 0x28($sp)
/* 1A9104 8027A824 8FB30024 */ lw $s3, 0x24($sp)
/* 1A9108 8027A828 8FB20020 */ lw $s2, 0x20($sp)
/* 1A910C 8027A82C 8FB1001C */ lw $s1, 0x1c($sp)
/* 1A9110 8027A830 8FB00018 */ lw $s0, 0x18($sp)
/* 1A9114 8027A834 D7BE0058 */ ldc1 $f30, 0x58($sp)
/* 1A9118 8027A838 D7BC0050 */ ldc1 $f28, 0x50($sp)
/* 1A911C 8027A83C D7BA0048 */ ldc1 $f26, 0x48($sp)
/* 1A9120 8027A840 D7B80040 */ ldc1 $f24, 0x40($sp)
/* 1A9124 8027A844 D7B60038 */ ldc1 $f22, 0x38($sp)
/* 1A9128 8027A848 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 1A912C 8027A84C 03E00008 */ jr $ra
/* 1A9130 8027A850 27BD0060 */ addiu $sp, $sp, 0x60

View File

@ -1,69 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel RemoveActor
/* 1AB090 8027C7B0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 1AB094 8027C7B4 AFB00010 */ sw $s0, 0x10($sp)
/* 1AB098 8027C7B8 0080802D */ daddu $s0, $a0, $zero
/* 1AB09C 8027C7BC AFBF0020 */ sw $ra, 0x20($sp)
/* 1AB0A0 8027C7C0 AFB3001C */ sw $s3, 0x1c($sp)
/* 1AB0A4 8027C7C4 AFB20018 */ sw $s2, 0x18($sp)
/* 1AB0A8 8027C7C8 AFB10014 */ sw $s1, 0x14($sp)
/* 1AB0AC 8027C7CC 8E02000C */ lw $v0, 0xc($s0)
/* 1AB0B0 8027C7D0 0C0B1EAF */ jal evt_get_variable
/* 1AB0B4 8027C7D4 8C450000 */ lw $a1, ($v0)
/* 1AB0B8 8027C7D8 0040882D */ daddu $s1, $v0, $zero
/* 1AB0BC 8027C7DC 3C12800E */ lui $s2, %hi(gBattleStatus)
/* 1AB0C0 8027C7E0 2652C070 */ addiu $s2, $s2, %lo(gBattleStatus)
/* 1AB0C4 8027C7E4 3C13800B */ lui $s3, %hi(gCurrentEncounter)
/* 1AB0C8 8027C7E8 26730F10 */ addiu $s3, $s3, %lo(gCurrentEncounter)
/* 1AB0CC 8027C7EC 2402FF81 */ addiu $v0, $zero, -0x7f
/* 1AB0D0 8027C7F0 16220002 */ bne $s1, $v0, .L8027C7FC
/* 1AB0D4 8027C7F4 00000000 */ nop
/* 1AB0D8 8027C7F8 8E110148 */ lw $s1, 0x148($s0)
.L8027C7FC:
/* 1AB0DC 8027C7FC 0C09A75B */ jal get_actor
/* 1AB0E0 8027C800 0220202D */ daddu $a0, $s1, $zero
/* 1AB0E4 8027C804 0000282D */ daddu $a1, $zero, $zero
/* 1AB0E8 8027C808 0040202D */ daddu $a0, $v0, $zero
/* 1AB0EC 8027C80C 82460171 */ lb $a2, 0x171($s2)
/* 1AB0F0 8027C810 18C0000D */ blez $a2, .L8027C848
/* 1AB0F4 8027C814 26420140 */ addiu $v0, $s2, 0x140
/* 1AB0F8 8027C818 2407FFFF */ addiu $a3, $zero, -1
/* 1AB0FC 8027C81C 0040182D */ daddu $v1, $v0, $zero
.L8027C820:
/* 1AB100 8027C820 90620001 */ lbu $v0, 1($v1)
/* 1AB104 8027C824 00021080 */ sll $v0, $v0, 2
/* 1AB108 8027C828 02421021 */ addu $v0, $s2, $v0
/* 1AB10C 8027C82C 8C4200E0 */ lw $v0, 0xe0($v0)
/* 1AB110 8027C830 50820001 */ beql $a0, $v0, .L8027C838
/* 1AB114 8027C834 A4670000 */ sh $a3, ($v1)
.L8027C838:
/* 1AB118 8027C838 24A50001 */ addiu $a1, $a1, 1
/* 1AB11C 8027C83C 00A6102A */ slt $v0, $a1, $a2
/* 1AB120 8027C840 1440FFF7 */ bnez $v0, .L8027C820
/* 1AB124 8027C844 24630002 */ addiu $v1, $v1, 2
.L8027C848:
/* 1AB128 8027C848 90820207 */ lbu $v0, 0x207($a0)
/* 1AB12C 8027C84C 9663000E */ lhu $v1, 0xe($s3)
/* 1AB130 8027C850 00021600 */ sll $v0, $v0, 0x18
/* 1AB134 8027C854 00021603 */ sra $v0, $v0, 0x18
/* 1AB138 8027C858 00621821 */ addu $v1, $v1, $v0
/* 1AB13C 8027C85C A663000E */ sh $v1, 0xe($s3)
/* 1AB140 8027C860 8C820008 */ lw $v0, 8($a0)
/* 1AB144 8027C864 9042001F */ lbu $v0, 0x1f($v0)
/* 1AB148 8027C868 00621821 */ addu $v1, $v1, $v0
/* 1AB14C 8027C86C 0C0902EF */ jal btl_delete_actor
/* 1AB150 8027C870 A663000E */ sh $v1, 0xe($s3)
/* 1AB154 8027C874 24020002 */ addiu $v0, $zero, 2
/* 1AB158 8027C878 322300FF */ andi $v1, $s1, 0xff
/* 1AB15C 8027C87C 00431804 */ sllv $v1, $v1, $v0
/* 1AB160 8027C880 02431821 */ addu $v1, $s2, $v1
/* 1AB164 8027C884 AC6000E0 */ sw $zero, 0xe0($v1)
/* 1AB168 8027C888 8FBF0020 */ lw $ra, 0x20($sp)
/* 1AB16C 8027C88C 8FB3001C */ lw $s3, 0x1c($sp)
/* 1AB170 8027C890 8FB20018 */ lw $s2, 0x18($sp)
/* 1AB174 8027C894 8FB10014 */ lw $s1, 0x14($sp)
/* 1AB178 8027C898 8FB00010 */ lw $s0, 0x10($sp)
/* 1AB17C 8027C89C 03E00008 */ jr $ra
/* 1AB180 8027C8A0 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,287 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel RunPartTo
/* 1A958C 8027ACAC 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 1A9590 8027ACB0 AFB40028 */ sw $s4, 0x28($sp)
/* 1A9594 8027ACB4 0080A02D */ daddu $s4, $a0, $zero
/* 1A9598 8027ACB8 AFBF002C */ sw $ra, 0x2c($sp)
/* 1A959C 8027ACBC AFB30024 */ sw $s3, 0x24($sp)
/* 1A95A0 8027ACC0 AFB20020 */ sw $s2, 0x20($sp)
/* 1A95A4 8027ACC4 AFB1001C */ sw $s1, 0x1c($sp)
/* 1A95A8 8027ACC8 AFB00018 */ sw $s0, 0x18($sp)
/* 1A95AC 8027ACCC F7BA0048 */ sdc1 $f26, 0x48($sp)
/* 1A95B0 8027ACD0 F7B80040 */ sdc1 $f24, 0x40($sp)
/* 1A95B4 8027ACD4 F7B60038 */ sdc1 $f22, 0x38($sp)
/* 1A95B8 8027ACD8 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 1A95BC 8027ACDC 8E91000C */ lw $s1, 0xc($s4)
/* 1A95C0 8027ACE0 54A00001 */ bnel $a1, $zero, .L8027ACE8
/* 1A95C4 8027ACE4 AE800070 */ sw $zero, 0x70($s4)
.L8027ACE8:
/* 1A95C8 8027ACE8 8E820070 */ lw $v0, 0x70($s4)
/* 1A95CC 8027ACEC 1440006F */ bnez $v0, .L8027AEAC
/* 1A95D0 8027ACF0 00000000 */ nop
/* 1A95D4 8027ACF4 8E250000 */ lw $a1, ($s1)
/* 1A95D8 8027ACF8 26310004 */ addiu $s1, $s1, 4
/* 1A95DC 8027ACFC 0C0B1EAF */ jal evt_get_variable
/* 1A95E0 8027AD00 0280202D */ daddu $a0, $s4, $zero
/* 1A95E4 8027AD04 0040802D */ daddu $s0, $v0, $zero
/* 1A95E8 8027AD08 2402FF81 */ addiu $v0, $zero, -0x7f
/* 1A95EC 8027AD0C 16020002 */ bne $s0, $v0, .L8027AD18
/* 1A95F0 8027AD10 00000000 */ nop
/* 1A95F4 8027AD14 8E900148 */ lw $s0, 0x148($s4)
.L8027AD18:
/* 1A95F8 8027AD18 8E250000 */ lw $a1, ($s1)
/* 1A95FC 8027AD1C 26310004 */ addiu $s1, $s1, 4
/* 1A9600 8027AD20 0C0B1EAF */ jal evt_get_variable
/* 1A9604 8027AD24 0280202D */ daddu $a0, $s4, $zero
/* 1A9608 8027AD28 0200202D */ daddu $a0, $s0, $zero
/* 1A960C 8027AD2C 0C09A75B */ jal get_actor
/* 1A9610 8027AD30 0040802D */ daddu $s0, $v0, $zero
/* 1A9614 8027AD34 0040982D */ daddu $s3, $v0, $zero
/* 1A9618 8027AD38 0260202D */ daddu $a0, $s3, $zero
/* 1A961C 8027AD3C 0C099117 */ jal get_actor_part
/* 1A9620 8027AD40 0200282D */ daddu $a1, $s0, $zero
/* 1A9624 8027AD44 0040902D */ daddu $s2, $v0, $zero
/* 1A9628 8027AD48 AE930074 */ sw $s3, 0x74($s4)
/* 1A962C 8027AD4C AE920078 */ sw $s2, 0x78($s4)
/* 1A9630 8027AD50 8E250000 */ lw $a1, ($s1)
/* 1A9634 8027AD54 26310004 */ addiu $s1, $s1, 4
/* 1A9638 8027AD58 8E500010 */ lw $s0, 0x10($s2)
/* 1A963C 8027AD5C 0C0B1EAF */ jal evt_get_variable
/* 1A9640 8027AD60 0280202D */ daddu $a0, $s4, $zero
/* 1A9644 8027AD64 4482D000 */ mtc1 $v0, $f26
/* 1A9648 8027AD68 00000000 */ nop
/* 1A964C 8027AD6C 4680D6A0 */ cvt.s.w $f26, $f26
/* 1A9650 8027AD70 8E250000 */ lw $a1, ($s1)
/* 1A9654 8027AD74 26310004 */ addiu $s1, $s1, 4
/* 1A9658 8027AD78 0C0B1EAF */ jal evt_get_variable
/* 1A965C 8027AD7C 0280202D */ daddu $a0, $s4, $zero
/* 1A9660 8027AD80 8E250000 */ lw $a1, ($s1)
/* 1A9664 8027AD84 26310004 */ addiu $s1, $s1, 4
/* 1A9668 8027AD88 4482A000 */ mtc1 $v0, $f20
/* 1A966C 8027AD8C 00000000 */ nop
/* 1A9670 8027AD90 4680A520 */ cvt.s.w $f20, $f20
/* 1A9674 8027AD94 0C0B1EAF */ jal evt_get_variable
/* 1A9678 8027AD98 0280202D */ daddu $a0, $s4, $zero
/* 1A967C 8027AD9C 44820000 */ mtc1 $v0, $f0
/* 1A9680 8027ADA0 00000000 */ nop
/* 1A9684 8027ADA4 46800020 */ cvt.s.w $f0, $f0
/* 1A9688 8027ADA8 E61A000C */ swc1 $f26, 0xc($s0)
/* 1A968C 8027ADAC E6140010 */ swc1 $f20, 0x10($s0)
/* 1A9690 8027ADB0 E6000014 */ swc1 $f0, 0x14($s0)
/* 1A9694 8027ADB4 8E250000 */ lw $a1, ($s1)
/* 1A9698 8027ADB8 0C0B1EAF */ jal evt_get_variable
/* 1A969C 8027ADBC 0280202D */ daddu $a0, $s4, $zero
/* 1A96A0 8027ADC0 A6020038 */ sh $v0, 0x38($s0)
/* 1A96A4 8027ADC4 C640002C */ lwc1 $f0, 0x2c($s2)
/* 1A96A8 8027ADC8 C616000C */ lwc1 $f22, 0xc($s0)
/* 1A96AC 8027ADCC C6180014 */ lwc1 $f24, 0x14($s0)
/* 1A96B0 8027ADD0 E6000000 */ swc1 $f0, ($s0)
/* 1A96B4 8027ADD4 46000686 */ mov.s $f26, $f0
/* 1A96B8 8027ADD8 4406B000 */ mfc1 $a2, $f22
/* 1A96BC 8027ADDC C6400030 */ lwc1 $f0, 0x30($s2)
/* 1A96C0 8027ADE0 4600D306 */ mov.s $f12, $f26
/* 1A96C4 8027ADE4 E6000004 */ swc1 $f0, 4($s0)
/* 1A96C8 8027ADE8 C6540034 */ lwc1 $f20, 0x34($s2)
/* 1A96CC 8027ADEC 4407C000 */ mfc1 $a3, $f24
/* 1A96D0 8027ADF0 4600A386 */ mov.s $f14, $f20
/* 1A96D4 8027ADF4 0C00A720 */ jal atan2
/* 1A96D8 8027ADF8 E6140008 */ swc1 $f20, 8($s0)
/* 1A96DC 8027ADFC 4600D306 */ mov.s $f12, $f26
/* 1A96E0 8027AE00 4406B000 */ mfc1 $a2, $f22
/* 1A96E4 8027AE04 4407C000 */ mfc1 $a3, $f24
/* 1A96E8 8027AE08 4600A386 */ mov.s $f14, $f20
/* 1A96EC 8027AE0C 0C00A7B5 */ jal dist2D
/* 1A96F0 8027AE10 E6000030 */ swc1 $f0, 0x30($s0)
/* 1A96F4 8027AE14 86020038 */ lh $v0, 0x38($s0)
/* 1A96F8 8027AE18 46000086 */ mov.s $f2, $f0
/* 1A96FC 8027AE1C 14400007 */ bnez $v0, .L8027AE3C
/* 1A9700 8027AE20 E6020034 */ swc1 $f2, 0x34($s0)
/* 1A9704 8027AE24 C6000028 */ lwc1 $f0, 0x28($s0)
/* 1A9708 8027AE28 46001003 */ div.s $f0, $f2, $f0
/* 1A970C 8027AE2C 4600010D */ trunc.w.s $f4, $f0
/* 1A9710 8027AE30 44022000 */ mfc1 $v0, $f4
/* 1A9714 8027AE34 0809EB94 */ j .L8027AE50
/* 1A9718 8027AE38 A6020038 */ sh $v0, 0x38($s0)
.L8027AE3C:
/* 1A971C 8027AE3C 44820000 */ mtc1 $v0, $f0
/* 1A9720 8027AE40 00000000 */ nop
/* 1A9724 8027AE44 46800020 */ cvt.s.w $f0, $f0
/* 1A9728 8027AE48 46001003 */ div.s $f0, $f2, $f0
/* 1A972C 8027AE4C E6000028 */ swc1 $f0, 0x28($s0)
.L8027AE50:
/* 1A9730 8027AE50 864200BC */ lh $v0, 0xbc($s2)
/* 1A9734 8027AE54 04420002 */ bltzl $v0, .L8027AE60
/* 1A9738 8027AE58 00021027 */ nor $v0, $zero, $v0
/* 1A973C 8027AE5C 24420001 */ addiu $v0, $v0, 1
.L8027AE60:
/* 1A9740 8027AE60 44820000 */ mtc1 $v0, $f0
/* 1A9744 8027AE64 00000000 */ nop
/* 1A9748 8027AE68 46800020 */ cvt.s.w $f0, $f0
/* 1A974C 8027AE6C E6000034 */ swc1 $f0, 0x34($s0)
/* 1A9750 8027AE70 8E4200A4 */ lw $v0, 0xa4($s2)
/* 1A9754 8027AE74 1040000C */ beqz $v0, .L8027AEA8
/* 1A9758 8027AE78 24020001 */ addiu $v0, $zero, 1
/* 1A975C 8027AE7C 8E4200A8 */ lw $v0, 0xa8($s2)
/* 1A9760 8027AE80 14400009 */ bnez $v0, .L8027AEA8
/* 1A9764 8027AE84 24020001 */ addiu $v0, $zero, 1
/* 1A9768 8027AE88 C6400034 */ lwc1 $f0, 0x34($s2)
/* 1A976C 8027AE8C E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A9770 8027AE90 8E4400A4 */ lw $a0, 0xa4($s2)
/* 1A9774 8027AE94 8E46002C */ lw $a2, 0x2c($s2)
/* 1A9778 8027AE98 8E470030 */ lw $a3, 0x30($s2)
/* 1A977C 8027AE9C 0C052757 */ jal sfx_play_sound_at_position
/* 1A9780 8027AEA0 0000282D */ daddu $a1, $zero, $zero
/* 1A9784 8027AEA4 24020001 */ addiu $v0, $zero, 1
.L8027AEA8:
/* 1A9788 8027AEA8 AE820070 */ sw $v0, 0x70($s4)
.L8027AEAC:
/* 1A978C 8027AEAC 8E920078 */ lw $s2, 0x78($s4)
/* 1A9790 8027AEB0 8E500010 */ lw $s0, 0x10($s2)
/* 1A9794 8027AEB4 8E930074 */ lw $s3, 0x74($s4)
/* 1A9798 8027AEB8 8E050028 */ lw $a1, 0x28($s0)
/* 1A979C 8027AEBC 8E060030 */ lw $a2, 0x30($s0)
/* 1A97A0 8027AEC0 0C099070 */ jal add_xz_vec3f_copy1
/* 1A97A4 8027AEC4 0200202D */ daddu $a0, $s0, $zero
/* 1A97A8 8027AEC8 C6020028 */ lwc1 $f2, 0x28($s0)
/* 1A97AC 8027AECC 3C014080 */ lui $at, 0x4080
/* 1A97B0 8027AED0 44810000 */ mtc1 $at, $f0
/* 1A97B4 8027AED4 00000000 */ nop
/* 1A97B8 8027AED8 4600103C */ c.lt.s $f2, $f0
/* 1A97BC 8027AEDC 00000000 */ nop
/* 1A97C0 8027AEE0 45000007 */ bc1f .L8027AF00
/* 1A97C4 8027AEE4 0000202D */ daddu $a0, $zero, $zero
/* 1A97C8 8027AEE8 C6000030 */ lwc1 $f0, 0x30($s0)
/* 1A97CC 8027AEEC E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A97D0 8027AEF0 8E050000 */ lw $a1, ($s0)
/* 1A97D4 8027AEF4 8E060004 */ lw $a2, 4($s0)
/* 1A97D8 8027AEF8 0809EBC6 */ j .L8027AF18
/* 1A97DC 8027AEFC 8E070008 */ lw $a3, 8($s0)
.L8027AF00:
/* 1A97E0 8027AF00 C6000030 */ lwc1 $f0, 0x30($s0)
/* 1A97E4 8027AF04 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A97E8 8027AF08 8E050000 */ lw $a1, ($s0)
/* 1A97EC 8027AF0C 8E060004 */ lw $a2, 4($s0)
/* 1A97F0 8027AF10 8E070008 */ lw $a3, 8($s0)
/* 1A97F4 8027AF14 24040001 */ addiu $a0, $zero, 1
.L8027AF18:
/* 1A97F8 8027AF18 0C0990BC */ jal play_movement_dust_effects
/* 1A97FC 8027AF1C 00000000 */ nop
/* 1A9800 8027AF20 C6000000 */ lwc1 $f0, ($s0)
/* 1A9804 8027AF24 8E4200A4 */ lw $v0, 0xa4($s2)
/* 1A9808 8027AF28 E640002C */ swc1 $f0, 0x2c($s2)
/* 1A980C 8027AF2C C6000004 */ lwc1 $f0, 4($s0)
/* 1A9810 8027AF30 E6400030 */ swc1 $f0, 0x30($s2)
/* 1A9814 8027AF34 C6000008 */ lwc1 $f0, 8($s0)
/* 1A9818 8027AF38 1040004A */ beqz $v0, .L8027B064
/* 1A981C 8027AF3C E6400034 */ swc1 $f0, 0x34($s2)
/* 1A9820 8027AF40 8E4200A8 */ lw $v0, 0xa8($s2)
/* 1A9824 8027AF44 10400047 */ beqz $v0, .L8027B064
/* 1A9828 8027AF48 00000000 */ nop
/* 1A982C 8027AF4C 864200BC */ lh $v0, 0xbc($s2)
/* 1A9830 8027AF50 0440001C */ bltz $v0, .L8027AFC4
/* 1A9834 8027AF54 00000000 */ nop
/* 1A9838 8027AF58 C6020034 */ lwc1 $f2, 0x34($s0)
/* 1A983C 8027AF5C C6000028 */ lwc1 $f0, 0x28($s0)
/* 1A9840 8027AF60 46001080 */ add.s $f2, $f2, $f0
/* 1A9844 8027AF64 E6020034 */ swc1 $f2, 0x34($s0)
/* 1A9848 8027AF68 864200BC */ lh $v0, 0xbc($s2)
/* 1A984C 8027AF6C 44820000 */ mtc1 $v0, $f0
/* 1A9850 8027AF70 00000000 */ nop
/* 1A9854 8027AF74 46800020 */ cvt.s.w $f0, $f0
/* 1A9858 8027AF78 4602003C */ c.lt.s $f0, $f2
/* 1A985C 8027AF7C 00000000 */ nop
/* 1A9860 8027AF80 45000038 */ bc1f .L8027B064
/* 1A9864 8027AF84 00000000 */ nop
/* 1A9868 8027AF88 92620135 */ lbu $v0, 0x135($s3)
/* 1A986C 8027AF8C 24420001 */ addiu $v0, $v0, 1
/* 1A9870 8027AF90 A2620135 */ sb $v0, 0x135($s3)
/* 1A9874 8027AF94 AE000034 */ sw $zero, 0x34($s0)
/* 1A9878 8027AF98 92620135 */ lbu $v0, 0x135($s3)
/* 1A987C 8027AF9C 30420001 */ andi $v0, $v0, 1
/* 1A9880 8027AFA0 10400026 */ beqz $v0, .L8027B03C
/* 1A9884 8027AFA4 00000000 */ nop
/* 1A9888 8027AFA8 8E4200A4 */ lw $v0, 0xa4($s2)
/* 1A988C 8027AFAC 1040002D */ beqz $v0, .L8027B064
/* 1A9890 8027AFB0 00000000 */ nop
/* 1A9894 8027AFB4 C6400034 */ lwc1 $f0, 0x34($s2)
/* 1A9898 8027AFB8 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A989C 8027AFBC 0809EC15 */ j .L8027B054
/* 1A98A0 8027AFC0 8E4400A4 */ lw $a0, 0xa4($s2)
.L8027AFC4:
/* 1A98A4 8027AFC4 C6020034 */ lwc1 $f2, 0x34($s0)
/* 1A98A8 8027AFC8 3C013F80 */ lui $at, 0x3f80
/* 1A98AC 8027AFCC 44810000 */ mtc1 $at, $f0
/* 1A98B0 8027AFD0 00000000 */ nop
/* 1A98B4 8027AFD4 46001080 */ add.s $f2, $f2, $f0
/* 1A98B8 8027AFD8 E6020034 */ swc1 $f2, 0x34($s0)
/* 1A98BC 8027AFDC 864200BC */ lh $v0, 0xbc($s2)
/* 1A98C0 8027AFE0 00021023 */ negu $v0, $v0
/* 1A98C4 8027AFE4 44820000 */ mtc1 $v0, $f0
/* 1A98C8 8027AFE8 00000000 */ nop
/* 1A98CC 8027AFEC 46800020 */ cvt.s.w $f0, $f0
/* 1A98D0 8027AFF0 4602003E */ c.le.s $f0, $f2
/* 1A98D4 8027AFF4 00000000 */ nop
/* 1A98D8 8027AFF8 4500001A */ bc1f .L8027B064
/* 1A98DC 8027AFFC 00000000 */ nop
/* 1A98E0 8027B000 92620135 */ lbu $v0, 0x135($s3)
/* 1A98E4 8027B004 24420001 */ addiu $v0, $v0, 1
/* 1A98E8 8027B008 A2620135 */ sb $v0, 0x135($s3)
/* 1A98EC 8027B00C AE000034 */ sw $zero, 0x34($s0)
/* 1A98F0 8027B010 92620135 */ lbu $v0, 0x135($s3)
/* 1A98F4 8027B014 30420001 */ andi $v0, $v0, 1
/* 1A98F8 8027B018 10400008 */ beqz $v0, .L8027B03C
/* 1A98FC 8027B01C 00000000 */ nop
/* 1A9900 8027B020 8E4200A4 */ lw $v0, 0xa4($s2)
/* 1A9904 8027B024 1040000F */ beqz $v0, .L8027B064
/* 1A9908 8027B028 00000000 */ nop
/* 1A990C 8027B02C C6400034 */ lwc1 $f0, 0x34($s2)
/* 1A9910 8027B030 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A9914 8027B034 0809EC15 */ j .L8027B054
/* 1A9918 8027B038 8E4400A4 */ lw $a0, 0xa4($s2)
.L8027B03C:
/* 1A991C 8027B03C 8E4200A8 */ lw $v0, 0xa8($s2)
/* 1A9920 8027B040 10400008 */ beqz $v0, .L8027B064
/* 1A9924 8027B044 00000000 */ nop
/* 1A9928 8027B048 C6400034 */ lwc1 $f0, 0x34($s2)
/* 1A992C 8027B04C E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A9930 8027B050 8E4400A8 */ lw $a0, 0xa8($s2)
.L8027B054:
/* 1A9934 8027B054 8E46002C */ lw $a2, 0x2c($s2)
/* 1A9938 8027B058 8E470030 */ lw $a3, 0x30($s2)
/* 1A993C 8027B05C 0C052757 */ jal sfx_play_sound_at_position
/* 1A9940 8027B060 0000282D */ daddu $a1, $zero, $zero
.L8027B064:
/* 1A9944 8027B064 96020038 */ lhu $v0, 0x38($s0)
/* 1A9948 8027B068 2442FFFF */ addiu $v0, $v0, -1
/* 1A994C 8027B06C A6020038 */ sh $v0, 0x38($s0)
/* 1A9950 8027B070 00021400 */ sll $v0, $v0, 0x10
/* 1A9954 8027B074 1C40000D */ bgtz $v0, .L8027B0AC
/* 1A9958 8027B078 0000102D */ daddu $v0, $zero, $zero
/* 1A995C 8027B07C C600000C */ lwc1 $f0, 0xc($s0)
/* 1A9960 8027B080 8E4400A4 */ lw $a0, 0xa4($s2)
/* 1A9964 8027B084 E640002C */ swc1 $f0, 0x2c($s2)
/* 1A9968 8027B088 C6000014 */ lwc1 $f0, 0x14($s0)
/* 1A996C 8027B08C 10800006 */ beqz $a0, .L8027B0A8
/* 1A9970 8027B090 E6400034 */ swc1 $f0, 0x34($s2)
/* 1A9974 8027B094 8E4200A8 */ lw $v0, 0xa8($s2)
/* 1A9978 8027B098 14400004 */ bnez $v0, .L8027B0AC
/* 1A997C 8027B09C 24020001 */ addiu $v0, $zero, 1
/* 1A9980 8027B0A0 0C0154F0 */ jal snd_stop_sound
/* 1A9984 8027B0A4 00000000 */ nop
.L8027B0A8:
/* 1A9988 8027B0A8 24020001 */ addiu $v0, $zero, 1
.L8027B0AC:
/* 1A998C 8027B0AC 8FBF002C */ lw $ra, 0x2c($sp)
/* 1A9990 8027B0B0 8FB40028 */ lw $s4, 0x28($sp)
/* 1A9994 8027B0B4 8FB30024 */ lw $s3, 0x24($sp)
/* 1A9998 8027B0B8 8FB20020 */ lw $s2, 0x20($sp)
/* 1A999C 8027B0BC 8FB1001C */ lw $s1, 0x1c($sp)
/* 1A99A0 8027B0C0 8FB00018 */ lw $s0, 0x18($sp)
/* 1A99A4 8027B0C4 D7BA0048 */ ldc1 $f26, 0x48($sp)
/* 1A99A8 8027B0C8 D7B80040 */ ldc1 $f24, 0x40($sp)
/* 1A99AC 8027B0CC D7B60038 */ ldc1 $f22, 0x38($sp)
/* 1A99B0 8027B0D0 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 1A99B4 8027B0D4 03E00008 */ jr $ra
/* 1A99B8 8027B0D8 27BD0050 */ addiu $sp, $sp, 0x50