Update Attempts and cleanup synthesis_process_notes (#633)

* Update code_80005FD0.c
This commit is contained in:
MegaMech 2024-05-01 19:19:02 -06:00 committed by GitHub
parent a66a6fd009
commit f5d8147d4b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 101 additions and 895 deletions

View File

@ -1,498 +0,0 @@
glabel func_800074D4
/* 0080D4 800074D4 27BDFF70 */ addiu $sp, $sp, -0x90
/* 0080D8 800074D8 3C048016 */ lui $a0, %hi(gCourseCompletionPercentByRank) # $a0, 0x8016
/* 0080DC 800074DC 44800000 */ mtc1 $zero, $f0
/* 0080E0 800074E0 AFB1000C */ sw $s1, 0xc($sp)
/* 0080E4 800074E4 AFB00008 */ sw $s0, 8($sp)
/* 0080E8 800074E8 240A0008 */ li $t2, 8
/* 0080EC 800074EC 24842FD8 */ addiu $a0, %lo(gCourseCompletionPercentByRank) # addiu $a0, $a0, 0x2fd8
/* 0080F0 800074F0 24070001 */ li $a3, 1
/* 0080F4 800074F4 24020009 */ li $v0, 9
.L800074F8:
/* 0080F8 800074F8 24E70001 */ addiu $a3, $a3, 1
/* 0080FC 800074FC 00E2082A */ slt $at, $a3, $v0
/* 008100 80007500 E4800000 */ swc1 $f0, ($a0)
/* 008104 80007504 1420FFFC */ bnez $at, .L800074F8
/* 008108 80007508 24840004 */ addiu $a0, $a0, 4
/* 00810C 8000750C 00001025 */ move $v0, $zero
/* 008110 80007510 10000025 */ b .L800075A8
/* 008114 80007514 00004025 */ move $t0, $zero
/* 008118 80007518 000070C0 */ sll $t6, $zero, 3
/* 00811C 8000751C 01C07023 */ subu $t6, $t6, $zero
/* 008120 80007520 000E7100 */ sll $t6, $t6, 4
/* 008124 80007524 01C07023 */ subu $t6, $t6, $zero
/* 008128 80007528 000E7080 */ sll $t6, $t6, 2
/* 00812C 8000752C 01C07023 */ subu $t6, $t6, $zero
/* 008130 80007530 3C0F800F */ lui $t7, %hi(gPlayers) # $t7, 0x800f
/* 008134 80007534 25EF6990 */ addiu $t7, %lo(gPlayers) # addiu $t7, $t7, 0x6990
/* 008138 80007538 000E70C0 */ sll $t6, $t6, 3
/* 00813C 8000753C 3C0C8016 */ lui $t4, %hi(gCourseCompletionPercentByRank) # $t4, 0x8016
/* 008140 80007540 3C098016 */ lui $t1, %hi(gTimePlayerLastTouchedFinishLine) # $t1, 0x8016
/* 008144 80007544 2529F898 */ addiu $t1, %lo(gTimePlayerLastTouchedFinishLine) # addiu $t1, $t1, -0x768
/* 008148 80007548 258C2FD8 */ addiu $t4, %lo(gCourseCompletionPercentByRank) # addiu $t4, $t4, 0x2fd8
/* 00814C 8000754C 01CF2021 */ addu $a0, $t6, $t7
/* 008150 80007550 00002825 */ move $a1, $zero
/* 008154 80007554 24070001 */ li $a3, 1
/* 008158 80007558 27A60068 */ addiu $a2, $sp, 0x68
.L8000755C:
/* 00815C 8000755C 94980000 */ lhu $t8, ($a0)
/* 008160 80007560 00021880 */ sll $v1, $v0, 2
/* 008164 80007564 00C37021 */ addu $t6, $a2, $v1
/* 008168 80007568 33190800 */ andi $t9, $t8, 0x800
/* 00816C 8000756C 13200009 */ beqz $t9, .L80007594
/* 008170 80007570 24840DD8 */ addiu $a0, $a0, 0xdd8
/* 008174 80007574 00087880 */ sll $t7, $t0, 2
/* 008178 80007578 012FC021 */ addu $t8, $t1, $t7
/* 00817C 8000757C ADC80000 */ sw $t0, ($t6)
/* 008180 80007580 C7040000 */ lwc1 $f4, ($t8)
/* 008184 80007584 0183C821 */ addu $t9, $t4, $v1
/* 008188 80007588 24420001 */ addiu $v0, $v0, 1
/* 00818C 8000758C 46002187 */ neg.s $f6, $f4
/* 008190 80007590 E7260000 */ swc1 $f6, ($t9)
.L80007594:
/* 008194 80007594 00E04025 */ move $t0, $a3
/* 008198 80007598 14A7FFF0 */ bne $a1, $a3, .L8000755C
/* 00819C 8000759C 24E70001 */ addiu $a3, $a3, 1
/* 0081A0 800075A0 240B0008 */ li $t3, 8
/* 0081A4 800075A4 110B0049 */ beq $t0, $t3, .L800076CC
.L800075A8:
/* 0081A8 800075A8 000870C0 */ sll $t6, $t0, 3
/* 0081AC 800075AC 01C87023 */ subu $t6, $t6, $t0
/* 0081B0 800075B0 000E7100 */ sll $t6, $t6, 4
/* 0081B4 800075B4 01C87023 */ subu $t6, $t6, $t0
/* 0081B8 800075B8 000E7080 */ sll $t6, $t6, 2
/* 0081BC 800075BC 01C87023 */ subu $t6, $t6, $t0
/* 0081C0 800075C0 3C0F800F */ lui $t7, %hi(gPlayers) # $t7, 0x800f
/* 0081C4 800075C4 25EF6990 */ addiu $t7, %lo(gPlayers) # addiu $t7, $t7, 0x6990
/* 0081C8 800075C8 000E70C0 */ sll $t6, $t6, 3
/* 0081CC 800075CC 3C098016 */ lui $t1, %hi(gTimePlayerLastTouchedFinishLine) # $t1, 0x8016
/* 0081D0 800075D0 3C0C8016 */ lui $t4, %hi(gCourseCompletionPercentByRank) # $t4, 0x8016
/* 0081D4 800075D4 258C2FD8 */ addiu $t4, %lo(gCourseCompletionPercentByRank) # addiu $t4, $t4, 0x2fd8
/* 0081D8 800075D8 2529F898 */ addiu $t1, %lo(gTimePlayerLastTouchedFinishLine) # addiu $t1, $t1, -0x768
/* 0081DC 800075DC 01CF2021 */ addu $a0, $t6, $t7
/* 0081E0 800075E0 27A60068 */ addiu $a2, $sp, 0x68
.L800075E4:
/* 0081E4 800075E4 94980000 */ lhu $t8, ($a0)
/* 0081E8 800075E8 00021880 */ sll $v1, $v0, 2
/* 0081EC 800075EC 00C37021 */ addu $t6, $a2, $v1
/* 0081F0 800075F0 33190800 */ andi $t9, $t8, 0x800
/* 0081F4 800075F4 13200008 */ beqz $t9, .L80007618
/* 0081F8 800075F8 00087880 */ sll $t7, $t0, 2
/* 0081FC 800075FC ADC80000 */ sw $t0, ($t6)
/* 008200 80007600 012FC021 */ addu $t8, $t1, $t7
/* 008204 80007604 C7080000 */ lwc1 $f8, ($t8)
/* 008208 80007608 0183C821 */ addu $t9, $t4, $v1
/* 00820C 8000760C 24420001 */ addiu $v0, $v0, 1
/* 008210 80007610 46004287 */ neg.s $f10, $f8
/* 008214 80007614 E72A0000 */ swc1 $f10, ($t9)
.L80007618:
/* 008218 80007618 948E0DD8 */ lhu $t6, 0xdd8($a0)
/* 00821C 8000761C 00021880 */ sll $v1, $v0, 2
/* 008220 80007620 00C3C821 */ addu $t9, $a2, $v1
/* 008224 80007624 31CF0800 */ andi $t7, $t6, 0x800
/* 008228 80007628 11E00009 */ beqz $t7, .L80007650
/* 00822C 8000762C 25180001 */ addiu $t8, $t0, 1
/* 008230 80007630 00087080 */ sll $t6, $t0, 2
/* 008234 80007634 012E7821 */ addu $t7, $t1, $t6
/* 008238 80007638 AF380000 */ sw $t8, ($t9)
/* 00823C 8000763C C5F00004 */ lwc1 $f16, 4($t7)
/* 008240 80007640 0183C021 */ addu $t8, $t4, $v1
/* 008244 80007644 24420001 */ addiu $v0, $v0, 1
/* 008248 80007648 46008487 */ neg.s $f18, $f16
/* 00824C 8000764C E7120000 */ swc1 $f18, ($t8)
.L80007650:
/* 008250 80007650 94991BB0 */ lhu $t9, 0x1bb0($a0)
/* 008254 80007654 00021880 */ sll $v1, $v0, 2
/* 008258 80007658 00C3C021 */ addu $t8, $a2, $v1
/* 00825C 8000765C 332E0800 */ andi $t6, $t9, 0x800
/* 008260 80007660 11C00009 */ beqz $t6, .L80007688
/* 008264 80007664 250F0002 */ addiu $t7, $t0, 2
/* 008268 80007668 0008C880 */ sll $t9, $t0, 2
/* 00826C 8000766C 01397021 */ addu $t6, $t1, $t9
/* 008270 80007670 AF0F0000 */ sw $t7, ($t8)
/* 008274 80007674 C5C40008 */ lwc1 $f4, 8($t6)
/* 008278 80007678 01837821 */ addu $t7, $t4, $v1
/* 00827C 8000767C 24420001 */ addiu $v0, $v0, 1
/* 008280 80007680 46002187 */ neg.s $f6, $f4
/* 008284 80007684 E5E60000 */ swc1 $f6, ($t7)
.L80007688:
/* 008288 80007688 94982988 */ lhu $t8, 0x2988($a0)
/* 00828C 8000768C 00021880 */ sll $v1, $v0, 2
/* 008290 80007690 00C37821 */ addu $t7, $a2, $v1
/* 008294 80007694 33190800 */ andi $t9, $t8, 0x800
/* 008298 80007698 13200009 */ beqz $t9, .L800076C0
/* 00829C 8000769C 250E0003 */ addiu $t6, $t0, 3
/* 0082A0 800076A0 0008C080 */ sll $t8, $t0, 2
/* 0082A4 800076A4 0138C821 */ addu $t9, $t1, $t8
/* 0082A8 800076A8 ADEE0000 */ sw $t6, ($t7)
/* 0082AC 800076AC C728000C */ lwc1 $f8, 0xc($t9)
/* 0082B0 800076B0 01837021 */ addu $t6, $t4, $v1
/* 0082B4 800076B4 24420001 */ addiu $v0, $v0, 1
/* 0082B8 800076B8 46004287 */ neg.s $f10, $f8
/* 0082BC 800076BC E5CA0000 */ swc1 $f10, ($t6)
.L800076C0:
/* 0082C0 800076C0 25080004 */ addiu $t0, $t0, 4
/* 0082C4 800076C4 150AFFC7 */ bne $t0, $t2, .L800075E4
/* 0082C8 800076C8 24843760 */ addiu $a0, $a0, 0x3760
.L800076CC:
/* 0082CC 800076CC 3C0C8016 */ lui $t4, %hi(gCourseCompletionPercentByRank) # $t4, 0x8016
/* 0082D0 800076D0 258C2FD8 */ addiu $t4, %lo(gCourseCompletionPercentByRank) # addiu $t4, $t4, 0x2fd8
/* 0082D4 800076D4 00004025 */ move $t0, $zero
/* 0082D8 800076D8 27A60068 */ addiu $a2, $sp, 0x68
/* 0082DC 800076DC 240B0008 */ li $t3, 8
/* 0082E0 800076E0 10000020 */ b .L80007764
/* 0082E4 800076E4 00404825 */ move $t1, $v0
/* 0082E8 800076E8 000078C0 */ sll $t7, $zero, 3
/* 0082EC 800076EC 01E07823 */ subu $t7, $t7, $zero
/* 0082F0 800076F0 000F7900 */ sll $t7, $t7, 4
/* 0082F4 800076F4 01E07823 */ subu $t7, $t7, $zero
/* 0082F8 800076F8 000F7880 */ sll $t7, $t7, 2
/* 0082FC 800076FC 01E07823 */ subu $t7, $t7, $zero
/* 008300 80007700 3C18800F */ lui $t8, %hi(gPlayers) # $t8, 0x800f
/* 008304 80007704 27186990 */ addiu $t8, %lo(gPlayers) # addiu $t8, $t8, 0x6990
/* 008308 80007708 000F78C0 */ sll $t7, $t7, 3
/* 00830C 8000770C 3C0D8016 */ lui $t5, %hi(gCourseCompletionPercentByPlayerId) # $t5, 0x8016
/* 008310 80007710 25AD44D0 */ addiu $t5, %lo(gCourseCompletionPercentByPlayerId) # addiu $t5, $t5, 0x44d0
/* 008314 80007714 01F82021 */ addu $a0, $t7, $t8
/* 008318 80007718 00002825 */ move $a1, $zero
/* 00831C 8000771C 24070001 */ li $a3, 1
.L80007720:
/* 008320 80007720 94990000 */ lhu $t9, ($a0)
/* 008324 80007724 00021880 */ sll $v1, $v0, 2
/* 008328 80007728 00C37821 */ addu $t7, $a2, $v1
/* 00832C 8000772C 332E0800 */ andi $t6, $t9, 0x800
/* 008330 80007730 15C00008 */ bnez $t6, .L80007754
/* 008334 80007734 24840DD8 */ addiu $a0, $a0, 0xdd8
/* 008338 80007738 0008C080 */ sll $t8, $t0, 2
/* 00833C 8000773C 01B8C821 */ addu $t9, $t5, $t8
/* 008340 80007740 ADE80000 */ sw $t0, ($t7)
/* 008344 80007744 C7300000 */ lwc1 $f16, ($t9)
/* 008348 80007748 01837021 */ addu $t6, $t4, $v1
/* 00834C 8000774C 24420001 */ addiu $v0, $v0, 1
/* 008350 80007750 E5D00000 */ swc1 $f16, ($t6)
.L80007754:
/* 008354 80007754 00E04025 */ move $t0, $a3
/* 008358 80007758 14A7FFF1 */ bne $a1, $a3, .L80007720
/* 00835C 8000775C 24E70001 */ addiu $a3, $a3, 1
/* 008360 80007760 110B0042 */ beq $t0, $t3, .L8000786C
.L80007764:
/* 008364 80007764 000878C0 */ sll $t7, $t0, 3
/* 008368 80007768 01E87823 */ subu $t7, $t7, $t0
/* 00836C 8000776C 000F7900 */ sll $t7, $t7, 4
/* 008370 80007770 01E87823 */ subu $t7, $t7, $t0
/* 008374 80007774 000F7880 */ sll $t7, $t7, 2
/* 008378 80007778 01E87823 */ subu $t7, $t7, $t0
/* 00837C 8000777C 3C18800F */ lui $t8, %hi(gPlayers) # $t8, 0x800f
/* 008380 80007780 27186990 */ addiu $t8, %lo(gPlayers) # addiu $t8, $t8, 0x6990
/* 008384 80007784 000F78C0 */ sll $t7, $t7, 3
/* 008388 80007788 3C0D8016 */ lui $t5, %hi(gCourseCompletionPercentByPlayerId) # $t5, 0x8016
/* 00838C 8000778C 25AD44D0 */ addiu $t5, %lo(gCourseCompletionPercentByPlayerId) # addiu $t5, $t5, 0x44d0
/* 008390 80007790 01F82021 */ addu $a0, $t7, $t8
.L80007794:
/* 008394 80007794 94990000 */ lhu $t9, ($a0)
/* 008398 80007798 00021880 */ sll $v1, $v0, 2
/* 00839C 8000779C 00C37821 */ addu $t7, $a2, $v1
/* 0083A0 800077A0 332E0800 */ andi $t6, $t9, 0x800
/* 0083A4 800077A4 15C00007 */ bnez $t6, .L800077C4
/* 0083A8 800077A8 0008C080 */ sll $t8, $t0, 2
/* 0083AC 800077AC ADE80000 */ sw $t0, ($t7)
/* 0083B0 800077B0 01B8C821 */ addu $t9, $t5, $t8
/* 0083B4 800077B4 C7320000 */ lwc1 $f18, ($t9)
/* 0083B8 800077B8 01837021 */ addu $t6, $t4, $v1
/* 0083BC 800077BC 24420001 */ addiu $v0, $v0, 1
/* 0083C0 800077C0 E5D20000 */ swc1 $f18, ($t6)
.L800077C4:
/* 0083C4 800077C4 948F0DD8 */ lhu $t7, 0xdd8($a0)
/* 0083C8 800077C8 00021880 */ sll $v1, $v0, 2
/* 0083CC 800077CC 00C37021 */ addu $t6, $a2, $v1
/* 0083D0 800077D0 31F80800 */ andi $t8, $t7, 0x800
/* 0083D4 800077D4 17000008 */ bnez $t8, .L800077F8
/* 0083D8 800077D8 25190001 */ addiu $t9, $t0, 1
/* 0083DC 800077DC 00087880 */ sll $t7, $t0, 2
/* 0083E0 800077E0 01AFC021 */ addu $t8, $t5, $t7
/* 0083E4 800077E4 ADD90000 */ sw $t9, ($t6)
/* 0083E8 800077E8 C7040004 */ lwc1 $f4, 4($t8)
/* 0083EC 800077EC 0183C821 */ addu $t9, $t4, $v1
/* 0083F0 800077F0 24420001 */ addiu $v0, $v0, 1
/* 0083F4 800077F4 E7240000 */ swc1 $f4, ($t9)
.L800077F8:
/* 0083F8 800077F8 948E1BB0 */ lhu $t6, 0x1bb0($a0)
/* 0083FC 800077FC 00021880 */ sll $v1, $v0, 2
/* 008400 80007800 00C3C821 */ addu $t9, $a2, $v1
/* 008404 80007804 31CF0800 */ andi $t7, $t6, 0x800
/* 008408 80007808 15E00008 */ bnez $t7, .L8000782C
/* 00840C 8000780C 25180002 */ addiu $t8, $t0, 2
/* 008410 80007810 00087080 */ sll $t6, $t0, 2
/* 008414 80007814 01AE7821 */ addu $t7, $t5, $t6
/* 008418 80007818 AF380000 */ sw $t8, ($t9)
/* 00841C 8000781C C5E60008 */ lwc1 $f6, 8($t7)
/* 008420 80007820 0183C021 */ addu $t8, $t4, $v1
/* 008424 80007824 24420001 */ addiu $v0, $v0, 1
/* 008428 80007828 E7060000 */ swc1 $f6, ($t8)
.L8000782C:
/* 00842C 8000782C 94992988 */ lhu $t9, 0x2988($a0)
/* 008430 80007830 00021880 */ sll $v1, $v0, 2
/* 008434 80007834 00C3C021 */ addu $t8, $a2, $v1
/* 008438 80007838 332E0800 */ andi $t6, $t9, 0x800
/* 00843C 8000783C 15C00008 */ bnez $t6, .L80007860
/* 008440 80007840 250F0003 */ addiu $t7, $t0, 3
/* 008444 80007844 0008C880 */ sll $t9, $t0, 2
/* 008448 80007848 01B97021 */ addu $t6, $t5, $t9
/* 00844C 8000784C AF0F0000 */ sw $t7, ($t8)
/* 008450 80007850 C5C8000C */ lwc1 $f8, 0xc($t6)
/* 008454 80007854 01837821 */ addu $t7, $t4, $v1
/* 008458 80007858 24420001 */ addiu $v0, $v0, 1
/* 00845C 8000785C E5E80000 */ swc1 $f8, ($t7)
.L80007860:
/* 008460 80007860 25080004 */ addiu $t0, $t0, 4
/* 008464 80007864 150AFFCB */ bne $t0, $t2, .L80007794
/* 008468 80007868 24843760 */ addiu $a0, $a0, 0x3760
.L8000786C:
/* 00846C 8000786C 252DFFFF */ addiu $t5, $t1, -1
/* 008470 80007870 19A00047 */ blez $t5, .L80007990
/* 008474 80007874 00004025 */ move $t0, $zero
/* 008478 80007878 24070001 */ li $a3, 1
.L8000787C:
/* 00847C 8000787C 00E9082A */ slt $at, $a3, $t1
/* 008480 80007880 10200040 */ beqz $at, .L80007984
/* 008484 80007884 00E01025 */ move $v0, $a3
/* 008488 80007888 3C188016 */ lui $t8, %hi(gCourseCompletionPercentByRank) # $t8, 0x8016
/* 00848C 8000788C 01276023 */ subu $t4, $t1, $a3
/* 008490 80007890 31830001 */ andi $v1, $t4, 1
/* 008494 80007894 27182FD8 */ addiu $t8, %lo(gCourseCompletionPercentByRank) # addiu $t8, $t8, 0x2fd8
/* 008498 80007898 00082880 */ sll $a1, $t0, 2
/* 00849C 8000789C 10600013 */ beqz $v1, .L800078EC
/* 0084A0 800078A0 00B82021 */ addu $a0, $a1, $t8
/* 0084A4 800078A4 00071880 */ sll $v1, $a3, 2
/* 0084A8 800078A8 00786021 */ addu $t4, $v1, $t8
/* 0084AC 800078AC C5820000 */ lwc1 $f2, ($t4)
/* 0084B0 800078B0 C4800000 */ lwc1 $f0, ($a0)
/* 0084B4 800078B4 00C34021 */ addu $t0, $a2, $v1
/* 0084B8 800078B8 00C51021 */ addu $v0, $a2, $a1
/* 0084BC 800078BC 4602003C */ c.lt.s $f0, $f2
/* 0084C0 800078C0 00000000 */ nop
/* 0084C4 800078C4 45020008 */ bc1fl .L800078E8
/* 0084C8 800078C8 24E20001 */ addiu $v0, $a3, 1
/* 0084CC 800078CC 8D190000 */ lw $t9, ($t0)
/* 0084D0 800078D0 8C500000 */ lw $s0, ($v0)
/* 0084D4 800078D4 E4820000 */ swc1 $f2, ($a0)
/* 0084D8 800078D8 AC590000 */ sw $t9, ($v0)
/* 0084DC 800078DC E5800000 */ swc1 $f0, ($t4)
/* 0084E0 800078E0 AD100000 */ sw $s0, ($t0)
/* 0084E4 800078E4 24E20001 */ addiu $v0, $a3, 1
.L800078E8:
/* 0084E8 800078E8 10490026 */ beq $v0, $t1, .L80007984
.L800078EC:
/* 0084EC 800078EC 3C0E8016 */ lui $t6, %hi(gCourseCompletionPercentByRank) # $t6, 0x8016
/* 0084F0 800078F0 25CE2FD8 */ addiu $t6, %lo(gCourseCompletionPercentByRank) # addiu $t6, $t6, 0x2fd8
/* 0084F4 800078F4 00021880 */ sll $v1, $v0, 2
/* 0084F8 800078F8 00097880 */ sll $t7, $t1, 2
/* 0084FC 800078FC 01EE8821 */ addu $s1, $t7, $t6
/* 008500 80007900 006E6021 */ addu $t4, $v1, $t6
.L80007904:
/* 008504 80007904 C4800000 */ lwc1 $f0, ($a0)
/* 008508 80007908 C5820000 */ lwc1 $f2, ($t4)
/* 00850C 8000790C 00C51021 */ addu $v0, $a2, $a1
/* 008510 80007910 00C34021 */ addu $t0, $a2, $v1
/* 008514 80007914 4602003C */ c.lt.s $f0, $f2
/* 008518 80007918 00000000 */ nop
/* 00851C 8000791C 4502000A */ bc1fl .L80007948
/* 008520 80007920 C5820004 */ lwc1 $f2, 4($t4)
/* 008524 80007924 8D180000 */ lw $t8, ($t0)
/* 008528 80007928 8C500000 */ lw $s0, ($v0)
/* 00852C 8000792C 46000306 */ mov.s $f12, $f0
/* 008530 80007930 E4820000 */ swc1 $f2, ($a0)
/* 008534 80007934 E58C0000 */ swc1 $f12, ($t4)
/* 008538 80007938 AC580000 */ sw $t8, ($v0)
/* 00853C 8000793C C4800000 */ lwc1 $f0, ($a0)
/* 008540 80007940 AD100000 */ sw $s0, ($t0)
/* 008544 80007944 C5820004 */ lwc1 $f2, 4($t4)
.L80007948:
/* 008548 80007948 00C51021 */ addu $v0, $a2, $a1
/* 00854C 8000794C 00C34021 */ addu $t0, $a2, $v1
/* 008550 80007950 4602003C */ c.lt.s $f0, $f2
/* 008554 80007954 00000000 */ nop
/* 008558 80007958 45020008 */ bc1fl .L8000797C
/* 00855C 8000795C 258C0008 */ addiu $t4, $t4, 8
/* 008560 80007960 8D190004 */ lw $t9, 4($t0)
/* 008564 80007964 8C500000 */ lw $s0, ($v0)
/* 008568 80007968 E4820000 */ swc1 $f2, ($a0)
/* 00856C 8000796C AC590000 */ sw $t9, ($v0)
/* 008570 80007970 E5800004 */ swc1 $f0, 4($t4)
/* 008574 80007974 AD100004 */ sw $s0, 4($t0)
/* 008578 80007978 258C0008 */ addiu $t4, $t4, 8
.L8000797C:
/* 00857C 8000797C 1591FFE1 */ bne $t4, $s1, .L80007904
/* 008580 80007980 24630008 */ addiu $v1, $v1, 8
.L80007984:
/* 008584 80007984 00E04025 */ move $t0, $a3
/* 008588 80007988 14EDFFBC */ bne $a3, $t5, .L8000787C
/* 00858C 8000798C 24E70001 */ addiu $a3, $a3, 1
.L80007990:
/* 008590 80007990 29A10006 */ slti $at, $t5, 6
/* 008594 80007994 10200049 */ beqz $at, .L80007ABC
/* 008598 80007998 01204025 */ move $t0, $t1
/* 00859C 8000799C 25270001 */ addiu $a3, $t1, 1
/* 0085A0 800079A0 2549FFFF */ addiu $t1, $t2, -1
.L800079A4:
/* 0085A4 800079A4 28E10008 */ slti $at, $a3, 8
/* 0085A8 800079A8 10200041 */ beqz $at, .L80007AB0
/* 0085AC 800079AC 00E01025 */ move $v0, $a3
/* 0085B0 800079B0 240E0008 */ li $t6, 8
/* 0085B4 800079B4 01C76023 */ subu $t4, $t6, $a3
/* 0085B8 800079B8 3C0F8016 */ lui $t7, %hi(gCourseCompletionPercentByRank) # $t7, 0x8016
/* 0085BC 800079BC 25EF2FD8 */ addiu $t7, %lo(gCourseCompletionPercentByRank) # addiu $t7, $t7, 0x2fd8
/* 0085C0 800079C0 31830001 */ andi $v1, $t4, 1
/* 0085C4 800079C4 00082880 */ sll $a1, $t0, 2
/* 0085C8 800079C8 10600013 */ beqz $v1, .L80007A18
/* 0085CC 800079CC 00AF2021 */ addu $a0, $a1, $t7
/* 0085D0 800079D0 00071880 */ sll $v1, $a3, 2
/* 0085D4 800079D4 006F6021 */ addu $t4, $v1, $t7
/* 0085D8 800079D8 C5820000 */ lwc1 $f2, ($t4)
/* 0085DC 800079DC C4800000 */ lwc1 $f0, ($a0)
/* 0085E0 800079E0 00C34021 */ addu $t0, $a2, $v1
/* 0085E4 800079E4 00C51021 */ addu $v0, $a2, $a1
/* 0085E8 800079E8 4602003C */ c.lt.s $f0, $f2
/* 0085EC 800079EC 00000000 */ nop
/* 0085F0 800079F0 45020008 */ bc1fl .L80007A14
/* 0085F4 800079F4 24E20001 */ addiu $v0, $a3, 1
/* 0085F8 800079F8 8D180000 */ lw $t8, ($t0)
/* 0085FC 800079FC 8C500000 */ lw $s0, ($v0)
/* 008600 80007A00 E4820000 */ swc1 $f2, ($a0)
/* 008604 80007A04 AC580000 */ sw $t8, ($v0)
/* 008608 80007A08 E5800000 */ swc1 $f0, ($t4)
/* 00860C 80007A0C AD100000 */ sw $s0, ($t0)
/* 008610 80007A10 24E20001 */ addiu $v0, $a3, 1
.L80007A14:
/* 008614 80007A14 104B0026 */ beq $v0, $t3, .L80007AB0
.L80007A18:
/* 008618 80007A18 3C198016 */ lui $t9, %hi(gCourseCompletionPercentByRank) # $t9, 0x8016
/* 00861C 80007A1C 27392FD8 */ addiu $t9, %lo(gCourseCompletionPercentByRank) # addiu $t9, $t9, 0x2fd8
/* 008620 80007A20 00021880 */ sll $v1, $v0, 2
/* 008624 80007A24 000A7080 */ sll $t6, $t2, 2
/* 008628 80007A28 01D96821 */ addu $t5, $t6, $t9
/* 00862C 80007A2C 00796021 */ addu $t4, $v1, $t9
.L80007A30:
/* 008630 80007A30 C4800000 */ lwc1 $f0, ($a0)
/* 008634 80007A34 C5820000 */ lwc1 $f2, ($t4)
/* 008638 80007A38 00C51021 */ addu $v0, $a2, $a1
/* 00863C 80007A3C 00C34021 */ addu $t0, $a2, $v1
/* 008640 80007A40 4602003C */ c.lt.s $f0, $f2
/* 008644 80007A44 00000000 */ nop
/* 008648 80007A48 4502000A */ bc1fl .L80007A74
/* 00864C 80007A4C C5820004 */ lwc1 $f2, 4($t4)
/* 008650 80007A50 8D0F0000 */ lw $t7, ($t0)
/* 008654 80007A54 8C500000 */ lw $s0, ($v0)
/* 008658 80007A58 46000306 */ mov.s $f12, $f0
/* 00865C 80007A5C E4820000 */ swc1 $f2, ($a0)
/* 008660 80007A60 E58C0000 */ swc1 $f12, ($t4)
/* 008664 80007A64 AC4F0000 */ sw $t7, ($v0)
/* 008668 80007A68 C4800000 */ lwc1 $f0, ($a0)
/* 00866C 80007A6C AD100000 */ sw $s0, ($t0)
/* 008670 80007A70 C5820004 */ lwc1 $f2, 4($t4)
.L80007A74:
/* 008674 80007A74 00C51021 */ addu $v0, $a2, $a1
/* 008678 80007A78 00C34021 */ addu $t0, $a2, $v1
/* 00867C 80007A7C 4602003C */ c.lt.s $f0, $f2
/* 008680 80007A80 00000000 */ nop
/* 008684 80007A84 45020008 */ bc1fl .L80007AA8
/* 008688 80007A88 258C0008 */ addiu $t4, $t4, 8
/* 00868C 80007A8C 8D180004 */ lw $t8, 4($t0)
/* 008690 80007A90 8C500000 */ lw $s0, ($v0)
/* 008694 80007A94 E4820000 */ swc1 $f2, ($a0)
/* 008698 80007A98 AC580000 */ sw $t8, ($v0)
/* 00869C 80007A9C E5800004 */ swc1 $f0, 4($t4)
/* 0086A0 80007AA0 AD100004 */ sw $s0, 4($t0)
/* 0086A4 80007AA4 258C0008 */ addiu $t4, $t4, 8
.L80007AA8:
/* 0086A8 80007AA8 158DFFE1 */ bne $t4, $t5, .L80007A30
/* 0086AC 80007AAC 24630008 */ addiu $v1, $v1, 8
.L80007AB0:
/* 0086B0 80007AB0 00E04025 */ move $t0, $a3
/* 0086B4 80007AB4 14E9FFBB */ bne $a3, $t1, .L800079A4
/* 0086B8 80007AB8 24E70001 */ addiu $a3, $a3, 1
.L80007ABC:
/* 0086BC 80007ABC 3C028016 */ lui $v0, %hi(D_801643E0) # $v0, 0x8016
/* 0086C0 80007AC0 3C038016 */ lui $v1, %hi(gGPCurrentRaceRankByPlayerId) # $v1, 0x8016
/* 0086C4 80007AC4 3C048016 */ lui $a0, %hi(gGPCurrentRaceRankByPlayerId + 0x20) # $a0, 0x8016
/* 0086C8 80007AC8 248443D8 */ addiu $a0, %lo(gGPCurrentRaceRankByPlayerId + 0x20) # addiu $a0, $a0, 0x43d8
/* 0086CC 80007ACC 246343B8 */ addiu $v1, %lo(gGPCurrentRaceRankByPlayerId) # addiu $v1, $v1, 0x43b8
/* 0086D0 80007AD0 244243E0 */ addiu $v0, %lo(D_801643E0) # addiu $v0, $v0, 0x43e0
/* 0086D4 80007AD4 24070001 */ li $a3, 1
.L80007AD8:
/* 0086D8 80007AD8 8C6E0000 */ lw $t6, ($v1)
/* 0086DC 80007ADC 24630004 */ addiu $v1, $v1, 4
/* 0086E0 80007AE0 0064082B */ sltu $at, $v1, $a0
/* 0086E4 80007AE4 24E70001 */ addiu $a3, $a3, 1
/* 0086E8 80007AE8 24420004 */ addiu $v0, $v0, 4
/* 0086EC 80007AEC 1420FFFA */ bnez $at, .L80007AD8
/* 0086F0 80007AF0 AC4EFFFC */ sw $t6, -4($v0)
/* 0086F4 80007AF4 10000017 */ b .L80007B54
/* 0086F8 80007AF8 00004025 */ move $t0, $zero
/* 0086FC 80007AFC 3C0E8016 */ lui $t6, %hi(gGPCurrentRacePlayerIdByRank) # $t6, 0x8016
/* 008700 80007B00 25CE4360 */ addiu $t6, %lo(gGPCurrentRacePlayerIdByRank) # addiu $t6, $t6, 0x4360
/* 008704 80007B04 0000C880 */ sll $t9, $zero, 2
/* 008708 80007B08 27AF0068 */ addiu $t7, $sp, 0x68
/* 00870C 80007B0C 0000C040 */ sll $t8, $zero, 1
/* 008710 80007B10 3C0C8016 */ lui $t4, %hi(gGPCurrentRaceRankByPlayerId) # $t4, 0x8016
/* 008714 80007B14 258C43B8 */ addiu $t4, %lo(gGPCurrentRaceRankByPlayerId) # addiu $t4, $t4, 0x43b8
/* 008718 80007B18 030E2021 */ addu $a0, $t8, $t6
/* 00871C 80007B1C 032F1021 */ addu $v0, $t9, $t7
/* 008720 80007B20 00002825 */ move $a1, $zero
/* 008724 80007B24 24070001 */ li $a3, 1
.L80007B28:
/* 008728 80007B28 8C430000 */ lw $v1, ($v0)
/* 00872C 80007B2C 24420004 */ addiu $v0, $v0, 4
/* 008730 80007B30 24840002 */ addiu $a0, $a0, 2
/* 008734 80007B34 0003C880 */ sll $t9, $v1, 2
/* 008738 80007B38 01997821 */ addu $t7, $t4, $t9
/* 00873C 80007B3C ADE80000 */ sw $t0, ($t7)
/* 008740 80007B40 00E04025 */ move $t0, $a3
/* 008744 80007B44 A483FFFE */ sh $v1, -2($a0)
/* 008748 80007B48 14A7FFF7 */ bne $a1, $a3, .L80007B28
/* 00874C 80007B4C 24E70001 */ addiu $a3, $a3, 1
/* 008750 80007B50 110B0025 */ beq $t0, $t3, .L80007BE8
.L80007B54:
/* 008754 80007B54 3C0F8016 */ lui $t7, %hi(gGPCurrentRacePlayerIdByRank) # $t7, 0x8016
/* 008758 80007B58 25EF4360 */ addiu $t7, %lo(gGPCurrentRacePlayerIdByRank) # addiu $t7, $t7, 0x4360
/* 00875C 80007B5C 3C0C8016 */ lui $t4, %hi(gGPCurrentRaceRankByPlayerId) # $t4, 0x8016
/* 008760 80007B60 0008C080 */ sll $t8, $t0, 2
/* 008764 80007B64 27AE0068 */ addiu $t6, $sp, 0x68
/* 008768 80007B68 0008C840 */ sll $t9, $t0, 1
/* 00876C 80007B6C 032F2021 */ addu $a0, $t9, $t7
/* 008770 80007B70 030E1021 */ addu $v0, $t8, $t6
/* 008774 80007B74 258C43B8 */ addiu $t4, %lo(gGPCurrentRaceRankByPlayerId) # addiu $t4, $t4, 0x43b8
/* 008778 80007B78 25070001 */ addiu $a3, $t0, 1
.L80007B7C:
/* 00877C 80007B7C 8C430000 */ lw $v1, ($v0)
/* 008780 80007B80 24420010 */ addiu $v0, $v0, 0x10
/* 008784 80007B84 24840008 */ addiu $a0, $a0, 8
/* 008788 80007B88 0003C080 */ sll $t8, $v1, 2
/* 00878C 80007B8C 01987021 */ addu $t6, $t4, $t8
/* 008790 80007B90 ADC80000 */ sw $t0, ($t6)
/* 008794 80007B94 8C45FFF4 */ lw $a1, -0xc($v0)
/* 008798 80007B98 25180002 */ addiu $t8, $t0, 2
/* 00879C 80007B9C A483FFF8 */ sh $v1, -8($a0)
/* 0087A0 80007BA0 0005C880 */ sll $t9, $a1, 2
/* 0087A4 80007BA4 01997821 */ addu $t7, $t4, $t9
/* 0087A8 80007BA8 ADE70000 */ sw $a3, ($t7)
/* 0087AC 80007BAC 8C46FFF8 */ lw $a2, -8($v0)
/* 0087B0 80007BB0 250F0003 */ addiu $t7, $t0, 3
/* 0087B4 80007BB4 25080004 */ addiu $t0, $t0, 4
/* 0087B8 80007BB8 00067080 */ sll $t6, $a2, 2
/* 0087BC 80007BBC 018EC821 */ addu $t9, $t4, $t6
/* 0087C0 80007BC0 AF380000 */ sw $t8, ($t9)
/* 0087C4 80007BC4 8C49FFFC */ lw $t1, -4($v0)
/* 0087C8 80007BC8 24E70004 */ addiu $a3, $a3, 4
/* 0087CC 80007BCC A485FFFA */ sh $a1, -6($a0)
/* 0087D0 80007BD0 00097080 */ sll $t6, $t1, 2
/* 0087D4 80007BD4 018EC021 */ addu $t8, $t4, $t6
/* 0087D8 80007BD8 AF0F0000 */ sw $t7, ($t8)
/* 0087DC 80007BDC A486FFFC */ sh $a2, -4($a0)
/* 0087E0 80007BE0 150AFFE6 */ bne $t0, $t2, .L80007B7C
/* 0087E4 80007BE4 A489FFFE */ sh $t1, -2($a0)
.L80007BE8:
/* 0087E8 80007BE8 8FB00008 */ lw $s0, 8($sp)
/* 0087EC 80007BEC 8FB1000C */ lw $s1, 0xc($sp)
/* 0087F0 80007BF0 03E00008 */ jr $ra
/* 0087F4 80007BF4 27BD0090 */ addiu $sp, $sp, 0x90

View File

@ -1,181 +0,0 @@
glabel func_80007D04
/* 008904 80007D04 3C0B8016 */ lui $t3, %hi(gGPCurrentRaceRankByPlayerId) # $t3, 0x8016
/* 008908 80007D08 256B43B8 */ addiu $t3, %lo(gGPCurrentRaceRankByPlayerId) # addiu $t3, $t3, 0x43b8
/* 00890C 80007D0C 3C038016 */ lui $v1, %hi(D_80163478) # $v1, 0x8016
/* 008910 80007D10 00041080 */ sll $v0, $a0, 2
/* 008914 80007D14 84633478 */ lh $v1, %lo(D_80163478)($v1)
/* 008918 80007D18 0162C821 */ addu $t9, $t3, $v0
/* 00891C 80007D1C 8F2C0000 */ lw $t4, ($t9)
/* 008920 80007D20 3C088016 */ lui $t0, %hi(D_80164450) # $t0, 0x8016
/* 008924 80007D24 25084450 */ addiu $t0, %lo(D_80164450) # addiu $t0, $t0, 0x4450
/* 008928 80007D28 00037080 */ sll $t6, $v1, 2
/* 00892C 80007D2C 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 008930 80007D30 010E7821 */ addu $t7, $t0, $t6
/* 008934 80007D34 0102C021 */ addu $t8, $t0, $v0
/* 008938 80007D38 29810002 */ slti $at, $t4, 2
/* 00893C 80007D3C AFBF0014 */ sw $ra, 0x14($sp)
/* 008940 80007D40 00803825 */ move $a3, $a0
/* 008944 80007D44 00A03025 */ move $a2, $a1
/* 008948 80007D48 85E90002 */ lh $t1, 2($t7)
/* 00894C 80007D4C 10200019 */ beqz $at, .L80007DB4
/* 008950 80007D50 870A0002 */ lh $t2, 2($t8)
/* 008954 80007D54 016E6821 */ addu $t5, $t3, $t6
/* 008958 80007D58 01497023 */ subu $t6, $t2, $t1
/* 00895C 80007D5C 000E7C00 */ sll $t7, $t6, 0x10
/* 008960 80007D60 000FC403 */ sra $t8, $t7, 0x10
/* 008964 80007D64 2B010191 */ slti $at, $t8, 0x191
/* 008968 80007D68 14200020 */ bnez $at, .L80007DEC
/* 00896C 80007D6C 85A20002 */ lh $v0, 2($t5)
/* 008970 80007D70 28410006 */ slti $at, $v0, 6
/* 008974 80007D74 1420001D */ bnez $at, .L80007DEC
/* 008978 80007D78 00A02025 */ move $a0, $a1
/* 00897C 80007D7C 8CB900BC */ lw $t9, 0xbc($a1)
/* 008980 80007D80 3C01FFDF */ lui $at, (0xFFDFFFFF >> 16) # lui $at, 0xffdf
/* 008984 80007D84 3421FFFF */ ori $at, (0xFFDFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 008988 80007D88 03216024 */ and $t4, $t9, $at
/* 00898C 80007D8C ACAC00BC */ sw $t4, 0xbc($a1)
/* 008990 80007D90 0C00C3F2 */ jal player_speed
/* 008994 80007D94 AFA70030 */ sw $a3, 0x30($sp)
/* 008998 80007D98 8FA70030 */ lw $a3, 0x30($sp)
/* 00899C 80007D9C 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016
/* 0089A0 80007DA0 240D0004 */ li $t5, 4
/* 0089A4 80007DA4 00077040 */ sll $t6, $a3, 1
/* 0089A8 80007DA8 002E0821 */ addu $at, $at, $t6
/* 0089AC 80007DAC 10000079 */ b .L80007F94
/* 0089B0 80007DB0 A42D34C0 */ sh $t5, %lo(D_801634C0)($at) # 0x34c0($at)
.L80007DB4:
/* 0089B4 80007DB4 8CCF00BC */ lw $t7, 0xbc($a2)
/* 0089B8 80007DB8 3C010020 */ lui $at, 0x20
/* 0089BC 80007DBC 00C02025 */ move $a0, $a2
/* 0089C0 80007DC0 01E1C025 */ or $t8, $t7, $at
/* 0089C4 80007DC4 ACD800BC */ sw $t8, 0xbc($a2)
/* 0089C8 80007DC8 0C00C3F2 */ jal player_speed
/* 0089CC 80007DCC AFA70030 */ sw $a3, 0x30($sp)
/* 0089D0 80007DD0 8FA70030 */ lw $a3, 0x30($sp)
/* 0089D4 80007DD4 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016
/* 0089D8 80007DD8 24050003 */ li $a1, 3
/* 0089DC 80007DDC 0007C840 */ sll $t9, $a3, 1
/* 0089E0 80007DE0 00390821 */ addu $at, $at, $t9
/* 0089E4 80007DE4 1000006B */ b .L80007F94
/* 0089E8 80007DE8 A42534C0 */ sh $a1, %lo(D_801634C0)($at) # 0x34c0($at)
.L80007DEC:
/* 0089EC 80007DEC 3C03800E */ lui $v1, %hi(gCCSelection)
/* 0089F0 80007DF0 8C63C548 */ lw $v1, %lo(gCCSelection)($v1)
/* 0089F4 80007DF4 24050003 */ li $a1, 3
/* 0089F8 80007DF8 24010001 */ li $at, 1
/* 0089FC 80007DFC 1060000A */ beqz $v1, .L80007E28
/* 008A00 80007E00 3C0C8016 */ lui $t4, %hi(D_80163344) # $t4, 0x8016
/* 008A04 80007E04 1061000E */ beq $v1, $at, .L80007E40
/* 008A08 80007E08 3C0D8016 */ lui $t5, %hi(D_80163344) # $t5, 0x8016
/* 008A0C 80007E0C 24010002 */ li $at, 2
/* 008A10 80007E10 10610011 */ beq $v1, $at, .L80007E58
/* 008A14 80007E14 3C0E8016 */ lui $t6, %hi(D_80163344) # $t6, 0x8016
/* 008A18 80007E18 10650015 */ beq $v1, $a1, .L80007E70
/* 008A1C 80007E1C 3C0F8016 */ lui $t7, %hi(D_80163344) # $t7, 0x8016
/* 008A20 80007E20 10000018 */ b .L80007E84
/* 008A24 80007E24 00001025 */ move $v0, $zero
.L80007E28:
/* 008A28 80007E28 958C3344 */ lhu $t4, %lo(D_80163344)($t4)
/* 008A2C 80007E2C 00001025 */ move $v0, $zero
/* 008A30 80007E30 54EC0015 */ bnel $a3, $t4, .L80007E88
/* 008A34 80007E34 0149082A */ slt $at, $t2, $t1
/* 008A38 80007E38 10000012 */ b .L80007E84
/* 008A3C 80007E3C 24020014 */ li $v0, 20
.L80007E40:
/* 008A40 80007E40 95AD3344 */ lhu $t5, %lo(D_80163344)($t5)
/* 008A44 80007E44 24020008 */ li $v0, 8
/* 008A48 80007E48 54ED000F */ bnel $a3, $t5, .L80007E88
/* 008A4C 80007E4C 0149082A */ slt $at, $t2, $t1
/* 008A50 80007E50 1000000C */ b .L80007E84
/* 008A54 80007E54 24020018 */ li $v0, 24
.L80007E58:
/* 008A58 80007E58 95CE3344 */ lhu $t6, %lo(D_80163344)($t6)
/* 008A5C 80007E5C 24020012 */ li $v0, 18
/* 008A60 80007E60 54EE0009 */ bnel $a3, $t6, .L80007E88
/* 008A64 80007E64 0149082A */ slt $at, $t2, $t1
/* 008A68 80007E68 10000006 */ b .L80007E84
/* 008A6C 80007E6C 24020024 */ li $v0, 36
.L80007E70:
/* 008A70 80007E70 95EF3344 */ lhu $t7, %lo(D_80163344)($t7)
/* 008A74 80007E74 24020008 */ li $v0, 8
/* 008A78 80007E78 54EF0003 */ bnel $a3, $t7, .L80007E88
/* 008A7C 80007E7C 0149082A */ slt $at, $t2, $t1
/* 008A80 80007E80 24020018 */ li $v0, 24
.L80007E84:
/* 008A84 80007E84 0149082A */ slt $at, $t2, $t1
.L80007E88:
/* 008A88 80007E88 1020000F */ beqz $at, .L80007EC8
/* 008A8C 80007E8C 01227021 */ addu $t6, $t1, $v0
/* 008A90 80007E90 8CD800BC */ lw $t8, 0xbc($a2)
/* 008A94 80007E94 3C010020 */ lui $at, 0x20
/* 008A98 80007E98 00C02025 */ move $a0, $a2
/* 008A9C 80007E9C 0301C825 */ or $t9, $t8, $at
/* 008AA0 80007EA0 ACD900BC */ sw $t9, 0xbc($a2)
/* 008AA4 80007EA4 0C00C3F2 */ jal player_speed
/* 008AA8 80007EA8 AFA70030 */ sw $a3, 0x30($sp)
/* 008AAC 80007EAC 8FA70030 */ lw $a3, 0x30($sp)
/* 008AB0 80007EB0 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016
/* 008AB4 80007EB4 240C0001 */ li $t4, 1
/* 008AB8 80007EB8 00076840 */ sll $t5, $a3, 1
/* 008ABC 80007EBC 002D0821 */ addu $at, $at, $t5
/* 008AC0 80007EC0 10000034 */ b .L80007F94
/* 008AC4 80007EC4 A42C34C0 */ sh $t4, %lo(D_801634C0)($at) # 0x34c0($at)
.L80007EC8:
/* 008AC8 80007EC8 25CF0032 */ addiu $t7, $t6, 0x32
/* 008ACC 80007ECC 014F082A */ slt $at, $t2, $t7
/* 008AD0 80007ED0 10200010 */ beqz $at, .L80007F14
/* 008AD4 80007ED4 00071040 */ sll $v0, $a3, 1
/* 008AD8 80007ED8 8CD800BC */ lw $t8, 0xbc($a2)
/* 008ADC 80007EDC 3C01FFDF */ lui $at, (0xFFDFFFFF >> 16) # lui $at, 0xffdf
/* 008AE0 80007EE0 3421FFFF */ ori $at, (0xFFDFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 008AE4 80007EE4 0301C824 */ and $t9, $t8, $at
/* 008AE8 80007EE8 ACD900BC */ sw $t9, 0xbc($a2)
/* 008AEC 80007EEC AFA70030 */ sw $a3, 0x30($sp)
/* 008AF0 80007EF0 0C00C3F2 */ jal player_speed
/* 008AF4 80007EF4 00C02025 */ move $a0, $a2
/* 008AF8 80007EF8 8FA70030 */ lw $a3, 0x30($sp)
/* 008AFC 80007EFC 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016
/* 008B00 80007F00 24050003 */ li $a1, 3
/* 008B04 80007F04 00076040 */ sll $t4, $a3, 1
/* 008B08 80007F08 002C0821 */ addu $at, $at, $t4
/* 008B0C 80007F0C 10000021 */ b .L80007F94
/* 008B10 80007F10 A42534C0 */ sh $a1, %lo(D_801634C0)($at) # 0x34c0($at)
.L80007F14:
/* 008B14 80007F14 3C0D8016 */ lui $t5, %hi(D_801631E0) # 0x8016
/* 008B18 80007F18 01A26821 */ addu $t5, $t5, $v0
/* 008B1C 80007F1C 95AD31E0 */ lhu $t5, %lo(D_801631E0)($t5) # 0x31e0($t5)
/* 008B20 80007F20 3C01FFDF */ lui $at, (0xFFDFFFFF >> 16) # lui $at, 0xffdf
/* 008B24 80007F24 00C02025 */ move $a0, $a2
/* 008B28 80007F28 15A0000E */ bnez $t5, .L80007F64
/* 008B2C 80007F2C 3421FFFF */ ori $at, (0xFFDFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 008B30 80007F30 8CCE00BC */ lw $t6, 0xbc($a2)
/* 008B34 80007F34 3C01FFDF */ lui $at, (0xFFDFFFFF >> 16) # lui $at, 0xffdf
/* 008B38 80007F38 3421FFFF */ ori $at, (0xFFDFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 008B3C 80007F3C 01C17824 */ and $t7, $t6, $at
/* 008B40 80007F40 ACCF00BC */ sw $t7, 0xbc($a2)
/* 008B44 80007F44 0C00C3F2 */ jal player_speed
/* 008B48 80007F48 AFA2001C */ sw $v0, 0x1c($sp)
/* 008B4C 80007F4C 8FA2001C */ lw $v0, 0x1c($sp)
/* 008B50 80007F50 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016
/* 008B54 80007F54 24180002 */ li $t8, 2
/* 008B58 80007F58 00220821 */ addu $at, $at, $v0
/* 008B5C 80007F5C 1000000D */ b .L80007F94
/* 008B60 80007F60 A43834C0 */ sh $t8, %lo(D_801634C0)($at) # 0x34c0($at)
.L80007F64:
/* 008B64 80007F64 8CD900BC */ lw $t9, 0xbc($a2)
/* 008B68 80007F68 00C02025 */ move $a0, $a2
/* 008B6C 80007F6C 3C053F80 */ lui $a1, 0x3f80
/* 008B70 80007F70 03216024 */ and $t4, $t9, $at
/* 008B74 80007F74 ACCC00BC */ sw $t4, 0xbc($a2)
/* 008B78 80007F78 0C00C7D2 */ jal func_80031F48
/* 008B7C 80007F7C AFA2001C */ sw $v0, 0x1c($sp)
/* 008B80 80007F80 8FA2001C */ lw $v0, 0x1c($sp)
/* 008B84 80007F84 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016
/* 008B88 80007F88 240DFFFF */ li $t5, -1
/* 008B8C 80007F8C 00220821 */ addu $at, $at, $v0
/* 008B90 80007F90 A42D34C0 */ sh $t5, %lo(D_801634C0)($at) # 0x34c0($at)
.L80007F94:
/* 008B94 80007F94 8FBF0014 */ lw $ra, 0x14($sp)
/* 008B98 80007F98 27BD0030 */ addiu $sp, $sp, 0x30
/* 008B9C 80007F9C 03E00008 */ jr $ra
/* 008BA0 80007FA0 00000000 */ nop

View File

@ -354,9 +354,9 @@ u16 gHeadsetPanQuantization[0x10] = {
0x40, 0x40, 0x30, 0x30, 0x20, 0x20, 0x10, 0, 0, 0,
};
s32 gUnknownData_800F6290[32] = { //maybe envelope of some kind?
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 500, 0, 0, 0, 500, 0, 0, 0, 500, 0, 0, 0, 500, 0, 0,
s16 gUnknownData_800F6290[64] = { // maybe envelope of some kind?
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0,
};
// Linearly interpolated between

View File

@ -34,7 +34,7 @@ extern u32 fill2;
extern struct NoteSubEu gZeroNoteSub;
extern struct NoteSubEu gDefaultNoteSub;
extern u16 gHeadsetPanQuantization[0x10];
extern s32 gUnknownData_800F6290[32];
extern s16 gUnknownData_800F6290[];
extern f32 gHeadsetPanVolume[128];
extern f32 gStereoPanVolume[128];
extern f32 gDefaultPanVolume[128];

View File

@ -326,8 +326,8 @@ Acmd *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, Acmd *acmd, s32 upda
#ifdef NON_MATCHING
//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Nov-01-2023
u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 inBuf, u64 *cmd, s32 updateIndex) {
s32 pad[4];
Acmd *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, UNUSED s16 *aiBuf, s32 inBuf, Acmd *cmd, s32 updateIndex) {
UNUSED s32 pad[4];
struct AudioBankSample *audioBookSample;
s16 *curLoadedBook;
struct AdpcmLoop *loopInfo;
@ -338,7 +338,7 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
s32 nSamplesToLoad;
s32 spFC;
s32 pad2[2];
UNUSED s32 pad2[2];
s32 loopInfo_2;
u8 *sampleAddr;
@ -350,9 +350,8 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
s32 endPos;
s32 nSamplesToProcess;
s32 pad3;
UNUSED s32 pad3;
//u32 spE4;
s32 s3;
s32 leftRight;
s32 s4;
@ -362,16 +361,15 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
u32 var_t2;
u8 *var_a0_2;
//s32 spD8;
s32 s5Aligned;
s32 temp_t6;
s32 nParts;
s32 curPart;
s32 aligned;
s32 pad4;
UNUSED s32 pad4;
s32 resampledTempLen; /* compiler-managed */
u16 noteSamplesDmemAddrBeforeResampling;
s32 pad6[1];
UNUSED s32 pad6[1];
struct Note *note;
u16 addr;
@ -387,9 +385,6 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
synthesisState->curVolRight = 0;
synthesisState->prevHeadsetPanRight = 0;
synthesisState->prevHeadsetPanLeft = 0;
//synthesisState->reverbVol = noteSubEu->reverbVol;
////synthesisState->unk5 = 0;
//note->noteSubEu.finished = 0;
}
resamplingRateFixedPoint = noteSubEu->resamplingRateFixedPoint;
@ -398,7 +393,6 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
nSamplesToLoad = (samplesLenFixedPoint >> 0x10);
synthesisState->samplePosFrac = samplesLenFixedPoint & 0xFFFF; // m2c didn't have & 0xFFFF
//var_a0 = noteSubEu->unk0;
if (noteSubEu->isSyntheticWave) {
cmd = load_wave_samples(cmd, noteSubEu, synthesisState, nSamplesToLoad);
@ -406,24 +400,14 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
synthesisState->samplePosInt += nSamplesToLoad;
} else {
audioBookSample = noteSubEu->sound.audioBankSound->sample;
//sp130 = audioBookSample;
loopInfo = audioBookSample->loop;
//sp12C = loopInfo;
endPos = loopInfo->end;
sampleAddr = audioBookSample->sampleAddr; // book?
resampledTempLen = 0;
//if (nParts > 0) {
// nSamplesToLoad = samplesLenFixedPoint >> 0x10;
// sp114 = flags;
// var_s2_2 = cmd;
//loop_6:
for (curPart = 0; curPart < nParts; curPart++) {
nAdpcmSamplesProcessed = 0;
s4 = 0;
//temp_a1 = audioBookSample->unkC;
//temp_a2_2 = temp_a1 + 8;
if (nParts == 1) {
samplesLenAdjusted = nSamplesToLoad;
@ -435,27 +419,22 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
// sm64 also has if (audioBookSample->codec == CODEC_A) {
if (curLoadedBook != (*audioBookSample->book).book) {
u32 nEntries;
//temp_v0_3 = var_s2_2;
// var_s2_2 += 8;
//temp_v0_3->unk0 = ((temp_a1->unk0 * 16 * temp_a1->unk4) & 0xFFFFFF) | 0x0B000000;
//temp_v0_3->unk4 = (s32) ((((u32) (noteSubEu->unk0 << 0xB) >> 0x1D) * 2) + temp_a2_2 + 0x80000000);
//var_a0 = noteSubEu->unk0;
curLoadedBook = audioBookSample->book->book; // or just one book?
nEntries = 16 * audioBookSample->book->order * audioBookSample->book->npredictors;
aLoadADPCM(cmd++, nEntries, VIRTUAL_TO_PHYSICAL2(noteSubEu->bookOffset+curLoadedBook));
// noteSubEu here unsure but seems better?
}
if (noteSubEu->bookOffset != 0) {
curLoadedBook = &gUnknownData_800F6290; // type?
curLoadedBook = &gUnknownData_800F6290[0];
}
while (nAdpcmSamplesProcessed != samplesLenAdjusted) {
//loop_15:
s32 samplesRemaining;
s32 s1;
noteFinished = FALSE;
restart = FALSE;
//temp_a2_3 = synthesisState->samplePosInt;
s3 = synthesisState->samplePosInt & 0xF;
samplesRemaining = endPos - synthesisState->samplePosInt;
nSamplesToProcess = samplesLenAdjusted - nAdpcmSamplesProcessed;
@ -464,11 +443,10 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
}
a1 = 16 - s3;
//var_s5 = a1;
if (nSamplesToProcess < samplesRemaining) {
loopInfo_2 = ((nSamplesToProcess - a1) + 0xF) / 16;
s1 = loopInfo_2 * 16;
//var_t0 = loopInfo_2;
var_s6 = (a1 + s1) - nSamplesToProcess;
} else {
s1 = samplesRemaining - a1;
@ -488,86 +466,48 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
if (loopInfo_2 != 0) {
temp_t6 = ((synthesisState->samplePosInt - s3) + 16) / 16; // diff from sm64 sh
if (audioBookSample->loaded == 0x81) { // sm64 has audioBookSample->medium
//var_s0 = ((loopInfo_2 * 9) + 0x1F) & ~0xF;
var_a0_2 = (temp_t6 * 9) + sampleAddr;
} else {
//spD8 = nSamplesToProcess;
//sp11C = noteFinished;
//sp118 = restart;
//spE4 = samplesLenAdjusted;
//temp_a1_3 += ((loopInfo_2 * 9) + 0x1F) & ~0xF;
//var_s0 = temp_a1_3;
var_a0_2 = dma_sample_data((uintptr_t) (temp_t6 * 9) + sampleAddr, ALIGN(((loopInfo_2 * 9) + 16), 4), flags, &synthesisState->sampleDmaIndex);
// unsure flags?
}
//var_t1 = 0x540 - var_s0;
var_t2 = ((uintptr_t)var_a0_2 & 0xF);
//var_s2_2->unk4 = (s32) ((var_a0_2 - var_t2) + 0x80000000);
aligned = ALIGN(((loopInfo_2 * 9) + 16), 4);
addr = (0x540 - aligned) & 0xFFFF; // DMEM_ADDR_COMPRESSED_ADPCM_DATA
//var_s2_2->unk0 = (((var_s0 >> 4) & 0xFF) << 16) | 0x14000000 | ((0x540 - var_s0) & 0xFFFF);
// var_s2_2 += 8;
//aLoadBuffer(cmd++, ALIGN(((loopInfo_2 * 9) + 16), 4), addr, VIRTUAL_TO_PHYSICAL2(var_a0_2 - var_t2));
aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(var_a0_2 - var_t2), addr, aligned);
} else {
s1 = 0; // ?
var_t2 = 0;
//addr = 0x540 - (((loopInfo_2 * 9) + 16));
}
//temp_v0_4 = var_s2_2;
if (synthesisState->restart != FALSE) {
aSetLoop(cmd++, VIRTUAL_TO_PHYSICAL2(audioBookSample->loop->state));
//temp_v0_4->unk0 = 0x0F000000;
//var_s2_2 += 8;
//temp_v0_4->unk4 = (s32) (audioBookSample->unk8 + 0x80000010);
flags = A_LOOP;
synthesisState->restart = FALSE;
}
nSamplesInThisIteration = (s1 + a1) - var_s6;
s5Aligned = ALIGN(s4 + 16, 4);
if (nAdpcmSamplesProcessed == 0) {
//var_a2 = s1 * 2;
//var_s2_2->unk4 = (s32) ((var_a2 & 0xFFFF) | 0x01A00000);
///var_s2_2->unk0 = ((var_t1 + var_t2) & 0xFFFF) | 0x08000000;
//temp_s2 = var_s2_2 + 8;
//temp_s2->unk0 = (s32) (((sp114 & 0xFF) << 0x10) | 0x01000000);
//temp_s2->unk4 = (s32) VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState);
//var_s2_2 = temp_s2 + 8;
//spFC = s3 * 2;
aligned = ALIGN(((loopInfo_2 * 9) + 16), 4);
addr = (0x540 - aligned) & 0xFFFF;
aSetBuffer(cmd++, 0, addr + var_t2, 0x1A0, s1 * 2); // unsure
// s1 or s3 here?
aADPCMdec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState));
spFC = s3 * 2;
//nSamplesInThisIteration = (s1 + a1) - var_s6;
} else {
// temp_t8 = (s4 + 0x1F) & ~0xF;
// var_s2_2->unk0 = ((var_t1 + var_t2) & 0xFFFF) | 0x08000000;
// var_a2 = s1 * 2;
// var_s2_2->unk4 = (s32) (((temp_t8 + 0x1A0) << 0x10) | (var_a2 & 0xFFFF));
// temp_s2_2 = var_s2_2 + 8;
// temp_s2_2->unk0 = (s32) (((sp114 & 0xFF) << 0x10) | 0x01000000);
// temp_s2_2->unk4 = (s32) VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState);
// temp_s2_3 = temp_s2_2 + 8;
// temp_s2_3->unk0 = (s32) (((temp_t8 + (s3 * 2) + 0x1A0) & 0xFFFFFF) | 0x0A000000);
// temp_s2_3->unk4 = (s32) (((s4 + 0x1A0) << 0x10) | ((nSamplesInThisIteration * 2) & 0xFFFF));
// var_s2_2 = temp_s2_3 + 8;
aligned = ALIGN(((loopInfo_2 * 9) + 16), 4);
addr = (0x540 - aligned) & 0xFFFF;
aSetBuffer(cmd++, 0, addr + var_t2, 0x1A0 + s5Aligned, s1 * 2); // unsure
// The real macro here. Decompme requires the below to work.
//aS8Dec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState));
aADPCMdec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState));
// {\
// Acmd *_a = (Acmd *) (cmd++);\
// _a->words.w0 = _SHIFTL(23, 24, 8) | _SHIFTL(flags, 16, 8);\
// _a->words.w1 = (uintptr_t) VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState);\
// };
//nSamplesInThisIteration = (s1 + a1) - var_s6;
aDMEMMove(cmd++, 0x1A0 + s5Aligned + (s3 * 2), 0x1A0 + s4, nSamplesInThisIteration * 2);
}
@ -593,22 +533,8 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
if (noteFinished) {
aClearBuffer(cmd++, 0x1A0 + s4,
(samplesLenAdjusted - nAdpcmSamplesProcessed) * 2);
//var_s2_2->unk0 = ((s4 + 0x1A0) & 0xFFFFFF) | 0x02000000;
//var_s2_2->unk4 = (s32) ((samplesLenAdjusted - nAdpcmSamplesProcessed) * 2);
//var_s2_2 += 8;
noteSubEu->finished = 1; // sm64 says = 1
note->noteSubEu.finished = 1;
//note->noteSubEu.enabled = 0;
//note->noteSubEu.samplePosInt = 0;
//note->noteSubEu.stereoHeadsetEffects = note->noteSubEu.stereoHeadsetEffects | 0x20;// |= 0x20;
//note->noteSubEu.stereoHeadsetEffects = ~(1 << 6);
/* mips to c
arg1->unk0 = (s8) ((u8) arg1->unk0 | 0x20);
sp8C->unkB0 = (u8) (sp8C->unkB0 | 0x20);
sp8C->unkB0 = (u8) (sp8C->unkB0 & 0xFF7F);
*/
//spE4 = samplesLenAdjusted;
func_800B6FB4(updateIndex, noteIndex);
} else {
@ -618,9 +544,6 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
} else {
synthesisState->samplePosInt += nSamplesToProcess;
}
// if (nAdpcmSamplesProcessed != samplesLenAdjusted) {
// goto loop_15;
// }
}
}
@ -629,25 +552,8 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
noteSamplesDmemAddrBeforeResampling = 0x1A0 + spFC;
break;
case 2:
//temp_v0_5 = var_s2_2;
switch(curPart) {
case 0:
// temp_v0_6 = var_s2_2;
// var_s2_2 += 8;
// temp_v0_6->unk0 = ((((s32) var_t5 / 2) + 7) & 0xFFF8) | 0x11000000;
// temp_v0_6->unk4 = (s32) (((spFC + 0x1A0) << 0x10) | 0x20);
// spA0 = var_t5;
// sp9E = 0x20;
// var_a0 = arg1->unk0;
// temp_t7_3 = (u32) (var_a0 * 4) >> 0x1F;
// var_v1_2 = temp_t7_3;
// if (temp_t7_3 != 0) {
// var_s2_2->unk4 = (s32) (var_t5 + 0x10);
// var_s2_2->unk0 = ((var_t5 + 0x20) & 0xFFFFFF) | 0x02000000;
// var_a0 = arg1->unk0;
// var_s2_2 += 8;
// var_v1_2 = (u32) (var_a0 * 4) >> 0x1F;
// }
aDownsampleHalf(cmd++, ALIGN(samplesLenAdjusted / 2, 3), 0x1A0 + spFC, DMEM_ADDR_RESAMPLED);
resampledTempLen = samplesLenAdjusted;
noteSamplesDmemAddrBeforeResampling = DMEM_ADDR_RESAMPLED;
@ -656,11 +562,6 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
}
break;
case 1:
//var_s2_2 += 8;
// temp_v0_5->unk0 = ((((s32) var_t5 / 2) + 7) & 0xFFF8) | 0x11000000;
// temp_v0_5->unk4 = (s32) (((spFC + 0x1A0) << 0x10) | ((spA0 + 0x20) & 0xFFFF));
// var_a0 = arg1->unk0;
// var_t6 = (u32) (var_a0 * 4) >> 0x1F;
aDownsampleHalf(cmd++, ALIGN(samplesLenAdjusted / 2, 3), DMEM_ADDR_RESAMPLED2 + spFC, resampledTempLen + DMEM_ADDR_RESAMPLED);
break;
@ -677,10 +578,7 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
flags = A_INIT;
noteSubEu->needsInit = FALSE;
}
//temp_a2_4 = inBuf * 2;
// flags = flags;
//sp114 = flags;
//flags = flags | sp54;
cmd = final_resample(cmd, synthesisState, inBuf * 2, resamplingRateFixedPoint, noteSamplesDmemAddrBeforeResampling, flags);
if ((noteSubEu->headsetPanRight) || (synthesisState->prevHeadsetPanRight)) {
@ -691,7 +589,7 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
leftRight = 0;
}
cmd = func_800B86A0(cmd, noteSubEu, synthesisState, inBuf, 0, leftRight, flags);
//var_s2 = temp_v0_8;
if (noteSubEu->usesHeadsetPanEffects) {
//synthesisState->restart = 1;
cmd = note_apply_headset_pan_effects(cmd, noteSubEu, synthesisState, inBuf * 2, flags, leftRight);

View File

@ -103,7 +103,7 @@ Acmd *synthesis_execute(Acmd*, s32*, s16*, s32);
Acmd *synthesis_resample_and_mix_reverb(Acmd*, s32, s16, s16);
Acmd *synthesis_save_reverb_samples(Acmd*, s16, s16);
Acmd *synthesis_do_one_audio_update(s16*, s32, Acmd*, s32);
u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 inBuf, u64 *cmd, s32 updateIndex);
Acmd *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 inBuf, Acmd *cmd, s32 updateIndex);
Acmd *load_wave_samples(Acmd *acmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamplesToLoad);
Acmd *final_resample(Acmd *acmd, struct NoteSynthesisState *synthesisState, s32 count, u16 pitch, u16 dmemIn, u32 flags);
Acmd *func_800B86A0(Acmd *cmd, struct NoteSubEu *note, struct NoteSynthesisState *synthesisState, s32 nSamples, u16 inBuf, s32 headsetPanSettings, u32 flags);

