papermario/asm/nonmatchings/code_197F40/CancelablePlayerRunToGoal.s
2020-10-14 23:49:49 -04:00

225 lines
11 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel CancelablePlayerRunToGoal
/* 1A27DC 80273EFC 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 1A27E0 80273F00 AFB30024 */ sw $s3, 0x24($sp)
/* 1A27E4 80273F04 0080982D */ daddu $s3, $a0, $zero
/* 1A27E8 80273F08 AFB40028 */ sw $s4, 0x28($sp)
/* 1A27EC 80273F0C 3C14800E */ lui $s4, %hi(gBattleStatus)
/* 1A27F0 80273F10 2694C070 */ addiu $s4, $s4, %lo(gBattleStatus)
/* 1A27F4 80273F14 AFBF002C */ sw $ra, 0x2c($sp)
/* 1A27F8 80273F18 AFB20020 */ sw $s2, 0x20($sp)
/* 1A27FC 80273F1C AFB1001C */ sw $s1, 0x1c($sp)
/* 1A2800 80273F20 AFB00018 */ sw $s0, 0x18($sp)
/* 1A2804 80273F24 F7BA0048 */ sdc1 $f26, 0x48($sp)
/* 1A2808 80273F28 F7B80040 */ sdc1 $f24, 0x40($sp)
/* 1A280C 80273F2C F7B60038 */ sdc1 $f22, 0x38($sp)
/* 1A2810 80273F30 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 1A2814 80273F34 8E9000D8 */ lw $s0, 0xd8($s4)
/* 1A2818 80273F38 8E71000C */ lw $s1, 0xc($s3)
/* 1A281C 80273F3C 10A00002 */ beqz $a1, .L80273F48
/* 1A2820 80273F40 2612000C */ addiu $s2, $s0, 0xc
/* 1A2824 80273F44 AE600070 */ sw $zero, 0x70($s3)
.L80273F48:
/* 1A2828 80273F48 8E620070 */ lw $v0, 0x70($s3)
/* 1A282C 80273F4C 14400046 */ bnez $v0, .L80274068
/* 1A2830 80273F50 00000000 */ nop
/* 1A2834 80273F54 8E250000 */ lw $a1, ($s1)
/* 1A2838 80273F58 26310004 */ addiu $s1, $s1, 4
/* 1A283C 80273F5C 0C0B1EAF */ jal get_variable
/* 1A2840 80273F60 0260202D */ daddu $a0, $s3, $zero
/* 1A2844 80273F64 A6020070 */ sh $v0, 0x70($s0)
/* 1A2848 80273F68 8E220000 */ lw $v0, ($s1)
/* 1A284C 80273F6C AE620074 */ sw $v0, 0x74($s3)
/* 1A2850 80273F70 C6180018 */ lwc1 $f24, 0x18($s0)
/* 1A2854 80273F74 C61A0020 */ lwc1 $f26, 0x20($s0)
/* 1A2858 80273F78 C6000144 */ lwc1 $f0, 0x144($s0)
/* 1A285C 80273F7C C614014C */ lwc1 $f20, 0x14c($s0)
/* 1A2860 80273F80 4406C000 */ mfc1 $a2, $f24
/* 1A2864 80273F84 4407D000 */ mfc1 $a3, $f26
/* 1A2868 80273F88 E600000C */ swc1 $f0, 0xc($s0)
/* 1A286C 80273F8C C6000148 */ lwc1 $f0, 0x148($s0)
/* 1A2870 80273F90 C616000C */ lwc1 $f22, 0xc($s0)
/* 1A2874 80273F94 4600A386 */ mov.s $f14, $f20
/* 1A2878 80273F98 E6140014 */ swc1 $f20, 0x14($s0)
/* 1A287C 80273F9C 4600B306 */ mov.s $f12, $f22
/* 1A2880 80273FA0 0C00A720 */ jal atan2
/* 1A2884 80273FA4 E6000010 */ swc1 $f0, 0x10($s0)
/* 1A2888 80273FA8 4600B306 */ mov.s $f12, $f22
/* 1A288C 80273FAC 4406C000 */ mfc1 $a2, $f24
/* 1A2890 80273FB0 4407D000 */ mfc1 $a3, $f26
/* 1A2894 80273FB4 4600A386 */ mov.s $f14, $f20
/* 1A2898 80273FB8 0C00A7B5 */ jal dist2D
/* 1A289C 80273FBC E6000054 */ swc1 $f0, 0x54($s0)
/* 1A28A0 80273FC0 86020070 */ lh $v0, 0x70($s0)
/* 1A28A4 80273FC4 46000086 */ mov.s $f2, $f0
/* 1A28A8 80273FC8 14400015 */ bnez $v0, .L80274020
/* 1A28AC 80273FCC E6020058 */ swc1 $f2, 0x58($s0)
/* 1A28B0 80273FD0 C600004C */ lwc1 $f0, 0x4c($s0)
/* 1A28B4 80273FD4 46001003 */ div.s $f0, $f2, $f0
/* 1A28B8 80273FD8 4600020D */ trunc.w.s $f8, $f0
/* 1A28BC 80273FDC 44034000 */ mfc1 $v1, $f8
/* 1A28C0 80273FE0 00000000 */ nop
/* 1A28C4 80273FE4 00031400 */ sll $v0, $v1, 0x10
/* 1A28C8 80273FE8 00021403 */ sra $v0, $v0, 0x10
/* 1A28CC 80273FEC C602004C */ lwc1 $f2, 0x4c($s0)
/* 1A28D0 80273FF0 44823000 */ mtc1 $v0, $f6
/* 1A28D4 80273FF4 00000000 */ nop
/* 1A28D8 80273FF8 468031A0 */ cvt.s.w $f6, $f6
/* 1A28DC 80273FFC 46023102 */ mul.s $f4, $f6, $f2
/* 1A28E0 80274000 00000000 */ nop
/* 1A28E4 80274004 C6000058 */ lwc1 $f0, 0x58($s0)
/* 1A28E8 80274008 46040001 */ sub.s $f0, $f0, $f4
/* 1A28EC 8027400C 46060003 */ div.s $f0, $f0, $f6
/* 1A28F0 80274010 46001080 */ add.s $f2, $f2, $f0
/* 1A28F4 80274014 A6030070 */ sh $v1, 0x70($s0)
/* 1A28F8 80274018 0809D00D */ j .L80274034
/* 1A28FC 8027401C E602004C */ swc1 $f2, 0x4c($s0)
.L80274020:
/* 1A2900 80274020 44820000 */ mtc1 $v0, $f0
/* 1A2904 80274024 00000000 */ nop
/* 1A2908 80274028 46800020 */ cvt.s.w $f0, $f0
/* 1A290C 8027402C 46001003 */ div.s $f0, $f2, $f0
/* 1A2910 80274030 E600004C */ swc1 $f0, 0x4c($s0)
.L80274034:
/* 1A2914 80274034 860201B4 */ lh $v0, 0x1b4($s0)
/* 1A2918 80274038 86430064 */ lh $v1, 0x64($s2)
/* 1A291C 8027403C 24420001 */ addiu $v0, $v0, 1
/* 1A2920 80274040 44820000 */ mtc1 $v0, $f0
/* 1A2924 80274044 00000000 */ nop
/* 1A2928 80274048 46800020 */ cvt.s.w $f0, $f0
/* 1A292C 8027404C E640004C */ swc1 $f0, 0x4c($s2)
/* 1A2930 80274050 1060006C */ beqz $v1, .L80274204
/* 1A2934 80274054 24020002 */ addiu $v0, $zero, 2
/* 1A2938 80274058 24020001 */ addiu $v0, $zero, 1
/* 1A293C 8027405C AE600078 */ sw $zero, 0x78($s3)
/* 1A2940 80274060 AE60007C */ sw $zero, 0x7c($s3)
/* 1A2944 80274064 AE620070 */ sw $v0, 0x70($s3)
.L80274068:
/* 1A2948 80274068 8E450040 */ lw $a1, 0x40($s2)
/* 1A294C 8027406C 8E460048 */ lw $a2, 0x48($s2)
/* 1A2950 80274070 0C09904A */ jal add_xz_vec3f
/* 1A2954 80274074 0240202D */ daddu $a0, $s2, $zero
/* 1A2958 80274078 C6400000 */ lwc1 $f0, ($s2)
/* 1A295C 8027407C E6000144 */ swc1 $f0, 0x144($s0)
/* 1A2960 80274080 C6400004 */ lwc1 $f0, 4($s2)
/* 1A2964 80274084 E6000148 */ swc1 $f0, 0x148($s0)
/* 1A2968 80274088 C6400008 */ lwc1 $f0, 8($s2)
/* 1A296C 8027408C E600014C */ swc1 $f0, 0x14c($s0)
/* 1A2970 80274090 C6420040 */ lwc1 $f2, 0x40($s2)
/* 1A2974 80274094 3C014080 */ lui $at, 0x4080
/* 1A2978 80274098 44810000 */ mtc1 $at, $f0
/* 1A297C 8027409C 00000000 */ nop
/* 1A2980 802740A0 4600103C */ c.lt.s $f2, $f0
/* 1A2984 802740A4 00000000 */ nop
/* 1A2988 802740A8 45000007 */ bc1f .L802740C8
/* 1A298C 802740AC 0000202D */ daddu $a0, $zero, $zero
/* 1A2990 802740B0 C600018C */ lwc1 $f0, 0x18c($s0)
/* 1A2994 802740B4 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A2998 802740B8 8E050144 */ lw $a1, 0x144($s0)
/* 1A299C 802740BC 8E060148 */ lw $a2, 0x148($s0)
/* 1A29A0 802740C0 0809D038 */ j .L802740E0
/* 1A29A4 802740C4 8E07014C */ lw $a3, 0x14c($s0)
.L802740C8:
/* 1A29A8 802740C8 C600018C */ lwc1 $f0, 0x18c($s0)
/* 1A29AC 802740CC E7A00010 */ swc1 $f0, 0x10($sp)
/* 1A29B0 802740D0 8E050144 */ lw $a1, 0x144($s0)
/* 1A29B4 802740D4 8E060148 */ lw $a2, 0x148($s0)
/* 1A29B8 802740D8 8E07014C */ lw $a3, 0x14c($s0)
/* 1A29BC 802740DC 24040001 */ addiu $a0, $zero, 1
.L802740E0:
/* 1A29C0 802740E0 0C0990BC */ jal play_movement_dust_effects
/* 1A29C4 802740E4 00000000 */ nop
/* 1A29C8 802740E8 C642004C */ lwc1 $f2, 0x4c($s2)
/* 1A29CC 802740EC C6400040 */ lwc1 $f0, 0x40($s2)
/* 1A29D0 802740F0 46001080 */ add.s $f2, $f2, $f0
/* 1A29D4 802740F4 E642004C */ swc1 $f2, 0x4c($s2)
/* 1A29D8 802740F8 860201B4 */ lh $v0, 0x1b4($s0)
/* 1A29DC 802740FC 44820000 */ mtc1 $v0, $f0
/* 1A29E0 80274100 00000000 */ nop
/* 1A29E4 80274104 46800020 */ cvt.s.w $f0, $f0
/* 1A29E8 80274108 4602003C */ c.lt.s $f0, $f2
/* 1A29EC 8027410C 00000000 */ nop
/* 1A29F0 80274110 45000013 */ bc1f .L80274160
/* 1A29F4 80274114 00000000 */ nop
/* 1A29F8 80274118 92020135 */ lbu $v0, 0x135($s0)
/* 1A29FC 8027411C 24420001 */ addiu $v0, $v0, 1
/* 1A2A00 80274120 A2020135 */ sb $v0, 0x135($s0)
/* 1A2A04 80274124 AE40004C */ sw $zero, 0x4c($s2)
/* 1A2A08 80274128 92020135 */ lbu $v0, 0x135($s0)
/* 1A2A0C 8027412C 30420001 */ andi $v0, $v0, 1
/* 1A2A10 80274130 10400004 */ beqz $v0, .L80274144
/* 1A2A14 80274134 24040141 */ addiu $a0, $zero, 0x141
/* 1A2A18 80274138 C600014C */ lwc1 $f0, 0x14c($s0)
/* 1A2A1C 8027413C 0809D054 */ j .L80274150
/* 1A2A20 80274140 E7A00010 */ swc1 $f0, 0x10($sp)
.L80274144:
/* 1A2A24 80274144 C600014C */ lwc1 $f0, 0x14c($s0)
/* 1A2A28 80274148 24040142 */ addiu $a0, $zero, 0x142
/* 1A2A2C 8027414C E7A00010 */ swc1 $f0, 0x10($sp)
.L80274150:
/* 1A2A30 80274150 8E060144 */ lw $a2, 0x144($s0)
/* 1A2A34 80274154 8E070148 */ lw $a3, 0x148($s0)
/* 1A2A38 80274158 0C052757 */ jal play_sound_at_position
/* 1A2A3C 8027415C 0000282D */ daddu $a1, $zero, $zero
.L80274160:
/* 1A2A40 80274160 8E62007C */ lw $v0, 0x7c($s3)
/* 1A2A44 80274164 2842000D */ slti $v0, $v0, 0xd
/* 1A2A48 80274168 14400013 */ bnez $v0, .L802741B8
/* 1A2A4C 8027416C 00000000 */ nop
/* 1A2A50 80274170 8E620078 */ lw $v0, 0x78($s3)
/* 1A2A54 80274174 14400009 */ bnez $v0, .L8027419C
/* 1A2A58 80274178 00000000 */ nop
/* 1A2A5C 8027417C 8E820210 */ lw $v0, 0x210($s4)
/* 1A2A60 80274180 30428000 */ andi $v0, $v0, 0x8000
/* 1A2A64 80274184 14400002 */ bnez $v0, .L80274190
/* 1A2A68 80274188 24020001 */ addiu $v0, $zero, 1
/* 1A2A6C 8027418C AE620078 */ sw $v0, 0x78($s3)
.L80274190:
/* 1A2A70 80274190 8E620078 */ lw $v0, 0x78($s3)
/* 1A2A74 80274194 10400008 */ beqz $v0, .L802741B8
/* 1A2A78 80274198 00000000 */ nop
.L8027419C:
/* 1A2A7C 8027419C 8E820214 */ lw $v0, 0x214($s4)
/* 1A2A80 802741A0 30428000 */ andi $v0, $v0, 0x8000
/* 1A2A84 802741A4 10400004 */ beqz $v0, .L802741B8
/* 1A2A88 802741A8 0260202D */ daddu $a0, $s3, $zero
/* 1A2A8C 802741AC 8C850074 */ lw $a1, 0x74($a0)
/* 1A2A90 802741B0 0809D07E */ j .L802741F8
/* 1A2A94 802741B4 24060001 */ addiu $a2, $zero, 1
.L802741B8:
/* 1A2A98 802741B8 8E62007C */ lw $v0, 0x7c($s3)
/* 1A2A9C 802741BC 24420001 */ addiu $v0, $v0, 1
/* 1A2AA0 802741C0 AE62007C */ sw $v0, 0x7c($s3)
/* 1A2AA4 802741C4 96420064 */ lhu $v0, 0x64($s2)
/* 1A2AA8 802741C8 2442FFFF */ addiu $v0, $v0, -1
/* 1A2AAC 802741CC A6420064 */ sh $v0, 0x64($s2)
/* 1A2AB0 802741D0 00021400 */ sll $v0, $v0, 0x10
/* 1A2AB4 802741D4 1C40000B */ bgtz $v0, .L80274204
/* 1A2AB8 802741D8 0000102D */ daddu $v0, $zero, $zero
/* 1A2ABC 802741DC C640000C */ lwc1 $f0, 0xc($s2)
/* 1A2AC0 802741E0 E6000144 */ swc1 $f0, 0x144($s0)
/* 1A2AC4 802741E4 C6400014 */ lwc1 $f0, 0x14($s2)
/* 1A2AC8 802741E8 0260202D */ daddu $a0, $s3, $zero
/* 1A2ACC 802741EC E600014C */ swc1 $f0, 0x14c($s0)
/* 1A2AD0 802741F0 8C850074 */ lw $a1, 0x74($a0)
/* 1A2AD4 802741F4 0000302D */ daddu $a2, $zero, $zero
.L802741F8:
/* 1A2AD8 802741F8 0C0B2026 */ jal set_variable
/* 1A2ADC 802741FC 00000000 */ nop
/* 1A2AE0 80274200 24020002 */ addiu $v0, $zero, 2
.L80274204:
/* 1A2AE4 80274204 8FBF002C */ lw $ra, 0x2c($sp)
/* 1A2AE8 80274208 8FB40028 */ lw $s4, 0x28($sp)
/* 1A2AEC 8027420C 8FB30024 */ lw $s3, 0x24($sp)
/* 1A2AF0 80274210 8FB20020 */ lw $s2, 0x20($sp)
/* 1A2AF4 80274214 8FB1001C */ lw $s1, 0x1c($sp)
/* 1A2AF8 80274218 8FB00018 */ lw $s0, 0x18($sp)
/* 1A2AFC 8027421C D7BA0048 */ ldc1 $f26, 0x48($sp)
/* 1A2B00 80274220 D7B80040 */ ldc1 $f24, 0x40($sp)
/* 1A2B04 80274224 D7B60038 */ ldc1 $f22, 0x38($sp)
/* 1A2B08 80274228 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 1A2B0C 8027422C 03E00008 */ jr $ra
/* 1A2B10 80274230 27BD0050 */ addiu $sp, $sp, 0x50