From b173a526393a9c2a0a9342162f7736b6978aab78 Mon Sep 17 00:00:00 2001 From: Faschz Date: Fri, 3 Jul 2020 21:38:16 -0500 Subject: [PATCH] Decompile func_80000968, func_80000B34, and func_80001B0C --- .../unknown_001050/func_80000968.s | 115 ------------------ .../unknown_001050/func_80000B34.s | 47 ------- .../unknown_001050/func_80001B0C.s | 21 ---- src/mips1/unknown_001050.c | 64 +++++++++- 4 files changed, 61 insertions(+), 186 deletions(-) delete mode 100644 asm/non_matchings/unknown_001050/func_80000968.s delete mode 100644 asm/non_matchings/unknown_001050/func_80000B34.s delete mode 100644 asm/non_matchings/unknown_001050/func_80001B0C.s diff --git a/asm/non_matchings/unknown_001050/func_80000968.s b/asm/non_matchings/unknown_001050/func_80000968.s deleted file mode 100644 index 7a4a7a07..00000000 --- a/asm/non_matchings/unknown_001050/func_80000968.s +++ /dev/null @@ -1,115 +0,0 @@ -glabel func_80000968 -/* 001568 80000968 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00156C 8000096C 24010001 */ li $at, 1 -/* 001570 80000970 AFBF0014 */ sw $ra, 0x14($sp) -/* 001574 80000974 10810009 */ beq $a0, $at, .L8000099C -/* 001578 80000978 AFA40018 */ sw $a0, 0x18($sp) -/* 00157C 8000097C 24010002 */ li $at, 2 -/* 001580 80000980 10810024 */ beq $a0, $at, .L80000A14 -/* 001584 80000984 00002825 */ move $a1, $zero -/* 001588 80000988 24010003 */ li $at, 3 -/* 00158C 8000098C 1081002E */ beq $a0, $at, .L80000A48 -/* 001590 80000990 00002825 */ move $a1, $zero -/* 001594 80000994 10000039 */ b .L80000A7C -/* 001598 80000998 00002025 */ move $a0, $zero -.L8000099C: -/* 00159C 8000099C 00002025 */ move $a0, $zero -/* 0015A0 800009A0 0C001298 */ jal func_80004A60 -/* 0015A4 800009A4 00002825 */ move $a1, $zero -/* 0015A8 800009A8 24040001 */ li $a0, 1 -/* 0015AC 800009AC 0C001298 */ jal func_80004A60 -/* 0015B0 800009B0 24057FFF */ li $a1, 32767 -/* 0015B4 800009B4 24040002 */ li $a0, 2 -/* 0015B8 800009B8 0C001298 */ jal func_80004A60 -/* 0015BC 800009BC 00002825 */ move $a1, $zero -/* 0015C0 800009C0 24040004 */ li $a0, 4 -/* 0015C4 800009C4 0C001298 */ jal func_80004A60 -/* 0015C8 800009C8 00002825 */ move $a1, $zero -/* 0015CC 800009CC 3C0F800E */ lui $t7, %hi(D_800DC638) # $t7, 0x800e -/* 0015D0 800009D0 3C18800E */ lui $t8, %hi(D_800DC654) # $t8, 0x800e -/* 0015D4 800009D4 8F18C654 */ lw $t8, %lo(D_800DC654)($t8) -/* 0015D8 800009D8 91EFC638 */ lbu $t7, %lo(D_800DC638)($t7) -/* 0015DC 800009DC 3C04800E */ lui $a0, %hi(D_800DC630) # $a0, 0x800e -/* 0015E0 800009E0 01F80019 */ multu $t7, $t8 -/* 0015E4 800009E4 8C84C630 */ lw $a0, %lo(D_800DC630)($a0) -/* 0015E8 800009E8 00002812 */ mflo $a1 -/* 0015EC 800009EC 0005C883 */ sra $t9, $a1, 2 -/* 0015F0 800009F0 00194400 */ sll $t0, $t9, 0x10 -/* 0015F4 800009F4 0C031E14 */ jal func_800C7850 -/* 0015F8 800009F8 00082C03 */ sra $a1, $t0, 0x10 -/* 0015FC 800009FC 3C04800E */ lui $a0, %hi(D_800DC634) # $a0, 0x800e -/* 001600 80000A00 8C84C634 */ lw $a0, %lo(D_800DC634)($a0) -/* 001604 80000A04 0C031E14 */ jal func_800C7850 -/* 001608 80000A08 00002825 */ move $a1, $zero -/* 00160C 80000A0C 1000003D */ b .L80000B04 -/* 001610 80000A10 8FB90018 */ lw $t9, 0x18($sp) -.L80000A14: -/* 001614 80000A14 0C001298 */ jal func_80004A60 -/* 001618 80000A18 00002025 */ move $a0, $zero -/* 00161C 80000A1C 24040001 */ li $a0, 1 -/* 001620 80000A20 0C001298 */ jal func_80004A60 -/* 001624 80000A24 24057FFF */ li $a1, 32767 -/* 001628 80000A28 24040002 */ li $a0, 2 -/* 00162C 80000A2C 0C001298 */ jal func_80004A60 -/* 001630 80000A30 24057FFF */ li $a1, 32767 -/* 001634 80000A34 24040004 */ li $a0, 4 -/* 001638 80000A38 0C001298 */ jal func_80004A60 -/* 00163C 80000A3C 24057FFF */ li $a1, 32767 -/* 001640 80000A40 10000030 */ b .L80000B04 -/* 001644 80000A44 8FB90018 */ lw $t9, 0x18($sp) -.L80000A48: -/* 001648 80000A48 0C001298 */ jal func_80004A60 -/* 00164C 80000A4C 00002025 */ move $a0, $zero -/* 001650 80000A50 24040001 */ li $a0, 1 -/* 001654 80000A54 0C001298 */ jal func_80004A60 -/* 001658 80000A58 24057FFF */ li $a1, 32767 -/* 00165C 80000A5C 24040002 */ li $a0, 2 -/* 001660 80000A60 0C001298 */ jal func_80004A60 -/* 001664 80000A64 00002825 */ move $a1, $zero -/* 001668 80000A68 24040004 */ li $a0, 4 -/* 00166C 80000A6C 0C001298 */ jal func_80004A60 -/* 001670 80000A70 00002825 */ move $a1, $zero -/* 001674 80000A74 10000023 */ b .L80000B04 -/* 001678 80000A78 8FB90018 */ lw $t9, 0x18($sp) -.L80000A7C: -/* 00167C 80000A7C 0C001298 */ jal func_80004A60 -/* 001680 80000A80 24057FFF */ li $a1, 32767 -/* 001684 80000A84 24040001 */ li $a0, 1 -/* 001688 80000A88 0C001298 */ jal func_80004A60 -/* 00168C 80000A8C 24057FFF */ li $a1, 32767 -/* 001690 80000A90 24040002 */ li $a0, 2 -/* 001694 80000A94 0C001298 */ jal func_80004A60 -/* 001698 80000A98 24057FFF */ li $a1, 32767 -/* 00169C 80000A9C 24040004 */ li $a0, 4 -/* 0016A0 80000AA0 0C001298 */ jal func_80004A60 -/* 0016A4 80000AA4 24057FFF */ li $a1, 32767 -/* 0016A8 80000AA8 3C0A800E */ lui $t2, %hi(D_800DC638) # $t2, 0x800e -/* 0016AC 80000AAC 3C0B800E */ lui $t3, %hi(D_800DC654) # $t3, 0x800e -/* 0016B0 80000AB0 8D6BC654 */ lw $t3, %lo(D_800DC654)($t3) -/* 0016B4 80000AB4 914AC638 */ lbu $t2, %lo(D_800DC638)($t2) -/* 0016B8 80000AB8 3C04800E */ lui $a0, %hi(D_800DC630) # $a0, 0x800e -/* 0016BC 80000ABC 014B0019 */ multu $t2, $t3 -/* 0016C0 80000AC0 8C84C630 */ lw $a0, %lo(D_800DC630)($a0) -/* 0016C4 80000AC4 00002812 */ mflo $a1 -/* 0016C8 80000AC8 00056400 */ sll $t4, $a1, 0x10 -/* 0016CC 80000ACC 0C031E14 */ jal func_800C7850 -/* 0016D0 80000AD0 000C2C03 */ sra $a1, $t4, 0x10 -/* 0016D4 80000AD4 0C000C5F */ jal sfxVolumeSliderPercentage -/* 0016D8 80000AD8 00000000 */ nop -/* 0016DC 80000ADC 3C0E800E */ lui $t6, %hi(D_800DC63C) # $t6, 0x800e -/* 0016E0 80000AE0 91CEC63C */ lbu $t6, %lo(D_800DC63C)($t6) -/* 0016E4 80000AE4 3C04800E */ lui $a0, %hi(D_800DC634) # $a0, 0x800e -/* 0016E8 80000AE8 004E0019 */ multu $v0, $t6 -/* 0016EC 80000AEC 8C84C634 */ lw $a0, %lo(D_800DC634)($a0) -/* 0016F0 80000AF0 00002812 */ mflo $a1 -/* 0016F4 80000AF4 00057C00 */ sll $t7, $a1, 0x10 -/* 0016F8 80000AF8 0C031E14 */ jal func_800C7850 -/* 0016FC 80000AFC 000F2C03 */ sra $a1, $t7, 0x10 -/* 001700 80000B00 8FB90018 */ lw $t9, 0x18($sp) -.L80000B04: -/* 001704 80000B04 8FBF0014 */ lw $ra, 0x14($sp) -/* 001708 80000B08 3C018011 */ lui $at, 0x8011 -/* 00170C 80000B0C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 001710 80000B10 03E00008 */ jr $ra -/* 001714 80000B14 A0395F79 */ sb $t9, 0x5f79($at) - diff --git a/asm/non_matchings/unknown_001050/func_80000B34.s b/asm/non_matchings/unknown_001050/func_80000B34.s deleted file mode 100644 index ecb77444..00000000 --- a/asm/non_matchings/unknown_001050/func_80000B34.s +++ /dev/null @@ -1,47 +0,0 @@ -glabel func_80000B34 -/* 001734 80000B34 3C0F800E */ lui $t7, %hi(D_800DC648) # $t7, 0x800e -/* 001738 80000B38 8DEFC648 */ lw $t7, %lo(D_800DC648)($t7) -/* 00173C 80000B3C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 001740 80000B40 AFBF0014 */ sw $ra, 0x14($sp) -/* 001744 80000B44 AFA40018 */ sw $a0, 0x18($sp) -/* 001748 80000B48 15E00021 */ bnez $t7, .L80000BD0 -/* 00174C 80000B4C 308E00FF */ andi $t6, $a0, 0xff -/* 001750 80000B50 3C18800E */ lui $t8, %hi(D_800DC654) # $t8, 0x800e -/* 001754 80000B54 8F18C654 */ lw $t8, %lo(D_800DC654)($t8) -/* 001758 80000B58 3C028011 */ lui $v0, %hi(D_80115D04) # $v0, 0x8011 -/* 00175C 80000B5C 1300001C */ beqz $t8, .L80000BD0 -/* 001760 80000B60 24425D04 */ addiu $v0, %lo(D_80115D04) # addiu $v0, $v0, 0x5d04 -/* 001764 80000B64 A04E0000 */ sb $t6, ($v0) -/* 001768 80000B68 3C08800E */ lui $t0, %hi(D_800DC640) # $t0, 0x800e -/* 00176C 80000B6C 9108C640 */ lbu $t0, %lo(D_800DC640)($t0) -/* 001770 80000B70 2419007F */ li $t9, 127 -/* 001774 80000B74 3C01800E */ lui $at, %hi(D_800DC638) # $at, 0x800e -/* 001778 80000B78 11000006 */ beqz $t0, .L80000B94 -/* 00177C 80000B7C A039C638 */ sb $t9, %lo(D_800DC638)($at) -/* 001780 80000B80 3C05800E */ lui $a1, %hi(D_800DC630) # $a1, 0x800e -/* 001784 80000B84 8CA5C630 */ lw $a1, %lo(D_800DC630)($a1) -/* 001788 80000B88 90440000 */ lbu $a0, ($v0) -/* 00178C 80000B8C 0C0008AF */ jal func_800022BC -/* 001790 80000B90 00000000 */ nop -.L80000B94: -/* 001794 80000B94 3C04800E */ lui $a0, %hi(D_800DC630) # $a0, 0x800e -/* 001798 80000B98 8C84C630 */ lw $a0, %lo(D_800DC630)($a0) -/* 00179C 80000B9C 0C031E24 */ jal func_800C7890 -/* 0017A0 80000BA0 00000000 */ nop -/* 0017A4 80000BA4 3C018011 */ lui $at, %hi(D_80115D08) # $at, 0x8011 -/* 0017A8 80000BA8 0C031E34 */ jal func_800C78D0 -/* 0017AC 80000BAC AC225D08 */ sw $v0, %lo(D_80115D08)($at) -/* 0017B0 80000BB0 3C01800E */ lui $at, %hi(D_800DC64C) # $at, 0x800e -/* 0017B4 80000BB4 AC22C64C */ sw $v0, %lo(D_800DC64C)($at) -/* 0017B8 80000BB8 3C018011 */ lui $at, %hi(D_80115D40) # $at, 0x8011 -/* 0017BC 80000BBC 24090001 */ li $t1, 1 -/* 0017C0 80000BC0 A0295D40 */ sb $t1, %lo(D_80115D40)($at) -/* 0017C4 80000BC4 3C018011 */ lui $at, %hi(D_80115F7C) # $at, 0x8011 -/* 0017C8 80000BC8 240AFFFF */ li $t2, -1 -/* 0017CC 80000BCC AC2A5F7C */ sw $t2, %lo(D_80115F7C)($at) -.L80000BD0: -/* 0017D0 80000BD0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0017D4 80000BD4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0017D8 80000BD8 03E00008 */ jr $ra -/* 0017DC 80000BDC 00000000 */ nop - diff --git a/asm/non_matchings/unknown_001050/func_80001B0C.s b/asm/non_matchings/unknown_001050/func_80001B0C.s deleted file mode 100644 index ec9d3e83..00000000 --- a/asm/non_matchings/unknown_001050/func_80001B0C.s +++ /dev/null @@ -1,21 +0,0 @@ -glabel func_80001B0C -/* 00270C 80001B0C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 002710 80001B10 AFBF0014 */ sw $ra, 0x14($sp) -/* 002714 80001B14 3C01800E */ lui $at, %hi(D_800DC63C) # $at, 0x800e -/* 002718 80001B18 AFA40018 */ sw $a0, 0x18($sp) -/* 00271C 80001B1C 0C000C5F */ jal sfxVolumeSliderPercentage -/* 002720 80001B20 A024C63C */ sb $a0, %lo(D_800DC63C)($at) -/* 002724 80001B24 3C0F800E */ lui $t7, %hi(D_800DC63C) # $t7, 0x800e -/* 002728 80001B28 91EFC63C */ lbu $t7, %lo(D_800DC63C)($t7) -/* 00272C 80001B2C 3C04800E */ lui $a0, %hi(D_800DC634) # $a0, 0x800e -/* 002730 80001B30 004F0019 */ multu $v0, $t7 -/* 002734 80001B34 8C84C634 */ lw $a0, %lo(D_800DC634)($a0) -/* 002738 80001B38 00002812 */ mflo $a1 -/* 00273C 80001B3C 0005C400 */ sll $t8, $a1, 0x10 -/* 002740 80001B40 0C031E14 */ jal func_800C7850 -/* 002744 80001B44 00182C03 */ sra $a1, $t8, 0x10 -/* 002748 80001B48 8FBF0014 */ lw $ra, 0x14($sp) -/* 00274C 80001B4C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 002750 80001B50 03E00008 */ jr $ra -/* 002754 80001B54 00000000 */ nop - diff --git a/src/mips1/unknown_001050.c b/src/mips1/unknown_001050.c index 90d77b22..c322ee6e 100644 --- a/src/mips1/unknown_001050.c +++ b/src/mips1/unknown_001050.c @@ -5,15 +5,23 @@ #include "macros.h" extern u8 D_800DC638; +extern u8 D_800DC63C; +extern u8 D_800DC640; extern s8 D_800DC670; +extern u8 D_80115D04; extern u8 D_80115D05; +extern u8 D_80115D40; extern u8 D_80115D41; +extern s8 D_80115F79; extern s16 D_80115D30; + extern s32 D_800DC648; +extern s32 D_800DC64C; extern s32 D_800DC654; extern s32 D_800DC658; +extern s32 D_80115D08; extern s32 D_80115D18; extern s32 D_80115D1C; extern s32 D_80115D20; @@ -22,6 +30,7 @@ extern s32 D_80115D28; extern s32 D_80115D2C; extern s32 D_80115D38; extern s32 D_80115D3C; +extern s32 D_80115F7C; extern s32* D_800DC630; extern s32* D_800DC634; @@ -30,7 +39,40 @@ extern f32 D_800DC650; GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80000450.s") GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80000890.s") -GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80000968.s") + +void func_80000968(s32 arg0) { + switch(arg0) { + case 1: + func_80004A60(0, 0); + func_80004A60(1, 0x7FFF); + func_80004A60(2, 0); + func_80004A60(4, 0); + func_800C7850(D_800DC630, (s16) (D_800DC638 * D_800DC654 >> 2)); + func_800C7850(D_800DC634, 0); + break; + case 2: + func_80004A60(0, 0); + func_80004A60(1, 0x7FFF); + func_80004A60(2, 0x7FFF); + func_80004A60(4, 0x7FFF); + break; + case 3: + func_80004A60(0, 0); + func_80004A60(1, 0x7FFF); + func_80004A60(2, 0); + func_80004A60(4, 0); + break; + default: + func_80004A60(0, 0x7FFF); + func_80004A60(1, 0x7FFF); + func_80004A60(2, 0x7FFF); + func_80004A60(4, 0x7FFF); + func_800C7850(D_800DC630, (s16) (D_800DC638 * D_800DC654)); + func_800C7850(D_800DC634, (s16) (sfxVolumeSliderPercentage() * D_800DC63C)); + break; + } + D_80115F79 = arg0; +} void func_80000B18(void) { D_800DC648 = 1; @@ -40,7 +82,19 @@ void func_80000B28(void) { D_800DC648 = 0; } -GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80000B34.s") +void func_80000B34(u8 arg0) { + if (D_800DC648 == 0 && D_800DC654 != 0) { + D_80115D04 = arg0; + D_800DC638 = 0x7F; + if (D_800DC640 != 0) { + func_800022BC(D_80115D04, D_800DC630); + } + D_80115D08 = func_800C7890(D_800DC630); + D_800DC64C = func_800C78D0(); + D_80115D40 = 1; + D_80115F7C = -1; + } +} GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80000BE0.s") void func_80000C1C(void) { @@ -138,7 +192,11 @@ s32 musicVolumeSliderPercentage(void) { return D_800DC654; } -GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80001B0C.s") +void func_80001B0C(u8 arg0) { + D_800DC63C = arg0; + func_800C7850(D_800DC634, (s16) (sfxVolumeSliderPercentage() * D_800DC63C)); +} + GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80001B58.s") GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80001BC0.s") GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80001C08.s")