diff --git a/asm/non_matchings/code_800B45E0/func_800B559C.s b/asm/non_matchings/code_800B45E0/func_800B559C.s deleted file mode 100644 index 2587c0cfe..000000000 --- a/asm/non_matchings/code_800B45E0/func_800B559C.s +++ /dev/null @@ -1,136 +0,0 @@ -glabel func_800B559C -/* 0B619C 800B559C 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0B61A0 800B55A0 AFB60030 */ sw $s6, 0x30($sp) -/* 0B61A4 800B55A4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0B61A8 800B55A8 AFBF0034 */ sw $ra, 0x34($sp) -/* 0B61AC 800B55AC AFB5002C */ sw $s5, 0x2c($sp) -/* 0B61B0 800B55B0 AFB40028 */ sw $s4, 0x28($sp) -/* 0B61B4 800B55B4 AFB30024 */ sw $s3, 0x24($sp) -/* 0B61B8 800B55B8 AFB20020 */ sw $s2, 0x20($sp) -/* 0B61BC 800B55BC AFB00018 */ sw $s0, 0x18($sp) -/* 0B61C0 800B55C0 04810003 */ bgez $a0, .L800B55D0 -/* 0B61C4 800B55C4 0004B0C3 */ sra $s6, $a0, 3 -/* 0B61C8 800B55C8 24810007 */ addiu $at, $a0, 7 -/* 0B61CC 800B55CC 0001B0C3 */ sra $s6, $at, 3 -.L800B55D0: -/* 0B61D0 800B55D0 001688C0 */ sll $s1, $s6, 3 -/* 0B61D4 800B55D4 262E0008 */ addiu $t6, $s1, 8 -/* 0B61D8 800B55D8 022E082A */ slt $at, $s1, $t6 -/* 0B61DC 800B55DC 1020004C */ beqz $at, .L800B5710 -/* 0B61E0 800B55E0 02C01825 */ move $v1, $s6 -/* 0B61E4 800B55E4 001678C0 */ sll $t7, $s6, 3 -/* 0B61E8 800B55E8 01F67823 */ subu $t7, $t7, $s6 -/* 0B61EC 800B55EC 000F78C0 */ sll $t7, $t7, 3 -/* 0B61F0 800B55F0 3C198019 */ lui $t9, %hi(gSaveData) # $t9, 0x8019 -/* 0B61F4 800B55F4 2739EB90 */ addiu $t9, %lo(gSaveData) # addiu $t9, $t9, -0x1470 -/* 0B61F8 800B55F8 25F80188 */ addiu $t8, $t7, 0x188 -/* 0B61FC 800B55FC 000398C0 */ sll $s3, $v1, 3 -/* 0B6200 800B5600 3C158019 */ lui $s5, %hi(gSaveData) # $s5, 0x8019 -/* 0B6204 800B5604 26B5EB90 */ addiu $s5, %lo(gSaveData) # addiu $s5, $s5, -0x1470 -/* 0B6208 800B5608 26730008 */ addiu $s3, $s3, 8 -/* 0B620C 800B560C 03199021 */ addu $s2, $t8, $t9 -/* 0B6210 800B5610 24140018 */ li $s4, 24 -/* 0B6214 800B5614 24100003 */ li $s0, 3 -.L800B5618: -/* 0B6218 800B5618 0C02D21D */ jal checksum_time_trial_records -/* 0B621C 800B561C 02202025 */ move $a0, $s1 -/* 0B6220 800B5620 06210003 */ bgez $s1, .L800B5630 -/* 0B6224 800B5624 00114083 */ sra $t0, $s1, 2 -/* 0B6228 800B5628 26210003 */ addiu $at, $s1, 3 -/* 0B622C 800B562C 00014083 */ sra $t0, $at, 2 -.L800B5630: -/* 0B6230 800B5630 00084880 */ sll $t1, $t0, 2 -/* 0B6234 800B5634 01284823 */ subu $t1, $t1, $t0 -/* 0B6238 800B5638 00094940 */ sll $t1, $t1, 5 -/* 0B623C 800B563C 02A95021 */ addu $t2, $s5, $t1 -/* 0B6240 800B5640 06210004 */ bgez $s1, .L800B5654 -/* 0B6244 800B5644 322B0003 */ andi $t3, $s1, 3 -/* 0B6248 800B5648 11600002 */ beqz $t3, .L800B5654 -/* 0B624C 800B564C 00000000 */ nop -/* 0B6250 800B5650 256BFFFC */ addiu $t3, $t3, -4 -.L800B5654: -/* 0B6254 800B5654 01740019 */ multu $t3, $s4 -/* 0B6258 800B5658 3C04800F */ lui $a0, %hi(D_800F2E60) # $a0, 0x800f -/* 0B625C 800B565C 24842E60 */ addiu $a0, %lo(D_800F2E60) # addiu $a0, $a0, 0x2e60 -/* 0B6260 800B5660 00006012 */ mflo $t4 -/* 0B6264 800B5664 014C3021 */ addu $a2, $t2, $t4 -/* 0B6268 800B5668 90CD0017 */ lbu $t5, 0x17($a2) -/* 0B626C 800B566C 11A20013 */ beq $t5, $v0, .L800B56BC -/* 0B6270 800B5670 00001025 */ move $v0, $zero -/* 0B6274 800B5674 06210004 */ bgez $s1, .L800B5688 -/* 0B6278 800B5678 322E0007 */ andi $t6, $s1, 7 -/* 0B627C 800B567C 11C00002 */ beqz $t6, .L800B5688 -/* 0B6280 800B5680 00000000 */ nop -/* 0B6284 800B5684 25CEFFF8 */ addiu $t6, $t6, -8 -.L800B5688: -/* 0B6288 800B5688 000E7880 */ sll $t7, $t6, 2 -/* 0B628C 800B568C 01EE7823 */ subu $t7, $t7, $t6 -/* 0B6290 800B5690 024F2821 */ addu $a1, $s2, $t7 -.L800B5694: -/* 0B6294 800B5694 90980000 */ lbu $t8, ($a0) -/* 0B6298 800B5698 00A21821 */ addu $v1, $a1, $v0 -/* 0B629C 800B569C 24420001 */ addiu $v0, $v0, 1 -/* 0B62A0 800B56A0 A0780000 */ sb $t8, ($v1) -/* 0B62A4 800B56A4 90990000 */ lbu $t9, ($a0) -/* 0B62A8 800B56A8 24840001 */ addiu $a0, $a0, 1 -/* 0B62AC 800B56AC 1450FFF9 */ bne $v0, $s0, .L800B5694 -/* 0B62B0 800B56B0 A0790018 */ sb $t9, 0x18($v1) -/* 0B62B4 800B56B4 10000013 */ b .L800B5704 -/* 0B62B8 800B56B8 26310001 */ addiu $s1, $s1, 1 -.L800B56BC: -/* 0B62BC 800B56BC 00001025 */ move $v0, $zero -/* 0B62C0 800B56C0 06210004 */ bgez $s1, .L800B56D4 -/* 0B62C4 800B56C4 32280007 */ andi $t0, $s1, 7 -/* 0B62C8 800B56C8 11000002 */ beqz $t0, .L800B56D4 -/* 0B62CC 800B56CC 00000000 */ nop -/* 0B62D0 800B56D0 2508FFF8 */ addiu $t0, $t0, -8 -.L800B56D4: -/* 0B62D4 800B56D4 00084880 */ sll $t1, $t0, 2 -/* 0B62D8 800B56D8 01284823 */ subu $t1, $t1, $t0 -/* 0B62DC 800B56DC 02492821 */ addu $a1, $s2, $t1 -.L800B56E0: -/* 0B62E0 800B56E0 00C22021 */ addu $a0, $a2, $v0 -/* 0B62E4 800B56E4 908B0000 */ lbu $t3, ($a0) -/* 0B62E8 800B56E8 00A21821 */ addu $v1, $a1, $v0 -/* 0B62EC 800B56EC 24420001 */ addiu $v0, $v0, 1 -/* 0B62F0 800B56F0 A06B0000 */ sb $t3, ($v1) -/* 0B62F4 800B56F4 908A000F */ lbu $t2, 0xf($a0) -/* 0B62F8 800B56F8 1450FFF9 */ bne $v0, $s0, .L800B56E0 -/* 0B62FC 800B56FC A06A0018 */ sb $t2, 0x18($v1) -/* 0B6300 800B5700 26310001 */ addiu $s1, $s1, 1 -.L800B5704: -/* 0B6304 800B5704 0233082A */ slt $at, $s1, $s3 -/* 0B6308 800B5708 1420FFC3 */ bnez $at, .L800B5618 -/* 0B630C 800B570C 00000000 */ nop -.L800B5710: -/* 0B6310 800B5710 001660C0 */ sll $t4, $s6, 3 -/* 0B6314 800B5714 3C158019 */ lui $s5, %hi(gSaveData) # $s5, 0x8019 -/* 0B6318 800B5718 01966023 */ subu $t4, $t4, $s6 -/* 0B631C 800B571C 26B5EB90 */ addiu $s5, %lo(gSaveData) # addiu $s5, $s5, -0x1470 -/* 0B6320 800B5720 000C60C0 */ sll $t4, $t4, 3 -/* 0B6324 800B5724 02AC9021 */ addu $s2, $s5, $t4 -/* 0B6328 800B5728 26520188 */ addiu $s2, $s2, 0x188 -/* 0B632C 800B572C 0C02D5E3 */ jal func_800B578C -/* 0B6330 800B5730 02C02025 */ move $a0, $s6 -/* 0B6334 800B5734 A2420036 */ sb $v0, 0x36($s2) -/* 0B6338 800B5738 0C02D622 */ jal func_800B5888 -/* 0B633C 800B573C 02C02025 */ move $a0, $s6 -/* 0B6340 800B5740 02552823 */ subu $a1, $s2, $s5 -/* 0B6344 800B5744 000568C2 */ srl $t5, $a1, 3 -/* 0B6348 800B5748 3C048015 */ lui $a0, %hi(gSIEventMesgQueue) # $a0, 0x8015 -/* 0B634C 800B574C A2420037 */ sb $v0, 0x37($s2) -/* 0B6350 800B5750 2484F0B8 */ addiu $a0, %lo(gSIEventMesgQueue) # addiu $a0, $a0, -0xf48 -/* 0B6354 800B5754 31A500FF */ andi $a1, $t5, 0xff -/* 0B6358 800B5758 02403025 */ move $a2, $s2 -/* 0B635C 800B575C 0C034014 */ jal osEepromLongWrite -/* 0B6360 800B5760 24070038 */ li $a3, 56 -/* 0B6364 800B5764 8FBF0034 */ lw $ra, 0x34($sp) -/* 0B6368 800B5768 8FB00018 */ lw $s0, 0x18($sp) -/* 0B636C 800B576C 8FB1001C */ lw $s1, 0x1c($sp) -/* 0B6370 800B5770 8FB20020 */ lw $s2, 0x20($sp) -/* 0B6374 800B5774 8FB30024 */ lw $s3, 0x24($sp) -/* 0B6378 800B5778 8FB40028 */ lw $s4, 0x28($sp) -/* 0B637C 800B577C 8FB5002C */ lw $s5, 0x2c($sp) -/* 0B6380 800B5780 8FB60030 */ lw $s6, 0x30($sp) -/* 0B6384 800B5784 03E00008 */ jr $ra -/* 0B6388 800B5788 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/asm/non_matchings/code_800B45E0/func_800B65F4.s b/asm/non_matchings/code_800B45E0/func_800B65F4.s deleted file mode 100644 index 8f9d060f6..000000000 --- a/asm/non_matchings/code_800B45E0/func_800B65F4.s +++ /dev/null @@ -1,76 +0,0 @@ -glabel func_800B65F4 -/* 0B71F4 800B65F4 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0B71F8 800B65F8 AFB20024 */ sw $s2, 0x24($sp) -/* 0B71FC 800B65FC 00809025 */ move $s2, $a0 -/* 0B7200 800B6600 AFBF002C */ sw $ra, 0x2c($sp) -/* 0B7204 800B6604 AFB30028 */ sw $s3, 0x28($sp) -/* 0B7208 800B6608 AFB10020 */ sw $s1, 0x20($sp) -/* 0B720C 800B660C AFB0001C */ sw $s0, 0x1c($sp) -/* 0B7210 800B6610 10800006 */ beqz $a0, .L800B662C -/* 0B7214 800B6614 AFA50044 */ sw $a1, 0x44($sp) -/* 0B7218 800B6618 24010001 */ li $at, 1 -/* 0B721C 800B661C 50810004 */ beql $a0, $at, .L800B6630 -/* 0B7220 800B6620 00123900 */ sll $a3, $s2, 4 -/* 0B7224 800B6624 10000031 */ b .L800B66EC -/* 0B7228 800B6628 2402FFFF */ li $v0, -1 -.L800B662C: -/* 0B722C 800B662C 00123900 */ sll $a3, $s2, 4 -.L800B6630: -/* 0B7230 800B6630 3C0F800E */ lui $t7, %hi(D_800DC714) # $t7, 0x800e -/* 0B7234 800B6634 8DEFC714 */ lw $t7, %lo(D_800DC714)($t7) -/* 0B7238 800B6638 00F23823 */ subu $a3, $a3, $s2 -/* 0B723C 800B663C 00073A80 */ sll $a3, $a3, 0xa -/* 0B7240 800B6640 3C048019 */ lui $a0, %hi(gControllerPak2FileHandle) # $a0, 0x8019 -/* 0B7244 800B6644 3C058019 */ lui $a1, %hi(gControllerPak2FileNote) # $a1, 0x8019 -/* 0B7248 800B6648 240E3C00 */ li $t6, 15360 -/* 0B724C 800B664C AFAE0010 */ sw $t6, 0x10($sp) -/* 0B7250 800B6650 8CA5EB88 */ lw $a1, %lo(gControllerPak2FileNote)($a1) -/* 0B7254 800B6654 2484E8D0 */ addiu $a0, %lo(gControllerPak2FileHandle) # addiu $a0, $a0, -0x1730 -/* 0B7258 800B6658 24E70100 */ addiu $a3, $a3, 0x100 -/* 0B725C 800B665C 00003025 */ move $a2, $zero -/* 0B7260 800B6660 0C0340F3 */ jal osPfsReadWriteFile -/* 0B7264 800B6664 AFAF0014 */ sw $t7, 0x14($sp) -/* 0B7268 800B6668 1440001F */ bnez $v0, .L800B66E8 -/* 0B726C 800B666C AFA20034 */ sw $v0, 0x34($sp) -/* 0B7270 800B6670 3C188019 */ lui $t8, %hi(D_8018D9C0) # $t8, 0x8019 -/* 0B7274 800B6674 8F18D9C0 */ lw $t8, %lo(D_8018D9C0)($t8) -/* 0B7278 800B6678 0012C9C0 */ sll $t9, $s2, 7 -/* 0B727C 800B667C 2412003C */ li $s2, 60 -/* 0B7280 800B6680 03199821 */ addu $s3, $t8, $t9 -/* 0B7284 800B6684 02608825 */ move $s1, $s3 -/* 0B7288 800B6688 00008025 */ move $s0, $zero -.L800B668C: -/* 0B728C 800B668C 0C02D83A */ jal func_800B60E8 -/* 0B7290 800B6690 02002025 */ move $a0, $s0 -/* 0B7294 800B6694 92280007 */ lbu $t0, 7($s1) -/* 0B7298 800B6698 26100001 */ addiu $s0, $s0, 1 -/* 0B729C 800B669C 11020004 */ beq $t0, $v0, .L800B66B0 -/* 0B72A0 800B66A0 00000000 */ nop -/* 0B72A4 800B66A4 A2600004 */ sb $zero, 4($s3) -/* 0B72A8 800B66A8 10000010 */ b .L800B66EC -/* 0B72AC 800B66AC 2402FFFE */ li $v0, -2 -.L800B66B0: -/* 0B72B0 800B66B0 1612FFF6 */ bne $s0, $s2, .L800B668C -/* 0B72B4 800B66B4 26310001 */ addiu $s1, $s1, 1 -/* 0B72B8 800B66B8 92690006 */ lbu $t1, 6($s3) -/* 0B72BC 800B66BC 3C018016 */ lui $at, %hi(D_80162DE0) # $at, 0x8016 -/* 0B72C0 800B66C0 8FAC0044 */ lw $t4, 0x44($sp) -/* 0B72C4 800B66C4 AC292DE0 */ sw $t1, %lo(D_80162DE0)($at) -/* 0B72C8 800B66C8 8E6A0000 */ lw $t2, ($s3) -/* 0B72CC 800B66CC 3C018016 */ lui $at, %hi(D_80162DFC) # $at, 0x8016 -/* 0B72D0 800B66D0 000C69C0 */ sll $t5, $t4, 7 -/* 0B72D4 800B66D4 AC2A2DFC */ sw $t2, %lo(D_80162DFC)($at) -/* 0B72D8 800B66D8 826B0005 */ lb $t3, 5($s3) -/* 0B72DC 800B66DC 3C018019 */ lui $at, %hi((D_8018EE10 + 5)) # 0x8019 -/* 0B72E0 800B66E0 002D0821 */ addu $at, $at, $t5 -/* 0B72E4 800B66E4 A02BEE15 */ sb $t3, %lo((D_8018EE10 + 5))($at) # -0x11eb($at) -.L800B66E8: -/* 0B72E8 800B66E8 8FA20034 */ lw $v0, 0x34($sp) -.L800B66EC: -/* 0B72EC 800B66EC 8FBF002C */ lw $ra, 0x2c($sp) -/* 0B72F0 800B66F0 8FB0001C */ lw $s0, 0x1c($sp) -/* 0B72F4 800B66F4 8FB10020 */ lw $s1, 0x20($sp) -/* 0B72F8 800B66F8 8FB20024 */ lw $s2, 0x24($sp) -/* 0B72FC 800B66FC 8FB30028 */ lw $s3, 0x28($sp) -/* 0B7300 800B6700 03E00008 */ jr $ra -/* 0B7304 800B6704 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/code_800B45E0/func_800B6828.s b/asm/non_matchings/code_800B45E0/func_800B6828.s deleted file mode 100644 index 8f747493b..000000000 --- a/asm/non_matchings/code_800B45E0/func_800B6828.s +++ /dev/null @@ -1,53 +0,0 @@ -glabel func_800B6828 -/* 0B7428 800B6828 3C0F8019 */ lui $t7, %hi(D_8018EE10) # $t7, 0x8019 -/* 0B742C 800B682C 25EFEE10 */ addiu $t7, %lo(D_8018EE10) # addiu $t7, $t7, -0x11f0 -/* 0B7430 800B6830 000471C0 */ sll $t6, $a0, 7 -/* 0B7434 800B6834 01CF1021 */ addu $v0, $t6, $t7 -/* 0B7438 800B6838 90580000 */ lbu $t8, ($v0) -/* 0B743C 800B683C 24860001 */ addiu $a2, $a0, 1 -/* 0B7440 800B6840 90590001 */ lbu $t9, 1($v0) -/* 0B7444 800B6844 03060019 */ multu $t8, $a2 -/* 0B7448 800B6848 904A0002 */ lbu $t2, 2($v0) -/* 0B744C 800B684C 24470003 */ addiu $a3, $v0, 3 -/* 0B7450 800B6850 24020043 */ li $v0, 67 -/* 0B7454 800B6854 24050003 */ li $a1, 3 -/* 0B7458 800B6858 00001812 */ mflo $v1 -/* 0B745C 800B685C 00000000 */ nop -/* 0B7460 800B6860 00000000 */ nop -/* 0B7464 800B6864 03260019 */ multu $t9, $a2 -/* 0B7468 800B6868 00004812 */ mflo $t1 -/* 0B746C 800B686C 00691821 */ addu $v1, $v1, $t1 -/* 0B7470 800B6870 24630001 */ addiu $v1, $v1, 1 -/* 0B7474 800B6874 01460019 */ multu $t2, $a2 -/* 0B7478 800B6878 00005812 */ mflo $t3 -/* 0B747C 800B687C 006B1821 */ addu $v1, $v1, $t3 -/* 0B7480 800B6880 24630002 */ addiu $v1, $v1, 2 -.L800B6884: -/* 0B7484 800B6884 90EC0000 */ lbu $t4, ($a3) -/* 0B7488 800B6888 90EF0001 */ lbu $t7, 1($a3) -/* 0B748C 800B688C 90E90002 */ lbu $t1, 2($a3) -/* 0B7490 800B6890 01860019 */ multu $t4, $a2 -/* 0B7494 800B6894 90EC0003 */ lbu $t4, 3($a3) -/* 0B7498 800B6898 24E70004 */ addiu $a3, $a3, 4 -/* 0B749C 800B689C 00006812 */ mflo $t5 -/* 0B74A0 800B68A0 01A57021 */ addu $t6, $t5, $a1 -/* 0B74A4 800B68A4 006E1821 */ addu $v1, $v1, $t6 -/* 0B74A8 800B68A8 01E60019 */ multu $t7, $a2 -/* 0B74AC 800B68AC 0000C012 */ mflo $t8 -/* 0B74B0 800B68B0 0305C821 */ addu $t9, $t8, $a1 -/* 0B74B4 800B68B4 00791821 */ addu $v1, $v1, $t9 -/* 0B74B8 800B68B8 01260019 */ multu $t1, $a2 -/* 0B74BC 800B68BC 24630001 */ addiu $v1, $v1, 1 -/* 0B74C0 800B68C0 00005012 */ mflo $t2 -/* 0B74C4 800B68C4 01455821 */ addu $t3, $t2, $a1 -/* 0B74C8 800B68C8 006B1821 */ addu $v1, $v1, $t3 -/* 0B74CC 800B68CC 01860019 */ multu $t4, $a2 -/* 0B74D0 800B68D0 24630002 */ addiu $v1, $v1, 2 -/* 0B74D4 800B68D4 00006812 */ mflo $t5 -/* 0B74D8 800B68D8 01A57021 */ addu $t6, $t5, $a1 -/* 0B74DC 800B68DC 006E1821 */ addu $v1, $v1, $t6 -/* 0B74E0 800B68E0 24A50004 */ addiu $a1, $a1, 4 -/* 0B74E4 800B68E4 14A2FFE7 */ bne $a1, $v0, .L800B6884 -/* 0B74E8 800B68E8 24630003 */ addiu $v1, $v1, 3 -/* 0B74EC 800B68EC 03E00008 */ jr $ra -/* 0B74F0 800B68F0 306200FF */ andi $v0, $v1, 0xff diff --git a/src/code_800B45E0.c b/src/code_800B45E0.c index acb30d57c..e6bbd03ce 100644 --- a/src/code_800B45E0.c +++ b/src/code_800B45E0.c @@ -45,7 +45,7 @@ void write_save_data_grand_prix_points_and_sound_mode(void) { Stuff *main = &gSaveData.main; main->checksum[1] = compute_save_data_checksum_1(); main->checksum[2] = compute_save_data_checksum_2(); - osEepromLongWrite(&gSIEventMesgQueue, EEPROM_ADDR(main), main, sizeof(Stuff)); + osEepromLongWrite(&gSIEventMesgQueue, EEPROM_ADDR(main), (u8 *) main, sizeof(Stuff)); } void func_800B46D0(void) { @@ -120,7 +120,7 @@ u8 checksum_time_trial_records(s32 courseIdx) { u8 compute_save_data_checksum_1(void) { - u8 *grandPrixPoints = &gSaveData.main.grandPrixPoints; + u8 *grandPrixPoints = (u8 *) &gSaveData.main.grandPrixPoints; s32 i; s32 crc = 0; @@ -218,7 +218,7 @@ void validate_save_data(void) { main->soundMode = backup->soundMode; main->checksum[1] = compute_save_data_checksum_backup_1(); main->checksum[2] = compute_save_data_checksum_backup_2(); - osEepromLongWrite(&gSIEventMesgQueue, EEPROM_ADDR(main), main, sizeof(Stuff)); + osEepromLongWrite(&gSIEventMesgQueue, EEPROM_ADDR(main), (u8 *) main, sizeof(Stuff)); } update_save_data_backup(); return; @@ -294,7 +294,7 @@ s32 func_800B4FB0(s32 courseIndex) { } s32 func_800B5020(u32 time, s32 charId) { - s32 stackPadding[3]; + UNUSED s32 stackPadding[3]; s32 course; // sp30 s32 i; s32 j; @@ -333,58 +333,41 @@ s32 func_800B5020(u32 time, s32 charId) { return i; } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-23-2023 -extern ? D_8018CA74; - +#ifdef NON_MATCHING s32 func_800B5218(void) { - s32 sp38; - s32 sp28; - s32 sp24; - u8 *sp20; - struct_8018CA70_entry *sp18; - ? *var_a1; - s32 temp_v1; - s32 var_a3; - s32 var_v0; - s32 var_v0_2; - struct_8018CA70_entry *var_a2; - u32 temp_a0; - u32 temp_a1; - u8 *temp_v0; - - sp38 = (gCupSelection * 4) + gCupCourseSelection; - var_a3 = 1; - var_a2 = D_8018CA70; - var_a1 = &D_8018CA74; - var_v0_2 = 1; - sp28 = (s32) *gCharacterSelections; - do { - temp_v1 = var_a1->unk20; - temp_a0 = var_a2->lapDurations[0]; - if (temp_v1 < (s32) temp_a0) { - var_a3 = 1 << var_v0_2; - var_a2 = (var_v0_2 * 4) + D_8018CA70; - } else if (temp_a0 == temp_v1) { - var_a3 |= 1 << var_v0_2; + u8 *recordPointer; + s32 prevLapTime; + s32 fastestLapIndex; + s32 recordIndex; + UNUSED s32 padding; + s32 thisLapTime; + s32 checkLapIndex; + s32 character; + s32 lapBitmask; + recordIndex = (gCupSelection * 4) + gCupCourseSelection; + recordPointer = &gSaveData.allCourseTimeTrialRecords.cupRecords[recordIndex / 4].courseRecords[recordIndex % 4].records[0][0]; + lapBitmask = 1; + fastestLapIndex = 0; + character = *gCharacterSelections; + for (checkLapIndex = 1; checkLapIndex != 3; checkLapIndex++) { + prevLapTime = D_8018CA70->lapDurations[checkLapIndex]; + thisLapTime = D_8018CA70->lapDurations[fastestLapIndex]; + if (prevLapTime < thisLapTime) { + lapBitmask = 1 << checkLapIndex; + fastestLapIndex = checkLapIndex; + } else if (thisLapTime == prevLapTime) { + lapBitmask |= 1 << checkLapIndex; } - var_v0_2 += 1; - var_a1 += 4; - } while (var_v0_2 != 3); - sp18 = var_a2; - sp24 = var_a3; - temp_a1 = var_a2->lapDurations[0]; - var_v0 = 0; - if (temp_a1 < (u32) (func_800B4F2C((s32) temp_a0, var_a1, var_a2, var_a3) & 0xFFFFF)) { - temp_v0 = &gSaveData.allCourseTimeTrialRecords.cupRecords[0].courseRecords[0].records[0][((sp38 / 4) * 0x60) + ((sp38 % 4) * 0x18)]; - sp20 = temp_v0; - sp24 = var_a3; - populate_time_trial_record(temp_v0 + 0xF, temp_a1, sp28); - temp_v0->unk12 = 1; - func_800B45E0(sp38); - var_v0 = sp24; } - return var_v0; + + if (D_8018CA70->lapDurations[fastestLapIndex] < (func_800B4F2C() & 0xFFFFF)) { + populate_time_trial_record(recordPointer + 0xF, D_8018CA70->lapDurations[fastestLapIndex], character); + recordPointer[0x12] = 1; + func_800B45E0(recordIndex); + return lapBitmask; + } else { + return 0; + } } #else GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B5218.s") @@ -477,102 +460,49 @@ s32 func_800B557C(void) { return func_800B5530(CC_EXTRA); } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-23-2023 -void func_800B559C(s32 course) { - CourseTimeTrialRecords *temp_a2; - OnlyBestTimeTrialRecords *temp_s2; - OnlyBestTimeTrialRecords *temp_s2_2; - s32 temp_s6; - s32 var_s1; - s32 var_v0; - s32 var_v0_2; - u8 *temp_a0; - u8 *var_a0; - u8 temp_t3; - u8 temp_t9; - void *temp_v1; - void *temp_v1_2; - - temp_s6 = course / 8; - var_s1 = temp_s6 * 8; - if (var_s1 < (var_s1 + 8)) { - temp_s2 = &gSaveData.onlyBestTimeTrialRecords[temp_s6]; - do { - var_a0 = D_800F2E60; - temp_a2 = &gSaveData.allCourseTimeTrialRecords.cupRecords[var_s1 / 4].courseRecords[var_s1 % 4]; - var_v0 = 0; - if (temp_a2->checksum != checksum_time_trial_records(var_s1)) { - do { - temp_v1 = temp_s2 + ((var_s1 % 8) * 3) + var_v0; - var_v0 += 1; - temp_v1->unk0 = (u8) *var_a0; - temp_t9 = *var_a0; - var_a0 += 1; - temp_v1->unk18 = temp_t9; - } while (var_v0 != 3); - } else { - var_v0_2 = 0; - do { - temp_a0 = &temp_a2->records[0][var_v0_2]; - temp_t3 = temp_a0->unk0; - temp_v1_2 = temp_s2 + ((var_s1 % 8) * 3) + var_v0_2; - var_v0_2 += 1; - temp_v1_2->unk0 = temp_t3; - temp_v1_2->unk18 = (u8) temp_a0->unkF; - } while (var_v0_2 != 3); +void func_800B559C(s32 arg0) { + CourseTimeTrialRecords *courseRecord; + OnlyBestTimeTrialRecords *bestRecord; + s32 x = arg0 / 8; + s32 i; + s32 j; + for (i = x * 8; i < ((x * 8) + 8); i++) { + bestRecord = &gSaveData.onlyBestTimeTrialRecords[x]; + courseRecord = &gSaveData.allCourseTimeTrialRecords.cupRecords[i / 4].courseRecords[i % 4]; + if (courseRecord->checksum != checksum_time_trial_records(i)) { + for (j = 0; j < 3; j++) { + bestRecord->bestThreelaps[i % 8][j] = D_800F2E60[j]; + bestRecord->bestSinglelaps[i % 8][j] = D_800F2E60[j]; } - var_s1 += 1; - } while (var_s1 < ((temp_s6 * 8) + 8)); + } else { + for (j = 0; j < 3; j++) { + bestRecord->bestThreelaps[i % 8][j] = courseRecord->records[0][j]; + bestRecord->bestSinglelaps[i % 8][j] = courseRecord->records[0][j + 0x0f]; + } + } } - temp_s2_2 = &gSaveData.onlyBestTimeTrialRecords[temp_s6]; - temp_s2_2->unknownBytes[6] = func_800B578C(temp_s6); - temp_s2_2->unknownBytes[7] = func_800B5888(temp_s6); - osEepromLongWrite(&gSIEventMesgQueue, ((u32) (temp_s2_2 - &gSaveData) >> 3) & 0xFF, temp_s2_2->bestThreelaps[0], 0x00000038); + bestRecord = &gSaveData.onlyBestTimeTrialRecords[x]; + bestRecord->unknownBytes[6] = func_800B578C(x); + bestRecord->unknownBytes[7] = func_800B5888(x); + osEepromLongWrite(&gSIEventMesgQueue, ((u32) (((u8 *) bestRecord) - ((u8 *) (&gSaveData)))) >> 3, bestRecord->bestThreelaps[0], 0x38); } -#else -GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B559C.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-23-2023 +#ifdef NON_MATCHING s32 func_800B578C(s32 arg0) { - OnlyBestTimeTrialRecords *var_a2; - OnlyBestTimeTrialRecords *var_t0; - s32 temp_a1; - s32 temp_lo; - s32 temp_v1; + u8 *var_a2; s32 var_a0; s32 var_v0; s32 var_v1; - u8 *var_a3; - u8 temp_t5; - u8 temp_t9; - - var_a2 = &gSaveData.onlyBestTimeTrialRecords[arg0]; + var_a2 = &gSaveData.onlyBestTimeTrialRecords[arg0].bestThreelaps[0][0]; var_v1 = 0; - var_t0 = var_a2; - var_v0 = 0; - do { - temp_a1 = var_v0 + 1; - var_a3 = &var_a2->bestThreelaps[0][1]; - temp_lo = (var_t0->bestThreelaps[0][0] + 1) * temp_a1; - var_a2 += 0x11; - var_v0 = temp_a1; - var_a0 = 1; - var_v1 += temp_lo; -loop_2: - temp_t5 = var_a3->unk0; - temp_t9 = var_a3->unk1; - var_a3 += 4; - temp_v1 = var_v1 + ((temp_t5 + 1) * temp_a1) + var_a0 + ((temp_t9 + 1) * temp_a1) + var_a0 + 1 + ((var_a3->unk-2 + 1) * temp_a1) + var_a0 + 2 + ((var_a3->unk-1 + 1) * temp_a1) + var_a0; - var_a0 += 4; - var_v1 = temp_v1 + 3; - if (var_a0 != 0x11) { - goto loop_2; + for (var_v0 = 0; var_v0 < 3;) { + ++var_v0; + for (var_a0 = 0; var_a0 != 0x11; var_a0++) { + if (var_a0) { } + var_v1 += (((*var_a2++) + 1) * var_v0) + var_a0; } - var_t0 += 0x11; - } while (temp_a1 != 3); + var_a2 += 0x11; + } return (var_v1 % 256) & 0xFF; } #else @@ -610,7 +540,7 @@ void update_save_data_backup(void) { backup->soundMode = main->soundMode; backup->checksum[1] = compute_save_data_checksum_backup_1(); backup->checksum[2] = compute_save_data_checksum_backup_2(); - osEepromLongWrite(&gSIEventMesgQueue, EEPROM_ADDR(backup), backup, sizeof(Stuff)); + osEepromLongWrite(&gSIEventMesgQueue, EEPROM_ADDR(backup), (u8 *) backup, sizeof(Stuff)); } u8 compute_save_data_checksum_backup_1(void) { @@ -662,7 +592,7 @@ s32 check_for_controller_pak(s32 controller) { // gives status info about controller pak insterted in controller 1 s32 controller_pak_1_status(void) { if (gControllerPak1State) { - switch (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak1FileNote)) { + switch (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8 *) gGameName, (u8 *) gExtCode, &gControllerPak1FileNote)) { case PFS_NO_ERROR: return PFS_NO_ERROR; case PFS_ERR_INVALID: @@ -697,7 +627,7 @@ s32 controller_pak_1_status(void) { } gControllerPak1State = OK; - if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak1FileNote) == PFS_NO_ERROR) { + if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8 *) gGameName, (u8 *) gExtCode, &gControllerPak1FileNote) == PFS_NO_ERROR) { return PFS_NO_ERROR; } if (osPfsNumFiles(&gControllerPak1FileHandle, &gControllerPak1NumFilesUsed, &gControllerPak1MaxWriteableFiles) != PFS_NO_ERROR) { @@ -723,7 +653,7 @@ s32 controller_pak_2_status(void) { s32 stateBorrow = sControllerPak2State; if (stateBorrow) { - switch (osPfsFindFile(&gControllerPak2FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak2FileNote)) { + switch (osPfsFindFile(&gControllerPak2FileHandle, gCompanyCode, gGameCode, (u8 *) gGameName, (u8 *) gExtCode, &gControllerPak2FileNote)) { case PFS_NO_ERROR: return PFS_NO_ERROR; case PFS_ERR_INVALID: @@ -756,7 +686,7 @@ s32 controller_pak_2_status(void) { sControllerPak2State = OK; - switch (osPfsFindFile(&gControllerPak2FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak2FileNote)) { + switch (osPfsFindFile(&gControllerPak2FileHandle, gCompanyCode, gGameCode, (u8 *) gGameName, (u8 *) gExtCode, &gControllerPak2FileNote)) { case PFS_NO_ERROR: return PFS_NO_ERROR; case PFS_ERR_INVALID: @@ -818,24 +748,16 @@ s32 func_800B6088(s32 arg0) { } #ifdef NON_MATCHING - -struct struct_D_800DC714 -{ - u8 filler[0x100]; -}; - -u8 func_800B60E8(s32 arg0) -{ - u8 *addr = *(s32 *)&D_800DC714 + (arg0 << 8); - s32 checksum = 0, i; - - for (i = 0; i < sizeof(struct struct_D_800DC714); i++) - { - checksum = i + ((arg0 + 1) * *addr++) + checksum; +u8 func_800B60E8(s32 page) { + s32 multiplier = page + 1; + s32 checksum = 0; + u8 *addr = &((u8 *) D_800DC714)[page << 8]; + s32 i; + for (i = 0; i < 0x100; i++) { + checksum = (*addr++ * multiplier + i) + checksum; } - return checksum; + return checksum; } - #else GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B60E8.s") #endif @@ -979,15 +901,11 @@ s32 func_800B64EC(s32 arg0) { return temp_v0; } -#ifdef NON_MATCHING -// Matching decomp courstesy of Vetri, leaving it as this becasue I'm lazy -// https://decomp.me/scratch/qrC3l s32 func_800B65F4(s32 arg0, s32 arg1) { - s32 stackPadding; - s32 var_s0; - s32 temp_v0; + UNUSED s32 stackPadding; + s32 i; + s32 writeStatus; struct_8018EE10_entry *temp_s3; - switch (arg0) { case 0: case 1: @@ -995,11 +913,11 @@ s32 func_800B65F4(s32 arg0, s32 arg1) { default: return -1; } - temp_v0 = osPfsReadWriteFile(&gControllerPak2FileHandle, gControllerPak2FileNote, 0U, (arg0 * 0x3C00) + 0x100, 0x00003C00, (u8 *) D_800DC714); - if (temp_v0 == 0) { - temp_s3 = &D_8018D9C0[arg0]; - for (var_s0 = 0; var_s0 < 0x3C; var_s0++) { - if (temp_s3->unk_07[var_s0] != func_800B60E8(var_s0)) { + writeStatus = osPfsReadWriteFile(&gControllerPak2FileHandle, gControllerPak2FileNote, 0U, (arg0 * 0x3C00) + 0x100, 0x00003C00, (u8 *) D_800DC714); + if (writeStatus == 0) { + temp_s3 = &D_8018D9C0->arr[arg0]; + for (i = 0; i < 0x3C; i++) { + if (temp_s3->unk_07[i] != func_800B60E8(i)) { temp_s3->ghostDataSaved = 0; return -2; } @@ -1008,11 +926,8 @@ s32 func_800B65F4(s32 arg0, s32 arg1) { D_80162DFC = temp_s3->unk_00; D_8018EE10[arg1].courseIndex = temp_s3->courseIndex; } - return temp_v0; + return writeStatus; } -#else -GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B65F4.s") -#endif void func_800B6708(void) { s32 temp_s0; @@ -1044,62 +959,27 @@ void func_800B6798(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-08-2023 u8 func_800B6828(s32 arg0) { - s32 temp_a2; - s32 temp_lo; - s32 temp_v1; - s32 var_a1; - s32 var_v1; - struct_8018EE10_entry *temp_v0; - u8 temp_t1; - u8 temp_t4; - u8 temp_t7; - void *var_a3; - - temp_v0 = &D_8018EE10[arg0]; - temp_a2 = arg0 + 1; - var_a3 = temp_v0 + 3; - var_a1 = 3; - var_v1 = (temp_v0->unk0 * temp_a2) + (temp_v0->unk1 * temp_a2) + 1 + (temp_v0->unk2 * temp_a2) + 2; - do { - temp_t7 = var_a3->unk1; - temp_t1 = var_a3->unk2; - temp_lo = var_a3->unk0 * temp_a2; - temp_t4 = var_a3->unk3; - var_a3 += 4; - temp_v1 = var_v1 + (temp_lo + var_a1) + ((temp_t7 * temp_a2) + var_a1) + 1 + ((temp_t1 * temp_a2) + var_a1) + 2 + ((temp_t4 * temp_a2) + var_a1); - var_a1 += 4; - var_v1 = temp_v1 + 3; - } while (var_a1 != 0x43); - return var_v1 & 0xFF; + u32 checksum = 0; + u8 *addr = (u8 *) &D_8018EE10[arg0]; + s32 i; + for (i = 0; i < 0x43; i++) { + checksum += ((addr[i] * (arg0 + 1)) + i); + } + return checksum; } -#else -GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B6828.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-08-2023 +#ifdef NON_MATCHING u8 func_800B68F4(s32 arg0) { - s32 temp_a1; - s32 temp_a3; - s32 var_a1; - s32 var_a2; - struct_8018EE10_entry *temp_v1; - void *temp_v0; - - temp_a3 = arg0 + 1; - temp_v1 = &D_8018D9C0[arg0]; - var_a2 = 3; - var_a1 = (temp_v1->unk0 * temp_a3) + (temp_v1->unk1 * temp_a3) + 1 + (temp_v1->unk2 * temp_a3) + 2; - do { - temp_v0 = temp_v1 + var_a2; - temp_a1 = var_a1 + ((temp_v0->unk0 * temp_a3) + var_a2) + ((temp_v0->unk1 * temp_a3) + var_a2) + 1 + ((temp_v0->unk2 * temp_a3) + var_a2) + 2 + ((temp_v0->unk3 * temp_a3) + var_a2); - var_a2 += 4; - var_a1 = temp_a1 + 3; - } while (var_a2 != 0x43); - return var_a1 & 0xFF; + s32 multiplier = arg0 + 1; + u32 checksum; + s32 i; + checksum = 0; + for (i = 0; i < 0x43; i++) { + u8 *addr = (u8 *) (&D_8018D9C0[arg0]); + checksum += addr[i] * multiplier + i; + } + return checksum; } #else GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B68F4.s") diff --git a/src/code_800B45E0.h b/src/code_800B45E0.h index a16e872ef..75e3ed935 100644 --- a/src/code_800B45E0.h +++ b/src/code_800B45E0.h @@ -87,12 +87,18 @@ s32 func_800B6A68(void); /* data */ // these might not be in this file, but for now... +typedef struct struct_8018EE10_entry_cont +{ + struct_8018EE10_entry arr[1]; + +} struct_8018EE10_entry_cont; + extern u32* D_800DC714; extern u16 gCompanyCode; extern u32 gGameCode; // osPfs gamecode extern s8 gControllerPak1State; // Current state of Controller Pak 1 -extern struct_8018EE10_entry *D_8018D9C0; +extern struct_8018EE10_entry_cont *D_8018D9C0; extern s8 sControllerPak2State; // Current state of the Controller Pak 2 extern const u8 D_800F2E60[];