Match world/action/jump funcs (#352)

* Match all funcs

* Update common_structs.h

func_802B6000_E24040 was attempting to assign an f32 to a char[], so I updated these

* Added a couple of flags

* Some requested changes

I couldn't figure out how to get Kelebek1's suggestions for the suggest_player_anim_clearUnkFlag to work, but I managed to do it for sfx_play_sound_at_player

* Update enums.h

Removed unnecessary flag that I previously added

* Update functions.h

* Update 7bb60_len_41b0.c

There were some conflicting declarations so I changed them

* Delete ver/us/asm/nonmatchings/world/action/jump directory

* Update jump.c
This commit is contained in:
ThreeMustyFears 2021-08-04 06:20:16 -03:00 committed by GitHub
parent 7a6368c960
commit f23045e775
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 269 additions and 418 deletions

View File

@ -1873,9 +1873,11 @@ typedef struct PlayerStatus {
/* 0x016 */ Vec3s lastGoodPosition;
/* 0x01C */ Vec3f extraVelocity;
/* 0x028 */ Vec3f position;
/* 0x034 */ char unk_34[16];
/* 0x034 */ char unk_34[8];
/* 0x03C */ f32 unk_3C;
/* 0x040 */ f32 unk_40;
/* 0x044 */ f32 decorationPos[2];
/* 0x04C */ char unk_4C[4];
/* 0x04C */ f32 unk_4C;
/* 0x050 */ f32 jumpApexHeight;
/* 0x054 */ f32 currentSpeed;
/* 0x058 */ f32 walkSpeed;

View File

@ -607,6 +607,7 @@ enum SoundIDs {
SOUND_UNKNOWN_2039,
SOUND_BOMB_BLAST = 8310,
SOUND_JUMP_2081 = 8321,
SOUND_JUMP_8BIT_MARIO = 8322,
SOUND_UNKNOWN_208C = 8332,
SOUND_UNKNOWN_208D,
SOUND_UNKNOWN_208E,

View File

@ -150,6 +150,8 @@ void get_dpad_input_radial(f32* angle, f32* magnitude);
void transform_point(Matrix4f mtx, f32 inX, f32 inY, f32 inZ, f32 inS, f32* outX, f32* outY, f32* outZ, f32* outS);
void try_player_footstep_sounds(s32 arg0);
void phys_update_interact_collider(void);
void phys_adjust_cam_on_landing();
void phys_init_integrator_for_current_state();
void create_popup_menu(void*);
s32 npc_test_move_simple_without_slipping(s32, f32*, f32*, f32*, f32, f32, f32, f32);
@ -221,6 +223,7 @@ void pause_draw_rect(s32 ulx, s32 uly, s32 lrx, s32 lry, s32 tileDescriptor, s32
s32 npc_raycast_down_ahead(s32, f32*, f32*, f32*, f32*, f32, f32);
s32 npc_raycast_down_sides(s32, f32*, f32*, f32*, f32*);
s32 player_raycast_below_cam_relative(PlayerStatus*, f32*, f32*, f32*, f32*, f32*, f32*, f32*, f32*);
s32 npc_test_move_taller_with_slipping(s32, f32*, f32*, f32*, f32, f32, f32, f32);
s32 npc_test_move_simple_with_slipping(s32, f32*, f32*, f32*, f32, f32, f32, f32);
s32 npc_test_move_complex_with_slipping(s32, f32*, f32*, f32*, f32, f32, f32, f32);
@ -285,6 +288,7 @@ void set_cam_viewport(s16 id, s16 x, s16 y, s16 width, s16 height);
void disable_player_shadow(void);
void move_player(s32 duration, f32 heading, f32 speed);
s32 enable_player_input(void);
s32 check_input_jump();
Npc* get_npc_safe(NpcID npcId);
Npc* get_npc_unsafe(NpcID npcId);
@ -300,6 +304,7 @@ void add_vec2D_polar(f32* x, f32* y, f32 r, f32 theta);
s32 sfx_adjust_env_sound_pos(s32 soundID, s32 arg1, f32 arg2, f32 arg3, f32 arg4);
void sfx_play_sound(s32 soundID);
s32 sfx_play_sound_at_position(s32 soundID, s32 value2, f32 posX, f32 posY, f32 posZ);
void sfx_play_sound_at_player(s32 soundID, s32 arg0);
s32 bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume);
void func_801497FC(s32 arg0);
s32 func_8014AA54(s32 playerIndex, s32 arg1, s16 arg2);
@ -331,6 +336,7 @@ ScriptInstance* get_script_by_index(s32 index);
void set_action_state(s32 actionState);
s32 get_collider_type_by_id(s32 colliderID);
void suggest_player_anim_setUnkFlag(s32 arg0);
void suggest_player_anim_clearUnkFlag(s32 arg0);
void subtract_hp(s32 amt);
void open_status_menu_long(void);

View File

@ -64,7 +64,51 @@ INCLUDE_ASM(s32, "7bb60_len_41b0", func_800E2BB0);
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_update_jump);
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_init_integrator_for_current_state);
#ifdef NON_MATCHING
// Rodata issue.
extern s32 D_800F7B50;
void phys_init_integrator_for_current_state() {
f32* temp_a0;
s8 temp_v0;
PlayerStatus* playerStatus = &gPlayerStatus;
temp_v0 = playerStatus->actionState - 3;
switch (temp_v0) {
case 4:
playerStatus->gravityIntegrator[0] = 10.0f;
playerStatus->gravityIntegrator[1] = -5.0f;
playerStatus->gravityIntegrator[2] = 1.5f;
playerStatus->gravityIntegrator[3] = -0.3f;
return;
case 0:
case 10:
case 11:
case 12:
case 13:
case 18:
case 20:
temp_a0 = &D_800F7B50 ;
if ((playerStatus->flags & 0x40000) == 0) {
playerStatus->gravityIntegrator[0] = *temp_a0++;
playerStatus->gravityIntegrator[1] = *temp_a0++;
playerStatus->gravityIntegrator[2] = *temp_a0++;
playerStatus->gravityIntegrator[3] = *temp_a0;
return;
}
playerStatus->gravityIntegrator[0] = *temp_a0++ * 0.5f;
playerStatus->gravityIntegrator[1] = *temp_a0++ * 0.5f;
playerStatus->gravityIntegrator[2] = *temp_a0++ * 0.5f;
playerStatus->gravityIntegrator[3] = *temp_a0++ * 0.5f;
default:
return;
}
}
#else
INCLUDE_ASM(void, "7bb60_len_41b0", phys_init_integrator_for_current_state);
#endif // NON_MATCHING
#ifdef NON_MATCHING
// void gravity_use_fall_parms(void) {
@ -340,7 +384,7 @@ void func_800E5520(void) {
D_8010C9B0 = 0;
}
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_adjust_cam_on_landing);
INCLUDE_ASM(void, "7bb60_len_41b0", phys_adjust_cam_on_landing);
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_clear_spin_history);

View File

@ -1,15 +1,220 @@
#include "common.h"
INCLUDE_ASM(void, "world/action/jump", func_802B6000_E24040, void);
extern f32 D_8010C960;
extern f32 D_8010C97C;
INCLUDE_ASM(void, "world/action/jump", func_802B60B4_E240F4, void);
void func_802B6000_E24040() {
PlayerStatus* playerStatus = &gPlayerStatus;
CollisionStatus* collisionStatus;
s32 temp_v1;
INCLUDE_ASM(void, "world/action/jump", func_802B6198_E241D8, void);
playerStatus->fallState = 0;
playerStatus->decorationList = 0;
playerStatus->unk_C2 = 0;
playerStatus->flags &= 0x7FFFFFF7;
playerStatus->flags |= 2;
playerStatus->unk_3C = playerStatus->position.x;
playerStatus->unk_40 = playerStatus->position.z;
playerStatus->unk_4C = playerStatus->position.y;
INCLUDE_ASM(void, "world/action/jump", func_802B6294_E242D4, void);
phys_init_integrator_for_current_state();
collisionStatus = &gCollisionStatus;
INCLUDE_ASM(void, "world/action/jump", func_802B6348_E24388, void);
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_8BIT_MARIO) {
temp_v1 = 0x90005;
}
else {
if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
temp_v1 = 0x10007;
} else {
temp_v1 = 0x60009;
}
}
suggest_player_anim_clearUnkFlag(temp_v1);
collisionStatus->lastTouchedFloor = collisionStatus->currentFloor;
collisionStatus->currentFloor = -1;
}
INCLUDE_ASM(void, "world/action/jump", func_802B647C_E244BC, void);
void func_802B60B4_E240F4() {
PlayerStatus* playerStatus = &gPlayerStatus;
s32 phi_a0;
INCLUDE_ASM(void, "world/action/jump", func_802B6508_E24548, void);
if (playerStatus->flags < 0) {
playerStatus->flags &= ~0x80000000;
func_802B6000_E24040();
if (playerStatus->actionState == ACTION_STATE_LAUNCH) {
phys_adjust_cam_on_landing();
} else {
gCameras[0].moveFlags |= 1;
}
if (playerStatus->actionState == ACTION_STATE_JUMP) {
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_8BIT_MARIO) {
sfx_play_sound_at_player(SOUND_JUMP_8BIT_MARIO, 0);
}
else {
sfx_play_sound_at_player(SOUND_JUMP_2081, 0);
}
}
}
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_8BIT_MARIO) {
phi_a0 = 0x90005;
} else {
if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
phi_a0 = 0x10007;
}
else {
phi_a0 = 0x60009;
}
}
suggest_player_anim_clearUnkFlag(phi_a0);
playerStatus->decorationList++;
}
void func_802B6198_E241D8() {
PlayerStatus* playerStatus = &gPlayerStatus;
CollisionStatus* collisionStatus = &gCollisionStatus;
Entity* entity;
s32 temp_s1;
s32 phi_a0;
temp_s1 = 0x80000000;
if (playerStatus->flags < 0) {
entity = get_entity_by_index(collisionStatus->currentFloor);
D_8010C960 = entity->position.x;
D_8010C97C = entity->position.z;
func_802B6000_E24040();
playerStatus->flags |= 0x880000;
disable_player_input();
}
playerStatus->decorationList++;
if (playerStatus->fallState == 1) {
if (playerStatus->flags & 0x80000000) {
playerStatus->flags &= 0x7FFFFFF5;
playerStatus->flags |= 4;
phi_a0 = 0x6000A;
if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
phi_a0 = 0x10008;
}
temp_s1 = phi_a0;
suggest_player_anim_clearUnkFlag(temp_s1);
gCameras[0].moveFlags |= 1;
}
} else {
return;
}
playerStatus->fallState++;
}
void func_802B6294_E242D4() {
PlayerStatus* playerStatus = &gPlayerStatus;
s32 phi_a0;
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_PEACH_PHYSICS) {
func_802B647C_E244BC();
return;
}
if (playerStatus->flags < 0) {
playerStatus->flags &= 0x7FFFFFF5;
playerStatus->flags |= 4;
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_8BIT_MARIO) {
phi_a0 = 0x90005;
} else {
if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
phi_a0 = 0x10008;
}
else {
phi_a0 = 0x6000A;
}
}
suggest_player_anim_clearUnkFlag(phi_a0);
gCameras[0].moveFlags |= 1;
}
playerStatus->decorationList++;
}
void func_802B6348_E24388() {
PlayerStatus* playerStatus = &gPlayerStatus;
f32 sub_arg5;
f32 sub_arg6;
f32 sub_arg7;
f32 sub_arg8;
f32 sp28;
f32 sp2C;
f32 sp30;
f32 sp34;
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_PEACH_PHYSICS) {
func_802B6508_E24548();
return;
}
if (playerStatus->flags < 0) {
playerStatus->flags &= 0x7FFFFFF5;
playerStatus->flags |= 4;
gCameras[0].moveFlags |= 1;
}
playerStatus->decorationList++;
phys_update_interact_collider();
sp28 = playerStatus->position.x;
sp2C = playerStatus->position.y;
sp30 = playerStatus->position.z;
sp34 = playerStatus->colliderHeight;
if (((get_collider_type_by_id(player_raycast_below_cam_relative(playerStatus, &sp28, &sp2C, &sp30, &sp34,
&sub_arg5, &sub_arg6, &sub_arg7, &sub_arg8)) & 0xFF) - 2 >= 2U) && check_input_jump()) {
set_action_state(ACTION_STATE_JUMP);
playerStatus->flags &= -0xF;
func_802B60B4_E240F4();
}
}
void func_802B647C_E244BC() {
PlayerStatus* playerStatus = &gPlayerStatus;
s32 temp_v1;
if (playerStatus->flags < 0) {
playerStatus->flags &= ~0x80000000;
playerStatus->flags &= ~0xA;
playerStatus->flags |= 4;
if (!(playerStatus->animFlags & PLAYER_ANIM_FLAG_PEACH_PHYSICS)) {
temp_v1 = 0x10008;
} else {
temp_v1 = 0xA0006;
}
suggest_player_anim_clearUnkFlag(temp_v1);
gCameras[0].moveFlags |= 1;
}
playerStatus->decorationList++;
}
void func_802B6508_E24548() {
PlayerStatus* playerStatus = &gPlayerStatus;
if (playerStatus->flags < 0) {
playerStatus->flags &= ~0x80000000;
playerStatus->flags &= ~0xA;
playerStatus->flags |= 4;
gCameras[0].moveFlags |= 1;
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_PEACH_PHYSICS) {
suggest_player_anim_clearUnkFlag(0xA0006);
}
}
playerStatus->decorationList++;
phys_update_interact_collider();
}

