RemoveFieldObjectIfOutsideView

This commit is contained in:
PikalaxALT 2017-09-07 17:41:56 -04:00
parent 341a4735bc
commit 44be18e1df
2 changed files with 21 additions and 69 deletions

View File

@ -5,75 +5,6 @@
.text
thumb_func_start RemoveFieldObjectIfOutsideView
@ void RemoveFieldObjectIfOutsideView(npc_state *fieldObject)
RemoveFieldObjectIfOutsideView: @ 808E0EC
push {r4-r7,lr}
adds r3, r0, 0
ldr r0, =gSaveBlock1Ptr
ldr r2, [r0]
ldrh r0, [r2]
subs r1, r0, 0x2
lsls r1, 16
adds r0, 0x11
lsls r0, 16
lsrs r5, r0, 16
ldrh r4, [r2, 0x2]
adds r0, r4, 0
adds r0, 0x10
lsls r0, 16
lsrs r6, r0, 16
movs r0, 0x10
ldrsh r2, [r3, r0]
lsrs r7, r1, 16
asrs r1, 16
cmp r2, r1
blt _0808E132
lsls r0, r5, 16
asrs r0, 16
cmp r2, r0
bgt _0808E132
movs r0, 0x12
ldrsh r1, [r3, r0]
lsls r0, r4, 16
asrs r0, 16
cmp r1, r0
blt _0808E132
lsls r0, r6, 16
asrs r0, 16
cmp r1, r0
ble _0808E160
_0808E132:
movs r0, 0xC
ldrsh r1, [r3, r0]
lsls r0, r7, 16
asrs r0, 16
cmp r1, r0
blt _0808E15A
lsls r0, r5, 16
asrs r0, 16
cmp r1, r0
bgt _0808E15A
movs r0, 0xE
ldrsh r1, [r3, r0]
lsls r0, r4, 16
asrs r0, 16
cmp r1, r0
blt _0808E15A
lsls r0, r6, 16
asrs r0, 16
cmp r1, r0
ble _0808E160
_0808E15A:
adds r0, r3, 0
bl RemoveFieldObject
_0808E160:
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end RemoveFieldObjectIfOutsideView
thumb_func_start sub_808E16C
sub_808E16C: @ 808E16C
push {r4-r7,lr}

View File

@ -764,3 +764,24 @@ void RemoveFieldObjectsOutsideView(void)
}
}
}
void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
{
s16 left;
s16 right;
s16 top;
s16 bottom;
left = gSaveBlock1Ptr->pos.x - 2;
right = gSaveBlock1Ptr->pos.x + 17;
top = gSaveBlock1Ptr->pos.y;
bottom = gSaveBlock1Ptr->pos.y + 16;
if (mapObject->coords2.x >= left && mapObject->coords2.x <= right
&& mapObject->coords2.y >= top && mapObject->coords2.y <= bottom)
return;
if (mapObject->coords1.x >= left && mapObject->coords1.x <= right
&& mapObject->coords1.y >= top && mapObject->coords1.y <= bottom)
return;
RemoveFieldObject(mapObject);
}