oot/asm/non_matchings/code/z_camera/Camera_Special5.s

303 lines
14 KiB
ArmAsm

.late_rodata
glabel D_8013A390
.float 0.01
glabel D_8013A394
.float 0.01
glabel D_8013A398
.float 182.04167
glabel D_8013A39C
.float 0.01
glabel D_8013A3A0
.float 2730.0
glabel D_8013A3A4
.float 2730.0
glabel D_8013A3A8
.float 0.01
.text
glabel Camera_Special5
/* ACD998 800567F8 27BDFF38 */ addiu $sp, $sp, -0xc8
/* ACD99C 800567FC AFB00018 */ sw $s0, 0x18($sp)
/* ACD9A0 80056800 00808025 */ move $s0, $a0
/* ACD9A4 80056804 AFBF001C */ sw $ra, 0x1c($sp)
/* ACD9A8 80056808 0C00B721 */ jal Player_GetCameraYOffset
/* ACD9AC 8005680C 8C840090 */ lw $a0, 0x90($a0)
/* ACD9B0 80056810 8603015E */ lh $v1, 0x15e($s0)
/* ACD9B4 80056814 10600008 */ beqz $v1, .L80056838
/* ACD9B8 80056818 2401000A */ li $at, 10
/* ACD9BC 8005681C 10610006 */ beq $v1, $at, .L80056838
/* ACD9C0 80056820 24010014 */ li $at, 20
/* ACD9C4 80056824 10610004 */ beq $v1, $at, .L80056838
/* ACD9C8 80056828 3C0E8016 */ lui $t6, %hi(gGameInfo) # $t6, 0x8016
/* ACD9CC 8005682C 8DCEFA90 */ lw $t6, %lo(gGameInfo)($t6)
/* ACD9D0 80056830 85C30314 */ lh $v1, 0x314($t6)
/* ACD9D4 80056834 10600050 */ beqz $v1, .L80056978
.L80056838:
/* ACD9D8 80056838 3C0B8016 */ lui $t3, %hi(gGameInfo) # $t3, 0x8016
/* ACD9DC 8005683C 8D6BFA90 */ lw $t3, %lo(gGameInfo)($t3)
/* ACD9E0 80056840 3C018014 */ lui $at, %hi(D_8013A390)
/* ACD9E4 80056844 C428A390 */ lwc1 $f8, %lo(D_8013A390)($at)
/* ACD9E8 80056848 856C01F0 */ lh $t4, 0x1f0($t3)
/* ACD9EC 8005684C 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* ACD9F0 80056850 44815000 */ mtc1 $at, $f10
/* ACD9F4 80056854 448C2000 */ mtc1 $t4, $f4
/* ACD9F8 80056858 3C014288 */ li $at, 0x42880000 # 0.000000
/* ACD9FC 8005685C 44819000 */ mtc1 $at, $f18
/* ACDA00 80056860 468021A0 */ cvt.s.w $f6, $f4
/* ACDA04 80056864 860F0142 */ lh $t7, 0x142($s0)
/* ACDA08 80056868 3C198012 */ lui $t9, %hi(sCameraSettings)
/* ACDA0C 8005686C 86080144 */ lh $t0, 0x144($s0)
/* ACDA10 80056870 000FC0C0 */ sll $t8, $t7, 3
/* ACDA14 80056874 46009103 */ div.s $f4, $f18, $f0
/* ACDA18 80056878 0338C821 */ addu $t9, $t9, $t8
/* ACDA1C 8005687C 8F39D068 */ lw $t9, %lo(sCameraSettings+4)($t9)
/* ACDA20 80056880 000848C0 */ sll $t1, $t0, 3
/* ACDA24 80056884 46083082 */ mul.s $f2, $f6, $f8
/* ACDA28 80056888 03295021 */ addu $t2, $t9, $t1
/* ACDA2C 8005688C 8D420004 */ lw $v0, 4($t2)
/* ACDA30 80056890 3C018014 */ lui $at, %hi(D_8013A394)
/* ACDA34 80056894 C432A394 */ lwc1 $f18, %lo(D_8013A394)($at)
/* ACDA38 80056898 844D0000 */ lh $t5, ($v0)
/* ACDA3C 8005689C 3C018014 */ lui $at, %hi(D_8013A398)
/* ACDA40 800568A0 2442001C */ addiu $v0, $v0, 0x1c
/* ACDA44 800568A4 448D4000 */ mtc1 $t5, $f8
/* ACDA48 800568A8 3C0D8016 */ lui $t5, %hi(gGameInfo)
/* ACDA4C 800568AC 46025400 */ add.s $f16, $f10, $f2
/* ACDA50 800568B0 46041182 */ mul.s $f6, $f2, $f4
/* ACDA54 800568B4 468042A0 */ cvt.s.w $f10, $f8
/* ACDA58 800568B8 46068301 */ sub.s $f12, $f16, $f6
/* ACDA5C 800568BC 46125102 */ mul.s $f4, $f10, $f18
/* ACDA60 800568C0 00000000 */ nop
/* ACDA64 800568C4 46002402 */ mul.s $f16, $f4, $f0
/* ACDA68 800568C8 00000000 */ nop
/* ACDA6C 800568CC 460C8182 */ mul.s $f6, $f16, $f12
/* ACDA70 800568D0 E6060000 */ swc1 $f6, ($s0)
/* ACDA74 800568D4 844EFFE8 */ lh $t6, -0x18($v0)
/* ACDA78 800568D8 448E4000 */ mtc1 $t6, $f8
/* ACDA7C 800568DC 00000000 */ nop
/* ACDA80 800568E0 468042A0 */ cvt.s.w $f10, $f8
/* ACDA84 800568E4 E60A0004 */ swc1 $f10, 4($s0)
/* ACDA88 800568E8 844FFFEC */ lh $t7, -0x14($v0)
/* ACDA8C 800568EC 448F9000 */ mtc1 $t7, $f18
/* ACDA90 800568F0 00000000 */ nop
/* ACDA94 800568F4 46809120 */ cvt.s.w $f4, $f18
/* ACDA98 800568F8 E6040008 */ swc1 $f4, 8($s0)
/* ACDA9C 800568FC 8458FFF0 */ lh $t8, -0x10($v0)
/* ACDAA0 80056900 A6180014 */ sh $t8, 0x14($s0)
/* ACDAA4 80056904 8448FFF4 */ lh $t0, -0xc($v0)
/* ACDAA8 80056908 C428A398 */ lwc1 $f8, %lo(D_8013A398)($at)
/* ACDAAC 8005690C 3C013F00 */ li $at, 0x3F000000 # 0.000000
/* ACDAB0 80056910 44888000 */ mtc1 $t0, $f16
/* ACDAB4 80056914 44819000 */ mtc1 $at, $f18
/* ACDAB8 80056918 3C018014 */ lui $at, %hi(D_8013A39C)
/* ACDABC 8005691C 468081A0 */ cvt.s.w $f6, $f16
/* ACDAC0 80056920 46083282 */ mul.s $f10, $f6, $f8
/* ACDAC4 80056924 46125100 */ add.s $f4, $f10, $f18
/* ACDAC8 80056928 4600240D */ trunc.w.s $f16, $f4
/* ACDACC 8005692C 44098000 */ mfc1 $t1, $f16
/* ACDAD0 80056930 00000000 */ nop
/* ACDAD4 80056934 A6090016 */ sh $t1, 0x16($s0)
/* ACDAD8 80056938 844AFFF8 */ lh $t2, -8($v0)
/* ACDADC 8005693C 448A3000 */ mtc1 $t2, $f6
/* ACDAE0 80056940 00000000 */ nop
/* ACDAE4 80056944 46803220 */ cvt.s.w $f8, $f6
/* ACDAE8 80056948 E608000C */ swc1 $f8, 0xc($s0)
/* ACDAEC 8005694C 844BFFFC */ lh $t3, -4($v0)
/* ACDAF0 80056950 C424A39C */ lwc1 $f4, %lo(D_8013A39C)($at)
/* ACDAF4 80056954 448B5000 */ mtc1 $t3, $f10
/* ACDAF8 80056958 00000000 */ nop
/* ACDAFC 8005695C 468054A0 */ cvt.s.w $f18, $f10
/* ACDB00 80056960 46049402 */ mul.s $f16, $f18, $f4
/* ACDB04 80056964 E6100010 */ swc1 $f16, 0x10($s0)
/* ACDB08 80056968 844C0000 */ lh $t4, ($v0)
/* ACDB0C 8005696C A60C0018 */ sh $t4, 0x18($s0)
/* ACDB10 80056970 8DADFA90 */ lw $t5, %lo(gGameInfo)($t5)
/* ACDB14 80056974 85A30314 */ lh $v1, 0x314($t5)
.L80056978:
/* ACDB18 80056978 50600004 */ beql $v1, $zero, .L8005698C
/* ACDB1C 8005697C 26050050 */ addiu $a1, $s0, 0x50
/* ACDB20 80056980 0C011495 */ jal Camera_CopyPREGToModeValues
/* ACDB24 80056984 02002025 */ move $a0, $s0
/* ACDB28 80056988 26050050 */ addiu $a1, $s0, 0x50
.L8005698C:
/* ACDB2C 8005698C 2606005C */ addiu $a2, $s0, 0x5c
/* ACDB30 80056990 AFA60038 */ sw $a2, 0x38($sp)
/* ACDB34 80056994 AFA50034 */ sw $a1, 0x34($sp)
/* ACDB38 80056998 0C01F124 */ jal OLib_Vec3fDiffToVecSphRot90
/* ACDB3C 8005699C 27A40064 */ addiu $a0, $sp, 0x64
/* ACDB40 800569A0 26060074 */ addiu $a2, $s0, 0x74
/* ACDB44 800569A4 AFA60030 */ sw $a2, 0x30($sp)
/* ACDB48 800569A8 27A4005C */ addiu $a0, $sp, 0x5c
/* ACDB4C 800569AC 0C01F124 */ jal OLib_Vec3fDiffToVecSphRot90
/* ACDB50 800569B0 8FA50034 */ lw $a1, 0x34($sp)
/* ACDB54 800569B4 27A400A8 */ addiu $a0, $sp, 0xa8
/* ACDB58 800569B8 0C00BBC5 */ jal func_8002EF14
/* ACDB5C 800569BC 8E0500A8 */ lw $a1, 0xa8($s0)
/* ACDB60 800569C0 860E0018 */ lh $t6, 0x18($s0)
/* ACDB64 800569C4 3C018012 */ lui $at, %hi(D_8011D3A0) # $at, 0x8012
/* ACDB68 800569C8 2606001C */ addiu $a2, $s0, 0x1c
/* ACDB6C 800569CC AC2ED3A0 */ sw $t6, %lo(D_8011D3A0)($at)
/* ACDB70 800569D0 8603015E */ lh $v1, 0x15e($s0)
/* ACDB74 800569D4 54600006 */ bnezl $v1, .L800569F0
/* ACDB78 800569D8 84C20000 */ lh $v0, ($a2)
/* ACDB7C 800569DC 86180014 */ lh $t8, 0x14($s0)
/* ACDB80 800569E0 246F0001 */ addiu $t7, $v1, 1
/* ACDB84 800569E4 A60F015E */ sh $t7, 0x15e($s0)
/* ACDB88 800569E8 A618001C */ sh $t8, 0x1c($s0)
/* ACDB8C 800569EC 84C20000 */ lh $v0, ($a2)
.L800569F0:
/* ACDB90 800569F0 18400003 */ blez $v0, .L80056A00
/* ACDB94 800569F4 2448FFFF */ addiu $t0, $v0, -1
/* ACDB98 800569F8 10000062 */ b .L80056B84
/* ACDB9C 800569FC A4C80000 */ sh $t0, ($a2)
.L80056A00:
/* ACDBA0 80056A00 54400061 */ bnezl $v0, .L80056B88
/* ACDBA4 80056A04 02002025 */ move $a0, $s0
/* ACDBA8 80056A08 8E0300A8 */ lw $v1, 0xa8($s0)
/* ACDBAC 80056A0C 50600007 */ beql $v1, $zero, .L80056A2C
/* ACDBB0 80056A10 AE0000A8 */ sw $zero, 0xa8($s0)
/* ACDBB4 80056A14 8C790130 */ lw $t9, 0x130($v1)
/* ACDBB8 80056A18 2449FFFF */ addiu $t1, $v0, -1
/* ACDBBC 80056A1C 27A400A8 */ addiu $a0, $sp, 0xa8
/* ACDBC0 80056A20 17200004 */ bnez $t9, .L80056A34
/* ACDBC4 80056A24 26050094 */ addiu $a1, $s0, 0x94
/* ACDBC8 80056A28 AE0000A8 */ sw $zero, 0xa8($s0)
.L80056A2C:
/* ACDBCC 80056A2C 10000077 */ b .L80056C0C
/* ACDBD0 80056A30 24020001 */ li $v0, 1
.L80056A34:
/* ACDBD4 80056A34 A4C90000 */ sh $t1, ($a2)
/* ACDBD8 80056A38 0C01EFE4 */ jal OLib_Vec3fDist
/* ACDBDC 80056A3C AFA5002C */ sw $a1, 0x2c($sp)
/* ACDBE0 80056A40 C6060008 */ lwc1 $f6, 8($s0)
/* ACDBE4 80056A44 8FA2002C */ lw $v0, 0x2c($sp)
/* ACDBE8 80056A48 3C0141A0 */ li $at, 0x41A00000 # 0.000000
/* ACDBEC 80056A4C 4600303C */ c.lt.s $f6, $f0
/* ACDBF0 80056A50 27A4007C */ addiu $a0, $sp, 0x7c
/* ACDBF4 80056A54 4502004C */ bc1fl .L80056B88
/* ACDBF8 80056A58 02002025 */ move $a0, $s0
/* ACDBFC 80056A5C 844A000E */ lh $t2, 0xe($v0)
/* ACDC00 80056A60 44814000 */ mtc1 $at, $f8
/* ACDC04 80056A64 27A500A8 */ addiu $a1, $sp, 0xa8
/* ACDC08 80056A68 A7AA0072 */ sh $t2, 0x72($sp)
/* ACDC0C 80056A6C 844B000C */ lh $t3, 0xc($v0)
/* ACDC10 80056A70 27A6006C */ addiu $a2, $sp, 0x6c
/* ACDC14 80056A74 E7A8006C */ swc1 $f8, 0x6c($sp)
/* ACDC18 80056A78 000B6023 */ negu $t4, $t3
/* ACDC1C 80056A7C 0C010F0A */ jal func_80043C28
/* ACDC20 80056A80 A7AC0070 */ sh $t4, 0x70($sp)
/* ACDC24 80056A84 02002025 */ move $a0, $s0
/* ACDC28 80056A88 8FA50034 */ lw $a1, 0x34($sp)
/* ACDC2C 80056A8C 0C010F46 */ jal func_80043D18
/* ACDC30 80056A90 27A6007C */ addiu $a2, $sp, 0x7c
/* ACDC34 80056A94 27A4006C */ addiu $a0, $sp, 0x6c
/* ACDC38 80056A98 0C01F0FD */ jal OLib_Vec3fToVecSphRot90
/* ACDC3C 80056A9C 27A50088 */ addiu $a1, $sp, 0x88
/* ACDC40 80056AA0 8FAD002C */ lw $t5, 0x2c($sp)
/* ACDC44 80056AA4 87AF0072 */ lh $t7, 0x72($sp)
/* ACDC48 80056AA8 85AE000E */ lh $t6, 0xe($t5)
/* ACDC4C 80056AAC 01CFC023 */ subu $t8, $t6, $t7
/* ACDC50 80056AB0 A7B800A4 */ sh $t8, 0xa4($sp)
/* ACDC54 80056AB4 C60A0004 */ lwc1 $f10, 4($s0)
/* ACDC58 80056AB8 0C03F66B */ jal Math_Rand_ZeroOne
/* ACDC5C 80056ABC E7AA0074 */ swc1 $f10, 0x74($sp)
/* ACDC60 80056AC0 87A800A4 */ lh $t0, 0xa4($sp)
/* ACDC64 80056AC4 8FAC002C */ lw $t4, 0x2c($sp)
/* ACDC68 80056AC8 3C018014 */ lui $at, %hi(D_8013A3A4)
/* ACDC6C 80056ACC 0501000E */ bgez $t0, .L80056B08
/* ACDC70 80056AD0 00000000 */ nop
/* ACDC74 80056AD4 3C018014 */ lui $at, %hi(D_8013A3A0)
/* ACDC78 80056AD8 C432A3A0 */ lwc1 $f18, %lo(D_8013A3A0)($at)
/* ACDC7C 80056ADC 46120102 */ mul.s $f4, $f0, $f18
/* ACDC80 80056AE0 4600240D */ trunc.w.s $f16, $f4
/* ACDC84 80056AE4 44028000 */ mfc1 $v0, $f16
/* ACDC88 80056AE8 00000000 */ nop
/* ACDC8C 80056AEC 00021400 */ sll $v0, $v0, 0x10
/* ACDC90 80056AF0 00021403 */ sra $v0, $v0, 0x10
/* ACDC94 80056AF4 24421553 */ addiu $v0, $v0, 0x1553
/* ACDC98 80056AF8 00021400 */ sll $v0, $v0, 0x10
/* ACDC9C 80056AFC 00021403 */ sra $v0, $v0, 0x10
/* ACDCA0 80056B00 1000000B */ b .L80056B30
/* ACDCA4 80056B04 00021023 */ negu $v0, $v0
.L80056B08:
/* ACDCA8 80056B08 C426A3A4 */ lwc1 $f6, %lo(D_8013A3A4)($at)
/* ACDCAC 80056B0C 46060202 */ mul.s $f8, $f0, $f6
/* ACDCB0 80056B10 4600428D */ trunc.w.s $f10, $f8
/* ACDCB4 80056B14 44025000 */ mfc1 $v0, $f10
/* ACDCB8 80056B18 00000000 */ nop
/* ACDCBC 80056B1C 00021400 */ sll $v0, $v0, 0x10
/* ACDCC0 80056B20 00021403 */ sra $v0, $v0, 0x10
/* ACDCC4 80056B24 24421553 */ addiu $v0, $v0, 0x1553
/* ACDCC8 80056B28 00021400 */ sll $v0, $v0, 0x10
/* ACDCCC 80056B2C 00021403 */ sra $v0, $v0, 0x10
.L80056B30:
/* ACDCD0 80056B30 858D000E */ lh $t5, 0xe($t4)
/* ACDCD4 80056B34 8FA40030 */ lw $a0, 0x30($sp)
/* ACDCD8 80056B38 27A500A8 */ addiu $a1, $sp, 0xa8
/* ACDCDC 80056B3C 25B88001 */ addiu $t8, $t5, -0x7fff
/* ACDCE0 80056B40 00584021 */ addu $t0, $v0, $t8
/* ACDCE4 80056B44 A7A8007A */ sh $t0, 0x7a($sp)
/* ACDCE8 80056B48 86190016 */ lh $t9, 0x16($s0)
/* ACDCEC 80056B4C 27A60074 */ addiu $a2, $sp, 0x74
/* ACDCF0 80056B50 0C010F0A */ jal func_80043C28
/* ACDCF4 80056B54 A7B90078 */ sh $t9, 0x78($sp)
/* ACDCF8 80056B58 8FA90030 */ lw $t1, 0x30($sp)
/* ACDCFC 80056B5C 8FA60038 */ lw $a2, 0x38($sp)
/* ACDD00 80056B60 02002025 */ move $a0, $s0
/* ACDD04 80056B64 8D2C0000 */ lw $t4, ($t1)
/* ACDD08 80056B68 27A500A8 */ addiu $a1, $sp, 0xa8
/* ACDD0C 80056B6C ACCC0000 */ sw $t4, ($a2)
/* ACDD10 80056B70 8D2A0004 */ lw $t2, 4($t1)
/* ACDD14 80056B74 ACCA0004 */ sw $t2, 4($a2)
/* ACDD18 80056B78 8D2C0008 */ lw $t4, 8($t1)
/* ACDD1C 80056B7C 0C010FCD */ jal func_80043F34
/* ACDD20 80056B80 ACCC0008 */ sw $t4, 8($a2)
.L80056B84:
/* ACDD24 80056B84 02002025 */ move $a0, $s0
.L80056B88:
/* ACDD28 80056B88 27A5005C */ addiu $a1, $sp, 0x5c
/* ACDD2C 80056B8C 8E060000 */ lw $a2, ($s0)
/* ACDD30 80056B90 0C0115EA */ jal func_800457A8
/* ACDD34 80056B94 00003825 */ move $a3, $zero
/* ACDD38 80056B98 3C0D8016 */ lui $t5, %hi(gGameInfo) # $t5, 0x8016
/* ACDD3C 80056B9C 8DADFA90 */ lw $t5, %lo(gGameInfo)($t5)
/* ACDD40 80056BA0 3C018014 */ lui $at, %hi(D_8013A3A8)
/* ACDD44 80056BA4 C430A3A8 */ lwc1 $f16, %lo(D_8013A3A8)($at)
/* ACDD48 80056BA8 85AE019C */ lh $t6, 0x19c($t5)
/* ACDD4C 80056BAC C6080100 */ lwc1 $f8, 0x100($s0)
/* ACDD50 80056BB0 C60C000C */ lwc1 $f12, 0xc($s0)
/* ACDD54 80056BB4 448E9000 */ mtc1 $t6, $f18
/* ACDD58 80056BB8 C60E00FC */ lwc1 $f14, 0xfc($s0)
/* ACDD5C 80056BBC 3C073F80 */ lui $a3, 0x3f80
/* ACDD60 80056BC0 46809120 */ cvt.s.w $f4, $f18
/* ACDD64 80056BC4 46102182 */ mul.s $f6, $f4, $f16
/* ACDD68 80056BC8 00000000 */ nop
/* ACDD6C 80056BCC 46083282 */ mul.s $f10, $f6, $f8
/* ACDD70 80056BD0 44065000 */ mfc1 $a2, $f10
/* ACDD74 80056BD4 0C010E27 */ jal func_8004389C
/* ACDD78 80056BD8 00000000 */ nop
/* ACDD7C 80056BDC E60000FC */ swc1 $f0, 0xfc($s0)
/* ACDD80 80056BE0 00002025 */ move $a0, $zero
/* ACDD84 80056BE4 8605015A */ lh $a1, 0x15a($s0)
/* ACDD88 80056BE8 3C063F00 */ lui $a2, 0x3f00
/* ACDD8C 80056BEC 0C010E47 */ jal func_8004391C
/* ACDD90 80056BF0 2407000A */ li $a3, 10
/* ACDD94 80056BF4 A602015A */ sh $v0, 0x15a($s0)
/* ACDD98 80056BF8 02002025 */ move $a0, $s0
/* ACDD9C 80056BFC 0C011429 */ jal func_800450A4
/* ACDDA0 80056C00 8E050010 */ lw $a1, 0x10($s0)
/* ACDDA4 80056C04 E6000100 */ swc1 $f0, 0x100($s0)
/* ACDDA8 80056C08 24020001 */ li $v0, 1
.L80056C0C:
/* ACDDAC 80056C0C 8FBF001C */ lw $ra, 0x1c($sp)
/* ACDDB0 80056C10 8FB00018 */ lw $s0, 0x18($sp)
/* ACDDB4 80056C14 27BD00C8 */ addiu $sp, $sp, 0xc8
/* ACDDB8 80056C18 03E00008 */ jr $ra
/* ACDDBC 80056C1C 00000000 */ nop