View File

@ -1,51 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B6000_E24040
/* E24040 802B6000 27BDFFE8 */ addiu $sp, $sp, -0x18
/* E24044 802B6004 3C037FFF */ lui $v1, 0x7fff
/* E24048 802B6008 AFB00010 */ sw $s0, 0x10($sp)
/* E2404C 802B600C 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* E24050 802B6010 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* E24054 802B6014 AFBF0014 */ sw $ra, 0x14($sp)
/* E24058 802B6018 8E020000 */ lw $v0, ($s0)
/* E2405C 802B601C C6000028 */ lwc1 $f0, 0x28($s0)
/* E24060 802B6020 C6020030 */ lwc1 $f2, 0x30($s0)
/* E24064 802B6024 C604002C */ lwc1 $f4, 0x2c($s0)
/* E24068 802B6028 3463FFF7 */ ori $v1, $v1, 0xfff7
/* E2406C 802B602C A20000B6 */ sb $zero, 0xb6($s0)
/* E24070 802B6030 A60000C0 */ sh $zero, 0xc0($s0)
/* E24074 802B6034 A60000C2 */ sh $zero, 0xc2($s0)
/* E24078 802B6038 00431024 */ and $v0, $v0, $v1
/* E2407C 802B603C 34420002 */ ori $v0, $v0, 2
/* E24080 802B6040 AE020000 */ sw $v0, ($s0)
/* E24084 802B6044 E600003C */ swc1 $f0, 0x3c($s0)
/* E24088 802B6048 E6020040 */ swc1 $f2, 0x40($s0)
/* E2408C 802B604C 0C038BD8 */ jal phys_init_integrator_for_current_state
/* E24090 802B6050 E604004C */ swc1 $f4, 0x4c($s0)
/* E24094 802B6054 8E030004 */ lw $v1, 4($s0)
/* E24098 802B6058 3C108016 */ lui $s0, %hi(gCollisionStatus)
/* E2409C 802B605C 2610A550 */ addiu $s0, $s0, %lo(gCollisionStatus)
/* E240A0 802B6060 30624000 */ andi $v0, $v1, 0x4000
/* E240A4 802B6064 10400003 */ beqz $v0, .L802B6074
/* E240A8 802B6068 3C040009 */ lui $a0, 9
/* E240AC 802B606C 080AD823 */ j .L802B608C
/* E240B0 802B6070 34840005 */ ori $a0, $a0, 5
.L802B6074:
/* E240B4 802B6074 3C040006 */ lui $a0, 6
/* E240B8 802B6078 30620003 */ andi $v0, $v1, 3
/* E240BC 802B607C 14400003 */ bnez $v0, .L802B608C
/* E240C0 802B6080 34840009 */ ori $a0, $a0, 9
/* E240C4 802B6084 3C040001 */ lui $a0, 1
/* E240C8 802B6088 34840007 */ ori $a0, $a0, 7
.L802B608C:
/* E240CC 802B608C 0C037FBF */ jal suggest_player_anim_clearUnkFlag
/* E240D0 802B6090 00000000 */ nop
/* E240D4 802B6094 96030002 */ lhu $v1, 2($s0)
/* E240D8 802B6098 2402FFFF */ addiu $v0, $zero, -1
/* E240DC 802B609C A6020002 */ sh $v0, 2($s0)
/* E240E0 802B60A0 A6030004 */ sh $v1, 4($s0)
/* E240E4 802B60A4 8FBF0014 */ lw $ra, 0x14($sp)
/* E240E8 802B60A8 8FB00010 */ lw $s0, 0x10($sp)
/* E240EC 802B60AC 03E00008 */ jr $ra
/* E240F0 802B60B0 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,67 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B60B4_E240F4
/* E240F4 802B60B4 27BDFFE8 */ addiu $sp, $sp, -0x18
/* E240F8 802B60B8 AFB00010 */ sw $s0, 0x10($sp)
/* E240FC 802B60BC 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* E24100 802B60C0 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* E24104 802B60C4 AFBF0014 */ sw $ra, 0x14($sp)
/* E24108 802B60C8 8E030000 */ lw $v1, ($s0)
/* E2410C 802B60CC 0461001D */ bgez $v1, .L802B6144
/* E24110 802B60D0 3C027FFF */ lui $v0, 0x7fff
/* E24114 802B60D4 3442FFFF */ ori $v0, $v0, 0xffff
/* E24118 802B60D8 00621024 */ and $v0, $v1, $v0
/* E2411C 802B60DC 0C0AD800 */ jal func_802B6000_E24040
/* E24120 802B60E0 AE020000 */ sw $v0, ($s0)
/* E24124 802B60E4 820300B4 */ lb $v1, 0xb4($s0)
/* E24128 802B60E8 24020006 */ addiu $v0, $zero, 6
/* E2412C 802B60EC 14620005 */ bne $v1, $v0, .L802B6104
/* E24130 802B60F0 00000000 */ nop
/* E24134 802B60F4 0C03954C */ jal phys_adjust_cam_on_landing
/* E24138 802B60F8 00000000 */ nop
/* E2413C 802B60FC 080AD846 */ j .L802B6118
/* E24140 802B6100 00000000 */ nop
.L802B6104:
/* E24144 802B6104 3C03800B */ lui $v1, %hi(gCameras)
/* E24148 802B6108 24631D80 */ addiu $v1, $v1, %lo(gCameras)
/* E2414C 802B610C 94620002 */ lhu $v0, 2($v1)
/* E24150 802B6110 34420001 */ ori $v0, $v0, 1
/* E24154 802B6114 A4620002 */ sh $v0, 2($v1)
.L802B6118:
/* E24158 802B6118 820300B4 */ lb $v1, 0xb4($s0)
/* E2415C 802B611C 24020003 */ addiu $v0, $zero, 3
/* E24160 802B6120 14620008 */ bne $v1, $v0, .L802B6144
/* E24164 802B6124 00000000 */ nop
/* E24168 802B6128 8E020004 */ lw $v0, 4($s0)
/* E2416C 802B612C 30424000 */ andi $v0, $v0, 0x4000
/* E24170 802B6130 10400002 */ beqz $v0, .L802B613C
/* E24174 802B6134 24042081 */ addiu $a0, $zero, 0x2081
/* E24178 802B6138 24042082 */ addiu $a0, $zero, 0x2082
.L802B613C:
/* E2417C 802B613C 0C052736 */ jal sfx_play_sound_at_player
/* E24180 802B6140 0000282D */ daddu $a1, $zero, $zero
.L802B6144:
/* E24184 802B6144 8E030004 */ lw $v1, 4($s0)
/* E24188 802B6148 30624000 */ andi $v0, $v1, 0x4000
/* E2418C 802B614C 10400003 */ beqz $v0, .L802B615C
/* E24190 802B6150 3C040009 */ lui $a0, 9
/* E24194 802B6154 080AD85D */ j .L802B6174
/* E24198 802B6158 34840005 */ ori $a0, $a0, 5
.L802B615C:
/* E2419C 802B615C 3C040006 */ lui $a0, 6
/* E241A0 802B6160 30620003 */ andi $v0, $v1, 3
/* E241A4 802B6164 14400003 */ bnez $v0, .L802B6174
/* E241A8 802B6168 34840009 */ ori $a0, $a0, 9
/* E241AC 802B616C 3C040001 */ lui $a0, 1
/* E241B0 802B6170 34840007 */ ori $a0, $a0, 7
.L802B6174:
/* E241B4 802B6174 0C037FBF */ jal suggest_player_anim_clearUnkFlag
/* E241B8 802B6178 00000000 */ nop
/* E241BC 802B617C 960200C0 */ lhu $v0, 0xc0($s0)
/* E241C0 802B6180 24420001 */ addiu $v0, $v0, 1
/* E241C4 802B6184 A60200C0 */ sh $v0, 0xc0($s0)
/* E241C8 802B6188 8FBF0014 */ lw $ra, 0x14($sp)
/* E241CC 802B618C 8FB00010 */ lw $s0, 0x10($sp)
/* E241D0 802B6190 03E00008 */ jr $ra
/* E241D4 802B6194 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,71 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B6198_E241D8
/* E241D8 802B6198 27BDFFE0 */ addiu $sp, $sp, -0x20
/* E241DC 802B619C AFB00010 */ sw $s0, 0x10($sp)
/* E241E0 802B61A0 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* E241E4 802B61A4 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* E241E8 802B61A8 AFBF0018 */ sw $ra, 0x18($sp)
/* E241EC 802B61AC AFB10014 */ sw $s1, 0x14($sp)
/* E241F0 802B61B0 8E020000 */ lw $v0, ($s0)
/* E241F4 802B61B4 04410012 */ bgez $v0, .L802B6200
/* E241F8 802B61B8 3C118000 */ lui $s1, 0x8000
/* E241FC 802B61BC 3C028016 */ lui $v0, %hi(gCollisionStatus)
/* E24200 802B61C0 2442A550 */ addiu $v0, $v0, %lo(gCollisionStatus)
/* E24204 802B61C4 0C04417A */ jal get_entity_by_index
/* E24208 802B61C8 84440002 */ lh $a0, 2($v0)
/* E2420C 802B61CC C4400048 */ lwc1 $f0, 0x48($v0)
/* E24210 802B61D0 C4420050 */ lwc1 $f2, 0x50($v0)
/* E24214 802B61D4 3C018011 */ lui $at, %hi(D_8010C960)
/* E24218 802B61D8 E420C960 */ swc1 $f0, %lo(D_8010C960)($at)
/* E2421C 802B61DC 3C018011 */ lui $at, %hi(D_8010C97C)
/* E24220 802B61E0 E422C97C */ swc1 $f2, %lo(D_8010C97C)($at)
/* E24224 802B61E4 0C0AD800 */ jal func_802B6000_E24040
/* E24228 802B61E8 00000000 */ nop
/* E2422C 802B61EC 8E020000 */ lw $v0, ($s0)
/* E24230 802B61F0 3C030088 */ lui $v1, 0x88
/* E24234 802B61F4 00431025 */ or $v0, $v0, $v1
/* E24238 802B61F8 0C03805E */ jal disable_player_input
/* E2423C 802B61FC AE020000 */ sw $v0, ($s0)
.L802B6200:
/* E24240 802B6200 960200C0 */ lhu $v0, 0xc0($s0)
/* E24244 802B6204 820300B6 */ lb $v1, 0xb6($s0)
/* E24248 802B6208 24420001 */ addiu $v0, $v0, 1
/* E2424C 802B620C A60200C0 */ sh $v0, 0xc0($s0)
/* E24250 802B6210 24020001 */ addiu $v0, $zero, 1
/* E24254 802B6214 1462001A */ bne $v1, $v0, .L802B6280
/* E24258 802B6218 00000000 */ nop
/* E2425C 802B621C 8E050000 */ lw $a1, ($s0)
/* E24260 802B6220 00B11024 */ and $v0, $a1, $s1
/* E24264 802B6224 10400013 */ beqz $v0, .L802B6274
/* E24268 802B6228 3C037FFF */ lui $v1, 0x7fff
/* E2426C 802B622C 3463FFF5 */ ori $v1, $v1, 0xfff5
/* E24270 802B6230 3C040006 */ lui $a0, 6
/* E24274 802B6234 3484000A */ ori $a0, $a0, 0xa
/* E24278 802B6238 00A31824 */ and $v1, $a1, $v1
/* E2427C 802B623C 8E020004 */ lw $v0, 4($s0)
/* E24280 802B6240 34630004 */ ori $v1, $v1, 4
/* E24284 802B6244 30420003 */ andi $v0, $v0, 3
/* E24288 802B6248 14400003 */ bnez $v0, .L802B6258
/* E2428C 802B624C AE030000 */ sw $v1, ($s0)
/* E24290 802B6250 3C040001 */ lui $a0, 1
/* E24294 802B6254 34840008 */ ori $a0, $a0, 8
.L802B6258:
/* E24298 802B6258 0C037FBF */ jal suggest_player_anim_clearUnkFlag
/* E2429C 802B625C 00000000 */ nop
/* E242A0 802B6260 3C03800B */ lui $v1, %hi(gCameras)
/* E242A4 802B6264 24631D80 */ addiu $v1, $v1, %lo(gCameras)
/* E242A8 802B6268 94620002 */ lhu $v0, 2($v1)
/* E242AC 802B626C 34420001 */ ori $v0, $v0, 1
/* E242B0 802B6270 A4620002 */ sh $v0, 2($v1)
.L802B6274:
/* E242B4 802B6274 920200B6 */ lbu $v0, 0xb6($s0)
/* E242B8 802B6278 24420001 */ addiu $v0, $v0, 1
/* E242BC 802B627C A20200B6 */ sb $v0, 0xb6($s0)
.L802B6280:
/* E242C0 802B6280 8FBF0018 */ lw $ra, 0x18($sp)
/* E242C4 802B6284 8FB10014 */ lw $s1, 0x14($sp)
/* E242C8 802B6288 8FB00010 */ lw $s0, 0x10($sp)
/* E242CC 802B628C 03E00008 */ jr $ra
/* E242D0 802B6290 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,54 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B6294_E242D4
/* E242D4 802B6294 27BDFFE8 */ addiu $sp, $sp, -0x18
/* E242D8 802B6298 AFB00010 */ sw $s0, 0x10($sp)
/* E242DC 802B629C 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* E242E0 802B62A0 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* E242E4 802B62A4 AFBF0014 */ sw $ra, 0x14($sp)
/* E242E8 802B62A8 8E050004 */ lw $a1, 4($s0)
/* E242EC 802B62AC 30A21000 */ andi $v0, $a1, 0x1000
/* E242F0 802B62B0 10400005 */ beqz $v0, .L802B62C8
/* E242F4 802B62B4 00000000 */ nop
/* E242F8 802B62B8 0C0AD91F */ jal func_802B647C_E244BC
/* E242FC 802B62BC 00000000 */ nop
/* E24300 802B62C0 080AD8CE */ j .L802B6338
/* E24304 802B62C4 00000000 */ nop
.L802B62C8:
/* E24308 802B62C8 8E030000 */ lw $v1, ($s0)
/* E2430C 802B62CC 04610017 */ bgez $v1, .L802B632C
/* E24310 802B62D0 3C027FFF */ lui $v0, 0x7fff
/* E24314 802B62D4 3442FFF5 */ ori $v0, $v0, 0xfff5
/* E24318 802B62D8 00621024 */ and $v0, $v1, $v0
/* E2431C 802B62DC 34420004 */ ori $v0, $v0, 4
/* E24320 802B62E0 AE020000 */ sw $v0, ($s0)
/* E24324 802B62E4 30A24000 */ andi $v0, $a1, 0x4000
/* E24328 802B62E8 10400003 */ beqz $v0, .L802B62F8
/* E2432C 802B62EC 3C040009 */ lui $a0, 9
/* E24330 802B62F0 080AD8C4 */ j .L802B6310
/* E24334 802B62F4 34840005 */ ori $a0, $a0, 5
.L802B62F8:
/* E24338 802B62F8 3C040006 */ lui $a0, 6
/* E2433C 802B62FC 30A20003 */ andi $v0, $a1, 3
/* E24340 802B6300 14400003 */ bnez $v0, .L802B6310
/* E24344 802B6304 3484000A */ ori $a0, $a0, 0xa
/* E24348 802B6308 3C040001 */ lui $a0, 1
/* E2434C 802B630C 34840008 */ ori $a0, $a0, 8
.L802B6310:
/* E24350 802B6310 0C037FBF */ jal suggest_player_anim_clearUnkFlag
/* E24354 802B6314 00000000 */ nop
/* E24358 802B6318 3C03800B */ lui $v1, %hi(gCameras)
/* E2435C 802B631C 24631D80 */ addiu $v1, $v1, %lo(gCameras)
/* E24360 802B6320 94620002 */ lhu $v0, 2($v1)
/* E24364 802B6324 34420001 */ ori $v0, $v0, 1
/* E24368 802B6328 A4620002 */ sh $v0, 2($v1)
.L802B632C:
/* E2436C 802B632C 960200C0 */ lhu $v0, 0xc0($s0)
/* E24370 802B6330 24420001 */ addiu $v0, $v0, 1
/* E24374 802B6334 A60200C0 */ sh $v0, 0xc0($s0)
.L802B6338:
/* E24378 802B6338 8FBF0014 */ lw $ra, 0x14($sp)
/* E2437C 802B633C 8FB00010 */ lw $s0, 0x10($sp)
/* E24380 802B6340 03E00008 */ jr $ra
/* E24384 802B6344 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,84 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B6348_E24388
/* E24388 802B6348 27BDFFB0 */ addiu $sp, $sp, -0x50
/* E2438C 802B634C 3C058011 */ lui $a1, %hi(gPlayerStatus)
/* E24390 802B6350 24A5EFC8 */ addiu $a1, $a1, %lo(gPlayerStatus)
/* E24394 802B6354 AFBF004C */ sw $ra, 0x4c($sp)
/* E24398 802B6358 AFB00048 */ sw $s0, 0x48($sp)
/* E2439C 802B635C 8CA20004 */ lw $v0, 4($a1)
/* E243A0 802B6360 30421000 */ andi $v0, $v0, 0x1000
/* E243A4 802B6364 10400005 */ beqz $v0, .L802B637C
/* E243A8 802B6368 00A0802D */ daddu $s0, $a1, $zero
/* E243AC 802B636C 0C0AD942 */ jal func_802B6508_E24548
/* E243B0 802B6370 00000000 */ nop
/* E243B4 802B6374 080AD91B */ j .L802B646C
/* E243B8 802B6378 00000000 */ nop
.L802B637C:
/* E243BC 802B637C 8CA30000 */ lw $v1, ($a1)
/* E243C0 802B6380 0461000A */ bgez $v1, .L802B63AC
/* E243C4 802B6384 3C027FFF */ lui $v0, 0x7fff
/* E243C8 802B6388 3442FFF5 */ ori $v0, $v0, 0xfff5
/* E243CC 802B638C 00621024 */ and $v0, $v1, $v0
/* E243D0 802B6390 3C04800B */ lui $a0, %hi(gCameras)
/* E243D4 802B6394 24841D80 */ addiu $a0, $a0, %lo(gCameras)
/* E243D8 802B6398 94830002 */ lhu $v1, 2($a0)
/* E243DC 802B639C 34420004 */ ori $v0, $v0, 4
/* E243E0 802B63A0 ACA20000 */ sw $v0, ($a1)
/* E243E4 802B63A4 34630001 */ ori $v1, $v1, 1
/* E243E8 802B63A8 A4830002 */ sh $v1, 2($a0)
.L802B63AC:
/* E243EC 802B63AC 960200C0 */ lhu $v0, 0xc0($s0)
/* E243F0 802B63B0 24420001 */ addiu $v0, $v0, 1
/* E243F4 802B63B4 0C039454 */ jal phys_update_interact_collider
/* E243F8 802B63B8 A60200C0 */ sh $v0, 0xc0($s0)
/* E243FC 802B63BC 0200202D */ daddu $a0, $s0, $zero
/* E24400 802B63C0 27A50028 */ addiu $a1, $sp, 0x28
/* E24404 802B63C4 27A6002C */ addiu $a2, $sp, 0x2c
/* E24408 802B63C8 C6000028 */ lwc1 $f0, 0x28($s0)
/* E2440C 802B63CC C602002C */ lwc1 $f2, 0x2c($s0)
/* E24410 802B63D0 C6040030 */ lwc1 $f4, 0x30($s0)
/* E24414 802B63D4 860200B0 */ lh $v0, 0xb0($s0)
/* E24418 802B63D8 27A70030 */ addiu $a3, $sp, 0x30
/* E2441C 802B63DC E7A00028 */ swc1 $f0, 0x28($sp)
/* E24420 802B63E0 44820000 */ mtc1 $v0, $f0
/* E24424 802B63E4 00000000 */ nop
/* E24428 802B63E8 46800020 */ cvt.s.w $f0, $f0
/* E2442C 802B63EC 27A20034 */ addiu $v0, $sp, 0x34
/* E24430 802B63F0 E7A2002C */ swc1 $f2, 0x2c($sp)
/* E24434 802B63F4 E7A40030 */ swc1 $f4, 0x30($sp)
/* E24438 802B63F8 E7A00034 */ swc1 $f0, 0x34($sp)
/* E2443C 802B63FC AFA20010 */ sw $v0, 0x10($sp)
/* E24440 802B6400 27A20038 */ addiu $v0, $sp, 0x38
/* E24444 802B6404 AFA20014 */ sw $v0, 0x14($sp)
/* E24448 802B6408 27A2003C */ addiu $v0, $sp, 0x3c
/* E2444C 802B640C AFA20018 */ sw $v0, 0x18($sp)
/* E24450 802B6410 27A20040 */ addiu $v0, $sp, 0x40
/* E24454 802B6414 AFA2001C */ sw $v0, 0x1c($sp)
/* E24458 802B6418 27A20044 */ addiu $v0, $sp, 0x44
/* E2445C 802B641C 0C03791B */ jal player_raycast_below_cam_relative
/* E24460 802B6420 AFA20020 */ sw $v0, 0x20($sp)
/* E24464 802B6424 0C016F6A */ jal get_collider_type_by_id
/* E24468 802B6428 0040202D */ daddu $a0, $v0, $zero
/* E2446C 802B642C 304200FF */ andi $v0, $v0, 0xff
/* E24470 802B6430 2442FFFE */ addiu $v0, $v0, -2
/* E24474 802B6434 2C420002 */ sltiu $v0, $v0, 2
/* E24478 802B6438 1440000C */ bnez $v0, .L802B646C
/* E2447C 802B643C 00000000 */ nop
/* E24480 802B6440 0C039858 */ jal check_input_jump
/* E24484 802B6444 00000000 */ nop
/* E24488 802B6448 10400008 */ beqz $v0, .L802B646C
/* E2448C 802B644C 00000000 */ nop
/* E24490 802B6450 0C039769 */ jal set_action_state
/* E24494 802B6454 24040003 */ addiu $a0, $zero, 3
/* E24498 802B6458 8E020000 */ lw $v0, ($s0)
/* E2449C 802B645C 2403FFF1 */ addiu $v1, $zero, -0xf
/* E244A0 802B6460 00431024 */ and $v0, $v0, $v1
/* E244A4 802B6464 0C0AD82D */ jal func_802B60B4_E240F4
/* E244A8 802B6468 AE020000 */ sw $v0, ($s0)
.L802B646C:
/* E244AC 802B646C 8FBF004C */ lw $ra, 0x4c($sp)
/* E244B0 802B6470 8FB00048 */ lw $s0, 0x48($sp)
/* E244B4 802B6474 03E00008 */ jr $ra
/* E244B8 802B6478 27BD0050 */ addiu $sp, $sp, 0x50

