mirror of
https://github.com/pmret/papermario.git
synced 2024-11-18 17:02:46 +01:00
262 lines
13 KiB
ArmAsm
262 lines
13 KiB
ArmAsm
|
.set noat # allow manual use of $at
|
||
|
.set noreorder # don't insert nops after branches
|
||
|
|
||
|
glabel pause_spirits_handle_input
|
||
|
/* 14078C 8024D44C 27BDFFE8 */ addiu $sp, $sp, -0x18
|
||
|
/* 140790 8024D450 AFB00010 */ sw $s0, 0x10($sp)
|
||
|
/* 140794 8024D454 0080802D */ daddu $s0, $a0, $zero
|
||
|
/* 140798 8024D458 3C028027 */ lui $v0, 0x8027
|
||
|
/* 14079C 8024D45C 8C4200C0 */ lw $v0, 0xc0($v0)
|
||
|
/* 1407A0 8024D460 3C030004 */ lui $v1, 4
|
||
|
/* 1407A4 8024D464 AFBF0014 */ sw $ra, 0x14($sp)
|
||
|
/* 1407A8 8024D468 92070003 */ lbu $a3, 3($s0)
|
||
|
/* 1407AC 8024D46C 00431024 */ and $v0, $v0, $v1
|
||
|
/* 1407B0 8024D470 1040001C */ beqz $v0, .L8024D4E4
|
||
|
/* 1407B4 8024D474 00000000 */ nop
|
||
|
.L8024D478:
|
||
|
/* 1407B8 8024D478 92020001 */ lbu $v0, 1($s0)
|
||
|
/* 1407BC 8024D47C 2442FFFF */ addiu $v0, $v0, -1
|
||
|
/* 1407C0 8024D480 A2020001 */ sb $v0, 1($s0)
|
||
|
/* 1407C4 8024D484 00021600 */ sll $v0, $v0, 0x18
|
||
|
/* 1407C8 8024D488 00022E03 */ sra $a1, $v0, 0x18
|
||
|
/* 1407CC 8024D48C 04A20015 */ bltzl $a1, .L8024D4E4
|
||
|
/* 1407D0 8024D490 A2000001 */ sb $zero, 1($s0)
|
||
|
/* 1407D4 8024D494 82020004 */ lb $v0, 4($s0)
|
||
|
/* 1407D8 8024D498 82030005 */ lb $v1, 5($s0)
|
||
|
/* 1407DC 8024D49C 00430018 */ mult $v0, $v1
|
||
|
/* 1407E0 8024D4A0 00003012 */ mflo $a2
|
||
|
/* 1407E4 8024D4A4 82020006 */ lb $v0, 6($s0)
|
||
|
/* 1407E8 8024D4A8 00000000 */ nop
|
||
|
/* 1407EC 8024D4AC 00C20018 */ mult $a2, $v0
|
||
|
/* 1407F0 8024D4B0 00002012 */ mflo $a0
|
||
|
/* 1407F4 8024D4B4 82020002 */ lb $v0, 2($s0)
|
||
|
/* 1407F8 8024D4B8 00000000 */ nop
|
||
|
/* 1407FC 8024D4BC 00620018 */ mult $v1, $v0
|
||
|
/* 140800 8024D4C0 00001812 */ mflo $v1
|
||
|
/* 140804 8024D4C4 00831021 */ addu $v0, $a0, $v1
|
||
|
/* 140808 8024D4C8 00451021 */ addu $v0, $v0, $a1
|
||
|
/* 14080C 8024D4CC 8E030008 */ lw $v1, 8($s0)
|
||
|
/* 140810 8024D4D0 92040003 */ lbu $a0, 3($s0)
|
||
|
/* 140814 8024D4D4 00621821 */ addu $v1, $v1, $v0
|
||
|
/* 140818 8024D4D8 90620000 */ lbu $v0, ($v1)
|
||
|
/* 14081C 8024D4DC 1082FFE6 */ beq $a0, $v0, .L8024D478
|
||
|
/* 140820 8024D4E0 00000000 */ nop
|
||
|
.L8024D4E4:
|
||
|
/* 140824 8024D4E4 3C028027 */ lui $v0, 0x8027
|
||
|
/* 140828 8024D4E8 8C4200C0 */ lw $v0, 0xc0($v0)
|
||
|
/* 14082C 8024D4EC 3C030008 */ lui $v1, 8
|
||
|
/* 140830 8024D4F0 00431024 */ and $v0, $v0, $v1
|
||
|
/* 140834 8024D4F4 1040001E */ beqz $v0, .L8024D570
|
||
|
/* 140838 8024D4F8 00000000 */ nop
|
||
|
/* 14083C 8024D4FC 92060005 */ lbu $a2, 5($s0)
|
||
|
/* 140840 8024D500 82050005 */ lb $a1, 5($s0)
|
||
|
.L8024D504:
|
||
|
/* 140844 8024D504 92020001 */ lbu $v0, 1($s0)
|
||
|
/* 140848 8024D508 24420001 */ addiu $v0, $v0, 1
|
||
|
/* 14084C 8024D50C A2020001 */ sb $v0, 1($s0)
|
||
|
/* 140850 8024D510 00021600 */ sll $v0, $v0, 0x18
|
||
|
/* 140854 8024D514 00022603 */ sra $a0, $v0, 0x18
|
||
|
/* 140858 8024D518 0085102A */ slt $v0, $a0, $a1
|
||
|
/* 14085C 8024D51C 1040001F */ beqz $v0, .L8024D59C
|
||
|
/* 140860 8024D520 24C2FFFF */ addiu $v0, $a2, -1
|
||
|
/* 140864 8024D524 82020004 */ lb $v0, 4($s0)
|
||
|
/* 140868 8024D528 00450018 */ mult $v0, $a1
|
||
|
/* 14086C 8024D52C 00001812 */ mflo $v1
|
||
|
/* 140870 8024D530 82020006 */ lb $v0, 6($s0)
|
||
|
/* 140874 8024D534 00000000 */ nop
|
||
|
/* 140878 8024D538 00620018 */ mult $v1, $v0
|
||
|
/* 14087C 8024D53C 00001812 */ mflo $v1
|
||
|
/* 140880 8024D540 82020002 */ lb $v0, 2($s0)
|
||
|
/* 140884 8024D544 00000000 */ nop
|
||
|
/* 140888 8024D548 00A20018 */ mult $a1, $v0
|
||
|
/* 14088C 8024D54C 00004812 */ mflo $t1
|
||
|
/* 140890 8024D550 00691021 */ addu $v0, $v1, $t1
|
||
|
/* 140894 8024D554 00441021 */ addu $v0, $v0, $a0
|
||
|
/* 140898 8024D558 8E030008 */ lw $v1, 8($s0)
|
||
|
/* 14089C 8024D55C 92040003 */ lbu $a0, 3($s0)
|
||
|
/* 1408A0 8024D560 00621821 */ addu $v1, $v1, $v0
|
||
|
/* 1408A4 8024D564 90620000 */ lbu $v0, ($v1)
|
||
|
/* 1408A8 8024D568 1082FFE6 */ beq $a0, $v0, .L8024D504
|
||
|
/* 1408AC 8024D56C 00000000 */ nop
|
||
|
.L8024D570:
|
||
|
/* 1408B0 8024D570 3C028027 */ lui $v0, 0x8027
|
||
|
/* 1408B4 8024D574 8C4200C0 */ lw $v0, 0xc0($v0)
|
||
|
/* 1408B8 8024D578 3C030001 */ lui $v1, 1
|
||
|
/* 1408BC 8024D57C 00431024 */ and $v0, $v0, $v1
|
||
|
/* 1408C0 8024D580 10400029 */ beqz $v0, .L8024D628
|
||
|
/* 1408C4 8024D584 24020002 */ addiu $v0, $zero, 2
|
||
|
/* 1408C8 8024D588 92030003 */ lbu $v1, 3($s0)
|
||
|
/* 1408CC 8024D58C 14620005 */ bne $v1, $v0, .L8024D5A4
|
||
|
/* 1408D0 8024D590 24020005 */ addiu $v0, $zero, 5
|
||
|
/* 1408D4 8024D594 0809356B */ j .L8024D5AC
|
||
|
/* 1408D8 8024D598 24020003 */ addiu $v0, $zero, 3
|
||
|
.L8024D59C:
|
||
|
/* 1408DC 8024D59C 0809355C */ j .L8024D570
|
||
|
/* 1408E0 8024D5A0 A2020001 */ sb $v0, 1($s0)
|
||
|
.L8024D5A4:
|
||
|
/* 1408E4 8024D5A4 14620004 */ bne $v1, $v0, .L8024D5B8
|
||
|
/* 1408E8 8024D5A8 24020001 */ addiu $v0, $zero, 1
|
||
|
.L8024D5AC:
|
||
|
/* 1408EC 8024D5AC A2020001 */ sb $v0, 1($s0)
|
||
|
/* 1408F0 8024D5B0 0809358A */ j .L8024D628
|
||
|
/* 1408F4 8024D5B4 A2000002 */ sb $zero, 2($s0)
|
||
|
.L8024D5B8:
|
||
|
/* 1408F8 8024D5B8 92020002 */ lbu $v0, 2($s0)
|
||
|
/* 1408FC 8024D5BC 2442FFFF */ addiu $v0, $v0, -1
|
||
|
/* 140900 8024D5C0 A2020002 */ sb $v0, 2($s0)
|
||
|
/* 140904 8024D5C4 00021600 */ sll $v0, $v0, 0x18
|
||
|
/* 140908 8024D5C8 00022603 */ sra $a0, $v0, 0x18
|
||
|
/* 14090C 8024D5CC 04820016 */ bltzl $a0, .L8024D628
|
||
|
/* 140910 8024D5D0 A2000002 */ sb $zero, 2($s0)
|
||
|
/* 140914 8024D5D4 82020004 */ lb $v0, 4($s0)
|
||
|
/* 140918 8024D5D8 82030005 */ lb $v1, 5($s0)
|
||
|
/* 14091C 8024D5DC 00430018 */ mult $v0, $v1
|
||
|
/* 140920 8024D5E0 00002812 */ mflo $a1
|
||
|
/* 140924 8024D5E4 82020006 */ lb $v0, 6($s0)
|
||
|
/* 140928 8024D5E8 00000000 */ nop
|
||
|
/* 14092C 8024D5EC 00A20018 */ mult $a1, $v0
|
||
|
/* 140930 8024D5F0 00001012 */ mflo $v0
|
||
|
/* 140934 8024D5F4 00000000 */ nop
|
||
|
/* 140938 8024D5F8 00000000 */ nop
|
||
|
/* 14093C 8024D5FC 00640018 */ mult $v1, $a0
|
||
|
/* 140940 8024D600 82040001 */ lb $a0, 1($s0)
|
||
|
/* 140944 8024D604 00001812 */ mflo $v1
|
||
|
/* 140948 8024D608 00431021 */ addu $v0, $v0, $v1
|
||
|
/* 14094C 8024D60C 00441021 */ addu $v0, $v0, $a0
|
||
|
/* 140950 8024D610 8E030008 */ lw $v1, 8($s0)
|
||
|
/* 140954 8024D614 92040003 */ lbu $a0, 3($s0)
|
||
|
/* 140958 8024D618 00621821 */ addu $v1, $v1, $v0
|
||
|
/* 14095C 8024D61C 90620000 */ lbu $v0, ($v1)
|
||
|
/* 140960 8024D620 1082FFE5 */ beq $a0, $v0, .L8024D5B8
|
||
|
/* 140964 8024D624 00000000 */ nop
|
||
|
.L8024D628:
|
||
|
/* 140968 8024D628 3C028027 */ lui $v0, 0x8027
|
||
|
/* 14096C 8024D62C 8C4200C0 */ lw $v0, 0xc0($v0)
|
||
|
/* 140970 8024D630 3C030002 */ lui $v1, 2
|
||
|
/* 140974 8024D634 00431024 */ and $v0, $v0, $v1
|
||
|
/* 140978 8024D638 1040002F */ beqz $v0, .L8024D6F8
|
||
|
/* 14097C 8024D63C 24020002 */ addiu $v0, $zero, 2
|
||
|
/* 140980 8024D640 92030003 */ lbu $v1, 3($s0)
|
||
|
/* 140984 8024D644 14620006 */ bne $v1, $v0, .L8024D660
|
||
|
/* 140988 8024D648 24020005 */ addiu $v0, $zero, 5
|
||
|
/* 14098C 8024D64C 24020003 */ addiu $v0, $zero, 3
|
||
|
/* 140990 8024D650 A2020001 */ sb $v0, 1($s0)
|
||
|
/* 140994 8024D654 24020001 */ addiu $v0, $zero, 1
|
||
|
/* 140998 8024D658 080935BE */ j .L8024D6F8
|
||
|
/* 14099C 8024D65C A2020002 */ sb $v0, 2($s0)
|
||
|
.L8024D660:
|
||
|
/* 1409A0 8024D660 14620006 */ bne $v1, $v0, .L8024D67C
|
||
|
/* 1409A4 8024D664 24020001 */ addiu $v0, $zero, 1
|
||
|
/* 1409A8 8024D668 A2020001 */ sb $v0, 1($s0)
|
||
|
/* 1409AC 8024D66C 080935BE */ j .L8024D6F8
|
||
|
/* 1409B0 8024D670 A2020002 */ sb $v0, 2($s0)
|
||
|
.L8024D674:
|
||
|
/* 1409B4 8024D674 080935BE */ j .L8024D6F8
|
||
|
/* 1409B8 8024D678 A2020002 */ sb $v0, 2($s0)
|
||
|
.L8024D67C:
|
||
|
/* 1409BC 8024D67C 92060006 */ lbu $a2, 6($s0)
|
||
|
/* 1409C0 8024D680 82050006 */ lb $a1, 6($s0)
|
||
|
.L8024D684:
|
||
|
/* 1409C4 8024D684 92020002 */ lbu $v0, 2($s0)
|
||
|
/* 1409C8 8024D688 24420001 */ addiu $v0, $v0, 1
|
||
|
/* 1409CC 8024D68C A2020002 */ sb $v0, 2($s0)
|
||
|
/* 1409D0 8024D690 00021600 */ sll $v0, $v0, 0x18
|
||
|
/* 1409D4 8024D694 00022603 */ sra $a0, $v0, 0x18
|
||
|
/* 1409D8 8024D698 0085102A */ slt $v0, $a0, $a1
|
||
|
/* 1409DC 8024D69C 1040FFF5 */ beqz $v0, .L8024D674
|
||
|
/* 1409E0 8024D6A0 24C2FFFF */ addiu $v0, $a2, -1
|
||
|
/* 1409E4 8024D6A4 82020004 */ lb $v0, 4($s0)
|
||
|
/* 1409E8 8024D6A8 82030005 */ lb $v1, 5($s0)
|
||
|
/* 1409EC 8024D6AC 00430018 */ mult $v0, $v1
|
||
|
/* 1409F0 8024D6B0 00004812 */ mflo $t1
|
||
|
/* 1409F4 8024D6B4 00000000 */ nop
|
||
|
/* 1409F8 8024D6B8 00000000 */ nop
|
||
|
/* 1409FC 8024D6BC 01250018 */ mult $t1, $a1
|
||
|
/* 140A00 8024D6C0 00001012 */ mflo $v0
|
||
|
/* 140A04 8024D6C4 00000000 */ nop
|
||
|
/* 140A08 8024D6C8 00000000 */ nop
|
||
|
/* 140A0C 8024D6CC 00640018 */ mult $v1, $a0
|
||
|
/* 140A10 8024D6D0 82040001 */ lb $a0, 1($s0)
|
||
|
/* 140A14 8024D6D4 00001812 */ mflo $v1
|
||
|
/* 140A18 8024D6D8 00431021 */ addu $v0, $v0, $v1
|
||
|
/* 140A1C 8024D6DC 00441021 */ addu $v0, $v0, $a0
|
||
|
/* 140A20 8024D6E0 8E030008 */ lw $v1, 8($s0)
|
||
|
/* 140A24 8024D6E4 92040003 */ lbu $a0, 3($s0)
|
||
|
/* 140A28 8024D6E8 00621821 */ addu $v1, $v1, $v0
|
||
|
/* 140A2C 8024D6EC 90620000 */ lbu $v0, ($v1)
|
||
|
/* 140A30 8024D6F0 1082FFE4 */ beq $a0, $v0, .L8024D684
|
||
|
/* 140A34 8024D6F4 00000000 */ nop
|
||
|
.L8024D6F8:
|
||
|
/* 140A38 8024D6F8 82020004 */ lb $v0, 4($s0)
|
||
|
/* 140A3C 8024D6FC 82030005 */ lb $v1, 5($s0)
|
||
|
/* 140A40 8024D700 00430018 */ mult $v0, $v1
|
||
|
/* 140A44 8024D704 00002812 */ mflo $a1
|
||
|
/* 140A48 8024D708 82020006 */ lb $v0, 6($s0)
|
||
|
/* 140A4C 8024D70C 00000000 */ nop
|
||
|
/* 140A50 8024D710 00A20018 */ mult $a1, $v0
|
||
|
/* 140A54 8024D714 00002012 */ mflo $a0
|
||
|
/* 140A58 8024D718 82020002 */ lb $v0, 2($s0)
|
||
|
/* 140A5C 8024D71C 00000000 */ nop
|
||
|
/* 140A60 8024D720 00620018 */ mult $v1, $v0
|
||
|
/* 140A64 8024D724 00001812 */ mflo $v1
|
||
|
/* 140A68 8024D728 00831821 */ addu $v1, $a0, $v1
|
||
|
/* 140A6C 8024D72C 82040001 */ lb $a0, 1($s0)
|
||
|
/* 140A70 8024D730 8E020008 */ lw $v0, 8($s0)
|
||
|
/* 140A74 8024D734 00641821 */ addu $v1, $v1, $a0
|
||
|
/* 140A78 8024D738 00431021 */ addu $v0, $v0, $v1
|
||
|
/* 140A7C 8024D73C 90420000 */ lbu $v0, ($v0)
|
||
|
/* 140A80 8024D740 24030004 */ addiu $v1, $zero, 4
|
||
|
/* 140A84 8024D744 A2020003 */ sb $v0, 3($s0)
|
||
|
/* 140A88 8024D748 304200FF */ andi $v0, $v0, 0xff
|
||
|
/* 140A8C 8024D74C 14430003 */ bne $v0, $v1, .L8024D75C
|
||
|
/* 140A90 8024D750 24020001 */ addiu $v0, $zero, 1
|
||
|
/* 140A94 8024D754 A2020001 */ sb $v0, 1($s0)
|
||
|
/* 140A98 8024D758 A2020002 */ sb $v0, 2($s0)
|
||
|
.L8024D75C:
|
||
|
/* 140A9C 8024D75C 92020003 */ lbu $v0, 3($s0)
|
||
|
/* 140AA0 8024D760 10470003 */ beq $v0, $a3, .L8024D770
|
||
|
/* 140AA4 8024D764 00000000 */ nop
|
||
|
/* 140AA8 8024D768 0C05272D */ jal play_sound
|
||
|
/* 140AAC 8024D76C 240400C7 */ addiu $a0, $zero, 0xc7
|
||
|
.L8024D770:
|
||
|
/* 140AB0 8024D770 3C028027 */ lui $v0, 0x8027
|
||
|
/* 140AB4 8024D774 8C4200C4 */ lw $v0, 0xc4($v0)
|
||
|
/* 140AB8 8024D778 30424000 */ andi $v0, $v0, 0x4000
|
||
|
/* 140ABC 8024D77C 10400007 */ beqz $v0, .L8024D79C
|
||
|
/* 140AC0 8024D780 00000000 */ nop
|
||
|
/* 140AC4 8024D784 3C018027 */ lui $at, 0x8027
|
||
|
/* 140AC8 8024D788 A02000D4 */ sb $zero, 0xd4($at)
|
||
|
/* 140ACC 8024D78C 0C05272D */ jal play_sound
|
||
|
/* 140AD0 8024D790 240400CA */ addiu $a0, $zero, 0xca
|
||
|
/* 140AD4 8024D794 080935FC */ j .L8024D7F0
|
||
|
/* 140AD8 8024D798 00000000 */ nop
|
||
|
.L8024D79C:
|
||
|
/* 140ADC 8024D79C 3C018027 */ lui $at, 0x8027
|
||
|
/* 140AE0 8024D7A0 AC2000CC */ sw $zero, 0xcc($at)
|
||
|
/* 140AE4 8024D7A4 0C039D59 */ jal get_player_data
|
||
|
/* 140AE8 8024D7A8 00000000 */ nop
|
||
|
/* 140AEC 8024D7AC 92030003 */ lbu $v1, 3($s0)
|
||
|
/* 140AF0 8024D7B0 8042028E */ lb $v0, 0x28e($v0)
|
||
|
/* 140AF4 8024D7B4 00031880 */ sll $v1, $v1, 2
|
||
|
/* 140AF8 8024D7B8 3C018027 */ lui $at, 0x8027
|
||
|
/* 140AFC 8024D7BC 00230821 */ addu $at, $at, $v1
|
||
|
/* 140B00 8024D7C0 8C2306E0 */ lw $v1, 0x6e0($at)
|
||
|
/* 140B04 8024D7C4 0062102A */ slt $v0, $v1, $v0
|
||
|
/* 140B08 8024D7C8 14400005 */ bnez $v0, .L8024D7E0
|
||
|
/* 140B0C 8024D7CC 3C02001D */ lui $v0, 0x1d
|
||
|
/* 140B10 8024D7D0 0C093BA0 */ jal pause_get_menu_string
|
||
|
/* 140B14 8024D7D4 24040056 */ addiu $a0, $zero, 0x56
|
||
|
/* 140B18 8024D7D8 080935FA */ j .L8024D7E8
|
||
|
/* 140B1C 8024D7DC 00000000 */ nop
|
||
|
.L8024D7E0:
|
||
|
/* 140B20 8024D7E0 34420031 */ ori $v0, $v0, 0x31
|
||
|
/* 140B24 8024D7E4 00621021 */ addu $v0, $v1, $v0
|
||
|
.L8024D7E8:
|
||
|
/* 140B28 8024D7E8 3C018027 */ lui $at, 0x8027
|
||
|
/* 140B2C 8024D7EC AC2200C8 */ sw $v0, 0xc8($at)
|
||
|
.L8024D7F0:
|
||
|
/* 140B30 8024D7F0 8FBF0014 */ lw $ra, 0x14($sp)
|
||
|
/* 140B34 8024D7F4 8FB00010 */ lw $s0, 0x10($sp)
|
||
|
/* 140B38 8024D7F8 03E00008 */ jr $ra
|
||
|
/* 140B3C 8024D7FC 27BD0018 */ addiu $sp, $sp, 0x18
|