mirror of
https://github.com/pmret/papermario.git
synced 2024-11-18 17:02:46 +01:00
93 lines
4.6 KiB
ArmAsm
93 lines
4.6 KiB
ArmAsm
.set noat # allow manual use of $at
|
|
.set noreorder # don't insert nops after branches
|
|
|
|
glabel func_800F09EC
|
|
/* 89E9C 800F09EC 27BDFFE0 */ addiu $sp, $sp, -0x20
|
|
/* 89EA0 800F09F0 AFB00018 */ sw $s0, 0x18($sp)
|
|
/* 89EA4 800F09F4 3C108011 */ lui $s0, %hi(gPlayerStatus)
|
|
/* 89EA8 800F09F8 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
|
|
/* 89EAC 800F09FC AFBF001C */ sw $ra, 0x1c($sp)
|
|
/* 89EB0 800F0A00 920400B4 */ lbu $a0, 0xb4($s0)
|
|
/* 89EB4 800F0A04 2482FFFF */ addiu $v0, $a0, -1
|
|
/* 89EB8 800F0A08 2C420002 */ sltiu $v0, $v0, 2
|
|
/* 89EBC 800F0A0C 14400013 */ bnez $v0, .L800F0A5C
|
|
/* 89EC0 800F0A10 3C02FF00 */ lui $v0, 0xff00
|
|
/* 89EC4 800F0A14 8E0300B4 */ lw $v1, 0xb4($s0)
|
|
/* 89EC8 800F0A18 3442FF00 */ ori $v0, $v0, 0xff00
|
|
/* 89ECC 800F0A1C 00621824 */ and $v1, $v1, $v0
|
|
/* 89ED0 800F0A20 3C021A00 */ lui $v0, 0x1a00
|
|
/* 89ED4 800F0A24 1062000D */ beq $v1, $v0, .L800F0A5C
|
|
/* 89ED8 800F0A28 00041600 */ sll $v0, $a0, 0x18
|
|
/* 89EDC 800F0A2C 00021E03 */ sra $v1, $v0, 0x18
|
|
/* 89EE0 800F0A30 2402000A */ addiu $v0, $zero, 0xa
|
|
/* 89EE4 800F0A34 10620003 */ beq $v1, $v0, .L800F0A44
|
|
/* 89EE8 800F0A38 00000000 */ nop
|
|
/* 89EEC 800F0A3C 14600004 */ bnez $v1, .L800F0A50
|
|
/* 89EF0 800F0A40 24020004 */ addiu $v0, $zero, 4
|
|
.L800F0A44:
|
|
/* 89EF4 800F0A44 8E020000 */ lw $v0, ($s0)
|
|
/* 89EF8 800F0A48 04400004 */ bltz $v0, .L800F0A5C
|
|
/* 89EFC 800F0A4C 24020004 */ addiu $v0, $zero, 4
|
|
.L800F0A50:
|
|
/* 89F00 800F0A50 3C018011 */ lui $at, %hi(D_801094AC)
|
|
/* 89F04 800F0A54 0803C2CB */ j .L800F0B2C
|
|
/* 89F08 800F0A58 A42294AC */ sh $v0, %lo(D_801094AC)($at)
|
|
.L800F0A5C:
|
|
/* 89F0C 800F0A5C 3C048011 */ lui $a0, %hi(D_801094AC)
|
|
/* 89F10 800F0A60 248494AC */ addiu $a0, $a0, %lo(D_801094AC)
|
|
/* 89F14 800F0A64 94820000 */ lhu $v0, ($a0)
|
|
/* 89F18 800F0A68 24430001 */ addiu $v1, $v0, 1
|
|
/* 89F1C 800F0A6C 00021400 */ sll $v0, $v0, 0x10
|
|
/* 89F20 800F0A70 00021403 */ sra $v0, $v0, 0x10
|
|
/* 89F24 800F0A74 28420004 */ slti $v0, $v0, 4
|
|
/* 89F28 800F0A78 1440002C */ bnez $v0, .L800F0B2C
|
|
/* 89F2C 800F0A7C A4830000 */ sh $v1, ($a0)
|
|
/* 89F30 800F0A80 C60C0084 */ lwc1 $f12, 0x84($s0)
|
|
/* 89F34 800F0A84 A4800000 */ sh $zero, ($a0)
|
|
/* 89F38 800F0A88 0C00A6C9 */ jal clamp_angle
|
|
/* 89F3C 800F0A8C 46006307 */ neg.s $f12, $f12
|
|
/* 89F40 800F0A90 3C0140C9 */ lui $at, 0x40c9
|
|
/* 89F44 800F0A94 34210FD0 */ ori $at, $at, 0xfd0
|
|
/* 89F48 800F0A98 44811000 */ mtc1 $at, $f2
|
|
/* 89F4C 800F0A9C 00000000 */ nop
|
|
/* 89F50 800F0AA0 46020002 */ mul.s $f0, $f0, $f2
|
|
/* 89F54 800F0AA4 00000000 */ nop
|
|
/* 89F58 800F0AA8 27A50010 */ addiu $a1, $sp, 0x10
|
|
/* 89F5C 800F0AAC 3C0143B4 */ lui $at, 0x43b4
|
|
/* 89F60 800F0AB0 44816000 */ mtc1 $at, $f12
|
|
/* 89F64 800F0AB4 27A60014 */ addiu $a2, $sp, 0x14
|
|
/* 89F68 800F0AB8 0C00A82D */ jal sin_cos_rad
|
|
/* 89F6C 800F0ABC 460C0303 */ div.s $f12, $f0, $f12
|
|
/* 89F70 800F0AC0 860200B2 */ lh $v0, 0xb2($s0)
|
|
/* 89F74 800F0AC4 C7A40010 */ lwc1 $f4, 0x10($sp)
|
|
/* 89F78 800F0AC8 44821000 */ mtc1 $v0, $f2
|
|
/* 89F7C 800F0ACC 00000000 */ nop
|
|
/* 89F80 800F0AD0 468010A0 */ cvt.s.w $f2, $f2
|
|
/* 89F84 800F0AD4 46041102 */ mul.s $f4, $f2, $f4
|
|
/* 89F88 800F0AD8 00000000 */ nop
|
|
/* 89F8C 800F0ADC C7A00014 */ lwc1 $f0, 0x14($sp)
|
|
/* 89F90 800F0AE0 46001082 */ mul.s $f2, $f2, $f0
|
|
/* 89F94 800F0AE4 00000000 */ nop
|
|
/* 89F98 800F0AE8 3C013E4C */ lui $at, 0x3e4c
|
|
/* 89F9C 800F0AEC 3421CCCD */ ori $at, $at, 0xcccd
|
|
/* 89FA0 800F0AF0 44810000 */ mtc1 $at, $f0
|
|
/* 89FA4 800F0AF4 00000000 */ nop
|
|
/* 89FA8 800F0AF8 46002102 */ mul.s $f4, $f4, $f0
|
|
/* 89FAC 800F0AFC 00000000 */ nop
|
|
/* 89FB0 800F0B00 46001082 */ mul.s $f2, $f2, $f0
|
|
/* 89FB4 800F0B04 00000000 */ nop
|
|
/* 89FB8 800F0B08 C6000028 */ lwc1 $f0, 0x28($s0)
|
|
/* 89FBC 800F0B0C 46040000 */ add.s $f0, $f0, $f4
|
|
/* 89FC0 800F0B10 44050000 */ mfc1 $a1, $f0
|
|
/* 89FC4 800F0B14 C6000030 */ lwc1 $f0, 0x30($s0)
|
|
/* 89FC8 800F0B18 46020000 */ add.s $f0, $f0, $f2
|
|
/* 89FCC 800F0B1C 3C064220 */ lui $a2, 0x4220
|
|
/* 89FD0 800F0B20 44070000 */ mfc1 $a3, $f0
|
|
/* 89FD4 800F0B24 0C01C244 */ jal func_80070910
|
|
/* 89FD8 800F0B28 0000202D */ daddu $a0, $zero, $zero
|
|
.L800F0B2C:
|
|
/* 89FDC 800F0B2C 8FBF001C */ lw $ra, 0x1c($sp)
|
|
/* 89FE0 800F0B30 8FB00018 */ lw $s0, 0x18($sp)
|
|
/* 89FE4 800F0B34 03E00008 */ jr $ra
|
|
/* 89FE8 800F0B38 27BD0020 */ addiu $sp, $sp, 0x20
|