diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-05-21 18:40:52 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-05-24 16:14:48 -0400 |
commit | e08f647c025853d3a03199cad8f42b38b0e5c41a (patch) | |
tree | e5b837e2f50801e8b873ff04062f6f49800c0087 | |
parent | 4aeb3bac738b470c83848de58d370d707d3d67df (diff) |
sub_805D634
-rw-r--r-- | asm/field_map_obj.s | 173 | ||||
-rw-r--r-- | src/field_map_obj.c | 65 |
2 files changed, 64 insertions, 174 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index cda87b2c5..d9ac3249a 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,179 +6,6 @@ .text - thumb_func_start sub_805D634 -sub_805D634: @ 805D634 - 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, _0805D650 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D654 @ =sub_805D658 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D650: .4byte gMapObjects -_0805D654: .4byte sub_805D658 - thumb_func_end sub_805D634 - - thumb_func_start sub_805D658 -sub_805D658: @ 805D658 - push {r4,lr} - ldr r3, _0805D674 @ =gUnknown_083752F8 - 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 - .align 2, 0 -_0805D674: .4byte gUnknown_083752F8 - thumb_func_end sub_805D658 - - thumb_func_start sub_805D678 -sub_805D678: @ 805D678 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D678 - - thumb_func_start sub_805D68C -sub_805D68C: @ 805D68C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D68C - - thumb_func_start sub_805D6B8 -sub_805D6B8: @ 805D6B8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D6EE - ldr r4, _0805D6F8 @ =gUnknown_0837520C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805D6EE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D6F8: .4byte gUnknown_0837520C - thumb_func_end sub_805D6B8 - - thumb_func_start sub_805D6FC -sub_805D6FC: @ 805D6FC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D71A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D722 -_0805D71A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D724 -_0805D722: - movs r0, 0 -_0805D724: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D6FC - - thumb_func_start sub_805D72C -sub_805D72C: @ 805D72C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D770 @ =gUnknown_083752C0 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x2 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D75C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D75C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805D770: .4byte gUnknown_083752C0 - thumb_func_end sub_805D72C - thumb_func_start sub_805D774 sub_805D774: @ 805D774 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index a637d5767..951f3724f 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -42,6 +42,7 @@ extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -2286,7 +2287,69 @@ u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805D634(struct Sprite *sprite); + +u8 sub_805D658(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D634(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D658); +} + +u8 sub_805D658(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752F8[sprite->data1](mapObject, sprite); +} + +u8 sub_805D678(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D68C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D6B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D6FC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752C0, 2); + direction = sub_805CD60(mapObject, 2); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + void sub_805D774(struct Sprite *sprite); void sub_805D8B4(struct Sprite *sprite); void sub_805D9F4(struct Sprite *sprite); |