diff --git a/include/common_structs.h b/include/common_structs.h index 01caa82655..4d879f868a 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -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; diff --git a/include/enums.h b/include/enums.h index eff2e75200..6c32d24503 100644 --- a/include/enums.h +++ b/include/enums.h @@ -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, diff --git a/include/functions.h b/include/functions.h index 1057638630..805ee9ed2c 100644 --- a/include/functions.h +++ b/include/functions.h @@ -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); diff --git a/src/7bb60_len_41b0.c b/src/7bb60_len_41b0.c index 83e92e1daf..b9a1e222f9 100644 --- a/src/7bb60_len_41b0.c +++ b/src/7bb60_len_41b0.c @@ -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); diff --git a/src/world/action/jump.c b/src/world/action/jump.c index 59c9ea6bf2..f135e05001 100644 --- a/src/world/action/jump.c +++ b/src/world/action/jump.c @@ -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(); +} diff --git a/ver/us/asm/nonmatchings/world/action/jump/func_802B6000_E24040.s b/ver/us/asm/nonmatchings/world/action/jump/func_802B6000_E24040.s deleted file mode 100644 index 326c408c52..0000000000 --- a/ver/us/asm/nonmatchings/world/action/jump/func_802B6000_E24040.s +++ /dev/null @@ -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 diff --git a/ver/us/asm/nonmatchings/world/action/jump/func_802B60B4_E240F4.s b/ver/us/asm/nonmatchings/world/action/jump/func_802B60B4_E240F4.s deleted file mode 100644 index 7bb2b8f060..0000000000 --- a/ver/us/asm/nonmatchings/world/action/jump/func_802B60B4_E240F4.s +++ /dev/null @@ -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 diff --git a/ver/us/asm/nonmatchings/world/action/jump/func_802B6198_E241D8.s b/ver/us/asm/nonmatchings/world/action/jump/func_802B6198_E241D8.s deleted file mode 100644 index 8ca3915592..0000000000 --- a/ver/us/asm/nonmatchings/world/action/jump/func_802B6198_E241D8.s +++ /dev/null @@ -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 diff --git a/ver/us/asm/nonmatchings/world/action/jump/func_802B6294_E242D4.s b/ver/us/asm/nonmatchings/world/action/jump/func_802B6294_E242D4.s deleted file mode 100644 index 8dbc557468..0000000000 --- a/ver/us/asm/nonmatchings/world/action/jump/func_802B6294_E242D4.s +++ /dev/null @@ -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 diff --git a/ver/us/asm/nonmatchings/world/action/jump/func_802B6348_E24388.s b/ver/us/asm/nonmatchings/world/action/jump/func_802B6348_E24388.s deleted file mode 100644 index 1b850d6e45..0000000000 --- a/ver/us/asm/nonmatchings/world/action/jump/func_802B6348_E24388.s +++ /dev/null @@ -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 diff --git a/ver/us/asm/nonmatchings/world/action/jump/func_802B647C_E244BC.s b/ver/us/asm/nonmatchings/world/action/jump/func_802B647C_E244BC.s deleted file mode 100644 index 68bab227fc..0000000000 --- a/ver/us/asm/nonmatchings/world/action/jump/func_802B647C_E244BC.s +++ /dev/null @@ -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 diff --git a/ver/us/asm/nonmatchings/world/action/jump/func_802B6508_E24548.s b/ver/us/asm/nonmatchings/world/action/jump/func_802B6508_E24548.s deleted file mode 100644 index 7d9c9c6f8a..0000000000 --- a/ver/us/asm/nonmatchings/world/action/jump/func_802B6508_E24548.s +++ /dev/null @@ -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