diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-05-21 00:18:31 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-05-21 00:18:31 -0400 |
commit | 101bc4a4e569903eedb463da9ee8b736d16ea6fb (patch) | |
tree | f8b15491010189af3bd490e95fc928c9289d45ec | |
parent | 1c753367fd6e3bf637160d4169839a549a1656df (diff) |
field_map_obj.c up to and including FieldObjectIsTrainerAndCloseToPlayer
-rw-r--r-- | asm/field_map_obj.s | 90 | ||||
-rw-r--r-- | src/field_map_obj.c | 41 |
2 files changed, 41 insertions, 90 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index c9744414e..fb19ddbb2 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -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} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index a7856ec07..61ec26365 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -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; +} |