FieldObjectDoesZCoordMatch
This commit is contained in:
parent
79b19a36b8
commit
d8e2238086
2 changed files with 25 additions and 83 deletions
|
@ -5,89 +5,6 @@
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start GetFieldObjectIdByXYZ
|
|
||||||
@ u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z)
|
|
||||||
GetFieldObjectIdByXYZ: @ 808EC78
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r8
|
|
||||||
push {r7}
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r7, r0, 16
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r6, r1, 16
|
|
||||||
lsls r2, 24
|
|
||||||
lsrs r5, r2, 24
|
|
||||||
movs r4, 0
|
|
||||||
ldr r0, =gMapObjects
|
|
||||||
mov r8, r0
|
|
||||||
_0808EC90:
|
|
||||||
lsls r0, r4, 3
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 2
|
|
||||||
mov r2, r8
|
|
||||||
adds r1, r0, r2
|
|
||||||
ldrb r0, [r1]
|
|
||||||
lsls r0, 31
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0808ECC8
|
|
||||||
movs r2, 0x10
|
|
||||||
ldrsh r0, [r1, r2]
|
|
||||||
cmp r0, r7
|
|
||||||
bne _0808ECC8
|
|
||||||
movs r2, 0x12
|
|
||||||
ldrsh r0, [r1, r2]
|
|
||||||
cmp r0, r6
|
|
||||||
bne _0808ECC8
|
|
||||||
adds r0, r1, 0
|
|
||||||
adds r1, r5, 0
|
|
||||||
bl FieldObjectDoesZCoordMatch
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0808ECC8
|
|
||||||
adds r0, r4, 0
|
|
||||||
b _0808ECD4
|
|
||||||
.pool
|
|
||||||
_0808ECC8:
|
|
||||||
adds r0, r4, 0x1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
cmp r4, 0xF
|
|
||||||
bls _0808EC90
|
|
||||||
movs r0, 0x10
|
|
||||||
_0808ECD4:
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end GetFieldObjectIdByXYZ
|
|
||||||
|
|
||||||
thumb_func_start FieldObjectDoesZCoordMatch
|
|
||||||
@ bool8 FieldObjectDoesZCoordMatch(struct npc_state *fieldObject)
|
|
||||||
FieldObjectDoesZCoordMatch: @ 808ECE0
|
|
||||||
push {lr}
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
ldrb r2, [r0, 0xB]
|
|
||||||
movs r0, 0xF
|
|
||||||
ands r0, r2
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0808ED00
|
|
||||||
cmp r1, 0
|
|
||||||
beq _0808ED00
|
|
||||||
lsls r0, r2, 28
|
|
||||||
lsrs r0, 28
|
|
||||||
cmp r0, r1
|
|
||||||
beq _0808ED00
|
|
||||||
movs r0, 0
|
|
||||||
b _0808ED02
|
|
||||||
_0808ED00:
|
|
||||||
movs r0, 0x1
|
|
||||||
_0808ED02:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end FieldObjectDoesZCoordMatch
|
|
||||||
|
|
||||||
thumb_func_start UpdateFieldObjectsForCameraUpdate
|
thumb_func_start UpdateFieldObjectsForCameraUpdate
|
||||||
@ void UpdateFieldObjectsForCameraUpdate(u16 movingCameraOffsetX, u16 movingCameraOffsetY)
|
@ void UpdateFieldObjectsForCameraUpdate(u16 movingCameraOffsetX, u16 movingCameraOffsetY)
|
||||||
UpdateFieldObjectsForCameraUpdate: @ 808ED08
|
UpdateFieldObjectsForCameraUpdate: @ 808ED08
|
||||||
|
|
|
@ -47,6 +47,7 @@ static void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8);
|
||||||
static u8 sub_808E8F4(const struct SpritePalette *);
|
static u8 sub_808E8F4(const struct SpritePalette *);
|
||||||
static u8 FindFieldObjectPaletteIndexByTag(u16);
|
static u8 FindFieldObjectPaletteIndexByTag(u16);
|
||||||
static void sub_808EAB0(u16, u8);
|
static void sub_808EAB0(u16, u8);
|
||||||
|
static bool8 FieldObjectDoesZCoordMatch(struct MapObject *, u8);
|
||||||
|
|
||||||
// ROM data
|
// ROM data
|
||||||
|
|
||||||
|
@ -1304,3 +1305,27 @@ void UpdateFieldObjectCoordsForCameraUpdate(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z)
|
||||||
|
{
|
||||||
|
u8 i;
|
||||||
|
for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
|
||||||
|
{
|
||||||
|
if (gMapObjects[i].active)
|
||||||
|
{
|
||||||
|
if (gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y && FieldObjectDoesZCoordMatch(&gMapObjects[i], z))
|
||||||
|
{
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NUM_FIELD_OBJECTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool8 FieldObjectDoesZCoordMatch(struct MapObject *mapObject, u8 z)
|
||||||
|
{
|
||||||
|
if (mapObject->mapobj_unk_0B_0 != 0 && z != 0 && mapObject->mapobj_unk_0B_0 != z)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue