mirror of https://github.com/zeldaret/oot.git
162 lines
7.4 KiB
ArmAsm
162 lines
7.4 KiB
ArmAsm
.late_rodata
|
|
glabel D_80139DE4
|
|
.float 0.017453292 # pi / 180
|
|
|
|
glabel D_80139DE8
|
|
.float 0.01
|
|
|
|
glabel D_80139DEC
|
|
.float 0.1
|
|
|
|
glabel D_80139DF0
|
|
.float 0.2
|
|
|
|
.text
|
|
glabel func_800458D4
|
|
/* ABCA74 800458D4 27BDFF90 */ addiu $sp, $sp, -0x70
|
|
/* ABCA78 800458D8 AFB0001C */ sw $s0, 0x1c($sp)
|
|
/* ABCA7C 800458DC 00808025 */ move $s0, $a0
|
|
/* ABCA80 800458E0 AFBF0024 */ sw $ra, 0x24($sp)
|
|
/* ABCA84 800458E4 AFB10020 */ sw $s1, 0x20($sp)
|
|
/* ABCA88 800458E8 AFA60078 */ sw $a2, 0x78($sp)
|
|
/* ABCA8C 800458EC AFA7007C */ sw $a3, 0x7c($sp)
|
|
/* ABCA90 800458F0 00A08825 */ move $s1, $a1
|
|
/* ABCA94 800458F4 0C00B721 */ jal func_8002DC84
|
|
/* ABCA98 800458F8 8C840090 */ lw $a0, 0x90($a0)
|
|
/* ABCA9C 800458FC C7A40078 */ lwc1 $f4, 0x78($sp)
|
|
/* ABCAA0 80045900 44801000 */ mtc1 $zero, $f2
|
|
/* ABCAA4 80045904 87AE0082 */ lh $t6, 0x82($sp)
|
|
/* ABCAA8 80045908 46040180 */ add.s $f6, $f0, $f4
|
|
/* ABCAAC 8004590C E7A20060 */ swc1 $f2, 0x60($sp)
|
|
/* ABCAB0 80045910 E7A20068 */ swc1 $f2, 0x68($sp)
|
|
/* ABCAB4 80045914 11C00010 */ beqz $t6, .L80045958
|
|
/* ABCAB8 80045918 E7A60064 */ swc1 $f6, 0x64($sp)
|
|
/* ABCABC 8004591C 3C0F8016 */ lui $t7, %hi(gGameInfo) # $t7, 0x8016
|
|
/* ABCAC0 80045920 8DEFFA90 */ lw $t7, %lo(gGameInfo)($t7)
|
|
/* ABCAC4 80045924 26040108 */ addiu $a0, $s0, 0x108
|
|
/* ABCAC8 80045928 860500A2 */ lh $a1, 0xa2($s0)
|
|
/* ABCACC 8004592C 85F801A6 */ lh $t8, 0x1a6($t7)
|
|
/* ABCAD0 80045930 86260006 */ lh $a2, 6($s1)
|
|
/* ABCAD4 80045934 44984000 */ mtc1 $t8, $f8
|
|
/* ABCAD8 80045938 00000000 */ nop
|
|
/* ABCADC 8004593C 46804220 */ cvt.s.w $f8, $f8
|
|
/* ABCAE0 80045940 44074000 */ mfc1 $a3, $f8
|
|
/* ABCAE4 80045944 0C0115C5 */ jal func_80045714
|
|
/* ABCAE8 80045948 00000000 */ nop
|
|
/* ABCAEC 8004594C C7AA0064 */ lwc1 $f10, 0x64($sp)
|
|
/* ABCAF0 80045950 46005401 */ sub.s $f16, $f10, $f0
|
|
/* ABCAF4 80045954 E7B00064 */ swc1 $f16, 0x64($sp)
|
|
.L80045958:
|
|
/* ABCAF8 80045958 8FB9007C */ lw $t9, 0x7c($sp)
|
|
/* ABCAFC 8004595C 26110094 */ addiu $s1, $s0, 0x94
|
|
/* ABCB00 80045960 C6320004 */ lwc1 $f18, 4($s1)
|
|
/* ABCB04 80045964 C7240000 */ lwc1 $f4, ($t9)
|
|
/* ABCB08 80045968 26040050 */ addiu $a0, $s0, 0x50
|
|
/* ABCB0C 8004596C AFA40030 */ sw $a0, 0x30($sp)
|
|
/* ABCB10 80045970 46049181 */ sub.s $f6, $f18, $f4
|
|
/* ABCB14 80045974 2605005C */ addiu $a1, $s0, 0x5c
|
|
/* ABCB18 80045978 0C01F00A */ jal func_8007C028
|
|
/* ABCB1C 8004597C E7A60048 */ swc1 $f6, 0x48($sp)
|
|
/* ABCB20 80045980 C7AC0048 */ lwc1 $f12, 0x48($sp)
|
|
/* ABCB24 80045984 0C03F494 */ jal Math_atan2f
|
|
/* ABCB28 80045988 46000386 */ mov.s $f14, $f0
|
|
/* ABCB2C 8004598C 3C028016 */ lui $v0, %hi(gGameInfo) # $v0, 0x8016
|
|
/* ABCB30 80045990 8C42FA90 */ lw $v0, %lo(gGameInfo)($v0)
|
|
/* ABCB34 80045994 3C018014 */ lui $at, %hi(D_80139DE4)
|
|
/* ABCB38 80045998 C42C9DE4 */ lwc1 $f12, %lo(D_80139DE4)($at)
|
|
/* ABCB3C 8004599C 844801D4 */ lh $t0, 0x1d4($v0)
|
|
/* ABCB40 800459A0 46000386 */ mov.s $f14, $f0
|
|
/* ABCB44 800459A4 44884000 */ mtc1 $t0, $f8
|
|
/* ABCB48 800459A8 00000000 */ nop
|
|
/* ABCB4C 800459AC 468042A0 */ cvt.s.w $f10, $f8
|
|
/* ABCB50 800459B0 460C5082 */ mul.s $f2, $f10, $f12
|
|
/* ABCB54 800459B4 4600103C */ c.lt.s $f2, $f0
|
|
/* ABCB58 800459B8 00000000 */ nop
|
|
/* ABCB5C 800459BC 4502000A */ bc1fl .L800459E8
|
|
/* ABCB60 800459C0 844901D6 */ lh $t1, 0x1d6($v0)
|
|
/* ABCB64 800459C4 0C0400A4 */ jal sinf
|
|
/* ABCB68 800459C8 46027301 */ sub.s $f12, $f14, $f2
|
|
/* ABCB6C 800459CC 3C013F80 */ li $at, 0x3F800000 # 0.000000
|
|
/* ABCB70 800459D0 44818000 */ mtc1 $at, $f16
|
|
/* ABCB74 800459D4 3C028016 */ lui $v0, %hi(gGameInfo)
|
|
/* ABCB78 800459D8 8C42FA90 */ lw $v0, %lo(gGameInfo)($v0)
|
|
/* ABCB7C 800459DC 10000015 */ b .L80045A34
|
|
/* ABCB80 800459E0 46008081 */ sub.s $f2, $f16, $f0
|
|
/* ABCB84 800459E4 844901D6 */ lh $t1, 0x1d6($v0)
|
|
.L800459E8:
|
|
/* ABCB88 800459E8 3C013F80 */ li $at, 0x3F800000 # 0.000000
|
|
/* ABCB8C 800459EC 44899000 */ mtc1 $t1, $f18
|
|
/* ABCB90 800459F0 00000000 */ nop
|
|
/* ABCB94 800459F4 46809120 */ cvt.s.w $f4, $f18
|
|
/* ABCB98 800459F8 460C2082 */ mul.s $f2, $f4, $f12
|
|
/* ABCB9C 800459FC 4602003C */ c.lt.s $f0, $f2
|
|
/* ABCBA0 80045A00 00000000 */ nop
|
|
/* ABCBA4 80045A04 4502000A */ bc1fl .L80045A30
|
|
/* ABCBA8 80045A08 44811000 */ mtc1 $at, $f2
|
|
/* ABCBAC 80045A0C 0C0400A4 */ jal sinf
|
|
/* ABCBB0 80045A10 460E1301 */ sub.s $f12, $f2, $f14
|
|
/* ABCBB4 80045A14 3C013F80 */ li $at, 0x3F800000 # 0.000000
|
|
/* ABCBB8 80045A18 44813000 */ mtc1 $at, $f6
|
|
/* ABCBBC 80045A1C 3C028016 */ lui $v0, %hi(gGameInfo)
|
|
/* ABCBC0 80045A20 8C42FA90 */ lw $v0, %lo(gGameInfo)($v0)
|
|
/* ABCBC4 80045A24 10000003 */ b .L80045A34
|
|
/* ABCBC8 80045A28 46003081 */ sub.s $f2, $f6, $f0
|
|
/* ABCBCC 80045A2C 44811000 */ mtc1 $at, $f2
|
|
.L80045A30:
|
|
/* ABCBD0 80045A30 00000000 */ nop
|
|
.L80045A34:
|
|
/* ABCBD4 80045A34 C7AA0048 */ lwc1 $f10, 0x48($sp)
|
|
/* ABCBD8 80045A38 C7A80064 */ lwc1 $f8, 0x64($sp)
|
|
/* ABCBDC 80045A3C 3C018014 */ lui $at, %hi(D_80139DE8)
|
|
/* ABCBE0 80045A40 46025402 */ mul.s $f16, $f10, $f2
|
|
/* ABCBE4 80045A44 C4209DE8 */ lwc1 $f0, %lo(D_80139DE8)($at)
|
|
/* ABCBE8 80045A48 3C018014 */ lui $at, %hi(D_80139DEC)
|
|
/* ABCBEC 80045A4C 27A40060 */ addiu $a0, $sp, 0x60
|
|
/* ABCBF0 80045A50 260500E4 */ addiu $a1, $s0, 0xe4
|
|
/* ABCBF4 80045A54 46104481 */ sub.s $f18, $f8, $f16
|
|
/* ABCBF8 80045A58 E7B20064 */ swc1 $f18, 0x64($sp)
|
|
/* ABCBFC 80045A5C 844A01CE */ lh $t2, 0x1ce($v0)
|
|
/* ABCC00 80045A60 844B01D0 */ lh $t3, 0x1d0($v0)
|
|
/* ABCC04 80045A64 448A2000 */ mtc1 $t2, $f4
|
|
/* ABCC08 80045A68 448B4000 */ mtc1 $t3, $f8
|
|
/* ABCC0C 80045A6C 468021A0 */ cvt.s.w $f6, $f4
|
|
/* ABCC10 80045A70 C4249DEC */ lwc1 $f4, %lo(D_80139DEC)($at)
|
|
/* ABCC14 80045A74 E7A40010 */ swc1 $f4, 0x10($sp)
|
|
/* ABCC18 80045A78 46804420 */ cvt.s.w $f16, $f8
|
|
/* ABCC1C 80045A7C 46003282 */ mul.s $f10, $f6, $f0
|
|
/* ABCC20 80045A80 00000000 */ nop
|
|
/* ABCC24 80045A84 46008482 */ mul.s $f18, $f16, $f0
|
|
/* ABCC28 80045A88 44065000 */ mfc1 $a2, $f10
|
|
/* ABCC2C 80045A8C 44079000 */ mfc1 $a3, $f18
|
|
/* ABCC30 80045A90 0C010E8F */ jal func_80043A3C
|
|
/* ABCC34 80045A94 00000000 */ nop
|
|
/* ABCC38 80045A98 C6260000 */ lwc1 $f6, ($s1)
|
|
/* ABCC3C 80045A9C C60A00E4 */ lwc1 $f10, 0xe4($s0)
|
|
/* ABCC40 80045AA0 3C018014 */ lui $at, %hi(D_80139DF0)
|
|
/* ABCC44 80045AA4 27A40054 */ addiu $a0, $sp, 0x54
|
|
/* ABCC48 80045AA8 460A3200 */ add.s $f8, $f6, $f10
|
|
/* ABCC4C 80045AAC 8FA50030 */ lw $a1, 0x30($sp)
|
|
/* ABCC50 80045AB0 E7A80054 */ swc1 $f8, 0x54($sp)
|
|
/* ABCC54 80045AB4 C61200E8 */ lwc1 $f18, 0xe8($s0)
|
|
/* ABCC58 80045AB8 C6300004 */ lwc1 $f16, 4($s1)
|
|
/* ABCC5C 80045ABC 46128100 */ add.s $f4, $f16, $f18
|
|
/* ABCC60 80045AC0 C4309DF0 */ lwc1 $f16, %lo(D_80139DF0)($at)
|
|
/* ABCC64 80045AC4 E7A40058 */ swc1 $f4, 0x58($sp)
|
|
/* ABCC68 80045AC8 C60A00EC */ lwc1 $f10, 0xec($s0)
|
|
/* ABCC6C 80045ACC C6260008 */ lwc1 $f6, 8($s1)
|
|
/* ABCC70 80045AD0 460A3200 */ add.s $f8, $f6, $f10
|
|
/* ABCC74 80045AD4 E7A8005C */ swc1 $f8, 0x5c($sp)
|
|
/* ABCC78 80045AD8 C6000100 */ lwc1 $f0, 0x100($s0)
|
|
/* ABCC7C 80045ADC E7B00010 */ swc1 $f16, 0x10($sp)
|
|
/* ABCC80 80045AE0 44060000 */ mfc1 $a2, $f0
|
|
/* ABCC84 80045AE4 44070000 */ mfc1 $a3, $f0
|
|
/* ABCC88 80045AE8 0C010E8F */ jal func_80043A3C
|
|
/* ABCC8C 80045AEC 00000000 */ nop
|
|
/* ABCC90 80045AF0 8FBF0024 */ lw $ra, 0x24($sp)
|
|
/* ABCC94 80045AF4 8FB0001C */ lw $s0, 0x1c($sp)
|
|
/* ABCC98 80045AF8 8FB10020 */ lw $s1, 0x20($sp)
|
|
/* ABCC9C 80045AFC 27BD0070 */ addiu $sp, $sp, 0x70
|
|
/* ABCCA0 80045B00 03E00008 */ jr $ra
|
|
/* ABCCA4 80045B04 24020001 */ li $v0, 1
|
|
|