From cff33e37f4218983740b91eff3684b232b29c28b Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Fri, 30 Oct 2020 19:11:46 -0400 Subject: [PATCH] UnkPositionFunc --- .../kmr_03/8C7F90/func_802401B0_8C8140.s | 30 -------- .../kmr_03/8C7F90/func_80240218_8C81A8.s | 72 ------------------- .../mac_01/8017D0/func_802446E0_804F60.s | 70 ------------------ include/functions.h | 1 + src/code_759b0_len_61b0.c | 2 +- src/world/area_kmr/kmr_03/8C7F90.c | 9 ++- src/world/area_mac/mac_00/7EB340.c | 20 +----- src/world/area_mac/mac_01/8017D0.c | 2 +- src/world/common/UnkPositionFunc.inc.c | 21 ++++++ 9 files changed, 32 insertions(+), 195 deletions(-) delete mode 100644 asm/nonmatchings/world/area_kmr/kmr_03/8C7F90/func_802401B0_8C8140.s delete mode 100644 asm/nonmatchings/world/area_kmr/kmr_03/8C7F90/func_80240218_8C81A8.s delete mode 100644 asm/nonmatchings/world/area_mac/mac_01/8017D0/func_802446E0_804F60.s create mode 100644 src/world/common/UnkPositionFunc.inc.c diff --git a/asm/nonmatchings/world/area_kmr/kmr_03/8C7F90/func_802401B0_8C8140.s b/asm/nonmatchings/world/area_kmr/kmr_03/8C7F90/func_802401B0_8C8140.s deleted file mode 100644 index be90193e13..0000000000 --- a/asm/nonmatchings/world/area_kmr/kmr_03/8C7F90/func_802401B0_8C8140.s +++ /dev/null @@ -1,30 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802401B0_8C8140 -/* 8C8140 802401B0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 8C8144 802401B4 AFB10014 */ sw $s1, 0x14($sp) -/* 8C8148 802401B8 0080882D */ daddu $s1, $a0, $zero -/* 8C814C 802401BC 0000202D */ daddu $a0, $zero, $zero -/* 8C8150 802401C0 AFBF0018 */ sw $ra, 0x18($sp) -/* 8C8154 802401C4 0C00EABB */ jal get_npc_unsafe -/* 8C8158 802401C8 AFB00010 */ sw $s0, 0x10($sp) -/* 8C815C 802401CC 0040802D */ daddu $s0, $v0, $zero -/* 8C8160 802401D0 C60C0038 */ lwc1 $f12, 0x38($s0) -/* 8C8164 802401D4 0C038022 */ jal func_800E0088 -/* 8C8168 802401D8 C60E0040 */ lwc1 $f14, 0x40($s0) -/* 8C816C 802401DC C6020018 */ lwc1 $f2, 0x18($s0) -/* 8C8170 802401E0 3C013F4C */ lui $at, 0x3f4c -/* 8C8174 802401E4 3421CCCD */ ori $at, $at, 0xcccd -/* 8C8178 802401E8 44812000 */ mtc1 $at, $f4 -/* 8C817C 802401EC 46020003 */ div.s $f0, $f0, $f2 -/* 8C8180 802401F0 46040002 */ mul.s $f0, $f0, $f4 -/* 8C8184 802401F4 00000000 */ nop -/* 8C8188 802401F8 4600018D */ trunc.w.s $f6, $f0 -/* 8C818C 802401FC E6260088 */ swc1 $f6, 0x88($s1) -/* 8C8190 80240200 8FBF0018 */ lw $ra, 0x18($sp) -/* 8C8194 80240204 8FB10014 */ lw $s1, 0x14($sp) -/* 8C8198 80240208 8FB00010 */ lw $s0, 0x10($sp) -/* 8C819C 8024020C 24020002 */ addiu $v0, $zero, 2 -/* 8C81A0 80240210 03E00008 */ jr $ra -/* 8C81A4 80240214 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/world/area_kmr/kmr_03/8C7F90/func_80240218_8C81A8.s b/asm/nonmatchings/world/area_kmr/kmr_03/8C7F90/func_80240218_8C81A8.s deleted file mode 100644 index 9f3aeef417..0000000000 --- a/asm/nonmatchings/world/area_kmr/kmr_03/8C7F90/func_80240218_8C81A8.s +++ /dev/null @@ -1,72 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80240218_8C81A8 -/* 8C81A8 80240218 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 8C81AC 8024021C AFB10014 */ sw $s1, 0x14($sp) -/* 8C81B0 80240220 0080882D */ daddu $s1, $a0, $zero -/* 8C81B4 80240224 AFBF0018 */ sw $ra, 0x18($sp) -/* 8C81B8 80240228 AFB00010 */ sw $s0, 0x10($sp) -/* 8C81BC 8024022C F7B80030 */ sdc1 $f24, 0x30($sp) -/* 8C81C0 80240230 F7B60028 */ sdc1 $f22, 0x28($sp) -/* 8C81C4 80240234 F7B40020 */ sdc1 $f20, 0x20($sp) -/* 8C81C8 80240238 8E30000C */ lw $s0, 0xc($s1) -/* 8C81CC 8024023C 8E050000 */ lw $a1, ($s0) -/* 8C81D0 80240240 0C0B1EAF */ jal get_variable -/* 8C81D4 80240244 26100004 */ addiu $s0, $s0, 4 -/* 8C81D8 80240248 8E050000 */ lw $a1, ($s0) -/* 8C81DC 8024024C 26100004 */ addiu $s0, $s0, 4 -/* 8C81E0 80240250 4482C000 */ mtc1 $v0, $f24 -/* 8C81E4 80240254 00000000 */ nop -/* 8C81E8 80240258 4680C620 */ cvt.s.w $f24, $f24 -/* 8C81EC 8024025C 0C0B1EAF */ jal get_variable -/* 8C81F0 80240260 0220202D */ daddu $a0, $s1, $zero -/* 8C81F4 80240264 8E050000 */ lw $a1, ($s0) -/* 8C81F8 80240268 26100004 */ addiu $s0, $s0, 4 -/* 8C81FC 8024026C 4482B000 */ mtc1 $v0, $f22 -/* 8C8200 80240270 00000000 */ nop -/* 8C8204 80240274 4680B5A0 */ cvt.s.w $f22, $f22 -/* 8C8208 80240278 0C0B1EAF */ jal get_variable -/* 8C820C 8024027C 0220202D */ daddu $a0, $s1, $zero -/* 8C8210 80240280 8E050000 */ lw $a1, ($s0) -/* 8C8214 80240284 4482A000 */ mtc1 $v0, $f20 -/* 8C8218 80240288 00000000 */ nop -/* 8C821C 8024028C 4680A520 */ cvt.s.w $f20, $f20 -/* 8C8220 80240290 0C0B1EAF */ jal get_variable -/* 8C8224 80240294 0220202D */ daddu $a0, $s1, $zero -/* 8C8228 80240298 44820000 */ mtc1 $v0, $f0 -/* 8C822C 8024029C 00000000 */ nop -/* 8C8230 802402A0 46800020 */ cvt.s.w $f0, $f0 -/* 8C8234 802402A4 46160001 */ sub.s $f0, $f0, $f22 -/* 8C8238 802402A8 4618A501 */ sub.s $f20, $f20, $f24 -/* 8C823C 802402AC 46140003 */ div.s $f0, $f0, $f20 -/* 8C8240 802402B0 46180602 */ mul.s $f24, $f0, $f24 -/* 8C8244 802402B4 00000000 */ nop -/* 8C8248 802402B8 3C028011 */ lui $v0, %hi(gPlayerStatus) -/* 8C824C 802402BC 2442EFC8 */ addiu $v0, $v0, %lo(gPlayerStatus) -/* 8C8250 802402C0 C4420028 */ lwc1 $f2, 0x28($v0) -/* 8C8254 802402C4 46020002 */ mul.s $f0, $f0, $f2 -/* 8C8258 802402C8 00000000 */ nop -/* 8C825C 802402CC 4618B581 */ sub.s $f22, $f22, $f24 -/* 8C8260 802402D0 46160000 */ add.s $f0, $f0, $f22 -/* 8C8264 802402D4 C4420030 */ lwc1 $f2, 0x30($v0) -/* 8C8268 802402D8 4600103C */ c.lt.s $f2, $f0 -/* 8C826C 802402DC 00000000 */ nop -/* 8C8270 802402E0 45000003 */ bc1f .L802402F0 -/* 8C8274 802402E4 24020001 */ addiu $v0, $zero, 1 -/* 8C8278 802402E8 080900BD */ j .L802402F4 -/* 8C827C 802402EC AE200084 */ sw $zero, 0x84($s1) -.L802402F0: -/* 8C8280 802402F0 AE220084 */ sw $v0, 0x84($s1) -.L802402F4: -/* 8C8284 802402F4 8FBF0018 */ lw $ra, 0x18($sp) -/* 8C8288 802402F8 8FB10014 */ lw $s1, 0x14($sp) -/* 8C828C 802402FC 8FB00010 */ lw $s0, 0x10($sp) -/* 8C8290 80240300 D7B80030 */ ldc1 $f24, 0x30($sp) -/* 8C8294 80240304 D7B60028 */ ldc1 $f22, 0x28($sp) -/* 8C8298 80240308 D7B40020 */ ldc1 $f20, 0x20($sp) -/* 8C829C 8024030C 24020002 */ addiu $v0, $zero, 2 -/* 8C82A0 80240310 03E00008 */ jr $ra -/* 8C82A4 80240314 27BD0038 */ addiu $sp, $sp, 0x38 -/* 8C82A8 80240318 00000000 */ nop -/* 8C82AC 8024031C 00000000 */ nop diff --git a/asm/nonmatchings/world/area_mac/mac_01/8017D0/func_802446E0_804F60.s b/asm/nonmatchings/world/area_mac/mac_01/8017D0/func_802446E0_804F60.s deleted file mode 100644 index 5daf4f046b..0000000000 --- a/asm/nonmatchings/world/area_mac/mac_01/8017D0/func_802446E0_804F60.s +++ /dev/null @@ -1,70 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802446E0_804F60 -/* 804F60 802446E0 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 804F64 802446E4 AFB10014 */ sw $s1, 0x14($sp) -/* 804F68 802446E8 0080882D */ daddu $s1, $a0, $zero -/* 804F6C 802446EC AFBF0018 */ sw $ra, 0x18($sp) -/* 804F70 802446F0 AFB00010 */ sw $s0, 0x10($sp) -/* 804F74 802446F4 F7B80030 */ sdc1 $f24, 0x30($sp) -/* 804F78 802446F8 F7B60028 */ sdc1 $f22, 0x28($sp) -/* 804F7C 802446FC F7B40020 */ sdc1 $f20, 0x20($sp) -/* 804F80 80244700 8E30000C */ lw $s0, 0xc($s1) -/* 804F84 80244704 8E050000 */ lw $a1, ($s0) -/* 804F88 80244708 0C0B1EAF */ jal get_variable -/* 804F8C 8024470C 26100004 */ addiu $s0, $s0, 4 -/* 804F90 80244710 8E050000 */ lw $a1, ($s0) -/* 804F94 80244714 26100004 */ addiu $s0, $s0, 4 -/* 804F98 80244718 4482C000 */ mtc1 $v0, $f24 -/* 804F9C 8024471C 00000000 */ nop -/* 804FA0 80244720 4680C620 */ cvt.s.w $f24, $f24 -/* 804FA4 80244724 0C0B1EAF */ jal get_variable -/* 804FA8 80244728 0220202D */ daddu $a0, $s1, $zero -/* 804FAC 8024472C 8E050000 */ lw $a1, ($s0) -/* 804FB0 80244730 26100004 */ addiu $s0, $s0, 4 -/* 804FB4 80244734 4482B000 */ mtc1 $v0, $f22 -/* 804FB8 80244738 00000000 */ nop -/* 804FBC 8024473C 4680B5A0 */ cvt.s.w $f22, $f22 -/* 804FC0 80244740 0C0B1EAF */ jal get_variable -/* 804FC4 80244744 0220202D */ daddu $a0, $s1, $zero -/* 804FC8 80244748 8E050000 */ lw $a1, ($s0) -/* 804FCC 8024474C 4482A000 */ mtc1 $v0, $f20 -/* 804FD0 80244750 00000000 */ nop -/* 804FD4 80244754 4680A520 */ cvt.s.w $f20, $f20 -/* 804FD8 80244758 0C0B1EAF */ jal get_variable -/* 804FDC 8024475C 0220202D */ daddu $a0, $s1, $zero -/* 804FE0 80244760 44820000 */ mtc1 $v0, $f0 -/* 804FE4 80244764 00000000 */ nop -/* 804FE8 80244768 46800020 */ cvt.s.w $f0, $f0 -/* 804FEC 8024476C 46160001 */ sub.s $f0, $f0, $f22 -/* 804FF0 80244770 4618A501 */ sub.s $f20, $f20, $f24 -/* 804FF4 80244774 46140003 */ div.s $f0, $f0, $f20 -/* 804FF8 80244778 46180602 */ mul.s $f24, $f0, $f24 -/* 804FFC 8024477C 00000000 */ nop -/* 805000 80244780 3C028011 */ lui $v0, %hi(gPlayerStatus) -/* 805004 80244784 2442EFC8 */ addiu $v0, $v0, %lo(gPlayerStatus) -/* 805008 80244788 C4420028 */ lwc1 $f2, 0x28($v0) -/* 80500C 8024478C 46020002 */ mul.s $f0, $f0, $f2 -/* 805010 80244790 00000000 */ nop -/* 805014 80244794 4618B581 */ sub.s $f22, $f22, $f24 -/* 805018 80244798 46160000 */ add.s $f0, $f0, $f22 -/* 80501C 8024479C C4420030 */ lwc1 $f2, 0x30($v0) -/* 805020 802447A0 4600103C */ c.lt.s $f2, $f0 -/* 805024 802447A4 00000000 */ nop -/* 805028 802447A8 45000003 */ bc1f .L802447B8 -/* 80502C 802447AC 24020001 */ addiu $v0, $zero, 1 -/* 805030 802447B0 080911EF */ j .L802447BC -/* 805034 802447B4 AE200084 */ sw $zero, 0x84($s1) -.L802447B8: -/* 805038 802447B8 AE220084 */ sw $v0, 0x84($s1) -.L802447BC: -/* 80503C 802447BC 8FBF0018 */ lw $ra, 0x18($sp) -/* 805040 802447C0 8FB10014 */ lw $s1, 0x14($sp) -/* 805044 802447C4 8FB00010 */ lw $s0, 0x10($sp) -/* 805048 802447C8 D7B80030 */ ldc1 $f24, 0x30($sp) -/* 80504C 802447CC D7B60028 */ ldc1 $f22, 0x28($sp) -/* 805050 802447D0 D7B40020 */ ldc1 $f20, 0x20($sp) -/* 805054 802447D4 24020002 */ addiu $v0, $zero, 2 -/* 805058 802447D8 03E00008 */ jr $ra -/* 80505C 802447DC 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/include/functions.h b/include/functions.h index 7a6b9ed69c..1f3d72256e 100644 --- a/include/functions.h +++ b/include/functions.h @@ -70,6 +70,7 @@ void set_curtain_fade(f32 scale); void fx_walk_normal(s32 arg0, f32 arg1, f32 arg2, f32 arg3, s32 arg4, s32 arg5); +f32 func_800E0088(f32, f32); s32 func_800EB168(s32); // Partner diff --git a/src/code_759b0_len_61b0.c b/src/code_759b0_len_61b0.c index 159fdaedc7..2f827e8efb 100644 --- a/src/code_759b0_len_61b0.c +++ b/src/code_759b0_len_61b0.c @@ -74,7 +74,7 @@ INCLUDE_ASM(s32, "code_759b0_len_61b0", func_800DFF78); INCLUDE_ASM(s32, "code_759b0_len_61b0", func_800DFFCC); -INCLUDE_ASM(s32, "code_759b0_len_61b0", func_800E0088); +INCLUDE_ASM(f32, "code_759b0_len_61b0", func_800E0088, f32 arg0, f32 arg1); void enable_player_shadow(void) { get_shadow_by_index(D_8010F094)->flags &= ~1; diff --git a/src/world/area_kmr/kmr_03/8C7F90.c b/src/world/area_kmr/kmr_03/8C7F90.c index ce0c09531c..99a6c04939 100644 --- a/src/world/area_kmr/kmr_03/8C7F90.c +++ b/src/world/area_kmr/kmr_03/8C7F90.c @@ -4,6 +4,11 @@ INCLUDE_ASM(s32, "world/area_kmr/kmr_03/8C7F90", func_80240000_8C7F90); #include "world/common/CheckPartnerFlags1000.inc.c" -INCLUDE_ASM(s32, "world/area_kmr/kmr_03/8C7F90", func_802401B0_8C8140); +ApiStatus func_802401B0_8C8140(ScriptInstance* script, s32 isInitialCall) { + Npc* npc = get_npc_unsafe(0); -INCLUDE_ASM(s32, "world/area_kmr/kmr_03/8C7F90", func_80240218_8C81A8); + script->varTable[1] = (func_800E0088(npc->pos.x, npc->pos.z) / npc->moveSpeed) * 0.8f; + return ApiStatus_DONE2; +} + +#include "world/common/UnkPositionFunc.inc.c" diff --git a/src/world/area_mac/mac_00/7EB340.c b/src/world/area_mac/mac_00/7EB340.c index 20fbbc1490..2678144c2e 100644 --- a/src/world/area_mac/mac_00/7EB340.c +++ b/src/world/area_mac/mac_00/7EB340.c @@ -78,25 +78,7 @@ INCLUDE_ASM(s32, "world/area_mac/mac_00/7EB340", func_80241E80_7ECB90); INCLUDE_ASM(s32, "world/area_mac/mac_00/7EB340", func_80241FF0_7ECD00); -ApiStatus func_80242078_7ECD88(ScriptInstance* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - PlayerStatus* playerStatus = PLAYER_STATUS; - f32 var0 = get_variable(script, *args++); - f32 var1 = get_variable(script, *args++); - f32 var2 = get_variable(script, *args++); - f32 var3 = get_variable(script, *args++); - f32 temp; - - temp = (var3 - var1) / (var2 - var0); - - if (playerStatus->position.z < ((temp * playerStatus->position.x) + (var1 - (temp * var0)))) { - script->varTable[0] = 0; - } else { - script->varTable[0] = 1; - } - - return ApiStatus_DONE2; -} +#include "world/common/UnkPositionFunc.inc.c" INCLUDE_ASM(s32, "world/area_mac/mac_00/7EB340", func_80242178_7ECE88); diff --git a/src/world/area_mac/mac_01/8017D0.c b/src/world/area_mac/mac_01/8017D0.c index 843baa05ff..464f97b3ee 100644 --- a/src/world/area_mac/mac_01/8017D0.c +++ b/src/world/area_mac/mac_01/8017D0.c @@ -142,7 +142,7 @@ INCLUDE_ASM(s32, "world/area_mac/mac_01/8017D0", func_802443E0_804C60); INCLUDE_ASM(s32, "world/area_mac/mac_01/8017D0", func_802446AC_804F2C); -INCLUDE_ASM(s32, "world/area_mac/mac_01/8017D0", func_802446E0_804F60); +#include "world/common/UnkPositionFunc.inc.c" INCLUDE_ASM(s32, "world/area_mac/mac_01/8017D0", func_802447E0_805060); diff --git a/src/world/common/UnkPositionFunc.inc.c b/src/world/common/UnkPositionFunc.inc.c new file mode 100644 index 0000000000..e55d810e98 --- /dev/null +++ b/src/world/common/UnkPositionFunc.inc.c @@ -0,0 +1,21 @@ +#include "common.h" + +static ApiStatus UnkPositionFunc(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + PlayerStatus* playerStatus = PLAYER_STATUS; + f32 var0 = get_variable(script, *args++); + f32 var1 = get_variable(script, *args++); + f32 var2 = get_variable(script, *args++); + f32 var3 = get_variable(script, *args++); + f32 temp; + + temp = (var3 - var1) / (var2 - var0); + + if (playerStatus->position.z < ((temp * playerStatus->position.x) + (var1 - (temp * var0)))) { + script->varTable[0] = 0; + } else { + script->varTable[0] = 1; + } + + return ApiStatus_DONE2; +}