papermario/asm/nonmatchings/code_16c8e0/PlayerDamageEnemy.s
2020-08-12 21:56:23 -04:00

177 lines
7.7 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.include "include/macro.inc"
glabel PlayerDamageEnemy
/* 1A2B40 80274260 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 1A2B44 80274264 AFB20018 */ sw $s2, 0x18($sp)
/* 1A2B48 80274268 0080902D */ daddu $s2, $a0, $zero
/* 1A2B4C 8027426C AFBF0020 */ sw $ra, 0x20($sp)
/* 1A2B50 80274270 AFB3001C */ sw $s3, 0x1c($sp)
/* 1A2B54 80274274 AFB10014 */ sw $s1, 0x14($sp)
/* 1A2B58 80274278 AFB00010 */ sw $s0, 0x10($sp)
/* 1A2B5C 8027427C 8E50000C */ lw $s0, 0xc($s2)
/* 1A2B60 80274280 3C11800E */ lui $s1, 0x800e
/* 1A2B64 80274284 2631C070 */ addiu $s1, $s1, -0x3f90
/* 1A2B68 80274288 8E130000 */ lw $s3, ($s0)
/* 1A2B6C 8027428C 26100004 */ addiu $s0, $s0, 4
/* 1A2B70 80274290 8E020000 */ lw $v0, ($s0)
/* 1A2B74 80274294 26100004 */ addiu $s0, $s0, 4
/* 1A2B78 80274298 AE220188 */ sw $v0, 0x188($s1)
/* 1A2B7C 8027429C 8E020000 */ lw $v0, ($s0)
/* 1A2B80 802742A0 26100004 */ addiu $s0, $s0, 4
/* 1A2B84 802742A4 AE22018C */ sw $v0, 0x18c($s1)
/* 1A2B88 802742A8 8E020000 */ lw $v0, ($s0)
/* 1A2B8C 802742AC 26100004 */ addiu $s0, $s0, 4
/* 1A2B90 802742B0 AE220190 */ sw $v0, 0x190($s1)
/* 1A2B94 802742B4 8E050000 */ lw $a1, ($s0)
/* 1A2B98 802742B8 0C0B1EAF */ jal get_variable
/* 1A2B9C 802742BC 26100004 */ addiu $s0, $s0, 4
/* 1A2BA0 802742C0 A622017E */ sh $v0, 0x17e($s1)
/* 1A2BA4 802742C4 A2200198 */ sb $zero, 0x198($s1)
/* 1A2BA8 802742C8 8E100000 */ lw $s0, ($s0)
/* 1A2BAC 802742CC 24020030 */ addiu $v0, $zero, 0x30
/* 1A2BB0 802742D0 32030030 */ andi $v1, $s0, 0x30
/* 1A2BB4 802742D4 54620004 */ bnel $v1, $v0, .L802742E8
/* 1A2BB8 802742D8 32020010 */ andi $v0, $s0, 0x10
/* 1A2BBC 802742DC 8E220000 */ lw $v0, ($s1)
/* 1A2BC0 802742E0 0809D0CA */ j .L80274328
/* 1A2BC4 802742E4 34420030 */ ori $v0, $v0, 0x30
.L802742E8:
/* 1A2BC8 802742E8 10400004 */ beqz $v0, .L802742FC
/* 1A2BCC 802742EC 2403FFDF */ addiu $v1, $zero, -0x21
/* 1A2BD0 802742F0 8E220000 */ lw $v0, ($s1)
/* 1A2BD4 802742F4 0809D0C9 */ j .L80274324
/* 1A2BD8 802742F8 34420010 */ ori $v0, $v0, 0x10
.L802742FC:
/* 1A2BDC 802742FC 32020020 */ andi $v0, $s0, 0x20
/* 1A2BE0 80274300 10400005 */ beqz $v0, .L80274318
/* 1A2BE4 80274304 2403FFEF */ addiu $v1, $zero, -0x11
/* 1A2BE8 80274308 8E220000 */ lw $v0, ($s1)
/* 1A2BEC 8027430C 00431024 */ and $v0, $v0, $v1
/* 1A2BF0 80274310 0809D0CA */ j .L80274328
/* 1A2BF4 80274314 34420020 */ ori $v0, $v0, 0x20
.L80274318:
/* 1A2BF8 80274318 8E220000 */ lw $v0, ($s1)
/* 1A2BFC 8027431C 00431024 */ and $v0, $v0, $v1
/* 1A2C00 80274320 2403FFDF */ addiu $v1, $zero, -0x21
.L80274324:
/* 1A2C04 80274324 00431024 */ and $v0, $v0, $v1
.L80274328:
/* 1A2C08 80274328 AE220000 */ sw $v0, ($s1)
/* 1A2C0C 8027432C 32020040 */ andi $v0, $s0, 0x40
/* 1A2C10 80274330 10400007 */ beqz $v0, .L80274350
/* 1A2C14 80274334 2404FFBF */ addiu $a0, $zero, -0x41
/* 1A2C18 80274338 3C03800E */ lui $v1, 0x800e
/* 1A2C1C 8027433C 2463C070 */ addiu $v1, $v1, -0x3f90
/* 1A2C20 80274340 8C620000 */ lw $v0, ($v1)
/* 1A2C24 80274344 34420040 */ ori $v0, $v0, 0x40
/* 1A2C28 80274348 0809D0D9 */ j .L80274364
/* 1A2C2C 8027434C AC620000 */ sw $v0, ($v1)
.L80274350:
/* 1A2C30 80274350 3C02800E */ lui $v0, 0x800e
/* 1A2C34 80274354 2442C070 */ addiu $v0, $v0, -0x3f90
/* 1A2C38 80274358 8C430000 */ lw $v1, ($v0)
/* 1A2C3C 8027435C 00641824 */ and $v1, $v1, $a0
/* 1A2C40 80274360 AC430000 */ sw $v1, ($v0)
.L80274364:
/* 1A2C44 80274364 32020200 */ andi $v0, $s0, 0x200
/* 1A2C48 80274368 10400007 */ beqz $v0, .L80274388
/* 1A2C4C 8027436C 2404FDFF */ addiu $a0, $zero, -0x201
/* 1A2C50 80274370 3C03800E */ lui $v1, 0x800e
/* 1A2C54 80274374 2463C070 */ addiu $v1, $v1, -0x3f90
/* 1A2C58 80274378 8C620000 */ lw $v0, ($v1)
/* 1A2C5C 8027437C 34420200 */ ori $v0, $v0, 0x200
/* 1A2C60 80274380 0809D0E7 */ j .L8027439C
/* 1A2C64 80274384 AC620000 */ sw $v0, ($v1)
.L80274388:
/* 1A2C68 80274388 3C02800E */ lui $v0, 0x800e
/* 1A2C6C 8027438C 2442C070 */ addiu $v0, $v0, -0x3f90
/* 1A2C70 80274390 8C430000 */ lw $v1, ($v0)
/* 1A2C74 80274394 00641824 */ and $v1, $v1, $a0
/* 1A2C78 80274398 AC430000 */ sw $v1, ($v0)
.L8027439C:
/* 1A2C7C 8027439C 32020080 */ andi $v0, $s0, 0x80
/* 1A2C80 802743A0 10400007 */ beqz $v0, .L802743C0
/* 1A2C84 802743A4 2404FF7F */ addiu $a0, $zero, -0x81
/* 1A2C88 802743A8 3C03800E */ lui $v1, 0x800e
/* 1A2C8C 802743AC 2463C070 */ addiu $v1, $v1, -0x3f90
/* 1A2C90 802743B0 8C620000 */ lw $v0, ($v1)
/* 1A2C94 802743B4 34420080 */ ori $v0, $v0, 0x80
/* 1A2C98 802743B8 0809D0F5 */ j .L802743D4
/* 1A2C9C 802743BC AC620000 */ sw $v0, ($v1)
.L802743C0:
/* 1A2CA0 802743C0 3C02800E */ lui $v0, 0x800e
/* 1A2CA4 802743C4 2442C070 */ addiu $v0, $v0, -0x3f90
/* 1A2CA8 802743C8 8C430000 */ lw $v1, ($v0)
/* 1A2CAC 802743CC 00641824 */ and $v1, $v1, $a0
/* 1A2CB0 802743D0 AC430000 */ sw $v1, ($v0)
.L802743D4:
/* 1A2CB4 802743D4 32020800 */ andi $v0, $s0, 0x800
/* 1A2CB8 802743D8 10400007 */ beqz $v0, .L802743F8
/* 1A2CBC 802743DC 2404F7FF */ addiu $a0, $zero, -0x801
/* 1A2CC0 802743E0 3C03800E */ lui $v1, 0x800e
/* 1A2CC4 802743E4 2463C070 */ addiu $v1, $v1, -0x3f90
/* 1A2CC8 802743E8 8C620000 */ lw $v0, ($v1)
/* 1A2CCC 802743EC 34420800 */ ori $v0, $v0, 0x800
/* 1A2CD0 802743F0 0809D103 */ j .L8027440C
/* 1A2CD4 802743F4 AC620000 */ sw $v0, ($v1)
.L802743F8:
/* 1A2CD8 802743F8 3C02800E */ lui $v0, 0x800e
/* 1A2CDC 802743FC 2442C070 */ addiu $v0, $v0, -0x3f90
/* 1A2CE0 80274400 8C430000 */ lw $v1, ($v0)
/* 1A2CE4 80274404 00641824 */ and $v1, $v1, $a0
/* 1A2CE8 80274408 AC430000 */ sw $v1, ($v0)
.L8027440C:
/* 1A2CEC 8027440C 0C09A75B */ jal get_actor
/* 1A2CF0 80274410 8E440148 */ lw $a0, 0x148($s2)
/* 1A2CF4 80274414 94430428 */ lhu $v1, 0x428($v0)
/* 1A2CF8 80274418 A62301A0 */ sh $v1, 0x1a0($s1)
/* 1A2CFC 8027441C 92230193 */ lbu $v1, 0x193($s1)
/* 1A2D00 80274420 90420426 */ lbu $v0, 0x426($v0)
/* 1A2D04 80274424 A2230194 */ sb $v1, 0x194($s1)
/* 1A2D08 80274428 306300FF */ andi $v1, $v1, 0xff
/* 1A2D0C 8027442C A22201A2 */ sb $v0, 0x1a2($s1)
/* 1A2D10 80274430 240200FF */ addiu $v0, $zero, 0xff
/* 1A2D14 80274434 50620001 */ beql $v1, $v0, .L8027443C
/* 1A2D18 80274438 A2200194 */ sb $zero, 0x194($s1)
.L8027443C:
/* 1A2D1C 8027443C 8E220190 */ lw $v0, 0x190($s1)
/* 1A2D20 80274440 30420F00 */ andi $v0, $v0, 0xf00
/* 1A2D24 80274444 00021203 */ sra $v0, $v0, 8
/* 1A2D28 80274448 0C09C651 */ jal calc_player_damage_enemy
/* 1A2D2C 8027444C A2220195 */ sb $v0, 0x195($s1)
/* 1A2D30 80274450 0440000B */ bltz $v0, .L80274480
/* 1A2D34 80274454 0240202D */ daddu $a0, $s2, $zero
/* 1A2D38 80274458 0260282D */ daddu $a1, $s3, $zero
/* 1A2D3C 8027445C 0C0B2026 */ jal set_variable
/* 1A2D40 80274460 0040302D */ daddu $a2, $v0, $zero
/* 1A2D44 80274464 0C0B1069 */ jal does_script_exist_by_ref
/* 1A2D48 80274468 0240202D */ daddu $a0, $s2, $zero
/* 1A2D4C 8027446C 0040182D */ daddu $v1, $v0, $zero
/* 1A2D50 80274470 10600004 */ beqz $v1, .L80274484
/* 1A2D54 80274474 240200FF */ addiu $v0, $zero, 0xff
/* 1A2D58 80274478 0809D121 */ j .L80274484
/* 1A2D5C 8027447C 24020002 */ addiu $v0, $zero, 2
.L80274480:
/* 1A2D60 80274480 240200FF */ addiu $v0, $zero, 0xff
.L80274484:
.L80274484:
/* 1A2D64 80274484 8FBF0020 */ lw $ra, 0x20($sp)
/* 1A2D68 80274488 8FB3001C */ lw $s3, 0x1c($sp)
/* 1A2D6C 8027448C 8FB20018 */ lw $s2, 0x18($sp)
/* 1A2D70 80274490 8FB10014 */ lw $s1, 0x14($sp)
/* 1A2D74 80274494 8FB00010 */ lw $s0, 0x10($sp)
/* 1A2D78 80274498 03E00008 */ jr $ra
/* 1A2D7C 8027449C 27BD0028 */ addiu $sp, $sp, 0x28