diff options
author | scnorton <scnorton@biociphers.org> | 2017-09-13 09:41:11 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-09-13 09:41:11 -0400 |
commit | 28b272bf52e32374a3d0e493b47953bfad8e9cac (patch) | |
tree | 91f8d1d141d74873cd1f98a2e7c6ef9c88795e1c | |
parent | c8696f15528add1c1a4a195c5fc02192c3f04a77 (diff) |
NoMovement1, GoRandomDirections
-rwxr-xr-x | asm/field_map_obj.s | 60 | ||||
-rwxr-xr-x | include/field_map_obj.h | 1 | ||||
-rwxr-xr-x | src/field_map_obj.c | 28 |
3 files changed, 29 insertions, 60 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index b8fce16f1..f17d25eba 100755 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -5,66 +5,6 @@ .text - thumb_func_start FieldObjectCB_NoMovement1 -FieldObjectCB_NoMovement1: @ 808F3E0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, =gMapObjects - adds r0, r2 - ldr r2, =FieldObjectCB2_NoMovement1 - bl FieldObjectStep - pop {r0} - bx r0 - .pool - thumb_func_end FieldObjectCB_NoMovement1 - - thumb_func_start FieldObjectCB2_NoMovement1 -FieldObjectCB2_NoMovement1: @ 808F404 - movs r0, 0 - bx lr - thumb_func_end FieldObjectCB2_NoMovement1 - - thumb_func_start FieldObjectCB_GoRandomDirections -FieldObjectCB_GoRandomDirections: @ 808F408 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, =gMapObjects - adds r0, r2 - ldr r2, =FieldObjectCB2_GoRandomDirections - bl FieldObjectStep - pop {r0} - bx r0 - .pool - thumb_func_end FieldObjectCB_GoRandomDirections - - thumb_func_start FieldObjectCB2_GoRandomDirections -FieldObjectCB2_GoRandomDirections: @ 808F42C - push {r4,lr} - ldr r3, =gUnknown_0850D6F4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end FieldObjectCB2_GoRandomDirections - thumb_func_start sub_808F44C sub_808F44C: @ 808F44C push {r4,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index ec28df643..f91b8f9e3 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -47,6 +47,7 @@ void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *); void npc_coords_shift(struct MapObject *, s16, s16); void sub_808EB08(struct MapObject *, s16, s16); void sub_808F254(u8, u8, u8); +void FieldObjectStep(struct MapObject *, struct Sprite *, bool8(struct MapObject *, struct Sprite *)); // Exported data declarations diff --git a/src/field_map_obj.c b/src/field_map_obj.c index e142a35d6..3dd47d540 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -20,6 +20,29 @@ #define NUM_FIELD_MAP_OBJECT_TEMPLATES 0x51 +#define null_object_step(name, retval) \ +static bool8 FieldObjectCB2_##name(struct MapObject *, struct Sprite *);\ +void FieldObjectCB_##name(struct Sprite *sprite)\ +{\ + FieldObjectStep(&gMapObjects[sprite->data0], sprite, FieldObjectCB2_##name);\ +}\ +static bool8 FieldObjectCB2_##name(struct MapObject *mapObject, struct Sprite *sprite)\ +{\ + return (retval);\ +} + +#define field_object_step(name, table) \ +extern bool8 (*const (table)[])(struct MapObject *, struct Sprite *);\ +static bool8 FieldObjectCB2_##name(struct MapObject *, struct Sprite *);\ +void FieldObjectCB_##name(struct Sprite *sprite)\ +{\ + FieldObjectStep(&gMapObjects[sprite->data0], sprite, FieldObjectCB2_##name);\ +}\ +static bool8 FieldObjectCB2_##name(struct MapObject *mapObject, struct Sprite *sprite)\ +{\ + return (table)[sprite->data1](mapObject, sprite);\ +} + // Static struct declarations // Static RAM declarations @@ -1692,3 +1715,8 @@ u16 npc_paltag_by_palslot(u8 palSlot) } return 0x11ff; } + +null_object_step(NoMovement1, FALSE) + +field_object_step(GoRandomDirections, gUnknown_0850D6F4) + |