From 4af26166bf4292abf313db3e1cac24ee74c11bfc Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Fri, 18 Dec 2020 23:11:54 +0900 Subject: [PATCH] 6 mo --- .../code_28910_len_5090/func_8004FD94.s | 38 ---- .../code_28910_len_5090/func_8004FE10.s | 31 ---- .../code_28910_len_5090/func_8004FEB0.s | 13 -- .../code_28910_len_5090/func_80050184.s | 13 -- .../code_28910_len_5090/func_8005083C.s | 21 --- .../code_28910_len_5090/func_80050C54.s | 8 - src/audio.h | 119 ++++++------ src/code_25f00_len_940.c | 49 +++-- src/code_28910_len_5090.c | 175 ++++++++++++++---- src/code_2e230_len_2190.c | 2 +- 10 files changed, 223 insertions(+), 246 deletions(-) delete mode 100644 asm/nonmatchings/code_28910_len_5090/func_8004FD94.s delete mode 100644 asm/nonmatchings/code_28910_len_5090/func_8004FE10.s delete mode 100644 asm/nonmatchings/code_28910_len_5090/func_8004FEB0.s delete mode 100644 asm/nonmatchings/code_28910_len_5090/func_80050184.s delete mode 100644 asm/nonmatchings/code_28910_len_5090/func_8005083C.s delete mode 100644 asm/nonmatchings/code_28910_len_5090/func_80050C54.s diff --git a/asm/nonmatchings/code_28910_len_5090/func_8004FD94.s b/asm/nonmatchings/code_28910_len_5090/func_8004FD94.s deleted file mode 100644 index 90cdb1b95e..0000000000 --- a/asm/nonmatchings/code_28910_len_5090/func_8004FD94.s +++ /dev/null @@ -1,38 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8004FD94 -/* 2B194 8004FD94 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 2B198 8004FD98 AFB10014 */ sw $s1, 0x14($sp) -/* 2B19C 8004FD9C 0080882D */ daddu $s1, $a0, $zero -/* 2B1A0 8004FDA0 AFBF0018 */ sw $ra, 0x18($sp) -/* 2B1A4 8004FDA4 AFB00010 */ sw $s0, 0x10($sp) -/* 2B1A8 8004FDA8 962500D6 */ lhu $a1, 0xd6($s1) -/* 2B1AC 8004FDAC 0C013F02 */ jal func_8004FC08 -/* 2B1B0 8004FDB0 963000D4 */ lhu $s0, 0xd4($s1) -/* 2B1B4 8004FDB4 1E000002 */ bgtz $s0, .L8004FDC0 -/* 2B1B8 8004FDB8 0040202D */ daddu $a0, $v0, $zero -/* 2B1BC 8004FDBC 24100001 */ addiu $s0, $zero, 1 -.L8004FDC0: -/* 2B1C0 8004FDC0 8E2200B0 */ lw $v0, 0xb0($s1) -/* 2B1C4 8004FDC4 00821023 */ subu $v0, $a0, $v0 -/* 2B1C8 8004FDC8 16000002 */ bnez $s0, .L8004FDD4 -/* 2B1CC 8004FDCC 0050001A */ div $zero, $v0, $s0 -/* 2B1D0 8004FDD0 0007000D */ break 7 -.L8004FDD4: -/* 2B1D4 8004FDD4 2401FFFF */ addiu $at, $zero, -1 -/* 2B1D8 8004FDD8 16010004 */ bne $s0, $at, .L8004FDEC -/* 2B1DC 8004FDDC 3C018000 */ lui $at, 0x8000 -/* 2B1E0 8004FDE0 14410002 */ bne $v0, $at, .L8004FDEC -/* 2B1E4 8004FDE4 00000000 */ nop -/* 2B1E8 8004FDE8 0006000D */ break 6 -.L8004FDEC: -/* 2B1EC 8004FDEC 00001012 */ mflo $v0 -/* 2B1F0 8004FDF0 AE3000BC */ sw $s0, 0xbc($s1) -/* 2B1F4 8004FDF4 AE2400B8 */ sw $a0, 0xb8($s1) -/* 2B1F8 8004FDF8 AE2200B4 */ sw $v0, 0xb4($s1) -/* 2B1FC 8004FDFC 8FBF0018 */ lw $ra, 0x18($sp) -/* 2B200 8004FE00 8FB10014 */ lw $s1, 0x14($sp) -/* 2B204 8004FE04 8FB00010 */ lw $s0, 0x10($sp) -/* 2B208 8004FE08 03E00008 */ jr $ra -/* 2B20C 8004FE0C 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_28910_len_5090/func_8004FE10.s b/asm/nonmatchings/code_28910_len_5090/func_8004FE10.s deleted file mode 100644 index 7c80d22698..0000000000 --- a/asm/nonmatchings/code_28910_len_5090/func_8004FE10.s +++ /dev/null @@ -1,31 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8004FE10 -/* 2B210 8004FE10 908200D6 */ lbu $v0, 0xd6($a0) -/* 2B214 8004FE14 948500D4 */ lhu $a1, 0xd4($a0) -/* 2B218 8004FE18 3046007F */ andi $a2, $v0, 0x7f -/* 2B21C 8004FE1C 54C00001 */ bnel $a2, $zero, .L8004FE24 -/* 2B220 8004FE20 00063600 */ sll $a2, $a2, 0x18 -.L8004FE24: -/* 2B224 8004FE24 58A00001 */ blezl $a1, .L8004FE2C -/* 2B228 8004FE28 24050001 */ addiu $a1, $zero, 1 -.L8004FE2C: -/* 2B22C 8004FE2C 8C8200C0 */ lw $v0, 0xc0($a0) -/* 2B230 8004FE30 00C21023 */ subu $v0, $a2, $v0 -/* 2B234 8004FE34 14A00002 */ bnez $a1, .L8004FE40 -/* 2B238 8004FE38 0045001A */ div $zero, $v0, $a1 -/* 2B23C 8004FE3C 0007000D */ break 7 -.L8004FE40: -/* 2B240 8004FE40 2401FFFF */ addiu $at, $zero, -1 -/* 2B244 8004FE44 14A10004 */ bne $a1, $at, .L8004FE58 -/* 2B248 8004FE48 3C018000 */ lui $at, 0x8000 -/* 2B24C 8004FE4C 14410002 */ bne $v0, $at, .L8004FE58 -/* 2B250 8004FE50 00000000 */ nop -/* 2B254 8004FE54 0006000D */ break 6 -.L8004FE58: -/* 2B258 8004FE58 00001012 */ mflo $v0 -/* 2B25C 8004FE5C AC8500CC */ sw $a1, 0xcc($a0) -/* 2B260 8004FE60 AC8600C8 */ sw $a2, 0xc8($a0) -/* 2B264 8004FE64 03E00008 */ jr $ra -/* 2B268 8004FE68 AC8200C4 */ sw $v0, 0xc4($a0) diff --git a/asm/nonmatchings/code_28910_len_5090/func_8004FEB0.s b/asm/nonmatchings/code_28910_len_5090/func_8004FEB0.s deleted file mode 100644 index cf397c0eb5..0000000000 --- a/asm/nonmatchings/code_28910_len_5090/func_8004FEB0.s +++ /dev/null @@ -1,13 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8004FEB0 -/* 2B2B0 8004FEB0 908200D4 */ lbu $v0, 0xd4($a0) -/* 2B2B4 8004FEB4 3042007F */ andi $v0, $v0, 0x7f -/* 2B2B8 8004FEB8 54400001 */ bnel $v0, $zero, .L8004FEC0 -/* 2B2BC 8004FEBC 00021600 */ sll $v0, $v0, 0x18 -.L8004FEC0: -/* 2B2C0 8004FEC0 ACA20018 */ sw $v0, 0x18($a1) -/* 2B2C4 8004FEC4 24020001 */ addiu $v0, $zero, 1 -/* 2B2C8 8004FEC8 03E00008 */ jr $ra -/* 2B2CC 8004FECC A0A20041 */ sb $v0, 0x41($a1) diff --git a/asm/nonmatchings/code_28910_len_5090/func_80050184.s b/asm/nonmatchings/code_28910_len_5090/func_80050184.s deleted file mode 100644 index d8725ef0c7..0000000000 --- a/asm/nonmatchings/code_28910_len_5090/func_80050184.s +++ /dev/null @@ -1,13 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80050184 -/* 2B584 80050184 908600D6 */ lbu $a2, 0xd6($a0) -/* 2B588 80050188 948200D4 */ lhu $v0, 0xd4($a0) -/* 2B58C 8005018C 8C840064 */ lw $a0, 0x64($a0) -/* 2B590 80050190 8CA30000 */ lw $v1, ($a1) -/* 2B594 80050194 00441021 */ addu $v0, $v0, $a0 -/* 2B598 80050198 A4A6003E */ sh $a2, 0x3e($a1) -/* 2B59C 8005019C ACA30004 */ sw $v1, 4($a1) -/* 2B5A0 800501A0 03E00008 */ jr $ra -/* 2B5A4 800501A4 ACA20000 */ sw $v0, ($a1) diff --git a/asm/nonmatchings/code_28910_len_5090/func_8005083C.s b/asm/nonmatchings/code_28910_len_5090/func_8005083C.s deleted file mode 100644 index 0132c9dde2..0000000000 --- a/asm/nonmatchings/code_28910_len_5090/func_8005083C.s +++ /dev/null @@ -1,21 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8005083C -/* 2BC3C 8005083C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 2BC40 80050840 00051040 */ sll $v0, $a1, 1 -/* 2BC44 80050844 00451021 */ addu $v0, $v0, $a1 -/* 2BC48 80050848 00021140 */ sll $v0, $v0, 5 -/* 2BC4C 8005084C 2442025C */ addiu $v0, $v0, 0x25c -/* 2BC50 80050850 00822821 */ addu $a1, $a0, $v0 -/* 2BC54 80050854 AFBF0010 */ sw $ra, 0x10($sp) -/* 2BC58 80050858 8CA20000 */ lw $v0, ($a1) -/* 2BC5C 8005085C 10400004 */ beqz $v0, .L80050870 -/* 2BC60 80050860 00000000 */ nop -/* 2BC64 80050864 A48600D4 */ sh $a2, 0xd4($a0) -/* 2BC68 80050868 0C013FB4 */ jal func_8004FED0 -/* 2BC6C 8005086C A08700D6 */ sb $a3, 0xd6($a0) -.L80050870: -/* 2BC70 80050870 8FBF0010 */ lw $ra, 0x10($sp) -/* 2BC74 80050874 03E00008 */ jr $ra -/* 2BC78 80050878 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_28910_len_5090/func_80050C54.s b/asm/nonmatchings/code_28910_len_5090/func_80050C54.s deleted file mode 100644 index 0bc0fdef1d..0000000000 --- a/asm/nonmatchings/code_28910_len_5090/func_80050C54.s +++ /dev/null @@ -1,8 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80050C54 -/* 2C054 80050C54 3C02800A */ lui $v0, %hi(D_8009A628) -/* 2C058 80050C58 8C42A628 */ lw $v0, %lo(D_8009A628)($v0) -/* 2C05C 80050C5C 03E00008 */ jr $ra -/* 2C060 80050C60 A0450021 */ sb $a1, 0x21($v0) diff --git a/src/audio.h b/src/audio.h index 70ead8cd00..d73408f1d4 100644 --- a/src/audio.h +++ b/src/audio.h @@ -42,32 +42,6 @@ typedef struct UnkAl4 { // maybe same as UnkAlC? /* 0x06 */ s8 unk_06; } UnkAl4; -typedef struct UnkAl3 { - /* 0x00 */ u32 unk_00; - /* 0x04 */ u32 unk_04; - /* 0x08 */ char unk_08[0x30]; - /* 0x38 */ u16 unk_38; - /* 0x3A */ s16 unk_3A; - /* 0x3C */ char unk_3C[0x2]; - /* 0x3E */ s16 unk_3E; - /* 0x40 */ s8 unk_40; - /* 0x41 */ s8 unk_41; - /* 0x42 */ s8 unk_42; - /* 0x43 */ s8 unk_43; - /* 0x44 */ char unk_44[0x2]; - /* 0x46 */ s16 unk_46; - /* 0x48 */ s8 unk_48; - /* 0x49 */ s8 unk_49; - /* 0x4A */ s8 unk_4A; - /* 0x4B */ s8 unk_4B; - /* 0x4C */ char unk_4C[0x9]; - /* 0x55 */ s8 unk_55; - /* 0x56 */ s8 unk_56; - /* 0x57 */ s8 unk_57; - /* 0x58 */ char unk_58[0x3]; - /* 0x5B */ s8 unk_5B; -} UnkAl3; - typedef struct UnkLen18 { /* 0x00 */ u16 unk_00; /* 0x02 */ char unk_02[0x2]; @@ -348,11 +322,25 @@ typedef struct UnkAl19E0 { } UnkAl19E0; // size = 0x19E0 typedef struct UnkAl60 { - /* 0x00 */ char unk_00[0x18]; + /* 0x00 */ u32 unk_00; + /* 0x04 */ u32 unk_04; + /* 0x08 */ char unk_08[0x4]; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ char unk_14[0x4]; /* 0x18 */ s32 unk_18; - /* 0x1C */ char unk_1C[0x8]; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; /* 0x24 */ s32 unk_24[2]; - /* 0x2C */ char unk_2C[0x18]; + /* 0x2C */ char unk_2C[0xC]; + /* 0x38 */ u16 unk_38; + /* 0x3A */ s16 unk_3A; + /* 0x3C */ char unk_3C[0x2]; + /* 0x3E */ s16 unk_3E; + /* 0x40 */ s8 unk_40; + /* 0x41 */ s8 unk_41; + /* 0x42 */ s8 unk_42; + /* 0x43 */ s8 unk_43; /* 0x44 */ u16 unk_44; /* 0x46 */ u16 unk_46; /* 0x48 */ u8 unk_48; @@ -360,9 +348,15 @@ typedef struct UnkAl60 { /* 0x4A */ u8 unk_4A; /* 0x4B */ u8 unk_4B; /* 0x4C */ u8 unk_4C; - /* 0x4D */ char unk_4D[0xB]; + /* 0x4D */ char unk_4D[0x8]; + /* 0x55 */ s8 unk_55; + /* 0x56 */ s8 unk_56; + /* 0x57 */ s8 unk_57; /* 0x58 */ u8 unk_58; - /* 0x59 */ char unk_59[0x7]; + /* 0x59 */ char unk_59[0x2]; + /* 0x5B */ s8 unk_5B; + /* 0x5C */ u8 unk_5C; + /* 0x5D */ char unk_5D[0x3]; } UnkAl60; // size = 0x60; typedef struct UnkAl24 { @@ -410,8 +404,7 @@ typedef struct UnkAlA9C { /* 0x0CC */ s32 unk_CC; /* 0x0D0 */ f32 unk_D0; /* 0x0D4 */ X16 unk_D4; - /* 0x0D6 */ u8 unk_D6; - /* 0x0D7 */ char unk_D7; + /* 0x0D6 */ X16 unk_D6; /* 0x0D8 */ char unk_D8[0x90]; /* 0x168 */ s32 unk_168; /* 0x16C */ char unk_16C[0x98]; @@ -458,7 +451,8 @@ typedef struct UnkAl834 { /* 0x00C */ s32 unk_0C; /* 0x010 */ char unk_10[0x10]; /* 0x020 */ u8 unk_20; - /* 0x021 */ char unk_21[0x813]; + /* 0x021 */ s8 unk_21; + /* 0x022 */ char unk_22[0x812]; } UnkAl834; extern u8 D_80078181; @@ -517,35 +511,35 @@ void func_8004E158(UnkAlA9C*, s32, s32, UnkAl19E0*); void func_8004E3A4(UnkAlA9C*); void func_8004E444(UnkAlA9C*); s16 func_8004E4B8(UnkAlA9C*); -void func_8004FBBC(UnkAlA9C*, UnkAl3*); +void func_8004FBBC(UnkAlA9C*, UnkAl60*); s32 func_8004FC08(UnkAlA9C*, u32); -void func_8004FCB4(UnkAlA9C*, UnkAl3*); -void func_8004FCE4(UnkAlA9C*, UnkAl3*); -void func_8004FD04(UnkAlA9C*, UnkAl3*); -void func_8004FD38(UnkAlA9C*, UnkAl3*); -void func_8004FD94(UnkAlA9C*, UnkAl3*); -void func_8004FE10(UnkAlA9C*, UnkAl3*); -void func_8004FE6C(UnkAlA9C*, UnkAl3*); -void func_8004FEB0(UnkAlA9C*, UnkAl3*); -void func_8004FED0(UnkAlA9C*, UnkAl3*); -void func_8004FF3C(UnkAlA9C*, UnkAl3*); -void func_8004FF58(UnkAlA9C*, UnkAl3*); -void func_8004FF70(UnkAlA9C*, UnkAl3*); -void func_8004FF88(UnkAlA9C*, UnkAl3*); -void func_8004FFA8(UnkAlA9C*, UnkAl3*); -void func_8004FFB4(UnkAlA9C*, UnkAl3*); -void func_8004FFC8(UnkAlA9C*, UnkAl3*); -void func_8004FFE4(UnkAlA9C*, UnkAl3*); -void func_8004FFF0(UnkAlA9C*, UnkAl3*); -void func_8004FFFC(UnkAlA9C*, UnkAl3*); -void func_80050004(UnkAlA9C*, UnkAl3*); -void func_80050020(UnkAlA9C*, UnkAl3*); -void func_80050128(UnkAlA9C*, UnkAl3*); -void func_8005015C(UnkAlA9C*, UnkAl3*); -void func_80050184(UnkAlA9C*, UnkAl3*); -void func_800501A8(UnkAlA9C*, UnkAl3*); -void func_800502F0(UnkAlA9C*, UnkAl3*); -void func_80050560(UnkAlA9C*, UnkAl3*); +void func_8004FCB4(UnkAlA9C*, UnkAl60*); +void func_8004FCE4(UnkAlA9C*, UnkAl60*); +void func_8004FD04(UnkAlA9C*, UnkAl60*); +void func_8004FD38(UnkAlA9C*, UnkAl60*); +void func_8004FD94(UnkAlA9C*, UnkAl60*); +void func_8004FE10(UnkAlA9C*, UnkAl60*); +void func_8004FE6C(UnkAlA9C*, UnkAl60*); +void func_8004FEB0(UnkAlA9C*, UnkAl60*); +void func_8004FED0(UnkAlA9C*, UnkAl60*); +void func_8004FF3C(UnkAlA9C*, UnkAl60*); +void func_8004FF58(UnkAlA9C*, UnkAl60*); +void func_8004FF70(UnkAlA9C*, UnkAl60*); +void func_8004FF88(UnkAlA9C*, UnkAl60*); +void func_8004FFA8(UnkAlA9C*, UnkAl60*); +void func_8004FFB4(UnkAlA9C*, UnkAl60*); +void func_8004FFC8(UnkAlA9C*, UnkAl60*); +void func_8004FFE4(UnkAlA9C*, UnkAl60*); +void func_8004FFF0(UnkAlA9C*, UnkAl60*); +void func_8004FFFC(UnkAlA9C*, UnkAl60*); +void func_80050004(UnkAlA9C*, UnkAl60*); +void func_80050020(UnkAlA9C*, UnkAl60*); +void func_80050128(UnkAlA9C*, UnkAl60*); +void func_8005015C(UnkAlA9C*, UnkAl60*); +void func_80050184(UnkAlA9C*, UnkAl60*); +void func_800501A8(UnkAlA9C*, UnkAl60*); +void func_800502F0(UnkAlA9C*, UnkAl60*); +void func_80050560(UnkAlA9C*, UnkAl60*); s32 func_80056068(s32, u8); s32 func_800506C8(s32, s32); s32 func_80050C30(u32); @@ -567,6 +561,7 @@ void func_80053A28(UnkAl1*); void func_80053A98(u8, u16, s32); void func_80053AEC(UnkAl1*, s16); void func_80053BA8(UnkAl1*); +s32 func_80053BE8(UnkAl19E0*, s32, s32, s32*); void func_80054CE0(s32, s32); void func_8005610C(void); diff --git a/src/code_25f00_len_940.c b/src/code_25f00_len_940.c index 7161120d3a..fcc62a7d10 100644 --- a/src/code_25f00_len_940.c +++ b/src/code_25f00_len_940.c @@ -76,26 +76,37 @@ void nuAuCleanDMABuffers(void) { } while (0); } +// Nop issue +#ifdef NON_MATCHING +void func_8004B328(s16 arg0, s32 arg1) { + s16 temp_a0_2; + s32 temp_s0; + + switch (arg0) { + case 2: + D_800A0F50 = func_80056D50(); + func_80056D34(); + break; + case 1: + temp_a0_2 = D_800A0F50; + temp_s0 = temp_a0_2 - (temp_a0_2 / 20) * arg1; + + if (temp_s0 < 0) { + temp_s0 = 0; + } + + temp_s0 = (temp_s0 * temp_s0) >> 0xF; + func_80056D44(temp_s0); + + if (temp_s0 == 0) { + D_80078180 = 0; + } + break; + } +} +#else INCLUDE_ASM(s32, "code_25f00_len_940", func_8004B328); -// void func_8004B328(s16 arg0, s32 arg1) { -// s32 temp_s0; -// s32 temp_hi; - -// switch (arg0) { -// case 2: -// D_800A0F50 = func_80056D50(); -// func_80056D34(); -// break; -// case 1: -// temp_s0 = D_800A0F50 - D_800A0F50 * (s32)(0x66666667) * arg1; - -// func_80056D44(temp_s0); -// if (temp_s0 == 0) { -// D_80078180 = 0; -// } -// break; -// } -// } +#endif void alLink(ALLink* element, ALLink* after) { element->next = after->next; diff --git a/src/code_28910_len_5090.c b/src/code_28910_len_5090.c index 45d7481c5c..686185e1cb 100644 --- a/src/code_28910_len_5090.c +++ b/src/code_28910_len_5090.c @@ -74,7 +74,7 @@ INCLUDE_ASM(void, "code_28910_len_5090", func_8004DFD4, UnkAl19E0* arg0); INCLUDE_ASM(s32, "code_28910_len_5090", func_8004E0F4); -void func_8004E158(UnkAlA9C *arg0, s32 arg1, s32 arg2, UnkAl19E0 *arg3) { +void func_8004E158(UnkAlA9C* arg0, s32 arg1, s32 arg2, UnkAl19E0* arg3) { s16 i; arg0->unk_00 = arg3; @@ -196,7 +196,7 @@ INCLUDE_ASM(s32, "code_28910_len_5090", func_8004EC04); INCLUDE_ASM(s32, "code_28910_len_5090", func_8004EC68); -void func_8004FBBC(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FBBC(UnkAlA9C* arg0, UnkAl60* arg1) { u32 unk_D4 = arg0->unk_D4.u16; s32 temp_v0; @@ -228,18 +228,14 @@ s32 func_8004FC08(UnkAlA9C* arg0, u32 arg1) { return ret * 100; } -// todo clean the below -void func_8004FCB4(UnkAlA9C* arg0, UnkAl3* arg1) { - s32 temp_v0; - s32 phi_v0; +void func_8004FCB4(UnkAlA9C* arg0, UnkAl60* arg1) { + s32 unk_D4 = arg0->unk_D4.u8[0] & 0x7F; - temp_v0 = (u8) arg0->unk_D4.u8[0] & 0x7F; - phi_v0 = temp_v0; - if (temp_v0 != 0) { - phi_v0 = temp_v0 << 0x18; + if (unk_D4 != 0) { + unk_D4 = unk_D4 << 0x18; } - arg0->unk_C0 = phi_v0; + arg0->unk_C0 = unk_D4; arg0->unk_CC = 0; arg0->unk_C8 = 0; arg0->unk_C4 = 0; @@ -247,16 +243,16 @@ void func_8004FCB4(UnkAlA9C* arg0, UnkAl3* arg1) { arg1->unk_41 = 1; } -void func_8004FCE4(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FCE4(UnkAlA9C* arg0, UnkAl60* arg1) { arg0->unk_20C = (s8)arg0->unk_D4.u8[0] * 100; } -void func_8004FD04(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FD04(UnkAlA9C* arg0, UnkAl60* arg1) { arg0->unk_00->unk_40[arg0->unk_235].unk_00 = arg0->unk_D4.u8[0]; arg0->unk_00->unk_40[arg0->unk_235].unk_01 = 1; } -void func_8004FD38(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FD38(UnkAlA9C* arg0, UnkAl60* arg1) { u8 unk_D4 = arg0->unk_D4.u8[0]; u32 temp_v1 = arg0->unk_4C[unk_D4]; @@ -269,71 +265,147 @@ void func_8004FD38(UnkAlA9C* arg0, UnkAl3* arg1) { } } -INCLUDE_ASM(void, "code_28910_len_5090", func_8004FD94, UnkAlA9C* arg0, UnkAl3* arg1); +void func_8004FD94(UnkAlA9C* arg0, UnkAl60* arg1) { + s32 unk_D4 = arg0->unk_D4.u16; + s32 temp_a0 = func_8004FC08(arg0, arg0->unk_D6.u16); + s32 temp_v0; -INCLUDE_ASM(void, "code_28910_len_5090", func_8004FE10, UnkAlA9C* arg0, UnkAl3* arg1); + if (unk_D4 <= 0) { + unk_D4 = 1; + } + temp_v0 = (temp_a0 - arg0->unk_B0) / unk_D4; -INCLUDE_ASM(void, "code_28910_len_5090", func_8004FE6C, UnkAlA9C* arg0, UnkAl3* arg1); + arg0->unk_BC = unk_D4; + arg0->unk_B8 = temp_a0; + arg0->unk_B4 = temp_v0; +} -INCLUDE_ASM(void, "code_28910_len_5090", func_8004FEB0, UnkAlA9C* arg0, UnkAl3* arg1); +void func_8004FE10(UnkAlA9C* arg0, UnkAl60* arg1) { + s32 temp_a1; + s32 temp_a2; -INCLUDE_ASM(void, "code_28910_len_5090", func_8004FED0, UnkAlA9C* arg0, UnkAl3* arg1); + temp_a1 = arg0->unk_D4.u16; + temp_a2 = arg0->unk_D6.u8[0] & 0x7F; -void func_8004FF3C(UnkAlA9C* arg0, UnkAl3* arg1) { + if (temp_a2 != 0) { + temp_a2 = temp_a2 << 0x18; + } + + if (temp_a1 <= 0) { + temp_a1 = 1; + } + + arg0->unk_CC = temp_a1; + arg0->unk_C8 = temp_a2; + arg0->unk_C4 = (temp_a2 - arg0->unk_C0) / temp_a1; +} + +// Not sure about types +#ifdef NON_MATCHING +void func_8004FE6C(UnkAlA9C* arg0, UnkAl60* arg1) { + u8 temp_v1 = arg0->unk_D4.u16; + + arg1->unk_44 = temp_v1; + arg1->unk_0C = func_80053BE8(arg0->unk_00, arg0->unk_D4.u8[0], temp_v1, &arg1->unk_10); +} +#else +INCLUDE_ASM(void, "code_28910_len_5090", func_8004FE6C, UnkAlA9C* arg0, UnkAl60* arg1); +#endif + +void func_8004FEB0(UnkAlA9C* arg0, UnkAl60* arg1) { + u32 unk_D4 = arg0->unk_D4.u8[0] & 0x7F; + + if (unk_D4 != 0) { + unk_D4 = unk_D4 << 0x18; + } + + arg1->unk_18 = unk_D4; + arg1->unk_41 = 1; +} + +// Type shenanigans +#ifdef NON_MATCHING +void func_8004FED0(UnkAlA9C* arg0, UnkAl60* arg1) { + s32 temp_a2 = arg0->unk_D4.u16; + s32 temp_a0 = arg0->unk_D6.u8[0] & 0x7F; + s32 phi_a2; + + if (temp_a0 != 0) { + temp_a0 = temp_a0 << 0x18; + } + + if (temp_a0 != arg1->unk_18) { + + + if (temp_a2 <= 0) { + phi_a2 = 1; + } else { + phi_a2 = temp_a2; + } + arg1->unk_24[0] = phi_a2; + arg1->unk_20 = temp_a0; + arg1->unk_1C = (temp_a0 - arg1->unk_18) / phi_a2; + } +} +#else +INCLUDE_ASM(void, "code_28910_len_5090", func_8004FED0, UnkAlA9C* arg0, UnkAl60* arg1); +#endif + +void func_8004FF3C(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_4A = arg0->unk_D4.u8[0] & 0x7F; arg1->unk_57 = 0; arg1->unk_42 = 1; } -void func_8004FF58(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FF58(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_4B = arg0->unk_D4.u8[0] & 0x7F; arg1->unk_43 = 1; } -void func_8004FF70(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FF70(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_49 = arg0->unk_D4.u8[0] & 0x7F; arg1->unk_41 = 1; } -void func_8004FF88(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FF88(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_46 = (s8)arg0->unk_D4.u8[0] * 100; } -void func_8004FFA8(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FFA8(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_48 = arg0->unk_D4.u8[0]; } -void func_8004FFB4(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FFB4(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_38 = arg0->unk_D4.u16; arg1->unk_40 = 1; } -void func_8004FFC8(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FFC8(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_3A = arg0->unk_D4.u8[0]; arg1->unk_55 = arg0->unk_D4.u8[1]; - arg1->unk_56 = arg0->unk_D6; + arg1->unk_56 = arg0->unk_D6.u8[0]; } -void func_8004FFE4(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FFE4(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_55 = arg0->unk_D4.u8[0]; } -void func_8004FFF0(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FFF0(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_56 = arg0->unk_D4.u8[0]; } -void func_8004FFFC(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_8004FFFC(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_56 = 0; } -void func_80050004(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_80050004(UnkAlA9C* arg0, UnkAl60* arg1) { arg1->unk_4A = arg0->unk_D4.u8[0] & 0x7F; arg1->unk_57 = arg0->unk_D4.u8[1] & 0x7F; } -INCLUDE_ASM(void, "code_28910_len_5090", func_80050020, UnkAlA9C* arg0, UnkAl3* arg1); +INCLUDE_ASM(void, "code_28910_len_5090", func_80050020, UnkAlA9C* arg0, UnkAl60* arg1); -void func_80050128(UnkAlA9C* arg0, UnkAl3* arg1) { +void func_80050128(UnkAlA9C* arg0, UnkAl60* arg1) { u8 temp_v0 = arg0->unk_D4.u8[0]; u8 temp_v1 = arg0->unk_4C[temp_v0]; @@ -344,15 +416,28 @@ void func_80050128(UnkAlA9C* arg0, UnkAl3* arg1) { } } -INCLUDE_ASM(void, "code_28910_len_5090", func_8005015C, UnkAlA9C* arg0, UnkAl3* arg1); +// unk_D4 type shenanigans +#ifdef NON_MATCHING +void func_8005015C(UnkAlA9C* arg0, UnkAl60* arg1) { + func_800560BC(arg0->unk_234, arg1->unk_5C, arg0->unk_D4.u16 >> 8); +} +#else +INCLUDE_ASM(void, "code_28910_len_5090", func_8005015C, UnkAlA9C* arg0, UnkAl60* arg1); +#endif -INCLUDE_ASM(void, "code_28910_len_5090", func_80050184, UnkAlA9C* arg0, UnkAl3* arg1); +void func_80050184(UnkAlA9C* arg0, UnkAl60* arg1) { + s32 temp = arg0->unk_D4.u16 + arg0->unk_64; -INCLUDE_ASM(void, "code_28910_len_5090", func_800501A8, UnkAlA9C* arg0, UnkAl3* arg1); + arg1->unk_3E = arg0->unk_D6.u8[0]; + arg1->unk_04 = arg1->unk_00; + arg1->unk_00 = temp; +} -INCLUDE_ASM(void, "code_28910_len_5090", func_800502F0, UnkAlA9C* arg0, UnkAl3* arg1); +INCLUDE_ASM(void, "code_28910_len_5090", func_800501A8, UnkAlA9C* arg0, UnkAl60* arg1); -void func_80050560(UnkAlA9C* arg0, UnkAl3* arg1) { +INCLUDE_ASM(void, "code_28910_len_5090", func_800502F0, UnkAlA9C* arg0, UnkAl60* arg1); + +void func_80050560(UnkAlA9C* arg0, UnkAl60* arg1) { } INCLUDE_ASM(s32, "code_28910_len_5090", func_80050568); @@ -369,7 +454,15 @@ INCLUDE_ASM(s32, "code_28910_len_5090", func_80050770); INCLUDE_ASM(s32, "code_28910_len_5090", func_80050818); -INCLUDE_ASM(s32, "code_28910_len_5090", func_8005083C); +void func_8005083C(UnkAlA9C* arg0, s32 arg1, s16 arg2, s8 arg3) { + UnkAl60* temp_a1 = &arg0->unk_25C[arg1]; + + if (temp_a1->unk_00 != 0) { + arg0->unk_D4.u16 = arg2; + arg0->unk_D6.u8[0] = arg3; + func_8004FED0(arg0, temp_a1); + } +} INCLUDE_ASM(s32, "code_28910_len_5090", func_8005087C); @@ -389,7 +482,9 @@ s32 func_80050C30(u32 arg0) { } } -INCLUDE_ASM(s32, "code_28910_len_5090", func_80050C54); +void func_80050C54(s32 arg0, s8 arg1) { + D_8009A628->unk_21 = arg1; +} INCLUDE_ASM(s32, "code_28910_len_5090", func_80050C64); diff --git a/src/code_2e230_len_2190.c b/src/code_2e230_len_2190.c index 3adc72b3fe..66328667e6 100644 --- a/src/code_2e230_len_2190.c +++ b/src/code_2e230_len_2190.c @@ -436,7 +436,7 @@ void func_80053BA8(UnkAl1* arg0) { } } -INCLUDE_ASM(s32, "code_2e230_len_2190", func_80053BE8); +INCLUDE_ASM(s32, "code_2e230_len_2190", func_80053BE8, UnkAl19E0* arg0, s32 arg1, s32 arg2, s32* arg3); INCLUDE_ASM(s32, "code_2e230_len_2190", func_80053C58);