View File

@ -1,41 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B647C_E244BC
/* E244BC 802B647C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* E244C0 802B6480 AFB00010 */ sw $s0, 0x10($sp)
/* E244C4 802B6484 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* E244C8 802B6488 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* E244CC 802B648C AFBF0014 */ sw $ra, 0x14($sp)
/* E244D0 802B6490 8E030000 */ lw $v1, ($s0)
/* E244D4 802B6494 04610015 */ bgez $v1, .L802B64EC
/* E244D8 802B6498 3C027FFF */ lui $v0, 0x7fff
/* E244DC 802B649C 3442FFFF */ ori $v0, $v0, 0xffff
/* E244E0 802B64A0 3C04000A */ lui $a0, 0xa
/* E244E4 802B64A4 34840006 */ ori $a0, $a0, 6
/* E244E8 802B64A8 00621024 */ and $v0, $v1, $v0
/* E244EC 802B64AC 2403FFF5 */ addiu $v1, $zero, -0xb
/* E244F0 802B64B0 00431024 */ and $v0, $v0, $v1
/* E244F4 802B64B4 8E030004 */ lw $v1, 4($s0)
/* E244F8 802B64B8 34420004 */ ori $v0, $v0, 4
/* E244FC 802B64BC 30631000 */ andi $v1, $v1, 0x1000
/* E24500 802B64C0 14600003 */ bnez $v1, .L802B64D0
/* E24504 802B64C4 AE020000 */ sw $v0, ($s0)
/* E24508 802B64C8 3C040001 */ lui $a0, 1
/* E2450C 802B64CC 34840008 */ ori $a0, $a0, 8
.L802B64D0:
/* E24510 802B64D0 0C037FBF */ jal suggest_player_anim_clearUnkFlag
/* E24514 802B64D4 00000000 */ nop
/* E24518 802B64D8 3C03800B */ lui $v1, %hi(gCameras)
/* E2451C 802B64DC 24631D80 */ addiu $v1, $v1, %lo(gCameras)
/* E24520 802B64E0 94620002 */ lhu $v0, 2($v1)
/* E24524 802B64E4 34420001 */ ori $v0, $v0, 1
/* E24528 802B64E8 A4620002 */ sh $v0, 2($v1)
.L802B64EC:
/* E2452C 802B64EC 960200C0 */ lhu $v0, 0xc0($s0)
/* E24530 802B64F0 24420001 */ addiu $v0, $v0, 1
/* E24534 802B64F4 A60200C0 */ sh $v0, 0xc0($s0)
/* E24538 802B64F8 8FBF0014 */ lw $ra, 0x14($sp)
/* E2453C 802B64FC 8FB00010 */ lw $s0, 0x10($sp)
/* E24540 802B6500 03E00008 */ jr $ra
/* E24544 802B6504 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,39 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B6508_E24548
/* E24548 802B6508 27BDFFE8 */ addiu $sp, $sp, -0x18
/* E2454C 802B650C AFB00010 */ sw $s0, 0x10($sp)
/* E24550 802B6510 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* E24554 802B6514 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* E24558 802B6518 AFBF0014 */ sw $ra, 0x14($sp)
/* E2455C 802B651C 8E030000 */ lw $v1, ($s0)
/* E24560 802B6520 04610012 */ bgez $v1, .L802B656C
/* E24564 802B6524 3C027FFF */ lui $v0, 0x7fff
/* E24568 802B6528 3442FFFF */ ori $v0, $v0, 0xffff
/* E2456C 802B652C 00621024 */ and $v0, $v1, $v0
/* E24570 802B6530 2403FFF5 */ addiu $v1, $zero, -0xb
/* E24574 802B6534 00431024 */ and $v0, $v0, $v1
/* E24578 802B6538 34420004 */ ori $v0, $v0, 4
/* E2457C 802B653C 3C04800B */ lui $a0, %hi(gCameras)
/* E24580 802B6540 24841D80 */ addiu $a0, $a0, %lo(gCameras)
/* E24584 802B6544 AE020000 */ sw $v0, ($s0)
/* E24588 802B6548 94820002 */ lhu $v0, 2($a0)
/* E2458C 802B654C 8E030004 */ lw $v1, 4($s0)
/* E24590 802B6550 34420001 */ ori $v0, $v0, 1
/* E24594 802B6554 30631000 */ andi $v1, $v1, 0x1000
/* E24598 802B6558 10600004 */ beqz $v1, .L802B656C
/* E2459C 802B655C A4820002 */ sh $v0, 2($a0)
/* E245A0 802B6560 3C04000A */ lui $a0, 0xa
/* E245A4 802B6564 0C037FBF */ jal suggest_player_anim_clearUnkFlag
/* E245A8 802B6568 34840006 */ ori $a0, $a0, 6
.L802B656C:
/* E245AC 802B656C 960200C0 */ lhu $v0, 0xc0($s0)
/* E245B0 802B6570 24420001 */ addiu $v0, $v0, 1
/* E245B4 802B6574 0C039454 */ jal phys_update_interact_collider
/* E245B8 802B6578 A60200C0 */ sh $v0, 0xc0($s0)
/* E245BC 802B657C 8FBF0014 */ lw $ra, 0x14($sp)
/* E245C0 802B6580 8FB00010 */ lw $s0, 0x10($sp)
/* E245C4 802B6584 03E00008 */ jr $ra
/* E245C8 802B6588 27BD0018 */ addiu $sp, $sp, 0x18
/* E245CC 802B658C 00000000 */ nop