mirror of
https://github.com/pmret/papermario.git
synced 2024-11-18 17:02:46 +01:00
80 lines
3.6 KiB
ArmAsm
80 lines
3.6 KiB
ArmAsm
.set noat # allow manual use of $at
|
|
.set noreorder # don't insert nops after branches
|
|
|
|
|
|
glabel func_800495A0
|
|
/* 0249A0 800495A0 27BDFFD8 */ addiu $sp, $sp, -0x28
|
|
/* 0249A4 800495A4 AFB3001C */ sw $s3, 0x1c($sp)
|
|
/* 0249A8 800495A8 0080982D */ daddu $s3, $a0, $zero
|
|
/* 0249AC 800495AC AFBF0020 */ sw $ra, 0x20($sp)
|
|
/* 0249B0 800495B0 AFB20018 */ sw $s2, 0x18($sp)
|
|
/* 0249B4 800495B4 AFB10014 */ sw $s1, 0x14($sp)
|
|
/* 0249B8 800495B8 AFB00010 */ sw $s0, 0x10($sp)
|
|
/* 0249BC 800495BC 8E710148 */ lw $s1, 0x148($s3)
|
|
/* 0249C0 800495C0 86240008 */ lh $a0, 8($s1)
|
|
/* 0249C4 800495C4 0C00EABB */ jal get_npc_unsafe
|
|
/* 0249C8 800495C8 00A0902D */ daddu $s2, $a1, $zero
|
|
/* 0249CC 800495CC 8E440004 */ lw $a0, 4($s2)
|
|
/* 0249D0 800495D0 0040802D */ daddu $s0, $v0, $zero
|
|
/* 0249D4 800495D4 00041FC2 */ srl $v1, $a0, 0x1f
|
|
/* 0249D8 800495D8 00832021 */ addu $a0, $a0, $v1
|
|
/* 0249DC 800495DC 00042043 */ sra $a0, $a0, 1
|
|
/* 0249E0 800495E0 0C00A67F */ jal rand_int
|
|
/* 0249E4 800495E4 24840001 */ addiu $a0, $a0, 1
|
|
/* 0249E8 800495E8 8E430004 */ lw $v1, 4($s2)
|
|
/* 0249EC 800495EC 2404003C */ addiu $a0, $zero, 0x3c
|
|
/* 0249F0 800495F0 00032FC2 */ srl $a1, $v1, 0x1f
|
|
/* 0249F4 800495F4 00651821 */ addu $v1, $v1, $a1
|
|
/* 0249F8 800495F8 00031843 */ sra $v1, $v1, 1
|
|
/* 0249FC 800495FC 00621821 */ addu $v1, $v1, $v0
|
|
/* 024A00 80049600 0C00A67F */ jal rand_int
|
|
/* 024A04 80049604 A603008E */ sh $v1, 0x8e($s0)
|
|
/* 024A08 80049608 C60C000C */ lwc1 $f12, 0xc($s0)
|
|
/* 024A0C 8004960C 44820000 */ mtc1 $v0, $f0
|
|
/* 024A10 80049610 00000000 */ nop
|
|
/* 024A14 80049614 46800020 */ cvt.s.w $f0, $f0
|
|
/* 024A18 80049618 46006300 */ add.s $f12, $f12, $f0
|
|
/* 024A1C 8004961C 3C0141F0 */ lui $at, 0x41f0
|
|
/* 024A20 80049620 44810000 */ mtc1 $at, $f0
|
|
/* 024A24 80049624 0C00A6C9 */ jal clamp_angle
|
|
/* 024A28 80049628 46006301 */ sub.s $f12, $f12, $f0
|
|
/* 024A2C 8004962C E600000C */ swc1 $f0, 0xc($s0)
|
|
/* 024A30 80049630 8E2200CC */ lw $v0, 0xcc($s1)
|
|
/* 024A34 80049634 8C420004 */ lw $v0, 4($v0)
|
|
/* 024A38 80049638 AE020028 */ sw $v0, 0x28($s0)
|
|
/* 024A3C 8004963C AE600074 */ sw $zero, 0x74($s3)
|
|
/* 024A40 80049640 8E2200D0 */ lw $v0, 0xd0($s1)
|
|
/* 024A44 80049644 8C420014 */ lw $v0, 0x14($v0)
|
|
/* 024A48 80049648 04410004 */ bgez $v0, .L8004965C
|
|
/* 024A4C 8004964C 00000000 */ nop
|
|
/* 024A50 80049650 C6400000 */ lwc1 $f0, ($s2)
|
|
/* 024A54 80049654 0801259F */ j .L8004967C
|
|
/* 024A58 80049658 E6000018 */ swc1 $f0, 0x18($s0)
|
|
|
|
.L8004965C:
|
|
/* 024A5C 8004965C 3C01800A */ lui $at, 0x800a
|
|
/* 024A60 80049660 D4228720 */ ldc1 $f2, -0x78e0($at)
|
|
/* 024A64 80049664 44820000 */ mtc1 $v0, $f0
|
|
/* 024A68 80049668 00000000 */ nop
|
|
/* 024A6C 8004966C 46800021 */ cvt.d.w $f0, $f0
|
|
/* 024A70 80049670 46220003 */ div.d $f0, $f0, $f2
|
|
/* 024A74 80049674 46200020 */ cvt.s.d $f0, $f0
|
|
/* 024A78 80049678 E6000018 */ swc1 $f0, 0x18($s0)
|
|
.L8004967C:
|
|
/* 024A7C 8004967C 8E2200B0 */ lw $v0, 0xb0($s1)
|
|
/* 024A80 80049680 2403FFBF */ addiu $v1, $zero, -0x41
|
|
/* 024A84 80049684 00431024 */ and $v0, $v0, $v1
|
|
/* 024A88 80049688 2403FFDF */ addiu $v1, $zero, -0x21
|
|
/* 024A8C 8004968C 00431024 */ and $v0, $v0, $v1
|
|
/* 024A90 80049690 AE2200B0 */ sw $v0, 0xb0($s1)
|
|
/* 024A94 80049694 24020001 */ addiu $v0, $zero, 1
|
|
/* 024A98 80049698 AE620070 */ sw $v0, 0x70($s3)
|
|
/* 024A9C 8004969C 8FBF0020 */ lw $ra, 0x20($sp)
|
|
/* 024AA0 800496A0 8FB3001C */ lw $s3, 0x1c($sp)
|
|
/* 024AA4 800496A4 8FB20018 */ lw $s2, 0x18($sp)
|
|
/* 024AA8 800496A8 8FB10014 */ lw $s1, 0x14($sp)
|
|
/* 024AAC 800496AC 8FB00010 */ lw $s0, 0x10($sp)
|
|
/* 024AB0 800496B0 03E00008 */ jr $ra
|
|
/* 024AB4 800496B4 27BD0028 */ addiu $sp, $sp, 0x28
|
|
|