diff --git a/asm/non_matchings/unknown_043920/func_800521B8.s b/asm/non_matchings/unknown_043920/func_800521B8.s deleted file mode 100644 index b89c3efb..00000000 --- a/asm/non_matchings/unknown_043920/func_800521B8.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_800521B8 -/* 052DB8 800521B8 3C018012 */ lui $at, 0x8012 -/* 052DBC 800521BC 03E00008 */ jr $ra -/* 052DC0 800521C0 A024D582 */ sb $a0, -0x2a7e($at) - diff --git a/asm/non_matchings/unknown_043920/func_800598D0.s b/asm/non_matchings/unknown_043920/func_800598D0.s deleted file mode 100644 index c2cff64e..00000000 --- a/asm/non_matchings/unknown_043920/func_800598D0.s +++ /dev/null @@ -1,31 +0,0 @@ -glabel func_800598D0 -/* 05A4D0 800598D0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 05A4D4 800598D4 AFBF0014 */ sw $ra, 0x14($sp) -/* 05A4D8 800598D8 3C05FF00 */ lui $a1, (0xFF0000FF >> 16) # lui $a1, 0xff00 -/* 05A4DC 800598DC 34A500FF */ ori $a1, (0xFF0000FF & 0xFFFF) # ori $a1, $a1, 0xff -/* 05A4E0 800598E0 0C01C327 */ jal func_80070C9C -/* 05A4E4 800598E4 240421C0 */ li $a0, 8640 -/* 05A4E8 800598E8 3C038012 */ lui $v1, %hi(D_8011D590) # $v1, 0x8012 -/* 05A4EC 800598EC 3C048012 */ lui $a0, %hi(D_8011D5A0) # $a0, 0x8012 -/* 05A4F0 800598F0 2484D5A0 */ addiu $a0, %lo(D_8011D5A0) # addiu $a0, $a0, -0x2a60 -/* 05A4F4 800598F4 2463D590 */ addiu $v1, %lo(D_8011D590) # addiu $v1, $v1, -0x2a70 -/* 05A4F8 800598F8 3C058012 */ lui $a1, %hi(D_8011D5A8) # $a1, 0x8012 -/* 05A4FC 800598FC 24A5D5A8 */ addiu $a1, %lo(D_8011D5A8) # addiu $a1, $a1, -0x2a58 -/* 05A500 80059900 244F10E0 */ addiu $t7, $v0, 0x10e0 -/* 05A504 80059904 AC620000 */ sw $v0, ($v1) -/* 05A508 80059908 AC6F0004 */ sw $t7, 4($v1) -/* 05A50C 8005990C AC600008 */ sw $zero, 8($v1) -/* 05A510 80059910 A4800000 */ sh $zero, ($a0) -/* 05A514 80059914 A4800002 */ sh $zero, 2($a0) -/* 05A518 80059918 A4800004 */ sh $zero, 4($a0) -/* 05A51C 8005991C A4A00000 */ sh $zero, ($a1) -/* 05A520 80059920 A4A00002 */ sh $zero, 2($a1) -/* 05A524 80059924 3C018012 */ lui $at, %hi(D_8011D59D) # $at, 0x8012 -/* 05A528 80059928 8FBF0014 */ lw $ra, 0x14($sp) -/* 05A52C 8005992C A020D59D */ sb $zero, %lo(D_8011D59D)($at) -/* 05A530 80059930 3C018012 */ lui $at, %hi(D_8011D5AC) # $at, 0x8012 -/* 05A534 80059934 2418FFFF */ li $t8, -1 -/* 05A538 80059938 A438D5AC */ sh $t8, %lo(D_8011D5AC)($at) -/* 05A53C 8005993C 03E00008 */ jr $ra -/* 05A540 80059940 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/asm/non_matchings/unknown_043920/func_80059944.s b/asm/non_matchings/unknown_043920/func_80059944.s deleted file mode 100644 index c688098c..00000000 --- a/asm/non_matchings/unknown_043920/func_80059944.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel func_80059944 -/* 05A544 80059944 3C0E8012 */ lui $t6, %hi(D_8011D59D) # $t6, 0x8012 -/* 05A548 80059948 81CED59D */ lb $t6, %lo(D_8011D59D)($t6) -/* 05A54C 8005994C 3C038012 */ lui $v1, %hi(D_8011D59C) # $v1, 0x8012 -/* 05A550 80059950 2463D59C */ addiu $v1, %lo(D_8011D59C) # addiu $v1, $v1, -0x2a64 -/* 05A554 80059954 A06E0000 */ sb $t6, ($v1) -/* 05A558 80059958 80620000 */ lb $v0, ($v1) -/* 05A55C 8005995C 3C018012 */ lui $at, 0x8012 -/* 05A560 80059960 00027840 */ sll $t7, $v0, 1 -/* 05A564 80059964 002F0821 */ addu $at, $at, $t7 -/* 05A568 80059968 A420D5A0 */ sh $zero, -0x2a60($at) -/* 05A56C 8005996C 3C018012 */ lui $at, 0x8012 -/* 05A570 80059970 002F0821 */ addu $at, $at, $t7 -/* 05A574 80059974 A420D5A8 */ sh $zero, -0x2a58($at) -/* 05A578 80059978 3C018012 */ lui $at, 0x8012 -/* 05A57C 8005997C 03E00008 */ jr $ra -/* 05A580 80059980 A420D59E */ sh $zero, -0x2a62($at) - diff --git a/asm/non_matchings/unknown_043920/func_80059984.s b/asm/non_matchings/unknown_043920/func_80059984.s deleted file mode 100644 index 01986cbb..00000000 --- a/asm/non_matchings/unknown_043920/func_80059984.s +++ /dev/null @@ -1,11 +0,0 @@ -glabel func_80059984 -/* 05A584 80059984 3C0E8012 */ lui $t6, %hi(D_8011D59C) # $t6, 0x8012 -/* 05A588 80059988 81CED59C */ lb $t6, %lo(D_8011D59C)($t6) -/* 05A58C 8005998C 3C018012 */ lui $at, %hi(D_8011D59D) # $at, 0x8012 -/* 05A590 80059990 25CF0001 */ addiu $t7, $t6, 1 -/* 05A594 80059994 31F80001 */ andi $t8, $t7, 1 -/* 05A598 80059998 A038D59D */ sb $t8, %lo(D_8011D59D)($at) -/* 05A59C 8005999C 3C018012 */ lui $at, 0x8012 -/* 05A5A0 800599A0 03E00008 */ jr $ra -/* 05A5A4 800599A4 A424D5AC */ sh $a0, -0x2a54($at) - diff --git a/asm/non_matchings/unknown_043920/func_800599B8.s b/asm/non_matchings/unknown_043920/func_800599B8.s deleted file mode 100644 index 8a8a6e6b..00000000 --- a/asm/non_matchings/unknown_043920/func_800599B8.s +++ /dev/null @@ -1,48 +0,0 @@ -glabel func_800599B8 -/* 05A5B8 800599B8 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 05A5BC 800599BC 3C038012 */ lui $v1, %hi(D_80120001) # $v1, 0x8012 -/* 05A5C0 800599C0 8063D59C */ lb $v1, %lo(D_8011D59C)($v1) -/* 05A5C4 800599C4 3C0A8012 */ lui $t2, 0x8012 -/* 05A5C8 800599C8 24630001 */ addiu $v1, %lo(D_80120001) # addiu $v1, $v1, 1 -/* 05A5CC 800599CC 30780001 */ andi $t8, $v1, 1 -/* 05A5D0 800599D0 00184880 */ sll $t1, $t8, 2 -/* 05A5D4 800599D4 01495021 */ addu $t2, $t2, $t1 -/* 05A5D8 800599D8 8D4AD590 */ lw $t2, -0x2a70($t2) -/* 05A5DC 800599DC 8FB90048 */ lw $t9, 0x48($sp) -/* 05A5E0 800599E0 AFA5003C */ sw $a1, 0x3c($sp) -/* 05A5E4 800599E4 AFBF0024 */ sw $ra, 0x24($sp) -/* 05A5E8 800599E8 AFA60040 */ sw $a2, 0x40($sp) -/* 05A5EC 800599EC 00067400 */ sll $t6, $a2, 0x10 -/* 05A5F0 800599F0 87A5003E */ lh $a1, 0x3e($sp) -/* 05A5F4 800599F4 27A8002E */ addiu $t0, $sp, 0x2e -/* 05A5F8 800599F8 000E3403 */ sra $a2, $t6, 0x10 -/* 05A5FC 800599FC AFA70044 */ sw $a3, 0x44($sp) -/* 05A600 80059A00 AFA80014 */ sw $t0, 0x14($sp) -/* 05A604 80059A04 AFB80030 */ sw $t8, 0x30($sp) -/* 05A608 80059A08 AFAA0018 */ sw $t2, 0x18($sp) -/* 05A60C 80059A0C 0C01D2CD */ jal func_80074B34 -/* 05A610 80059A10 AFB90010 */ sw $t9, 0x10($sp) -/* 05A614 80059A14 8FAB0044 */ lw $t3, 0x44($sp) -/* 05A618 80059A18 8FA30030 */ lw $v1, 0x30($sp) -/* 05A61C 80059A1C 1160000E */ beqz $t3, .L80059A58 -/* 05A620 80059A20 00402025 */ move $a0, $v0 -/* 05A624 80059A24 1440000A */ bnez $v0, .L80059A50 -/* 05A628 80059A28 240FFFFF */ li $t7, -1 -/* 05A62C 80059A2C 87AC002E */ lh $t4, 0x2e($sp) -/* 05A630 80059A30 00036840 */ sll $t5, $v1, 1 -/* 05A634 80059A34 3C018012 */ lui $at, 0x8012 -/* 05A638 80059A38 002D0821 */ addu $at, $at, $t5 -/* 05A63C 80059A3C 8FAE003C */ lw $t6, 0x3c($sp) -/* 05A640 80059A40 A42CD5A0 */ sh $t4, -0x2a60($at) -/* 05A644 80059A44 3C018012 */ lui $at, %hi(D_8011D5AC) # $at, 0x8012 -/* 05A648 80059A48 10000003 */ b .L80059A58 -/* 05A64C 80059A4C A42ED5AC */ sh $t6, %lo(D_8011D5AC)($at) -.L80059A50: -/* 05A650 80059A50 3C018012 */ lui $at, %hi(D_8011D5AC) # $at, 0x8012 -/* 05A654 80059A54 A42FD5AC */ sh $t7, %lo(D_8011D5AC)($at) -.L80059A58: -/* 05A658 80059A58 8FBF0024 */ lw $ra, 0x24($sp) -/* 05A65C 80059A5C 27BD0038 */ addiu $sp, $sp, 0x38 -/* 05A660 80059A60 03E00008 */ jr $ra -/* 05A664 80059A64 00801025 */ move $v0, $a0 - diff --git a/asm/non_matchings/unknown_043920/func_80059B7C.s b/asm/non_matchings/unknown_043920/func_80059B7C.s deleted file mode 100644 index 84a28ddb..00000000 --- a/asm/non_matchings/unknown_043920/func_80059B7C.s +++ /dev/null @@ -1,31 +0,0 @@ -glabel func_80059B7C -/* 05A77C 80059B7C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 05A780 80059B80 3C028012 */ lui $v0, %hi(D_8011D59C) # $v0, 0x8012 -/* 05A784 80059B84 8042D59C */ lb $v0, %lo(D_8011D59C)($v0) -/* 05A788 80059B88 3C0A8012 */ lui $t2, 0x8012 -/* 05A78C 80059B8C 3C0C8012 */ lui $t4, 0x8012 -/* 05A790 80059B90 00024840 */ sll $t1, $v0, 1 -/* 05A794 80059B94 00025880 */ sll $t3, $v0, 2 -/* 05A798 80059B98 018B6021 */ addu $t4, $t4, $t3 -/* 05A79C 80059B9C 01495021 */ addu $t2, $t2, $t1 -/* 05A7A0 80059BA0 854AD5A0 */ lh $t2, -0x2a60($t2) -/* 05A7A4 80059BA4 8D8CD590 */ lw $t4, -0x2a70($t4) -/* 05A7A8 80059BA8 87A8003A */ lh $t0, 0x3a($sp) -/* 05A7AC 80059BAC AFA5002C */ sw $a1, 0x2c($sp) -/* 05A7B0 80059BB0 AFBF0024 */ sw $ra, 0x24($sp) -/* 05A7B4 80059BB4 AFA60030 */ sw $a2, 0x30($sp) -/* 05A7B8 80059BB8 AFA70034 */ sw $a3, 0x34($sp) -/* 05A7BC 80059BBC 00067400 */ sll $t6, $a2, 0x10 -/* 05A7C0 80059BC0 0007C400 */ sll $t8, $a3, 0x10 -/* 05A7C4 80059BC4 87A5002E */ lh $a1, 0x2e($sp) -/* 05A7C8 80059BC8 00183C03 */ sra $a3, $t8, 0x10 -/* 05A7CC 80059BCC 000E3403 */ sra $a2, $t6, 0x10 -/* 05A7D0 80059BD0 AFAA0014 */ sw $t2, 0x14($sp) -/* 05A7D4 80059BD4 AFAC0018 */ sw $t4, 0x18($sp) -/* 05A7D8 80059BD8 0C01D400 */ jal func_80075000 -/* 05A7DC 80059BDC AFA80010 */ sw $t0, 0x10($sp) -/* 05A7E0 80059BE0 8FBF0024 */ lw $ra, 0x24($sp) -/* 05A7E4 80059BE4 27BD0028 */ addiu $sp, $sp, 0x28 -/* 05A7E8 80059BE8 03E00008 */ jr $ra -/* 05A7EC 80059BEC 00000000 */ nop - diff --git a/asm/non_matchings/unknown_043920/func_80059E20.s b/asm/non_matchings/unknown_043920/func_80059E20.s deleted file mode 100644 index 08b4e499..00000000 --- a/asm/non_matchings/unknown_043920/func_80059E20.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel func_80059E20 -/* 05AA20 80059E20 3C0E8012 */ lui $t6, %hi(D_8011D59C) # $t6, 0x8012 -/* 05AA24 80059E24 81CED59C */ lb $t6, %lo(D_8011D59C)($t6) -/* 05AA28 80059E28 3C028012 */ lui $v0, 0x8012 -/* 05AA2C 80059E2C 000E7840 */ sll $t7, $t6, 1 -/* 05AA30 80059E30 004F1021 */ addu $v0, $v0, $t7 -/* 05AA34 80059E34 8442D5A8 */ lh $v0, -0x2a58($v0) -/* 05AA38 80059E38 03E00008 */ jr $ra -/* 05AA3C 80059E3C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_043920/func_8005A3D0.s b/asm/non_matchings/unknown_043920/func_8005A3D0.s deleted file mode 100644 index 3e091a81..00000000 --- a/asm/non_matchings/unknown_043920/func_8005A3D0.s +++ /dev/null @@ -1,26 +0,0 @@ -glabel func_8005A3D0 -/* 05AFD0 8005A3D0 3C05800E */ lui $a1, %hi(D_800DCB50) # $a1, 0x800e -/* 05AFD4 8005A3D4 8CA5CB50 */ lw $a1, %lo(D_800DCB50)($a1) -/* 05AFD8 8005A3D8 00001025 */ move $v0, $zero -/* 05AFDC 8005A3DC 18A00009 */ blez $a1, .L8005A404 -/* 05AFE0 8005A3E0 00002025 */ move $a0, $zero -/* 05AFE4 8005A3E4 3C038004 */ lui $v1, %hi(func_8003B4BC) # $v1, 0x8004 -/* 05AFE8 8005A3E8 2463B4BC */ addiu $v1, %lo(func_8003B4BC) # addiu $v1, $v1, -0x4b44 -.L8005A3EC: -/* 05AFEC 8005A3EC 00647021 */ addu $t6, $v1, $a0 -/* 05AFF0 8005A3F0 91CF0000 */ lbu $t7, ($t6) -/* 05AFF4 8005A3F4 24840001 */ addiu $a0, $a0, 1 -/* 05AFF8 8005A3F8 0085082A */ slt $at, $a0, $a1 -/* 05AFFC 8005A3FC 1420FFFB */ bnez $at, .L8005A3EC -/* 05B000 8005A400 004F1021 */ addu $v0, $v0, $t7 -.L8005A404: -/* 05B004 8005A404 3C18800E */ lui $t8, %hi(D_800DCDD0) # $t8, 0x800e -/* 05B008 8005A408 8F18CDD0 */ lw $t8, %lo(D_800DCDD0)($t8) -/* 05B00C 8005A40C 24190800 */ li $t9, 2048 -/* 05B010 8005A410 10580002 */ beq $v0, $t8, .L8005A41C -/* 05B014 8005A414 3C01800E */ lui $at, %hi(D_800DCB54) # $at, 0x800e -/* 05B018 8005A418 A439CB54 */ sh $t9, %lo(D_800DCB54)($at) -.L8005A41C: -/* 05B01C 8005A41C 03E00008 */ jr $ra -/* 05B020 8005A420 00000000 */ nop - diff --git a/src/mips1/unknown_043920.c b/src/mips1/unknown_043920.c index 273160c6..6394b6be 100644 --- a/src/mips1/unknown_043920.c +++ b/src/mips1/unknown_043920.c @@ -4,16 +4,22 @@ #include "types.h" #include "macros.h" +extern s32 D_800DCB50; +extern s16 D_800DCB54; +extern f32 D_800DCB9C; +extern s32 D_800DCDD0; +extern f32 D_800E6A00; extern s8 D_8011D582; extern s8 D_8011D583; extern s8 D_8011D584; - -extern s16 D_8011D5AC; - extern s32 D_8011D598; - -extern f32 D_800DCB9C; -extern f32 D_800E6A00; +extern s8 D_8011D59C; +extern s8 D_8011D59D; +extern s16 D_8011D59E; +extern u32 D_8011D590[]; +extern s16 D_8011D5A0[]; +extern s16 D_8011D5A8[]; +extern s16 D_8011D5AC; GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80042D20.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80043ECC.s") @@ -54,7 +60,10 @@ s32 func_80052188(void) { return 0; } -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800521B8.s") +void func_800521B8(s32 arg0) { + D_8011D582 = arg0; +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800521C4.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005234C.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052388.s") @@ -91,15 +100,55 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80058F44.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059080.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059208.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059790.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800598D0.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059944.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059984.s") + +void func_800598D0(void) { + D_8011D590[0] = func_80070C9C(0x21C0, 0xFF0000FF); + D_8011D590[1] = D_8011D590[0] + 0x10E0; + D_8011D590[2] = 0; + D_8011D5A0[0] = 0; + D_8011D5A0[1] = 0; + D_8011D5A0[2] = 0; + D_8011D5A8[0] = 0; + D_8011D5A8[1] = 0; + D_8011D59D = 0; + D_8011D5AC = -1; +} + +void func_80059944(void) { + D_8011D59C = D_8011D59D; + D_8011D5A0[D_8011D59C] = 0; + D_8011D5A8[D_8011D59C] = 0; + D_8011D59E = 0; +} + +void func_80059984(s32 arg0) { + D_8011D59D = (s8) ((D_8011D59C + 1) & 1); + D_8011D5AC = arg0; +} s16 func_800599A8(void) { return D_8011D5AC; } -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800599B8.s") +s32 func_800599B8(s32 arg0, s32 arg1, s16 arg2, s32 arg3, s32 arg4) { + s32 temp_v0; + s32 temp_t8; + s16 sp2E; + + temp_t8 = (D_8011D59C + 1) & 1; + temp_v0 = func_80074B34(arg0, (s16)arg1, arg2, arg3, arg4, &sp2E, D_8011D590[temp_t8]); + if (arg3 != 0) { + if (temp_v0 == 0) { + D_8011D5A0[temp_t8] = sp2E; + D_8011D5AC = arg1; + } else { + D_8011D5AC = -1; + } + } + + return temp_v0; +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059A68.s") void func_80059B4C(void) { @@ -109,9 +158,16 @@ void func_80059B4C(void) { D_8011D598 = 0; } -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059B7C.s") +void func_80059B7C(s32 arg0, s32 arg1, s16 arg2, s16 arg3, s16 arg4) { + func_80075000(arg0, (s16)arg1, arg2, arg3, arg4, D_8011D5A0[D_8011D59C], D_8011D590[D_8011D59C]); +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059BF0.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059E20.s") + +s16 func_80059E20(void) { + return D_8011D5A8[D_8011D59C]; +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80059E40.s") void func_8005A3B0(void) { @@ -122,7 +178,22 @@ void func_8005A3C0(void) { D_8011D583 = 1; } -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005A3D0.s") +void func_8003B4BC(s32 arg0); + +void func_8005A3D0(void) { + s32 i; + s32 count = 0; + u8* temp = (u8*)&func_8003B4BC; + + for(i = 0; i < D_800DCB50; i++) { + count += temp[i]; + } + + if (count != D_800DCDD0) { + D_800DCB54 = 0x800; + } +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005A424.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005A6F0.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005B818.s")