Match check_conversation_trigger (#508)

* Match check_conversation_trigger

* Delete check_conversation_trigger.s

* Address comments

thanks alex

Co-authored-by: Alex Bates <hi@imalex.xyz>

Co-authored-by: Alex Bates <hi@imalex.xyz>
This commit is contained in:
JoshDuMan 2021-10-31 00:02:01 -04:00 committed by GitHub
parent a8c85b377a
commit 14d3ac1aaa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 97 additions and 426 deletions

View File

@ -469,38 +469,28 @@ void update_encounters_conversation(void) {
void draw_encounters_conversation(void) {
}
// Mostly stack diffs, some issues with accessing fields from EncounterStatus at the very end
#ifdef NON_MATCHING
s8 check_conversation_trigger(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
Camera* camera = &gCameras[gCurrentCameraID];
f32 npcX;
f32 npcY;
f32 npcZ;
EncounterStatus* encounterStatus = &gCurrentEncounter;
f32 npcX, npcY, npcZ;
f32 angle;
f32 playerColliderRadius;
f32 deltaX, deltaZ;
Encounter* encounter;
f32 playerX, playerY, playerZ;
f32 playerColliderHeight;
f32 deltaX;
f32 deltaZ;
f32 playerX;
f32 playerY;
f32 playerZ;
f32 playerColliderRadius;
f32 length;
f32 npcCollisionHeight;
f32 npcCollisionRadius;
Encounter* encounter;
Encounter* encounterTemp;
Npc* npc;
Npc* encounterNpc;
Enemy* enemy;
Enemy* encounterEnemy;
f32 minLength;
f32 xTemp;
f32 yTemp;
f32 zTemp;
s32 i;
s32 j;
f32 xTemp, yTemp, zTemp;
s32 i, j;
playerStatus->unk_C8 = NULL;
playerStatus->flags &= ~0x2000000;
@ -510,105 +500,111 @@ s8 check_conversation_trigger(void) {
playerY = playerStatus->position.y;
playerZ = playerStatus->position.z;
if (gPartnerActionStatus.actionState.b[0] == 0) {
encounter = NULL;
npc = NULL;
enemy = NULL;
minLength = 65535.0f;
if (gPartnerActionStatus.actionState.b[0] != 0) {
return FALSE;
}
encounter = NULL;
npc = NULL;
enemy = NULL;
minLength = 65535.0f;
for (i = 0; i < gCurrentEncounter.numEncounters; i++) {
encounterTemp = gCurrentEncounter.encounterList[i];
for (i = 0; i < encounterStatus->numEncounters; i++) {
encounterTemp = encounterStatus->encounterList[i];
if (encounterTemp == NULL) {
if (encounterTemp == NULL) {
continue;
}
for (j = 0; j < encounterTemp->count; j++) {
encounterEnemy = encounterTemp->enemy[j];
if (encounterEnemy == NULL) {
continue;
}
for (j = 0; j < encounterTemp->count; j++) {
encounterEnemy = encounterTemp->enemy[j];
if (encounterEnemy->flags & 0x80000020) {
continue;
}
if (encounterEnemy == NULL) {
if (!(encounterEnemy->flags & 1)) {
continue;
}
if ((encounterEnemy->flags & 0x8000000) || encounterEnemy->interactBytecode == NULL) {
continue;
}
encounterNpc = get_npc_unsafe(encounterEnemy->npcID);
npcX = encounterNpc->pos.x;
npcY = encounterNpc->pos.y;
npcZ = encounterNpc->pos.z;
deltaX = npcX - playerX;
deltaZ = npcZ - playerZ;
npcCollisionHeight = encounterNpc->collisionHeight;
npcCollisionRadius = encounterNpc->collisionRadius;
length = sqrtf(SQ(deltaX) + SQ(deltaZ));
if ((playerColliderRadius + npcCollisionRadius <= length) ||
(npcY + npcCollisionHeight < playerY) ||
(playerY + playerColliderHeight < npcY)) {
continue;
}
if (clamp_angle(playerStatus->spriteFacingAngle) < 180.0f) {
angle = clamp_angle(camera->currentYaw - 120.0f);
if (playerStatus->trueAnimation & 0x1000000) {
angle = clamp_angle(angle + 60.0f);
}
} else {
angle = clamp_angle(camera->currentYaw + 120.0f);
if (playerStatus->trueAnimation & 0x1000000) {
angle = clamp_angle(angle - 60.0f);
}
}
if (fabsf(get_clamped_angle_diff(angle, atan2(playerX, playerZ, npcX, npcZ))) > 90.0f) {
continue;
}
if (!(encounterEnemy->flags & 0x10000) && encounterNpc->flags & 0x20000000) {
xTemp = npcX;
yTemp = npcY;
zTemp = npcZ;
if (npc_test_move_taller_with_slipping(0, &xTemp, &yTemp, &zTemp, length,
atan2(npcX, npcZ, playerX, playerZ),
npcCollisionHeight,
2.0f * npcCollisionRadius) != 0) {
continue;
}
}
if (!(encounterEnemy->flags & 0x80000020)) {
if (encounterEnemy->flags & 1) {
if (!(encounterEnemy->flags & 0x8000000) && encounterEnemy->interactBytecode != NULL) {
encounterNpc = get_npc_unsafe(encounterEnemy->npcID);
npcX = encounterNpc->pos.x;
npcY = encounterNpc->pos.y;
npcZ = encounterNpc->pos.z;
deltaX = npcX - playerX;
deltaZ = npcZ - playerZ;
npcCollisionHeight = encounterNpc->collisionHeight;
npcCollisionRadius = encounterNpc->collisionRadius;
length = sqrtf(SQ(deltaX) + SQ(deltaZ));
if (!(playerColliderRadius + npcCollisionRadius <= length) &&
!(npcY + npcCollisionHeight < playerY) &&
!(playerY + playerColliderHeight < npcY)) {
if (clamp_angle(playerStatus->spriteFacingAngle) < 180.0f) {
angle = clamp_angle(camera->currentYaw - 120.0f);
if (playerStatus->trueAnimation & 0x1000000) {
angle = clamp_angle(angle + 60.0f);
}
} else {
angle = clamp_angle(camera->currentYaw + 120.0f);
if (playerStatus->trueAnimation & 0x1000000) {
angle = clamp_angle(angle - 60.0f);
}
}
if (fabsf(get_clamped_angle_diff(angle, atan2(playerX, playerZ, npcX, npcZ))) > 90.0f) {
continue;
}
if (!(encounterEnemy->flags & 0x10000) && encounterNpc->flags & 0x20000000) {
xTemp = npcX;
yTemp = npcY;
zTemp = npcZ;
if (npc_test_move_taller_with_slipping(0, &xTemp, &yTemp, &zTemp, length,
atan2(npcX, npcZ, playerX, playerZ),
npcCollisionHeight,
2.0f * npcCollisionRadius) != 0) {
continue;
}
}
if (length < minLength) {
minLength = length;
encounter = encounterTemp;
npc = encounterNpc;
enemy = encounterEnemy;
}
}
}
}
}
if (length < minLength) {
minLength = length;
encounter = encounterTemp;
npc = encounterNpc;
enemy = encounterEnemy;
}
}
}
if (!(playerStatus->animFlags & 0x4000) && npc != NULL && !is_picking_up_item()) {
playerStatus->unk_C8 = npc;
playerStatus->flags |= 0x2000000;
if (playerStatus->pressedButtons & BUTTON_A) {
close_status_menu();
enemy->encountered = 5;
gCurrentEncounter.hitType = 5;
gCurrentEncounter.currentEncounter = encounter;
gCurrentEncounter.currentEnemy = enemy;
gCurrentEncounter.eFirstStrike = FIRST_STRIKE_PLAYER;
return TRUE;
}
if (!(playerStatus->animFlags & PLAYER_ANIM_FLAG_8BIT_MARIO) && npc != NULL && !is_picking_up_item()) {
playerStatus->unk_C8 = npc;
playerStatus->flags |= 0x2000000;
if (playerStatus->pressedButtons & BUTTON_A) {
close_status_menu();
gCurrentEncounter.hitType = ENCOUNTER_TRIGGER_CONVERSATION;
enemy->encountered = ENCOUNTER_TRIGGER_CONVERSATION;
encounterStatus->currentEncounter = encounter;
encounterStatus->currentEnemy = enemy;
encounterStatus->eFirstStrike = FIRST_STRIKE_PLAYER;
return TRUE;
}
}
return FALSE;
}
#else
INCLUDE_ASM(s32, "1a1f0_len_5390", check_conversation_trigger);
#endif
INCLUDE_ASM(s32, "1a1f0_len_5390", create_encounters);

View File

@ -1,325 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel check_conversation_trigger
/* 1E5DC 800431DC 27BDFF58 */ addiu $sp, $sp, -0xa8
/* 1E5E0 800431E0 3C03FDFF */ lui $v1, 0xfdff
/* 1E5E4 800431E4 AFB40060 */ sw $s4, 0x60($sp)
/* 1E5E8 800431E8 3C148011 */ lui $s4, %hi(gPlayerStatus)
/* 1E5EC 800431EC 2694EFC8 */ addiu $s4, $s4, %lo(gPlayerStatus)
/* 1E5F0 800431F0 AFBF0074 */ sw $ra, 0x74($sp)
/* 1E5F4 800431F4 AFBE0070 */ sw $fp, 0x70($sp)
/* 1E5F8 800431F8 AFB7006C */ sw $s7, 0x6c($sp)
/* 1E5FC 800431FC AFB60068 */ sw $s6, 0x68($sp)
/* 1E600 80043200 AFB50064 */ sw $s5, 0x64($sp)
/* 1E604 80043204 AFB3005C */ sw $s3, 0x5c($sp)
/* 1E608 80043208 AFB20058 */ sw $s2, 0x58($sp)
/* 1E60C 8004320C AFB10054 */ sw $s1, 0x54($sp)
/* 1E610 80043210 AFB00050 */ sw $s0, 0x50($sp)
/* 1E614 80043214 F7BE00A0 */ sdc1 $f30, 0xa0($sp)
/* 1E618 80043218 F7BC0098 */ sdc1 $f28, 0x98($sp)
/* 1E61C 8004321C F7BA0090 */ sdc1 $f26, 0x90($sp)
/* 1E620 80043220 F7B80088 */ sdc1 $f24, 0x88($sp)
/* 1E624 80043224 F7B60080 */ sdc1 $f22, 0x80($sp)
/* 1E628 80043228 F7B40078 */ sdc1 $f20, 0x78($sp)
/* 1E62C 8004322C 8E820000 */ lw $v0, ($s4)
/* 1E630 80043230 3463FFFF */ ori $v1, $v1, 0xffff
/* 1E634 80043234 00431024 */ and $v0, $v0, $v1
/* 1E638 80043238 3C038007 */ lui $v1, %hi(gCurrentCameraID)
/* 1E63C 8004323C 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1)
/* 1E640 80043240 3C04800B */ lui $a0, %hi(gCameras)
/* 1E644 80043244 24841D80 */ addiu $a0, $a0, %lo(gCameras)
/* 1E648 80043248 AE8000C8 */ sw $zero, 0xc8($s4)
/* 1E64C 8004324C AE820000 */ sw $v0, ($s4)
/* 1E650 80043250 00031080 */ sll $v0, $v1, 2
/* 1E654 80043254 00431021 */ addu $v0, $v0, $v1
/* 1E658 80043258 00021080 */ sll $v0, $v0, 2
/* 1E65C 8004325C 00431023 */ subu $v0, $v0, $v1
/* 1E660 80043260 000218C0 */ sll $v1, $v0, 3
/* 1E664 80043264 00431021 */ addu $v0, $v0, $v1
/* 1E668 80043268 000210C0 */ sll $v0, $v0, 3
/* 1E66C 8004326C 0044B821 */ addu $s7, $v0, $a0
/* 1E670 80043270 868200B0 */ lh $v0, 0xb0($s4)
/* 1E674 80043274 968300B2 */ lhu $v1, 0xb2($s4)
/* 1E678 80043278 44823000 */ mtc1 $v0, $f6
/* 1E67C 8004327C 00000000 */ nop
/* 1E680 80043280 468031A0 */ cvt.s.w $f6, $f6
/* 1E684 80043284 00031C00 */ sll $v1, $v1, 0x10
/* 1E688 80043288 00031403 */ sra $v0, $v1, 0x10
/* 1E68C 8004328C 00031FC2 */ srl $v1, $v1, 0x1f
/* 1E690 80043290 00431021 */ addu $v0, $v0, $v1
/* 1E694 80043294 00021043 */ sra $v0, $v0, 1
/* 1E698 80043298 44824000 */ mtc1 $v0, $f8
/* 1E69C 8004329C 00000000 */ nop
/* 1E6A0 800432A0 46804220 */ cvt.s.w $f8, $f8
/* 1E6A4 800432A4 E7A6003C */ swc1 $f6, 0x3c($sp)
/* 1E6A8 800432A8 E7A80040 */ swc1 $f8, 0x40($sp)
/* 1E6AC 800432AC C6860028 */ lwc1 $f6, 0x28($s4)
/* 1E6B0 800432B0 3C028011 */ lui $v0, %hi(gPartnerActionStatus)
/* 1E6B4 800432B4 8042EBB0 */ lb $v0, %lo(gPartnerActionStatus)($v0)
/* 1E6B8 800432B8 E7A60030 */ swc1 $f6, 0x30($sp)
/* 1E6BC 800432BC C688002C */ lwc1 $f8, 0x2c($s4)
/* 1E6C0 800432C0 E7A80034 */ swc1 $f8, 0x34($sp)
/* 1E6C4 800432C4 C6860030 */ lwc1 $f6, 0x30($s4)
/* 1E6C8 800432C8 144000E6 */ bnez $v0, .L80043664
/* 1E6CC 800432CC E7A60038 */ swc1 $f6, 0x38($sp)
/* 1E6D0 800432D0 0000F02D */ daddu $fp, $zero, $zero
/* 1E6D4 800432D4 03C0A82D */ daddu $s5, $fp, $zero
/* 1E6D8 800432D8 3C02800B */ lui $v0, %hi(gCurrentEncounter+0x1C)
/* 1E6DC 800432DC 80420F2C */ lb $v0, %lo(gCurrentEncounter+0x1C)($v0)
/* 1E6E0 800432E0 3C01477F */ lui $at, 0x477f
/* 1E6E4 800432E4 3421FF00 */ ori $at, $at, 0xff00
/* 1E6E8 800432E8 44814000 */ mtc1 $at, $f8
/* 1E6EC 800432EC 03C0B02D */ daddu $s6, $fp, $zero
/* 1E6F0 800432F0 AFA0002C */ sw $zero, 0x2c($sp)
/* 1E6F4 800432F4 184000B8 */ blez $v0, .L800435D8
/* 1E6F8 800432F8 E7A80048 */ swc1 $f8, 0x48($sp)
/* 1E6FC 800432FC 00151080 */ sll $v0, $s5, 2
.L80043300:
/* 1E700 80043300 3C08800B */ lui $t0, %hi(gCurrentEncounter)
/* 1E704 80043304 25080F10 */ addiu $t0, $t0, %lo(gCurrentEncounter)
/* 1E708 80043308 01021021 */ addu $v0, $t0, $v0
/* 1E70C 8004330C 8C530028 */ lw $s3, 0x28($v0)
/* 1E710 80043310 126000AB */ beqz $s3, .L800435C0
/* 1E714 80043314 00000000 */ nop
/* 1E718 80043318 8E620000 */ lw $v0, ($s3)
/* 1E71C 8004331C 184000A8 */ blez $v0, .L800435C0
/* 1E720 80043320 0000902D */ daddu $s2, $zero, $zero
/* 1E724 80043324 00121080 */ sll $v0, $s2, 2
.L80043328:
/* 1E728 80043328 02621021 */ addu $v0, $s3, $v0
/* 1E72C 8004332C 8C510004 */ lw $s1, 4($v0)
/* 1E730 80043330 1220009E */ beqz $s1, .L800435AC
/* 1E734 80043334 3C028000 */ lui $v0, 0x8000
/* 1E738 80043338 8E230000 */ lw $v1, ($s1)
/* 1E73C 8004333C 34420020 */ ori $v0, $v0, 0x20
/* 1E740 80043340 00621024 */ and $v0, $v1, $v0
/* 1E744 80043344 14400099 */ bnez $v0, .L800435AC
/* 1E748 80043348 30620001 */ andi $v0, $v1, 1
/* 1E74C 8004334C 10400097 */ beqz $v0, .L800435AC
/* 1E750 80043350 3C020800 */ lui $v0, 0x800
/* 1E754 80043354 00621024 */ and $v0, $v1, $v0
/* 1E758 80043358 14400094 */ bnez $v0, .L800435AC
/* 1E75C 8004335C 00000000 */ nop
/* 1E760 80043360 8E220020 */ lw $v0, 0x20($s1)
/* 1E764 80043364 10400091 */ beqz $v0, .L800435AC
/* 1E768 80043368 00000000 */ nop
/* 1E76C 8004336C 0C00EABB */ jal get_npc_unsafe
/* 1E770 80043370 86240008 */ lh $a0, 8($s1)
/* 1E774 80043374 0040802D */ daddu $s0, $v0, $zero
/* 1E778 80043378 C45A0038 */ lwc1 $f26, 0x38($v0)
/* 1E77C 8004337C C7A60030 */ lwc1 $f6, 0x30($sp)
/* 1E780 80043380 4606D081 */ sub.s $f2, $f26, $f6
/* 1E784 80043384 46021082 */ mul.s $f2, $f2, $f2
/* 1E788 80043388 00000000 */ nop
/* 1E78C 8004338C C61C0040 */ lwc1 $f28, 0x40($s0)
/* 1E790 80043390 C7A80038 */ lwc1 $f8, 0x38($sp)
/* 1E794 80043394 4608E001 */ sub.s $f0, $f28, $f8
/* 1E798 80043398 46000002 */ mul.s $f0, $f0, $f0
/* 1E79C 8004339C 00000000 */ nop
/* 1E7A0 800433A0 860200A8 */ lh $v0, 0xa8($s0)
/* 1E7A4 800433A4 860300A6 */ lh $v1, 0xa6($s0)
/* 1E7A8 800433A8 44823000 */ mtc1 $v0, $f6
/* 1E7AC 800433AC 00000000 */ nop
/* 1E7B0 800433B0 468031A0 */ cvt.s.w $f6, $f6
/* 1E7B4 800433B4 4483F000 */ mtc1 $v1, $f30
/* 1E7B8 800433B8 00000000 */ nop
/* 1E7BC 800433BC 4680F7A0 */ cvt.s.w $f30, $f30
/* 1E7C0 800433C0 46001300 */ add.s $f12, $f2, $f0
/* 1E7C4 800433C4 E7A60044 */ swc1 $f6, 0x44($sp)
/* 1E7C8 800433C8 C618003C */ lwc1 $f24, 0x3c($s0)
/* 1E7CC 800433CC 46006104 */ sqrt.s $f4, $f12
/* 1E7D0 800433D0 46042032 */ c.eq.s $f4, $f4
/* 1E7D4 800433D4 00000000 */ nop
/* 1E7D8 800433D8 45010004 */ bc1t .L800433EC
/* 1E7DC 800433DC 00000000 */ nop
/* 1E7E0 800433E0 0C0187BC */ jal sqrtf
/* 1E7E4 800433E4 00000000 */ nop
/* 1E7E8 800433E8 46000106 */ mov.s $f4, $f0
.L800433EC:
/* 1E7EC 800433EC C7A80040 */ lwc1 $f8, 0x40($sp)
/* 1E7F0 800433F0 461E4000 */ add.s $f0, $f8, $f30
/* 1E7F4 800433F4 46002586 */ mov.s $f22, $f4
/* 1E7F8 800433F8 4616003E */ c.le.s $f0, $f22
/* 1E7FC 800433FC 00000000 */ nop
/* 1E800 80043400 4501006A */ bc1t .L800435AC
/* 1E804 80043404 00000000 */ nop
/* 1E808 80043408 C7A60044 */ lwc1 $f6, 0x44($sp)
/* 1E80C 8004340C 4606C000 */ add.s $f0, $f24, $f6
/* 1E810 80043410 C7A80034 */ lwc1 $f8, 0x34($sp)
/* 1E814 80043414 4608003C */ c.lt.s $f0, $f8
/* 1E818 80043418 00000000 */ nop
/* 1E81C 8004341C 45010063 */ bc1t .L800435AC
/* 1E820 80043420 00000000 */ nop
/* 1E824 80043424 C7A6003C */ lwc1 $f6, 0x3c($sp)
/* 1E828 80043428 46064000 */ add.s $f0, $f8, $f6
/* 1E82C 8004342C 4618003C */ c.lt.s $f0, $f24
/* 1E830 80043430 00000000 */ nop
/* 1E834 80043434 4501005D */ bc1t .L800435AC
/* 1E838 80043438 00000000 */ nop
/* 1E83C 8004343C 0C00A6C9 */ jal clamp_angle
/* 1E840 80043440 C68C00A8 */ lwc1 $f12, 0xa8($s4)
/* 1E844 80043444 3C014334 */ lui $at, 0x4334
/* 1E848 80043448 44811000 */ mtc1 $at, $f2
/* 1E84C 8004344C 00000000 */ nop
/* 1E850 80043450 4602003C */ c.lt.s $f0, $f2
/* 1E854 80043454 00000000 */ nop
/* 1E858 80043458 4500000F */ bc1f .L80043498
/* 1E85C 8004345C 00000000 */ nop
/* 1E860 80043460 C6EC006C */ lwc1 $f12, 0x6c($s7)
/* 1E864 80043464 3C0142F0 */ lui $at, 0x42f0
/* 1E868 80043468 44814000 */ mtc1 $at, $f8
/* 1E86C 8004346C 0C00A6C9 */ jal clamp_angle
/* 1E870 80043470 46086301 */ sub.s $f12, $f12, $f8
/* 1E874 80043474 8E8200A4 */ lw $v0, 0xa4($s4)
/* 1E878 80043478 3C080100 */ lui $t0, 0x100
/* 1E87C 8004347C 00481024 */ and $v0, $v0, $t0
/* 1E880 80043480 10400016 */ beqz $v0, .L800434DC
/* 1E884 80043484 46000506 */ mov.s $f20, $f0
/* 1E888 80043488 3C014270 */ lui $at, 0x4270
/* 1E88C 8004348C 44813000 */ mtc1 $at, $f6
/* 1E890 80043490 08010D34 */ j .L800434D0
/* 1E894 80043494 4606A300 */ add.s $f12, $f20, $f6
.L80043498:
/* 1E898 80043498 C6EC006C */ lwc1 $f12, 0x6c($s7)
/* 1E89C 8004349C 3C0142F0 */ lui $at, 0x42f0
/* 1E8A0 800434A0 44814000 */ mtc1 $at, $f8
/* 1E8A4 800434A4 0C00A6C9 */ jal clamp_angle
/* 1E8A8 800434A8 46086300 */ add.s $f12, $f12, $f8
/* 1E8AC 800434AC 8E8200A4 */ lw $v0, 0xa4($s4)
/* 1E8B0 800434B0 3C080100 */ lui $t0, 0x100
/* 1E8B4 800434B4 00481024 */ and $v0, $v0, $t0
/* 1E8B8 800434B8 10400008 */ beqz $v0, .L800434DC
/* 1E8BC 800434BC 46000506 */ mov.s $f20, $f0
/* 1E8C0 800434C0 3C014270 */ lui $at, 0x4270
/* 1E8C4 800434C4 44813000 */ mtc1 $at, $f6
/* 1E8C8 800434C8 00000000 */ nop
/* 1E8CC 800434CC 4606A301 */ sub.s $f12, $f20, $f6
.L800434D0:
/* 1E8D0 800434D0 0C00A6C9 */ jal clamp_angle
/* 1E8D4 800434D4 00000000 */ nop
/* 1E8D8 800434D8 46000506 */ mov.s $f20, $f0
.L800434DC:
/* 1E8DC 800434DC C7AC0030 */ lwc1 $f12, 0x30($sp)
/* 1E8E0 800434E0 4406D000 */ mfc1 $a2, $f26
/* 1E8E4 800434E4 4407E000 */ mfc1 $a3, $f28
/* 1E8E8 800434E8 0C00A720 */ jal atan2
/* 1E8EC 800434EC C7AE0038 */ lwc1 $f14, 0x38($sp)
/* 1E8F0 800434F0 4600A306 */ mov.s $f12, $f20
/* 1E8F4 800434F4 0C00A70A */ jal get_clamped_angle_diff
/* 1E8F8 800434F8 46000386 */ mov.s $f14, $f0
/* 1E8FC 800434FC 3C0142B4 */ lui $at, 0x42b4
/* 1E900 80043500 44811000 */ mtc1 $at, $f2
/* 1E904 80043504 46000005 */ abs.s $f0, $f0
/* 1E908 80043508 4600103C */ c.lt.s $f2, $f0
/* 1E90C 8004350C 00000000 */ nop
/* 1E910 80043510 45010026 */ bc1t .L800435AC
/* 1E914 80043514 3C030001 */ lui $v1, 1
/* 1E918 80043518 8E220000 */ lw $v0, ($s1)
/* 1E91C 8004351C 00431024 */ and $v0, $v0, $v1
/* 1E920 80043520 14400019 */ bnez $v0, .L80043588
/* 1E924 80043524 3C032000 */ lui $v1, 0x2000
/* 1E928 80043528 8E020000 */ lw $v0, ($s0)
/* 1E92C 8004352C 00431024 */ and $v0, $v0, $v1
/* 1E930 80043530 10400015 */ beqz $v0, .L80043588
/* 1E934 80043534 4600D306 */ mov.s $f12, $f26
/* 1E938 80043538 8FA60030 */ lw $a2, 0x30($sp)
/* 1E93C 8004353C 8FA70038 */ lw $a3, 0x38($sp)
/* 1E940 80043540 4600E386 */ mov.s $f14, $f28
/* 1E944 80043544 E7AC0020 */ swc1 $f12, 0x20($sp)
/* 1E948 80043548 E7B80024 */ swc1 $f24, 0x24($sp)
/* 1E94C 8004354C 0C00A720 */ jal atan2
/* 1E950 80043550 E7AE0028 */ swc1 $f14, 0x28($sp)
/* 1E954 80043554 0000202D */ daddu $a0, $zero, $zero
/* 1E958 80043558 27A60024 */ addiu $a2, $sp, 0x24
/* 1E95C 8004355C 27A70028 */ addiu $a3, $sp, 0x28
/* 1E960 80043560 27A50020 */ addiu $a1, $sp, 0x20
/* 1E964 80043564 C7A80044 */ lwc1 $f8, 0x44($sp)
/* 1E968 80043568 461EF080 */ add.s $f2, $f30, $f30
/* 1E96C 8004356C E7B60010 */ swc1 $f22, 0x10($sp)
/* 1E970 80043570 E7A00014 */ swc1 $f0, 0x14($sp)
/* 1E974 80043574 E7A80018 */ swc1 $f8, 0x18($sp)
/* 1E978 80043578 0C0376B9 */ jal npc_test_move_taller_with_slipping
/* 1E97C 8004357C E7A2001C */ swc1 $f2, 0x1c($sp)
/* 1E980 80043580 1440000A */ bnez $v0, .L800435AC
/* 1E984 80043584 00000000 */ nop
.L80043588:
/* 1E988 80043588 C7A60048 */ lwc1 $f6, 0x48($sp)
/* 1E98C 8004358C 4606B03C */ c.lt.s $f22, $f6
/* 1E990 80043590 00000000 */ nop
/* 1E994 80043594 45000005 */ bc1f .L800435AC
/* 1E998 80043598 00000000 */ nop
/* 1E99C 8004359C 0200F02D */ daddu $fp, $s0, $zero
/* 1E9A0 800435A0 0220B02D */ daddu $s6, $s1, $zero
/* 1E9A4 800435A4 E7B60048 */ swc1 $f22, 0x48($sp)
/* 1E9A8 800435A8 AFB3002C */ sw $s3, 0x2c($sp)
.L800435AC:
/* 1E9AC 800435AC 8E620000 */ lw $v0, ($s3)
/* 1E9B0 800435B0 26520001 */ addiu $s2, $s2, 1
/* 1E9B4 800435B4 0242102A */ slt $v0, $s2, $v0
/* 1E9B8 800435B8 1440FF5B */ bnez $v0, .L80043328
/* 1E9BC 800435BC 00121080 */ sll $v0, $s2, 2
.L800435C0:
/* 1E9C0 800435C0 3C02800B */ lui $v0, %hi(gCurrentEncounter+0x1C)
/* 1E9C4 800435C4 80420F2C */ lb $v0, %lo(gCurrentEncounter+0x1C)($v0)
/* 1E9C8 800435C8 26B50001 */ addiu $s5, $s5, 1
/* 1E9CC 800435CC 02A2102A */ slt $v0, $s5, $v0
/* 1E9D0 800435D0 1440FF4B */ bnez $v0, .L80043300
/* 1E9D4 800435D4 00151080 */ sll $v0, $s5, 2
.L800435D8:
/* 1E9D8 800435D8 8E820004 */ lw $v0, 4($s4)
/* 1E9DC 800435DC 30424000 */ andi $v0, $v0, 0x4000
/* 1E9E0 800435E0 14400021 */ bnez $v0, .L80043668
/* 1E9E4 800435E4 0000102D */ daddu $v0, $zero, $zero
/* 1E9E8 800435E8 13C0001F */ beqz $fp, .L80043668
/* 1E9EC 800435EC 00000000 */ nop
/* 1E9F0 800435F0 0C04D07A */ jal is_picking_up_item
/* 1E9F4 800435F4 00000000 */ nop
/* 1E9F8 800435F8 1440001B */ bnez $v0, .L80043668
/* 1E9FC 800435FC 0000102D */ daddu $v0, $zero, $zero
/* 1EA00 80043600 8E830000 */ lw $v1, ($s4)
/* 1EA04 80043604 8E8400E0 */ lw $a0, 0xe0($s4)
/* 1EA08 80043608 3C020200 */ lui $v0, 0x200
/* 1EA0C 8004360C AE9E00C8 */ sw $fp, 0xc8($s4)
/* 1EA10 80043610 00621825 */ or $v1, $v1, $v0
/* 1EA14 80043614 30848000 */ andi $a0, $a0, 0x8000
/* 1EA18 80043618 10800012 */ beqz $a0, .L80043664
/* 1EA1C 8004361C AE830000 */ sw $v1, ($s4)
/* 1EA20 80043620 0C03A5EE */ jal close_status_menu
/* 1EA24 80043624 00000000 */ nop
/* 1EA28 80043628 24020001 */ addiu $v0, $zero, 1
/* 1EA2C 8004362C 24030005 */ addiu $v1, $zero, 5
/* 1EA30 80043630 3C01800B */ lui $at, %hi(gCurrentEncounter+0x5)
/* 1EA34 80043634 A0230F15 */ sb $v1, %lo(gCurrentEncounter+0x5)($at)
/* 1EA38 80043638 A2C30005 */ sb $v1, 5($s6)
/* 1EA3C 8004363C 8FA8002C */ lw $t0, 0x2c($sp)
/* 1EA40 80043640 0040182D */ daddu $v1, $v0, $zero
/* 1EA44 80043644 3C01800B */ lui $at, %hi(gCurrentEncounter+0x8C)
/* 1EA48 80043648 AC360F9C */ sw $s6, %lo(gCurrentEncounter+0x8C)($at)
/* 1EA4C 8004364C 3C01800B */ lui $at, %hi(gCurrentEncounter+0x4)
/* 1EA50 80043650 A0230F14 */ sb $v1, %lo(gCurrentEncounter+0x4)($at)
/* 1EA54 80043654 3C01800B */ lui $at, %hi(gCurrentEncounter+0x88)
/* 1EA58 80043658 AC280F98 */ sw $t0, %lo(gCurrentEncounter+0x88)($at)
/* 1EA5C 8004365C 08010D9A */ j .L80043668
/* 1EA60 80043660 00000000 */ nop
.L80043664:
/* 1EA64 80043664 0000102D */ daddu $v0, $zero, $zero
.L80043668:
/* 1EA68 80043668 8FBF0074 */ lw $ra, 0x74($sp)
/* 1EA6C 8004366C 8FBE0070 */ lw $fp, 0x70($sp)
/* 1EA70 80043670 8FB7006C */ lw $s7, 0x6c($sp)
/* 1EA74 80043674 8FB60068 */ lw $s6, 0x68($sp)
/* 1EA78 80043678 8FB50064 */ lw $s5, 0x64($sp)
/* 1EA7C 8004367C 8FB40060 */ lw $s4, 0x60($sp)
/* 1EA80 80043680 8FB3005C */ lw $s3, 0x5c($sp)
/* 1EA84 80043684 8FB20058 */ lw $s2, 0x58($sp)
/* 1EA88 80043688 8FB10054 */ lw $s1, 0x54($sp)
/* 1EA8C 8004368C 8FB00050 */ lw $s0, 0x50($sp)
/* 1EA90 80043690 D7BE00A0 */ ldc1 $f30, 0xa0($sp)
/* 1EA94 80043694 D7BC0098 */ ldc1 $f28, 0x98($sp)
/* 1EA98 80043698 D7BA0090 */ ldc1 $f26, 0x90($sp)
/* 1EA9C 8004369C D7B80088 */ ldc1 $f24, 0x88($sp)
/* 1EAA0 800436A0 D7B60080 */ ldc1 $f22, 0x80($sp)
/* 1EAA4 800436A4 D7B40078 */ ldc1 $f20, 0x78($sp)
/* 1EAA8 800436A8 03E00008 */ jr $ra
/* 1EAAC 800436AC 27BD00A8 */ addiu $sp, $sp, 0xa8