diff options
author | scnorton <scnorton@biociphers.org> | 2017-05-24 16:48:48 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-05-24 16:48:48 -0400 |
commit | 7f47c3b8eeece77252c0564c4677e8432caf33ed (patch) | |
tree | d3997ddb7b829e07b30e12ab06496189323d42e5 | |
parent | 3a1e42f8f1929d5c74ee931de511d7f481db9756 (diff) |
sub_806123C
-rw-r--r-- | asm/field_map_obj.s | 99 | ||||
-rwxr-xr-x | src/field_map_obj.c | 27 |
2 files changed, 27 insertions, 99 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ba2d04c4c..65a0db86e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,105 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start maybe_shadow_1 - - thumb_func_start sub_806123C -sub_806123C: @ 806123C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r6, r0, 0 - adds r7, r1, 0 - adds r4, r2, 0 - ldr r1, _080612C8 @ =gUnknown_08375A3A - add r0, sp, 0x4 - movs r2, 0x6 - bl memcpy - adds r0, r7, 0 - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x1 - bne _080612CC - movs r1, 0x36 - ldrsh r0, [r7, r1] - lsls r0, 1 - add r0, sp - adds r0, 0x4 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - beq _080612CC - add r4, sp, 0xC - movs r0, 0 - strh r0, [r4] - mov r5, sp - adds r5, 0xE - strh r0, [r5] - ldrb r0, [r6, 0x18] - lsrs r0, 4 - movs r2, 0x36 - ldrsh r1, [r7, r2] - lsls r1, 1 - add r1, sp - adds r1, 0x4 - movs r2, 0 - ldrsh r3, [r1, r2] - str r3, [sp] - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8060320 - ldrh r1, [r4] - ldrh r0, [r6, 0x10] - adds r1, r0 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r5] - ldrh r0, [r6, 0x12] - adds r2, r0 - lsls r2, 16 - asrs r2, 16 - adds r0, r6, 0 - bl npc_coords_shift - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r6] - b _080612F0 - .align 2, 0 -_080612C8: .4byte gUnknown_08375A3A -_080612CC: - mov r1, r8 - cmp r1, 0xFF - bne _080612F0 - adds r0, r6, 0 - bl npc_coords_shift_still - ldrb r0, [r6] - movs r1, 0x8 - orrs r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r6] - adds r2, r7, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] -_080612F0: - mov r0, r8 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_806123C - thumb_func_start sub_8061300 sub_8061300: @ 8061300 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f8fd87c64..65ef99b3b 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4417,6 +4417,7 @@ bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite) } extern const s16 gUnknown_08375A34[3]; +extern const s16 gUnknown_08375A3A[3]; void sub_806113C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a4, u8 a5) { @@ -4442,3 +4443,29 @@ void maybe_shadow_1(struct MapObject *mapObject, struct Sprite *sprite, u8 direc sub_805FE28(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18)); DoShadowFieldEffect(mapObject); } + +u8 sub_806123C(struct MapObject *mapObject, struct Sprite *sprite, u8 (*const callback)(struct Sprite *)) +{ + s16 vSPp4[3]; + s16 x; + s16 y; + u8 retval; + memcpy(vSPp4, gUnknown_08375A3A, sizeof gUnknown_08375A3A); + retval = callback(sprite); + if (retval == 1 && vSPp4[sprite->data4] != 0) + { + x = 0; + y = 0; + sub_8060320(mapObject->placeholder18, &x, &y, vSPp4[sprite->data4], vSPp4[sprite->data4]); + npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y); + mapObject->mapobj_bit_2 = 1; + mapObject->mapobj_bit_4 = 1; + } else if (retval == 0xff) + { + npc_coords_shift_still(mapObject); + mapObject->mapobj_bit_3 = 1; + mapObject->mapobj_bit_5 = 1; + sprite->animPaused = 1; + } + return retval; +} |