diff --git a/asm/non_matchings/unknown_066AA0/func_80068508.s b/asm/non_matchings/unknown_066AA0/func_80068508.s deleted file mode 100644 index 60260ee9..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80068508.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_80068508 -/* 069108 80068508 3C018012 */ lui $at, 0x8012 -/* 06910C 8006850C 03E00008 */ jr $ra -/* 069110 80068510 AC240D0C */ sw $a0, 0xd0c($at) - diff --git a/asm/non_matchings/unknown_066AA0/func_80069DA4.s b/asm/non_matchings/unknown_066AA0/func_80069DA4.s deleted file mode 100644 index 79a90e77..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80069DA4.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_80069DA4 -/* 06A9A4 80069DA4 3C028012 */ lui $v0, 0x8012 -/* 06A9A8 80069DA8 03E00008 */ jr $ra -/* 06A9AC 80069DAC 24420FA0 */ addiu $v0, $v0, 0xfa0 - diff --git a/asm/non_matchings/unknown_066AA0/func_80069DB0.s b/asm/non_matchings/unknown_066AA0/func_80069DB0.s deleted file mode 100644 index 4dbfd91c..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80069DB0.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_80069DB0 -/* 06A9B0 80069DB0 3C028012 */ lui $v0, 0x8012 -/* 06A9B4 80069DB4 03E00008 */ jr $ra -/* 06A9B8 80069DB8 24420FE0 */ addiu $v0, $v0, 0xfe0 - diff --git a/asm/non_matchings/unknown_066AA0/func_80069DBC.s b/asm/non_matchings/unknown_066AA0/func_80069DBC.s deleted file mode 100644 index 3437b7e9..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80069DBC.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_80069DBC -/* 06A9BC 80069DBC 3C028012 */ lui $v0, 0x8012 -/* 06A9C0 80069DC0 03E00008 */ jr $ra -/* 06A9C4 80069DC4 24420F60 */ addiu $v0, $v0, 0xf60 - diff --git a/asm/non_matchings/unknown_066AA0/func_8006A100.s b/asm/non_matchings/unknown_066AA0/func_8006A100.s deleted file mode 100644 index b9e776ae..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006A100.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_8006A100 -/* 06AD00 8006A100 3C028012 */ lui $v0, 0x8012 -/* 06AD04 8006A104 03E00008 */ jr $ra -/* 06AD08 8006A108 244210E0 */ addiu $v0, $v0, 0x10e0 - diff --git a/asm/non_matchings/unknown_066AA0/func_8006C300.s b/asm/non_matchings/unknown_066AA0/func_8006C300.s deleted file mode 100644 index f417b933..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006C300.s +++ /dev/null @@ -1,16 +0,0 @@ -glabel func_8006C300 -/* 06CF00 8006C300 3C04800E */ lui $a0, %hi(D_800DD330) # $a0, 0x800e -/* 06CF04 8006C304 2484D330 */ addiu $a0, %lo(D_800DD330) # addiu $a0, $a0, -0x2cd0 -/* 06CF08 8006C308 80830000 */ lb $v1, ($a0) -/* 06CF0C 8006C30C 240E0001 */ li $t6, 1 -/* 06CF10 8006C310 28610002 */ slti $at, $v1, 2 -/* 06CF14 8006C314 14200003 */ bnez $at, .L8006C324 -/* 06CF18 8006C318 00001025 */ move $v0, $zero -/* 06CF1C 8006C31C 03E00008 */ jr $ra -/* 06CF20 8006C320 A08E0000 */ sb $t6, ($a0) - -.L8006C324: -/* 06CF24 8006C324 00601025 */ move $v0, $v1 -/* 06CF28 8006C328 03E00008 */ jr $ra -/* 06CF2C 8006C32C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006CAE4.s b/asm/non_matchings/unknown_066AA0/func_8006CAE4.s deleted file mode 100644 index c0fe3451..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006CAE4.s +++ /dev/null @@ -1,33 +0,0 @@ -glabel func_8006CAE4 -/* 06D6E4 8006CAE4 248EFFFF */ addiu $t6, $a0, -1 -/* 06D6E8 8006CAE8 3C018012 */ lui $at, %hi(D_80123500) # $at, 0x8012 -/* 06D6EC 8006CAEC AC2E3500 */ sw $t6, %lo(D_80123500)($at) -/* 06D6F0 8006CAF0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 06D6F4 8006CAF4 2401FFFF */ li $at, -1 -/* 06D6F8 8006CAF8 AFBF0014 */ sw $ra, 0x14($sp) -/* 06D6FC 8006CAFC 14A10007 */ bne $a1, $at, .L8006CB1C -/* 06D700 8006CB00 AFA60020 */ sw $a2, 0x20($sp) -/* 06D704 8006CB04 0C02706C */ jal func_8009C1B0 -/* 06D708 8006CB08 00000000 */ nop -/* 06D70C 8006CB0C 3C038012 */ lui $v1, %hi(D_801234F4) # $v1, 0x8012 -/* 06D710 8006CB10 246334F4 */ addiu $v1, %lo(D_801234F4) # addiu $v1, $v1, 0x34f4 -/* 06D714 8006CB14 10000004 */ b .L8006CB28 -/* 06D718 8006CB18 AC620000 */ sw $v0, ($v1) -.L8006CB1C: -/* 06D71C 8006CB1C 3C038012 */ lui $v1, %hi(D_801234F4) # $v1, 0x8012 -/* 06D720 8006CB20 246334F4 */ addiu $v1, %lo(D_801234F4) # addiu $v1, $v1, 0x34f4 -/* 06D724 8006CB24 AC650000 */ sw $a1, ($v1) -.L8006CB28: -/* 06D728 8006CB28 3C058012 */ lui $a1, %hi(D_80123500) # $a1, 0x8012 -/* 06D72C 8006CB2C 3C068012 */ lui $a2, %hi(D_80123504) # $a2, 0x8012 -/* 06D730 8006CB30 8CC63504 */ lw $a2, %lo(D_80123504)($a2) -/* 06D734 8006CB34 8CA53500 */ lw $a1, %lo(D_80123500)($a1) -/* 06D738 8006CB38 8C640000 */ lw $a0, ($v1) -/* 06D73C 8006CB3C 8FA70020 */ lw $a3, 0x20($sp) -/* 06D740 8006CB40 0C01B2D6 */ jal func_8006CB58 -/* 06D744 8006CB44 00000000 */ nop -/* 06D748 8006CB48 8FBF0014 */ lw $ra, 0x14($sp) -/* 06D74C 8006CB4C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 06D750 8006CB50 03E00008 */ jr $ra -/* 06D754 8006CB54 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006DBE4.s b/asm/non_matchings/unknown_066AA0/func_8006DBE4.s deleted file mode 100644 index 036db867..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006DBE4.s +++ /dev/null @@ -1,32 +0,0 @@ -glabel func_8006DBE4 -/* 06E7E4 8006DBE4 3C028012 */ lui $v0, %hi(D_80123514) # $v0, 0x8012 -/* 06E7E8 8006DBE8 24423514 */ addiu $v0, %lo(D_80123514) # addiu $v0, $v0, 0x3514 -/* 06E7EC 8006DBEC 804E0000 */ lb $t6, ($v0) -/* 06E7F0 8006DBF0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 06E7F4 8006DBF4 15C00014 */ bnez $t6, .L8006DC48 -/* 06E7F8 8006DBF8 AFBF0014 */ sw $ra, 0x14($sp) -/* 06E7FC 8006DBFC 240F0001 */ li $t7, 1 -/* 06E800 8006DC00 A04F0000 */ sb $t7, ($v0) -/* 06E804 8006DC04 0C01C42C */ jal func_800710B0 -/* 06E808 8006DC08 00002025 */ move $a0, $zero -/* 06E80C 8006DC0C 0C01AFBF */ jal func_8006BEFC -/* 06E810 8006DC10 00000000 */ nop -/* 06E814 8006DC14 3C04800E */ lui $a0, %hi(D_800DD3F4) # $a0, 0x800e -/* 06E818 8006DC18 0C030076 */ jal func_800C01D8 -/* 06E81C 8006DC1C 2484D3F4 */ addiu $a0, %lo(D_800DD3F4) # addiu $a0, $a0, -0x2c0c -/* 06E820 8006DC20 0C02B89C */ jal func_800AE270 -/* 06E824 8006DC24 00000000 */ nop -/* 06E828 8006DC28 0C02800F */ jal func_800A003C -/* 06E82C 8006DC2C 00000000 */ nop -/* 06E830 8006DC30 0C030C33 */ jal func_800C30CC -/* 06E834 8006DC34 00000000 */ nop -/* 06E838 8006DC38 0C01C42C */ jal func_800710B0 -/* 06E83C 8006DC3C 24040002 */ li $a0, 2 -/* 06E840 8006DC40 3C028012 */ lui $v0, %hi(D_80123514) # $v0, 0x8012 -/* 06E844 8006DC44 24423514 */ addiu $v0, %lo(D_80123514) # addiu $v0, $v0, 0x3514 -.L8006DC48: -/* 06E848 8006DC48 8FBF0014 */ lw $ra, 0x14($sp) -/* 06E84C 8006DC4C A0400000 */ sb $zero, ($v0) -/* 06E850 8006DC50 03E00008 */ jr $ra -/* 06E854 8006DC54 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/asm/non_matchings/unknown_066AA0/func_8006DC58.s b/asm/non_matchings/unknown_066AA0/func_8006DC58.s deleted file mode 100644 index c10ffa82..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006DC58.s +++ /dev/null @@ -1,43 +0,0 @@ -glabel func_8006DC58 -/* 06E858 8006DC58 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 06E85C 8006DC5C AFBF001C */ sw $ra, 0x1c($sp) -/* 06E860 8006DC60 0C031CF8 */ jal func_800C73E0 -/* 06E864 8006DC64 AFA40020 */ sw $a0, 0x20($sp) -/* 06E868 8006DC68 14400020 */ bnez $v0, .L8006DCEC -/* 06E86C 8006DC6C 8FBF001C */ lw $ra, 0x1c($sp) -/* 06E870 8006DC70 8FA40020 */ lw $a0, 0x20($sp) -/* 06E874 8006DC74 0C004265 */ jal func_80010994 -/* 06E878 8006DC78 00000000 */ nop -/* 06E87C 8006DC7C 0C004013 */ jal func_8001004C -/* 06E880 8006DC80 00000000 */ nop -/* 06E884 8006DC84 0C006FC8 */ jal func_8001BF20 -/* 06E888 8006DC88 00000000 */ nop -/* 06E88C 8006DC8C 8FAE0020 */ lw $t6, 0x20($sp) -/* 06E890 8006DC90 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 -/* 06E894 8006DC94 3C058012 */ lui $a1, %hi(D_80121208) # $a1, 0x8012 -/* 06E898 8006DC98 3C068012 */ lui $a2, %hi(D_80121218) # $a2, 0x8012 -/* 06E89C 8006DC9C 3C078012 */ lui $a3, %hi(D_80121228) # $a3, 0x8012 -/* 06E8A0 8006DCA0 24E71228 */ addiu $a3, %lo(D_80121228) # addiu $a3, $a3, 0x1228 -/* 06E8A4 8006DCA4 24C61218 */ addiu $a2, %lo(D_80121218) # addiu $a2, $a2, 0x1218 -/* 06E8A8 8006DCA8 24A51208 */ addiu $a1, %lo(D_80121208) # addiu $a1, $a1, 0x1208 -/* 06E8AC 8006DCAC 248411F8 */ addiu $a0, %lo(D_801211F8) # addiu $a0, $a0, 0x11f8 -/* 06E8B0 8006DCB0 0C009355 */ jal D_80024D54 -/* 06E8B4 8006DCB4 AFAE0010 */ sw $t6, 0x10($sp) -/* 06E8B8 8006DCB8 8FA40020 */ lw $a0, 0x20($sp) -/* 06E8BC 8006DCBC 0C030D10 */ jal func_800C3440 -/* 06E8C0 8006DCC0 00000000 */ nop -/* 06E8C4 8006DCC4 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 -/* 06E8C8 8006DCC8 0C01E015 */ jal func_80078054 -/* 06E8CC 8006DCCC 248411F8 */ addiu $a0, %lo(D_801211F8) # addiu $a0, $a0, 0x11f8 -/* 06E8D0 8006DCD0 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 -/* 06E8D4 8006DCD4 0C01DC14 */ jal func_80077050 -/* 06E8D8 8006DCD8 248411F8 */ addiu $a0, %lo(D_801211F8) # addiu $a0, $a0, 0x11f8 -/* 06E8DC 8006DCDC 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 -/* 06E8E0 8006DCE0 0C01DC9A */ jal func_80077268 -/* 06E8E4 8006DCE4 248411F8 */ addiu $a0, %lo(D_801211F8) # addiu $a0, $a0, 0x11f8 -/* 06E8E8 8006DCE8 8FBF001C */ lw $ra, 0x1c($sp) -.L8006DCEC: -/* 06E8EC 8006DCEC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 06E8F0 8006DCF0 03E00008 */ jr $ra -/* 06E8F4 8006DCF4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006ECAC.s b/asm/non_matchings/unknown_066AA0/func_8006ECAC.s deleted file mode 100644 index 9bb5fbef..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006ECAC.s +++ /dev/null @@ -1,16 +0,0 @@ -glabel func_8006ECAC -/* 06F8AC 8006ECAC 308E0003 */ andi $t6, $a0, 3 -/* 06F8B0 8006ECB0 000E7A80 */ sll $t7, $t6, 0xa -/* 06F8B4 8006ECB4 35F80080 */ ori $t8, $t7, 0x80 -/* 06F8B8 8006ECB8 3C01800E */ lui $at, 0x800e -/* 06F8BC 8006ECBC 03E00008 */ jr $ra -/* 06F8C0 8006ECC0 AC38D37C */ sw $t8, -0x2c84($at) - -/* 06F8C4 8006ECC4 3C02800E */ lui $v0, %hi(D_800DD37C) # $v0, 0x800e -/* 06F8C8 8006ECC8 2442D37C */ addiu $v0, %lo(D_800DD37C) # addiu $v0, $v0, -0x2c84 -/* 06F8CC 8006ECCC 8C4E0000 */ lw $t6, ($v0) -/* 06F8D0 8006ECD0 00000000 */ nop -/* 06F8D4 8006ECD4 35CF0100 */ ori $t7, $t6, 0x100 -/* 06F8D8 8006ECD8 03E00008 */ jr $ra -/* 06F8DC 8006ECDC AC4F0000 */ sw $t7, ($v0) - diff --git a/src/mips1/unknown_066AA0.c b/src/mips1/unknown_066AA0.c index 27761e55..91e1afa3 100644 --- a/src/mips1/unknown_066AA0.c +++ b/src/mips1/unknown_066AA0.c @@ -8,29 +8,43 @@ extern u32 osTvType; extern s8 D_800DD318; extern s32 D_800DD31C; extern s16 D_800DD328; +extern s8 D_800DD330; extern s32 D_800DD37C; extern s32 D_800DD384; extern u8 D_800DD390; extern s16 D_800DD394; extern u8 D_800DD398; extern u8 D_800DD3F0; +extern s32 D_800DD3F4; extern s32 D_800DD408; extern s32 D_800DD41C; extern s32 D_80120CE0; extern s32 D_80120CE4; +extern s32 D_80120D0C; extern f32 D_80120D10; extern u8 D_80120D14; extern u8 D_80120D15; extern s32 D_80120D18; +extern s32 D_80120F60; +extern s32 D_80120FE0; +extern s32 D_80120FA0; extern s32 D_801210A0; +extern s32 D_801210E0; extern s32 D_80121164; extern s32 D_80121168; extern s32 D_80121170; extern s32 D_80121174; extern s32 D_801211C0; +extern s32 D_801211F8; +extern s32 D_80121208; +extern s32 D_80121218; +extern s32 D_80121228; extern s32 D_801234EC; extern s32 D_801234F4; +extern s32 D_80123500; +extern s32 D_80123504; extern s32 D_80123510; +extern s8 D_80123514; extern s8 D_80123515; extern s8 D_80123516; extern s32 D_80123518; @@ -127,7 +141,11 @@ GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006807C.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068158.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_800682AC.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068408.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068508.s") + +void func_80068508(s32 arg0) { + D_80120D0C = arg0; +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068514.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068BF4.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068FA8.s") @@ -137,13 +155,27 @@ GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069A40.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069CFC.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069D20.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069D7C.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069DA4.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069DB0.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069DBC.s") + +s32* func_80069DA4(void) { + return &D_80120FA0; +} + +s32* func_80069DB0(void) { + return &D_80120FE0; +} + +s32* func_80069DBC(void) { + return &D_80120F60; +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069DC8.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069E14.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069F28.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A100.s") + +s32* func_8006A100(void) { + return &D_801210E0; +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A10C.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A1C4.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A434.s") @@ -218,11 +250,29 @@ s16 func_8006C2F0(void) { return D_800DD328; } -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006C300.s") +s32 func_8006C300(void) { + if (D_800DD330 >= 2) { + D_800DD330 = 1; + return 0; + } else { + return D_800DD330; + } +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/D_8006C330.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006C3E0.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006C60C.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006CAE4.s") + +void func_8006CAE4(s32 arg0, s32 arg1, s32 arg2) { + D_80123500 = arg0 - 1; + if (arg1 == -1) { + D_801234F4 = func_8009C1B0(); + } else { + D_801234F4 = arg1; + } + func_8006CB58(D_801234F4, D_80123500, D_80123504, arg2); +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006CB58.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006CC14.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006CCF0.s") @@ -265,8 +315,34 @@ s32 func_8006DB2C(void) { } GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006DB3C.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006DBE4.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006DC58.s") + +void func_8006DBE4(void) { + if (D_80123514 == 0) { + D_80123514 = 1; + func_800710B0(0); + func_8006BEFC(); + func_800C01D8(&D_800DD3F4); + func_800AE270(); + func_800A003C(); + func_800C30CC(); + func_800710B0(2); + } + D_80123514 = 0; +} + +void func_8006DC58(s32 arg0) { + if (func_800C73E0() == 0) { + func_80010994(arg0); + func_8001004C(); + func_8001BF20(); + D_80024D54(&D_801211F8, &D_80121208, &D_80121218, &D_80121228, arg0); + func_800C3440(arg0); + func_80078054(&D_801211F8); + func_80077050(&D_801211F8); + func_80077268(&D_801211F8); + } +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006DCF8.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E2E8.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006E3BC.s") @@ -326,7 +402,15 @@ void func_8006EBFC(void) { GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006EC18.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006EC48.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006ECAC.s") + +void func_8006ECAC(s32 arg0) { + D_800DD37C = ((arg0 & 0x03) << 10) | 0x80; +} + +/* Unused? */ +void func_8006ECC4(void) { + D_800DD37C |= 0x100; +} void func_8006ECE0(void) { D_800DD37C |= 0x200;