Matched the rest of world/actions (#715)

* Matched func_802B6000_E28A30

* oops

* Attempted to match func_802B6000_E236E0 and added UB check

* Removed Goto for walk.c func

* Matched func_802B609C_E28ACC

* Cleanup

* oops

* rodata moment

* autoformat why

* oop

* oop but again

* Fixed Warnings

* Fixed Misc Whitespace
This commit is contained in:
Nasina 2022-05-26 13:01:29 -04:00 committed by GitHub
parent 6815d6b296
commit 5b0cf78903
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 174 additions and 526 deletions

View File

@ -1,76 +1,70 @@
#include "common.h"
#include "world/actions.h"
#include "world/partner/goombario.h"
extern f32 D_802B6770_E27C80;
// the switch
#ifdef NON_MATCHING
void func_802B6000_E28A30(void) {
s32 func_802B6000_E28A30(void) {
PartnerActionStatus* partnerActionStatus = &gPartnerActionStatus;
PlayerStatus* playerStatus = &gPlayerStatus;
s32 oldFlags = playerStatus->flags;
if (playerStatus->flags & PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED) {
playerStatus->flags &= ~(
PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED | PLAYER_STATUS_FLAGS_80000 | PLAYER_STATUS_FLAGS_8 |
PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED | PLAYER_STATUS_FLAGS_80000 | PLAYER_STATUS_FLAGS_FLYING |
PLAYER_STATUS_FLAGS_FALLING | PLAYER_STATUS_FLAGS_JUMPING
);
playerStatus->fallState = 0;
playerStatus->framesOnGround = 0;
playerStatus->currentStateTime = 0;
playerStatus->timeInAir = 0;
playerStatus->unk_C2 = 0;
playerStatus->currentSpeed = 0.0f;
playerStatus->unk_8C = 0.0f;
playerStatus->pitch = 0.0f;
}
if (playerStatus->animFlags & 0x400000) {
switch (gPartnerActionStatus.actingPartner) {
case 8:
func_802BD100_317020(oldFlags);
break;
case 7:
func_802BD100_317020(oldFlags);
break;
if (playerStatus->animFlags & PLAYER_STATUS_ANIM_FLAGS_400000) {
if (partnerActionStatus->actingPartner == PARTNER_LAKILESTER) {
return func_802BD100_317020(oldFlags);
}
if (partnerActionStatus->actingPartner == PARTNER_SUSHIE) {
return func_802BD100_317020(oldFlags);
}
}
}
#else
INCLUDE_ASM(s32, "world/action/encounter", func_802B6000_E28A30);
#endif
//wip - not good yet
#ifdef NON_EQUIVALENT
#ifdef AVOID_UB
return 0;
#endif
}
extern f32 D_802B6770_E27C80;
void func_802B609C_E28ACC(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
s32 sp4C;
s32 sp48;
s32 sp44;
s32 sp40;
f32 sp3C;
f32 sp38;
f32 sp34;
f32 sp30;
f32 hitDirZ;
f32 hitDirX;
f32 hitRz;
f32 hitRx;
f32 outLength;
f32 outZ;
f32 outY;
f32 outX;
f32 cosTheta;
f32 sinTheta;
f32 *temp_a1;
f32 *temp_a2;
f32 *temp_a3;
f32 *temp_v0;
f32 temp_f20;
f32 temp_f4;
f32 temp_f6;
f32 phi_f4;
f32 miscTempVariable;
f32 playerXOffset;
f32 playerZOffset;
f32 zDelta;
f32 phi_f20;
f32 playerOffsetTempVar;
if (playerStatus->flags & PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED) {
playerStatus->flags &= ~(0x80080000 | 0x80000 | 0x8 | 0x4 | 0x2);
playerStatus->flags &= ~(
PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED | PLAYER_STATUS_FLAGS_80000 | PLAYER_STATUS_FLAGS_FLYING |
PLAYER_STATUS_FLAGS_FALLING | PLAYER_STATUS_FLAGS_JUMPING
);
playerStatus->fallState = 0;
playerStatus->framesOnGround = 0;
playerStatus->currentStateTime = 0;
playerStatus->timeInAir = 0;
playerStatus->unk_C2 = 0;
playerStatus->currentSpeed = 0.0f;
playerStatus->unk_8C = 0.0f;
playerStatus->pitch = 0.0f;
D_802B6770_E27C80 = D_8010C938;
}
@ -84,56 +78,52 @@ void func_802B609C_E28ACC(void) {
}
sin_cos_rad((D_8010C990 * TAU) / 360.0f, &sinTheta, &cosTheta);
temp_f20 = sinTheta * 3.0f;
miscTempVariable = 3.0f;
miscTempVariable = sinTheta * miscTempVariable;
sin_cos_rad((D_802B6770_E27C80 * TAU) / 360.0f, &sinTheta, &cosTheta);
temp_f4 = sinTheta * temp_f20;
temp_f6 = cosTheta * temp_f20;
playerXOffset = sinTheta * miscTempVariable;
playerZOffset = cosTheta * miscTempVariable;
if (!(fabs(temp_f4) < 0.1)) {
phi_f4 = temp_f4;
} else {
phi_f4 = 0.1f;
if (temp_f4 < 0.0f) {
phi_f4 = -0.1f;
if (fabs(playerXOffset) < 0.1) {
playerOffsetTempVar = 0.1f;
if (playerXOffset < 0.0f) {
playerOffsetTempVar = -0.1f;
}
playerXOffset = playerOffsetTempVar;
}
zDelta = temp_f6;
if (fabs(temp_f6) < 0.1) {
zDelta = 0.1f;
if (temp_f6 < 0.0f) {
zDelta = -0.1f;
if (fabs(playerZOffset) < 0.1) {
playerOffsetTempVar = 0.1f;
if (playerZOffset < 0.0f) {
playerOffsetTempVar = -0.1f;
}
playerZOffset = playerOffsetTempVar;
}
playerStatus->position.x += playerXOffset;
playerStatus->position.z -= playerZOffset;
outX = playerStatus->position.x;
outY = playerStatus->position.y;
outZ = playerStatus->position.z;
outLength = 5.0f;
if (player_raycast_below_cam_relative(playerStatus, &outX, &outY, &outZ, &outLength, &hitRx, &hitRz, &hitDirX, &hitDirZ) >= 0) {
playerStatus->position.y = outY;
}
temp_a1 = &sp30;
temp_a2 = &sp34;
temp_v0 = &sp3C;
playerStatus->position.x += phi_f4;
playerStatus->position.z -= zDelta;
temp_a3 = &sp38;
sp30 = playerStatus->position.x;
sp34 = playerStatus->position.y;
sp38 = playerStatus->position.z;
sp3C = 5.0f;
if (player_raycast_below_cam_relative(&gPlayerStatus, temp_a1, temp_a2, temp_a3, temp_v0, &sp40, &sp44, &sp48, &sp4C) >= 0) {
playerStatus->position.y = sp34;
}
phi_f20 = 60.0f;
if (gGameStatusPtr->areaID == AREA_SBK) {
phi_f20 = 30.0f;
miscTempVariable = 30.0f;
} else {
miscTempVariable = 60.0f;
}
if (D_8010C990 < phi_f20) {
if (D_8010C990 < miscTempVariable) {
set_action_state(ACTION_STATE_FALLING);
gravity_use_fall_parms();
}
}
#else
INCLUDE_ASM(s32, "world/action/encounter", func_802B609C_E28ACC);
#endif
void func_802B6350_E28D80(void) {
PlayerStatus* playerStatus = &gPlayerStatus;

View File

@ -1,33 +1,115 @@
#include "common.h"
#include "world/actions.h"
s32 WalkPeachAnims[] = {
0x000A0002, // none
0x000A002B, // cream
0x000A002D, // strawberry
0x000A002F, // butter
0x000A0031, // cleanser
0x000A0033, // water
0x000A0035, // milk
0x000A0037, // flour
0x000A0039, // egg
0x000A003B, // complete cake
0x000A003D, // cake bowl
0x000A003F, // cake mixed
0x000A0041, // cake pan
0x000A0043, // cake batter
0x000A0045, // cake bare
0x000A0047, // salt
0x000A0049, // sugar
0x000A004B, // cake with icing
0x000A004D, // cake with berries
s32 WalkPeachAnims[] = {
0x000A0002, // none
0x000A002B, // cream
0x000A002D, // strawberry
0x000A002F, // butter
0x000A0031, // cleanser
0x000A0033, // water
0x000A0035, // milk
0x000A0037, // flour
0x000A0039, // egg
0x000A003B, // complete cake
0x000A003D, // cake bowl
0x000A003F, // cake mixed
0x000A0041, // cake pan
0x000A0043, // cake batter
0x000A0045, // cake bare
0x000A0047, // salt
0x000A0049, // sugar
0x000A004B, // cake with icing
0x000A004D, // cake with berries
0x00000000
};
void action_run_update_peach(void);
void func_802B65E8_E23CC8(void);
// walk
INCLUDE_ASM(void, "world/action/walk", func_802B6000_E236E0, void);
void func_802B6000_E236E0(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
PlayerData* playerData = &gPlayerData;
f32 moveVectorMagnitude;
f32 moveVectorAngle;
s32 stickAxisX;
s32 stickAxisY;
s32 playerAnim;
s32 changedAnim = FALSE;
if (playerStatus->animFlags & PLAYER_STATUS_ANIM_FLAGS_USING_PEACH_PHYSICS) {
func_802B65E8_E23CC8();
return;
}
if (playerStatus->flags & PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED) {
playerStatus->flags &= ~(
PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED | PLAYER_STATUS_FLAGS_800000 | PLAYER_STATUS_FLAGS_80000);
playerStatus->unk_60 = 0;
changedAnim = TRUE;
if (!(playerStatus->flags & PLAYER_STATUS_ANIM_FLAGS_8BIT_MARIO)) {
playerStatus->currentSpeed = playerStatus->walkSpeed;
}
if (playerStatus->animFlags & PLAYER_STATUS_ANIM_FLAGS_8BIT_MARIO) {
playerAnim = 0x90003;
}
else if (!(playerStatus->animFlags & PLAYER_STATUS_ANIM_FLAGS_HOLDING_WATT)) {
playerAnim = 0x10004;
}
else {
playerAnim = 0x60000;
}
suggest_player_anim_clearUnkFlag(playerAnim);
}
if (playerStatus->flags & PLAYER_STATUS_ANIM_FLAGS_8BIT_MARIO) {
playerStatus->targetYaw = playerStatus->heading;
try_player_footstep_sounds(8);
return;
}
player_input_to_move_vector(&moveVectorAngle, &moveVectorMagnitude);
phys_update_interact_collider();
if (!check_input_jump()) {
if (changedAnim != 0 || !check_input_hammer()) {
player_input_to_move_vector(&moveVectorAngle, &moveVectorMagnitude);
if (moveVectorMagnitude == 0.0f) {
set_action_state(ACTION_STATE_IDLE);
return;
}
if (fabsf(D_800F7B40 - moveVectorAngle) <= 90.0f && abs(moveVectorMagnitude - D_800F7B44) < 20) {
if (!(playerStatus->animFlags & PLAYER_STATUS_ANIM_FLAGS_80000000)) {
if (moveVectorMagnitude >= 20.0f) {
playerStatus->targetYaw = moveVectorAngle;
}
}
playerStatus->animFlags &= ~PLAYER_STATUS_ANIM_FLAGS_80000000;
} else {
if (playerStatus->animFlags & PLAYER_STATUS_ANIM_FLAGS_80000000) {
playerStatus->targetYaw = moveVectorAngle;
} else {
playerStatus->animFlags |= PLAYER_STATUS_ANIM_FLAGS_80000000;
}
}
if (!is_ability_active(ABILITY_SLOW_GO)) {
stickAxisX = playerStatus->stickAxis[0];
stickAxisY = playerStatus->stickAxis[1];
if (SQ(stickAxisX) + SQ(stickAxisY) > SQ(55)) {
set_action_state(ACTION_STATE_RUN);
return;
}
}
try_player_footstep_sounds(8);
playerData->walkingStepsTaken++;
}
}
}
// run
void action_run_update(void) {
@ -101,7 +183,7 @@ void action_run_update(void) {
if (temp_v1 >= 0) {
playerStatus->targetYaw = moveX;
}
playerStatus->animFlags &= ~0x80000000;
playerStatus->animFlags &= ~0x80000000;
} else {
temp_v1 = playerStatus->animFlags;
temp_v1 = temp_v1 < 0;

View File

@ -8,6 +8,7 @@ void world_goombario_init(Npc* partner);
s32 world_goombario_can_pause(Npc* partner);
ApiStatus func_802BDB84(Evt* script, s32 isInitialCall);
void world_goombario_pre_battle(Npc* partner);
s32 func_802BD100_317020(s32 arg0);
extern EvtScript world_goombario_take_out;
extern EvtScript world_goombario_update;

View File

@ -1,46 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B6000_E28A30
/* E28A30 802B6000 27BDFFE8 */ addiu $sp, $sp, -0x18
/* E28A34 802B6004 3C038011 */ lui $v1, %hi(gPlayerStatus)
/* E28A38 802B6008 2463EFC8 */ addiu $v1, $v1, %lo(gPlayerStatus)
/* E28A3C 802B600C AFBF0010 */ sw $ra, 0x10($sp)
/* E28A40 802B6010 8C640000 */ lw $a0, ($v1)
/* E28A44 802B6014 0481000B */ bgez $a0, .L802B6044
/* E28A48 802B6018 0060282D */ daddu $a1, $v1, $zero
/* E28A4C 802B601C 3C027FF7 */ lui $v0, 0x7ff7
/* E28A50 802B6020 3442FFF1 */ ori $v0, $v0, 0xfff1
/* E28A54 802B6024 00821024 */ and $v0, $a0, $v0
/* E28A58 802B6028 AC620000 */ sw $v0, ($v1)
/* E28A5C 802B602C A06000B6 */ sb $zero, 0xb6($v1)
/* E28A60 802B6030 A4600008 */ sh $zero, 8($v1)
/* E28A64 802B6034 A46000C0 */ sh $zero, 0xc0($v1)
/* E28A68 802B6038 A46000C2 */ sh $zero, 0xc2($v1)
/* E28A6C 802B603C AC600054 */ sw $zero, 0x54($v1)
/* E28A70 802B6040 AC60008C */ sw $zero, 0x8c($v1)
.L802B6044:
/* E28A74 802B6044 8CA20004 */ lw $v0, 4($a1)
/* E28A78 802B6048 3C030040 */ lui $v1, 0x40
/* E28A7C 802B604C 00431024 */ and $v0, $v0, $v1
/* E28A80 802B6050 1040000F */ beqz $v0, .L802B6090
/* E28A84 802B6054 00000000 */ nop
/* E28A88 802B6058 3C028011 */ lui $v0, %hi(gPartnerActionStatus)
/* E28A8C 802B605C 2442EBB0 */ addiu $v0, $v0, %lo(gPartnerActionStatus)
/* E28A90 802B6060 80430003 */ lb $v1, 3($v0)
/* E28A94 802B6064 24020008 */ addiu $v0, $zero, 8
/* E28A98 802B6068 14620005 */ bne $v1, $v0, .L802B6080
/* E28A9C 802B606C 24020007 */ addiu $v0, $zero, 7
/* E28AA0 802B6070 0C0AF440 */ jal func_802BD100_317020
/* E28AA4 802B6074 00000000 */ nop
/* E28AA8 802B6078 080AD824 */ j .L802B6090
/* E28AAC 802B607C 00000000 */ nop
.L802B6080:
/* E28AB0 802B6080 14620003 */ bne $v1, $v0, .L802B6090
/* E28AB4 802B6084 00000000 */ nop
/* E28AB8 802B6088 0C0AF440 */ jal func_802BD100_317020
/* E28ABC 802B608C 00000000 */ nop
.L802B6090:
/* E28AC0 802B6090 8FBF0010 */ lw $ra, 0x10($sp)
/* E28AC4 802B6094 03E00008 */ jr $ra
/* E28AC8 802B6098 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,196 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_802B6760_E29190
.double 0.1
dlabel D_802B6768_E29198
.double 0.1
.section .text
glabel func_802B609C_E28ACC
/* E28ACC 802B609C 27BDFF90 */ addiu $sp, $sp, -0x70
/* E28AD0 802B60A0 AFB20058 */ sw $s2, 0x58($sp)
/* E28AD4 802B60A4 3C128011 */ lui $s2, %hi(gPlayerStatus)
/* E28AD8 802B60A8 2652EFC8 */ addiu $s2, $s2, %lo(gPlayerStatus)
/* E28ADC 802B60AC AFBF005C */ sw $ra, 0x5c($sp)
/* E28AE0 802B60B0 AFB10054 */ sw $s1, 0x54($sp)
/* E28AE4 802B60B4 AFB00050 */ sw $s0, 0x50($sp)
/* E28AE8 802B60B8 F7B60068 */ sdc1 $f22, 0x68($sp)
/* E28AEC 802B60BC F7B40060 */ sdc1 $f20, 0x60($sp)
/* E28AF0 802B60C0 8E430000 */ lw $v1, ($s2)
/* E28AF4 802B60C4 0461000E */ bgez $v1, .L802B6100
/* E28AF8 802B60C8 3C027FF7 */ lui $v0, 0x7ff7
/* E28AFC 802B60CC 3442FFF1 */ ori $v0, $v0, 0xfff1
/* E28B00 802B60D0 3C018011 */ lui $at, %hi(D_8010C938)
/* E28B04 802B60D4 C420C938 */ lwc1 $f0, %lo(D_8010C938)($at)
/* E28B08 802B60D8 00621024 */ and $v0, $v1, $v0
/* E28B0C 802B60DC AE420000 */ sw $v0, ($s2)
/* E28B10 802B60E0 A24000B6 */ sb $zero, 0xb6($s2)
/* E28B14 802B60E4 A6400008 */ sh $zero, 8($s2)
/* E28B18 802B60E8 A64000C0 */ sh $zero, 0xc0($s2)
/* E28B1C 802B60EC A64000C2 */ sh $zero, 0xc2($s2)
/* E28B20 802B60F0 AE400054 */ sw $zero, 0x54($s2)
/* E28B24 802B60F4 AE40008C */ sw $zero, 0x8c($s2)
/* E28B28 802B60F8 3C01802B */ lui $at, %hi(D_802B6770_E27C80)
/* E28B2C 802B60FC E4206770 */ swc1 $f0, %lo(D_802B6770_E27C80)($at)
.L802B6100:
/* E28B30 802B6100 824300B6 */ lb $v1, 0xb6($s2)
/* E28B34 802B6104 924200B6 */ lbu $v0, 0xb6($s2)
/* E28B38 802B6108 10600006 */ beqz $v1, .L802B6124
/* E28B3C 802B610C 24420001 */ addiu $v0, $v0, 1
/* E28B40 802B6110 24020001 */ addiu $v0, $zero, 1
/* E28B44 802B6114 10620004 */ beq $v1, $v0, .L802B6128
/* E28B48 802B6118 00000000 */ nop
/* E28B4C 802B611C 080AD8CC */ j .L802B6330
/* E28B50 802B6120 00000000 */ nop
.L802B6124:
/* E28B54 802B6124 A24200B6 */ sb $v0, 0xb6($s2)
.L802B6128:
/* E28B58 802B6128 3C018011 */ lui $at, %hi(D_8010C990)
/* E28B5C 802B612C C42CC990 */ lwc1 $f12, %lo(D_8010C990)($at)
/* E28B60 802B6130 3C0140C9 */ lui $at, 0x40c9
/* E28B64 802B6134 34210FD0 */ ori $at, $at, 0xfd0
/* E28B68 802B6138 4481A000 */ mtc1 $at, $f20
/* E28B6C 802B613C 27B10028 */ addiu $s1, $sp, 0x28
/* E28B70 802B6140 46146302 */ mul.s $f12, $f12, $f20
/* E28B74 802B6144 00000000 */ nop
/* E28B78 802B6148 0220282D */ daddu $a1, $s1, $zero
/* E28B7C 802B614C 27B0002C */ addiu $s0, $sp, 0x2c
/* E28B80 802B6150 3C0143B4 */ lui $at, 0x43b4
/* E28B84 802B6154 4481B000 */ mtc1 $at, $f22
/* E28B88 802B6158 0200302D */ daddu $a2, $s0, $zero
/* E28B8C 802B615C 0C00A82D */ jal sin_cos_rad
/* E28B90 802B6160 46166303 */ div.s $f12, $f12, $f22
/* E28B94 802B6164 3C01802B */ lui $at, %hi(D_802B6770_E27C80)
/* E28B98 802B6168 C42C6770 */ lwc1 $f12, %lo(D_802B6770_E27C80)($at)
/* E28B9C 802B616C 46146302 */ mul.s $f12, $f12, $f20
/* E28BA0 802B6170 00000000 */ nop
/* E28BA4 802B6174 0220282D */ daddu $a1, $s1, $zero
/* E28BA8 802B6178 C7A00028 */ lwc1 $f0, 0x28($sp)
/* E28BAC 802B617C 3C014040 */ lui $at, 0x4040
/* E28BB0 802B6180 4481A000 */ mtc1 $at, $f20
/* E28BB4 802B6184 0200302D */ daddu $a2, $s0, $zero
/* E28BB8 802B6188 46140502 */ mul.s $f20, $f0, $f20
/* E28BBC 802B618C 00000000 */ nop
/* E28BC0 802B6190 0C00A82D */ jal sin_cos_rad
/* E28BC4 802B6194 46166303 */ div.s $f12, $f12, $f22
/* E28BC8 802B6198 C7A00028 */ lwc1 $f0, 0x28($sp)
/* E28BCC 802B619C 46140102 */ mul.s $f4, $f0, $f20
/* E28BD0 802B61A0 00000000 */ nop
/* E28BD4 802B61A4 C7A0002C */ lwc1 $f0, 0x2c($sp)
/* E28BD8 802B61A8 46140182 */ mul.s $f6, $f0, $f20
/* E28BDC 802B61AC 00000000 */ nop
/* E28BE0 802B61B0 3C01802B */ lui $at, %hi(D_802B6760_E29190)
/* E28BE4 802B61B4 D4226760 */ ldc1 $f2, %lo(D_802B6760_E29190)($at)
/* E28BE8 802B61B8 46002021 */ cvt.d.s $f0, $f4
/* E28BEC 802B61BC 46200005 */ abs.d $f0, $f0
/* E28BF0 802B61C0 4622003C */ c.lt.d $f0, $f2
/* E28BF4 802B61C4 00000000 */ nop
/* E28BF8 802B61C8 45020011 */ bc1fl .L802B6210
/* E28BFC 802B61CC 46003021 */ cvt.d.s $f0, $f6
/* E28C00 802B61D0 44800000 */ mtc1 $zero, $f0
/* E28C04 802B61D4 3C013DCC */ lui $at, 0x3dcc
/* E28C08 802B61D8 3421CCCD */ ori $at, $at, 0xcccd
/* E28C0C 802B61DC 44811000 */ mtc1 $at, $f2
/* E28C10 802B61E0 4600203C */ c.lt.s $f4, $f0
/* E28C14 802B61E4 00000000 */ nop
/* E28C18 802B61E8 45000006 */ bc1f .L802B6204
/* E28C1C 802B61EC 46001106 */ mov.s $f4, $f2
/* E28C20 802B61F0 3C01BDCC */ lui $at, 0xbdcc
/* E28C24 802B61F4 3421CCCD */ ori $at, $at, 0xcccd
/* E28C28 802B61F8 44811000 */ mtc1 $at, $f2
/* E28C2C 802B61FC 00000000 */ nop
/* E28C30 802B6200 46001106 */ mov.s $f4, $f2
.L802B6204:
/* E28C34 802B6204 46003021 */ cvt.d.s $f0, $f6
/* E28C38 802B6208 3C01802B */ lui $at, %hi(D_802B6768_E29198)
/* E28C3C 802B620C D4226768 */ ldc1 $f2, %lo(D_802B6768_E29198)($at)
.L802B6210:
/* E28C40 802B6210 46200005 */ abs.d $f0, $f0
/* E28C44 802B6214 4622003C */ c.lt.d $f0, $f2
/* E28C48 802B6218 00000000 */ nop
/* E28C4C 802B621C 4500000F */ bc1f .L802B625C
/* E28C50 802B6220 0240202D */ daddu $a0, $s2, $zero
/* E28C54 802B6224 44800000 */ mtc1 $zero, $f0
/* E28C58 802B6228 3C013DCC */ lui $at, 0x3dcc
/* E28C5C 802B622C 3421CCCD */ ori $at, $at, 0xcccd
/* E28C60 802B6230 44811000 */ mtc1 $at, $f2
/* E28C64 802B6234 4600303C */ c.lt.s $f6, $f0
/* E28C68 802B6238 00000000 */ nop
/* E28C6C 802B623C 45000007 */ bc1f .L802B625C
/* E28C70 802B6240 46001186 */ mov.s $f6, $f2
/* E28C74 802B6244 3C01BDCC */ lui $at, 0xbdcc
/* E28C78 802B6248 3421CCCD */ ori $at, $at, 0xcccd
/* E28C7C 802B624C 44811000 */ mtc1 $at, $f2
/* E28C80 802B6250 00000000 */ nop
/* E28C84 802B6254 46001186 */ mov.s $f6, $f2
/* E28C88 802B6258 0240202D */ daddu $a0, $s2, $zero
.L802B625C:
/* E28C8C 802B625C 27A50030 */ addiu $a1, $sp, 0x30
/* E28C90 802B6260 C6420028 */ lwc1 $f2, 0x28($s2)
/* E28C94 802B6264 27A60034 */ addiu $a2, $sp, 0x34
/* E28C98 802B6268 46041080 */ add.s $f2, $f2, $f4
/* E28C9C 802B626C C6400030 */ lwc1 $f0, 0x30($s2)
/* E28CA0 802B6270 27A2003C */ addiu $v0, $sp, 0x3c
/* E28CA4 802B6274 46060001 */ sub.s $f0, $f0, $f6
/* E28CA8 802B6278 E6420028 */ swc1 $f2, 0x28($s2)
/* E28CAC 802B627C 46001186 */ mov.s $f6, $f2
/* E28CB0 802B6280 E6400030 */ swc1 $f0, 0x30($s2)
/* E28CB4 802B6284 46000106 */ mov.s $f4, $f0
/* E28CB8 802B6288 C642002C */ lwc1 $f2, 0x2c($s2)
/* E28CBC 802B628C 3C0140A0 */ lui $at, 0x40a0
/* E28CC0 802B6290 44810000 */ mtc1 $at, $f0
/* E28CC4 802B6294 27A70038 */ addiu $a3, $sp, 0x38
/* E28CC8 802B6298 E7A60030 */ swc1 $f6, 0x30($sp)
/* E28CCC 802B629C E7A40038 */ swc1 $f4, 0x38($sp)
/* E28CD0 802B62A0 E7A20034 */ swc1 $f2, 0x34($sp)
/* E28CD4 802B62A4 E7A0003C */ swc1 $f0, 0x3c($sp)
/* E28CD8 802B62A8 AFA20010 */ sw $v0, 0x10($sp)
/* E28CDC 802B62AC 27A20040 */ addiu $v0, $sp, 0x40
/* E28CE0 802B62B0 AFA20014 */ sw $v0, 0x14($sp)
/* E28CE4 802B62B4 27A20044 */ addiu $v0, $sp, 0x44
/* E28CE8 802B62B8 AFA20018 */ sw $v0, 0x18($sp)
/* E28CEC 802B62BC 27A20048 */ addiu $v0, $sp, 0x48
/* E28CF0 802B62C0 AFA2001C */ sw $v0, 0x1c($sp)
/* E28CF4 802B62C4 27A2004C */ addiu $v0, $sp, 0x4c
/* E28CF8 802B62C8 0C03791B */ jal player_raycast_below_cam_relative
/* E28CFC 802B62CC AFA20020 */ sw $v0, 0x20($sp)
/* E28D00 802B62D0 04400003 */ bltz $v0, .L802B62E0
/* E28D04 802B62D4 00000000 */ nop
/* E28D08 802B62D8 C7A00034 */ lwc1 $f0, 0x34($sp)
/* E28D0C 802B62DC E640002C */ swc1 $f0, 0x2c($s2)
.L802B62E0:
/* E28D10 802B62E0 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* E28D14 802B62E4 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* E28D18 802B62E8 3C014270 */ lui $at, 0x4270
/* E28D1C 802B62EC 4481A000 */ mtc1 $at, $f20
/* E28D20 802B62F0 84430086 */ lh $v1, 0x86($v0)
/* E28D24 802B62F4 2402000A */ addiu $v0, $zero, 0xa
/* E28D28 802B62F8 14620003 */ bne $v1, $v0, .L802B6308
/* E28D2C 802B62FC 00000000 */ nop
/* E28D30 802B6300 3C0141F0 */ lui $at, 0x41f0
/* E28D34 802B6304 4481A000 */ mtc1 $at, $f20
.L802B6308:
/* E28D38 802B6308 3C018011 */ lui $at, %hi(D_8010C990)
/* E28D3C 802B630C C420C990 */ lwc1 $f0, %lo(D_8010C990)($at)
/* E28D40 802B6310 4614003C */ c.lt.s $f0, $f20
/* E28D44 802B6314 00000000 */ nop
/* E28D48 802B6318 45000005 */ bc1f .L802B6330
/* E28D4C 802B631C 00000000 */ nop
/* E28D50 802B6320 0C039769 */ jal set_action_state
/* E28D54 802B6324 24040008 */ addiu $a0, $zero, 8
/* E28D58 802B6328 0C038C1B */ jal gravity_use_fall_parms
/* E28D5C 802B632C 00000000 */ nop
.L802B6330:
/* E28D60 802B6330 8FBF005C */ lw $ra, 0x5c($sp)
/* E28D64 802B6334 8FB20058 */ lw $s2, 0x58($sp)
/* E28D68 802B6338 8FB10054 */ lw $s1, 0x54($sp)
/* E28D6C 802B633C 8FB00050 */ lw $s0, 0x50($sp)
/* E28D70 802B6340 D7B60068 */ ldc1 $f22, 0x68($sp)
/* E28D74 802B6344 D7B40060 */ ldc1 $f20, 0x60($sp)
/* E28D78 802B6348 03E00008 */ jr $ra
/* E28D7C 802B634C 27BD0070 */ addiu $sp, $sp, 0x70

View File

@ -1,183 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B6000_E236E0
/* E236E0 802B6000 27BDFFD0 */ addiu $sp, $sp, -0x30
/* E236E4 802B6004 AFB30024 */ sw $s3, 0x24($sp)
/* E236E8 802B6008 AFB00018 */ sw $s0, 0x18($sp)
/* E236EC 802B600C 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* E236F0 802B6010 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* E236F4 802B6014 AFBF002C */ sw $ra, 0x2c($sp)
/* E236F8 802B6018 AFB40028 */ sw $s4, 0x28($sp)
/* E236FC 802B601C AFB20020 */ sw $s2, 0x20($sp)
/* E23700 802B6020 AFB1001C */ sw $s1, 0x1c($sp)
/* E23704 802B6024 8E050004 */ lw $a1, 4($s0)
/* E23708 802B6028 3C148011 */ lui $s4, %hi(gPlayerData)
/* E2370C 802B602C 2694F290 */ addiu $s4, $s4, %lo(gPlayerData)
/* E23710 802B6030 30A21000 */ andi $v0, $a1, 0x1000
/* E23714 802B6034 10400005 */ beqz $v0, .L802B604C
/* E23718 802B6038 0000982D */ daddu $s3, $zero, $zero
/* E2371C 802B603C 0C0AD97A */ jal func_802B65E8_E23CC8
/* E23720 802B6040 00000000 */ nop
/* E23724 802B6044 080AD89A */ j .L802B6268
/* E23728 802B6048 00000000 */ nop
.L802B604C:
/* E2372C 802B604C 8E030000 */ lw $v1, ($s0)
/* E23730 802B6050 04610016 */ bgez $v1, .L802B60AC
/* E23734 802B6054 3C027F77 */ lui $v0, 0x7f77
/* E23738 802B6058 3442FFFF */ ori $v0, $v0, 0xffff
/* E2373C 802B605C 24130001 */ addiu $s3, $zero, 1
/* E23740 802B6060 00621024 */ and $v0, $v1, $v0
/* E23744 802B6064 AE020000 */ sw $v0, ($s0)
/* E23748 802B6068 30624000 */ andi $v0, $v1, 0x4000
/* E2374C 802B606C 14400003 */ bnez $v0, .L802B607C
/* E23750 802B6070 AE000060 */ sw $zero, 0x60($s0)
/* E23754 802B6074 C6000058 */ lwc1 $f0, 0x58($s0)
/* E23758 802B6078 E6000054 */ swc1 $f0, 0x54($s0)
.L802B607C:
/* E2375C 802B607C 30A24000 */ andi $v0, $a1, 0x4000
/* E23760 802B6080 10400003 */ beqz $v0, .L802B6090
/* E23764 802B6084 3C040009 */ lui $a0, 9
/* E23768 802B6088 080AD829 */ j .L802B60A4
/* E2376C 802B608C 34840003 */ ori $a0, $a0, 3
.L802B6090:
/* E23770 802B6090 30A20001 */ andi $v0, $a1, 1
/* E23774 802B6094 14400003 */ bnez $v0, .L802B60A4
/* E23778 802B6098 3C040006 */ lui $a0, 6
/* E2377C 802B609C 3C040001 */ lui $a0, 1
/* E23780 802B60A0 34840004 */ ori $a0, $a0, 4
.L802B60A4:
/* E23784 802B60A4 0C037FBF */ jal suggest_player_anim_clearUnkFlag
/* E23788 802B60A8 00000000 */ nop
.L802B60AC:
/* E2378C 802B60AC 8E020000 */ lw $v0, ($s0)
/* E23790 802B60B0 30424000 */ andi $v0, $v0, 0x4000
/* E23794 802B60B4 10400006 */ beqz $v0, .L802B60D0
/* E23798 802B60B8 24040008 */ addiu $a0, $zero, 8
/* E2379C 802B60BC C60000A0 */ lwc1 $f0, 0xa0($s0)
/* E237A0 802B60C0 0C039426 */ jal try_player_footstep_sounds
/* E237A4 802B60C4 E6000080 */ swc1 $f0, 0x80($s0)
/* E237A8 802B60C8 080AD89A */ j .L802B6268
/* E237AC 802B60CC 00000000 */ nop
.L802B60D0:
/* E237B0 802B60D0 27B20010 */ addiu $s2, $sp, 0x10
/* E237B4 802B60D4 0240202D */ daddu $a0, $s2, $zero
/* E237B8 802B60D8 27B10014 */ addiu $s1, $sp, 0x14
/* E237BC 802B60DC 0C0388C1 */ jal player_input_to_move_vector
/* E237C0 802B60E0 0220282D */ daddu $a1, $s1, $zero
/* E237C4 802B60E4 0C039454 */ jal phys_update_interact_collider
/* E237C8 802B60E8 00000000 */ nop
/* E237CC 802B60EC 0C039858 */ jal check_input_jump
/* E237D0 802B60F0 00000000 */ nop
/* E237D4 802B60F4 1440005C */ bnez $v0, .L802B6268
/* E237D8 802B60F8 00000000 */ nop
/* E237DC 802B60FC 16600006 */ bnez $s3, .L802B6118
/* E237E0 802B6100 0240202D */ daddu $a0, $s2, $zero
/* E237E4 802B6104 0C039838 */ jal check_input_hammer
/* E237E8 802B6108 00000000 */ nop
/* E237EC 802B610C 14400056 */ bnez $v0, .L802B6268
/* E237F0 802B6110 00000000 */ nop
/* E237F4 802B6114 0240202D */ daddu $a0, $s2, $zero
.L802B6118:
/* E237F8 802B6118 0C0388C1 */ jal player_input_to_move_vector
/* E237FC 802B611C 0220282D */ daddu $a1, $s1, $zero
/* E23800 802B6120 C7A40014 */ lwc1 $f4, 0x14($sp)
/* E23804 802B6124 44800000 */ mtc1 $zero, $f0
/* E23808 802B6128 00000000 */ nop
/* E2380C 802B612C 46002032 */ c.eq.s $f4, $f0
/* E23810 802B6130 00000000 */ nop
/* E23814 802B6134 45000005 */ bc1f .L802B614C
/* E23818 802B6138 00000000 */ nop
/* E2381C 802B613C 0C039769 */ jal set_action_state
/* E23820 802B6140 0000202D */ daddu $a0, $zero, $zero
/* E23824 802B6144 080AD89A */ j .L802B6268
/* E23828 802B6148 00000000 */ nop
.L802B614C:
/* E2382C 802B614C C7A60010 */ lwc1 $f6, 0x10($sp)
/* E23830 802B6150 3C01800F */ lui $at, %hi(D_800F7B40)
/* E23834 802B6154 C4207B40 */ lwc1 $f0, %lo(D_800F7B40)($at)
/* E23838 802B6158 46800020 */ cvt.s.w $f0, $f0
/* E2383C 802B615C 46060001 */ sub.s $f0, $f0, $f6
/* E23840 802B6160 3C0142B4 */ lui $at, 0x42b4
/* E23844 802B6164 44811000 */ mtc1 $at, $f2
/* E23848 802B6168 46000005 */ abs.s $f0, $f0
/* E2384C 802B616C 4602003E */ c.le.s $f0, $f2
/* E23850 802B6170 00000000 */ nop
/* E23854 802B6174 4500001C */ bc1f .L802B61E8
/* E23858 802B6178 00000000 */ nop
/* E2385C 802B617C 3C01800F */ lui $at, %hi(D_800F7B44)
/* E23860 802B6180 C4207B44 */ lwc1 $f0, %lo(D_800F7B44)($at)
/* E23864 802B6184 46800020 */ cvt.s.w $f0, $f0
/* E23868 802B6188 46002001 */ sub.s $f0, $f4, $f0
/* E2386C 802B618C 4600020D */ trunc.w.s $f8, $f0
/* E23870 802B6190 44024000 */ mfc1 $v0, $f8
/* E23874 802B6194 00000000 */ nop
/* E23878 802B6198 04420001 */ bltzl $v0, .L802B61A0
/* E2387C 802B619C 00021023 */ negu $v0, $v0
.L802B61A0:
/* E23880 802B61A0 28420014 */ slti $v0, $v0, 0x14
/* E23884 802B61A4 10400010 */ beqz $v0, .L802B61E8
/* E23888 802B61A8 00000000 */ nop
/* E2388C 802B61AC 8E020004 */ lw $v0, 4($s0)
/* E23890 802B61B0 0440000A */ bltz $v0, .L802B61DC
/* E23894 802B61B4 3C037FFF */ lui $v1, 0x7fff
/* E23898 802B61B8 3C0141A0 */ lui $at, 0x41a0
/* E2389C 802B61BC 44810000 */ mtc1 $at, $f0
/* E238A0 802B61C0 00000000 */ nop
/* E238A4 802B61C4 4604003E */ c.le.s $f0, $f4
/* E238A8 802B61C8 00000000 */ nop
/* E238AC 802B61CC 45030002 */ bc1tl .L802B61D8
/* E238B0 802B61D0 E6060080 */ swc1 $f6, 0x80($s0)
/* E238B4 802B61D4 3C037FFF */ lui $v1, 0x7fff
.L802B61D8:
/* E238B8 802B61D8 8E020004 */ lw $v0, 4($s0)
.L802B61DC:
/* E238BC 802B61DC 3463FFFF */ ori $v1, $v1, 0xffff
/* E238C0 802B61E0 080AD881 */ j .L802B6204
/* E238C4 802B61E4 00431024 */ and $v0, $v0, $v1
.L802B61E8:
/* E238C8 802B61E8 8E020004 */ lw $v0, 4($s0)
/* E238CC 802B61EC 04410004 */ bgez $v0, .L802B6200
/* E238D0 802B61F0 3C038000 */ lui $v1, 0x8000
/* E238D4 802B61F4 C7A00010 */ lwc1 $f0, 0x10($sp)
/* E238D8 802B61F8 080AD882 */ j .L802B6208
/* E238DC 802B61FC E6000080 */ swc1 $f0, 0x80($s0)
.L802B6200:
/* E238E0 802B6200 00431025 */ or $v0, $v0, $v1
.L802B6204:
/* E238E4 802B6204 AE020004 */ sw $v0, 4($s0)
.L802B6208:
/* E238E8 802B6208 0C03A752 */ jal is_ability_active
/* E238EC 802B620C 2404000B */ addiu $a0, $zero, 0xb
/* E238F0 802B6210 14400010 */ bnez $v0, .L802B6254
/* E238F4 802B6214 00000000 */ nop
/* E238F8 802B6218 8E0200E8 */ lw $v0, 0xe8($s0)
/* E238FC 802B621C 00420018 */ mult $v0, $v0
/* E23900 802B6220 00001812 */ mflo $v1
/* E23904 802B6224 8E0200EC */ lw $v0, 0xec($s0)
/* E23908 802B6228 00000000 */ nop
/* E2390C 802B622C 00420018 */ mult $v0, $v0
/* E23910 802B6230 00003812 */ mflo $a3
/* E23914 802B6234 00671021 */ addu $v0, $v1, $a3
/* E23918 802B6238 28420BD2 */ slti $v0, $v0, 0xbd2
/* E2391C 802B623C 14400005 */ bnez $v0, .L802B6254
/* E23920 802B6240 00000000 */ nop
/* E23924 802B6244 0C039769 */ jal set_action_state
/* E23928 802B6248 24040002 */ addiu $a0, $zero, 2
/* E2392C 802B624C 080AD89A */ j .L802B6268
/* E23930 802B6250 00000000 */ nop
.L802B6254:
/* E23934 802B6254 0C039426 */ jal try_player_footstep_sounds
/* E23938 802B6258 24040008 */ addiu $a0, $zero, 8
/* E2393C 802B625C 8E8202AC */ lw $v0, 0x2ac($s4)
/* E23940 802B6260 24420001 */ addiu $v0, $v0, 1
/* E23944 802B6264 AE8202AC */ sw $v0, 0x2ac($s4)
.L802B6268:
/* E23948 802B6268 8FBF002C */ lw $ra, 0x2c($sp)
/* E2394C 802B626C 8FB40028 */ lw $s4, 0x28($sp)
/* E23950 802B6270 8FB30024 */ lw $s3, 0x24($sp)
/* E23954 802B6274 8FB20020 */ lw $s2, 0x20($sp)
/* E23958 802B6278 8FB1001C */ lw $s1, 0x1c($sp)
/* E2395C 802B627C 8FB00018 */ lw $s0, 0x18($sp)
/* E23960 802B6280 03E00008 */ jr $ra
/* E23964 802B6284 27BD0030 */ addiu $sp, $sp, 0x30