View File

@ -830,86 +830,73 @@ void func_800070F4(void) {
}
}
#ifdef NON_MATCHING
// https://decomp.me/scratch/AqmzN
// Decently close overall but there's a huge amount of register mismatches
// Permuter has not had much luck finding solutions.
// Replacing `temp_s0` for `var_v0` is a pretty good start, but the permuter
// is unable to find any improvements after that :(
void func_800074D4(void) {
Player *var_a0_2;
f32 temp_a0;
s32 temp;
s32 sp68[8];
UNUSED s32 temp_s0;
UNUSED s32 pad;
s32 temp_t1;
s32 var_a3;
s32 var_a3_2;
s32 var_v0;
s32 this_loops_upper_bound_is_brough_to_you_by_the_number_eight = NUM_PLAYERS;
for (var_a3 = 0; var_a3 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight; ) {
gCourseCompletionPercentByRank[var_a3++] = 0.0f;
s32 i;
s32 j;
s32 this_loops_upper_bound_is_brough_to_you_by_the_number = 8;
for (i = 0; i < this_loops_upper_bound_is_brough_to_you_by_the_number;) {
gCourseCompletionPercentByRank[i++] = 0.0f;
}
var_v0 = 0;
for (var_a3 = 0; var_a3 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight; var_a3++) {
var_a0_2 = &gPlayers[var_a3];
if (var_a0_2->type & 0x800) {
sp68[var_v0] = var_a3;
gCourseCompletionPercentByRank[var_v0] = -gTimePlayerLastTouchedFinishLine[var_a3];
var_v0++;
for (j = 0, i = 0; i < this_loops_upper_bound_is_brough_to_you_by_the_number; i++) {
if (gPlayers[i].type & 0x800) {
sp68[j] = i;
gCourseCompletionPercentByRank[j] = -gTimePlayerLastTouchedFinishLine[i];
j++;
}
}
temp_t1 = var_v0;
for (var_a3 = 0; var_a3 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight; var_a3++) {
var_a0_2 = &gPlayers[var_a3];
if (!(var_a0_2->type & 0x800)) {
sp68[var_v0] = var_a3;
gCourseCompletionPercentByRank[var_v0] = gCourseCompletionPercentByPlayerId[var_a3];
var_v0++;
temp_t1 = j;
for (i = 0; i < this_loops_upper_bound_is_brough_to_you_by_the_number; i++) {
if (!(gPlayers[i].type & 0x800)) {
sp68[j] = i;
gCourseCompletionPercentByRank[j] = gCourseCompletionPercentByPlayerId[i];
j++;
}
}
for (var_a3 = 0; var_a3 < temp_t1 - 1; var_a3++) {
for (var_a3_2 = var_a3 + 1; var_a3_2 < temp_t1; var_a3_2++) {
if (gCourseCompletionPercentByRank[var_a3] < gCourseCompletionPercentByRank[var_a3_2]) {
var_v0 = sp68[var_a3];
sp68[var_a3] = sp68[var_a3_2];
sp68[var_a3_2] = var_v0;
temp_a0 = gCourseCompletionPercentByRank[var_a3];
gCourseCompletionPercentByRank[var_a3] = gCourseCompletionPercentByRank[var_a3_2];
gCourseCompletionPercentByRank[var_a3_2] = temp_a0;
for (i = 0; i < (temp_t1 - 1); i++) {
for (j = i + 1; j < temp_t1; j++) {
if (gCourseCompletionPercentByRank[i] < gCourseCompletionPercentByRank[j]) {
temp = sp68[i];
sp68[i] = sp68[j];
sp68[j] = temp;
temp_a0 = gCourseCompletionPercentByRank[i];
gCourseCompletionPercentByRank[i] = gCourseCompletionPercentByRank[j];
gCourseCompletionPercentByRank[j] = temp_a0;
}
}
}
for (i = temp_t1; i < (this_loops_upper_bound_is_brough_to_you_by_the_number - 1); i++) {
for (j = i + 1; j < this_loops_upper_bound_is_brough_to_you_by_the_number; j++) {
if (gCourseCompletionPercentByRank[i] < gCourseCompletionPercentByRank[j]) {
temp = sp68[i];
sp68[i] = sp68[j];
sp68[j] = temp;
temp_a0 = gCourseCompletionPercentByRank[i];
gCourseCompletionPercentByRank[i] = gCourseCompletionPercentByRank[j];
gCourseCompletionPercentByRank[j] = temp_a0;
}
}
}
for (var_a3 = temp_t1; var_a3 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight - 1; var_a3++) {
for (var_a3_2 = var_a3 + 1; var_a3_2 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight; var_a3_2++) {
if (gCourseCompletionPercentByRank[var_a3] < gCourseCompletionPercentByRank[var_a3_2]) {
var_v0 = sp68[var_a3];
sp68[var_a3] = sp68[var_a3_2];
sp68[var_a3_2] = var_v0;
temp_a0 = gCourseCompletionPercentByRank[var_a3];
gCourseCompletionPercentByRank[var_a3] = gCourseCompletionPercentByRank[var_a3_2];
gCourseCompletionPercentByRank[var_a3_2] = temp_a0;
}
}
for (i = 0; i < 8; i++) {
D_801643E0[i] = gGPCurrentRaceRankByPlayerId[i];
}
for (var_a3 = 0; var_a3 < NUM_PLAYERS; var_a3++) {
D_801643E0[var_a3] = gGPCurrentRaceRankByPlayerId[var_a3];
}
for (var_a3 = 0; var_a3 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight; var_a3++) {
gGPCurrentRaceRankByPlayerId[sp68[var_a3]] = var_a3;
gGPCurrentRacePlayerIdByRank[var_a3] = sp68[var_a3];
for (i = 0; i < this_loops_upper_bound_is_brough_to_you_by_the_number; i++) {
gGPCurrentRaceRankByPlayerId[sp68[i]] = i;
gGPCurrentRacePlayerIdByRank[i] = sp68[i];
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800074D4.s")
#endif
s32 func_80007BF8(u16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
s32 var_v1;
@ -927,13 +914,11 @@ s32 func_80007BF8(u16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
return var_v1;
}
#ifdef NON_MATCHING // Likely func equiv
// https://decomp.me/scratch/Te4u1
void func_80007D04(s32 playerId, Player *player) {
void func_80007D04(s32 playerId, Player* player) {
s16 temp_t1;
s16 temp_t2;
s32 var_v0;
temp_t1 = D_80164450[D_80163478];
temp_t2 = D_80164450[playerId];
@ -954,33 +939,40 @@ void func_80007D04(s32 playerId, Player *player) {
return;
}
// Something wrong here. Maybe needs
// var_v0 = 0;
switch (gCCSelection) { // WTF, FAKE ?
case 3:
break;
}
switch (gCCSelection) {
case CC_50:
case 0:
var_v0 = 0;
if (playerId == D_80163344[0]) {
var_v0 = 0x14;
}
break;
case 1:
var_v0 = 8;
if (playerId == D_80163344[0]) {
var_v0 = 0x18;
}
break;
case 2:
var_v0 = 0x12;
if (playerId == D_80163344[0]) {
var_v0 = 0x24;
}
break;
case 3:
var_v0 = 8;
if (playerId == D_80163344[0]) {
var_v0 = 0x18;
}
break;
default:
var_v0 = 0;
break;
@ -990,7 +982,6 @@ void func_80007D04(s32 playerId, Player *player) {
player->effects |= 0x200000;
player_speed(player);
D_801634C0[playerId] = 1;
} else if (temp_t2 < (temp_t1 + var_v0 + 0x32)) {
player->effects &= ~0x200000;
player_speed(player);
@ -1006,10 +997,6 @@ void func_80007D04(s32 playerId, Player *player) {
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80007D04.s")
#endif
void func_80007FA4(s32 arg0, Player *player, f32 arg2) {
f32 temp_f0;
f32 temp_f12;
@ -5912,32 +5899,32 @@ void func_80017054(Camera *camera, UNUSED Player *player, UNUSED s32 index, s32
// https://decomp.me/scratch/Ck7hV
// Really crazy diff, permuter only able to find fakematches for improvements (and they're big improvements)
// There's something really, really wrong with the empty `if` statement
void func_80017054(Camera *camera, Player *player, s32 index, s32 cameraId) {
s32 stackPadding0;
s32 stackPadding1;
void func_80017054(Camera *camera, UNUSED Player *player, UNUSED s32 index, s32 cameraId) {
UNUSED s32 stackPadding0;
UNUSED s32 stackPadding1;
f32 spAC;
f32 spA8;
f32 spA4;
s32 stackPadding2;
s32 stackPadding3;
UNUSED s32 stackPadding2;
UNUSED s32 stackPadding3;
f32 sp98;
f32 sp94;
f32 sp90;
f32 sp8C;
f32 sp88;
f32 sp84;
f32 stackPadding4;
f32 stackPadding5;
f32 stackPadding6;
s32 stackPadding7;
s32 stackPadding8;
UNUSED f32 stackPadding4;
UNUSED f32 stackPadding5;
UNUSED f32 stackPadding6;
UNUSED s32 stackPadding7;
UNUSED s32 stackPadding8;
s16 sp6E;
s16 sp6C;
s32 stackPadding9;
s32 stackPaddingA;
s32 stackPaddingB;
UNUSED s32 stackPadding9;
UNUSED s32 stackPaddingA;
UNUSED s32 stackPaddingB;
s32 pathIndex;
s32 stackPaddingC;
UNUSED s32 stackPaddingC;
s32 sp58;
s16 sp56;
s32 playerId;