Matches, near-matches, and fixed warnings in code_800B45E0 (#498)

This commit is contained in:
Matthew 2023-11-25 19:01:58 -05:00 committed by GitHub
parent 8b2bca8268
commit f4658efbba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 115 additions and 494 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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")

View File

@ -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[];