mirror of
https://github.com/pmret/papermario.git
synced 2024-11-10 13:02:41 +01:00
249 lines
13 KiB
ArmAsm
249 lines
13 KiB
ArmAsm
.set noat # allow manual use of $at
|
|
.set noreorder # don't insert nops after branches
|
|
|
|
glabel ActorSpeak
|
|
/* 181810 80252F30 27BDFFB8 */ addiu $sp, $sp, -0x48
|
|
/* 181814 80252F34 AFB3003C */ sw $s3, 0x3c($sp)
|
|
/* 181818 80252F38 0080982D */ daddu $s3, $a0, $zero
|
|
/* 18181C 80252F3C AFBF0044 */ sw $ra, 0x44($sp)
|
|
/* 181820 80252F40 AFB40040 */ sw $s4, 0x40($sp)
|
|
/* 181824 80252F44 AFB20038 */ sw $s2, 0x38($sp)
|
|
/* 181828 80252F48 AFB10034 */ sw $s1, 0x34($sp)
|
|
/* 18182C 80252F4C AFB00030 */ sw $s0, 0x30($sp)
|
|
/* 181830 80252F50 10A00075 */ beqz $a1, .L80253128
|
|
/* 181834 80252F54 8E71000C */ lw $s1, 0xc($s3)
|
|
/* 181838 80252F58 8E250000 */ lw $a1, ($s1)
|
|
/* 18183C 80252F5C 0C0B1EAF */ jal get_variable
|
|
/* 181840 80252F60 26310004 */ addiu $s1, $s1, 4
|
|
/* 181844 80252F64 8E250000 */ lw $a1, ($s1)
|
|
/* 181848 80252F68 26310004 */ addiu $s1, $s1, 4
|
|
/* 18184C 80252F6C 0260202D */ daddu $a0, $s3, $zero
|
|
/* 181850 80252F70 0C0B1EAF */ jal get_variable
|
|
/* 181854 80252F74 0040802D */ daddu $s0, $v0, $zero
|
|
/* 181858 80252F78 0040902D */ daddu $s2, $v0, $zero
|
|
/* 18185C 80252F7C 8E250000 */ lw $a1, ($s1)
|
|
/* 181860 80252F80 26310004 */ addiu $s1, $s1, 4
|
|
/* 181864 80252F84 0C0B1EAF */ jal get_variable
|
|
/* 181868 80252F88 0260202D */ daddu $a0, $s3, $zero
|
|
/* 18186C 80252F8C 8E250000 */ lw $a1, ($s1)
|
|
/* 181870 80252F90 26310004 */ addiu $s1, $s1, 4
|
|
/* 181874 80252F94 0260202D */ daddu $a0, $s3, $zero
|
|
/* 181878 80252F98 0C0B1EAF */ jal get_variable
|
|
/* 18187C 80252F9C 0040A02D */ daddu $s4, $v0, $zero
|
|
/* 181880 80252FA0 3C01802A */ lui $at, %hi(gSpeakingActorTalkAnim)
|
|
/* 181884 80252FA4 AC22FA6C */ sw $v0, %lo(gSpeakingActorTalkAnim)($at)
|
|
/* 181888 80252FA8 8E250000 */ lw $a1, ($s1)
|
|
/* 18188C 80252FAC 0C0B1EAF */ jal get_variable
|
|
/* 181890 80252FB0 0260202D */ daddu $a0, $s3, $zero
|
|
/* 181894 80252FB4 3C01802A */ lui $at, %hi(gSpeakingActorIdleAnim)
|
|
/* 181898 80252FB8 AC22FA70 */ sw $v0, %lo(gSpeakingActorIdleAnim)($at)
|
|
/* 18189C 80252FBC 2402FF81 */ addiu $v0, $zero, -0x7f
|
|
/* 1818A0 80252FC0 16420002 */ bne $s2, $v0, .L80252FCC
|
|
/* 1818A4 80252FC4 00000000 */ nop
|
|
/* 1818A8 80252FC8 8E720148 */ lw $s2, 0x148($s3)
|
|
.L80252FCC:
|
|
/* 1818AC 80252FCC 0C09A75B */ jal get_actor
|
|
/* 1818B0 80252FD0 0240202D */ daddu $a0, $s2, $zero
|
|
/* 1818B4 80252FD4 0040882D */ daddu $s1, $v0, $zero
|
|
/* 1818B8 80252FD8 0220202D */ daddu $a0, $s1, $zero
|
|
/* 1818BC 80252FDC 0C099117 */ jal get_actor_part
|
|
/* 1818C0 80252FE0 0280282D */ daddu $a1, $s4, $zero
|
|
/* 1818C4 80252FE4 0040902D */ daddu $s2, $v0, $zero
|
|
/* 1818C8 80252FE8 86230150 */ lh $v1, 0x150($s1)
|
|
/* 1818CC 80252FEC C6200144 */ lwc1 $f0, 0x144($s1)
|
|
/* 1818D0 80252FF0 8E220000 */ lw $v0, ($s1)
|
|
/* 1818D4 80252FF4 3C01802A */ lui $at, %hi(gSpeakingActor)
|
|
/* 1818D8 80252FF8 AC31FA74 */ sw $s1, %lo(gSpeakingActor)($at)
|
|
/* 1818DC 80252FFC 3C01802A */ lui $at, %hi(gSpeakingActorPart)
|
|
/* 1818E0 80253000 AC32FA78 */ sw $s2, %lo(gSpeakingActorPart)($at)
|
|
/* 1818E4 80253004 44831000 */ mtc1 $v1, $f2
|
|
/* 1818E8 80253008 00000000 */ nop
|
|
/* 1818EC 8025300C 468010A0 */ cvt.s.w $f2, $f2
|
|
/* 1818F0 80253010 30428000 */ andi $v0, $v0, 0x8000
|
|
/* 1818F4 80253014 1440000D */ bnez $v0, .L8025304C
|
|
/* 1818F8 80253018 46020100 */ add.s $f4, $f0, $f2
|
|
/* 1818FC 8025301C 86220152 */ lh $v0, 0x152($s1)
|
|
/* 181900 80253020 C6200148 */ lwc1 $f0, 0x148($s1)
|
|
/* 181904 80253024 44821000 */ mtc1 $v0, $f2
|
|
/* 181908 80253028 00000000 */ nop
|
|
/* 18190C 8025302C 468010A0 */ cvt.s.w $f2, $f2
|
|
/* 181910 80253030 92220191 */ lbu $v0, 0x191($s1)
|
|
/* 181914 80253034 46020000 */ add.s $f0, $f0, $f2
|
|
/* 181918 80253038 44821000 */ mtc1 $v0, $f2
|
|
/* 18191C 8025303C 00000000 */ nop
|
|
/* 181920 80253040 468010A0 */ cvt.s.w $f2, $f2
|
|
/* 181924 80253044 08094C1F */ j .L8025307C
|
|
/* 181928 80253048 46001000 */ add.s $f0, $f2, $f0
|
|
.L8025304C:
|
|
/* 18192C 8025304C 86220152 */ lh $v0, 0x152($s1)
|
|
/* 181930 80253050 C6220148 */ lwc1 $f2, 0x148($s1)
|
|
/* 181934 80253054 44820000 */ mtc1 $v0, $f0
|
|
/* 181938 80253058 00000000 */ nop
|
|
/* 18193C 8025305C 46800020 */ cvt.s.w $f0, $f0
|
|
/* 181940 80253060 92220191 */ lbu $v0, 0x191($s1)
|
|
/* 181944 80253064 46001080 */ add.s $f2, $f2, $f0
|
|
/* 181948 80253068 00021042 */ srl $v0, $v0, 1
|
|
/* 18194C 8025306C 44820000 */ mtc1 $v0, $f0
|
|
/* 181950 80253070 00000000 */ nop
|
|
/* 181954 80253074 46800020 */ cvt.s.w $f0, $f0
|
|
/* 181958 80253078 46001000 */ add.s $f0, $f2, $f0
|
|
.L8025307C:
|
|
/* 18195C 8025307C 24040001 */ addiu $a0, $zero, 1
|
|
/* 181960 80253080 44052000 */ mfc1 $a1, $f4
|
|
/* 181964 80253084 44060000 */ mfc1 $a2, $f0
|
|
/* 181968 80253088 86230154 */ lh $v1, 0x154($s1)
|
|
/* 18196C 8025308C C622014C */ lwc1 $f2, 0x14c($s1)
|
|
/* 181970 80253090 27A20020 */ addiu $v0, $sp, 0x20
|
|
/* 181974 80253094 AFA20010 */ sw $v0, 0x10($sp)
|
|
/* 181978 80253098 44830000 */ mtc1 $v1, $f0
|
|
/* 18197C 8025309C 00000000 */ nop
|
|
/* 181980 802530A0 46800020 */ cvt.s.w $f0, $f0
|
|
/* 181984 802530A4 46001080 */ add.s $f2, $f2, $f0
|
|
/* 181988 802530A8 27A20024 */ addiu $v0, $sp, 0x24
|
|
/* 18198C 802530AC AFA20014 */ sw $v0, 0x14($sp)
|
|
/* 181990 802530B0 44071000 */ mfc1 $a3, $f2
|
|
/* 181994 802530B4 27A20028 */ addiu $v0, $sp, 0x28
|
|
/* 181998 802530B8 0C00B94E */ jal get_screen_coords
|
|
/* 18199C 802530BC AFA20018 */ sw $v0, 0x18($sp)
|
|
/* 1819A0 802530C0 0200202D */ daddu $a0, $s0, $zero
|
|
/* 1819A4 802530C4 3C05802A */ lui $a1, %hi(gSpeakingActorPrintIsDone)
|
|
/* 1819A8 802530C8 24A5FA68 */ addiu $a1, $a1, %lo(gSpeakingActorPrintIsDone)
|
|
/* 1819AC 802530CC 0C049640 */ jal load_string
|
|
/* 1819B0 802530D0 ACA00000 */ sw $zero, ($a1)
|
|
/* 1819B4 802530D4 8FA50020 */ lw $a1, 0x20($sp)
|
|
/* 1819B8 802530D8 8FA60024 */ lw $a2, 0x24($sp)
|
|
/* 1819BC 802530DC 0040202D */ daddu $a0, $v0, $zero
|
|
/* 1819C0 802530E0 3C01802A */ lui $at, %hi(gSpeakingActorPrintCtx)
|
|
/* 1819C4 802530E4 AC24FA60 */ sw $a0, %lo(gSpeakingActorPrintCtx)($at)
|
|
/* 1819C8 802530E8 0C0496AE */ jal clamp_printer_coords
|
|
/* 1819CC 802530EC 00000000 */ nop
|
|
/* 1819D0 802530F0 3C03800A */ lui $v1, %hi(D_8009A650)
|
|
/* 1819D4 802530F4 2463A650 */ addiu $v1, $v1, %lo(D_8009A650)
|
|
/* 1819D8 802530F8 AE600070 */ sw $zero, 0x70($s3)
|
|
/* 1819DC 802530FC 8C620000 */ lw $v0, ($v1)
|
|
/* 1819E0 80253100 3C06802A */ lui $a2, %hi(gSpeakingActorTalkAnim)
|
|
/* 1819E4 80253104 8CC6FA6C */ lw $a2, %lo(gSpeakingActorTalkAnim)($a2)
|
|
/* 1819E8 80253108 34420010 */ ori $v0, $v0, 0x10
|
|
/* 1819EC 8025310C 04C00004 */ bltz $a2, .L80253120
|
|
/* 1819F0 80253110 AC620000 */ sw $v0, ($v1)
|
|
/* 1819F4 80253114 0220202D */ daddu $a0, $s1, $zero
|
|
/* 1819F8 80253118 0C098F82 */ jal func_80263E08
|
|
/* 1819FC 8025311C 0240282D */ daddu $a1, $s2, $zero
|
|
.L80253120:
|
|
/* 181A00 80253120 0C03A6D5 */ jal increment_status_menu_disabled
|
|
/* 181A04 80253124 00000000 */ nop
|
|
.L80253128:
|
|
/* 181A08 80253128 8E620070 */ lw $v0, 0x70($s3)
|
|
/* 181A0C 8025312C 14400060 */ bnez $v0, .L802532B0
|
|
/* 181A10 80253130 0000102D */ daddu $v0, $zero, $zero
|
|
/* 181A14 80253134 3C11802A */ lui $s1, %hi(gSpeakingActor)
|
|
/* 181A18 80253138 8E31FA74 */ lw $s1, %lo(gSpeakingActor)($s1)
|
|
/* 181A1C 8025313C 3C12802A */ lui $s2, %hi(gSpeakingActorPart)
|
|
/* 181A20 80253140 8E52FA78 */ lw $s2, %lo(gSpeakingActorPart)($s2)
|
|
/* 181A24 80253144 86220150 */ lh $v0, 0x150($s1)
|
|
/* 181A28 80253148 C6200144 */ lwc1 $f0, 0x144($s1)
|
|
/* 181A2C 8025314C 44821000 */ mtc1 $v0, $f2
|
|
/* 181A30 80253150 00000000 */ nop
|
|
/* 181A34 80253154 468010A0 */ cvt.s.w $f2, $f2
|
|
/* 181A38 80253158 8E220000 */ lw $v0, ($s1)
|
|
/* 181A3C 8025315C 30428000 */ andi $v0, $v0, 0x8000
|
|
/* 181A40 80253160 1440000D */ bnez $v0, .L80253198
|
|
/* 181A44 80253164 46020100 */ add.s $f4, $f0, $f2
|
|
/* 181A48 80253168 86220152 */ lh $v0, 0x152($s1)
|
|
/* 181A4C 8025316C C6200148 */ lwc1 $f0, 0x148($s1)
|
|
/* 181A50 80253170 44821000 */ mtc1 $v0, $f2
|
|
/* 181A54 80253174 00000000 */ nop
|
|
/* 181A58 80253178 468010A0 */ cvt.s.w $f2, $f2
|
|
/* 181A5C 8025317C 92220191 */ lbu $v0, 0x191($s1)
|
|
/* 181A60 80253180 46020000 */ add.s $f0, $f0, $f2
|
|
/* 181A64 80253184 44821000 */ mtc1 $v0, $f2
|
|
/* 181A68 80253188 00000000 */ nop
|
|
/* 181A6C 8025318C 468010A0 */ cvt.s.w $f2, $f2
|
|
/* 181A70 80253190 08094C72 */ j .L802531C8
|
|
/* 181A74 80253194 46001000 */ add.s $f0, $f2, $f0
|
|
.L80253198:
|
|
/* 181A78 80253198 86220152 */ lh $v0, 0x152($s1)
|
|
/* 181A7C 8025319C C6220148 */ lwc1 $f2, 0x148($s1)
|
|
/* 181A80 802531A0 44820000 */ mtc1 $v0, $f0
|
|
/* 181A84 802531A4 00000000 */ nop
|
|
/* 181A88 802531A8 46800020 */ cvt.s.w $f0, $f0
|
|
/* 181A8C 802531AC 92220191 */ lbu $v0, 0x191($s1)
|
|
/* 181A90 802531B0 46001080 */ add.s $f2, $f2, $f0
|
|
/* 181A94 802531B4 00021042 */ srl $v0, $v0, 1
|
|
/* 181A98 802531B8 44820000 */ mtc1 $v0, $f0
|
|
/* 181A9C 802531BC 00000000 */ nop
|
|
/* 181AA0 802531C0 46800020 */ cvt.s.w $f0, $f0
|
|
/* 181AA4 802531C4 46001000 */ add.s $f0, $f2, $f0
|
|
.L802531C8:
|
|
/* 181AA8 802531C8 24040001 */ addiu $a0, $zero, 1
|
|
/* 181AAC 802531CC 44052000 */ mfc1 $a1, $f4
|
|
/* 181AB0 802531D0 44060000 */ mfc1 $a2, $f0
|
|
/* 181AB4 802531D4 86230154 */ lh $v1, 0x154($s1)
|
|
/* 181AB8 802531D8 C622014C */ lwc1 $f2, 0x14c($s1)
|
|
/* 181ABC 802531DC 27A20020 */ addiu $v0, $sp, 0x20
|
|
/* 181AC0 802531E0 AFA20010 */ sw $v0, 0x10($sp)
|
|
/* 181AC4 802531E4 44830000 */ mtc1 $v1, $f0
|
|
/* 181AC8 802531E8 00000000 */ nop
|
|
/* 181ACC 802531EC 46800020 */ cvt.s.w $f0, $f0
|
|
/* 181AD0 802531F0 46001080 */ add.s $f2, $f2, $f0
|
|
/* 181AD4 802531F4 27A20024 */ addiu $v0, $sp, 0x24
|
|
/* 181AD8 802531F8 AFA20014 */ sw $v0, 0x14($sp)
|
|
/* 181ADC 802531FC 44071000 */ mfc1 $a3, $f2
|
|
/* 181AE0 80253200 27A20028 */ addiu $v0, $sp, 0x28
|
|
/* 181AE4 80253204 0C00B94E */ jal get_screen_coords
|
|
/* 181AE8 80253208 AFA20018 */ sw $v0, 0x18($sp)
|
|
/* 181AEC 8025320C 3C10802A */ lui $s0, %hi(gSpeakingActorPrintCtx)
|
|
/* 181AF0 80253210 2610FA60 */ addiu $s0, $s0, %lo(gSpeakingActorPrintCtx)
|
|
/* 181AF4 80253214 8E040000 */ lw $a0, ($s0)
|
|
/* 181AF8 80253218 8FA50020 */ lw $a1, 0x20($sp)
|
|
/* 181AFC 8025321C 0C0496AE */ jal clamp_printer_coords
|
|
/* 181B00 80253220 8FA60024 */ lw $a2, 0x24($sp)
|
|
/* 181B04 80253224 8E020000 */ lw $v0, ($s0)
|
|
/* 181B08 80253228 8C4304FC */ lw $v1, 0x4fc($v0)
|
|
/* 181B0C 8025322C 30620040 */ andi $v0, $v1, 0x40
|
|
/* 181B10 80253230 10400005 */ beqz $v0, .L80253248
|
|
/* 181B14 80253234 30620080 */ andi $v0, $v1, 0x80
|
|
/* 181B18 80253238 0C03A6CC */ jal decrement_status_menu_disabled
|
|
/* 181B1C 8025323C 00000000 */ nop
|
|
/* 181B20 80253240 08094CAC */ j .L802532B0
|
|
/* 181B24 80253244 24020001 */ addiu $v0, $zero, 1
|
|
.L80253248:
|
|
/* 181B28 80253248 10400005 */ beqz $v0, .L80253260
|
|
/* 181B2C 8025324C 00000000 */ nop
|
|
/* 181B30 80253250 3C06802A */ lui $a2, %hi(gSpeakingActorTalkAnim)
|
|
/* 181B34 80253254 8CC6FA6C */ lw $a2, %lo(gSpeakingActorTalkAnim)($a2)
|
|
/* 181B38 80253258 08094C9A */ j .L80253268
|
|
/* 181B3C 8025325C 00000000 */ nop
|
|
.L80253260:
|
|
/* 181B40 80253260 3C06802A */ lui $a2, %hi(gSpeakingActorIdleAnim)
|
|
/* 181B44 80253264 8CC6FA70 */ lw $a2, %lo(gSpeakingActorIdleAnim)($a2)
|
|
.L80253268:
|
|
/* 181B48 80253268 04C00003 */ bltz $a2, .L80253278
|
|
/* 181B4C 8025326C 0220202D */ daddu $a0, $s1, $zero
|
|
/* 181B50 80253270 0C098F82 */ jal func_80263E08
|
|
/* 181B54 80253274 0240282D */ daddu $a1, $s2, $zero
|
|
.L80253278:
|
|
/* 181B58 80253278 3C03802A */ lui $v1, %hi(gSpeakingActorPrintIsDone)
|
|
/* 181B5C 8025327C 8C63FA68 */ lw $v1, %lo(gSpeakingActorPrintIsDone)($v1)
|
|
/* 181B60 80253280 24020001 */ addiu $v0, $zero, 1
|
|
/* 181B64 80253284 1462000A */ bne $v1, $v0, .L802532B0
|
|
/* 181B68 80253288 0000102D */ daddu $v0, $zero, $zero
|
|
/* 181B6C 8025328C 0C03A6CC */ jal decrement_status_menu_disabled
|
|
/* 181B70 80253290 00000000 */ nop
|
|
/* 181B74 80253294 24020001 */ addiu $v0, $zero, 1
|
|
/* 181B78 80253298 3C03800A */ lui $v1, %hi(D_8009A650)
|
|
/* 181B7C 8025329C 2463A650 */ addiu $v1, $v1, %lo(D_8009A650)
|
|
/* 181B80 802532A0 8C640000 */ lw $a0, ($v1)
|
|
/* 181B84 802532A4 2405FFEF */ addiu $a1, $zero, -0x11
|
|
/* 181B88 802532A8 00852024 */ and $a0, $a0, $a1
|
|
/* 181B8C 802532AC AC640000 */ sw $a0, ($v1)
|
|
.L802532B0:
|
|
/* 181B90 802532B0 8FBF0044 */ lw $ra, 0x44($sp)
|
|
/* 181B94 802532B4 8FB40040 */ lw $s4, 0x40($sp)
|
|
/* 181B98 802532B8 8FB3003C */ lw $s3, 0x3c($sp)
|
|
/* 181B9C 802532BC 8FB20038 */ lw $s2, 0x38($sp)
|
|
/* 181BA0 802532C0 8FB10034 */ lw $s1, 0x34($sp)
|
|
/* 181BA4 802532C4 8FB00030 */ lw $s0, 0x30($sp)
|
|
/* 181BA8 802532C8 03E00008 */ jr $ra
|
|
/* 181BAC 802532CC 27BD0048 */ addiu $sp, $sp, 0x48
|