diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | .gitmodules | 3 | ||||
-rw-r--r-- | asm/field_map_obj.s | 3880 | ||||
-rw-r--r-- | include/field_map_obj.h | 19 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/field_map_obj.c | 1403 | ||||
-rw-r--r-- | src/field_player_avatar.c | 4 | ||||
m--------- | tools/agbcc | 0 |
8 files changed, 1415 insertions, 3897 deletions
diff --git a/.gitignore b/.gitignore index 78af8c737..13752b437 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ *.bat sound/**/*.bin src/*.s -tools/agbcc ld_script_ruby.txt ld_script_sapphire.txt *.map diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..7dbd4ef6d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tools/agbcc"] + path = tools/agbcc + url = git@github.com:pret/agbcc diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index d54b57fed..3db00279d 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,3686 +6,6 @@ .text - thumb_func_start sub_805C930 -sub_805C930: @ 805C930 - push {r4-r6,lr} - adds r6, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805C964 - ldr r5, _0805C960 @ =gUnknown_0837520C - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl sub_8064820 - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0805C966 - .align 2, 0 -_0805C960: .4byte gUnknown_0837520C -_0805C964: - movs r0, 0 -_0805C966: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805C930 - - thumb_func_start sub_805C96C -sub_805C96C: @ 805C96C - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805C980 - movs r0, 0 - b _0805C986 -_0805C980: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805C986: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805C96C - - thumb_func_start sub_805C98C -sub_805C98C: @ 805C98C - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0805C9D4 @ =gUnknown_08375240 - mov r0, sp - movs r2, 0x4 - bl memcpy - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805FF20 - lsls r0, 24 - cmp r0, 0 - beq _0805C9CA - movs r0, 0x1 - strh r0, [r6, 0x30] -_0805C9CA: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805C9D4: .4byte gUnknown_08375240 - thumb_func_end sub_805C98C - - thumb_func_start sub_805C9D8 -sub_805C9D8: @ 805C9D8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805C9D8 - - 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} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r0, r1, 16 - lsls r2, 16 - lsls r3, 16 - cmp r2, r3 - ble _0805CACA - movs r2, 0x4 - lsls r0, r4, 16 - cmp r0, 0 - bge _0805CAD4 - movs r2, 0x3 - b _0805CAD4 -_0805CACA: - movs r2, 0x1 - lsls r0, 16 - cmp r0, 0 - bge _0805CAD4 - movs r2, 0x2 -_0805CAD4: - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805CAAC - - thumb_func_start sub_805CADC -sub_805CADC: @ 805CADC - push {lr} - movs r0, 0x1 - lsls r1, 16 - cmp r1, 0 - bge _0805CAE8 - movs r0, 0x2 -_0805CAE8: - pop {r1} - bx r1 - thumb_func_end sub_805CADC - - thumb_func_start sub_805CAEC -sub_805CAEC: @ 805CAEC - push {lr} - movs r1, 0x4 - lsls r0, 16 - cmp r0, 0 - bge _0805CAF8 - movs r1, 0x3 -_0805CAF8: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end sub_805CAEC - - thumb_func_start sub_805CB00 -sub_805CB00: @ 805CB00 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CB3C - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0805CB56 - b _0805CB54 -_0805CB3C: - cmp r0, 0x4 - bne _0805CB56 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CB56 -_0805CB54: - movs r0, 0x2 -_0805CB56: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CB00 - - thumb_func_start sub_805CB5C -sub_805CB5C: @ 805CB5C - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CB98 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805CBB2 - b _0805CBB0 -_0805CB98: - cmp r0, 0x3 - bne _0805CBB2 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CBB2 -_0805CBB0: - movs r0, 0x2 -_0805CBB2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CB5C - - thumb_func_start sub_805CBB8 -sub_805CBB8: @ 805CBB8 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CBF4 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0805CC0E - b _0805CC0C -_0805CBF4: - cmp r0, 0x4 - bne _0805CC0E - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CC0E -_0805CC0C: - movs r0, 0x1 -_0805CC0E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CBB8 - - thumb_func_start sub_805CC14 -sub_805CC14: @ 805CC14 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CC50 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805CC6A - b _0805CC68 -_0805CC50: - cmp r0, 0x3 - bne _0805CC6A - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CC6A -_0805CC68: - movs r0, 0x1 -_0805CC6A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CC14 - - thumb_func_start sub_805CC70 -sub_805CC70: @ 805CC70 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0805CCA6 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 -_0805CCA6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CC70 - - thumb_func_start sub_805CCAC -sub_805CCAC: @ 805CCAC - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805CCE2 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 -_0805CCE2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CCAC - - thumb_func_start sub_805CCE8 -sub_805CCE8: @ 805CCE8 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CD1E - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 -_0805CD1E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CCE8 - - thumb_func_start sub_805CD24 -sub_805CD24: @ 805CD24 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CD5A - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 -_0805CD5A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CD24 - - thumb_func_start sub_805CD60 -sub_805CD60: @ 805CD60 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - bne _0805CD78 - movs r0, 0 - b _0805CDDC -_0805CD78: - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl PlayerGetDestCoords - mov r2, sp - mov r0, sp - ldrh r0, [r0] - ldrh r1, [r4, 0x10] - subs r0, r1 - strh r0, [r2] - ldrh r0, [r5] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r5] - mov r0, sp - ldrh r3, [r5] - ldrh r2, [r0] - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _0805CDAC - negs r0, r0 - lsls r0, 16 - lsrs r2, r0, 16 -_0805CDAC: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0 - bge _0805CDBA - negs r0, r0 - lsls r0, 16 - lsrs r3, r0, 16 -_0805CDBA: - ldr r0, _0805CDE4 @ =gUnknown_08375244 - lsls r4, r6, 2 - adds r4, r0 - mov r0, sp - movs r6, 0 - ldrsh r0, [r0, r6] - movs r6, 0 - ldrsh r1, [r5, r6] - lsls r2, 16 - asrs r2, 16 - lsls r3, 16 - asrs r3, 16 - ldr r4, [r4] - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 -_0805CDDC: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805CDE4: .4byte gUnknown_08375244 - thumb_func_end sub_805CD60 - - thumb_func_start sub_805CDE8 -sub_805CDE8: @ 805CDE8 - 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, _0805CE04 @ =gMapObjects - adds r0, r2 - ldr r2, _0805CE08 @ =sub_805CE0C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805CE04: .4byte gMapObjects -_0805CE08: .4byte sub_805CE0C - thumb_func_end sub_805CDE8 - - thumb_func_start sub_805CE0C -sub_805CE0C: @ 805CE0C - push {r4,lr} - ldr r3, _0805CE28 @ =gUnknown_08375270 - 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 -_0805CE28: .4byte gUnknown_08375270 - thumb_func_end sub_805CE0C - - thumb_func_start sub_805CE2C -sub_805CE2C: @ 805CE2C - 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_805CE2C - - thumb_func_start sub_805CE40 -sub_805CE40: @ 805CE40 - 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_805CE40 - - thumb_func_start sub_805CE6C -sub_805CE6C: @ 805CE6C - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805CEA2 - ldr r4, _0805CEAC @ =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] -_0805CEA2: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805CEAC: .4byte gUnknown_0837520C - thumb_func_end sub_805CE6C - - thumb_func_start sub_805CEB0 -sub_805CEB0: @ 805CEB0 - 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 _0805CECE - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805CED6 -_0805CECE: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805CED8 -_0805CED6: - movs r0, 0 -_0805CED8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805CEB0 - - thumb_func_start sub_805CEE0 -sub_805CEE0: @ 805CEE0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805CF24 @ =gUnknown_08375240 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805CF10 - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805CF10: - 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 -_0805CF24: .4byte gUnknown_08375240 - thumb_func_end sub_805CEE0 - - thumb_func_start sub_805CF28 -sub_805CF28: @ 805CF28 - 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, _0805CF44 @ =gMapObjects - adds r0, r2 - ldr r2, _0805CF48 @ =sub_805CF4C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805CF44: .4byte gMapObjects -_0805CF48: .4byte sub_805CF4C - thumb_func_end sub_805CF28 - - thumb_func_start sub_805CF4C -sub_805CF4C: @ 805CF4C - push {r4,lr} - ldr r3, _0805CF68 @ =gUnknown_08375284 - 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 -_0805CF68: .4byte gUnknown_08375284 - thumb_func_end sub_805CF4C - - thumb_func_start sub_805CF6C -sub_805CF6C: @ 805CF6C - 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_805CF6C - - thumb_func_start sub_805CF80 -sub_805CF80: @ 805CF80 - 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_805CF80 - - thumb_func_start sub_805CFAC -sub_805CFAC: @ 805CFAC - push {r4-r6,lr} - adds r6, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805CFE0 - ldr r5, _0805CFDC @ =gUnknown_0837520C - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl sub_8064820 - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0805CFE2 - .align 2, 0 -_0805CFDC: .4byte gUnknown_0837520C -_0805CFE0: - movs r0, 0 -_0805CFE2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805CFAC - - thumb_func_start sub_805CFE8 -sub_805CFE8: @ 805CFE8 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805CFFC - movs r0, 0 - b _0805D002 -_0805CFFC: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D002: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805CFE8 - - thumb_func_start sub_805D008 -sub_805D008: @ 805D008 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0805D050 @ =gUnknown_083752A0 - mov r0, sp - movs r2, 0x2 - bl memcpy - bl Random - movs r7, 0x1 - adds r1, r7, 0 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805FF20 - lsls r0, 24 - cmp r0, 0 - beq _0805D046 - strh r7, [r6, 0x30] -_0805D046: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D050: .4byte gUnknown_083752A0 - thumb_func_end sub_805D008 - - thumb_func_start sub_805D054 -sub_805D054: @ 805D054 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D054 - - thumb_func_start sub_805D084 -sub_805D084: @ 805D084 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D0A2 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805D0A2: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D084 - - thumb_func_start sub_805D0AC -sub_805D0AC: @ 805D0AC - 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, _0805D0C8 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D0CC @ =sub_805D0D0 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D0C8: .4byte gMapObjects -_0805D0CC: .4byte sub_805D0D0 - thumb_func_end sub_805D0AC - - thumb_func_start sub_805D0D0 -sub_805D0D0: @ 805D0D0 - push {r4,lr} - ldr r3, _0805D0EC @ =gUnknown_083752A4 - 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 -_0805D0EC: .4byte gUnknown_083752A4 - thumb_func_end sub_805D0D0 - - thumb_func_start sub_805D0F0 -sub_805D0F0: @ 805D0F0 - 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_805D0F0 - - thumb_func_start sub_805D104 -sub_805D104: @ 805D104 - 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_805D104 - - thumb_func_start sub_805D130 -sub_805D130: @ 805D130 - push {r4-r6,lr} - adds r6, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D164 - ldr r5, _0805D160 @ =gUnknown_0837520C - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl sub_8064820 - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0805D166 - .align 2, 0 -_0805D160: .4byte gUnknown_0837520C -_0805D164: - movs r0, 0 -_0805D166: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805D130 - - thumb_func_start sub_805D16C -sub_805D16C: @ 805D16C - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D180 - movs r0, 0 - b _0805D186 -_0805D180: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D186: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D16C - - thumb_func_start sub_805D18C -sub_805D18C: @ 805D18C - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0805D1D4 @ =gUnknown_083752C0 - mov r0, sp - movs r2, 0x2 - bl memcpy - bl Random - movs r7, 0x1 - adds r1, r7, 0 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805FF20 - lsls r0, 24 - cmp r0, 0 - beq _0805D1CA - strh r7, [r6, 0x30] -_0805D1CA: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D1D4: .4byte gUnknown_083752C0 - thumb_func_end sub_805D18C - - thumb_func_start sub_805D1D8 -sub_805D1D8: @ 805D1D8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D1D8 - - thumb_func_start sub_805D208 -sub_805D208: @ 805D208 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D226 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805D226: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D208 - - thumb_func_start sub_805D230 -sub_805D230: @ 805D230 - 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, _0805D24C @ =gMapObjects - adds r0, r2 - ldr r2, _0805D250 @ =sub_805D254 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D24C: .4byte gMapObjects -_0805D250: .4byte sub_805D254 - thumb_func_end sub_805D230 - - thumb_func_start sub_805D254 -sub_805D254: @ 805D254 - push {r4,lr} - ldr r3, _0805D270 @ =gUnknown_083752C4 - 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 -_0805D270: .4byte gUnknown_083752C4 - thumb_func_end sub_805D254 - - thumb_func_start sub_805D274 -sub_805D274: @ 805D274 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - 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, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D274 - - thumb_func_start sub_805D2A0 -sub_805D2A0: @ 805D2A0 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - bne _0805D2B2 - movs r0, 0 - b _0805D2B8 -_0805D2B2: - movs r0, 0x2 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D2B8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D2A0 - - thumb_func_start sub_805D2C0 -sub_805D2C0: @ 805D2C0 - ldrb r2, [r0] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - movs r0, 0 - bx lr - thumb_func_end sub_805D2C0 - - thumb_func_start FieldObjectCB_BerryTree -FieldObjectCB_BerryTree: @ 805D2D0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805D30C @ =gMapObjects - adds r5, r0, r1 - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0805D2FC - adds r0, r5, 0 - adds r1, r4, 0 - bl get_berry_tree_graphics - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - orrs r0, r1 - strh r0, [r4, 0x3C] -_0805D2FC: - ldr r2, _0805D310 @ =sub_805D314 - adds r0, r5, 0 - adds r1, r4, 0 - bl meta_step - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805D30C: .4byte gMapObjects -_0805D310: .4byte sub_805D314 - thumb_func_end FieldObjectCB_BerryTree - - thumb_func_start sub_805D314 -sub_805D314: @ 805D314 - push {r4,lr} - ldr r3, _0805D330 @ =gUnknown_083752D0 - 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 -_0805D330: .4byte gUnknown_083752D0 - thumb_func_end sub_805D314 - - thumb_func_start do_berry_tree_growth_sparkle_1 -do_berry_tree_growth_sparkle_1: @ 805D334 - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r6, r5, 0 - adds r6, 0x3E - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r6] - ldrb r0, [r4, 0x1D] - bl GetStageByBerryTreeId - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0 - bne _0805D3A4 - ldrh r1, [r5, 0x3C] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0805D39A - subs r6, 0x14 - ldrb r0, [r6] - cmp r0, 0x4 - bne _0805D39A - ldr r1, _0805D3A0 @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r0, [r4, r2] - str r0, [r1] - movs r2, 0x12 - ldrsh r0, [r4, r2] - str r0, [r1, 0x4] - adds r0, r5, 0 - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 - str r0, [r1, 0x8] - ldrb r0, [r5, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r1, 0xC] - movs r0, 0x17 - bl FieldEffectStart - strb r7, [r6] -_0805D39A: - movs r0, 0 - b _0805D3E6 - .align 2, 0 -_0805D3A0: .4byte gUnknown_0202FF84 -_0805D3A4: - ldrb r1, [r4, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r1, [r6] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - subs r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, r7 - bne _0805D3E0 - adds r0, r4, 0 - adds r1, r5, 0 - bl get_berry_tree_graphics - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x39 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - b _0805D3E6 -_0805D3E0: - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 -_0805D3E6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end do_berry_tree_growth_sparkle_1 - - thumb_func_start sub_805D3EC -sub_805D3EC: @ 805D3EC - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - bne _0805D3FE - movs r0, 0 - b _0805D404 -_0805D3FE: - movs r0, 0 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D404: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D3EC - - thumb_func_start do_berry_tree_growth_sparkle_2 -do_berry_tree_growth_sparkle_2: @ 805D40C - push {r4,lr} - ldrb r2, [r0] - movs r3, 0x2 - orrs r2, r3 - strb r2, [r0] - movs r3, 0 - movs r2, 0x3 - strh r2, [r1, 0x30] - strh r3, [r1, 0x32] - ldrh r3, [r1, 0x3C] - movs r2, 0x2 - orrs r2, r3 - strh r2, [r1, 0x3C] - ldr r3, _0805D454 @ =gUnknown_0202FF84 - movs r4, 0x10 - ldrsh r2, [r0, r4] - str r2, [r3] - movs r2, 0x12 - ldrsh r0, [r0, r2] - str r0, [r3, 0x4] - adds r0, r1, 0 - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 - str r0, [r3, 0x8] - ldrb r0, [r1, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r3, 0xC] - movs r0, 0x17 - bl FieldEffectStart - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D454: .4byte gUnknown_0202FF84 - thumb_func_end do_berry_tree_growth_sparkle_2 - - thumb_func_start sub_805D458 -sub_805D458: @ 805D458 - push {r4,lr} - adds r3, r0, 0 - adds r4, r1, 0 - ldrh r1, [r4, 0x32] - adds r1, 0x1 - strh r1, [r4, 0x32] - movs r0, 0x2 - ands r1, r0 - lsls r1, 16 - lsrs r1, 17 - lsls r1, 5 - ldrb r2, [r3, 0x1] - subs r0, 0x23 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x40 - bgt _0805D490 - movs r0, 0 - b _0805D4A2 -_0805D490: - adds r0, r3, 0 - adds r1, r4, 0 - bl get_berry_tree_graphics - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - movs r0, 0x1 -_0805D4A2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D458 - - thumb_func_start sub_805D4A8 -sub_805D4A8: @ 805D4A8 - push {r4,lr} - adds r4, r1, 0 - ldrh r2, [r4, 0x32] - adds r2, 0x1 - strh r2, [r4, 0x32] - movs r1, 0x2 - ands r2, r1 - lsls r2, 16 - lsrs r2, 17 - lsls r2, 5 - ldrb r3, [r0, 0x1] - subs r1, 0x23 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x40 - bgt _0805D4DE - movs r0, 0 - b _0805D4EC -_0805D4DE: - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x3C] - subs r0, 0x3 - ands r0, r1 - strh r0, [r4, 0x3C] - movs r0, 0x1 -_0805D4EC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D4A8 - - thumb_func_start sub_805D4F4 -sub_805D4F4: @ 805D4F4 - 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, _0805D510 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D514 @ =sub_805D518 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D510: .4byte gMapObjects -_0805D514: .4byte sub_805D518 - thumb_func_end sub_805D4F4 - - thumb_func_start sub_805D518 -sub_805D518: @ 805D518 - push {r4,lr} - ldr r3, _0805D534 @ =gUnknown_083752E4 - 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 -_0805D534: .4byte gUnknown_083752E4 - thumb_func_end sub_805D518 - - thumb_func_start sub_805D538 -sub_805D538: @ 805D538 - 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_805D538 - - thumb_func_start sub_805D54C -sub_805D54C: @ 805D54C - 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_805D54C - - thumb_func_start sub_805D578 -sub_805D578: @ 805D578 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D5AE - ldr r4, _0805D5B8 @ =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] -_0805D5AE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D5B8: .4byte gUnknown_0837520C - thumb_func_end sub_805D578 - - thumb_func_start sub_805D5BC -sub_805D5BC: @ 805D5BC - 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 _0805D5DA - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D5E2 -_0805D5DA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D5E4 -_0805D5E2: - movs r0, 0 -_0805D5E4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D5BC - - thumb_func_start sub_805D5EC -sub_805D5EC: @ 805D5EC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D630 @ =gUnknown_083752A0 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x1 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D61C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D61C: - 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 -_0805D630: .4byte gUnknown_083752A0 - thumb_func_end sub_805D5EC - - 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} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D790 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D794 @ =sub_805D798 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D790: .4byte gMapObjects -_0805D794: .4byte sub_805D798 - thumb_func_end sub_805D774 - - thumb_func_start sub_805D798 -sub_805D798: @ 805D798 - push {r4,lr} - ldr r3, _0805D7B4 @ =gUnknown_0837530C - 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 -_0805D7B4: .4byte gUnknown_0837530C - thumb_func_end sub_805D798 - - thumb_func_start sub_805D7B8 -sub_805D7B8: @ 805D7B8 - 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_805D7B8 - - thumb_func_start sub_805D7CC -sub_805D7CC: @ 805D7CC - 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_805D7CC - - thumb_func_start sub_805D7F8 -sub_805D7F8: @ 805D7F8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D82E - ldr r4, _0805D838 @ =gUnknown_0837521C - 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] -_0805D82E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D838: .4byte gUnknown_0837521C - thumb_func_end sub_805D7F8 - - thumb_func_start sub_805D83C -sub_805D83C: @ 805D83C - 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 _0805D85A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D862 -_0805D85A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D864 -_0805D862: - movs r0, 0 -_0805D864: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D83C - - thumb_func_start sub_805D86C -sub_805D86C: @ 805D86C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D8B0 @ =gUnknown_08375320 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x3 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D89C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D89C: - 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 -_0805D8B0: .4byte gUnknown_08375320 - thumb_func_end sub_805D86C - - thumb_func_start sub_805D8B4 -sub_805D8B4: @ 805D8B4 - 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, _0805D8D0 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D8D4 @ =sub_805D8D8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D8D0: .4byte gMapObjects -_0805D8D4: .4byte sub_805D8D8 - thumb_func_end sub_805D8B4 - - thumb_func_start sub_805D8D8 -sub_805D8D8: @ 805D8D8 - push {r4,lr} - ldr r3, _0805D8F4 @ =gUnknown_08375324 - 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 -_0805D8F4: .4byte gUnknown_08375324 - thumb_func_end sub_805D8D8 - - thumb_func_start sub_805D8F8 -sub_805D8F8: @ 805D8F8 - 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_805D8F8 - - thumb_func_start sub_805D90C -sub_805D90C: @ 805D90C - 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_805D90C - - thumb_func_start sub_805D938 -sub_805D938: @ 805D938 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D96E - ldr r4, _0805D978 @ =gUnknown_0837521C - 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] -_0805D96E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D978: .4byte gUnknown_0837521C - thumb_func_end sub_805D938 - - thumb_func_start sub_805D97C -sub_805D97C: @ 805D97C - 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 _0805D99A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D9A2 -_0805D99A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D9A4 -_0805D9A2: - movs r0, 0 -_0805D9A4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D97C - - thumb_func_start sub_805D9AC -sub_805D9AC: @ 805D9AC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D9F0 @ =gUnknown_08375338 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x4 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D9DC - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D9DC: - 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 -_0805D9F0: .4byte gUnknown_08375338 - thumb_func_end sub_805D9AC - - thumb_func_start sub_805D9F4 -sub_805D9F4: @ 805D9F4 - 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, _0805DA10 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DA14 @ =sub_805DA18 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DA10: .4byte gMapObjects -_0805DA14: .4byte sub_805DA18 - thumb_func_end sub_805D9F4 - - thumb_func_start sub_805DA18 -sub_805DA18: @ 805DA18 - push {r4,lr} - ldr r3, _0805DA34 @ =gUnknown_0837533C - 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 -_0805DA34: .4byte gUnknown_0837533C - thumb_func_end sub_805DA18 - - thumb_func_start sub_805DA38 -sub_805DA38: @ 805DA38 - 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_805DA38 - - thumb_func_start sub_805DA4C -sub_805DA4C: @ 805DA4C - 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_805DA4C - - thumb_func_start sub_805DA78 -sub_805DA78: @ 805DA78 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DAAE - ldr r4, _0805DAB8 @ =gUnknown_0837521C - 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] -_0805DAAE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DAB8: .4byte gUnknown_0837521C - thumb_func_end sub_805DA78 - - thumb_func_start sub_805DABC -sub_805DABC: @ 805DABC - 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 _0805DADA - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DAE2 -_0805DADA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DAE4 -_0805DAE2: - movs r0, 0 -_0805DAE4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DABC - - thumb_func_start sub_805DAEC -sub_805DAEC: @ 805DAEC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DB30 @ =gUnknown_08375350 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x5 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DB1C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DB1C: - 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 -_0805DB30: .4byte gUnknown_08375350 - thumb_func_end sub_805DAEC - - thumb_func_start sub_805DB34 -sub_805DB34: @ 805DB34 - 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, _0805DB50 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DB54 @ =sub_805DB58 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DB50: .4byte gMapObjects -_0805DB54: .4byte sub_805DB58 - thumb_func_end sub_805DB34 - - thumb_func_start sub_805DB58 -sub_805DB58: @ 805DB58 - push {r4,lr} - ldr r3, _0805DB74 @ =gUnknown_08375354 - 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 -_0805DB74: .4byte gUnknown_08375354 - thumb_func_end sub_805DB58 - - thumb_func_start sub_805DB78 -sub_805DB78: @ 805DB78 - 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_805DB78 - - thumb_func_start sub_805DB8C -sub_805DB8C: @ 805DB8C - 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_805DB8C - - thumb_func_start sub_805DBB8 -sub_805DBB8: @ 805DBB8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DBEE - ldr r4, _0805DBF8 @ =gUnknown_0837521C - 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] -_0805DBEE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DBF8: .4byte gUnknown_0837521C - thumb_func_end sub_805DBB8 - - thumb_func_start sub_805DBFC -sub_805DBFC: @ 805DBFC - 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 _0805DC1A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DC22 -_0805DC1A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DC24 -_0805DC22: - movs r0, 0 -_0805DC24: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DBFC - - thumb_func_start sub_805DC2C -sub_805DC2C: @ 805DC2C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DC70 @ =gUnknown_08375368 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x6 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DC5C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DC5C: - 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 -_0805DC70: .4byte gUnknown_08375368 - thumb_func_end sub_805DC2C - - thumb_func_start sub_805DC74 -sub_805DC74: @ 805DC74 - 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, _0805DC90 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DC94 @ =sub_805DC98 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DC90: .4byte gMapObjects -_0805DC94: .4byte sub_805DC98 - thumb_func_end sub_805DC74 - - thumb_func_start sub_805DC98 -sub_805DC98: @ 805DC98 - push {r4,lr} - ldr r3, _0805DCB4 @ =gUnknown_0837536C - 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 -_0805DCB4: .4byte gUnknown_0837536C - thumb_func_end sub_805DC98 - - thumb_func_start sub_805DCB8 -sub_805DCB8: @ 805DCB8 - 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_805DCB8 - - thumb_func_start sub_805DCCC -sub_805DCCC: @ 805DCCC - 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_805DCCC - - thumb_func_start sub_805DCF8 -sub_805DCF8: @ 805DCF8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DD2E - ldr r4, _0805DD38 @ =gUnknown_0837521C - 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] -_0805DD2E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DD38: .4byte gUnknown_0837521C - thumb_func_end sub_805DCF8 - - thumb_func_start sub_805DD3C -sub_805DD3C: @ 805DD3C - 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 _0805DD5A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DD62 -_0805DD5A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DD64 -_0805DD62: - movs r0, 0 -_0805DD64: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DD3C - - thumb_func_start sub_805DD6C -sub_805DD6C: @ 805DD6C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DDB0 @ =gUnknown_08375380 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x7 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DD9C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DD9C: - 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 -_0805DDB0: .4byte gUnknown_08375380 - thumb_func_end sub_805DD6C - - thumb_func_start sub_805DDB4 -sub_805DDB4: @ 805DDB4 - 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, _0805DDD0 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DDD4 @ =sub_805DDD8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DDD0: .4byte gMapObjects -_0805DDD4: .4byte sub_805DDD8 - thumb_func_end sub_805DDB4 - - thumb_func_start sub_805DDD8 -sub_805DDD8: @ 805DDD8 - push {r4,lr} - ldr r3, _0805DDF4 @ =gUnknown_08375384 - 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 -_0805DDF4: .4byte gUnknown_08375384 - thumb_func_end sub_805DDD8 - - thumb_func_start sub_805DDF8 -sub_805DDF8: @ 805DDF8 - 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_805DDF8 - - thumb_func_start sub_805DE0C -sub_805DE0C: @ 805DE0C - 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_805DE0C - - thumb_func_start sub_805DE38 -sub_805DE38: @ 805DE38 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DE6E - ldr r4, _0805DE78 @ =gUnknown_0837521C - 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] -_0805DE6E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DE78: .4byte gUnknown_0837521C - thumb_func_end sub_805DE38 - - thumb_func_start sub_805DE7C -sub_805DE7C: @ 805DE7C - 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 _0805DE9A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DEA2 -_0805DE9A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DEA4 -_0805DEA2: - movs r0, 0 -_0805DEA4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DE7C - - thumb_func_start sub_805DEAC -sub_805DEAC: @ 805DEAC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DEF0 @ =gUnknown_08375398 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x8 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DEDC - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DEDC: - 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 -_0805DEF0: .4byte gUnknown_08375398 - thumb_func_end sub_805DEAC - - thumb_func_start sub_805DEF4 -sub_805DEF4: @ 805DEF4 - 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, _0805DF10 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DF14 @ =sub_805DF18 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DF10: .4byte gMapObjects -_0805DF14: .4byte sub_805DF18 - thumb_func_end sub_805DEF4 - - thumb_func_start sub_805DF18 -sub_805DF18: @ 805DF18 - push {r4,lr} - ldr r3, _0805DF34 @ =gUnknown_0837539C - 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 -_0805DF34: .4byte gUnknown_0837539C - thumb_func_end sub_805DF18 - - thumb_func_start sub_805DF38 -sub_805DF38: @ 805DF38 - 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_805DF38 - - thumb_func_start sub_805DF4C -sub_805DF4C: @ 805DF4C - 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_805DF4C - - thumb_func_start sub_805DF78 -sub_805DF78: @ 805DF78 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DFAE - ldr r4, _0805DFB8 @ =gUnknown_0837521C - 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] -_0805DFAE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DFB8: .4byte gUnknown_0837521C - thumb_func_end sub_805DF78 - - thumb_func_start sub_805DFBC -sub_805DFBC: @ 805DFBC - 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 _0805DFDA - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DFE2 -_0805DFDA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DFE4 -_0805DFE2: - movs r0, 0 -_0805DFE4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DFBC - - thumb_func_start sub_805DFEC -sub_805DFEC: @ 805DFEC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E030 @ =gUnknown_083753B0 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x9 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E01C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805E01C: - 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 -_0805E030: .4byte gUnknown_083753B0 - thumb_func_end sub_805DFEC - - thumb_func_start sub_805E034 -sub_805E034: @ 805E034 - 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, _0805E050 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E054 @ =sub_805E058 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E050: .4byte gMapObjects -_0805E054: .4byte sub_805E058 - thumb_func_end sub_805E034 - - thumb_func_start sub_805E058 -sub_805E058: @ 805E058 - push {r4,lr} - ldr r3, _0805E074 @ =gUnknown_083753B4 - 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 -_0805E074: .4byte gUnknown_083753B4 - thumb_func_end sub_805E058 - - thumb_func_start sub_805E078 -sub_805E078: @ 805E078 - 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_805E078 - - thumb_func_start sub_805E08C -sub_805E08C: @ 805E08C - 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_805E08C - - thumb_func_start sub_805E0B8 -sub_805E0B8: @ 805E0B8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E0EE - ldr r4, _0805E0F8 @ =gUnknown_0837521C - 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] -_0805E0EE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805E0F8: .4byte gUnknown_0837521C - thumb_func_end sub_805E0B8 - - thumb_func_start sub_805E0FC -sub_805E0FC: @ 805E0FC - 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 _0805E11A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805E122 -_0805E11A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805E124 -_0805E122: - movs r0, 0 -_0805E124: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E0FC - - thumb_func_start sub_805E12C -sub_805E12C: @ 805E12C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E170 @ =gUnknown_083753C8 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0xA - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E15C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805E15C: - 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 -_0805E170: .4byte gUnknown_083753C8 - thumb_func_end sub_805E12C - - thumb_func_start sub_805E174 -sub_805E174: @ 805E174 - 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, _0805E190 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E194 @ =sub_805E198 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E190: .4byte gMapObjects -_0805E194: .4byte sub_805E198 - thumb_func_end sub_805E174 - - thumb_func_start sub_805E198 -sub_805E198: @ 805E198 - push {r4,lr} - ldr r3, _0805E1B4 @ =gUnknown_083753CC - 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 -_0805E1B4: .4byte gUnknown_083753CC - thumb_func_end sub_805E198 - - thumb_func_start sub_805E1B8 -sub_805E1B8: @ 805E1B8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - 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, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E1B8 - - thumb_func_start sub_805E1E4 -sub_805E1E4: @ 805E1E4 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E1FE - adds r0, r4, 0 - movs r1, 0x30 - bl sub_8064820 - movs r0, 0x2 - strh r0, [r4, 0x30] -_0805E1FE: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E1E4 - - thumb_func_start sub_805E208 -sub_805E208: @ 805E208 - 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 _0805E226 - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805E22A -_0805E226: - movs r0, 0x3 - strh r0, [r5, 0x30] -_0805E22A: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E208 - - thumb_func_start sub_805E234 -sub_805E234: @ 805E234 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E274 @ =gUnknown_083753DC - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E260 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - add r0, sp - ldrb r1, [r0] -_0805E260: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0 - strh r0, [r5, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E274: .4byte gUnknown_083753DC - thumb_func_end sub_805E234 - - thumb_func_start sub_805E278 -sub_805E278: @ 805E278 - 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, _0805E294 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E298 @ =sub_805E29C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E294: .4byte gMapObjects -_0805E298: .4byte sub_805E29C - thumb_func_end sub_805E278 - - thumb_func_start sub_805E29C -sub_805E29C: @ 805E29C - push {r4,lr} - ldr r3, _0805E2B8 @ =gUnknown_083753E4 - 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 -_0805E2B8: .4byte gUnknown_083753E4 - thumb_func_end sub_805E29C - - thumb_func_start sub_805E2BC -sub_805E2BC: @ 805E2BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - 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, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E2BC - - thumb_func_start sub_805E2E8 -sub_805E2E8: @ 805E2E8 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E302 - adds r0, r4, 0 - movs r1, 0x30 - bl sub_8064820 - movs r0, 0x2 - strh r0, [r4, 0x30] -_0805E302: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E2E8 - - thumb_func_start sub_805E30C -sub_805E30C: @ 805E30C - 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 _0805E32A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805E32E -_0805E32A: - movs r0, 0x3 - strh r0, [r5, 0x30] -_0805E32E: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E30C - - thumb_func_start sub_805E338 -sub_805E338: @ 805E338 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E378 @ =gUnknown_083753F4 - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E364 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - add r0, sp - ldrb r1, [r0] -_0805E364: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0 - strh r0, [r5, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E378: .4byte gUnknown_083753F4 - thumb_func_end sub_805E338 - thumb_func_start sub_805E37C sub_805E37C: @ 805E37C push {lr} @@ -7192,206 +3512,10 @@ sub_805FD08: @ 805FD08 strb r1, [r0] movs r0, 0 bx lr - thumb_func_end sub_805FD08 - - thumb_func_start npc_reset -npc_reset: @ 805FD18 - ldrb r3, [r0] - movs r2, 0x3 - negs r2, r2 - ands r2, r3 - movs r3, 0x41 - negs r3, r3 - ands r2, r3 - movs r3, 0x7F - ands r2, r3 - strb r2, [r0] - movs r2, 0xFF - strb r2, [r0, 0x1C] - movs r0, 0 - strh r0, [r1, 0x30] - bx lr - thumb_func_end npc_reset - - thumb_func_start FieldObjectDirectionToImageAnimId -FieldObjectDirectionToImageAnimId: @ 805FD38 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD44 @ =gUnknown_083755F4 - adds r0, r1 - ldrb r0, [r0] - bx lr .align 2, 0 -_0805FD44: .4byte gUnknown_083755F4 - thumb_func_end FieldObjectDirectionToImageAnimId - - thumb_func_start get_go_image_anim_num -get_go_image_anim_num: @ 805FD48 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD54 @ =gUnknown_083755FD - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD54: .4byte gUnknown_083755FD - thumb_func_end get_go_image_anim_num - - thumb_func_start get_go_fast_image_anim_num -get_go_fast_image_anim_num: @ 805FD58 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD64 @ =gUnknown_08375606 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD64: .4byte gUnknown_08375606 - thumb_func_end get_go_fast_image_anim_num - - thumb_func_start get_go_faster_image_anim_num -get_go_faster_image_anim_num: @ 805FD68 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD74 @ =gUnknown_0837560F - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD74: .4byte gUnknown_0837560F - thumb_func_end get_go_faster_image_anim_num - - thumb_func_start sub_805FD78 -sub_805FD78: @ 805FD78 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD84 @ =gUnknown_08375618 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD84: .4byte gUnknown_08375618 - thumb_func_end sub_805FD78 - - thumb_func_start sub_805FD88 -sub_805FD88: @ 805FD88 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD94 @ =gUnknown_08375621 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD94: .4byte gUnknown_08375621 - thumb_func_end sub_805FD88 - - thumb_func_start sub_805FD98 -sub_805FD98: @ 805FD98 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDA4 @ =gUnknown_0837562A - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDA4: .4byte gUnknown_0837562A - thumb_func_end sub_805FD98 - - thumb_func_start unref_sub_805FDA8 -unref_sub_805FDA8: @ 805FDA8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDB4 @ =gUnknown_08375633 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDB4: .4byte gUnknown_08375633 - thumb_func_end unref_sub_805FDA8 - - thumb_func_start sub_805FDB8 -sub_805FDB8: @ 805FDB8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDC4 @ =gUnknown_0837563C - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDC4: .4byte gUnknown_0837563C - thumb_func_end sub_805FDB8 - - thumb_func_start sub_805FDC8 -sub_805FDC8: @ 805FDC8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDD4 @ =gUnknown_08375645 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDD4: .4byte gUnknown_08375645 - thumb_func_end sub_805FDC8 - - thumb_func_start sub_805FDD8 -sub_805FDD8: @ 805FDD8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDE4 @ =gUnknown_0837564E - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDE4: .4byte gUnknown_0837564E - thumb_func_end sub_805FDD8 - - thumb_func_start sub_805FDE8 -sub_805FDE8: @ 805FDE8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDF4 @ =gUnknown_08375657 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDF4: .4byte gUnknown_08375657 - thumb_func_end sub_805FDE8 - - thumb_func_start sub_805FDF8 -sub_805FDF8: @ 805FDF8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FE04 @ =gUnknown_08375660 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FE04: .4byte gUnknown_08375660 - thumb_func_end sub_805FDF8 - - thumb_func_start sub_805FE08 -sub_805FE08: @ 805FE08 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FE14 @ =gUnknown_08375669 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FE14: .4byte gUnknown_08375669 - thumb_func_end sub_805FE08 + thumb_func_end sub_805FD08 - thumb_func_start get_run_image_anim_num -get_run_image_anim_num: @ 805FE18 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FE24 @ =gUnknown_08375672 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FE24: .4byte gUnknown_08375672 - thumb_func_end get_run_image_anim_num + .section .text_805fd18 thumb_func_start sub_805FE28 sub_805FE28: @ 805FE28 diff --git a/include/field_map_obj.h b/include/field_map_obj.h index dfc41d38b..4f9b6f5af 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -6,6 +6,23 @@ void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); -void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u32 (*d8)()); +void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)(struct MapObject *, struct Sprite *)); +void npc_reset(struct MapObject *mapObject, struct Sprite *sprite); + +extern const u8 gUnknown_08375240[4]; +extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); + +extern const u8 gUnknown_083752A0[2]; +extern const u8 gUnknown_083752C0[2]; +extern const u8 gUnknown_08375320[2]; +extern const u8 gUnknown_08375338[2]; +extern const u8 gUnknown_08375350[2]; +extern const u8 gUnknown_08375368[2]; +extern const u8 gUnknown_08375380[2]; +extern const u8 gUnknown_08375398[2]; +extern const u8 gUnknown_083753B0[2]; +extern const u8 gUnknown_083753C8[2]; +extern const u8 gUnknown_083753DC[5]; +extern const u8 gUnknown_083753F4[5]; #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/ld_script.txt b/ld_script.txt index dac5fb782..866dcff5e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -92,6 +92,8 @@ SECTIONS { src/field_player_avatar.o(.text); src/field_map_obj.o(.text); asm/field_map_obj.o(.text); + src/field_map_obj.o(.text_b); + asm/field_map_obj.o(.text_805fd18); src/field_ground_effect.o(.text); asm/field_ground_effect.o(.text); src/field_map_obj_helpers.o(.text); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f7e09aacf..2c949c191 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4,12 +4,38 @@ #include "berry.h" #include "event_data.h" #include "field_player_avatar.h" +#include "field_effect.h" #include "palette.h" #include "rom4.h" +#include "rng.h" #include "sprite.h" extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; +#define fieldmap_object_cb(setup, callback, table) \ +extern u8 (*const table[])(struct MapObject *, struct Sprite *);\ +u8 callback(struct MapObject *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + meta_step(&gMapObjects[sprite->data0], sprite, callback);\ +}\ +u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ +{\ + return table[sprite->data1](mapObject, sprite);\ +} + +#define fieldmap_object_null_cb(setup, callback) \ +u8 callback(struct MapObject *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + meta_step(&gMapObjects[sprite->data0], sprite, callback);\ +}\ +u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ +{\ + return 0;\ +} + + extern void strange_npc_table_clear(void); extern void ClearPlayerAvatarInfo(void); extern void npc_load_two_palettes__no_record(u16, u8); @@ -1503,47 +1529,1394 @@ u16 npc_paltag_by_palslot(u8 a) return 0x11FF; } -u32 sub_805C8A8(void); +fieldmap_object_null_cb(sub_805C884, sub_805C8A8); +fieldmap_object_cb(sub_805C8AC, sub_805C8D0, gUnknown_08375224); + +u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +extern void FieldObjectSetRegularAnim(struct MapObject *, struct Sprite *, u8); -void sub_805C884(struct Sprite *sprite) +u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +extern u8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *); +extern const s16 gUnknown_0837520C[]; +extern const s16 gUnknown_0837521C[]; +extern void sub_8064820(struct Sprite *, s16); + +u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) { - meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8A8); + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) + { + return 0; + } + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + sprite->data1 = 3; + return 1; } -u32 sub_805C8A8(void) +extern u8 sub_8064824(struct Sprite *); + +u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) { + if (sub_8064824(sprite) != 0) + { + sprite->data1 = 4; + return 1; + } return 0; } -u32 sub_805C8D0(struct MapObject *, struct Sprite *); +extern u8 sub_805FF20(struct MapObject *, u8); + +u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375240, 4); + direction = directions[Random() & 3]; + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 5; + if (sub_805FF20(mapObject, direction) != 0) + { + sprite->data1 = 1; + } + return 1; +} + +u8 sub_805C9D8(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 6; + 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; +} + +u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3) +{ + u8 dirn; + if (a2 > a3) + { + dirn = DIR_EAST; + if (a0 < 0) + { + dirn = DIR_WEST; + } + } + else + { + dirn = DIR_SOUTH; + if (a1 < 0) + { + dirn = DIR_NORTH; + } + } + return dirn; +} -void sub_805C8AC(struct Sprite *sprite) +u8 sub_805CADC(s16 a0, s16 a1, s16 a2, s16 a3) { - meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8D0); + u8 dirn; + dirn = DIR_SOUTH; + if (a1 < 0) + { + dirn = DIR_NORTH; + } + return dirn; } -extern u8 (*const gUnknown_08375224[])(); +u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3) +{ + u8 dirn; + dirn = DIR_EAST; + if (a0 < 0) + { + dirn = DIR_WEST; + } + return dirn; +} -u32 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3) { - return gUnknown_08375224[sprite->data1](mapObject, sprite); + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_EAST) + { + dirn = DIR_NORTH; + } + } + else if (dirn == DIR_EAST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = DIR_NORTH; + } + } + return dirn; } -void npc_reset(); +u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3) +{ + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_WEST) + { + dirn = DIR_NORTH; + } + } + else if (dirn == DIR_WEST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = DIR_NORTH; + } + } + return dirn; +} -u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3) +{ + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_EAST) + { + dirn = DIR_SOUTH; + } + } + else if (dirn == DIR_EAST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = DIR_SOUTH; + } + } + return dirn; +} + +u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_WEST) + { + dirn = DIR_SOUTH; + } + } + else if (dirn == DIR_WEST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = DIR_SOUTH; + } + } + return dirn; +} + +u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3) +{ + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_EAST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + } + return dirn; +} + +u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3) +{ + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_WEST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + } + return dirn; +} + +u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3) +{ + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + } + return dirn; +} + +u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3) +{ + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + } + return dirn; +} + +u8 sub_805CD60(struct MapObject *mapObject, u8 a1) +{ + s16 x; + s16 y; + s16 x2; + s16 y2; + if (!FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + return 0; + } + PlayerGetDestCoords(&x, &y); + x -= mapObject->coords2.x; + y -= mapObject->coords2.y; + x2 = x; + y2 = y; + if (x2 < 0) + { + x2 = -x2; + } + if (y2 < 0) + { + y2 = -y2; + } + return gUnknown_08375244[a1](x, y, x2, y2); +} + +fieldmap_object_cb(sub_805CDE8, sub_805CE0c, gUnknown_08375270); + +u8 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite) { - npc_reset(mapObject); + npc_reset(mapObject, sprite); sprite->data1 = 1; return 1; } -extern void FieldObjectSetRegularAnim(); +u8 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} -u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375240, 4); + direction = sub_805CD60(mapObject, 0); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805CF28, sub_805CF4C, gUnknown_08375284); + +u8 sub_805CF6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805CF80(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805CFAC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) + { + return 0; + } + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + sprite->data1 = 3; + return 1; +} + +u8 sub_805CFE8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) != 0) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D008(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752A0, 2); + direction = directions[Random() & 1]; + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 5; + if (sub_805FF20(mapObject, direction) != 0) + { + sprite->data1 = 1; + } + return 1; +} + +u8 sub_805D054(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 6; + return 1; +} + +u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + +fieldmap_object_cb(sub_805D0AC, sub_805D0D0, gUnknown_083752A4); + +u8 sub_805D0F0(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D104(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D130(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) + { + return 0; + } + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + sprite->data1 = 3; + return 1; +} + +u8 sub_805D16C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) != 0) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D18C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752C0, 2); + direction = directions[Random() & 1]; + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 5; + if (sub_805FF20(mapObject, direction) != 0) + { + sprite->data1 = 1; + } + return 1; +} + +u8 sub_805D1D8(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 6; + return 1; +} + +u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + +fieldmap_object_cb(sub_805D230, sub_805D254, gUnknown_083752C4); + +u8 sub_805D274(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D2A0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + sprite->data1 = 2; + return 1; + } + return 0; +} + +u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_1 = 0; + return 0; +} + +u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); + +void FieldObjectCB_BerryTree(struct Sprite *sprite) +{ + struct MapObject *mapObject; + mapObject = &gMapObjects[sprite->data0]; + if (!(sprite->data7 & 1)) + { + get_berry_tree_graphics(mapObject, sprite); + sprite->data7 |= 1; + } + meta_step(mapObject, sprite, sub_805D314); +} + +u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752D0[sprite->data1](mapObject, sprite); +} + +extern u32 gUnknown_0202FF84[]; + +u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 berryTreeStage; + npc_reset(mapObject, sprite); + mapObject->mapobj_bit_13 = 1; + sprite->invisible = 1; + berryTreeStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId); + if (!berryTreeStage) + { + if (!(sprite->data7 & 4) && sprite->animNum == 4) + { + gUnknown_0202FF84[0] = mapObject->coords2.x; + gUnknown_0202FF84[1] = mapObject->coords2.y; + gUnknown_0202FF84[2] = sprite->subpriority - 1; + gUnknown_0202FF84[3] = sprite->oam.priority; + FieldEffectStart(0x17); + sprite->animNum = 0; + } + return 0; + } + mapObject->mapobj_bit_13 = 0; + sprite->invisible = 0; + berryTreeStage--; + if (sprite->animNum != berryTreeStage) + { + sprite->data1 = 2; + return 1; + } + get_berry_tree_graphics(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, 0x39); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D3EC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sprite->data1 = 0; + return 1; + } + return 0; +} + +u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 3; + sprite->data2 = 0; + sprite->data7 |= 2; + gUnknown_0202FF84[0] = mapObject->coords2.x; + gUnknown_0202FF84[1] = mapObject->coords2.y; + gUnknown_0202FF84[2] = sprite->subpriority - 1; + gUnknown_0202FF84[3] = sprite->oam.priority; + FieldEffectStart(0x17); + return 1; +} + +u8 sub_805D458(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->data2++; + mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1); + sprite->animPaused = 1; + if (sprite->data2 > 64) + { + get_berry_tree_graphics(mapObject, sprite); + sprite->data1 = 4; + sprite->data2 = 0; + return 1; + } + return 0; +} + +u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->data2++; + mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1); + sprite->animPaused = 1; + if (sprite->data2 > 64) + { + sprite->data1 = 0; + sprite->data7 &= (-3); + return 1; + } + return 0; +} + +fieldmap_object_cb(sub_805D4F4, sub_805D518, gUnknown_083752E4); + +u8 sub_805D538(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D54C(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); sprite->data1 = 2; return 1; } +u8 sub_805D578(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_805D5BC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752A0, 2); + direction = sub_805CD60(mapObject, 1); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805D634, sub_805D658, gUnknown_083752F8); + +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; +} + +fieldmap_object_cb(sub_805D774, sub_805D798, gUnknown_0837530C); + +u8 sub_805D7B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D7CC(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D7F8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D83C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375320, 2); + direction = sub_805CD60(mapObject, 3); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805D8B4, sub_805D8D8, gUnknown_08375324); + +u8 sub_805D8F8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D90C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D938(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D97C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D9AC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375338, 2); + direction = sub_805CD60(mapObject, 4); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805D9F4, sub_805DA18, gUnknown_0837533C); + +u8 sub_805DA38(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DA4C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DA78(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DABC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DAEC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375350, 2); + direction = sub_805CD60(mapObject, 5); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805DB34, sub_805DB58, gUnknown_08375354); + +u8 sub_805DB78(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DB8C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DBB8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DBFC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DC2C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375368, 2); + direction = sub_805CD60(mapObject, 6); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805DC74, sub_805DC98, gUnknown_0837536C); + +u8 sub_805DCB8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DCCC(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DCF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DD3C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DD6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375380, 4); + direction = sub_805CD60(mapObject, 7); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805DDB4, sub_805DDD8, gUnknown_08375384); + +u8 sub_805DDF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DE0C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DE38(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DE7C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375398, 4); + direction = sub_805CD60(mapObject, 8); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805DEF4, sub_805DF18, gUnknown_0837539C); + +u8 sub_805DF38(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DF4C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DF78(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DFBC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DFEC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_083753B0, 4); + direction = sub_805CD60(mapObject, 9); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805E034, sub_805E058, gUnknown_083753B4); + +u8 sub_805E078(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805E08C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805E0B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805E0FC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_083753C8, 4); + direction = sub_805CD60(mapObject, 10); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805E174, sub_805E198, gUnknown_083753CC); + +u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} + +u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, 0x30); + sprite->data1 = 2; + } + return 0; +} + +u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[5]; + memcpy(directions, gUnknown_083753DC, 5); + direction = sub_805CD60(mapObject, 0); + if (direction == 0) + { + direction = directions[mapObject->mapobj_unk_18]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 0; + return 1; +} + +fieldmap_object_cb(sub_805E278, sub_803E29C, gUnknown_083753E4); + +u8 sub_805E2BC(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} + +u8 sub_805E2E8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, 0x30); + sprite->data1 = 2; + } + return 0; +} + +u8 sub_805E30C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805E338(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[5]; + memcpy(directions, gUnknown_083753F4, 5); + direction = sub_805CD60(mapObject, 0); + if (direction == 0) + { + direction = directions[mapObject->mapobj_unk_18]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 0; + return 1; +} + + +void sub_805E37C(struct Sprite *sprite); +void sub_805E5DC(struct Sprite *sprite); +void sub_805E668(struct Sprite *sprite); +void sub_805E6F4(struct Sprite *sprite); +void sub_805E780(struct Sprite *sprite); +void sub_805E80C(struct Sprite *sprite); +void sub_805E898(struct Sprite *sprite); +void sub_805E924(struct Sprite *sprite); +void sub_805E9B0(struct Sprite *sprite); +void sub_805EA3C(struct Sprite *sprite); +void sub_805EAC8(struct Sprite *sprite); +void sub_805EB54(struct Sprite *sprite); +void sub_805EBE0(struct Sprite *sprite); +void sub_805EC6C(struct Sprite *sprite); +void sub_805ECF8(struct Sprite *sprite); +void sub_805ED84(struct Sprite *sprite); +void sub_805EE10(struct Sprite *sprite); +void sub_805EE9C(struct Sprite *sprite); +void sub_805EF28(struct Sprite *sprite); +void sub_805EFB4(struct Sprite *sprite); +void sub_805F040(struct Sprite *sprite); +void sub_805F0CC(struct Sprite *sprite); +void sub_805F158(struct Sprite *sprite); +void sub_805F1E4(struct Sprite *sprite); +void sub_805F270(struct Sprite *sprite); +void sub_805F2FC(struct Sprite *sprite); +void FieldObjectCB_TreeDisguise(struct Sprite *sprite); +void FieldObjectCB_MountainDisguise(struct Sprite *sprite); +void sub_805F8E0(struct Sprite *sprite); +void FieldObjectCB_Hidden1(struct Sprite *sprite); +void sub_805FB20(struct Sprite *sprite); +void sub_805FB90(struct Sprite *sprite); +void sub_805FC00(struct Sprite *sprite); +void sub_805FC70(struct Sprite *sprite); + +asm(".section .text_b\n"); + +void npc_reset(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_1 = 0; + mapObject->mapobj_bit_6 = 0; + mapObject->mapobj_bit_7 = 0; + mapObject->mapobj_unk_1C = 0xff; + sprite->data1 = 0; +} + +extern const u8 gUnknown_083755F4[9]; +extern const u8 gUnknown_083755FD[9]; +extern const u8 gUnknown_08375606[9]; +extern const u8 gUnknown_0837560F[9]; +extern const u8 gUnknown_08375618[9]; +extern const u8 gUnknown_08375621[9]; +extern const u8 gUnknown_0837562A[9]; +extern const u8 gUnknown_08375633[9]; +extern const u8 gUnknown_0837563C[9]; +extern const u8 gUnknown_08375645[9]; +extern const u8 gUnknown_0837564E[9]; +extern const u8 gUnknown_08375657[9]; +extern const u8 gUnknown_08375660[9]; +extern const u8 gUnknown_08375669[9]; +extern const u8 gUnknown_08375672[9]; + +u8 FieldObjectDirectionToImageAnimId(u8 direction) +{ + return gUnknown_083755F4[direction]; +} + +u8 get_go_image_anim_num(u8 direction) +{ + return gUnknown_083755FD[direction]; +} + +u8 get_go_fast_image_anim_num(u8 direction) +{ + return gUnknown_08375606[direction]; +} + +u8 get_go_faster_image_anim_num(u8 direction) +{ + return gUnknown_0837560F[direction]; +} + +u8 sub_805FD78(u8 direction) +{ + return gUnknown_08375618[direction]; +} + +u8 sub_805FD88(u8 direction) +{ + return gUnknown_08375621[direction]; +} + +u8 sub_805FD98(u8 direction) +{ + return gUnknown_0837562A[direction]; +} + +u8 unref_sub_805FDA8(u8 direction) +{ + return gUnknown_08375633[direction]; +} + +u8 sub_805FDB8(u8 direction) +{ + return gUnknown_0837563C[direction]; +} + +u8 sub_805FDC8(u8 direction) +{ + return gUnknown_08375645[direction]; +} + +u8 sub_805FDD8(u8 direction) +{ + return gUnknown_0837564E[direction]; +} + +u8 sub_805FDE8(u8 direction) +{ + return gUnknown_08375657[direction]; +} + +u8 sub_805FDF8(u8 direction) +{ + return gUnknown_08375660[direction]; +} + +u8 sub_805FE08(u8 direction) +{ + return gUnknown_08375669[direction]; +} + +u8 get_run_image_anim_num(u8 direction) +{ + return gUnknown_08375672[direction]; +} diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 6a0fe1dce..71ff40435 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -27,7 +27,7 @@ extern u8 gOtherText_ItGotAway[]; extern u32 gUnknown_0202FF84[]; //Functions -static u32 sub_80587D8(void); +static u8 sub_80587D8(void); static bool8 sub_8058854(struct MapObject *, u8); static void npc_clear_strange_bits(struct MapObject *a); static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c); @@ -252,7 +252,7 @@ void sub_80587B4(struct Sprite *sprite) meta_step(&gMapObjects[sprite->data0], sprite, sub_80587D8); } -static u32 sub_80587D8(void) +static u8 sub_80587D8(void) { return 0; } diff --git a/tools/agbcc b/tools/agbcc new file mode 160000 +Subproject 928b1951972d7ff8c46347b3dce9e254cf6c215 |