mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-08-02 00:34:42 -04:00
@@ -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
@@ -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
@@ -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
@@ -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")
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user