mirror of
https://github.com/pret/pokeruby.git
synced 2026-10-01 15:31:24 -04:00
field_map_obj.c up to and including FieldObjectIsTrainerAndCloseToPlayer
This commit is contained in:
@@ -6,96 +6,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_805CA08
|
||||
sub_805CA08: @ 805CA08
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
bl FieldObjectExecRegularAnim
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0805CA26
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x3
|
||||
negs r1, r1
|
||||
ands r1, r0
|
||||
strb r1, [r4]
|
||||
movs r0, 0x1
|
||||
strh r0, [r5, 0x30]
|
||||
_0805CA26:
|
||||
movs r0, 0
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805CA08
|
||||
|
||||
thumb_func_start FieldObjectIsTrainerAndCloseToPlayer
|
||||
FieldObjectIsTrainerAndCloseToPlayer: @ 805CA30
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x4
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x80
|
||||
bl TestPlayerAvatarFlags
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0805CA9C
|
||||
ldrb r0, [r5, 0x7]
|
||||
cmp r0, 0x1
|
||||
beq _0805CA4C
|
||||
cmp r0, 0x3
|
||||
bne _0805CA9C
|
||||
_0805CA4C:
|
||||
mov r7, sp
|
||||
adds r7, 0x2
|
||||
mov r0, sp
|
||||
adds r1, r7, 0
|
||||
bl PlayerGetDestCoords
|
||||
ldrh r2, [r5, 0x10]
|
||||
ldrh r4, [r5, 0x12]
|
||||
ldrb r1, [r5, 0x1D]
|
||||
subs r3, r2, r1
|
||||
subs r0, r4, r1
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
adds r2, r1, r2
|
||||
lsls r2, 16
|
||||
lsrs r2, 16
|
||||
adds r1, r4
|
||||
lsls r1, 16
|
||||
lsrs r6, r1, 16
|
||||
mov r0, sp
|
||||
lsls r3, 16
|
||||
asrs r3, 16
|
||||
movs r1, 0
|
||||
ldrsh r4, [r0, r1]
|
||||
cmp r3, r4
|
||||
bgt _0805CA9C
|
||||
lsls r0, r2, 16
|
||||
asrs r0, 16
|
||||
cmp r0, r4
|
||||
blt _0805CA9C
|
||||
lsls r0, r5, 16
|
||||
asrs r0, 16
|
||||
movs r2, 0
|
||||
ldrsh r1, [r7, r2]
|
||||
cmp r0, r1
|
||||
bgt _0805CA9C
|
||||
lsls r0, r6, 16
|
||||
asrs r0, 16
|
||||
cmp r0, r1
|
||||
bge _0805CAA0
|
||||
_0805CA9C:
|
||||
movs r0, 0
|
||||
b _0805CAA2
|
||||
_0805CAA0:
|
||||
movs r0, 0x1
|
||||
_0805CAA2:
|
||||
add sp, 0x4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end FieldObjectIsTrainerAndCloseToPlayer
|
||||
|
||||
thumb_func_start sub_805CAAC
|
||||
sub_805CAAC: @ 805CAAC
|
||||
push {r4,lr}
|
||||
|
||||
@@ -1601,3 +1601,44 @@ u8 sub_805C9D8(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8 sub_805CA08(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
|
||||
{
|
||||
mapObject->mapobj_bit_1 = 0;
|
||||
sprite->data1 = 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject)
|
||||
{
|
||||
s16 x;
|
||||
s16 y;
|
||||
s16 objx;
|
||||
s16 objy;
|
||||
s16 minx;
|
||||
s16 maxx;
|
||||
s16 miny;
|
||||
s16 maxy;
|
||||
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (mapObject->trainerType != 1 && mapObject->trainerType != 3)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
objx = mapObject->coords2.x;
|
||||
objy = mapObject->coords2.y;
|
||||
minx = objx - mapObject->trainerRange_berryTreeId;
|
||||
miny = objy - mapObject->trainerRange_berryTreeId;
|
||||
maxx = objx + mapObject->trainerRange_berryTreeId;
|
||||
maxy = objy + mapObject->trainerRange_berryTreeId;
|
||||
if (minx > x || maxx < x || miny > y || maxy < y)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user