diff --git a/asm/non_matchings/unknown_05CEF0/func_8005C2F0.s b/asm/non_matchings/unknown_05CEF0/func_8005C2F0.s deleted file mode 100644 index 8def8dab..00000000 --- a/asm/non_matchings/unknown_05CEF0/func_8005C2F0.s +++ /dev/null @@ -1,32 +0,0 @@ -glabel func_8005C2F0 -/* 05CEF0 8005C2F0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 05CEF4 8005C2F4 AFBF0014 */ sw $ra, 0x14($sp) -/* 05CEF8 8005C2F8 8C8F004C */ lw $t7, 0x4c($a0) -/* 05CEFC 8005C2FC 240E0005 */ li $t6, 5 -/* 05CF00 8005C300 A5EE0014 */ sh $t6, 0x14($t7) -/* 05CF04 8005C304 8C98004C */ lw $t8, 0x4c($a0) -/* 05CF08 8005C308 2419001E */ li $t9, 30 -/* 05CF0C 8005C30C A3000011 */ sb $zero, 0x11($t8) -/* 05CF10 8005C310 8C88004C */ lw $t0, 0x4c($a0) -/* 05CF14 8005C314 44802000 */ mtc1 $zero, $f4 -/* 05CF18 8005C318 A1190010 */ sb $t9, 0x10($t0) -/* 05CF1C 8005C31C 8C89004C */ lw $t1, 0x4c($a0) -/* 05CF20 8005C320 3C018012 */ lui $at, %hi(D_8011D5C0) # $at, 0x8012 -/* 05CF24 8005C324 A1200012 */ sb $zero, 0x12($t1) -/* 05CF28 8005C328 E4A4000C */ swc1 $f4, 0xc($a1) -/* 05CF2C 8005C32C C4860010 */ lwc1 $f6, 0x10($a0) -/* 05CF30 8005C330 00000000 */ nop -/* 05CF34 8005C334 E426D5C0 */ swc1 $f6, %lo(D_8011D5C0)($at) -/* 05CF38 8005C338 8CAA0118 */ lw $t2, 0x118($a1) -/* 05CF3C 8005C33C 00000000 */ nop -/* 05CF40 8005C340 11400004 */ beqz $t2, .L8005C354 -/* 05CF44 8005C344 8FBF0014 */ lw $ra, 0x14($sp) -/* 05CF48 8005C348 0C001AB2 */ jal func_80006AC8 -/* 05CF4C 8005C34C 00000000 */ nop -/* 05CF50 8005C350 8FBF0014 */ lw $ra, 0x14($sp) -.L8005C354: -/* 05CF54 8005C354 3C018012 */ lui $at, %hi(D_8011D5C4) # $at, 0x8012 -/* 05CF58 8005C358 A020D5C4 */ sb $zero, %lo(D_8011D5C4)($at) -/* 05CF5C 8005C35C 03E00008 */ jr $ra -/* 05CF60 8005C360 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/asm/non_matchings/unknown_05CEF0/func_8005CA78.s b/asm/non_matchings/unknown_05CEF0/func_8005CA78.s deleted file mode 100644 index 47fc6f79..00000000 --- a/asm/non_matchings/unknown_05CEF0/func_8005CA78.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_8005CA78 -/* 05D678 8005CA78 3C018012 */ lui $at, %hi(D_8011D5C8) # $at, 0x8012 -/* 05D67C 8005CA7C 03E00008 */ jr $ra -/* 05D680 8005CA80 AC24D5C8 */ sw $a0, %lo(D_8011D5C8)($at) - diff --git a/asm/non_matchings/unknown_05CEF0/func_8005CA84.s b/asm/non_matchings/unknown_05CEF0/func_8005CA84.s deleted file mode 100644 index 6dc70e1f..00000000 --- a/asm/non_matchings/unknown_05CEF0/func_8005CA84.s +++ /dev/null @@ -1,35 +0,0 @@ -glabel func_8005CA84 -/* 05D684 8005CA84 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 05D688 8005CA88 AFBF001C */ sw $ra, 0x1c($sp) -/* 05D68C 8005CA8C E7AC0020 */ swc1 $f12, 0x20($sp) -/* 05D690 8005CA90 E7AE0024 */ swc1 $f14, 0x24($sp) -/* 05D694 8005CA94 AFA60028 */ sw $a2, 0x28($sp) -/* 05D698 8005CA98 AFA7002C */ sw $a3, 0x2c($sp) -/* 05D69C 8005CA9C 00002025 */ move $a0, $zero -/* 05D6A0 8005CAA0 0C01BE53 */ jal get_random_number_from_range -/* 05D6A4 8005CAA4 24050001 */ li $a1, 1 -/* 05D6A8 8005CAA8 8FA8002C */ lw $t0, 0x2c($sp) -/* 05D6AC 8005CAAC 00021E00 */ sll $v1, $v0, 0x18 -/* 05D6B0 8005CAB0 00037603 */ sra $t6, $v1, 0x18 -/* 05D6B4 8005CAB4 15000002 */ bnez $t0, .L8005CAC0 -/* 05D6B8 8005CAB8 01C01825 */ move $v1, $t6 -/* 05D6BC 8005CABC 00001825 */ move $v1, $zero -.L8005CAC0: -/* 05D6C0 8005CAC0 3C0F8012 */ lui $t7, %hi(D_8011D5C8) # $t7, 0x8012 -/* 05D6C4 8005CAC4 8DEFD5C8 */ lw $t7, %lo(D_8011D5C8)($t7) -/* 05D6C8 8005CAC8 01034021 */ addu $t0, $t0, $v1 -/* 05D6CC 8005CACC 0008C040 */ sll $t8, $t0, 1 -/* 05D6D0 8005CAD0 01F8C821 */ addu $t9, $t7, $t8 -/* 05D6D4 8005CAD4 97240000 */ lhu $a0, ($t9) -/* 05D6D8 8005CAD8 8FA50020 */ lw $a1, 0x20($sp) -/* 05D6DC 8005CADC 8FA60024 */ lw $a2, 0x24($sp) -/* 05D6E0 8005CAE0 8FA70028 */ lw $a3, 0x28($sp) -/* 05D6E4 8005CAE4 24090004 */ li $t1, 4 -/* 05D6E8 8005CAE8 AFA90010 */ sw $t1, 0x10($sp) -/* 05D6EC 8005CAEC 0C002556 */ jal func_80009558 -/* 05D6F0 8005CAF0 AFA00014 */ sw $zero, 0x14($sp) -/* 05D6F4 8005CAF4 8FBF001C */ lw $ra, 0x1c($sp) -/* 05D6F8 8005CAF8 27BD0020 */ addiu $sp, $sp, 0x20 -/* 05D6FC 8005CAFC 03E00008 */ jr $ra -/* 05D700 8005CB00 00000000 */ nop - diff --git a/asm/non_matchings/unknown_05CEF0/func_8005CB04.s b/asm/non_matchings/unknown_05CEF0/func_8005CB04.s deleted file mode 100644 index 18971d49..00000000 --- a/asm/non_matchings/unknown_05CEF0/func_8005CB04.s +++ /dev/null @@ -1,28 +0,0 @@ -glabel func_8005CB04 -/* 05D704 8005CB04 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 05D708 8005CB08 AFBF0014 */ sw $ra, 0x14($sp) -/* 05D70C 8005CB0C 00803025 */ move $a2, $a0 -/* 05D710 8005CB10 AFA60018 */ sw $a2, 0x18($sp) -/* 05D714 8005CB14 00002025 */ move $a0, $zero -/* 05D718 8005CB18 0C01BE53 */ jal get_random_number_from_range -/* 05D71C 8005CB1C 24050001 */ li $a1, 1 -/* 05D720 8005CB20 8FA60018 */ lw $a2, 0x18($sp) -/* 05D724 8005CB24 00021E00 */ sll $v1, $v0, 0x18 -/* 05D728 8005CB28 00037603 */ sra $t6, $v1, 0x18 -/* 05D72C 8005CB2C 14C00002 */ bnez $a2, .L8005CB38 -/* 05D730 8005CB30 01C01825 */ move $v1, $t6 -/* 05D734 8005CB34 00001825 */ move $v1, $zero -.L8005CB38: -/* 05D738 8005CB38 3C0F8012 */ lui $t7, %hi(D_8011D5C8) # $t7, 0x8012 -/* 05D73C 8005CB3C 8DEFD5C8 */ lw $t7, %lo(D_8011D5C8)($t7) -/* 05D740 8005CB40 00C33021 */ addu $a2, $a2, $v1 -/* 05D744 8005CB44 0006C040 */ sll $t8, $a2, 1 -/* 05D748 8005CB48 01F8C821 */ addu $t9, $t7, $t8 -/* 05D74C 8005CB4C 97240000 */ lhu $a0, ($t9) -/* 05D750 8005CB50 0C000741 */ jal func_80001D04 -/* 05D754 8005CB54 00002825 */ move $a1, $zero -/* 05D758 8005CB58 8FBF0014 */ lw $ra, 0x14($sp) -/* 05D75C 8005CB5C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 05D760 8005CB60 03E00008 */ jr $ra -/* 05D764 8005CB64 00000000 */ nop - diff --git a/asm/non_matchings/unknown_05CEF0/func_8005D048.s b/asm/non_matchings/unknown_05CEF0/func_8005D048.s deleted file mode 100644 index 0ae500b2..00000000 --- a/asm/non_matchings/unknown_05CEF0/func_8005D048.s +++ /dev/null @@ -1,39 +0,0 @@ -glabel func_8005D048 -/* 05DC48 8005D048 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 05DC4C 8005D04C AFBF0014 */ sw $ra, 0x14($sp) -/* 05DC50 8005D050 AFA40020 */ sw $a0, 0x20($sp) -/* 05DC54 8005D054 AFA50024 */ sw $a1, 0x24($sp) -/* 05DC58 8005D058 AFA60028 */ sw $a2, 0x28($sp) -/* 05DC5C 8005D05C 0C006EB2 */ jal get_object_struct -/* 05DC60 8005D060 00002025 */ move $a0, $zero -/* 05DC64 8005D064 8FAF0024 */ lw $t7, 0x24($sp) -/* 05DC68 8005D068 AFA2001C */ sw $v0, 0x1c($sp) -/* 05DC6C 8005D06C 240E00FF */ li $t6, 255 -/* 05DC70 8005D070 0C0044E7 */ jal func_8001139C -/* 05DC74 8005D074 A1EE01F7 */ sb $t6, 0x1f7($t7) -/* 05DC78 8005D078 14400010 */ bnez $v0, .L8005D0BC -/* 05DC7C 8005D07C 8FBF0014 */ lw $ra, 0x14($sp) -/* 05DC80 8005D080 8FB90028 */ lw $t9, 0x28($sp) -/* 05DC84 8005D084 8FB80020 */ lw $t8, 0x20($sp) -/* 05DC88 8005D088 44993000 */ mtc1 $t9, $f6 -/* 05DC8C 8005D08C 8FA8001C */ lw $t0, 0x1c($sp) -/* 05DC90 8005D090 46803220 */ cvt.s.w $f8, $f6 -/* 05DC94 8005D094 C7040030 */ lwc1 $f4, 0x30($t8) -/* 05DC98 8005D098 C5100030 */ lwc1 $f16, 0x30($t0) -/* 05DC9C 8005D09C 46082280 */ add.s $f10, $f4, $f8 -/* 05DCA0 8005D0A0 8FAA0024 */ lw $t2, 0x24($sp) -/* 05DCA4 8005D0A4 4610503C */ c.lt.s $f10, $f16 -/* 05DCA8 8005D0A8 00000000 */ nop -/* 05DCAC 8005D0AC 45000002 */ bc1f .L8005D0B8 -/* 05DCB0 8005D0B0 24090040 */ li $t1, 64 -/* 05DCB4 8005D0B4 A14901F7 */ sb $t1, 0x1f7($t2) -.L8005D0B8: -/* 05DCB8 8005D0B8 8FBF0014 */ lw $ra, 0x14($sp) -.L8005D0BC: -/* 05DCBC 8005D0BC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 05DCC0 8005D0C0 03E00008 */ jr $ra -/* 05DCC4 8005D0C4 00000000 */ nop - -/* 05DCC8 8005D0C8 00000000 */ nop -/* 05DCCC 8005D0CC 00000000 */ nop - diff --git a/src/unknown_05CEF0.c b/src/unknown_05CEF0.c index ec1d1c23..33742c02 100644 --- a/src/unknown_05CEF0.c +++ b/src/unknown_05CEF0.c @@ -3,6 +3,7 @@ #include "unknown_05CEF0.h" +#include "structs.h" #include "types.h" #include "macros.h" @@ -19,17 +20,75 @@ s16 D_800DCDE0[16] = { /************ .bss ************/ -s32 D_8011D5C0; -s32 D_8011D5C4; -s32 D_8011D5C8; +f32 D_8011D5C0; +s8 D_8011D5C4; +u16 *D_8011D5C8; s32 D_8011D5CC; /******************************/ -GLOBAL_ASM("asm/non_matchings/unknown_05CEF0/func_8005C2F0.s") +void func_80009558(u16, f32, f32, f32, s32, s32); +s32 get_random_number_from_range(s32, s32); + +/* Unknown size */ +typedef struct unk8005C2F0 { + u8 pad0[0xC]; + f32 unkC; + u8 pad10[0x108]; + s32 unk118; +} unk8005C2F0; + +void func_8005C2F0(Object *object, unk8005C2F0 *arg1) { + object->unk4C->unk14 = 5; + object->unk4C->unk11 = 0; + object->unk4C->unk10 = 0x1E; + object->unk4C->unk12 = 0; + arg1->unkC = 0.0f; + D_8011D5C0 = object->y_position; + if (arg1->unk118 != 0) { + func_80006AC8(); + } + D_8011D5C4 = 0; +} + GLOBAL_ASM("asm/non_matchings/unknown_05CEF0/func_8005C364.s") -GLOBAL_ASM("asm/non_matchings/unknown_05CEF0/func_8005CA78.s") -GLOBAL_ASM("asm/non_matchings/unknown_05CEF0/func_8005CA84.s") -GLOBAL_ASM("asm/non_matchings/unknown_05CEF0/func_8005CB04.s") + +void func_8005CA78(s32 arg0) { + D_8011D5C8 = arg0; +} + +void func_8005CA84(f32 arg0, f32 arg1, f32 arg2, s32 arg3) { + s8 phi_v1 = get_random_number_from_range(0, 1); + if (arg3 == 0) { + phi_v1 = 0; + } + arg3 += phi_v1; + func_80009558(D_8011D5C8[arg3], arg0, arg1, arg2, 4, 0); +} + +void func_8005CB04(s32 arg0) { + s8 phi_v1 = get_random_number_from_range(0, 1); + if (arg0 == 0) { + phi_v1 = 0; + } + arg0 += phi_v1; + func_80001D04(D_8011D5C8[arg0], 0); +} + GLOBAL_ASM("asm/non_matchings/unknown_05CEF0/func_8005CB68.s") -GLOBAL_ASM("asm/non_matchings/unknown_05CEF0/func_8005D048.s") + +/* Unknown size */ +typedef struct unk8005D048 { + u8 pad0[0x1F7]; + u8 unk1F7; +} unk8005D048; + +void func_8005D048(Object *object, unk8005D048 *arg1, s32 arg2) { + Object *sp1C = get_object_struct(0); + arg1->unk1F7 = 0xFF; + if (!func_8001139C()) { + if ((object->unk30 + arg2) < sp1C->unk30) { + arg1->unk1F7 = 0x40; + } + } +}