From c8e5629a1f291210bf770a592336bf186edb09a1 Mon Sep 17 00:00:00 2001 From: Faschz Date: Mon, 6 Jul 2020 23:17:05 -0500 Subject: [PATCH] Decomp 12 functions in unknown_005740 func_8000C8B4, func_8000E128, func_8000E138, func_8000E148, func_8000E158, func_8000E184, func_8000E194, func_8000E1B8, func_8000E1CC, func_8000E1DC, func_8000E4BC, and func_8000E4C8 --- .../unknown_005740/func_8000C8B4.s | 22 ----- .../unknown_005740/func_8000E128.s | 6 -- .../unknown_005740/func_8000E138.s | 6 -- .../unknown_005740/func_8000E148.s | 6 -- .../unknown_005740/func_8000E158.s | 15 ---- .../unknown_005740/func_8000E184.s | 6 -- .../unknown_005740/func_8000E194.s | 11 --- .../unknown_005740/func_8000E1B8.s | 7 -- .../unknown_005740/func_8000E1CC.s | 6 -- .../unknown_005740/func_8000E1DC.s | 6 -- .../unknown_005740/func_8000E4BC.s | 5 -- .../unknown_005740/func_8000E4C8.s | 6 -- src/mips1/unknown_005740.c | 88 ++++++++++++++++--- 13 files changed, 76 insertions(+), 114 deletions(-) delete mode 100644 asm/non_matchings/unknown_005740/func_8000C8B4.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E128.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E138.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E148.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E158.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E184.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E194.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E1B8.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E1CC.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E1DC.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E4BC.s delete mode 100644 asm/non_matchings/unknown_005740/func_8000E4C8.s diff --git a/asm/non_matchings/unknown_005740/func_8000C8B4.s b/asm/non_matchings/unknown_005740/func_8000C8B4.s deleted file mode 100644 index 174c6b1d..00000000 --- a/asm/non_matchings/unknown_005740/func_8000C8B4.s +++ /dev/null @@ -1,22 +0,0 @@ -glabel func_8000C8B4 -/* 00D4B4 8000C8B4 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 -/* 00D4B8 8000C8B8 8DCE0300 */ lw $t6, %lo(osTvType)($t6) -/* 00D4BC 8000C8BC 00000000 */ nop -/* 00D4C0 8000C8C0 15C00003 */ bnez $t6, .L8000C8D0 -/* 00D4C4 8000C8C4 00000000 */ nop -/* 00D4C8 8000C8C8 04810003 */ bgez $a0, .L8000C8D8 -/* 00D4CC 8000C8CC 00041080 */ sll $v0, $a0, 2 -.L8000C8D0: -/* 00D4D0 8000C8D0 03E00008 */ jr $ra -/* 00D4D4 8000C8D4 00801025 */ move $v0, $a0 - -.L8000C8D8: -/* 00D4D8 8000C8D8 00441021 */ addu $v0, $v0, $a0 -/* 00D4DC 8000C8DC 24010006 */ li $at, 6 -/* 00D4E0 8000C8E0 0041001A */ div $zero, $v0, $at -/* 00D4E4 8000C8E4 00001012 */ mflo $v0 -/* 00D4E8 8000C8E8 00000000 */ nop -/* 00D4EC 8000C8EC 00000000 */ nop -/* 00D4F0 8000C8F0 03E00008 */ jr $ra -/* 00D4F4 8000C8F4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_8000E128.s b/asm/non_matchings/unknown_005740/func_8000E128.s deleted file mode 100644 index 9621130b..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E128.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_8000E128 -/* 00ED28 8000E128 240E8000 */ li $t6, -32768 -/* 00ED2C 8000E12C 3C01800E */ lui $at, 0x800e -/* 00ED30 8000E130 03E00008 */ jr $ra -/* 00ED34 8000E134 A42EC708 */ sh $t6, -0x38f8($at) - diff --git a/asm/non_matchings/unknown_005740/func_8000E138.s b/asm/non_matchings/unknown_005740/func_8000E138.s deleted file mode 100644 index 400c530f..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E138.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_8000E138 -/* 00ED38 8000E138 3C028012 */ lui $v0, %hi(D_8011AD20) # $v0, 0x8012 -/* 00ED3C 8000E13C 8042AD20 */ lb $v0, %lo(D_8011AD20)($v0) -/* 00ED40 8000E140 03E00008 */ jr $ra -/* 00ED44 8000E144 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_8000E148.s b/asm/non_matchings/unknown_005740/func_8000E148.s deleted file mode 100644 index e96ad81a..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E148.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_8000E148 -/* 00ED48 8000E148 3C02800E */ lui $v0, %hi(D_800DC71C) # $v0, 0x800e -/* 00ED4C 8000E14C 8042C71C */ lb $v0, %lo(D_800DC71C)($v0) -/* 00ED50 8000E150 03E00008 */ jr $ra -/* 00ED54 8000E154 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_8000E158.s b/asm/non_matchings/unknown_005740/func_8000E158.s deleted file mode 100644 index 07339ea0..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E158.s +++ /dev/null @@ -1,15 +0,0 @@ -glabel func_8000E158 -/* 00ED58 8000E158 3C0E800E */ lui $t6, %hi(D_800DC740) # $t6, 0x800e -/* 00ED5C 8000E15C 81CEC740 */ lb $t6, %lo(D_800DC740)($t6) -/* 00ED60 8000E160 00001025 */ move $v0, $zero -/* 00ED64 8000E164 11C00005 */ beqz $t6, .L8000E17C -/* 00ED68 8000E168 00000000 */ nop -/* 00ED6C 8000E16C 3C02800E */ lui $v0, %hi(D_800DC73C) # $v0, 0x800e -/* 00ED70 8000E170 8042C73C */ lb $v0, %lo(D_800DC73C)($v0) -/* 00ED74 8000E174 03E00008 */ jr $ra -/* 00ED78 8000E178 00000000 */ nop - -.L8000E17C: -/* 00ED7C 8000E17C 03E00008 */ jr $ra -/* 00ED80 8000E180 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_8000E184.s b/asm/non_matchings/unknown_005740/func_8000E184.s deleted file mode 100644 index a783a4e1..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E184.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_8000E184 -/* 00ED84 8000E184 3C02800E */ lui $v0, %hi(D_800DC748) # $v0, 0x800e -/* 00ED88 8000E188 8042C748 */ lb $v0, %lo(D_800DC748)($v0) -/* 00ED8C 8000E18C 03E00008 */ jr $ra -/* 00ED90 8000E190 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_8000E194.s b/asm/non_matchings/unknown_005740/func_8000E194.s deleted file mode 100644 index bf397a9b..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E194.s +++ /dev/null @@ -1,11 +0,0 @@ -glabel func_8000E194 -/* 00ED94 8000E194 3C02800E */ lui $v0, %hi(D_800DC73C) # $v0, 0x800e -/* 00ED98 8000E198 2442C73C */ addiu $v0, %lo(D_800DC73C) # addiu $v0, $v0, -0x38c4 -/* 00ED9C 8000E19C 804E0000 */ lb $t6, ($v0) -/* 00EDA0 8000E1A0 240F0001 */ li $t7, 1 -/* 00EDA4 8000E1A4 01EEC023 */ subu $t8, $t7, $t6 -/* 00EDA8 8000E1A8 A0580000 */ sb $t8, ($v0) -/* 00EDAC 8000E1AC 3C01800E */ lui $at, 0x800e -/* 00EDB0 8000E1B0 03E00008 */ jr $ra -/* 00EDB4 8000E1B4 A020C740 */ sb $zero, -0x38c0($at) - diff --git a/asm/non_matchings/unknown_005740/func_8000E1B8.s b/asm/non_matchings/unknown_005740/func_8000E1B8.s deleted file mode 100644 index 7132fb54..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E1B8.s +++ /dev/null @@ -1,7 +0,0 @@ -glabel func_8000E1B8 -/* 00EDB8 8000E1B8 3C01800E */ lui $at, %hi(D_800DC73C) # $at, 0x800e -/* 00EDBC 8000E1BC A020C73C */ sb $zero, %lo(D_800DC73C)($at) -/* 00EDC0 8000E1C0 3C01800E */ lui $at, 0x800e -/* 00EDC4 8000E1C4 03E00008 */ jr $ra -/* 00EDC8 8000E1C8 A020C740 */ sb $zero, -0x38c0($at) - diff --git a/asm/non_matchings/unknown_005740/func_8000E1CC.s b/asm/non_matchings/unknown_005740/func_8000E1CC.s deleted file mode 100644 index 59b141f0..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E1CC.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_8000E1CC -/* 00EDCC 8000E1CC 3C028012 */ lui $v0, %hi(D_8011AE02) # $v0, 0x8012 -/* 00EDD0 8000E1D0 8042AE02 */ lb $v0, %lo(D_8011AE02)($v0) -/* 00EDD4 8000E1D4 03E00008 */ jr $ra -/* 00EDD8 8000E1D8 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_8000E1DC.s b/asm/non_matchings/unknown_005740/func_8000E1DC.s deleted file mode 100644 index 1063e640..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E1DC.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_8000E1DC -/* 00EDDC 8000E1DC 3C028012 */ lui $v0, %hi(D_8011AE03) # $v0, 0x8012 -/* 00EDE0 8000E1E0 8042AE03 */ lb $v0, %lo(D_8011AE03)($v0) -/* 00EDE4 8000E1E4 03E00008 */ jr $ra -/* 00EDE8 8000E1E8 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_8000E4BC.s b/asm/non_matchings/unknown_005740/func_8000E4BC.s deleted file mode 100644 index d3312a7d..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E4BC.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_8000E4BC -/* 00F0BC 8000E4BC 3C018012 */ lui $at, 0x8012 -/* 00F0C0 8000E4C0 03E00008 */ jr $ra -/* 00F0C4 8000E4C4 A024AEF4 */ sb $a0, -0x510c($at) - diff --git a/asm/non_matchings/unknown_005740/func_8000E4C8.s b/asm/non_matchings/unknown_005740/func_8000E4C8.s deleted file mode 100644 index a17e080a..00000000 --- a/asm/non_matchings/unknown_005740/func_8000E4C8.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_8000E4C8 -/* 00F0C8 8000E4C8 3C028012 */ lui $v0, %hi(D_8011AEF4) # $v0, 0x8012 -/* 00F0CC 8000E4CC 9042AEF4 */ lbu $v0, %lo(D_8011AEF4)($v0) -/* 00F0D0 8000E4D0 03E00008 */ jr $ra -/* 00F0D4 8000E4D4 00000000 */ nop - diff --git a/src/mips1/unknown_005740.c b/src/mips1/unknown_005740.c index dcd9036a..2e31eeef 100644 --- a/src/mips1/unknown_005740.c +++ b/src/mips1/unknown_005740.c @@ -4,6 +4,19 @@ #include "types.h" #include "macros.h" +extern s8 D_800DC71C; +extern s8 D_800DC73C; +extern s8 D_800DC740; +extern s8 D_800DC748; +extern s8 D_8011AD20; +extern s8 D_8011AE02; +extern s8 D_8011AE03; +extern u8 D_8011AEF4; + +extern s16 D_800DC708; + +extern s32 osTvType; + GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80004B40.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800050D0.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80005254.s") @@ -60,26 +73,77 @@ GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000C460.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000C604.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000C718.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000C844.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000C8B4.s") + +s32 func_8000C8B4(s32 arg0) { + if (osTvType != 0 || arg0 < 0) { + return arg0; + } + else { + return (arg0 * 5) / 6; + } +} + GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000C8F8.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000CBC0.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000CBF0.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000CC20.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000CC7C.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E0B0.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E128.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E138.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E148.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E158.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E184.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E194.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E1B8.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E1CC.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E1DC.s") + +void func_8000E128(void) { + D_800DC708 = 0x8000; +} + +s8 func_8000E138(void) { + return D_8011AD20; +} + +s8 func_8000E148(void) { + return D_800DC71C; +} + +s8 func_8000E158(void) { + if (D_800DC740 != 0) { + return D_800DC73C; + } + else { + return 0; + } +} + +s8 func_8000E184(void) { + return D_800DC748; +} + +void func_8000E194(void) { + D_800DC73C = 1 - D_800DC73C; + D_800DC740 = 0; +} + +void func_8000E1B8(void) { + D_800DC73C = 0; + D_800DC740 = 0; +} + +s8 func_8000E1CC(void) { + return D_8011AE02; +} + +s8 func_8000E1DC(void) { + return D_8011AE03; +} + GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E1EC.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E2B4.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E4BC.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E4C8.s") + +void func_8000E4BC(s32 arg0) { + D_8011AEF4 = arg0; +} + +u8 func_8000E4C8(void) { + return D_8011AEF4; +} + GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E4D8.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E948.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000E988.s")