Merge pull request #3 from MegaMech/aaa

Rebase
This commit is contained in:
MegaMech
2024-05-01 19:49:43 -06:00
committed by GitHub
15 changed files with 463 additions and 2039 deletions
@@ -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
@@ -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
@@ -1,227 +0,0 @@
glabel func_80097AE4
/* 0986E4 80097AE4 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 0986E8 80097AE8 AFB30014 */ sw $s3, 0x14($sp)
/* 0986EC 80097AEC 8FB30054 */ lw $s3, 0x54($sp)
/* 0986F0 80097AF0 AFB20010 */ sw $s2, 0x10($sp)
/* 0986F4 80097AF4 AFB00008 */ sw $s0, 8($sp)
/* 0986F8 80097AF8 AFA50044 */ sw $a1, 0x44($sp)
/* 0986FC 80097AFC 00057600 */ sll $t6, $a1, 0x18
/* 098700 80097B00 2A610020 */ slti $at, $s3, 0x20
/* 098704 80097B04 000E2E03 */ sra $a1, $t6, 0x18
/* 098708 80097B08 00C08025 */ move $s0, $a2
/* 09870C 80097B0C 00E09025 */ move $s2, $a3
/* 098710 80097B10 AFBF002C */ sw $ra, 0x2c($sp)
/* 098714 80097B14 AFBE0028 */ sw $fp, 0x28($sp)
/* 098718 80097B18 AFB70024 */ sw $s7, 0x24($sp)
/* 09871C 80097B1C AFB60020 */ sw $s6, 0x20($sp)
/* 098720 80097B20 AFB5001C */ sw $s5, 0x1c($sp)
/* 098724 80097B24 AFB40018 */ sw $s4, 0x18($sp)
/* 098728 80097B28 14200003 */ bnez $at, .L80097B38
/* 09872C 80097B2C AFB1000C */ sw $s1, 0xc($sp)
/* 098730 80097B30 100000BD */ b .L80097E28
/* 098734 80097B34 00801025 */ move $v0, $a0
.L80097B38:
/* 098738 80097B38 30A20007 */ andi $v0, $a1, 7
/* 09873C 80097B3C 0002C540 */ sll $t8, $v0, 0x15
/* 098740 80097B40 3C01FD00 */ lui $at, 0xfd00
/* 098744 80097B44 0301A025 */ or $s4, $t8, $at
/* 098748 80097B48 3C010010 */ lui $at, 0x10
/* 09874C 80097B4C 0281C825 */ or $t9, $s4, $at
/* 098750 80097B50 3C01F500 */ lui $at, 0xf500
/* 098754 80097B54 03016825 */ or $t5, $t8, $at
/* 098758 80097B58 3C010010 */ lui $at, 0x10
/* 09875C 80097B5C 3734003F */ ori $s4, $t9, 0x3f
/* 098760 80097B60 24190020 */ li $t9, 32
/* 098764 80097B64 01A17825 */ or $t7, $t5, $at
/* 098768 80097B68 03001025 */ move $v0, $t8
/* 09876C 80097B6C 35F81200 */ ori $t8, $t7, 0x1200
/* 098770 80097B70 03337023 */ subu $t6, $t9, $s3
/* 098774 80097B74 340F8000 */ li $t7, 32768
/* 098778 80097B78 01EE001A */ div $zero, $t7, $t6
/* 09877C 80097B7C 0000A812 */ mflo $s5
/* 098780 80097B80 03006825 */ move $t5, $t8
/* 098784 80097B84 32B8FFFF */ andi $t8, $s5, 0xffff
/* 098788 80097B88 0018CC00 */ sll $t9, $t8, 0x10
/* 09878C 80097B8C 3C170701 */ lui $s7, (0x07014050 >> 16) # lui $s7, 0x701
/* 098790 80097B90 AFB00034 */ sw $s0, 0x34($sp)
/* 098794 80097B94 36F74050 */ ori $s7, (0x07014050 & 0xFFFF) # ori $s7, $s7, 0x4050
/* 098798 80097B98 00003025 */ move $a2, $zero
/* 09879C 80097B9C 15C00002 */ bnez $t6, .L80097BA8
/* 0987A0 80097BA0 00000000 */ nop
/* 0987A4 80097BA4 0007000D */ break 7
.L80097BA8:
/* 0987A8 80097BA8 2401FFFF */ li $at, -1
/* 0987AC 80097BAC 15C10004 */ bne $t6, $at, .L80097BC0
/* 0987B0 80097BB0 3C018000 */ lui $at, 0x8000
/* 0987B4 80097BB4 15E10002 */ bne $t7, $at, .L80097BC0
/* 0987B8 80097BB8 00000000 */ nop
/* 0987BC 80097BBC 0006000D */ break 6
.L80097BC0:
/* 0987C0 80097BC0 372F0400 */ ori $t7, $t9, 0x400
/* 0987C4 80097BC4 01E0A825 */ move $s5, $t7
/* 0987C8 80097BC8 3C1FE700 */ lui $ra, 0xe700
/* 0987CC 80097BCC 3C1EE600 */ lui $fp, 0xe600
/* 0987D0 80097BD0 8FB60050 */ lw $s6, 0x50($sp)
.L80097BD4:
/* 0987D4 80097BD4 00801025 */ move $v0, $a0
/* 0987D8 80097BD8 24840008 */ addiu $a0, $a0, 8
/* 0987DC 80097BDC 00801825 */ move $v1, $a0
/* 0987E0 80097BE0 AC540000 */ sw $s4, ($v0)
/* 0987E4 80097BE4 AC560004 */ sw $s6, 4($v0)
/* 0987E8 80097BE8 24840008 */ addiu $a0, $a0, 8
/* 0987EC 80097BEC 00802825 */ move $a1, $a0
/* 0987F0 80097BF0 00063880 */ sll $a3, $a2, 2
/* 0987F4 80097BF4 30EE0FFF */ andi $t6, $a3, 0xfff
/* 0987F8 80097BF8 24840008 */ addiu $a0, $a0, 8
/* 0987FC 80097BFC AC770004 */ sw $s7, 4($v1)
/* 098800 80097C00 AC6D0000 */ sw $t5, ($v1)
/* 098804 80097C04 3C01F400 */ lui $at, 0xf400
/* 098808 80097C08 24D10020 */ addiu $s1, $a2, 0x20
/* 09880C 80097C0C 00114080 */ sll $t0, $s1, 2
/* 098810 80097C10 01C1C025 */ or $t8, $t6, $at
/* 098814 80097C14 00804825 */ move $t1, $a0
/* 098818 80097C18 3C010708 */ lui $at, 0x708
/* 09881C 80097C1C 31190FFF */ andi $t9, $t0, 0xfff
/* 098820 80097C20 ACA00004 */ sw $zero, 4($a1)
/* 098824 80097C24 ACBE0000 */ sw $fp, ($a1)
/* 098828 80097C28 03217825 */ or $t7, $t9, $at
/* 09882C 80097C2C 24840008 */ addiu $a0, $a0, 8
/* 098830 80097C30 00801025 */ move $v0, $a0
/* 098834 80097C34 AD2F0004 */ sw $t7, 4($t1)
/* 098838 80097C38 AD380000 */ sw $t8, ($t1)
/* 09883C 80097C3C 24840008 */ addiu $a0, $a0, 8
/* 098840 80097C40 01C03825 */ move $a3, $t6
/* 098844 80097C44 3C0E0001 */ lui $t6, (0x00014050 >> 16) # lui $t6, 1
/* 098848 80097C48 00801825 */ move $v1, $a0
/* 09884C 80097C4C 35CE4050 */ ori $t6, (0x00014050 & 0xFFFF) # ori $t6, $t6, 0x4050
/* 098850 80097C50 AC400004 */ sw $zero, 4($v0)
/* 098854 80097C54 AC5F0000 */ sw $ra, ($v0)
/* 098858 80097C58 3C01F200 */ lui $at, 0xf200
/* 09885C 80097C5C 00E1C025 */ or $t8, $a3, $at
/* 098860 80097C60 AC6E0004 */ sw $t6, 4($v1)
/* 098864 80097C64 3C010008 */ lui $at, 8
/* 098868 80097C68 AC6D0000 */ sw $t5, ($v1)
/* 09886C 80097C6C 24840008 */ addiu $a0, $a0, 8
/* 098870 80097C70 03204025 */ move $t0, $t9
/* 098874 80097C74 0321C825 */ or $t9, $t9, $at
/* 098878 80097C78 00802825 */ move $a1, $a0
/* 09887C 80097C7C 26030020 */ addiu $v1, $s0, 0x20
/* 098880 80097C80 26490020 */ addiu $t1, $s2, 0x20
/* 098884 80097C84 ACB80000 */ sw $t8, ($a1)
/* 098888 80097C88 00095080 */ sll $t2, $t1, 2
/* 09888C 80097C8C 00037080 */ sll $t6, $v1, 2
/* 098890 80097C90 ACB90004 */ sw $t9, 4($a1)
/* 098894 80097C94 31D80FFF */ andi $t8, $t6, 0xfff
/* 098898 80097C98 314F0FFF */ andi $t7, $t2, 0xfff
/* 09889C 80097C9C 01E05025 */ move $t2, $t7
/* 0988A0 80097CA0 0018CB00 */ sll $t9, $t8, 0xc
/* 0988A4 80097CA4 3C01E400 */ lui $at, 0xe400
/* 0988A8 80097CA8 03217825 */ or $t7, $t9, $at
/* 0988AC 80097CAC 24840008 */ addiu $a0, $a0, 8
/* 0988B0 80097CB0 01EA7025 */ or $t6, $t7, $t2
/* 0988B4 80097CB4 00801025 */ move $v0, $a0
/* 0988B8 80097CB8 0213C821 */ addu $t9, $s0, $s3
/* 0988BC 80097CBC 00125880 */ sll $t3, $s2, 2
/* 0988C0 80097CC0 31780FFF */ andi $t8, $t3, 0xfff
/* 0988C4 80097CC4 00197880 */ sll $t7, $t9, 2
/* 0988C8 80097CC8 AC4E0000 */ sw $t6, ($v0)
/* 0988CC 80097CCC 31EE0FFF */ andi $t6, $t7, 0xfff
/* 0988D0 80097CD0 03005825 */ move $t3, $t8
/* 0988D4 80097CD4 000EC300 */ sll $t8, $t6, 0xc
/* 0988D8 80097CD8 030BC825 */ or $t9, $t8, $t3
/* 0988DC 80097CDC 24840008 */ addiu $a0, $a0, 8
/* 0988E0 80097CE0 00802825 */ move $a1, $a0
/* 0988E4 80097CE4 AC590004 */ sw $t9, 4($v0)
/* 0988E8 80097CE8 24840008 */ addiu $a0, $a0, 8
/* 0988EC 80097CEC 00803025 */ move $a2, $a0
/* 0988F0 80097CF0 3C0FB300 */ lui $t7, 0xb300
/* 0988F4 80097CF4 ACAF0000 */ sw $t7, ($a1)
/* 0988F8 80097CF8 24840008 */ addiu $a0, $a0, 8
/* 0988FC 80097CFC ACA00004 */ sw $zero, 4($a1)
/* 098900 80097D00 3C0EB200 */ lui $t6, 0xb200
/* 098904 80097D04 00806025 */ move $t4, $a0
/* 098908 80097D08 ACCE0000 */ sw $t6, ($a2)
/* 09890C 80097D0C ACD50004 */ sw $s5, 4($a2)
/* 098910 80097D10 24840008 */ addiu $a0, $a0, 8
/* 098914 80097D14 00801025 */ move $v0, $a0
/* 098918 80097D18 AD960004 */ sw $s6, 4($t4)
/* 09891C 80097D1C AD940000 */ sw $s4, ($t4)
/* 098920 80097D20 00608025 */ move $s0, $v1
/* 098924 80097D24 24840008 */ addiu $a0, $a0, 8
/* 098928 80097D28 00801825 */ move $v1, $a0
/* 09892C 80097D2C AC570004 */ sw $s7, 4($v0)
/* 098930 80097D30 AC4D0000 */ sw $t5, ($v0)
/* 098934 80097D34 24840008 */ addiu $a0, $a0, 8
/* 098938 80097D38 3C01F408 */ lui $at, 0xf408
/* 09893C 80097D3C 00E1C025 */ or $t8, $a3, $at
/* 098940 80097D40 00803025 */ move $a2, $a0
/* 098944 80097D44 3C010710 */ lui $at, 0x710
/* 098948 80097D48 AC600004 */ sw $zero, 4($v1)
/* 09894C 80097D4C AC7E0000 */ sw $fp, ($v1)
/* 098950 80097D50 0101C825 */ or $t9, $t0, $at
/* 098954 80097D54 24840008 */ addiu $a0, $a0, 8
/* 098958 80097D58 00801025 */ move $v0, $a0
/* 09895C 80097D5C ACD90004 */ sw $t9, 4($a2)
/* 098960 80097D60 ACD80000 */ sw $t8, ($a2)
/* 098964 80097D64 24840008 */ addiu $a0, $a0, 8
/* 098968 80097D68 00801825 */ move $v1, $a0
/* 09896C 80097D6C 3C0F0001 */ lui $t7, (0x00014050 >> 16) # lui $t7, 1
/* 098970 80097D70 35EF4050 */ ori $t7, (0x00014050 & 0xFFFF) # ori $t7, $t7, 0x4050
/* 098974 80097D74 AC400004 */ sw $zero, 4($v0)
/* 098978 80097D78 AC5F0000 */ sw $ra, ($v0)
/* 09897C 80097D7C 3C01F208 */ lui $at, 0xf208
/* 098980 80097D80 00E17025 */ or $t6, $a3, $at
/* 098984 80097D84 AC6F0004 */ sw $t7, 4($v1)
/* 098988 80097D88 24840008 */ addiu $a0, $a0, 8
/* 09898C 80097D8C 00802825 */ move $a1, $a0
/* 098990 80097D90 3C010010 */ lui $at, 0x10
/* 098994 80097D94 AC6D0000 */ sw $t5, ($v1)
/* 098998 80097D98 0213C823 */ subu $t9, $s0, $s3
/* 09899C 80097D9C ACAE0000 */ sw $t6, ($a1)
/* 0989A0 80097DA0 0101C025 */ or $t8, $t0, $at
/* 0989A4 80097DA4 272F0020 */ addiu $t7, $t9, 0x20
/* 0989A8 80097DA8 ACB80004 */ sw $t8, 4($a1)
/* 0989AC 80097DAC 000F7080 */ sll $t6, $t7, 2
/* 0989B0 80097DB0 31D80FFF */ andi $t8, $t6, 0xfff
/* 0989B4 80097DB4 0018CB00 */ sll $t9, $t8, 0xc
/* 0989B8 80097DB8 3C01E400 */ lui $at, 0xe400
/* 0989BC 80097DBC 24840008 */ addiu $a0, $a0, 8
/* 0989C0 80097DC0 03217825 */ or $t7, $t9, $at
/* 0989C4 80097DC4 01EA7025 */ or $t6, $t7, $t2
/* 0989C8 80097DC8 00801025 */ move $v0, $a0
/* 0989CC 80097DCC 0010C080 */ sll $t8, $s0, 2
/* 0989D0 80097DD0 33190FFF */ andi $t9, $t8, 0xfff
/* 0989D4 80097DD4 00197B00 */ sll $t7, $t9, 0xc
/* 0989D8 80097DD8 AC4E0000 */ sw $t6, ($v0)
/* 0989DC 80097DDC 24840008 */ addiu $a0, $a0, 8
/* 0989E0 80097DE0 00801825 */ move $v1, $a0
/* 0989E4 80097DE4 01EB7025 */ or $t6, $t7, $t3
/* 0989E8 80097DE8 AC4E0004 */ sw $t6, 4($v0)
/* 0989EC 80097DEC 24840008 */ addiu $a0, $a0, 8
/* 0989F0 80097DF0 3C18B300 */ lui $t8, 0xb300
/* 0989F4 80097DF4 AC780000 */ sw $t8, ($v1)
/* 0989F8 80097DF8 00802825 */ move $a1, $a0
/* 0989FC 80097DFC AC600004 */ sw $zero, 4($v1)
/* 098A00 80097E00 3C19B200 */ lui $t9, 0xb200
/* 098A04 80097E04 24010040 */ li $at, 64
/* 098A08 80097E08 ACB90000 */ sw $t9, ($a1)
/* 098A0C 80097E0C ACB50004 */ sw $s5, 4($a1)
/* 098A10 80097E10 02203025 */ move $a2, $s1
/* 098A14 80097E14 24840008 */ addiu $a0, $a0, 8
/* 098A18 80097E18 8FB00034 */ lw $s0, 0x34($sp)
/* 098A1C 80097E1C 1621FF6D */ bne $s1, $at, .L80097BD4
/* 098A20 80097E20 01209025 */ move $s2, $t1
/* 098A24 80097E24 00801025 */ move $v0, $a0
.L80097E28:
/* 098A28 80097E28 8FBF002C */ lw $ra, 0x2c($sp)
/* 098A2C 80097E2C 8FB00008 */ lw $s0, 8($sp)
/* 098A30 80097E30 8FB1000C */ lw $s1, 0xc($sp)
/* 098A34 80097E34 8FB20010 */ lw $s2, 0x10($sp)
/* 098A38 80097E38 8FB30014 */ lw $s3, 0x14($sp)
/* 098A3C 80097E3C 8FB40018 */ lw $s4, 0x18($sp)
/* 098A40 80097E40 8FB5001C */ lw $s5, 0x1c($sp)
/* 098A44 80097E44 8FB60020 */ lw $s6, 0x20($sp)
/* 098A48 80097E48 8FB70024 */ lw $s7, 0x24($sp)
/* 098A4C 80097E4C 8FBE0028 */ lw $fp, 0x28($sp)
/* 098A50 80097E50 03E00008 */ jr $ra
/* 098A54 80097E54 27BD0040 */ addiu $sp, $sp, 0x40
@@ -1,467 +0,0 @@
glabel func_80097E58
/* 098A58 80097E58 27BDFF08 */ addiu $sp, $sp, -0xf8
/* 098A5C 80097E5C 8FAE0124 */ lw $t6, 0x124($sp)
/* 098A60 80097E60 AFBF002C */ sw $ra, 0x2c($sp)
/* 098A64 80097E64 AFBE0028 */ sw $fp, 0x28($sp)
/* 098A68 80097E68 29C10020 */ slti $at, $t6, 0x20
/* 098A6C 80097E6C AFB70024 */ sw $s7, 0x24($sp)
/* 098A70 80097E70 AFB60020 */ sw $s6, 0x20($sp)
/* 098A74 80097E74 AFB5001C */ sw $s5, 0x1c($sp)
/* 098A78 80097E78 AFB40018 */ sw $s4, 0x18($sp)
/* 098A7C 80097E7C AFB30014 */ sw $s3, 0x14($sp)
/* 098A80 80097E80 AFB20010 */ sw $s2, 0x10($sp)
/* 098A84 80097E84 AFB1000C */ sw $s1, 0xc($sp)
/* 098A88 80097E88 AFB00008 */ sw $s0, 8($sp)
/* 098A8C 80097E8C AFA500FC */ sw $a1, 0xfc($sp)
/* 098A90 80097E90 14200003 */ bnez $at, .L80097EA0
/* 098A94 80097E94 AFA60100 */ sw $a2, 0x100($sp)
/* 098A98 80097E98 100001A3 */ b .L80098528
/* 098A9C 80097E9C 00801025 */ move $v0, $a0
.L80097EA0:
/* 098AA0 80097EA0 8FA3011C */ lw $v1, 0x11c($sp)
/* 098AA4 80097EA4 8FA5010C */ lw $a1, 0x10c($sp)
/* 098AA8 80097EA8 8FB40110 */ lw $s4, 0x110($sp)
/* 098AAC 80097EAC 00034042 */ srl $t0, $v1, 1
/* 098AB0 80097EB0 00687823 */ subu $t7, $v1, $t0
/* 098AB4 80097EB4 00E5082B */ sltu $at, $a3, $a1
/* 098AB8 80097EB8 AFAF0080 */ sw $t7, 0x80($sp)
/* 098ABC 80097EBC AFAF00DC */ sw $t7, 0xdc($sp)
/* 098AC0 80097EC0 00E06025 */ move $t4, $a3
/* 098AC4 80097EC4 10200197 */ beqz $at, .L80098524
/* 098AC8 80097EC8 AFB400EC */ sw $s4, 0xec($sp)
.L80097ECC:
/* 098ACC 80097ECC 8FA5010C */ lw $a1, 0x10c($sp)
/* 098AD0 80097ED0 25990020 */ addiu $t9, $t4, 0x20
/* 098AD4 80097ED4 8FAF0124 */ lw $t7, 0x124($sp)
/* 098AD8 80097ED8 00B9082B */ sltu $at, $a1, $t9
/* 098ADC 80097EDC 1020007C */ beqz $at, .L800980D0
/* 098AE0 80097EE0 240E0020 */ li $t6, 32
/* 098AE4 80097EE4 00AC1023 */ subu $v0, $a1, $t4
/* 098AE8 80097EE8 1040018E */ beqz $v0, .L80098524
/* 098AEC 80097EEC 00409025 */ move $s2, $v0
/* 098AF0 80097EF0 83A900FF */ lb $t1, 0xff($sp)
/* 098AF4 80097EF4 8FAE0124 */ lw $t6, 0x124($sp)
/* 098AF8 80097EF8 240F0020 */ li $t7, 32
/* 098AFC 80097EFC 31380007 */ andi $t8, $t1, 7
/* 098B00 80097F00 0018CD40 */ sll $t9, $t8, 0x15
/* 098B04 80097F04 3C01FD00 */ lui $at, 0xfd00
/* 098B08 80097F08 01EE1823 */ subu $v1, $t7, $t6
/* 098B0C 80097F0C 03217825 */ or $t7, $t9, $at
/* 098B10 80097F10 03204825 */ move $t1, $t9
/* 098B14 80097F14 8FB9011C */ lw $t9, 0x11c($sp)
/* 098B18 80097F18 3C010010 */ lui $at, 0x10
/* 098B1C 80097F1C 01E1C025 */ or $t8, $t7, $at
/* 098B20 80097F20 AFAE0030 */ sw $t6, 0x30($sp)
/* 098B24 80097F24 272FFFFF */ addiu $t7, $t9, -1
/* 098B28 80097F28 31EE0FFF */ andi $t6, $t7, 0xfff
/* 098B2C 80097F2C 030E9825 */ or $s3, $t8, $t6
/* 098B30 80097F30 8FB800DC */ lw $t8, 0xdc($sp)
/* 098B34 80097F34 8FAD0080 */ lw $t5, 0x80($sp)
/* 098B38 80097F38 3C01F500 */ lui $at, 0xf500
/* 098B3C 80097F3C 03030019 */ multu $t8, $v1
/* 098B40 80097F40 01212825 */ or $a1, $t1, $at
/* 098B44 80097F44 3C010010 */ lui $at, 0x10
/* 098B48 80097F48 01C07825 */ move $t7, $t6
/* 098B4C 80097F4C 00A17025 */ or $t6, $a1, $at
/* 098B50 80097F50 01C02825 */ move $a1, $t6
/* 098B54 80097F54 000DC140 */ sll $t8, $t5, 5
/* 098B58 80097F58 00081080 */ sll $v0, $t0, 2
/* 098B5C 80097F5C 00195880 */ sll $t3, $t9, 2
/* 098B60 80097F60 03203825 */ move $a3, $t9
/* 098B64 80097F64 0000A812 */ mflo $s5
/* 098B68 80097F68 01003025 */ move $a2, $t0
/* 098B6C 80097F6C 06A10003 */ bgez $s5, .L80097F7C
/* 098B70 80097F70 00157943 */ sra $t7, $s5, 5
/* 098B74 80097F74 26A1001F */ addiu $at, $s5, 0x1f
/* 098B78 80097F78 00017943 */ sra $t7, $at, 5
.L80097F7C:
/* 098B7C 80097F7C 01A30019 */ multu $t5, $v1
/* 098B80 80097F80 01E0A825 */ move $s5, $t7
/* 098B84 80097F84 01007825 */ move $t7, $t0
/* 098B88 80097F88 000F7540 */ sll $t6, $t7, 0x15
/* 098B8C 80097F8C AFAE0060 */ sw $t6, 0x60($sp)
/* 098B90 80097F90 00187A80 */ sll $t7, $t8, 0xa
/* 098B94 80097F94 00007012 */ mflo $t6
/* 098B98 80097F98 00000000 */ nop
/* 098B9C 80097F9C 00000000 */ nop
/* 098BA0 80097FA0 01EE001A */ div $zero, $t7, $t6
/* 098BA4 80097FA4 15C00002 */ bnez $t6, .L80097FB0
/* 098BA8 80097FA8 00000000 */ nop
/* 098BAC 80097FAC 0007000D */ break 7
.L80097FB0:
/* 098BB0 80097FB0 2401FFFF */ li $at, -1
/* 098BB4 80097FB4 15C10004 */ bne $t6, $at, .L80097FC8
/* 098BB8 80097FB8 3C018000 */ lui $at, 0x8000
/* 098BBC 80097FBC 15E10002 */ bne $t7, $at, .L80097FC8
/* 098BC0 80097FC0 00000000 */ nop
/* 098BC4 80097FC4 0006000D */ break 6
.L80097FC8:
/* 098BC8 80097FC8 00007812 */ mflo $t7
/* 098BCC 80097FCC 000F7400 */ sll $t6, $t7, 0x10
/* 098BD0 80097FD0 35D80400 */ ori $t8, $t6, 0x400
/* 098BD4 80097FD4 304F0FFF */ andi $t7, $v0, 0xfff
/* 098BD8 80097FD8 000F7300 */ sll $t6, $t7, 0xc
/* 098BDC 80097FDC AFB8005C */ sw $t8, 0x5c($sp)
/* 098BE0 80097FE0 31780FFF */ andi $t8, $t3, 0xfff
/* 098BE4 80097FE4 3C01F200 */ lui $at, 0xf200
/* 098BE8 80097FE8 01C1B025 */ or $s6, $t6, $at
/* 098BEC 80097FEC 00187B00 */ sll $t7, $t8, 0xc
/* 098BF0 80097FF0 01C01025 */ move $v0, $t6
/* 098BF4 80097FF4 03287023 */ subu $t6, $t9, $t0
/* 098BF8 80097FF8 000EC840 */ sll $t9, $t6, 1
/* 098BFC 80097FFC 3C010700 */ lui $at, 0x700
/* 098C00 80098000 01030019 */ multu $t0, $v1
/* 098C04 80098004 01E1B825 */ or $s7, $t7, $at
/* 098C08 80098008 27380009 */ addiu $t8, $t9, 9
/* 098C0C 8009800C 01E05825 */ move $t3, $t7
/* 098C10 80098010 001878C2 */ srl $t7, $t8, 3
/* 098C14 80098014 31EE01FF */ andi $t6, $t7, 0x1ff
/* 098C18 80098018 000ECA40 */ sll $t9, $t6, 9
/* 098C1C 8009801C 00E8C023 */ subu $t8, $a3, $t0
/* 098C20 80098020 00187840 */ sll $t7, $t8, 1
/* 098C24 80098024 25EE0009 */ addiu $t6, $t7, 9
/* 098C28 80098028 00B9F025 */ or $fp, $a1, $t9
/* 098C2C 8009802C 000EC8C2 */ srl $t9, $t6, 3
/* 098C30 80098030 333801FF */ andi $t8, $t9, 0x1ff
/* 098C34 80098034 00187A40 */ sll $t7, $t8, 9
/* 098C38 80098038 00AFF825 */ or $ra, $a1, $t7
/* 098C3C 8009803C 00007812 */ mflo $t7
/* 098C40 80098040 0008C940 */ sll $t9, $t0, 5
/* 098C44 80098044 0019C280 */ sll $t8, $t9, 0xa
/* 098C48 80098048 030F001A */ div $zero, $t8, $t7
/* 098C4C 8009804C 3C01F400 */ lui $at, 0xf400
/* 098C50 80098050 00417025 */ or $t6, $v0, $at
/* 098C54 80098054 AFAE0040 */ sw $t6, 0x40($sp)
/* 098C58 80098058 8FAE0030 */ lw $t6, 0x30($sp)
/* 098C5C 8009805C 0000C812 */ mflo $t9
/* 098C60 80098060 15E00002 */ bnez $t7, .L8009806C
/* 098C64 80098064 00000000 */ nop
/* 098C68 80098068 0007000D */ break 7
.L8009806C:
/* 098C6C 8009806C 2401FFFF */ li $at, -1
/* 098C70 80098070 15E10004 */ bne $t7, $at, .L80098084
/* 098C74 80098074 3C018000 */ lui $at, 0x8000
/* 098C78 80098078 17010002 */ bne $t8, $at, .L80098084
/* 098C7C 8009807C 00000000 */ nop
/* 098C80 80098080 0006000D */ break 6
.L80098084:
/* 098C84 80098084 010E0019 */ multu $t0, $t6
/* 098C88 80098088 0019C400 */ sll $t8, $t9, 0x10
/* 098C8C 8009808C 370F0400 */ ori $t7, $t8, 0x400
/* 098C90 80098090 AFAF003C */ sw $t7, 0x3c($sp)
/* 098C94 80098094 0006C040 */ sll $t8, $a2, 1
/* 098C98 80098098 270F0009 */ addiu $t7, $t8, 9
/* 098C9C 8009809C 000F70C2 */ srl $t6, $t7, 3
/* 098CA0 800980A0 00008812 */ mflo $s1
/* 098CA4 800980A4 06210003 */ bgez $s1, .L800980B4
/* 098CA8 800980A8 0011C943 */ sra $t9, $s1, 5
/* 098CAC 800980AC 2621001F */ addiu $at, $s1, 0x1f
/* 098CB0 800980B0 0001C943 */ sra $t9, $at, 5
.L800980B4:
/* 098CB4 800980B4 03208825 */ move $s1, $t9
/* 098CB8 800980B8 31D901FF */ andi $t9, $t6, 0x1ff
/* 098CBC 800980BC 0019C240 */ sll $t8, $t9, 9
/* 098CC0 800980C0 3C010700 */ lui $at, 0x700
/* 098CC4 800980C4 00418025 */ or $s0, $v0, $at
/* 098CC8 800980C8 10000077 */ b .L800982A8
/* 098CCC 800980CC 00B85025 */ or $t2, $a1, $t8
.L800980D0:
/* 098CD0 800980D0 83A900FF */ lb $t1, 0xff($sp)
/* 098CD4 800980D4 01CF1823 */ subu $v1, $t6, $t7
/* 098CD8 800980D8 3C01FD00 */ lui $at, 0xfd00
/* 098CDC 800980DC 31390007 */ andi $t9, $t1, 7
/* 098CE0 800980E0 0019C540 */ sll $t8, $t9, 0x15
/* 098CE4 800980E4 03004825 */ move $t1, $t8
/* 098CE8 800980E8 03017025 */ or $t6, $t8, $at
/* 098CEC 800980EC 8FB8011C */ lw $t8, 0x11c($sp)
/* 098CF0 800980F0 3C010010 */ lui $at, 0x10
/* 098CF4 800980F4 01C1C825 */ or $t9, $t6, $at
/* 098CF8 800980F8 AFAF0030 */ sw $t7, 0x30($sp)
/* 098CFC 800980FC 270EFFFF */ addiu $t6, $t8, -1
/* 098D00 80098100 31CF0FFF */ andi $t7, $t6, 0xfff
/* 098D04 80098104 032F9825 */ or $s3, $t9, $t7
/* 098D08 80098108 8FB900DC */ lw $t9, 0xdc($sp)
/* 098D0C 8009810C 8FAD0080 */ lw $t5, 0x80($sp)
/* 098D10 80098110 3C01F500 */ lui $at, 0xf500
/* 098D14 80098114 03230019 */ multu $t9, $v1
/* 098D18 80098118 01212825 */ or $a1, $t1, $at
/* 098D1C 8009811C 3C010010 */ lui $at, 0x10
/* 098D20 80098120 01E07025 */ move $t6, $t7
/* 098D24 80098124 00A17825 */ or $t7, $a1, $at
/* 098D28 80098128 01E02825 */ move $a1, $t7
/* 098D2C 8009812C 000DC940 */ sll $t9, $t5, 5
/* 098D30 80098130 00081080 */ sll $v0, $t0, 2
/* 098D34 80098134 00185880 */ sll $t3, $t8, 2
/* 098D38 80098138 03003825 */ move $a3, $t8
/* 098D3C 8009813C 0000A812 */ mflo $s5
/* 098D40 80098140 01003025 */ move $a2, $t0
/* 098D44 80098144 24120020 */ li $s2, 32
/* 098D48 80098148 01A30019 */ multu $t5, $v1
/* 098D4C 8009814C 06A10003 */ bgez $s5, .L8009815C
/* 098D50 80098150 00157143 */ sra $t6, $s5, 5
/* 098D54 80098154 26A1001F */ addiu $at, $s5, 0x1f
/* 098D58 80098158 00017143 */ sra $t6, $at, 5
.L8009815C:
/* 098D5C 8009815C 01C0A825 */ move $s5, $t6
/* 098D60 80098160 01007025 */ move $t6, $t0
/* 098D64 80098164 000E7D40 */ sll $t7, $t6, 0x15
/* 098D68 80098168 AFAF0060 */ sw $t7, 0x60($sp)
/* 098D6C 8009816C 00197280 */ sll $t6, $t9, 0xa
/* 098D70 80098170 00007812 */ mflo $t7
/* 098D74 80098174 00000000 */ nop
/* 098D78 80098178 00000000 */ nop
/* 098D7C 8009817C 01CF001A */ div $zero, $t6, $t7
/* 098D80 80098180 15E00002 */ bnez $t7, .L8009818C
/* 098D84 80098184 00000000 */ nop
/* 098D88 80098188 0007000D */ break 7
.L8009818C:
/* 098D8C 8009818C 2401FFFF */ li $at, -1
/* 098D90 80098190 15E10004 */ bne $t7, $at, .L800981A4
/* 098D94 80098194 3C018000 */ lui $at, 0x8000
/* 098D98 80098198 15C10002 */ bne $t6, $at, .L800981A4
/* 098D9C 8009819C 00000000 */ nop
/* 098DA0 800981A0 0006000D */ break 6
.L800981A4:
/* 098DA4 800981A4 00007012 */ mflo $t6
/* 098DA8 800981A8 000E7C00 */ sll $t7, $t6, 0x10
/* 098DAC 800981AC 35F90400 */ ori $t9, $t7, 0x400
/* 098DB0 800981B0 304E0FFF */ andi $t6, $v0, 0xfff
/* 098DB4 800981B4 000E7B00 */ sll $t7, $t6, 0xc
/* 098DB8 800981B8 AFB9005C */ sw $t9, 0x5c($sp)
/* 098DBC 800981BC 31790FFF */ andi $t9, $t3, 0xfff
/* 098DC0 800981C0 3C01F200 */ lui $at, 0xf200
/* 098DC4 800981C4 01E1B025 */ or $s6, $t7, $at
/* 098DC8 800981C8 00197300 */ sll $t6, $t9, 0xc
/* 098DCC 800981CC 01E01025 */ move $v0, $t7
/* 098DD0 800981D0 03087823 */ subu $t7, $t8, $t0
/* 098DD4 800981D4 000FC040 */ sll $t8, $t7, 1
/* 098DD8 800981D8 3C010700 */ lui $at, 0x700
/* 098DDC 800981DC 01030019 */ multu $t0, $v1
/* 098DE0 800981E0 01C1B825 */ or $s7, $t6, $at
/* 098DE4 800981E4 27190009 */ addiu $t9, $t8, 9
/* 098DE8 800981E8 01C05825 */ move $t3, $t6
/* 098DEC 800981EC 001970C2 */ srl $t6, $t9, 3
/* 098DF0 800981F0 31CF01FF */ andi $t7, $t6, 0x1ff
/* 098DF4 800981F4 000FC240 */ sll $t8, $t7, 9
/* 098DF8 800981F8 00E8C823 */ subu $t9, $a3, $t0
/* 098DFC 800981FC 00197040 */ sll $t6, $t9, 1
/* 098E00 80098200 25CF0009 */ addiu $t7, $t6, 9
/* 098E04 80098204 00B8F025 */ or $fp, $a1, $t8
/* 098E08 80098208 000FC0C2 */ srl $t8, $t7, 3
/* 098E0C 8009820C 331901FF */ andi $t9, $t8, 0x1ff
/* 098E10 80098210 00197240 */ sll $t6, $t9, 9
/* 098E14 80098214 00AEF825 */ or $ra, $a1, $t6
/* 098E18 80098218 00007012 */ mflo $t6
/* 098E1C 8009821C 0008C140 */ sll $t8, $t0, 5
/* 098E20 80098220 0018CA80 */ sll $t9, $t8, 0xa
/* 098E24 80098224 032E001A */ div $zero, $t9, $t6
/* 098E28 80098228 3C01F400 */ lui $at, 0xf400
/* 098E2C 8009822C 00417825 */ or $t7, $v0, $at
/* 098E30 80098230 AFAF0040 */ sw $t7, 0x40($sp)
/* 098E34 80098234 8FAF0030 */ lw $t7, 0x30($sp)
/* 098E38 80098238 0000C012 */ mflo $t8
/* 098E3C 8009823C 15C00002 */ bnez $t6, .L80098248
/* 098E40 80098240 00000000 */ nop
/* 098E44 80098244 0007000D */ break 7
.L80098248:
/* 098E48 80098248 2401FFFF */ li $at, -1
/* 098E4C 8009824C 15C10004 */ bne $t6, $at, .L80098260
/* 098E50 80098250 3C018000 */ lui $at, 0x8000
/* 098E54 80098254 17210002 */ bne $t9, $at, .L80098260
/* 098E58 80098258 00000000 */ nop
/* 098E5C 8009825C 0006000D */ break 6
.L80098260:
/* 098E60 80098260 010F0019 */ multu $t0, $t7
/* 098E64 80098264 0018CC00 */ sll $t9, $t8, 0x10
/* 098E68 80098268 372E0400 */ ori $t6, $t9, 0x400
/* 098E6C 8009826C AFAE003C */ sw $t6, 0x3c($sp)
/* 098E70 80098270 0006C840 */ sll $t9, $a2, 1
/* 098E74 80098274 272E0009 */ addiu $t6, $t9, 9
/* 098E78 80098278 000E78C2 */ srl $t7, $t6, 3
/* 098E7C 8009827C 00008812 */ mflo $s1
/* 098E80 80098280 06210003 */ bgez $s1, .L80098290
/* 098E84 80098284 0011C143 */ sra $t8, $s1, 5
/* 098E88 80098288 2621001F */ addiu $at, $s1, 0x1f
/* 098E8C 8009828C 0001C143 */ sra $t8, $at, 5
.L80098290:
/* 098E90 80098290 03008825 */ move $s1, $t8
/* 098E94 80098294 31F801FF */ andi $t8, $t7, 0x1ff
/* 098E98 80098298 0018CA40 */ sll $t9, $t8, 9
/* 098E9C 8009829C 3C010700 */ lui $at, 0x700
/* 098EA0 800982A0 00418025 */ or $s0, $v0, $at
/* 098EA4 800982A4 00B95025 */ or $t2, $a1, $t9
.L800982A8:
/* 098EA8 800982A8 00801825 */ move $v1, $a0
/* 098EAC 800982AC AC730000 */ sw $s3, ($v1)
/* 098EB0 800982B0 8FAE0118 */ lw $t6, 0x118($sp)
/* 098EB4 800982B4 24840008 */ addiu $a0, $a0, 8
/* 098EB8 800982B8 00802825 */ move $a1, $a0
/* 098EBC 800982BC 3C0F0701 */ lui $t7, (0x07014050 >> 16) # lui $t7, 0x701
/* 098EC0 800982C0 AC6E0004 */ sw $t6, 4($v1)
/* 098EC4 800982C4 35EF4050 */ ori $t7, (0x07014050 & 0xFFFF) # ori $t7, $t7, 0x4050
/* 098EC8 800982C8 ACAF0004 */ sw $t7, 4($a1)
/* 098ECC 800982CC 24840008 */ addiu $a0, $a0, 8
/* 098ED0 800982D0 00804825 */ move $t1, $a0
/* 098ED4 800982D4 ACAA0000 */ sw $t2, ($a1)
/* 098ED8 800982D8 000C3080 */ sll $a2, $t4, 2
/* 098EDC 800982DC 30D90FFF */ andi $t9, $a2, 0xfff
/* 098EE0 800982E0 24840008 */ addiu $a0, $a0, 8
/* 098EE4 800982E4 3C01F400 */ lui $at, 0xf400
/* 098EE8 800982E8 01923821 */ addu $a3, $t4, $s2
/* 098EEC 800982EC 00077880 */ sll $t7, $a3, 2
/* 098EF0 800982F0 03217025 */ or $t6, $t9, $at
/* 098EF4 800982F4 00801825 */ move $v1, $a0
/* 098EF8 800982F8 3C18E600 */ lui $t8, 0xe600
/* 098EFC 800982FC AD380000 */ sw $t8, ($t1)
/* 098F00 80098300 31E70FFF */ andi $a3, $t7, 0xfff
/* 098F04 80098304 03203025 */ move $a2, $t9
/* 098F08 80098308 AD200004 */ sw $zero, 4($t1)
/* 098F0C 8009830C AC6E0000 */ sw $t6, ($v1)
/* 098F10 80098310 0207C825 */ or $t9, $s0, $a3
/* 098F14 80098314 24840008 */ addiu $a0, $a0, 8
/* 098F18 80098318 00802825 */ move $a1, $a0
/* 098F1C 8009831C AC790004 */ sw $t9, 4($v1)
/* 098F20 80098320 24840008 */ addiu $a0, $a0, 8
/* 098F24 80098324 00806825 */ move $t5, $a0
/* 098F28 80098328 3C0EE700 */ lui $t6, 0xe700
/* 098F2C 8009832C ACAE0000 */ sw $t6, ($a1)
/* 098F30 80098330 ACA00004 */ sw $zero, 4($a1)
/* 098F34 80098334 3C0F0001 */ lui $t7, (0x00014050 >> 16) # lui $t7, 1
/* 098F38 80098338 35EF4050 */ ori $t7, (0x00014050 & 0xFFFF) # ori $t7, $t7, 0x4050
/* 098F3C 8009833C 24840008 */ addiu $a0, $a0, 8
/* 098F40 80098340 00801825 */ move $v1, $a0
/* 098F44 80098344 ADAF0004 */ sw $t7, 4($t5)
/* 098F48 80098348 ADAA0000 */ sw $t2, ($t5)
/* 098F4C 8009834C 3C01F200 */ lui $at, 0xf200
/* 098F50 80098350 00C1C025 */ or $t8, $a2, $at
/* 098F54 80098354 0047C825 */ or $t9, $v0, $a3
/* 098F58 80098358 AC790004 */ sw $t9, 4($v1)
/* 098F5C 8009835C AC780000 */ sw $t8, ($v1)
/* 098F60 80098360 8FAE0114 */ lw $t6, 0x114($sp)
/* 098F64 80098364 02888021 */ addu $s0, $s4, $t0
/* 098F68 80098368 0010C880 */ sll $t9, $s0, 2
/* 098F6C 8009836C 01D24821 */ addu $t1, $t6, $s2
/* 098F70 80098370 00097880 */ sll $t7, $t1, 2
/* 098F74 80098374 31E90FFF */ andi $t1, $t7, 0xfff
/* 098F78 80098378 332E0FFF */ andi $t6, $t9, 0xfff
/* 098F7C 8009837C 000E7B00 */ sll $t7, $t6, 0xc
/* 098F80 80098380 3C01E400 */ lui $at, 0xe400
/* 098F84 80098384 24840008 */ addiu $a0, $a0, 8
/* 098F88 80098388 01E1C025 */ or $t8, $t7, $at
/* 098F8C 8009838C 0309C825 */ or $t9, $t8, $t1
/* 098F90 80098390 00802825 */ move $a1, $a0
/* 098F94 80098394 ACB90000 */ sw $t9, ($a1)
/* 098F98 80098398 8FAA0114 */ lw $t2, 0x114($sp)
/* 098F9C 8009839C 0234C021 */ addu $t8, $s1, $s4
/* 098FA0 800983A0 0018C880 */ sll $t9, $t8, 2
/* 098FA4 800983A4 000A7080 */ sll $t6, $t2, 2
/* 098FA8 800983A8 31CA0FFF */ andi $t2, $t6, 0xfff
/* 098FAC 800983AC 332E0FFF */ andi $t6, $t9, 0xfff
/* 098FB0 800983B0 000E7B00 */ sll $t7, $t6, 0xc
/* 098FB4 800983B4 01EAC025 */ or $t8, $t7, $t2
/* 098FB8 800983B8 ACB80004 */ sw $t8, 4($a1)
/* 098FBC 800983BC 24840008 */ addiu $a0, $a0, 8
/* 098FC0 800983C0 00801025 */ move $v0, $a0
/* 098FC4 800983C4 000C7140 */ sll $t6, $t4, 5
/* 098FC8 800983C8 31C5FFFF */ andi $a1, $t6, 0xffff
/* 098FCC 800983CC 24840008 */ addiu $a0, $a0, 8
/* 098FD0 800983D0 3C19B300 */ lui $t9, 0xb300
/* 098FD4 800983D4 AC590000 */ sw $t9, ($v0)
/* 098FD8 800983D8 00801825 */ move $v1, $a0
/* 098FDC 800983DC AC450004 */ sw $a1, 4($v0)
/* 098FE0 800983E0 3C18B200 */ lui $t8, 0xb200
/* 098FE4 800983E4 AC780000 */ sw $t8, ($v1)
/* 098FE8 800983E8 8FB9003C */ lw $t9, 0x3c($sp)
/* 098FEC 800983EC 24840008 */ addiu $a0, $a0, 8
/* 098FF0 800983F0 00806825 */ move $t5, $a0
/* 098FF4 800983F4 AC790004 */ sw $t9, 4($v1)
/* 098FF8 800983F8 ADB30000 */ sw $s3, ($t5)
/* 098FFC 800983FC 8FAE0118 */ lw $t6, 0x118($sp)
/* 099000 80098400 24840008 */ addiu $a0, $a0, 8
/* 099004 80098404 00801025 */ move $v0, $a0
/* 099008 80098408 3C0F0701 */ lui $t7, (0x07014050 >> 16) # lui $t7, 0x701
/* 09900C 8009840C ADAE0004 */ sw $t6, 4($t5)
/* 099010 80098410 35EF4050 */ ori $t7, (0x07014050 & 0xFFFF) # ori $t7, $t7, 0x4050
/* 099014 80098414 24840008 */ addiu $a0, $a0, 8
/* 099018 80098418 00801825 */ move $v1, $a0
/* 09901C 8009841C AC4F0004 */ sw $t7, 4($v0)
/* 099020 80098420 AC5F0000 */ sw $ra, ($v0)
/* 099024 80098424 3C18E600 */ lui $t8, 0xe600
/* 099028 80098428 AC780000 */ sw $t8, ($v1)
/* 09902C 8009842C AC600004 */ sw $zero, 4($v1)
/* 099030 80098430 8FB90040 */ lw $t9, 0x40($sp)
/* 099034 80098434 0200A025 */ move $s4, $s0
/* 099038 80098438 24840008 */ addiu $a0, $a0, 8
/* 09903C 8009843C 00808025 */ move $s0, $a0
/* 099040 80098440 24840008 */ addiu $a0, $a0, 8
/* 099044 80098444 02E77825 */ or $t7, $s7, $a3
/* 099048 80098448 03267025 */ or $t6, $t9, $a2
/* 09904C 8009844C AE0E0000 */ sw $t6, ($s0)
/* 099050 80098450 AE0F0004 */ sw $t7, 4($s0)
/* 099054 80098454 00801025 */ move $v0, $a0
/* 099058 80098458 24840008 */ addiu $a0, $a0, 8
/* 09905C 8009845C 3C18E700 */ lui $t8, 0xe700
/* 099060 80098460 AC580000 */ sw $t8, ($v0)
/* 099064 80098464 00801825 */ move $v1, $a0
/* 099068 80098468 3C190001 */ lui $t9, (0x00014050 >> 16) # lui $t9, 1
/* 09906C 8009846C 37394050 */ ori $t9, (0x00014050 & 0xFFFF) # ori $t9, $t9, 0x4050
/* 099070 80098470 AC400004 */ sw $zero, 4($v0)
/* 099074 80098474 AC790004 */ sw $t9, 4($v1)
/* 099078 80098478 24840008 */ addiu $a0, $a0, 8
/* 09907C 8009847C 00806825 */ move $t5, $a0
/* 099080 80098480 AC7E0000 */ sw $fp, ($v1)
/* 099084 80098484 02C67025 */ or $t6, $s6, $a2
/* 099088 80098488 02B4C021 */ addu $t8, $s5, $s4
/* 09908C 8009848C ADAE0000 */ sw $t6, ($t5)
/* 099090 80098490 01677825 */ or $t7, $t3, $a3
/* 099094 80098494 0018C880 */ sll $t9, $t8, 2
/* 099098 80098498 ADAF0004 */ sw $t7, 4($t5)
/* 09909C 8009849C 332E0FFF */ andi $t6, $t9, 0xfff
/* 0990A0 800984A0 000E7B00 */ sll $t7, $t6, 0xc
/* 0990A4 800984A4 01E1C025 */ or $t8, $t7, $at
/* 0990A8 800984A8 24840008 */ addiu $a0, $a0, 8
/* 0990AC 800984AC 0309C825 */ or $t9, $t8, $t1
/* 0990B0 800984B0 00147080 */ sll $t6, $s4, 2
/* 0990B4 800984B4 31CF0FFF */ andi $t7, $t6, 0xfff
/* 0990B8 800984B8 00801025 */ move $v0, $a0
/* 0990BC 800984BC AC590000 */ sw $t9, ($v0)
/* 0990C0 800984C0 000FC300 */ sll $t8, $t7, 0xc
/* 0990C4 800984C4 030AC825 */ or $t9, $t8, $t2
/* 0990C8 800984C8 AC590004 */ sw $t9, 4($v0)
/* 0990CC 800984CC 24840008 */ addiu $a0, $a0, 8
/* 0990D0 800984D0 00801025 */ move $v0, $a0
/* 0990D4 800984D4 3C0EB300 */ lui $t6, 0xb300
/* 0990D8 800984D8 AC4E0000 */ sw $t6, ($v0)
/* 0990DC 800984DC 8FAF0060 */ lw $t7, 0x60($sp)
/* 0990E0 800984E0 24840008 */ addiu $a0, $a0, 8
/* 0990E4 800984E4 00801825 */ move $v1, $a0
/* 0990E8 800984E8 01E5C025 */ or $t8, $t7, $a1
/* 0990EC 800984EC AC580004 */ sw $t8, 4($v0)
/* 0990F0 800984F0 3C19B200 */ lui $t9, 0xb200
/* 0990F4 800984F4 AC790000 */ sw $t9, ($v1)
/* 0990F8 800984F8 8FAE005C */ lw $t6, 0x5c($sp)
/* 0990FC 800984FC 258C0020 */ addiu $t4, $t4, 0x20
/* 099100 80098500 24840008 */ addiu $a0, $a0, 8
/* 099104 80098504 AC6E0004 */ sw $t6, 4($v1)
/* 099108 80098508 8FB9010C */ lw $t9, 0x10c($sp)
/* 09910C 8009850C 8FAF0114 */ lw $t7, 0x114($sp)
/* 099110 80098510 8FB400EC */ lw $s4, 0xec($sp)
/* 099114 80098514 0199082B */ sltu $at, $t4, $t9
/* 099118 80098518 25F80020 */ addiu $t8, $t7, 0x20
/* 09911C 8009851C 1420FE6B */ bnez $at, .L80097ECC
/* 099120 80098520 AFB80114 */ sw $t8, 0x114($sp)
.L80098524:
/* 099124 80098524 00801025 */ move $v0, $a0
.L80098528:
/* 099128 80098528 8FBF002C */ lw $ra, 0x2c($sp)
/* 09912C 8009852C 8FB00008 */ lw $s0, 8($sp)
/* 099130 80098530 8FB1000C */ lw $s1, 0xc($sp)
/* 099134 80098534 8FB20010 */ lw $s2, 0x10($sp)
/* 099138 80098538 8FB30014 */ lw $s3, 0x14($sp)
/* 09913C 8009853C 8FB40018 */ lw $s4, 0x18($sp)
/* 099140 80098540 8FB5001C */ lw $s5, 0x1c($sp)
/* 099144 80098544 8FB60020 */ lw $s6, 0x20($sp)
/* 099148 80098548 8FB70024 */ lw $s7, 0x24($sp)
/* 09914C 8009854C 8FBE0028 */ lw $fp, 0x28($sp)
/* 099150 80098550 03E00008 */ jr $ra
/* 099154 80098554 27BD00F8 */ addiu $sp, $sp, 0xf8
@@ -1,95 +0,0 @@
glabel func_800AFE00
/* 0B0A00 800AFE00 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0B0A04 800AFE04 AFA40030 */ sw $a0, 0x30($sp)
/* 0B0A08 800AFE08 14C00003 */ bnez $a2, .L800AFE18
/* 0B0A0C 800AFE0C AFA50034 */ sw $a1, 0x34($sp)
/* 0B0A10 800AFE10 10000002 */ b .L800AFE1C
/* 0B0A14 800AFE14 00001025 */ move $v0, $zero
.L800AFE18:
/* 0B0A18 800AFE18 24C2FFFF */ addiu $v0, $a2, -1
.L800AFE1C:
/* 0B0A1C 800AFE1C 14C70003 */ bne $a2, $a3, .L800AFE2C
/* 0B0A20 800AFE20 27A50014 */ addiu $a1, $sp, 0x14
/* 0B0A24 800AFE24 10000002 */ b .L800AFE30
/* 0B0A28 800AFE28 00E01825 */ move $v1, $a3
.L800AFE2C:
/* 0B0A2C 800AFE2C 24C30001 */ addiu $v1, $a2, 1
.L800AFE30:
/* 0B0A30 800AFE30 8FAE0034 */ lw $t6, 0x34($sp)
/* 0B0A34 800AFE34 00067880 */ sll $t7, $a2, 2
/* 0B0A38 800AFE38 0002C080 */ sll $t8, $v0, 2
/* 0B0A3C 800AFE3C 0003C880 */ sll $t9, $v1, 2
/* 0B0A40 800AFE40 0323C823 */ subu $t9, $t9, $v1
/* 0B0A44 800AFE44 0302C023 */ subu $t8, $t8, $v0
/* 0B0A48 800AFE48 01E67823 */ subu $t7, $t7, $a2
/* 0B0A4C 800AFE4C 000F7840 */ sll $t7, $t7, 1
/* 0B0A50 800AFE50 0018C040 */ sll $t8, $t8, 1
/* 0B0A54 800AFE54 0019C840 */ sll $t9, $t9, 1
/* 0B0A58 800AFE58 27A2001A */ addiu $v0, $sp, 0x1a
/* 0B0A5C 800AFE5C 01D94821 */ addu $t1, $t6, $t9
/* 0B0A60 800AFE60 01D84021 */ addu $t0, $t6, $t8
/* 0B0A64 800AFE64 01CF3821 */ addu $a3, $t6, $t7
.L800AFE68:
/* 0B0A68 800AFE68 84ED0000 */ lh $t5, ($a3)
/* 0B0A6C 800AFE6C 850F0000 */ lh $t7, ($t0)
/* 0B0A70 800AFE70 24A50002 */ addiu $a1, $a1, 2
/* 0B0A74 800AFE74 24E70002 */ addiu $a3, $a3, 2
/* 0B0A78 800AFE78 01AFC021 */ addu $t8, $t5, $t7
/* 0B0A7C 800AFE7C 07010003 */ bgez $t8, .L800AFE8C
/* 0B0A80 800AFE80 00187043 */ sra $t6, $t8, 1
/* 0B0A84 800AFE84 27010001 */ addiu $at, $t8, 1
/* 0B0A88 800AFE88 00017043 */ sra $t6, $at, 1
.L800AFE8C:
/* 0B0A8C 800AFE8C A4AEFFFE */ sh $t6, -2($a1)
/* 0B0A90 800AFE90 852D0000 */ lh $t5, ($t1)
/* 0B0A94 800AFE94 84F9FFFE */ lh $t9, -2($a3)
/* 0B0A98 800AFE98 25080002 */ addiu $t0, $t0, 2
/* 0B0A9C 800AFE9C 25290002 */ addiu $t1, $t1, 2
/* 0B0AA0 800AFEA0 032D7821 */ addu $t7, $t9, $t5
/* 0B0AA4 800AFEA4 05E10003 */ bgez $t7, .L800AFEB4
/* 0B0AA8 800AFEA8 000FC043 */ sra $t8, $t7, 1
/* 0B0AAC 800AFEAC 25E10001 */ addiu $at, $t7, 1
/* 0B0AB0 800AFEB0 0001C043 */ sra $t8, $at, 1
.L800AFEB4:
/* 0B0AB4 800AFEB4 14A2FFEC */ bne $a1, $v0, .L800AFE68
/* 0B0AB8 800AFEB8 A4B80004 */ sh $t8, 4($a1)
/* 0B0ABC 800AFEBC 8FA40030 */ lw $a0, 0x30($sp)
/* 0B0AC0 800AFEC0 00001825 */ move $v1, $zero
/* 0B0AC4 800AFEC4 240C01E0 */ li $t4, 480
/* 0B0AC8 800AFEC8 24860010 */ addiu $a2, $a0, 0x10
/* 0B0ACC 800AFECC 24880020 */ addiu $t0, $a0, 0x20
/* 0B0AD0 800AFED0 248A0030 */ addiu $t2, $a0, 0x30
.L800AFED4:
/* 0B0AD4 800AFED4 87B90014 */ lh $t9, 0x14($sp)
/* 0B0AD8 800AFED8 00031100 */ sll $v0, $v1, 4
/* 0B0ADC 800AFEDC 00822821 */ addu $a1, $a0, $v0
/* 0B0AE0 800AFEE0 A0B9000C */ sb $t9, 0xc($a1)
/* 0B0AE4 800AFEE4 87AD0016 */ lh $t5, 0x16($sp)
/* 0B0AE8 800AFEE8 00C23821 */ addu $a3, $a2, $v0
/* 0B0AEC 800AFEEC 01024821 */ addu $t1, $t0, $v0
/* 0B0AF0 800AFEF0 A0AD000D */ sb $t5, 0xd($a1)
/* 0B0AF4 800AFEF4 87AF0018 */ lh $t7, 0x18($sp)
/* 0B0AF8 800AFEF8 01425821 */ addu $t3, $t2, $v0
/* 0B0AFC 800AFEFC 24630030 */ addiu $v1, $v1, 0x30
/* 0B0B00 800AFF00 A0AF000E */ sb $t7, 0xe($a1)
/* 0B0B04 800AFF04 87B8001A */ lh $t8, 0x1a($sp)
/* 0B0B08 800AFF08 A0F8000C */ sb $t8, 0xc($a3)
/* 0B0B0C 800AFF0C 87AE001C */ lh $t6, 0x1c($sp)
/* 0B0B10 800AFF10 A0EE000D */ sb $t6, 0xd($a3)
/* 0B0B14 800AFF14 87B9001E */ lh $t9, 0x1e($sp)
/* 0B0B18 800AFF18 A0F9000E */ sb $t9, 0xe($a3)
/* 0B0B1C 800AFF1C 87AD0014 */ lh $t5, 0x14($sp)
/* 0B0B20 800AFF20 A12D000C */ sb $t5, 0xc($t1)
/* 0B0B24 800AFF24 87AF0016 */ lh $t7, 0x16($sp)
/* 0B0B28 800AFF28 A12F000D */ sb $t7, 0xd($t1)
/* 0B0B2C 800AFF2C 87B80018 */ lh $t8, 0x18($sp)
/* 0B0B30 800AFF30 A138000E */ sb $t8, 0xe($t1)
/* 0B0B34 800AFF34 87AE001A */ lh $t6, 0x1a($sp)
/* 0B0B38 800AFF38 A16E000C */ sb $t6, 0xc($t3)
/* 0B0B3C 800AFF3C 87B9001C */ lh $t9, 0x1c($sp)
/* 0B0B40 800AFF40 A179000D */ sb $t9, 0xd($t3)
/* 0B0B44 800AFF44 87AD001E */ lh $t5, 0x1e($sp)
/* 0B0B48 800AFF48 146CFFE2 */ bne $v1, $t4, .L800AFED4
/* 0B0B4C 800AFF4C A16D000E */ sb $t5, 0xe($t3)
/* 0B0B50 800AFF50 03E00008 */ jr $ra
/* 0B0B54 800AFF54 27BD0030 */ addiu $sp, $sp, 0x30
+3 -3
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
+1 -1
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];
+229 -298
View File
@@ -326,86 +326,60 @@ Acmd *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, Acmd *acmd, s32 upda
return acmd;
}
#ifdef MIPS_TO_C
#ifdef NON_MATCHING
//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Nov-01-2023
Acmd *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 bufLen, Acmd *acmd, s32 updateIndex) {
void *sp130;
void *sp12C;
s32 *sp128;
s32 sp11C;
s32 sp118;
s32 sp114; /* compiler-managed */
u16 sp112;
s32 spFC;
s32 spEC;
u32 spE4;
s32 spDC;
s32 spD8;
s32 spB0;
s32 spAC;
s32 spA0; /* compiler-managed */
u16 sp9E;
struct Note *sp8C;
u32 sp50;
Acmd *temp_a0_2;
Acmd *temp_s2;
Acmd *temp_s2_2;
Acmd *temp_s2_3;
Acmd *temp_v0_2;
Acmd *temp_v0_3;
Acmd *temp_v0_4;
Acmd *temp_v0_5;
Acmd *temp_v0_6;
Acmd *temp_v0_8;
Acmd *var_s2;
Acmd *var_s2_2;
s16 var_t1;
s32 *temp_a2_2;
s32 temp_a0;
s32 temp_a1_2;
s32 temp_a2;
s32 temp_a2_3;
s32 temp_a2_4;
s32 temp_t6;
s32 temp_t8;
s32 temp_t9_2;
s32 temp_v0_7;
s32 temp_v1;
s32 var_a0;
s32 var_a2;
s32 var_a3;
s32 var_fp;
s32 var_s0_2;
s32 var_s1;
s32 var_s3;
s32 var_s4;
s32 var_s5;
s32 var_s6;
s32 var_t0;
s32 var_t2;
s32 var_t3;
s32 var_t4;
s32 var_v1;
u16 temp_t7;
u16 temp_v0;
u32 temp_a1_3;
u32 temp_s0;
u32 temp_t7_3;
u32 var_s0;
u32 var_t5;
u32 var_t6;
u32 var_v1_2;
u32 var_v1_3;
void *temp_a1;
void *temp_t7_2;
void *temp_t9;
void *var_a0_2;
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;
s32 noteFinished;
s32 restart;
s32 flags;
u16 resamplingRateFixedPoint;
s32 nSamplesToLoad;
sp128 = NULL;
sp8C = &gNotes[noteIndex];
var_v1 = 0;
if (((u32) (noteSubEu->unk0 * 2) >> 0x1F) == 1) {
var_v1 = 1;
s32 spFC;
UNUSED s32 pad2[2];
s32 loopInfo_2;
u8 *sampleAddr;
s32 a1;
s32 samplesLenAdjusted;
s32 nAdpcmSamplesProcessed;
s32 endPos;
s32 nSamplesToProcess;
UNUSED s32 pad3;
s32 s3;
s32 leftRight;
s32 s4;
u32 samplesLenFixedPoint;
s32 var_s6;
s32 nSamplesInThisIteration;
u32 var_t2;
u8 *var_a0_2;
s32 s5Aligned;
s32 temp_t6;
s32 nParts;
s32 curPart;
s32 aligned;
UNUSED s32 pad4;
s32 resampledTempLen; /* compiler-managed */
u16 noteSamplesDmemAddrBeforeResampling;
UNUSED s32 pad6[1];
struct Note *note;
u16 addr;
curLoadedBook = NULL;
note = &gNotes[noteIndex];
flags = 0;
if (noteSubEu->needsInit == TRUE) {
flags = A_INIT;
synthesisState->restart = 0;
synthesisState->samplePosInt = 0;
synthesisState->samplePosFrac = 0;
@@ -414,258 +388,215 @@ Acmd *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct
synthesisState->prevHeadsetPanRight = 0;
synthesisState->prevHeadsetPanLeft = 0;
}
temp_t7 = noteSubEu->resamplingRateFixedPoint;
sp112 = temp_t7;
spB0 = ((u16) noteSubEu->unk0 & 1) + 1;
temp_v0 = (temp_t7 * bufLen * 2) + synthesisState->samplePosFrac;
synthesisState->samplePosFrac = temp_v0;
temp_s0 = temp_v0 >> 0x10;
var_a0 = noteSubEu->unk0;
if (var_a0 & 0x20000) {
temp_v0_2 = load_wave_samples(acmd, noteSubEu, synthesisState, (s32) temp_s0);
temp_a2 = synthesisState->samplePosInt;
sp9E = (temp_a2 * 2) + 0x1A0;
synthesisState->samplePosInt = temp_a2 + temp_s0;
var_a0 = noteSubEu->unk0;
acmd = temp_v0_2;
resamplingRateFixedPoint = noteSubEu->resamplingRateFixedPoint;
nParts = noteSubEu->hasTwoAdpcmParts + 1;
samplesLenFixedPoint = (resamplingRateFixedPoint * inBuf * 2) + synthesisState->samplePosFrac;
nSamplesToLoad = (samplesLenFixedPoint >> 0x10);
synthesisState->samplePosFrac = samplesLenFixedPoint & 0xFFFF; // m2c didn't have & 0xFFFF
if (noteSubEu->isSyntheticWave) {
cmd = load_wave_samples(cmd, noteSubEu, synthesisState, nSamplesToLoad);
noteSamplesDmemAddrBeforeResampling = (synthesisState->samplePosInt * 2) + 0x1A0; // DMEM_ADDR_UNCOMPRESSED_NOTE
synthesisState->samplePosInt += nSamplesToLoad;
} else {
temp_t7_2 = *noteSubEu->sound.samples;
sp130 = temp_t7_2;
temp_t9 = temp_t7_2->unk8;
sp12C = temp_t9;
spDC = temp_t9->unk4;
spA0 = 0;
spAC = 0;
spEC = temp_t7_2->unk4;
if (spB0 > 0) {
sp50 = temp_v0 >> 0x10;
sp114 = var_v1;
var_s2_2 = acmd;
loop_6:
temp_a1 = sp130->unkC;
var_fp = 0;
var_s4 = 0;
temp_a2_2 = temp_a1 + 8;
if (spB0 == 1) {
var_t5 = sp50;
audioBookSample = noteSubEu->sound.audioBankSound->sample;
loopInfo = audioBookSample->loop;
endPos = loopInfo->end;
sampleAddr = audioBookSample->sampleAddr; // book?
resampledTempLen = 0;
for (curPart = 0; curPart < nParts; curPart++) {
nAdpcmSamplesProcessed = 0;
s4 = 0;
if (nParts == 1) {
samplesLenAdjusted = nSamplesToLoad;
} else if (nSamplesToLoad & 1) {
samplesLenAdjusted = (nSamplesToLoad & ~1) + (curPart * 2);
} else {
var_t5 = sp50;
if (sp50 & 1) {
var_t5 = (sp50 & ~1) + (spAC * 2);
samplesLenAdjusted = nSamplesToLoad;
}
// sm64 also has if (audioBookSample->codec == CODEC_A) {
if (curLoadedBook != (*audioBookSample->book).book) {
u32 nEntries;
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[0];
}
while (nAdpcmSamplesProcessed != samplesLenAdjusted) {
s32 samplesRemaining;
s32 s1;
noteFinished = FALSE;
restart = FALSE;
s3 = synthesisState->samplePosInt & 0xF;
samplesRemaining = endPos - synthesisState->samplePosInt;
nSamplesToProcess = samplesLenAdjusted - nAdpcmSamplesProcessed;
if ((s3 == 0) && (synthesisState->restart == FALSE)) {
s3 = 16;
}
}
if (sp128 != temp_a2_2) {
temp_v0_3 = var_s2_2;
var_s2_2 += 8;
temp_v0_3->words.w0 = ((temp_a1->unk0 * 0x10 * temp_a1->unk4) & 0xFFFFFF) | 0x0B000000;
temp_v0_3->words.w1 = (((u32) (noteSubEu->unk0 << 0xB) >> 0x1D) * 2) + temp_a2_2 + 0x80000000;
var_a0 = noteSubEu->unk0;
sp128 = temp_a2_2;
}
if (((u32) (var_a0 << 0xB) >> 0x1D) != 0) {
sp128 = gUnknownData_800F6290;
}
if (var_t5 != 0) {
loop_15:
temp_a2_3 = synthesisState->samplePosInt;
temp_a0 = var_t5 - var_fp;
var_s3 = temp_a2_3 & 0xF;
var_t3 = 0;
var_t4 = 0;
temp_v1 = spDC - temp_a2_3;
if ((var_s3 == 0) && (synthesisState->restart == 0)) {
var_s3 = 0x10;
}
temp_a1_2 = 0x10 - var_s3;
var_s5 = temp_a1_2;
if (temp_a0 < temp_v1) {
temp_t9_2 = (s32) ((temp_a0 - temp_a1_2) + 0xF) / 16;
var_s1 = temp_t9_2 * 0x10;
var_t0 = temp_t9_2;
var_s6 = (temp_a1_2 + var_s1) - temp_a0;
a1 = 16 - s3;
if (nSamplesToProcess < samplesRemaining) {
loopInfo_2 = ((nSamplesToProcess - a1) + 0xF) / 16;
s1 = loopInfo_2 * 16;
var_s6 = (a1 + s1) - nSamplesToProcess;
} else {
var_s1 = temp_v1 - temp_a1_2;
s1 = samplesRemaining - a1;
var_s6 = 0;
if (var_s1 <= 0) {
var_s1 = 0;
var_s5 = temp_v1;
if (s1 <= 0) {
s1 = 0;
a1 = samplesRemaining;
}
var_t0 = (s32) (var_s1 + 0xF) / 16;
if (sp12C->unk8 != 0) {
var_t4 = 1;
loopInfo_2 = (s1 + 0xF) / 16;
if (loopInfo->count != 0) {
restart = 1;
} else {
var_t3 = 1;
noteFinished = 1;
}
}
var_t2 = 0;
if (var_t0 != 0) {
temp_t6 = (s32) ((temp_a2_3 - var_s3) + 0x10) / 16;
if (sp130->unk1 == 0x81) {
var_s0 = ((var_t0 * 9) + 0x1F) & ~0xF;
var_a0_2 = (temp_t6 * 9) + spEC;
//var_t2 = 0; // unsure
if (loopInfo_2 != 0) {
temp_t6 = ((synthesisState->samplePosInt - s3) + 16) / 16; // diff from sm64 sh
if (audioBookSample->loaded == 0x81) { // sm64 has audioBookSample->medium
var_a0_2 = (temp_t6 * 9) + sampleAddr;
} else {
spD8 = temp_a0;
sp11C = var_t3;
sp118 = var_t4;
spE4 = var_t5;
temp_a1_3 = ((var_t0 * 9) + 0x1F) & ~0xF;
var_s0 = temp_a1_3;
var_a0_2 = dma_sample_data((temp_t6 * 9) + spEC, temp_a1_3, sp114, &synthesisState->sampleDmaIndex);
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 = (s32) var_a0_2 & 0xF;
var_s2_2->words.w1 = (var_a0_2 - var_t2) + 0x80000000;
var_s2_2->words.w0 = ((((s32) var_s0 >> 4) & 0xFF) << 0x10) | 0x14000000 | (var_t1 & 0xFFFF);
var_s2_2 += 8;
var_t2 = ((uintptr_t)var_a0_2 & 0xF);
aligned = ALIGN(((loopInfo_2 * 9) + 16), 4);
addr = (0x540 - aligned) & 0xFFFF; // DMEM_ADDR_COMPRESSED_ADPCM_DATA
aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(var_a0_2 - var_t2), addr, aligned);
} else {
var_s1 = 0;
var_t1 = 0x540 - (((var_t0 * 9) + 0x1F) & 0xFFF0);
s1 = 0; // ?
var_t2 = 0;
}
temp_v0_4 = var_s2_2;
if (synthesisState->restart != 0) {
temp_v0_4->words.w0 = 0x0F000000;
var_s2_2 += 8;
temp_v0_4->words.w1 = sp130->unk8 + 0x80000010;
sp114 = 2;
synthesisState->restart = 0;
if (synthesisState->restart != FALSE) {
aSetLoop(cmd++, VIRTUAL_TO_PHYSICAL2(audioBookSample->loop->state));
flags = A_LOOP;
synthesisState->restart = FALSE;
}
if (var_fp == 0) {
var_a2 = var_s1 * 2;
var_s2_2->words.w1 = (var_a2 & 0xFFFF) | 0x01A00000;
var_s2_2->words.w0 = ((var_t1 + var_t2) & 0xFFFF) | 0x08000000;
temp_s2 = var_s2_2 + 8;
temp_s2->words.w0 = ((sp114 & 0xFF) << 0x10) | 0x01000000;
temp_s2->words.w1 = (u32) (synthesisState->synthesisBuffers + 0x80000000);
var_s2_2 = temp_s2 + 8;
spFC = var_s3 * 2;
var_a3 = (var_s1 + var_s5) - var_s6;
nSamplesInThisIteration = (s1 + a1) - var_s6;
s5Aligned = ALIGN(s4 + 16, 4);
if (nAdpcmSamplesProcessed == 0) {
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;
} else {
temp_t8 = (var_s4 + 0x1F) & ~0xF;
var_s2_2->words.w0 = ((var_t1 + var_t2) & 0xFFFF) | 0x08000000;
var_a2 = var_s1 * 2;
var_s2_2->words.w1 = ((temp_t8 + 0x1A0) << 0x10) | (var_a2 & 0xFFFF);
temp_s2_2 = var_s2_2 + 8;
temp_s2_2->words.w0 = ((sp114 & 0xFF) << 0x10) | 0x01000000;
temp_s2_2->words.w1 = (u32) (synthesisState->synthesisBuffers + 0x80000000);
temp_s2_3 = temp_s2_2 + 8;
var_a3 = (var_s1 + var_s5) - var_s6;
temp_s2_3->words.w0 = ((temp_t8 + (var_s3 * 2) + 0x1A0) & 0xFFFFFF) | 0x0A000000;
temp_s2_3->words.w1 = ((var_s4 + 0x1A0) << 0x10) | ((var_a3 * 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
aADPCMdec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState));
aDMEMMove(cmd++, 0x1A0 + s5Aligned + (s3 * 2), 0x1A0 + s4, nSamplesInThisIteration * 2);
}
var_fp += var_a3;
if (sp114 != 1) {
sp114 = 0;
if ((sp114 ^ 2) != 0) {
if (var_s4 != 0) {
var_s4 += var_a3 * 2;
nAdpcmSamplesProcessed += nSamplesInThisIteration;
switch(flags) {
case 1:
spFC = 0x20;
s4 = (s1 * 2) + 0x20;
break;
case 2:
s4 += nSamplesInThisIteration * 2;
break;
default:
if (s4 != 0) {
s4 += nSamplesInThisIteration * 2;
} else {
var_s4 = (var_s3 + var_a3) * 2;
s4 = (s3 + nSamplesInThisIteration) * 2;
}
} else {
var_s4 += var_a3 * 2;
}
} else {
spFC = 0x00000020;
var_s4 = var_a2 + 0x20;
sp114 = 0;
break;
}
if (var_t3 != 0) {
var_s2_2->words.w0 = ((var_s4 + 0x1A0) & 0xFFFFFF) | 0x02000000;
var_s2_2->words.w1 = (var_t5 - var_fp) * 2;
var_s2_2 += 8;
noteSubEu->unk0 = (s8) ((u8) noteSubEu->unk0 | 0x20);
sp8C->unkB0 = (u8) (sp8C->unkB0 | 0x20);
sp8C->unkB0 = (u8) (sp8C->unkB0 & 0xFF7F);
spE4 = var_t5;
flags = 0;
if (noteFinished) {
aClearBuffer(cmd++, 0x1A0 + s4,
(samplesLenAdjusted - nAdpcmSamplesProcessed) * 2);
noteSubEu->finished = 1; // sm64 says = 1
note->noteSubEu.finished = 1;
func_800B6FB4(updateIndex, noteIndex);
} else {
if (var_t4 != 0) {
synthesisState->restart = 1;
synthesisState->samplePosInt = sp12C->unk0;
if (restart) {
synthesisState->restart = TRUE;
synthesisState->samplePosInt = loopInfo->start;
} else {
synthesisState->samplePosInt += temp_a0;
}
if (var_fp != var_t5) {
goto loop_15;
synthesisState->samplePosInt += nSamplesToProcess;
}
}
}
if (spB0 != 1) {
if (spB0 != 2) {
var_a0 = noteSubEu->unk0;
var_t6 = (u32) (var_a0 * 4) >> 0x1F;
goto block_60;
}
if (spAC != 0) {
temp_v0_5 = var_s2_2;
if (spAC != 1) {
var_a0 = noteSubEu->unk0;
var_v1_2 = (u32) (var_a0 * 4) >> 0x1F;
} else {
var_s2_2 += 8;
temp_v0_5->words.w0 = ((((s32) var_t5 / 2) + 7) & 0xFFF8) | 0x11000000;
temp_v0_5->words.w1 = ((spFC + 0x1A0) << 0x10) | ((spA0 + 0x20) & 0xFFFF);
var_a0 = noteSubEu->unk0;
var_t6 = (u32) (var_a0 * 4) >> 0x1F;
goto block_60;
}
} else {
temp_v0_6 = var_s2_2;
var_s2_2 += 8;
temp_v0_6->words.w0 = ((((s32) var_t5 / 2) + 7) & 0xFFF8) | 0x11000000;
temp_v0_6->words.w1 = ((spFC + 0x1A0) << 0x10) | 0x20;
spA0 = var_t5;
sp9E = 0x0020;
var_a0 = noteSubEu->unk0;
temp_t7_3 = (u32) (var_a0 * 4) >> 0x1F;
var_v1_2 = temp_t7_3;
if (temp_t7_3 != 0) {
var_s2_2->words.w1 = var_t5 + 0x10;
var_s2_2->words.w0 = ((var_t5 + 0x20) & 0xFFFFFF) | 0x02000000;
var_a0 = noteSubEu->unk0;
var_s2_2 += 8;
var_v1_2 = (u32) (var_a0 * 4) >> 0x1F;
}
}
} else {
sp9E = spFC + 0x1A0;
var_a0 = noteSubEu->unk0;
var_t6 = (u32) (var_a0 * 4) >> 0x1F;
block_60:
var_v1_2 = var_t6;
}
if (var_v1_2 != 0) {
} else {
temp_v0_7 = spAC + 1;
spAC = temp_v0_7;
if (temp_v0_7 != spB0) {
goto loop_6;
}
switch(nParts) {
case 1:
noteSamplesDmemAddrBeforeResampling = 0x1A0 + spFC;
break;
case 2:
switch(curPart) {
case 0:
aDownsampleHalf(cmd++, ALIGN(samplesLenAdjusted / 2, 3), 0x1A0 + spFC, DMEM_ADDR_RESAMPLED);
resampledTempLen = samplesLenAdjusted;
noteSamplesDmemAddrBeforeResampling = DMEM_ADDR_RESAMPLED;
if (noteSubEu->finished != FALSE) {
aClearBuffer(cmd++, noteSamplesDmemAddrBeforeResampling + resampledTempLen, samplesLenAdjusted + 0x10);
}
break;
case 1:
aDownsampleHalf(cmd++, ALIGN(samplesLenAdjusted / 2, 3), DMEM_ADDR_RESAMPLED2 + spFC, resampledTempLen + DMEM_ADDR_RESAMPLED);
break;
}
break;
}
if (noteSubEu->finished != FALSE) {
break;
}
acmd = var_s2_2;
}
}
var_v1_3 = 0;
if (((u32) (var_a0 * 2) >> 0x1F) == 1) {
var_v1_3 = 1;
noteSubEu->unk0 = (s8) ((u8) noteSubEu->unk0 & 0xFFBF);
flags = 0;
if (noteSubEu->needsInit == TRUE) {
flags = A_INIT;
noteSubEu->needsInit = FALSE;
}
temp_a2_4 = bufLen * 2;
sp114 = var_v1_3;
temp_a0_2 = final_resample(acmd, synthesisState, temp_a2_4, sp112, (u16) (s32) sp9E, var_v1_3);
if ((noteSubEu->headsetPanRight != 0) || (synthesisState->prevHeadsetPanRight != 0)) {
var_s0_2 = 1;
} else if ((noteSubEu->headsetPanLeft != 0) || (var_s0_2 = 0, (synthesisState->prevHeadsetPanLeft != 0))) {
var_s0_2 = 2;
cmd = final_resample(cmd, synthesisState, inBuf * 2, resamplingRateFixedPoint, noteSamplesDmemAddrBeforeResampling, flags);
if ((noteSubEu->headsetPanRight) || (synthesisState->prevHeadsetPanRight)) {
leftRight = 1; // According to m2c this is a new var. Perhaps flags?
} else if ((noteSubEu->headsetPanLeft) || (synthesisState->prevHeadsetPanLeft)) {
leftRight = 2;
} else {
leftRight = 0;
}
temp_v0_8 = func_800B86A0(temp_a0_2, noteSubEu, synthesisState, bufLen, (u16) 0, var_s0_2, sp114);
var_s2 = temp_v0_8;
if ((u8) noteSubEu->unk0 & 1) {
var_s2 = note_apply_headset_pan_effects(temp_v0_8, noteSubEu, synthesisState, temp_a2_4, (s32) sp114, var_s0_2);
cmd = func_800B86A0(cmd, noteSubEu, synthesisState, inBuf, 0, leftRight, flags);
if (noteSubEu->usesHeadsetPanEffects) {
//synthesisState->restart = 1;
cmd = note_apply_headset_pan_effects(cmd, noteSubEu, synthesisState, inBuf * 2, flags, leftRight);
}
return var_s2;
return cmd;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/synthesis/synthesis_process_note.s")
+1 -1
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);
Acmd *synthesis_process_note(s32, struct NoteSubEu*, struct NoteSynthesisState*, s16*, s32, Acmd*, s32);
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);
+69 -84
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;
@@ -5922,9 +5909,9 @@ void func_80017054(Camera *camera, UNUSED Player *player, UNUSED s32 index, s32
f32 sp8C;
f32 sp88;
f32 sp84;
f32 stackPadding4;
f32 stackPadding5;
f32 stackPadding6;
UNUSED f32 stackPadding4;
UNUSED f32 stackPadding5;
UNUSED f32 stackPadding6;
UNUSED s32 stackPadding7;
UNUSED s32 stackPadding8;
s16 sp6E;
@@ -5937,7 +5924,6 @@ void func_80017054(Camera *camera, UNUSED Player *player, UNUSED s32 index, s32
s32 sp58;
s16 sp56;
s32 playerId;
f32 temp_f0;
playerId = camera->playerId;
pathIndex = D_80163DD8[cameraId];
@@ -5975,24 +5961,23 @@ void func_80017054(Camera *camera, UNUSED Player *player, UNUSED s32 index, s32
stackPadding4 = sp98 - D_801645F8[cameraId];
stackPadding5 = sp90 - D_80164618[cameraId];
stackPadding6 = sp94 - D_80164638[cameraId];
temp_f0 = sqrtf(((sp98 * sp98) + (sp94 * sp94)) + (sp90 * sp90));
if (temp_f0 != 0.0) {
sp98 = D_801645F8[cameraId] + ((D_80164648[cameraId] * stackPadding4) / temp_f0);
sp94 = D_80164618[cameraId] + ((D_80164648[cameraId] * stackPadding5) / temp_f0);
sp90 = D_80164638[cameraId] + ((D_80164648[cameraId] * stackPadding6) / temp_f0);
spAC = sqrtf(((sp98 * sp98) + (sp94 * sp94)) + (sp90 * sp90));
if (spAC != 0.0) {
sp98 = D_801645F8[cameraId] + ((D_80164648[cameraId] * stackPadding4) / spAC);
sp94 = D_80164618[cameraId] + ((D_80164648[cameraId] * stackPadding5) / spAC);
sp90 = D_80164638[cameraId] + ((D_80164648[cameraId] * stackPadding6) / spAC);
} else {
sp98 = D_801645F8[cameraId];
sp94 = D_80164618[cameraId];
sp90 = D_80164638[cameraId];
}
// This empty if statement is a huge source of problems. I have no idea what's going on
if ((!(sp98 < (-10000.0))) && (sp98 > 10000.0)) {
if (sp98 && sp98) {}
}
camera->pos[0] = sp98;
if (1) {} if (1) {} if (1) {} if (1) {}
camera->pos[1] = sp94 + 10.0;
camera->pos[2] = sp90;
if (1) { } if (1) { } if (1) { } if (1) { } if (1) { }
D_801645F8[cameraId] = sp98;
D_80164638[cameraId] = sp90;
D_80164618[cameraId] = sp94;
+8 -7
View File
@@ -4907,8 +4907,7 @@ void func_80065AB0(Player *player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
s16 envRed;
s16 envGreen;
s16 envBlue;
s32 envColors[] = { MAKE_RGB(0xFF, 0xFF, 0xFF), MAKE_RGB(0xFF, 0xFF, 0x00), MAKE_RGB(0xFF, 0x96, 0x00) };
s32 sp8C[] = {0x00ffffff, 0x00ffff00, 0x00ff9600};
if (player->unk_258[10 + arg2].unk_01C == 1) {
if (player->unk_204 >= 0x32) {
var_s0 = 1;
@@ -4919,9 +4918,9 @@ void func_80065AB0(Player *player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
primGreen = player->unk_258[10 + arg2].unk_03A;
primBlue = player->unk_258[10 + arg2].unk_03C;
primAlpha = player->unk_258[10 + arg2].unk_03E;
envRed = (envColors[player->unk_258[10 + arg2].unk_040] >> 0x10) & 0xFF;
envGreen = (envColors[player->unk_258[10 + arg2].unk_040] >> 0x08) & 0xFF;
envBlue = (envColors[player->unk_258[10 + arg2].unk_040] >> 0x00) & 0xFF;
envRed = (sp8C[player->unk_258[10 + arg2].unk_040] >> 0x10) & 0xFF;
envGreen = (sp8C[player->unk_258[10 + arg2].unk_040] >> 0x08) & 0xFF;
envBlue = (sp8C[player->unk_258[10 + arg2].unk_040] >> 0x00) & 0xFF;
spB4[0] = player->unk_258[10 + arg2].unk_000[0];
spB4[1] = player->unk_258[10 + arg2].unk_000[1];
spB4[2] = player->unk_258[10 + arg2].unk_000[2];
@@ -4931,13 +4930,15 @@ void func_80065AB0(Player *player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
func_800652D4(spB4, spAC, player->unk_258[10 + arg2].unk_00C * player->size);
if (var_s0 == 0) {
gSPDisplayList(gDisplayListHead++, D_0D008DB8);
gDPLoadTextureBlock(gDisplayListHead++, D_800E4770[var_s0], G_IM_FMT_I, G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gDisplayListHead++, D_800E4770[var_s0][0], G_IM_FMT_I, G_IM_SIZ_8b, 16, 16, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_8004B72C(primRed, primGreen, primBlue, envRed, envGreen, envBlue, primAlpha);
gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2);
gSPDisplayList(gDisplayListHead++, D_0D008DF8);
} else {
gSPDisplayList(gDisplayListHead++, D_0D008DB8);
gDPLoadTextureBlock(gDisplayListHead++, D_800E4770[var_s0], G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gDisplayListHead++, D_800E4770[var_s0][0], G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_8004B72C(primRed, primGreen, primBlue, envRed, envGreen, envBlue, primAlpha);
gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2);
gSPDisplayList(gDisplayListHead++, D_0D008E48);
+44 -52
View File
@@ -3292,80 +3292,72 @@ Gfx *func_80097A14(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4,
return displayListHead;
}
#ifdef NON_MATCHING
// https://decomp.me/scratch/EAuX4
// I'm fairly certain I've got the GBI macros correct, don't know what the source of the diff is
// While there may be register allocation issues, I suspect the instruction ordering issues are the actual problems
Gfx *func_80097AE4(Gfx *displayListHead, s8 fmt, s32 arg2, s32 arg3, u8 *arg4, s32 arg5) {
s32 var_a2;
UNUSED s32 stackPadding0;
Gfx *func_80097AE4(Gfx *displayListHead, s8 fmt, s32 arg2, s32 arg3, u8 *arg4, s32 width) {
s32 i;
s32 temp;
s32 arg2Copy;
s32 dsdx;
if (arg5 >= 0x20) return displayListHead;
if (width >= 32) { return displayListHead; }
arg2Copy = arg2;
dsdx = 0x8000 / (0x20 - arg5);
for (var_a2 = 0; var_a2 < 0x40; var_a2 += 0x20) {
gDPLoadTextureTile(displayListHead++, arg4, fmt, G_IM_SIZ_16b, 64, 0, 0, var_a2, 32, var_a2 + 0x20, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(displayListHead++, (arg2 + arg5) << 2, arg3 << 2, (arg2 + 0x20) << 2, (arg3 + 0x20) << 2, 0, 0, 0, dsdx, 1024);
arg2 += 0x20;
gDPLoadTextureTile(displayListHead++, arg4, fmt, G_IM_SIZ_16b, 64, 0, 32, var_a2, 64, var_a2 + 0x20, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(displayListHead++, arg2 << 2, arg3 << 2, ((arg2 - arg5) + 0x20) << 2, (arg3 + 0x20) << 2, 0, 0, 0, dsdx, 1024);
for (i = 0; i < 64; i += 32) {
temp = 0;
dsdx = 0x8000 / (32 - width);
gDPLoadTextureTile(displayListHead++, arg4, fmt, G_IM_SIZ_16b, 64, 64, temp, i, temp + 32, i + 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(displayListHead++, (arg2 + width) << 2, arg3 << 2, (arg2 + 32) << 2, (arg3 + 32) << 2, 0, 0, 0, dsdx, 1024);
arg2 += 32;
gDPLoadTextureTile(displayListHead++, arg4, fmt, G_IM_SIZ_16b, 64, 64, temp + 32, i, temp + 64, i + 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(displayListHead++, arg2 << 2, arg3 << 2, ((arg2 - width) + 32) << 2, (arg3 + 32) << 2, 0, 0, 0, dsdx, 1024);
arg2 = arg2Copy;
arg3 += 0x20;
arg3 += 32;
}
return displayListHead;
}
#else
GLOBAL_ASM("asm/non_matchings/code_80091750/func_80097AE4.s")
#endif
#ifdef NON_MATCHING
// https://decomp.me/scratch/U4QaQ
// I'm fairly certain I have the GBI macros correct, so the massive diff is probably
// the result of somemath ordering issues.
Gfx *func_80097E58(Gfx *displayListHead, s8 fmt, UNUSED s32 arg2, s32 arg3, UNUSED s32 arg4, s32 arg5, s32 arg6, s32 arg7, u8 *someTexture, u32 width, UNUSED s32 argA, u32 argB) {
Gfx *func_80097E58(Gfx *displayListHead, s8 fmt, u32 arg2, u32 arg3, u32 arg4, u32 arg5, s32 arg6, s32 arg7, u8 *someTexture, u32 arg9, u32 argA, s32 width) {
u32 ult;
s32 spDC;
s32 sp80;
s32 temp_v1;
s32 var_s1;
s32 var_s2;
s32 var_s5;
u32 lrs;
u32 temp;
s32 arg6Copy;
s32 temp_v1;
s32 var_s2;
s32 lrs;
s32 spDC;
s32 temp2 = 32;
if ((s32)width >= 0x20) return displayListHead;
lrs = width >> 1;
spDC = sp80 = width - lrs;
if (width >= 32) { return displayListHead; }
arg6Copy = arg6;
for (ult = arg3; ult < (u32) arg5; ult += 0x20) {
if ((u32) arg5 < (ult + 0x20)) { // Less than 0x20 left to reach target
var_s2 = arg5 - ult; // Leftover amount to reach target
if (var_s2 == 0) break; // Actually at target
lrs = arg9 / 2;
spDC = arg9 - lrs;
for (ult = arg3; ult < arg5; ult += 32) {
temp = 0;
if ((ult + temp2) > arg5) {
var_s2 = arg5 - ult;
if (!var_s2) {
break;
}
} else {
var_s2 = 0x20; // Go the full 0x20 on this step
var_s2 = temp2;
}
temp_v1 = 0x20 - argB;
var_s1 = (lrs * argB) / 32;
var_s5 = (spDC * temp_v1) / 32;
gDPLoadTextureTile(displayListHead++, someTexture, fmt, G_IM_SIZ_16b, width, 0, 0, ult, lrs, ult + var_s2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(displayListHead++, (arg6 + var_s1) << 2, arg7 << 2, (arg6 + lrs) << 2, (arg7 + var_s2) << 2, 0, 0, ult << 5, (s32)((lrs << 5) << 0xA) / (s32)(lrs * temp_v1), 1024);
temp_v1 = ((32 * lrs) << 10) / (lrs * (32 - width));
gDPLoadTextureTile(displayListHead++, someTexture, fmt, G_IM_SIZ_16b, arg9, argA, temp, ult, temp + lrs, ult + var_s2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(displayListHead++, (arg6 + lrs * width / 32) << 2, arg7 << 2, (arg6 + lrs) << 2, (arg7 + var_s2) << 2, 0, 0, (ult << 5) & 0xFFFF, temp_v1, 1024);
arg6 += lrs;
gDPLoadTextureTile(displayListHead++, someTexture, fmt, G_IM_SIZ_16b, width, 0, lrs, ult, width, ult + var_s2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(displayListHead++, arg6 << 2, arg7 << 2, (arg6 + var_s5) << 2, (arg7 + var_s2) << 2, 0, lrs << 5, ult << 5, ((sp80 << 5) << 0xA) / (sp80 * temp_v1), 1024);
temp_v1 = ((32 * spDC) << 10) / (spDC * (32 - width));
gDPLoadTextureTile(displayListHead++, someTexture, fmt, G_IM_SIZ_16b, arg9, argA, temp + lrs, ult, temp + arg9, ult + var_s2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(displayListHead++, arg6 << 2, arg7 << 2, (arg6 + spDC * (32 - width) / 32) << 2, (arg7 + var_s2) << 2, 0, (lrs << 5) & 0xFFFF, (ult << 5) & 0xFFFF, temp_v1, 1024);
arg6 = arg6Copy;
arg7 += 0x20;
arg7 += temp2;
}
return displayListHead;
}
#else
GLOBAL_ASM("asm/non_matchings/code_80091750/func_80097E58.s")
#endif
Gfx *func_80098558(Gfx *displayListHead, u32 arg1, u32 arg2, u32 arg3, u32 arg4, u32 arg5, u32 arg6, UNUSED s32 arg7, s32 arg8) {
u32 var_a3;
+1 -1
View File
@@ -162,7 +162,7 @@ Gfx *func_80096CD8(Gfx*, s32, s32, u32, u32);
Gfx *func_80097274(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, u16 *argA, u32 argB, u32 argC, s32 argD);
Gfx *func_80097A14(Gfx*, s8, s32, s32, s32, s32, s32, s32, u8*, u32, u32);
Gfx *func_80097AE4(Gfx*, s8, s32, s32, u8*, s32);
Gfx *func_80097E58(Gfx*, s8, s32, s32, s32, s32, s32, s32, u8*, u32, s32, u32);
Gfx *func_80097E58(Gfx *displayListHead, s8 fmt, u32 arg2, u32 arg3, u32 arg4, u32 arg5, s32 arg6, s32 arg7, u8 *someTexture, u32 arg9, u32 argA, s32 width);
Gfx *func_80098558(Gfx*, u32, u32, u32, u32, u32, u32, s32, s32);
Gfx *func_800987D0(Gfx*, u32, u32, u32, u32, s32, s32, u8*, u32, s32);
Gfx *draw_box_fill(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32);
+18 -49
View File
@@ -125,61 +125,30 @@ void func_800AFC54(Vtx *arg0, s32 arg1, s32 arg2, s32 arg3, s16 arg4[3]) {
GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800AFC54.s")
#endif
void func_800AFE00(Vtx *arg0, s16 (*arg1)[3], s32 arg2, s32 arg3);
#ifdef NON_MATCHING
// guessing on the Vtx kind again
void func_800AFE00(Vtx *arg0, s16 (*arg1)[3], s32 arg2, s32 arg3) {
s32 idx1; // v0
s32 idx2; // v0
void func_800AFE00(Vtx *arg0, Vec3s *arg1, s32 arg2, s32 arg3) {
s32 idx1;
s32 idx2;
s32 i;
s16 sp14[6];
Vtx *sec, *third, *fourth;
Vtx *vtx;
s16 sp14[2][3];
if (arg2 == 0) {
idx1 = 0;
} else {
idx1 = arg2 - 1;
idx1 = (arg2 == 0) ? 0 : arg2 - 1;
idx2 = (arg2 == arg3) ? arg3 : arg2 + 1;
for (i = 0; i < 3; i++) {
sp14[0][i] = (arg1[idx1][i] + arg1[arg2][i]) / 2;
sp14[1][i] = (arg1[idx2][i] + arg1[arg2][i]) / 2;
}
if (arg2 == arg3) {
idx2 = arg3;
} else {
idx2 = arg2 + 1;
}
for (i = 0; i != -7; i++) {
sp14[i + 0] = (arg1[arg2][i] + arg1[idx1][i]) / 2;
sp14[i + 3] = (arg1[arg2][i] + arg1[idx2][i - 1]) / 2;
// L800AFEB4
}
sec = arg0 + 1;
third = arg0 + 2;
fourth = arg0 + 3;
for(i = 0; i != 480; i += 3 * sizeof(Vtx)) {
(arg0 + i)->v.cn[0] = sp14[0];
(arg0 + i)->v.cn[1] = sp14[1];
(arg0 + i)->v.cn[2] = sp14[2];
(sec + i)->v.cn[0] = sp14[3];
(sec + i)->v.cn[1] = sp14[4];
(sec + i)->v.cn[2] = sp14[5];
(third + i)->v.cn[0] = sp14[0];
(third + i)->v.cn[1] = sp14[1];
(third + i)->v.cn[2] = sp14[2];
(fourth + i)->v.cn[0] = sp14[3];
(fourth + i)->v.cn[1] = sp14[4];
(fourth + i)->v.cn[2] = sp14[5];
// i += 3 * sizeof(Vtx);
i++;
i--;
for (idx2 = 0; idx2 < 0x1E0; idx2 += 0x30) {
for (i = 0; i < 4; i++) {
vtx = &arg0[i];
vtx[idx2 / 1].v.cn[0] = sp14[i % 2][0];
vtx[idx2 / 1].v.cn[1] = sp14[i % 2][1];
vtx[idx2 / 1].v.cn[2] = sp14[i % 2][2];
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800AFE00.s")
#endif
void func_800AFF58(Vtx *arg0) {
UNUSED u32 pad88[26];
+89 -75
View File
@@ -1411,7 +1411,7 @@ void main_menu_act(struct Controller *controller, u16 arg1) {
}
// L800B3110
if (sp24) {
D_800E86B0[gPlayerCount - 1][gPlayerCount] += 1;
D_800E86B0[gPlayerCount - 1][D_800E86AC[gPlayerCount - 1]]++;
func_800B44AC();
play_sound2(SOUND_MENU_CURSOR_MOVE);
}
@@ -1510,163 +1510,177 @@ bool is_character_spot_free(s32 gridId) {
// grid positions are from right to left, then top to bottom
// nonmatching: the gCharacterGridSelections pointer is not promoted to $s0
void player_select_menu_act(struct Controller *controller, u16 arg1) {
u16 btnAndStick; // sp36
s8 *bar;
s8 selected;
s8 i;
s8 saved_selection;
u16 btnAndStick;
btnAndStick = (controller->buttonPressed) | (controller->stickPressed);
if (!gEnableDebugMode && btnAndStick & START_BUTTON) {
btnAndStick |= A_BUTTON;
if (!gEnableDebugMode && btnAndStick & CONT_START) {
btnAndStick |= CONT_A;
}
if (!func_800B4520()) {
switch (D_8018EDEE) {
case 1:
case 1:
{
if (gCharacterGridSelections[arg1] == 0) {
if (btnAndStick & B_BUTTON) {
saved_selection = gCharacterGridSelections[arg1];
if (saved_selection == 0) {
if (btnAndStick & CONT_B) {
func_8009E208();
play_sound2(SOUND_MENU_GO_BACK);
play_sound2(0x49008002);
}
return;
}
// L800B3630
if (btnAndStick & B_BUTTON) {
if (btnAndStick & CONT_B) {
if (D_8018EDE8[arg1]) {
D_8018EDE8[arg1] = false;
play_sound2(SOUND_MENU_GO_BACK);
} else {
func_8009E208();
play_sound2(SOUND_MENU_GO_BACK);
play_sound2(0x49008002);
}
}
// L800B3684
if ((btnAndStick & A_BUTTON) && !D_8018EDE8[arg1]) {
if ((btnAndStick & A_BUTTON) && (D_8018EDE8[arg1] == 0)) {
D_8018EDE8[arg1] = true;
func_800C90F4(
arg1,
(((uintptr_t)D_800F2BAC[gCharacterGridSelections[arg1] - 1]) << 4) + 0x2900800EU
);
i = D_800F2BAC[gCharacterGridSelections[arg1] - 1];
func_800C90F4(arg1, 0x2900800e + (i << 4));
}
// L800B36F4
selected = false;
for (i = 0; i < ARRAY_COUNT(gCharacterGridSelections); i++) {
if (gCharacterGridSelections[i] && D_8018EDE8[i]) {
for (i = 0; i < 4; i++) { // for (i = 0; i < ARRAY_COUNT(gCharacterGridSelections); i++) {
if ((gCharacterGridSelections[i] != 0) && (D_8018EDE8[i] == 0)) { //(gCharacterGridSelections[i] && D_8018EDE8[i]) {
selected = true;
break;
}
}
// L800B3738
if (!selected) {
D_8018EDEE = 2;
func_800B44AC();
gMenuTimingCounter = 0;
}
// L800B3768
if (D_8018EDE8[arg1]) {
if ((btnAndStick & R_JPAD) && (btnAndStick & D_JPAD)) {
if (gCharacterGridSelections[arg1] == 1 || gCharacterGridSelections[arg1] == 2 || gCharacterGridSelections[arg1] == 3) {
if (D_8018EDE8[arg1] == 0) {
if ((btnAndStick & CONT_RIGHT) && (btnAndStick & CONT_DOWN)) {
if (saved_selection == 1 || saved_selection == 2 || saved_selection == 3) {
// L800B37B0
if (is_character_spot_free(gCharacterGridSelections[arg1] + 5)) {
gCharacterGridSelections[arg1] += 5;
play_sound2(SOUND_MENU_CURSOR_MOVE);
saved_selection += 5;
if (is_character_spot_free(saved_selection)) {
gCharacterGridSelections[arg1] = saved_selection;
play_sound2(0x49008000);
}
}
return;
}
// L800B37E4
if ((btnAndStick & L_JPAD) && (btnAndStick & D_JPAD)) {
if (gCharacterGridSelections[arg1] == 2 || gCharacterGridSelections[arg1] == 3 || gCharacterGridSelections[arg1] == 4) {
if (is_character_spot_free(gCharacterGridSelections[arg1] + 3)) {
gCharacterGridSelections[arg1] += 3;
play_sound2(SOUND_MENU_CURSOR_MOVE);
if ((btnAndStick & CONT_LEFT) && (btnAndStick & CONT_DOWN)) {
if (saved_selection == 2 || saved_selection == 3 || saved_selection == 4) {
saved_selection += 3;
if (is_character_spot_free(saved_selection)) {
gCharacterGridSelections[arg1] = saved_selection;
play_sound2(0x49008000);
}
}
return;
}
// L800B3844
if ((btnAndStick & R_JPAD) && (btnAndStick & U_JPAD)) {
if (gCharacterGridSelections[arg1] == 5 || gCharacterGridSelections[arg1] == 6 || gCharacterGridSelections[arg1] == 7) {
if (is_character_spot_free(gCharacterGridSelections[arg1] - 3)) {
gCharacterGridSelections[arg1] -= 3;
play_sound2(SOUND_MENU_CURSOR_MOVE);
if ((btnAndStick & CONT_RIGHT) && (btnAndStick & CONT_UP)) {
if (saved_selection == 5 || saved_selection == 6 || saved_selection == 7) {
saved_selection -= 3;
if (is_character_spot_free(saved_selection)) {
gCharacterGridSelections[arg1] = saved_selection;
play_sound2(0x49008000);
}
}
return;
}
// L800B38A0
if ((btnAndStick & L_JPAD) && (btnAndStick & U_JPAD)) {
if (gCharacterGridSelections[arg1] == 6 || gCharacterGridSelections[arg1] == 7 || gCharacterGridSelections[arg1] == 8) {
if (is_character_spot_free(gCharacterGridSelections[arg1] - 5)) {
gCharacterGridSelections[arg1] -= 5;
play_sound2(SOUND_MENU_CURSOR_MOVE);
if ((btnAndStick & CONT_LEFT) && (btnAndStick & CONT_UP)) {
if (saved_selection == 6 || saved_selection == 7 || saved_selection == 8) {
saved_selection -= 5;
if (is_character_spot_free(saved_selection)) {
gCharacterGridSelections[arg1] = saved_selection;
play_sound2(0x49008000);
}
}
return;
}
// L800B38FC
if (btnAndStick & R_JPAD) {
if (gCharacterGridSelections[arg1] != 4 && gCharacterGridSelections[arg1] != 8) {
do {
// L800B391C
if (is_character_spot_free(gCharacterGridSelections[arg1] + 1)) {
gCharacterGridSelections[arg1] += 1;
play_sound2(SOUND_MENU_CURSOR_MOVE);
break;
}
gCharacterGridSelections[arg1] += 1;
} while (gCharacterGridSelections[arg1] != 5 && gCharacterGridSelections[arg1] != 9 && gCharacterGridSelections[arg1] <= 10);
}
if (btnAndStick & CONT_RIGHT) {
if (saved_selection == 4 || saved_selection == 8) return;
saved_selection += 1;
do {
// L800B391C
if (is_character_spot_free(saved_selection)) {
gCharacterGridSelections[arg1] = saved_selection;
play_sound2(0x49008000); // play_sound2(0x49008000);
break;
}
saved_selection += 1;
if ((saved_selection == 5) || (saved_selection == 9)) return;
} while (saved_selection < 10);
return;
}
// L800B3978
if (btnAndStick & L_JPAD) {
if (gCharacterGridSelections[arg1] != 1 && gCharacterGridSelections[arg1] != 5) {
do {
if (is_character_spot_free(gCharacterGridSelections[arg1] - 1)) {
gCharacterGridSelections[arg1] -= 1;
play_sound2(SOUND_MENU_CURSOR_MOVE);
break;
}
gCharacterGridSelections[arg1] -= 1;
} while (gCharacterGridSelections[arg1] != 0 && gCharacterGridSelections[arg1] != 4 && gCharacterGridSelections[arg1] >= 0);
}
if (btnAndStick & CONT_LEFT) {
if (saved_selection == 1 || saved_selection == 5) return;
saved_selection -= 1;
do {
if (is_character_spot_free(saved_selection)) {
gCharacterGridSelections[arg1] = saved_selection;
play_sound2(0x49008000);
break;
}
saved_selection -= 1;
if ((saved_selection == 0) || (saved_selection == 4)) return;
} while (saved_selection >= 0);
return;
}
// L800B39F4
if ((btnAndStick & U_JPAD) && (gCharacterGridSelections[arg1] >= 5)) {
gCharacterGridSelections[arg1] -= 4;
if ((btnAndStick & CONT_UP) && (saved_selection >= 5)) {
saved_selection = saved_selection - 4;
}
if ((btnAndStick & D_JPAD) && (gCharacterGridSelections[arg1] < 5)) {
gCharacterGridSelections[arg1] += 4;
if ((btnAndStick & CONT_DOWN) && (saved_selection < 5)) {
saved_selection = saved_selection + 4;
}
// L800B3A30
if (is_character_spot_free(gCharacterGridSelections[arg1])) {
play_sound2(SOUND_MENU_CURSOR_MOVE);
if (is_character_spot_free(saved_selection)) {
gCharacterGridSelections[arg1] = saved_selection;
play_sound2(0x49008000);
}
}
break;
}
case 2:
case 3:
{
if (!arg1 && (++gMenuTimingCounter == 60 || gMenuSelection % 300 == 0)) {
// L800B3A94
play_sound2(SOUND_MENU_OK);
if (arg1 == 0) {
gMenuTimingCounter++;
if ((gMenuTimingCounter == 60) || ((gMenuTimingCounter % 300) == 0)) {
// L800B3A94
play_sound2(0x4900900F);
}
}
// L800B3AA4
if (btnAndStick & B_BUTTON) {
D_8018EDEE = 1;
D_8018EDE8[arg1] = false;
play_sound2(SOUND_MENU_GO_BACK);
} else if (btnAndStick & A_BUTTON) {
break;
}
if (btnAndStick & A_BUTTON) {
func_8009E1C0();
play_sound2(SOUND_MENU_OK_CLICKED);
play_sound2(0x49008016);
func_8000F124();
}
break;
}
default:
break;
}
// L800B3B24
if (gCharacterGridSelections[arg1] != 0) {