From d132401ad587eea32fd8f9f9640d50c872387703 Mon Sep 17 00:00:00 2001 From: mzxrules Date: Fri, 3 Apr 2020 18:42:02 -0400 Subject: [PATCH] func_8006146C func_8006268C ok --- .../code/z_collision_check/func_8006146C.s | 20 ---- .../code/z_collision_check/func_80062530.s | 11 -- src/code/z_collision_check.c | 104 +++++++++++++++++- 3 files changed, 102 insertions(+), 33 deletions(-) delete mode 100644 asm/non_matchings/code/z_collision_check/func_8006146C.s diff --git a/asm/non_matchings/code/z_collision_check/func_8006146C.s b/asm/non_matchings/code/z_collision_check/func_8006146C.s deleted file mode 100644 index a21a876672..0000000000 --- a/asm/non_matchings/code/z_collision_check/func_8006146C.s +++ /dev/null @@ -1,20 +0,0 @@ -glabel func_8006146C -/* AD860C 8006146C 308200FF */ andi $v0, $a0, 0xff -/* AD8610 80061470 240100FF */ li $at, 255 -/* AD8614 80061474 14410003 */ bne $v0, $at, .L80061484 -/* AD8618 80061478 AFA40000 */ sw $a0, ($sp) -/* AD861C 8006147C 03E00008 */ jr $ra -/* AD8620 80061480 00001025 */ move $v0, $zero - -.L80061484: -/* AD8624 80061484 240100FE */ li $at, 254 -/* AD8628 80061488 54410004 */ bnel $v0, $at, .L8006149C -/* AD862C 8006148C 24020002 */ li $v0, 2 -/* AD8630 80061490 03E00008 */ jr $ra -/* AD8634 80061494 24020001 */ li $v0, 1 - -/* AD8638 80061498 24020002 */ li $v0, 2 -.L8006149C: -/* AD863C 8006149C 03E00008 */ jr $ra -/* AD8640 800614A0 00000000 */ nop - diff --git a/asm/non_matchings/code/z_collision_check/func_80062530.s b/asm/non_matchings/code/z_collision_check/func_80062530.s index abdc5bf8aa..d3e24b4539 100644 --- a/asm/non_matchings/code/z_collision_check/func_80062530.s +++ b/asm/non_matchings/code/z_collision_check/func_80062530.s @@ -101,14 +101,3 @@ glabel func_80062530 /* AD9820 80062680 8FBE0040 */ lw $fp, 0x40($sp) /* AD9824 80062684 03E00008 */ jr $ra /* AD9828 80062688 27BD0048 */ addiu $sp, $sp, 0x48 - -/* AD982C 8006268C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* AD9830 80062690 AFBF001C */ sw $ra, 0x1c($sp) -/* AD9834 80062694 AFA00010 */ sw $zero, 0x10($sp) -/* AD9838 80062698 0C01894C */ jal func_80062530 -/* AD983C 8006269C AFA00014 */ sw $zero, 0x14($sp) -/* AD9840 800626A0 8FBF001C */ lw $ra, 0x1c($sp) -/* AD9844 800626A4 27BD0020 */ addiu $sp, $sp, 0x20 -/* AD9848 800626A8 03E00008 */ jr $ra -/* AD984C 800626AC 00000000 */ nop - diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c index bb2b8cb0c4..0c69cb0927 100644 --- a/src/code/z_collision_check.c +++ b/src/code/z_collision_check.c @@ -1523,8 +1523,15 @@ void func_8006139C(GlobalContext* globalCtx, CollisionCheckContext* check) { } } - -#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8006146C.s") +s32 func_8006146C(u8 unk) { + if (unk == 0xFF) { + return 0; + } + if (unk == 0xFE) { + return 1; + } + return 2; +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_800614A4.s") @@ -1542,6 +1549,13 @@ void func_8006139C(GlobalContext* globalCtx, CollisionCheckContext* check) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_80061ED4.s") //func_80061ED4 a1 = ActorDamageChart +//void func_80061ED4(void* arg0, ? 32 arg1, void* arg2) { +// arg0->unk0 = arg1; +// arg0->unk17 = (u8)arg2->unk0; +// arg0->unk10 = (s16)arg2->unk2; +// arg0->unk12 = (s16)arg2->unk4; +// arg0->unk16 = (u8)arg2->unk6; +//} #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_80061EFC.s") @@ -1550,6 +1564,92 @@ void func_8006139C(GlobalContext* globalCtx, CollisionCheckContext* check) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_800622E4.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_80062530.s") +/* +s32 func_80062530(s32 arg0, void* arg1, UNK_TYPE arg2, UNK_TYPE arg3, void* arg4, s32 arg5) { + s32 temp_ret; + s32 temp_s4; + s32 temp_v0; + void* temp_a2; + void* temp_s1; + void* temp_s1_2; + void* temp_v0_2; + void* phi_s1; + void* phi_v1; + s32 phi_v0; + s32 phi_a1; + s32 phi_s4; + s32 phi_s4_2; + s32 phi_s4_3; + + temp_s1 = arg1 + 0x1C4; + phi_s4 = 0; + if (temp_s1 < (u32)((arg1 + (arg1->unk1C0 * 4)) + 0x1C4)) { + phi_s1 = temp_s1; + phi_s4_3 = 0; + loop_2: + phi_s4_2 = phi_s4_3; + if (func_80061BF4(*phi_s1) != 1) { + phi_a1 = 0; + if (arg5 > 0) { + phi_v1 = arg4; + phi_v0 = 0; + loop_5: + temp_v0 = phi_v0 + 1; + if ((*phi_s1)->unk0 == *phi_v1) { + phi_a1 = 1; + } + else { + phi_v1 = phi_v1 + 4; + phi_v0 = temp_v0; + phi_a1 = 0; + if (temp_v0 != arg5) { + goto loop_5; + } + } + } + phi_s4_2 = phi_s4_3; + if (phi_a1 != 1) { + temp_a2 = *phi_s1; + temp_v0_2 = &D_8011E018 + (temp_a2->unk15 * 4); + if (*temp_v0_2 == 0) { + osSyncPrintf("CollisionCheck_generalLineOcCheck():未対応 %dタイプ\n", temp_a2->unk15, temp_a2, arg2); + //EUC-JP: 未対応 %dタイプ | %d's type is not supported + phi_s4_2 = phi_s4_3; + block_13: + temp_s1_2 = phi_s1 + 4; + phi_s1 = temp_s1_2; + phi_s4 = phi_s4_2; + phi_s4_3 = phi_s4_2; + if (temp_s1_2 < (u32)((arg1 + (arg1->unk1C0 * 4)) + 0x1C4)) { + goto loop_2; + } + } + else { + temp_ret = *temp_v0_2(arg0, arg1, temp_a2, arg2, arg3); + temp_s4 = temp_ret; + phi_s4 = temp_s4; + phi_s4_2 = temp_s4; + if (temp_ret == 0) { + block_12: + goto block_13; + } + } + } + else { + goto block_12; + } + } + else { + goto block_12; + } + } + return phi_s4; +} +*/ + +void func_8006268C(GlobalContext* arg0, CollisionCheckContext* arg1, UNK_TYPE arg2, UNK_TYPE arg3) { + func_80062530(arg0, arg1, arg2, arg3, 0, 0); +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_800626B0.s")