diff --git a/asm/non_matchings/unknown_00BC20/func_8001348C.s b/asm/non_matchings/unknown_00BC20/func_8001348C.s deleted file mode 100644 index fd3b4bde..00000000 --- a/asm/non_matchings/unknown_00BC20/func_8001348C.s +++ /dev/null @@ -1,53 +0,0 @@ -glabel func_8001348C -/* 01408C 8001348C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 014090 80013490 AFBF0024 */ sw $ra, 0x24($sp) -/* 014094 80013494 AFB00020 */ sw $s0, 0x20($sp) -/* 014098 80013498 0C004BE5 */ jal func_80012F94 -/* 01409C 8001349C 00808025 */ move $s0, $a0 -/* 0140A0 800134A0 860E0006 */ lh $t6, 6($s0) -/* 0140A4 800134A4 02002025 */ move $a0, $s0 -/* 0140A8 800134A8 31CF8000 */ andi $t7, $t6, 0x8000 -/* 0140AC 800134AC 11E0000B */ beqz $t7, .L800134DC -/* 0140B0 800134B0 3C058012 */ lui $a1, %hi(D_8011AE8C) # $a1, 0x8012 -/* 0140B4 800134B4 3C068012 */ lui $a2, %hi(D_8011AE90) # $a2, 0x8012 -/* 0140B8 800134B8 3C078012 */ lui $a3, %hi(D_8011AE94) # $a3, 0x8012 -/* 0140BC 800134BC 34188000 */ li $t8, 32768 -/* 0140C0 800134C0 AFB80010 */ sw $t8, 0x10($sp) -/* 0140C4 800134C4 24E7AE94 */ addiu $a3, %lo(D_8011AE94) # addiu $a3, $a3, -0x516c -/* 0140C8 800134C8 24C6AE90 */ addiu $a2, %lo(D_8011AE90) # addiu $a2, $a2, -0x5170 -/* 0140CC 800134CC 0C02CDD0 */ jal func_800B3740 -/* 0140D0 800134D0 24A5AE8C */ addiu $a1, %lo(D_8011AE8C) # addiu $a1, $a1, -0x5174 -/* 0140D4 800134D4 10000016 */ b .L80013530 -/* 0140D8 800134D8 00000000 */ nop -.L800134DC: -/* 0140DC 800134DC 8E190040 */ lw $t9, 0x40($s0) -/* 0140E0 800134E0 24010001 */ li $at, 1 -/* 0140E4 800134E4 83220053 */ lb $v0, 0x53($t9) -/* 0140E8 800134E8 00000000 */ nop -/* 0140EC 800134EC 14400005 */ bnez $v0, .L80013504 -/* 0140F0 800134F0 00000000 */ nop -/* 0140F4 800134F4 0C004832 */ jal func_800120C8 -/* 0140F8 800134F8 02002025 */ move $a0, $s0 -/* 0140FC 800134FC 1000000C */ b .L80013530 -/* 014100 80013500 00000000 */ nop -.L80013504: -/* 014104 80013504 14410006 */ bne $v0, $at, .L80013520 -/* 014108 80013508 24010004 */ li $at, 4 -/* 01410C 8001350C 0C004725 */ jal func_80011C94 -/* 014110 80013510 02002025 */ move $a0, $s0 -/* 014114 80013514 10000006 */ b .L80013530 -/* 014118 80013518 00000000 */ nop -/* 01411C 8001351C 24010004 */ li $at, 4 -.L80013520: -/* 014120 80013520 14410003 */ bne $v0, $at, .L80013530 -/* 014124 80013524 00000000 */ nop -/* 014128 80013528 0C0046B4 */ jal func_80011AD0 -/* 01412C 8001352C 02002025 */ move $a0, $s0 -.L80013530: -/* 014130 80013530 0C004D52 */ jal func_80013548 -/* 014134 80013534 02002025 */ move $a0, $s0 -/* 014138 80013538 8FBF0024 */ lw $ra, 0x24($sp) -/* 01413C 8001353C 8FB00020 */ lw $s0, 0x20($sp) -/* 014140 80013540 03E00008 */ jr $ra -/* 014144 80013544 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/include/structs.h b/include/structs.h index 8f666024..91c36900 100644 --- a/include/structs.h +++ b/include/structs.h @@ -210,7 +210,8 @@ typedef struct Player_3C { typedef struct Player_40 { u8 pad0[0xC]; f32 unkC; - u8 pad10[0x44]; + u8 pad10[0x43]; + s8 unk53; s8 unk54; s8 unk55; } Player_40; diff --git a/src/unknown_00BC20.c b/src/unknown_00BC20.c index e6769fe7..65719c89 100644 --- a/src/unknown_00BC20.c +++ b/src/unknown_00BC20.c @@ -97,6 +97,9 @@ extern s16 D_8011AE7C; extern s8 D_8011AE7E; extern s16 D_8011AE82; extern s32 D_8011AE88; +extern u32 D_8011AE8C; +extern u32 D_8011AE90; +extern u32 D_8011AE94; extern s32 D_8011AEB0[2]; extern s16 *D_8011AEB8; extern s32 D_8011AEBC; @@ -129,6 +132,7 @@ extern s32 D_8011AF08[2]; extern s32 D_8011AF10; extern s32 D_8011AF60; + /* Size: 0x40 bytes */ typedef struct unk800179D0 { s32 unk0; @@ -362,10 +366,10 @@ void func_8000CBF0(u32 *arg0, s32 arg1) { u32 *temp2; temp2 = *temp; if (temp2 != NULL) { - return; + return; // I can't get this second return to appear. } D_8011AE08[arg1] = arg0; - return; // I can't get this second return to appear. + return; } #endif @@ -594,7 +598,27 @@ void func_80012F30(Player *arg0) { } GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80012F94.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001348C.s") + + + + +void func_80013548(Player *arg0); + +void func_8001348C(Player *this){ + func_80012F94(this); + if(this->unk6 & 0x8000){ + func_800B3740(this, &D_8011AE8C, &D_8011AE90, &D_8011AE94, 32768); + } + else{ + if(this->descriptor_ptr->unk53 == 0) + func_800120C8(this); + else if(this->descriptor_ptr->unk53 == 1) + func_80011C94(this); + else if(this->descriptor_ptr->unk53 == 4) + func_80011AD0(this); + } + func_80013548(this); +} void func_80013548(Player *arg0) { if ((arg0->unk6 & 0x8000) == 0 && arg0->descriptor_ptr->unk54 == 1) {