Files
SpaghettiKart/asm/non_matchings/code_80005FD0/func_8000BBD8.s
T
Tyler McGavran a8e5c0f212 Match several functions in code_80005FD0 (#230)
Introduce waypoint struct, which code_80005FD0 seems to be
 involved with.

Updated several mips_to_c outputs as well.

Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
2022-07-01 13:14:20 -07:00

115 lines
5.7 KiB
ArmAsm

glabel func_8000BBD8
/* 00C7D8 8000BBD8 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 00C7DC 8000BBDC AFA40028 */ sw $a0, 0x28($sp)
/* 00C7E0 8000BBE0 308EFFFF */ andi $t6, $a0, 0xffff
/* 00C7E4 8000BBE4 25C40001 */ addiu $a0, $t6, 1
/* 00C7E8 8000BBE8 308DFFFF */ andi $t5, $a0, 0xffff
/* 00C7EC 8000BBEC 00067C00 */ sll $t7, $a2, 0x10
/* 00C7F0 8000BBF0 000FC403 */ sra $t8, $t7, 0x10
/* 00C7F4 8000BBF4 000E38C0 */ sll $a3, $t6, 3
/* 00C7F8 8000BBF8 00187040 */ sll $t6, $t8, 1
/* 00C7FC 8000BBFC 3C0F8016 */ lui $t7, %hi(gWaypointCountByPathIndex) # 0x8016
/* 00C800 8000BC00 01EE7821 */ addu $t7, $t7, $t6
/* 00C804 8000BC04 95EF45C8 */ lhu $t7, %lo(gWaypointCountByPathIndex)($t7) # 0x45c8($t7)
/* 00C808 8000BC08 AFA5002C */ sw $a1, 0x2c($sp)
/* 00C80C 8000BC0C 3C058016 */ lui $a1, %hi(D_80164560) # 0x8016
/* 00C810 8000BC10 01AF001A */ div $zero, $t5, $t7
/* 00C814 8000BC14 00181880 */ sll $v1, $t8, 2
/* 00C818 8000BC18 00A32821 */ addu $a1, $a1, $v1
/* 00C81C 8000BC1C 3C098016 */ lui $t1, %hi(D_80164570) # 0x8016
/* 00C820 8000BC20 8CA54560 */ lw $a1, %lo(D_80164560)($a1) # 0x4560($a1)
/* 00C824 8000BC24 01234821 */ addu $t1, $t1, $v1
/* 00C828 8000BC28 8D294570 */ lw $t1, %lo(D_80164570)($t1) # 0x4570($t1)
/* 00C82C 8000BC2C AFA60030 */ sw $a2, 0x30($sp)
/* 00C830 8000BC30 00A71021 */ addu $v0, $a1, $a3
/* 00C834 8000BC34 84590000 */ lh $t9, ($v0)
/* 00C838 8000BC38 01A02025 */ move $a0, $t5
/* 00C83C 8000BC3C 01274021 */ addu $t0, $t1, $a3
/* 00C840 8000BC40 850C0004 */ lh $t4, 4($t0)
/* 00C844 8000BC44 44992000 */ mtc1 $t9, $f4
/* 00C848 8000BC48 844A0004 */ lh $t2, 4($v0)
/* 00C84C 8000BC4C 448C5000 */ mtc1 $t4, $f10
/* 00C850 8000BC50 468023A0 */ cvt.s.w $f14, $f4
/* 00C854 8000BC54 03003025 */ move $a2, $t8
/* 00C858 8000BC58 850B0000 */ lh $t3, ($t0)
/* 00C85C 8000BC5C 448A3000 */ mtc1 $t2, $f6
/* 00C860 8000BC60 46805120 */ cvt.s.w $f4, $f10
/* 00C864 8000BC64 448B4000 */ mtc1 $t3, $f8
/* 00C868 8000BC68 46803420 */ cvt.s.w $f16, $f6
/* 00C86C 8000BC6C E7A40008 */ swc1 $f4, 8($sp)
/* 00C870 8000BC70 468044A0 */ cvt.s.w $f18, $f8
/* 00C874 8000BC74 15E00002 */ bnez $t7, .L8000BC80
/* 00C878 8000BC78 00000000 */ nop
/* 00C87C 8000BC7C 0007000D */ break 7
.L8000BC80:
/* 00C880 8000BC80 2401FFFF */ li $at, -1
/* 00C884 8000BC84 15E10004 */ bne $t7, $at, .L8000BC98
/* 00C888 8000BC88 3C018000 */ li $at, 0x80000000 # -0.000000
/* 00C88C 8000BC8C 14810002 */ bne $a0, $at, .L8000BC98
/* 00C890 8000BC90 00000000 */ nop
/* 00C894 8000BC94 0006000D */ break 6
.L8000BC98:
/* 00C898 8000BC98 00002010 */ mfhi $a0
/* 00C89C 8000BC9C 3098FFFF */ andi $t8, $a0, 0xffff
/* 00C8A0 8000BCA0 001838C0 */ sll $a3, $t8, 3
/* 00C8A4 8000BCA4 00A71021 */ addu $v0, $a1, $a3
/* 00C8A8 8000BCA8 84590000 */ lh $t9, ($v0)
/* 00C8AC 8000BCAC 01274021 */ addu $t0, $t1, $a3
/* 00C8B0 8000BCB0 3C013F00 */ li $at, 0x3F000000 # 0.500000
/* 00C8B4 8000BCB4 44993000 */ mtc1 $t9, $f6
/* 00C8B8 8000BCB8 44811000 */ mtc1 $at, $f2
/* 00C8BC 8000BCBC 03002025 */ move $a0, $t8
/* 00C8C0 8000BCC0 46803220 */ cvt.s.w $f8, $f6
/* 00C8C4 8000BCC4 E7A80014 */ swc1 $f8, 0x14($sp)
/* 00C8C8 8000BCC8 844A0004 */ lh $t2, 4($v0)
/* 00C8CC 8000BCCC 448A5000 */ mtc1 $t2, $f10
/* 00C8D0 8000BCD0 00000000 */ nop
/* 00C8D4 8000BCD4 46805120 */ cvt.s.w $f4, $f10
/* 00C8D8 8000BCD8 E7A40010 */ swc1 $f4, 0x10($sp)
/* 00C8DC 8000BCDC 850B0000 */ lh $t3, ($t0)
/* 00C8E0 8000BCE0 448B3000 */ mtc1 $t3, $f6
/* 00C8E4 8000BCE4 00000000 */ nop
/* 00C8E8 8000BCE8 46803220 */ cvt.s.w $f8, $f6
/* 00C8EC 8000BCEC 44813000 */ mtc1 $at, $f6
/* 00C8F0 8000BCF0 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 00C8F4 8000BCF4 E7A80004 */ swc1 $f8, 4($sp)
/* 00C8F8 8000BCF8 850C0004 */ lh $t4, 4($t0)
/* 00C8FC 8000BCFC C7A8002C */ lwc1 $f8, 0x2c($sp)
/* 00C900 8000BD00 448C5000 */ mtc1 $t4, $f10
/* 00C904 8000BD04 00000000 */ nop
/* 00C908 8000BD08 46805120 */ cvt.s.w $f4, $f10
/* 00C90C 8000BD0C 46024282 */ mul.s $f10, $f8, $f2
/* 00C910 8000BD10 C7A80014 */ lwc1 $f8, 0x14($sp)
/* 00C914 8000BD14 E7A40000 */ swc1 $f4, ($sp)
/* 00C918 8000BD18 44812000 */ mtc1 $at, $f4
/* 00C91C 8000BD1C 460A3001 */ sub.s $f0, $f6, $f10
/* 00C920 8000BD20 3C018016 */ lui $at, %hi(D_80162FA0) # $at, 0x8016
/* 00C924 8000BD24 46087180 */ add.s $f6, $f14, $f8
/* 00C928 8000BD28 C7A80004 */ lwc1 $f8, 4($sp)
/* 00C92C 8000BD2C 46002301 */ sub.s $f12, $f4, $f0
/* 00C930 8000BD30 46003282 */ mul.s $f10, $f6, $f0
/* 00C934 8000BD34 46089180 */ add.s $f6, $f18, $f8
/* 00C938 8000BD38 46025102 */ mul.s $f4, $f10, $f2
/* 00C93C 8000BD3C 00000000 */ nop
/* 00C940 8000BD40 46066282 */ mul.s $f10, $f12, $f6
/* 00C944 8000BD44 00000000 */ nop
/* 00C948 8000BD48 46025202 */ mul.s $f8, $f10, $f2
/* 00C94C 8000BD4C C7AA0008 */ lwc1 $f10, 8($sp)
/* 00C950 8000BD50 46082180 */ add.s $f6, $f4, $f8
/* 00C954 8000BD54 C7A40000 */ lwc1 $f4, ($sp)
/* 00C958 8000BD58 46045200 */ add.s $f8, $f10, $f4
/* 00C95C 8000BD5C E4262FA0 */ swc1 $f6, %lo(D_80162FA0)($at)
/* 00C960 8000BD60 C7A40010 */ lwc1 $f4, 0x10($sp)
/* 00C964 8000BD64 3C018016 */ lui $at, %hi(D_80162FA8)
/* 00C968 8000BD68 46086182 */ mul.s $f6, $f12, $f8
/* 00C96C 8000BD6C 46048200 */ add.s $f8, $f16, $f4
/* 00C970 8000BD70 27BD0028 */ addiu $sp, $sp, 0x28
/* 00C974 8000BD74 46023282 */ mul.s $f10, $f6, $f2
/* 00C978 8000BD78 00000000 */ nop
/* 00C97C 8000BD7C 46004182 */ mul.s $f6, $f8, $f0
/* 00C980 8000BD80 00000000 */ nop
/* 00C984 8000BD84 46023102 */ mul.s $f4, $f6, $f2
/* 00C988 8000BD88 460A2200 */ add.s $f8, $f4, $f10
/* 00C98C 8000BD8C 03E00008 */ jr $ra
/* 00C990 8000BD90 E4282FA8 */ swc1 $f8, %lo(D_80162FA8)($at)