diff --git a/asm/non_matchings/unknown_066AA0/func_80066510.s b/asm/non_matchings/unknown_066AA0/func_80066510.s deleted file mode 100644 index aa75fbd5..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80066510.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_80066510 -/* 067110 80066510 3C028012 */ lui $v0, %hi(D_80120D14) # $v0, 0x8012 -/* 067114 80066514 80420D14 */ lb $v0, %lo(D_80120D14)($v0) -/* 067118 80066518 03E00008 */ jr $ra -/* 06711C 8006651C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_80066520.s b/asm/non_matchings/unknown_066AA0/func_80066520.s deleted file mode 100644 index 4fb902c8..00000000 --- a/asm/non_matchings/unknown_066AA0/func_80066520.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_80066520 -/* 067120 80066520 3C018012 */ lui $at, 0x8012 -/* 067124 80066524 03E00008 */ jr $ra -/* 067128 80066528 A0200D14 */ sb $zero, 0xd14($at) - diff --git a/asm/non_matchings/unknown_066AA0/func_800665E8.s b/asm/non_matchings/unknown_066AA0/func_800665E8.s deleted file mode 100644 index 82973730..00000000 --- a/asm/non_matchings/unknown_066AA0/func_800665E8.s +++ /dev/null @@ -1,14 +0,0 @@ -glabel func_800665E8 -/* 0671E8 800665E8 04800005 */ bltz $a0, .L80066600 -/* 0671EC 800665EC 28810004 */ slti $at, $a0, 4 -/* 0671F0 800665F0 10200003 */ beqz $at, .L80066600 -/* 0671F4 800665F4 3C018012 */ lui $at, 0x8012 -/* 0671F8 800665F8 03E00008 */ jr $ra -/* 0671FC 800665FC AC240CE4 */ sw $a0, 0xce4($at) - -.L80066600: -/* 067200 80066600 3C018012 */ lui $at, %hi(D_80120CE4) # $at, 0x8012 -/* 067204 80066604 AC200CE4 */ sw $zero, %lo(D_80120CE4)($at) -/* 067208 80066608 03E00008 */ jr $ra -/* 06720C 8006660C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_066AA0/func_8006F90C.s b/asm/non_matchings/unknown_066AA0/func_8006F90C.s deleted file mode 100644 index ec5ef1d0..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006F90C.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_8006F90C -/* 07050C 8006F90C 3C01800E */ lui $at, 0x800e -/* 070510 8006F910 03E00008 */ jr $ra -/* 070514 8006F914 AC24D434 */ sw $a0, -0x2bcc($at) - diff --git a/asm/non_matchings/unknown_066AA0/func_8006F918.s b/asm/non_matchings/unknown_066AA0/func_8006F918.s deleted file mode 100644 index d62806cd..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006F918.s +++ /dev/null @@ -1,7 +0,0 @@ -glabel func_8006F918 -/* 070518 8006F918 3C04800E */ lui $a0, %hi(D_800DD434) # $a0, 0x800e -/* 07051C 8006F91C 8C84D434 */ lw $a0, %lo(D_800DD434)($a0) -/* 070520 8006F920 3C01800E */ lui $at, 0x800e -/* 070524 8006F924 03E00008 */ jr $ra -/* 070528 8006F928 AC24D438 */ sw $a0, -0x2bc8($at) - diff --git a/asm/non_matchings/unknown_066AA0/func_8006F92C.s b/asm/non_matchings/unknown_066AA0/func_8006F92C.s deleted file mode 100644 index 35774c9e..00000000 --- a/asm/non_matchings/unknown_066AA0/func_8006F92C.s +++ /dev/null @@ -1,11 +0,0 @@ -glabel func_8006F92C -/* 07052C 8006F92C 3C04800E */ lui $a0, %hi(D_800DD438) # $a0, 0x800e -/* 070530 8006F930 8C84D438 */ lw $a0, %lo(D_800DD438)($a0) -/* 070534 8006F934 3C01800E */ lui $at, 0x800e -/* 070538 8006F938 03E00008 */ jr $ra -/* 07053C 8006F93C AC24D434 */ sw $a0, -0x2bcc($at) - -/* 070540 8006F940 3C02800E */ lui $v0, 0x800e -/* 070544 8006F944 03E00008 */ jr $ra -/* 070548 8006F948 8C42D434 */ lw $v0, -0x2bcc($v0) - diff --git a/asm/non_matchings/unknown_066AA0/func_8006F940.s b/asm/non_matchings/unknown_066AA0/func_8006F940.s new file mode 100644 index 00000000..fab3121a --- /dev/null +++ b/asm/non_matchings/unknown_066AA0/func_8006F940.s @@ -0,0 +1,5 @@ +glabel func_8006F940 +/* 070540 8006F940 3C02800E */ lui $v0, 0x800e +/* 070544 8006F944 03E00008 */ jr $ra +/* 070548 8006F948 8C42D434 */ lw $v0, -0x2bcc($v0) + diff --git a/src/unknown_066AA0.c b/src/unknown_066AA0.c index 93887f4b..53fbdc18 100644 --- a/src/unknown_066AA0.c +++ b/src/unknown_066AA0.c @@ -5,9 +5,12 @@ #include "macros.h" extern u32 D_80000300; +extern s32 D_800DD434; +extern s32 D_800DD438; extern s32 D_80120CE0; extern s32 D_80120CE4; extern f32 D_80120D10; +extern u8 D_80120D14; extern u8 D_80120D15; extern s32 D_80120D18; extern s32 D_801210A0; @@ -54,14 +57,40 @@ GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066230.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066348.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_800663DC.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066488.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066510.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066520.s") + +s8 func_80066510(void) { + return D_80120D14; +} + +void func_80066520(void) { + D_80120D14 = 0; +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006652C.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_800665E8.s") + +void func_800665E8(s32 arg0) { + if (arg0 >= 0 && arg0 < 4) { + D_80120CE4 = arg0; + } else { + D_80120CE4 = 0; + } +} + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066610.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066818.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066894.s") + + +/* +// Close to matching +extern s32 D_800DD094[48]; +s32 func_80066910(s32 arg0) { + s32 index = arg0 * 13; + return D_800DD094[index] & 0x1; +} +*/ GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066910.s") + GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066940.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066AA8.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066BA8.s") @@ -190,9 +219,22 @@ GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F64C.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F6EC.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F768.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F870.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F90C.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F918.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F92C.s") + +void func_8006F90C(s32 arg0) { + D_800DD434 = arg0; +} + +void func_8006F918(s32 arg0) { + arg0 = D_800DD434; + D_800DD438 = arg0; +} + +void func_8006F92C(s32 arg0) { + arg0 = D_800DD438; + D_800DD434 = arg0; +} + +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F940.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F94C.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006F9B8.s") GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006FB60.s") diff --git a/undefined_syms.txt b/undefined_syms.txt index 1bc22501..1b4bcf15 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -182,6 +182,7 @@ D_800DD028 = 0x800DD028; D_800DD050 = 0x800DD050; D_800DD060 = 0x800DD060; D_800DD064 = 0x800DD064; +D_800DD094 = 0x800DD094; D_800DD134 = 0x800DD134; D_800DD148 = 0x800DD148; D_800DD288 = 0x800DD288;