diff --git a/README.md b/README.md index d97e4d83..00a65c1b 100755 --- a/README.md +++ b/README.md @@ -117,9 +117,9 @@ As of April 29th, 2022, this is our current score: ``` ===================================================================== ADVENTURE ONE (ASM -> C Decompilation) - -------------------------- 23.52% Complete -------------------------- - # Decompiled functions: 1129 - # GLOBAL_ASM remaining: 650 + -------------------------- 23.68% Complete -------------------------- + # Decompiled functions: 1131 + # GLOBAL_ASM remaining: 648 # NON_MATCHING functions: 8 # NON_EQUIVALENT WIP functions: 104 ---------------------------- Game Status ---------------------------- diff --git a/asm/non_matchings/racer/func_800521C4.s b/asm/non_matchings/racer/func_800521C4.s deleted file mode 100644 index 73af964c..00000000 --- a/asm/non_matchings/racer/func_800521C4.s +++ /dev/null @@ -1,107 +0,0 @@ -glabel func_800521C4 -/* 052DC4 800521C4 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 052DC8 800521C8 AFBF001C */ sw $ra, 0x1c($sp) -/* 052DCC 800521CC AFB00018 */ sw $s0, 0x18($sp) -/* 052DD0 800521D0 00A08025 */ move $s0, $a1 -/* 052DD4 800521D4 AFA40030 */ sw $a0, 0x30($sp) -/* 052DD8 800521D8 AFA60038 */ sw $a2, 0x38($sp) -/* 052DDC 800521DC 0C008D5A */ jal func_80023568 -/* 052DE0 800521E0 A3A0002B */ sb $zero, 0x2b($sp) -/* 052DE4 800521E4 83A3002B */ lb $v1, 0x2b($sp) -/* 052DE8 800521E8 1040000C */ beqz $v0, .L8005221C -/* 052DEC 800521EC 00000000 */ nop -/* 052DF0 800521F0 0C006EB2 */ jal get_object_struct -/* 052DF4 800521F4 24040001 */ li $a0, 1 -/* 052DF8 800521F8 8FA40030 */ lw $a0, 0x30($sp) -/* 052DFC 800521FC 3C07481C */ lui $a3, (0x481C4000 >> 16) # lui $a3, 0x481c -/* 052E00 80052200 34E74000 */ ori $a3, (0x481C4000 & 0xFFFF) # ori $a3, $a3, 0x4000 -/* 052E04 80052204 02002825 */ move $a1, $s0 -/* 052E08 80052208 0C0148E2 */ jal func_80052388 -/* 052E0C 8005220C 00403025 */ move $a2, $v0 -/* 052E10 80052210 00021E00 */ sll $v1, $v0, 0x18 -/* 052E14 80052214 00037603 */ sra $t6, $v1, 0x18 -/* 052E18 80052218 01C01825 */ move $v1, $t6 -.L8005221C: -/* 052E1C 8005221C 14600013 */ bnez $v1, .L8005226C -/* 052E20 80052220 02002025 */ move $a0, $s0 -/* 052E24 80052224 24050001 */ li $a1, 1 -/* 052E28 80052228 27A60024 */ addiu $a2, $sp, 0x24 -/* 052E2C 8005222C 0C006DEA */ jal func_8001B7A8 -/* 052E30 80052230 A3A3002B */ sb $v1, 0x2b($sp) -/* 052E34 80052234 83A3002B */ lb $v1, 0x2b($sp) -/* 052E38 80052238 1040000C */ beqz $v0, .L8005226C -/* 052E3C 8005223C 00403025 */ move $a2, $v0 -/* 052E40 80052240 3C0F8012 */ lui $t7, %hi(D_8011D540) # $t7, 0x8012 -/* 052E44 80052244 8DEFD540 */ lw $t7, %lo(D_8011D540)($t7) -/* 052E48 80052248 8FA40030 */ lw $a0, 0x30($sp) -/* 052E4C 8005224C 15E00007 */ bnez $t7, .L8005226C -/* 052E50 80052250 02002825 */ move $a1, $s0 -/* 052E54 80052254 3C07481C */ lui $a3, (0x481C4000 >> 16) # lui $a3, 0x481c -/* 052E58 80052258 0C0148E2 */ jal func_80052388 -/* 052E5C 8005225C 34E74000 */ ori $a3, (0x481C4000 & 0xFFFF) # ori $a3, $a3, 0x4000 -/* 052E60 80052260 00021E00 */ sll $v1, $v0, 0x18 -/* 052E64 80052264 0003C603 */ sra $t8, $v1, 0x18 -/* 052E68 80052268 03001825 */ move $v1, $t8 -.L8005226C: -/* 052E6C 8005226C 14600013 */ bnez $v1, .L800522BC -/* 052E70 80052270 02002025 */ move $a0, $s0 -/* 052E74 80052274 2405FFFF */ li $a1, -1 -/* 052E78 80052278 27A60024 */ addiu $a2, $sp, 0x24 -/* 052E7C 8005227C 0C006DEA */ jal func_8001B7A8 -/* 052E80 80052280 A3A3002B */ sb $v1, 0x2b($sp) -/* 052E84 80052284 83A3002B */ lb $v1, 0x2b($sp) -/* 052E88 80052288 1040000C */ beqz $v0, .L800522BC -/* 052E8C 8005228C 00403025 */ move $a2, $v0 -/* 052E90 80052290 3C198012 */ lui $t9, %hi(D_8011D540) # $t9, 0x8012 -/* 052E94 80052294 8F39D540 */ lw $t9, %lo(D_8011D540)($t9) -/* 052E98 80052298 8FA40030 */ lw $a0, 0x30($sp) -/* 052E9C 8005229C 17200007 */ bnez $t9, .L800522BC -/* 052EA0 800522A0 02002825 */ move $a1, $s0 -/* 052EA4 800522A4 3C0746EA */ lui $a3, (0x46EA6000 >> 16) # lui $a3, 0x46ea -/* 052EA8 800522A8 0C0148E2 */ jal func_80052388 -/* 052EAC 800522AC 34E76000 */ ori $a3, (0x46EA6000 & 0xFFFF) # ori $a3, $a3, 0x6000 -/* 052EB0 800522B0 00021E00 */ sll $v1, $v0, 0x18 -/* 052EB4 800522B4 00034603 */ sra $t0, $v1, 0x18 -/* 052EB8 800522B8 01001825 */ move $v1, $t0 -.L800522BC: -/* 052EBC 800522BC 14600020 */ bnez $v1, .L80052340 -/* 052EC0 800522C0 8FBF001C */ lw $ra, 0x1c($sp) -/* 052EC4 800522C4 820901E7 */ lb $t1, 0x1e7($s0) -/* 052EC8 800522C8 240C2800 */ li $t4, 10240 -/* 052ECC 800522CC 312A001F */ andi $t2, $t1, 0x1f -/* 052ED0 800522D0 29410002 */ slti $at, $t2, 2 -/* 052ED4 800522D4 10200019 */ beqz $at, .L8005233C -/* 052ED8 800522D8 3C0144A0 */ li $at, 0x44A00000 # 1280.000000 -/* 052EDC 800522DC 44813000 */ mtc1 $at, $f6 -/* 052EE0 800522E0 C604002C */ lwc1 $f4, 0x2c($s0) -/* 052EE4 800522E4 00000000 */ nop -/* 052EE8 800522E8 46062202 */ mul.s $f8, $f4, $f6 -/* 052EEC 800522EC 444BF800 */ cfc1 $t3, $31 -/* 052EF0 800522F0 00000000 */ nop -/* 052EF4 800522F4 35610003 */ ori $at, $t3, 3 -/* 052EF8 800522F8 38210002 */ xori $at, $at, 2 -/* 052EFC 800522FC 44C1F800 */ ctc1 $at, $31 -/* 052F00 80052300 00000000 */ nop -/* 052F04 80052304 460042A4 */ cvt.w.s $f10, $f8 -/* 052F08 80052308 44055000 */ mfc1 $a1, $f10 -/* 052F0C 8005230C 44CBF800 */ ctc1 $t3, $31 -/* 052F10 80052310 04A10003 */ bgez $a1, .L80052320 -/* 052F14 80052314 28A12801 */ slti $at, $a1, 0x2801 -/* 052F18 80052318 00052823 */ negu $a1, $a1 -/* 052F1C 8005231C 28A12801 */ slti $at, $a1, 0x2801 -.L80052320: -/* 052F20 80052320 14200003 */ bnez $at, .L80052330 -/* 052F24 80052324 01852823 */ subu $a1, $t4, $a1 -/* 052F28 80052328 24052800 */ li $a1, 10240 -/* 052F2C 8005232C 01852823 */ subu $a1, $t4, $a1 -.L80052330: -/* 052F30 80052330 0C01BE53 */ jal get_random_number_from_range -/* 052F34 80052334 00052023 */ negu $a0, $a1 -/* 052F38 80052338 A602016C */ sh $v0, 0x16c($s0) -.L8005233C: -/* 052F3C 8005233C 8FBF001C */ lw $ra, 0x1c($sp) -.L80052340: -/* 052F40 80052340 8FB00018 */ lw $s0, 0x18($sp) -/* 052F44 80052344 03E00008 */ jr $ra -/* 052F48 80052348 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/racer/func_80057220.s b/asm/non_matchings/racer/func_80057220.s deleted file mode 100644 index 959369bc..00000000 --- a/asm/non_matchings/racer/func_80057220.s +++ /dev/null @@ -1,274 +0,0 @@ -.late_rodata -glabel D_800E68CC -.float 0.025 - -.text -glabel func_80057220 -/* 057E20 80057220 3C0E8012 */ lui $t6, %hi(D_8011D540) # $t6, 0x8012 -/* 057E24 80057224 8DCED540 */ lw $t6, %lo(D_8011D540)($t6) -/* 057E28 80057228 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 057E2C 8005722C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 057E30 80057230 AFB00018 */ sw $s0, 0x18($sp) -/* 057E34 80057234 44810000 */ mtc1 $at, $f0 -/* 057E38 80057238 00A08025 */ move $s0, $a1 -/* 057E3C 8005723C AFBF001C */ sw $ra, 0x1c($sp) -/* 057E40 80057240 11C00003 */ beqz $t6, .L80057250 -/* 057E44 80057244 AFA40040 */ sw $a0, 0x40($sp) -/* 057E48 80057248 44800000 */ mtc1 $zero, $f0 -/* 057E4C 8005724C 00000000 */ nop -.L80057250: -/* 057E50 80057250 0C0044EB */ jal func_800113AC -/* 057E54 80057254 E7A0003C */ swc1 $f0, 0x3c($sp) -/* 057E58 80057258 3C048012 */ lui $a0, %hi(D_8011D540) # $a0, 0x8012 -/* 057E5C 8005725C 8C84D540 */ lw $a0, %lo(D_8011D540)($a0) -/* 057E60 80057260 AFA20028 */ sw $v0, 0x28($sp) -/* 057E64 80057264 18800072 */ blez $a0, .L80057430 -/* 057E68 80057268 2881001E */ slti $at, $a0, 0x1e -/* 057E6C 8005726C 10200070 */ beqz $at, .L80057430 -/* 057E70 80057270 00000000 */ nop -/* 057E74 80057274 920F01F4 */ lbu $t7, 0x1f4($s0) -/* 057E78 80057278 3C188012 */ lui $t8, %hi(gActivePlayerButtonPress) # $t8, 0x8012 -/* 057E7C 8005727C 15E0006C */ bnez $t7, .L80057430 -/* 057E80 80057280 00000000 */ nop -/* 057E84 80057284 8F18D52C */ lw $t8, %lo(gActivePlayerButtonPress)($t8) -/* 057E88 80057288 2483FFF2 */ addiu $v1, $a0, -0xe -/* 057E8C 8005728C 33198000 */ andi $t9, $t8, 0x8000 -/* 057E90 80057290 1320003C */ beqz $t9, .L80057384 -/* 057E94 80057294 3C088012 */ lui $t0, %hi(gCurrentCarInput) # $t0, 0x8012 -/* 057E98 80057298 04610004 */ bgez $v1, .L800572AC -/* 057E9C 8005729C 240A0018 */ li $t2, 24 -/* 057EA0 800572A0 04400002 */ bltz $v0, .L800572AC -/* 057EA4 800572A4 00000000 */ nop -/* 057EA8 800572A8 00001825 */ move $v1, $zero -.L800572AC: -/* 057EAC 800572AC 04610002 */ bgez $v1, .L800572B8 -/* 057EB0 800572B0 00000000 */ nop -/* 057EB4 800572B4 00031823 */ negu $v1, $v1 -.L800572B8: -/* 057EB8 800572B8 8D08D528 */ lw $t0, %lo(gCurrentCarInput)($t0) -/* 057EBC 800572BC 28610002 */ slti $at, $v1, 2 -/* 057EC0 800572C0 31092000 */ andi $t1, $t0, 0x2000 -/* 057EC4 800572C4 11200005 */ beqz $t1, .L800572DC -/* 057EC8 800572C8 01432823 */ subu $a1, $t2, $v1 -/* 057ECC 800572CC 10200003 */ beqz $at, .L800572DC -/* 057ED0 800572D0 01432823 */ subu $a1, $t2, $v1 -/* 057ED4 800572D4 00001825 */ move $v1, $zero -/* 057ED8 800572D8 01432823 */ subu $a1, $t2, $v1 -.L800572DC: -/* 057EDC 800572DC 00052043 */ sra $a0, $a1, 1 -/* 057EE0 800572E0 0C00322D */ jal func_8000C8B4 -/* 057EE4 800572E4 AFA50024 */ sw $a1, 0x24($sp) -/* 057EE8 800572E8 8FA50024 */ lw $a1, 0x24($sp) -/* 057EEC 800572EC 24010018 */ li $at, 24 -/* 057EF0 800572F0 14A10007 */ bne $a1, $at, .L80057310 -/* 057EF4 800572F4 A20201D3 */ sb $v0, 0x1d3($s0) -/* 057EF8 800572F8 8FA40040 */ lw $a0, 0x40($sp) -/* 057EFC 800572FC 0C015C12 */ jal func_80057048 -/* 057F00 80057300 24050022 */ li $a1, 34 -/* 057F04 80057304 0C00322D */ jal func_8000C8B4 -/* 057F08 80057308 24040014 */ li $a0, 20 -/* 057F0C 8005730C A20201D3 */ sb $v0, 0x1d3($s0) -.L80057310: -/* 057F10 80057310 0C00322D */ jal func_8000C8B4 -/* 057F14 80057314 24040014 */ li $a0, 20 -/* 057F18 80057318 820B01D3 */ lb $t3, 0x1d3($s0) -/* 057F1C 8005731C 00000000 */ nop -/* 057F20 80057320 0162082A */ slt $at, $t3, $v0 -/* 057F24 80057324 10200003 */ beqz $at, .L80057334 -/* 057F28 80057328 00000000 */ nop -/* 057F2C 8005732C 1000000B */ b .L8005735C -/* 057F30 80057330 A2000203 */ sb $zero, 0x203($s0) -.L80057334: -/* 057F34 80057334 0C00322D */ jal func_8000C8B4 -/* 057F38 80057338 24040023 */ li $a0, 35 -/* 057F3C 8005733C 820C01D3 */ lb $t4, 0x1d3($s0) -/* 057F40 80057340 240D0001 */ li $t5, 1 -/* 057F44 80057344 0182082A */ slt $at, $t4, $v0 -/* 057F48 80057348 10200003 */ beqz $at, .L80057358 -/* 057F4C 8005734C 240E0002 */ li $t6, 2 -/* 057F50 80057350 10000002 */ b .L8005735C -/* 057F54 80057354 A20D0203 */ sb $t5, 0x203($s0) -.L80057358: -/* 057F58 80057358 A20E0203 */ sb $t6, 0x203($s0) -.L8005735C: -/* 057F5C 8005735C 920F01EF */ lbu $t7, 0x1ef($s0) -/* 057F60 80057360 24190007 */ li $t9, 7 -/* 057F64 80057364 35F80001 */ ori $t8, $t7, 1 -/* 057F68 80057368 A21801EF */ sb $t8, 0x1ef($s0) -/* 057F6C 8005736C 3C018012 */ lui $at, %hi(D_8011D560) # $at, 0x8012 -/* 057F70 80057370 A439D560 */ sh $t9, %lo(D_8011D560)($at) -/* 057F74 80057374 820801D3 */ lb $t0, 0x1d3($s0) -/* 057F78 80057378 3C038012 */ lui $v1, %hi(D_8011D585) # $v1, 0x8012 -/* 057F7C 8005737C 2463D585 */ addiu $v1, %lo(D_8011D585) # addiu $v1, $v1, -0x2a7b -/* 057F80 80057380 A0680000 */ sb $t0, ($v1) -.L80057384: -/* 057F84 80057384 86090000 */ lh $t1, ($s0) -/* 057F88 80057388 3C038012 */ lui $v1, %hi(D_8011D585) # $v1, 0x8012 -/* 057F8C 8005738C 2401FFFF */ li $at, -1 -/* 057F90 80057390 15210027 */ bne $t1, $at, .L80057430 -/* 057F94 80057394 2463D585 */ addiu $v1, %lo(D_8011D585) # addiu $v1, $v1, -0x2a7b -/* 057F98 80057398 820201CC */ lb $v0, 0x1cc($s0) -/* 057F9C 8005739C 24010001 */ li $at, 1 -/* 057FA0 800573A0 10400007 */ beqz $v0, .L800573C0 -/* 057FA4 800573A4 00000000 */ nop -/* 057FA8 800573A8 14410021 */ bne $v0, $at, .L80057430 -/* 057FAC 800573AC 00000000 */ nop -/* 057FB0 800573B0 806A0000 */ lb $t2, ($v1) -/* 057FB4 800573B4 00000000 */ nop -/* 057FB8 800573B8 1140001D */ beqz $t2, .L80057430 -/* 057FBC 800573BC 00000000 */ nop -.L800573C0: -/* 057FC0 800573C0 80620000 */ lb $v0, ($v1) -/* 057FC4 800573C4 00000000 */ nop -/* 057FC8 800573C8 10400003 */ beqz $v0, .L800573D8 -/* 057FCC 800573CC 00000000 */ nop -/* 057FD0 800573D0 10000004 */ b .L800573E4 -/* 057FD4 800573D4 A20201D3 */ sb $v0, 0x1d3($s0) -.L800573D8: -/* 057FD8 800573D8 0C00322D */ jal func_8000C8B4 -/* 057FDC 800573DC 24040005 */ li $a0, 5 -/* 057FE0 800573E0 A20201D3 */ sb $v0, 0x1d3($s0) -.L800573E4: -/* 057FE4 800573E4 0C00322D */ jal func_8000C8B4 -/* 057FE8 800573E8 24040014 */ li $a0, 20 -/* 057FEC 800573EC 820B01D3 */ lb $t3, 0x1d3($s0) -/* 057FF0 800573F0 00000000 */ nop -/* 057FF4 800573F4 0162082A */ slt $at, $t3, $v0 -/* 057FF8 800573F8 10200003 */ beqz $at, .L80057408 -/* 057FFC 800573FC 00000000 */ nop -/* 058000 80057400 1000000B */ b .L80057430 -/* 058004 80057404 A2000203 */ sb $zero, 0x203($s0) -.L80057408: -/* 058008 80057408 0C00322D */ jal func_8000C8B4 -/* 05800C 8005740C 24040023 */ li $a0, 35 -/* 058010 80057410 820C01D3 */ lb $t4, 0x1d3($s0) -/* 058014 80057414 240D0001 */ li $t5, 1 -/* 058018 80057418 0182082A */ slt $at, $t4, $v0 -/* 05801C 8005741C 10200003 */ beqz $at, .L8005742C -/* 058020 80057420 240E0002 */ li $t6, 2 -/* 058024 80057424 10000002 */ b .L80057430 -/* 058028 80057428 A20D0203 */ sb $t5, 0x203($s0) -.L8005742C: -/* 05802C 8005742C A20E0203 */ sb $t6, 0x203($s0) -.L80057430: -/* 058030 80057430 820F01D3 */ lb $t7, 0x1d3($s0) -/* 058034 80057434 3C048012 */ lui $a0, %hi(D_8011D540) # $a0, 0x8012 -/* 058038 80057438 8C84D540 */ lw $a0, %lo(D_8011D540)($a0) -/* 05803C 8005743C 11E00012 */ beqz $t7, .L80057488 -/* 058040 80057440 28810050 */ slti $at, $a0, 0x50 -/* 058044 80057444 14800010 */ bnez $a0, .L80057488 -/* 058048 80057448 28810050 */ slti $at, $a0, 0x50 -/* 05804C 8005744C 8FB80028 */ lw $t8, 0x28($sp) -/* 058050 80057450 00000000 */ nop -/* 058054 80057454 1300000C */ beqz $t8, .L80057488 -/* 058058 80057458 28810050 */ slti $at, $a0, 0x50 -/* 05805C 8005745C 821901D8 */ lb $t9, 0x1d8($s0) -/* 058060 80057460 00000000 */ nop -/* 058064 80057464 17200008 */ bnez $t9, .L80057488 -/* 058068 80057468 28810050 */ slti $at, $a0, 0x50 -/* 05806C 8005746C 86040000 */ lh $a0, ($s0) -/* 058070 80057470 0C01C8D2 */ jal func_80072348 -/* 058074 80057474 24050006 */ li $a1, 6 -/* 058078 80057478 3C048012 */ lui $a0, %hi(D_8011D540) # $a0, 0x8012 -/* 05807C 8005747C 8C84D540 */ lw $a0, %lo(D_8011D540)($a0) -/* 058080 80057480 00000000 */ nop -/* 058084 80057484 28810050 */ slti $at, $a0, 0x50 -.L80057488: -/* 058088 80057488 1020000A */ beqz $at, .L800574B4 -/* 05808C 8005748C 3C088012 */ lui $t0, %hi(gActivePlayerButtonPress) # $t0, 0x8012 -/* 058090 80057490 8D08D52C */ lw $t0, %lo(gActivePlayerButtonPress)($t0) -/* 058094 80057494 240A0001 */ li $t2, 1 -/* 058098 80057498 31098000 */ andi $t1, $t0, 0x8000 -/* 05809C 8005749C 11200005 */ beqz $t1, .L800574B4 -/* 0580A0 800574A0 00000000 */ nop -/* 0580A4 800574A4 A20A01F4 */ sb $t2, 0x1f4($s0) -/* 0580A8 800574A8 3C048012 */ lui $a0, %hi(D_8011D540) # $a0, 0x8012 -/* 0580AC 800574AC 8C84D540 */ lw $a0, %lo(D_8011D540)($a0) -/* 0580B0 800574B0 00000000 */ nop -.L800574B4: -/* 0580B4 800574B4 1480000E */ bnez $a0, .L800574F0 -/* 0580B8 800574B8 00000000 */ nop -/* 0580BC 800574BC 920201EF */ lbu $v0, 0x1ef($s0) -/* 0580C0 800574C0 24050162 */ li $a1, 354 -/* 0580C4 800574C4 304B0001 */ andi $t3, $v0, 1 -/* 0580C8 800574C8 11600009 */ beqz $t3, .L800574F0 -/* 0580CC 800574CC 304CFFFE */ andi $t4, $v0, 0xfffe -/* 0580D0 800574D0 A20C01EF */ sb $t4, 0x1ef($s0) -/* 0580D4 800574D4 8FA40040 */ lw $a0, 0x40($sp) -/* 0580D8 800574D8 24060008 */ li $a2, 8 -/* 0580DC 800574DC 0C015C2E */ jal func_800570B8 -/* 0580E0 800574E0 24070082 */ li $a3, 130 -/* 0580E4 800574E4 8FA40040 */ lw $a0, 0x40($sp) -/* 0580E8 800574E8 0C015C12 */ jal func_80057048 -/* 0580EC 800574EC 24050021 */ li $a1, 33 -.L800574F0: -/* 0580F0 800574F0 920201EF */ lbu $v0, 0x1ef($s0) -/* 0580F4 800574F4 2401FFFF */ li $at, -1 -/* 0580F8 800574F8 304D0002 */ andi $t5, $v0, 2 -/* 0580FC 800574FC 11A00002 */ beqz $t5, .L80057508 -/* 058100 80057500 304EFFFD */ andi $t6, $v0, 0xfffd -/* 058104 80057504 A20E01EF */ sb $t6, 0x1ef($s0) -.L80057508: -/* 058108 80057508 820F0185 */ lb $t7, 0x185($s0) -/* 05810C 8005750C 86180000 */ lh $t8, ($s0) -/* 058110 80057510 448F2000 */ mtc1 $t7, $f4 -/* 058114 80057514 17010004 */ bne $t8, $at, .L80057528 -/* 058118 80057518 468020A0 */ cvt.s.w $f2, $f4 -/* 05811C 8005751C C6020124 */ lwc1 $f2, 0x124($s0) -/* 058120 80057520 1000001F */ b .L800575A0 -/* 058124 80057524 3C0141A0 */ lui $at, 0x41a0 -.L80057528: -/* 058128 80057528 3C014024 */ li $at, 0x40240000 # 2.562500 -/* 05812C 8005752C 44813800 */ mtc1 $at, $f7 -/* 058130 80057530 44803000 */ mtc1 $zero, $f6 -/* 058134 80057534 46001221 */ cvt.d.s $f8, $f2 -/* 058138 80057538 4628303C */ c.lt.d $f6, $f8 -/* 05813C 8005753C 00000000 */ nop -/* 058140 80057540 45000009 */ bc1f .L80057568 -/* 058144 80057544 00000000 */ nop -/* 058148 80057548 0C0270C3 */ jal get_filtered_cheats -/* 05814C 8005754C E7A20034 */ swc1 $f2, 0x34($sp) -/* 058150 80057550 C7A20034 */ lwc1 $f2, 0x34($sp) -/* 058154 80057554 30594000 */ andi $t9, $v0, 0x4000 -/* 058158 80057558 17200003 */ bnez $t9, .L80057568 -/* 05815C 8005755C 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 058160 80057560 44811000 */ mtc1 $at, $f2 -/* 058164 80057564 00000000 */ nop -.L80057568: -/* 058168 80057568 0C0270C3 */ jal get_filtered_cheats -/* 05816C 8005756C E7A20034 */ swc1 $f2, 0x34($sp) -/* 058170 80057570 C7A20034 */ lwc1 $f2, 0x34($sp) -/* 058174 80057574 30482000 */ andi $t0, $v0, 0x2000 -/* 058178 80057578 11000009 */ beqz $t0, .L800575A0 -/* 05817C 8005757C 3C0141A0 */ lui $at, 0x41a0 -/* 058180 80057580 44805000 */ mtc1 $zero, $f10 -/* 058184 80057584 00000000 */ nop -/* 058188 80057588 4602503C */ c.lt.s $f10, $f2 -/* 05818C 8005758C 00000000 */ nop -/* 058190 80057590 45000003 */ bc1f .L800575A0 -/* 058194 80057594 3C0141A0 */ lui $at, 0x41a0 -/* 058198 80057598 46001087 */ neg.s $f2, $f2 -/* 05819C 8005759C 3C0141A0 */ li $at, 0x41A00000 # 20.000000 -.L800575A0: -/* 0581A0 800575A0 44816000 */ mtc1 $at, $f12 -/* 0581A4 800575A4 8FB00018 */ lw $s0, 0x18($sp) -/* 0581A8 800575A8 4602603C */ c.lt.s $f12, $f2 -/* 0581AC 800575AC 3C01800E */ lui $at, %hi(D_800E68CC) # $at, 0x800e -/* 0581B0 800575B0 45000002 */ bc1f .L800575BC -/* 0581B4 800575B4 46006007 */ neg.s $f0, $f12 -/* 0581B8 800575B8 46006086 */ mov.s $f2, $f12 -.L800575BC: -/* 0581BC 800575BC 4600103C */ c.lt.s $f2, $f0 -/* 0581C0 800575C0 00000000 */ nop -/* 0581C4 800575C4 45000002 */ bc1f .L800575D0 -/* 0581C8 800575C8 00000000 */ nop -/* 0581CC 800575CC 46000086 */ mov.s $f2, $f0 -.L800575D0: -/* 0581D0 800575D0 C43068CC */ lwc1 $f16, %lo(D_800E68CC)($at) -/* 0581D4 800575D4 C7AC003C */ lwc1 $f12, 0x3c($sp) -/* 0581D8 800575D8 46101482 */ mul.s $f18, $f2, $f16 -/* 0581DC 800575DC 8FBF001C */ lw $ra, 0x1c($sp) -/* 0581E0 800575E0 27BD0040 */ addiu $sp, $sp, 0x40 -/* 0581E4 800575E4 03E00008 */ jr $ra -/* 0581E8 800575E8 46126000 */ add.s $f0, $f12, $f18 - diff --git a/include/structs.h b/include/structs.h index d8c8b3f4..8d2723bd 100644 --- a/include/structs.h +++ b/include/structs.h @@ -877,7 +877,7 @@ typedef struct Object_Racer { /* 0x118 */ s32 unk118; /* 0x11C */ s32 unk11C; /* 0x120 */ s32 unk120; - /* 0x124 */ s32 unk124; + /* 0x124 */ f32 unk124; /* 0x128 */ u32 lap_times[3]; /* 0x134 */ s32 unk134; /* 0x138 */ s32 unk138; @@ -943,7 +943,7 @@ typedef struct Object_Racer { /* 0x1C9 */ u8 unk1C9; /* 0x1CA */ s8 unk1CA; /* 0x1CB */ u8 unk1CB; - /* 0x1CC */ u8 unk1CC; + /* 0x1CC */ s8 unk1CC; /* 0x1CD */ u8 unk1CD; /* 0x1CE */ u8 unk1CE; /* 0x1CF */ s8 unk1CF; diff --git a/src/racer.c b/src/racer.c index 04a0f058..27091b1b 100644 --- a/src/racer.c +++ b/src/racer.c @@ -759,7 +759,47 @@ void func_800521B8(s32 arg0) { D_8011D582 = arg0; } -GLOBAL_ASM("asm/non_matchings/racer/func_800521C4.s") +void func_800521C4(Object *obj, Object_Racer *racer, s32 arg2) { + Object *tempObj; + s8 foundObj; + s32 sp24; + s32 temp_f10; + + foundObj = 0; + if (func_80023568()) { + tempObj = get_object_struct(1); + foundObj = func_80052388(obj, racer, tempObj, 160000.0f); + } + if (!foundObj) { + tempObj = func_8001B7A8(racer, 1, &sp24); + if (tempObj && !D_8011D540) { + foundObj = func_80052388(obj, racer, tempObj, 160000.0f); + } + } + if (!foundObj) { + tempObj = func_8001B7A8(racer, -1, &sp24); + if (tempObj && !D_8011D540) { + foundObj = func_80052388(obj, racer, tempObj, 30000.0f); + } + } + if (!foundObj) { + if ((racer->unk1E7 & 0x1F) < 2) { + temp_f10 = racer->velocity * 1280.0f; + + if (temp_f10 < 0) { + temp_f10 = -temp_f10; + } + + if (temp_f10 > 0x2800) { + temp_f10 = 0x2800; + } + + temp_f10 = 0x2800 - temp_f10; + + racer->unk16C = get_random_number_from_range(-temp_f10, temp_f10); + } + } +} // Ran by the AI. Seems to be direction related of some sorts. void func_8005234C(unk8005234C *arg0) { @@ -1016,7 +1056,111 @@ void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3) { } } -GLOBAL_ASM("asm/non_matchings/racer/func_80057220.s") +f32 func_80057220(Object* arg0, Object_Racer* arg1) { + f32 speedMultiplier; + s32 temp_v1; + f32 bananas; + f32 cap; + s32 phi_a1; + s32 sp28; + + speedMultiplier = 1.0f; + if (D_8011D540 != 0) { + speedMultiplier = 0.0f; + } + sp28 = func_800113AC(); + if (D_8011D540); + if ((D_8011D540 > 0) && (D_8011D540 < 30) && (!arg1->unk1F4)) { + temp_v1 = D_8011D540 - 14; + if ((gActivePlayerButtonPress & 0x8000) != 0) { + if ((temp_v1 < 0) && (sp28 >= 0)) { + temp_v1 = 0; + } + if (temp_v1 < 0) { + temp_v1 = -temp_v1; + } + + if ((gCurrentCarInput & 0x2000)) { + if (temp_v1 < 2) { + temp_v1 = 0; + } + } + + phi_a1 = 24 - temp_v1; + arg1->unk1D3 = func_8000C8B4(phi_a1 >> 1); + if (phi_a1 == 24) { + func_80057048(arg0, 34); + arg1->unk1D3 = func_8000C8B4(20); + } + if ((s32) arg1->unk1D3 < func_8000C8B4(20)) { + arg1->unk203 = 0; + } else if ((s32) arg1->unk1D3 < func_8000C8B4(35)) { + arg1->unk203 = 1; + } else { + arg1->unk203 = 2; + } + arg1->boost_sound |= 1; + D_8011D560 = 7; + D_8011D585 = arg1->unk1D3; + } + if ((arg1->playerIndex == -1) && (!arg1->unk1CC || (arg1->unk1CC == 1 && D_8011D585))) { + if (D_8011D585) { + arg1->unk1D3 = D_8011D585; + } else { + arg1->unk1D3 = func_8000C8B4(5); + } + if (arg1->unk1D3 < func_8000C8B4(20)) { + arg1->unk203 = 0; + } else if (arg1->unk1D3 < func_8000C8B4(35)) { + arg1->unk203 = 1; + } else { + arg1->unk203 = 2; + } + } + } + if (arg1->unk1D3 && !D_8011D540 && sp28 && !arg1->unk1D8) { + func_80072348(arg1->playerIndex, 6); + } + if ((D_8011D540 < 80) && ((gActivePlayerButtonPress & 0x8000))) { + arg1->unk1F4 = 1U; + } + if (D_8011D540 == 0) { + if ((arg1->boost_sound & 1) != 0) { + arg1->boost_sound = (u8) (arg1->boost_sound & 0xFFFE); + func_800570B8(arg0, 0x162, 8, 0x82); + func_80057048(arg0, 0x21); + } + } + if ((arg1->boost_sound & 2) != 0) { + arg1->boost_sound = (u8) (arg1->boost_sound & 0xFFFD); + } + bananas = arg1->bananas; + // Cheats only apply to human players. + if (arg1->playerIndex == PLAYER_COMPUTER) { + bananas = arg1->unk124; + } else { + if (bananas > 10.0) { + // Cap the banana speed boost to 10 if the unlimited bananas cheat is not enabled. + if (!(get_filtered_cheats() & CHEAT_NO_LIMIT_TO_BANANAS)) { + bananas = 10.0f; + } + } + // Make the speed bonus negative if the speed reduction cheat is on. + if (((get_filtered_cheats() & CHEAT_BANANAS_REDUCE_SPEED)) && (bananas > 0.0f)) { + bananas = -bananas; + } + } + // This also means the AI can have twice as many + cap = 20.0f; + if (bananas > cap) { + bananas = cap; + } + if (bananas < -cap) { + bananas = -cap; + } + speedMultiplier += (bananas * 0.025f); + return speedMultiplier; +} void func_800575EC(Object *obj, Object_Racer *obj64) { Matrix mf; diff --git a/src/racer.h b/src/racer.h index 08c335dd..3be4f778 100644 --- a/src/racer.h +++ b/src/racer.h @@ -172,6 +172,7 @@ void func_8005A3B0(void); void func_8005A3C0(void); void func_8005A3D0(void); void antipiracy_modify_surface_traction_table(void); +s32 func_80052388(Object *obj1, Object_Racer *arg1, Object *obj2, f32 distance); //Non Matching void set_ghost_position_and_rotation(Object *obj);