papermario/asm/nonmatchings/code_E28A30/func_802B609C_E28ACC.s
Ethan Roseman 20a99f4037 OK
2021-02-03 15:40:16 +09:00

187 lines
9.5 KiB
ArmAsm
Generated

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B609C_E28ACC
/* E28ACC 802B609C 27BDFF90 */ addiu $sp, $sp, -0x70
/* E28AD0 802B60A0 AFB20058 */ sw $s2, 0x58($sp)
/* E28AD4 802B60A4 3C128011 */ lui $s2, %hi(gPlayerStatus)
/* E28AD8 802B60A8 2652EFC8 */ addiu $s2, $s2, %lo(gPlayerStatus)
/* E28ADC 802B60AC AFBF005C */ sw $ra, 0x5c($sp)
/* E28AE0 802B60B0 AFB10054 */ sw $s1, 0x54($sp)
/* E28AE4 802B60B4 AFB00050 */ sw $s0, 0x50($sp)
/* E28AE8 802B60B8 F7B60068 */ sdc1 $f22, 0x68($sp)
/* E28AEC 802B60BC F7B40060 */ sdc1 $f20, 0x60($sp)
/* E28AF0 802B60C0 8E430000 */ lw $v1, ($s2)
/* E28AF4 802B60C4 0461000E */ bgez $v1, .L802B6100
/* E28AF8 802B60C8 3C027FF7 */ lui $v0, 0x7ff7
/* E28AFC 802B60CC 3442FFF1 */ ori $v0, $v0, 0xfff1
/* E28B00 802B60D0 3C018011 */ lui $at, %hi(D_8010C938)
/* E28B04 802B60D4 C420C938 */ lwc1 $f0, %lo(D_8010C938)($at)
/* E28B08 802B60D8 00621024 */ and $v0, $v1, $v0
/* E28B0C 802B60DC AE420000 */ sw $v0, ($s2)
/* E28B10 802B60E0 A24000B6 */ sb $zero, 0xb6($s2)
/* E28B14 802B60E4 A6400008 */ sh $zero, 8($s2)
/* E28B18 802B60E8 A64000C0 */ sh $zero, 0xc0($s2)
/* E28B1C 802B60EC A64000C2 */ sh $zero, 0xc2($s2)
/* E28B20 802B60F0 AE400054 */ sw $zero, 0x54($s2)
/* E28B24 802B60F4 AE40008C */ sw $zero, 0x8c($s2)
/* E28B28 802B60F8 3C01802B */ lui $at, %hi(D_802B6770_E27C80)
/* E28B2C 802B60FC E4206770 */ swc1 $f0, %lo(D_802B6770_E27C80)($at)
.L802B6100:
/* E28B30 802B6100 824300B6 */ lb $v1, 0xb6($s2)
/* E28B34 802B6104 924200B6 */ lbu $v0, 0xb6($s2)
/* E28B38 802B6108 10600006 */ beqz $v1, .L802B6124
/* E28B3C 802B610C 24420001 */ addiu $v0, $v0, 1
/* E28B40 802B6110 24020001 */ addiu $v0, $zero, 1
/* E28B44 802B6114 10620004 */ beq $v1, $v0, .L802B6128
/* E28B48 802B6118 00000000 */ nop
/* E28B4C 802B611C 080AD8CC */ j .L802B6330
/* E28B50 802B6120 00000000 */ nop
.L802B6124:
/* E28B54 802B6124 A24200B6 */ sb $v0, 0xb6($s2)
.L802B6128:
/* E28B58 802B6128 3C018011 */ lui $at, %hi(D_8010C990)
/* E28B5C 802B612C C42CC990 */ lwc1 $f12, %lo(D_8010C990)($at)
/* E28B60 802B6130 3C0140C9 */ lui $at, 0x40c9
/* E28B64 802B6134 34210FD0 */ ori $at, $at, 0xfd0
/* E28B68 802B6138 4481A000 */ mtc1 $at, $f20
/* E28B6C 802B613C 27B10028 */ addiu $s1, $sp, 0x28
/* E28B70 802B6140 46146302 */ mul.s $f12, $f12, $f20
/* E28B74 802B6144 00000000 */ nop
/* E28B78 802B6148 0220282D */ daddu $a1, $s1, $zero
/* E28B7C 802B614C 27B0002C */ addiu $s0, $sp, 0x2c
/* E28B80 802B6150 3C0143B4 */ lui $at, 0x43b4
/* E28B84 802B6154 4481B000 */ mtc1 $at, $f22
/* E28B88 802B6158 0200302D */ daddu $a2, $s0, $zero
/* E28B8C 802B615C 0C00A82D */ jal sin_cos_rad
/* E28B90 802B6160 46166303 */ div.s $f12, $f12, $f22
/* E28B94 802B6164 3C01802B */ lui $at, %hi(D_802B6770_E27C80)
/* E28B98 802B6168 C42C6770 */ lwc1 $f12, %lo(D_802B6770_E27C80)($at)
/* E28B9C 802B616C 46146302 */ mul.s $f12, $f12, $f20
/* E28BA0 802B6170 00000000 */ nop
/* E28BA4 802B6174 0220282D */ daddu $a1, $s1, $zero
/* E28BA8 802B6178 C7A00028 */ lwc1 $f0, 0x28($sp)
/* E28BAC 802B617C 3C014040 */ lui $at, 0x4040
/* E28BB0 802B6180 4481A000 */ mtc1 $at, $f20
/* E28BB4 802B6184 0200302D */ daddu $a2, $s0, $zero
/* E28BB8 802B6188 46140502 */ mul.s $f20, $f0, $f20
/* E28BBC 802B618C 00000000 */ nop
/* E28BC0 802B6190 0C00A82D */ jal sin_cos_rad
/* E28BC4 802B6194 46166303 */ div.s $f12, $f12, $f22
/* E28BC8 802B6198 C7A00028 */ lwc1 $f0, 0x28($sp)
/* E28BCC 802B619C 46140102 */ mul.s $f4, $f0, $f20
/* E28BD0 802B61A0 00000000 */ nop
/* E28BD4 802B61A4 C7A0002C */ lwc1 $f0, 0x2c($sp)
/* E28BD8 802B61A8 46140182 */ mul.s $f6, $f0, $f20
/* E28BDC 802B61AC 00000000 */ nop
/* E28BE0 802B61B0 3C01802B */ lui $at, %hi(D_802B6760_E29190)
/* E28BE4 802B61B4 D4226760 */ ldc1 $f2, %lo(D_802B6760_E29190)($at)
/* E28BE8 802B61B8 46002021 */ cvt.d.s $f0, $f4
/* E28BEC 802B61BC 46200005 */ abs.d $f0, $f0
/* E28BF0 802B61C0 4622003C */ c.lt.d $f0, $f2
/* E28BF4 802B61C4 00000000 */ nop
/* E28BF8 802B61C8 45020011 */ bc1fl .L802B6210
/* E28BFC 802B61CC 46003021 */ cvt.d.s $f0, $f6
/* E28C00 802B61D0 44800000 */ mtc1 $zero, $f0
/* E28C04 802B61D4 3C013DCC */ lui $at, 0x3dcc
/* E28C08 802B61D8 3421CCCD */ ori $at, $at, 0xcccd
/* E28C0C 802B61DC 44811000 */ mtc1 $at, $f2
/* E28C10 802B61E0 4600203C */ c.lt.s $f4, $f0
/* E28C14 802B61E4 00000000 */ nop
/* E28C18 802B61E8 45000006 */ bc1f .L802B6204
/* E28C1C 802B61EC 46001106 */ mov.s $f4, $f2
/* E28C20 802B61F0 3C01BDCC */ lui $at, 0xbdcc
/* E28C24 802B61F4 3421CCCD */ ori $at, $at, 0xcccd
/* E28C28 802B61F8 44811000 */ mtc1 $at, $f2
/* E28C2C 802B61FC 00000000 */ nop
/* E28C30 802B6200 46001106 */ mov.s $f4, $f2
.L802B6204:
/* E28C34 802B6204 46003021 */ cvt.d.s $f0, $f6
/* E28C38 802B6208 3C01802B */ lui $at, %hi(D_802B6768_E29198)
/* E28C3C 802B620C D4226768 */ ldc1 $f2, %lo(D_802B6768_E29198)($at)
.L802B6210:
/* E28C40 802B6210 46200005 */ abs.d $f0, $f0
/* E28C44 802B6214 4622003C */ c.lt.d $f0, $f2
/* E28C48 802B6218 00000000 */ nop
/* E28C4C 802B621C 4500000F */ bc1f .L802B625C
/* E28C50 802B6220 0240202D */ daddu $a0, $s2, $zero
/* E28C54 802B6224 44800000 */ mtc1 $zero, $f0
/* E28C58 802B6228 3C013DCC */ lui $at, 0x3dcc
/* E28C5C 802B622C 3421CCCD */ ori $at, $at, 0xcccd
/* E28C60 802B6230 44811000 */ mtc1 $at, $f2
/* E28C64 802B6234 4600303C */ c.lt.s $f6, $f0
/* E28C68 802B6238 00000000 */ nop
/* E28C6C 802B623C 45000007 */ bc1f .L802B625C
/* E28C70 802B6240 46001186 */ mov.s $f6, $f2
/* E28C74 802B6244 3C01BDCC */ lui $at, 0xbdcc
/* E28C78 802B6248 3421CCCD */ ori $at, $at, 0xcccd
/* E28C7C 802B624C 44811000 */ mtc1 $at, $f2
/* E28C80 802B6250 00000000 */ nop
/* E28C84 802B6254 46001186 */ mov.s $f6, $f2
/* E28C88 802B6258 0240202D */ daddu $a0, $s2, $zero
.L802B625C:
/* E28C8C 802B625C 27A50030 */ addiu $a1, $sp, 0x30
/* E28C90 802B6260 C6420028 */ lwc1 $f2, 0x28($s2)
/* E28C94 802B6264 27A60034 */ addiu $a2, $sp, 0x34
/* E28C98 802B6268 46041080 */ add.s $f2, $f2, $f4
/* E28C9C 802B626C C6400030 */ lwc1 $f0, 0x30($s2)
/* E28CA0 802B6270 27A2003C */ addiu $v0, $sp, 0x3c
/* E28CA4 802B6274 46060001 */ sub.s $f0, $f0, $f6
/* E28CA8 802B6278 E6420028 */ swc1 $f2, 0x28($s2)
/* E28CAC 802B627C 46001186 */ mov.s $f6, $f2
/* E28CB0 802B6280 E6400030 */ swc1 $f0, 0x30($s2)
/* E28CB4 802B6284 46000106 */ mov.s $f4, $f0
/* E28CB8 802B6288 C642002C */ lwc1 $f2, 0x2c($s2)
/* E28CBC 802B628C 3C0140A0 */ lui $at, 0x40a0
/* E28CC0 802B6290 44810000 */ mtc1 $at, $f0
/* E28CC4 802B6294 27A70038 */ addiu $a3, $sp, 0x38
/* E28CC8 802B6298 E7A60030 */ swc1 $f6, 0x30($sp)
/* E28CCC 802B629C E7A40038 */ swc1 $f4, 0x38($sp)
/* E28CD0 802B62A0 E7A20034 */ swc1 $f2, 0x34($sp)
/* E28CD4 802B62A4 E7A0003C */ swc1 $f0, 0x3c($sp)
/* E28CD8 802B62A8 AFA20010 */ sw $v0, 0x10($sp)
/* E28CDC 802B62AC 27A20040 */ addiu $v0, $sp, 0x40
/* E28CE0 802B62B0 AFA20014 */ sw $v0, 0x14($sp)
/* E28CE4 802B62B4 27A20044 */ addiu $v0, $sp, 0x44
/* E28CE8 802B62B8 AFA20018 */ sw $v0, 0x18($sp)
/* E28CEC 802B62BC 27A20048 */ addiu $v0, $sp, 0x48
/* E28CF0 802B62C0 AFA2001C */ sw $v0, 0x1c($sp)
/* E28CF4 802B62C4 27A2004C */ addiu $v0, $sp, 0x4c
/* E28CF8 802B62C8 0C03791B */ jal func_800DE46C
/* E28CFC 802B62CC AFA20020 */ sw $v0, 0x20($sp)
/* E28D00 802B62D0 04400003 */ bltz $v0, .L802B62E0
/* E28D04 802B62D4 00000000 */ nop
/* E28D08 802B62D8 C7A00034 */ lwc1 $f0, 0x34($sp)
/* E28D0C 802B62DC E640002C */ swc1 $f0, 0x2c($s2)
.L802B62E0:
/* E28D10 802B62E0 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* E28D14 802B62E4 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* E28D18 802B62E8 3C014270 */ lui $at, 0x4270
/* E28D1C 802B62EC 4481A000 */ mtc1 $at, $f20
/* E28D20 802B62F0 84430086 */ lh $v1, 0x86($v0)
/* E28D24 802B62F4 2402000A */ addiu $v0, $zero, 0xa
/* E28D28 802B62F8 14620003 */ bne $v1, $v0, .L802B6308
/* E28D2C 802B62FC 00000000 */ nop
/* E28D30 802B6300 3C0141F0 */ lui $at, 0x41f0
/* E28D34 802B6304 4481A000 */ mtc1 $at, $f20
.L802B6308:
/* E28D38 802B6308 3C018011 */ lui $at, %hi(D_8010C990)
/* E28D3C 802B630C C420C990 */ lwc1 $f0, %lo(D_8010C990)($at)
/* E28D40 802B6310 4614003C */ c.lt.s $f0, $f20
/* E28D44 802B6314 00000000 */ nop
/* E28D48 802B6318 45000005 */ bc1f .L802B6330
/* E28D4C 802B631C 00000000 */ nop
/* E28D50 802B6320 0C039769 */ jal set_action_state
/* E28D54 802B6324 24040008 */ addiu $a0, $zero, 8
/* E28D58 802B6328 0C038C1B */ jal gravity_use_fall_parms
/* E28D5C 802B632C 00000000 */ nop
.L802B6330:
/* E28D60 802B6330 8FBF005C */ lw $ra, 0x5c($sp)
/* E28D64 802B6334 8FB20058 */ lw $s2, 0x58($sp)
/* E28D68 802B6338 8FB10054 */ lw $s1, 0x54($sp)
/* E28D6C 802B633C 8FB00050 */ lw $s0, 0x50($sp)
/* E28D70 802B6340 D7B60068 */ ldc1 $f22, 0x68($sp)
/* E28D74 802B6344 D7B40060 */ ldc1 $f20, 0x60($sp)
/* E28D78 802B6348 03E00008 */ jr $ra
/* E28D7C 802B634C 27BD0070 */ addiu $sp, $sp, 0x70