summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdata/field_map_obj.s470
-rwxr-xr-xinclude/data/field_map_obj/callback_subroutine_pointers.h442
-rwxr-xr-x[-rw-r--r--]include/field_map_obj.h249
-rwxr-xr-xsrc/field_map_obj.c10
4 files changed, 655 insertions, 516 deletions
diff --git a/data/field_map_obj.s b/data/field_map_obj.s
index b52ec9581..20e372201 100755
--- a/data/field_map_obj.s
+++ b/data/field_map_obj.s
@@ -3,476 +3,6 @@
.section .rodata
- .align 2
-gUnknown_08375224:: @ 8375224
- .4byte sub_805C8F0
- .4byte sub_805C904
- .4byte sub_805C930
- .4byte sub_805C96C
- .4byte sub_805C98C
- .4byte sub_805C9D8
- .4byte sub_805CA08
-
-gUnknown_08375240:: @ 8375240
- .byte DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST
-
- .align 2
-gUnknown_08375244:: @ 8375244
- .4byte sub_805CAAC
- .4byte sub_805CADC
- .4byte sub_805CAEC
- .4byte sub_805CB00
- .4byte sub_805CB5C
- .4byte sub_805CBB8
- .4byte sub_805CC14
- .4byte sub_805CC70
- .4byte sub_805CCAC
- .4byte sub_805CCE8
- .4byte sub_805CD24
-
- .align 2
-gUnknown_08375270:: @ 8375270
- .4byte sub_805CE2C
- .4byte sub_805CE40
- .4byte sub_805CE6C
- .4byte sub_805CEB0
- .4byte sub_805CEE0
-
- .align 2
-gUnknown_08375284:: @ 8375284
- .4byte sub_805CF6C
- .4byte sub_805CF80
- .4byte sub_805CFAC
- .4byte sub_805CFE8
- .4byte sub_805D008
- .4byte sub_805D054
- .4byte sub_805D084
-
-gUnknown_083752A0:: @ 83752A0
- .byte DIR_SOUTH, DIR_NORTH
-
- .align 2
-gUnknown_083752A4:: @ 83752A4
- .4byte sub_805D0F0
- .4byte sub_805D104
- .4byte sub_805D130
- .4byte sub_805D16C
- .4byte sub_805D18C
- .4byte sub_805D1D8
- .4byte sub_805D208
-
-gUnknown_083752C0:: @ 83752C0
- .byte DIR_WEST, DIR_EAST
-
- .align 2
-gUnknown_083752C4:: @ 83752C4
- .4byte sub_805D274
- .4byte sub_805D2A0
- .4byte sub_805D2C0
-
- .align 2
-gUnknown_083752D0:: @ 83752D0
- .4byte do_berry_tree_growth_sparkle_1
- .4byte sub_805D3EC
- .4byte do_berry_tree_growth_sparkle_2
- .4byte sub_805D458
- .4byte sub_805D4A8
-
- .align 2
-gUnknown_083752E4:: @ 83752E4
- .4byte sub_805D538
- .4byte sub_805D54C
- .4byte sub_805D578
- .4byte sub_805D5BC
- .4byte sub_805D5EC
-
- .align 2
-gUnknown_083752F8:: @ 83752F8
- .4byte sub_805D678
- .4byte sub_805D68C
- .4byte sub_805D6B8
- .4byte sub_805D6FC
- .4byte sub_805D72C
-
- .align 2
-gUnknown_0837530C:: @ 837530C
- .4byte sub_805D7B8
- .4byte sub_805D7CC
- .4byte sub_805D7F8
- .4byte sub_805D83C
- .4byte sub_805D86C
-
-gUnknown_08375320:: @ 8375320
- .byte DIR_NORTH, DIR_WEST
-
- .align 2
-gUnknown_08375324:: @ 8375324
- .4byte sub_805D8F8
- .4byte sub_805D90C
- .4byte sub_805D938
- .4byte sub_805D97C
- .4byte sub_805D9AC
-
-gUnknown_08375338:: @ 8375338
- .byte DIR_NORTH, DIR_EAST
-
- .align 2
-gUnknown_0837533C:: @ 837533C
- .4byte sub_805DA38
- .4byte sub_805DA4C
- .4byte sub_805DA78
- .4byte sub_805DABC
- .4byte sub_805DAEC
-
-gUnknown_08375350:: @ 8375350
- .byte DIR_SOUTH, DIR_WEST
-
- .align 2
-gUnknown_08375354:: @ 8375354
- .4byte sub_805DB78
- .4byte sub_805DB8C
- .4byte sub_805DBB8
- .4byte sub_805DBFC
- .4byte sub_805DC2C
-
-gUnknown_08375368:: @ 8375368
- .byte DIR_SOUTH, DIR_EAST
-
- .align 2
-gUnknown_0837536C:: @ 837536C
- .4byte sub_805DCB8
- .4byte sub_805DCCC
- .4byte sub_805DCF8
- .4byte sub_805DD3C
- .4byte sub_805DD6C
-
-gUnknown_08375380:: @ 8375380
- .byte DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_SOUTH
-
- .align 2
-gUnknown_08375384:: @ 8375384
- .4byte sub_805DDF8
- .4byte sub_805DE0C
- .4byte sub_805DE38
- .4byte sub_805DE7C
- .4byte sub_805DEAC
-
-gUnknown_08375398:: @ 8375398
- .byte DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_SOUTH
-
- .align 2
-gUnknown_0837539C:: @ 837539C
- .4byte sub_805DF38
- .4byte sub_805DF4C
- .4byte sub_805DF78
- .4byte sub_805DFBC
- .4byte sub_805DFEC
-
-gUnknown_083753B0:: @ 83753B0
- .byte DIR_NORTH, DIR_WEST, DIR_EAST, DIR_NORTH
-
- .align 2
-gUnknown_083753B4:: @ 83753B4
- .4byte sub_805E078
- .4byte sub_805E08C
- .4byte sub_805E0B8
- .4byte sub_805E0FC
- .4byte sub_805E12C
-
-gUnknown_083753C8:: @ 83753C8
- .byte DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH
-
- .align 2
-gUnknown_083753CC:: @ 83753CC
- .4byte sub_805E1B8
- .4byte sub_805E1E4
- .4byte sub_805E208
- .4byte sub_805E234
-
-gUnknown_083753DC:: @ 83753DC
- .byte DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH
-
- .align 2
-gUnknown_083753E4:: @ 83753E4
- .4byte sub_805E2BC
- .4byte sub_805E2E8
- .4byte sub_805E30C
- .4byte sub_805E338
-
-gUnknown_083753F4:: @ 83753F4
- .byte DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH
-
- .align 2
-gUnknown_083753FC:: @ 83753FC
- .4byte sub_805E3C0
- .4byte sub_805E3D4
- .4byte sub_805E40C
- .4byte sub_805E4C4
-
- .align 2
-gUnknown_0837540C:: @ 837540C
- .4byte sub_805E4EC
- .4byte sub_805E620
- .4byte sub_805E5B4
-
-gUnknown_08375418:: @ 8375418
- .byte DIR_NORTH, DIR_EAST, DIR_WEST, DIR_SOUTH
-
- .align 2
-gUnknown_0837541C:: @ 837541C
- .4byte sub_805E4EC
- .4byte sub_805E6AC
- .4byte sub_805E5B4
-
- .align 2
-gUnknown_08375428:: @ 8375428
- .byte DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH
-
-gUnknown_0837542C:: @ 837542C
- .4byte sub_805E4EC
- .4byte sub_805E738
- .4byte sub_805E5B4
-
-gUnknown_08375438:: @ 8375438
- .byte DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_WEST
-
- .align 2
-gUnknown_0837543C:: @ 837543C
- .4byte sub_805E4EC
- .4byte sub_805E7C4
- .4byte sub_805E5B4
-
-gUnknown_08375448:: @ 8375448
- .byte DIR_WEST, DIR_SOUTH, DIR_NORTH, DIR_EAST
-
- .align 2
-gUnknown_0837544C:: @ 837544C
- .4byte sub_805E4EC
- .4byte sub_805E850
- .4byte sub_805E5B4
-
-gUnknown_08375458:: @ 8375458
- .byte DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH
-
- .align 2
-gUnknown_0837545C:: @ 837545C
- .4byte sub_805E4EC
- .4byte sub_805E8DC
- .4byte sub_805E5B4
-
-gUnknown_08375468:: @ 8375468
- .byte DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH
-
- .align 2
-gUnknown_0837546C:: @ 837546C
- .4byte sub_805E4EC
- .4byte sub_805E968
- .4byte sub_805E5B4
-
- .align 2
-gUnknown_08375478:: @ 8375478
- .4byte sub_805E4EC
- .4byte sub_805E9F4
- .4byte sub_805E5B4
-
-gUnknown_08375484:: @ 8375484
- .byte DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST
-
- .align 2
-gUnknown_08375488:: @ 8375488
- .4byte sub_805E4EC
- .4byte sub_805EA80
- .4byte sub_805E5B4
-
-gUnknown_08375494:: @ 8375494
- .byte DIR_WEST, DIR_NORTH, DIR_SOUTH, DIR_EAST
-
- .align 2
-gUnknown_08375498:: @ 8375498
- .4byte sub_805E4EC
- .4byte sub_805EB0C
- .4byte sub_805E5B4
-
-gUnknown_083754A4:: @ 83754A4
- .byte DIR_NORTH, DIR_SOUTH, DIR_EAST, DIR_WEST
-
- .align 2
-gUnknown_083754A8:: @ 83754A8
- .4byte sub_805E4EC
- .4byte sub_805EB98
- .4byte sub_805E5B4
-
-gUnknown_083754B4:: @ 83754B4
- .byte DIR_EAST, DIR_WEST, DIR_NORTH, DIR_SOUTH
-
- .align 2
-gUnknown_083754B8:: @ 83754B8
- .4byte sub_805E4EC
- .4byte sub_805EC24
- .4byte sub_805E5B4
-
-gUnknown_083754C4:: @ 83754C4
- .byte DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_NORTH
-
- .align 2
-gUnknown_083754C8:: @ 83754C8
- .4byte sub_805E4EC
- .4byte sub_805ECB0
- .4byte sub_805E5B4
-
-gUnknown_083754D4:: @ 83754D4
- .byte DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST
-
- .align 2
-gUnknown_083754D8:: @ 83754D8
- .4byte sub_805E4EC
- .4byte sub_805ED3C
- .4byte sub_805E5B4
-
-gUnknown_083754E4:: @ 83754E4
- .byte DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST
-
- .align 2
-gUnknown_083754E8:: @ 83754E8
- .4byte sub_805E4EC
- .4byte sub_805EDC8
- .4byte sub_805E5B4
-
-gUnknown_083754F4:: @ 83754F4
- .byte DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH
-
- .align 2
-gUnknown_083754F8:: @ 83754F8
- .4byte sub_805E4EC
- .4byte sub_805EE54
- .4byte sub_805E5B4
-
-gUnknown_08375504:: @ 8375504
- .byte DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH
-
- .align 2
-gUnknown_08375508:: @ 8375508
- .4byte sub_805E4EC
- .4byte sub_805EEE0
- .4byte sub_805E5B4
-
-gUnknown_08375514:: @ 8375514
- .byte DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST
-
- .align 2
-gUnknown_08375518:: @ 8375518
- .4byte sub_805E4EC
- .4byte sub_805EF6C
- .4byte sub_805E5B4
-
-gUnknown_08375524:: @ 8375524
- .byte DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST
-
- .align 2
-gUnknown_08375528:: @ 8375528
- .4byte sub_805E4EC
- .4byte sub_805EFF8
- .4byte sub_805E5B4
-
-gUnknown_08375534:: @ 8375534
- .byte DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_NORTH
-
- .align 2
-gUnknown_08375538:: @ 8375538
- .4byte sub_805E4EC
- .4byte sub_805F084
- .4byte sub_805E5B4
-
-gUnknown_08375544:: @ 8375544
- .byte DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH
-
- .align 2
-gUnknown_08375548:: @ 8375548
- .4byte sub_805E4EC
- .4byte sub_805F110
- .4byte sub_805E5B4
-
-gUnknown_08375554:: @ 8375554
- .byte DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST
-
- .align 2
-gUnknown_08375558:: @ 8375558
- .4byte sub_805E4EC
- .4byte sub_805F19C
- .4byte sub_805E5B4
-
-gUnknown_08375564:: @ 8375564
- .byte DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_EAST
-
- .align 2
-gUnknown_08375568:: @ 8375568
- .4byte sub_805E4EC
- .4byte sub_805F228
- .4byte sub_805E5B4
-
-gUnknown_08375574:: @ 8375574
- .byte DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH
-
- .align 2
-gUnknown_08375578:: @ 8375578
- .4byte sub_805E4EC
- .4byte sub_805F2B4
- .4byte sub_805E5B4
-
- .align 2
-gUnknown_08375584:: @ 8375584
- .byte DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH
-
- .align 2
-gUnknown_08375588:: @ 8375588
- .4byte mss_npc_reset_oampriv3_1_unk2_unk3
- .4byte sub_805F364
- .4byte sub_805F3C4
-
- .align 2
-gUnknown_08375594:: @ 8375594
- .4byte sub_805F3EC
- .4byte sub_805F3F0
- .4byte sub_805F438
- .4byte sub_805F4F0
- .4byte sub_805F5A8
- .4byte sub_805F660
- .4byte cph_IM_DIFFERENT
- .4byte sub_805F760
- .4byte oac_hopping
- .4byte sub_805F3EC
- .4byte sub_805F3EC
-
- .align 2
-gUnknown_083755C0:: @ 83755C0
- .4byte mss_npc_reset_oampriv3_1_unk2_unk3
- .4byte mss_08062EA4
- .4byte sub_805F3C4
-
- .align 2
-gUnknown_083755CC:: @ 83755CC
- .4byte sub_805FAF8
-
- .align 2
-gUnknown_083755D0:: @ 83755D0
- .4byte sub_805FB64
- .4byte sub_805FB04
-
- .align 2
-gUnknown_083755D8:: @ 83755D8
- .4byte sub_805FBD4
- .4byte sub_805FB04
-
- .align 2
-gUnknown_083755E0:: @ 83755E0
- .4byte sub_805FC44
- .4byte sub_805FB04
-
- .align 2
-gUnknown_083755E8:: @ 83755E8
- .4byte sub_805FCB4
- .4byte sub_805FCE8
- .4byte sub_805FD08
gUnknown_083755F4:: @ 83755F4
.byte 0x00, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0x01
diff --git a/include/data/field_map_obj/callback_subroutine_pointers.h b/include/data/field_map_obj/callback_subroutine_pointers.h
new file mode 100755
index 000000000..d24a47184
--- /dev/null
+++ b/include/data/field_map_obj/callback_subroutine_pointers.h
@@ -0,0 +1,442 @@
+//
+// Created by scott on 6/18/2017.
+//
+
+#ifndef POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H
+#define POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H
+
+
+u8 (*const gUnknown_08375224[])(struct MapObject *, struct Sprite *) = {
+ sub_805C8F0,
+ sub_805C904,
+ sub_805C930,
+ sub_805C96C,
+ sub_805C98C,
+ sub_805C9D8,
+ sub_805CA08
+};
+
+const u8 gUnknown_08375240[] = {DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST};
+
+u8 (*const gUnknown_08375244[])(s16, s16, s16, s16) = {
+ sub_805CAAC,
+ sub_805CADC,
+ sub_805CAEC,
+ sub_805CB00,
+ sub_805CB5C,
+ sub_805CBB8,
+ sub_805CC14,
+ sub_805CC70,
+ sub_805CCAC,
+ sub_805CCE8,
+ sub_805CD24
+};
+
+u8 (*const gUnknown_08375270[])(struct MapObject *, struct Sprite *) = {
+ sub_805CE2C,
+ sub_805CE40,
+ sub_805CE6C,
+ sub_805CEB0,
+ sub_805CEE0
+};
+
+u8 (*const gUnknown_08375284[])(struct MapObject *, struct Sprite *) = {
+ sub_805CF6C,
+ sub_805CF80,
+ sub_805CFAC,
+ sub_805CFE8,
+ sub_805D008,
+ sub_805D054,
+ sub_805D084
+};
+
+const u8 gUnknown_083752A0[] = {DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gUnknown_083752A4[])(struct MapObject *, struct Sprite *) = {
+ sub_805D0F0,
+ sub_805D104,
+ sub_805D130,
+ sub_805D16C,
+ sub_805D18C,
+ sub_805D1D8,
+ sub_805D208
+};
+
+const u8 gUnknown_083752C0[] = {DIR_WEST, DIR_EAST};
+
+u8 (*const gUnknown_083752C4[])(struct MapObject *, struct Sprite *) = {
+ sub_805D274,
+ sub_805D2A0,
+ sub_805D2C0
+};
+
+u8 (*const gUnknown_083752D0[])(struct MapObject *, struct Sprite *) = {
+ do_berry_tree_growth_sparkle_1,
+ sub_805D3EC,
+ do_berry_tree_growth_sparkle_2,
+ sub_805D458,
+ sub_805D4A8
+};
+
+u8 (*const gUnknown_083752E4[])(struct MapObject *, struct Sprite *) = {
+ sub_805D538,
+ sub_805D54C,
+ sub_805D578,
+ sub_805D5BC,
+ sub_805D5EC
+};
+
+u8 (*const gUnknown_083752F8[])(struct MapObject *, struct Sprite *) = {
+ sub_805D678,
+ sub_805D68C,
+ sub_805D6B8,
+ sub_805D6FC,
+ sub_805D72C
+};
+
+u8 (*const gUnknown_0837530C[])(struct MapObject *, struct Sprite *) = {
+ sub_805D7B8,
+ sub_805D7CC,
+ sub_805D7F8,
+ sub_805D83C,
+ sub_805D86C
+};
+
+const u8 gUnknown_08375320[] = {DIR_NORTH, DIR_WEST};
+
+u8 (*const gUnknown_08375324[])(struct MapObject *, struct Sprite *) = {
+ sub_805D8F8,
+ sub_805D90C,
+ sub_805D938,
+ sub_805D97C,
+ sub_805D9AC
+};
+
+const u8 gUnknown_08375338[] = {DIR_NORTH, DIR_EAST};
+
+u8 (*const gUnknown_0837533C[])(struct MapObject *, struct Sprite *) = {
+ sub_805DA38,
+ sub_805DA4C,
+ sub_805DA78,
+ sub_805DABC,
+ sub_805DAEC
+};
+
+const u8 gUnknown_08375350[] = {DIR_SOUTH, DIR_WEST};
+
+u8 (*const gUnknown_08375354[])(struct MapObject *, struct Sprite *) = {
+ sub_805DB78,
+ sub_805DB8C,
+ sub_805DBB8,
+ sub_805DBFC,
+ sub_805DC2C
+};
+
+const u8 gUnknown_08375368[] = {DIR_SOUTH, DIR_EAST};
+
+u8 (*const gUnknown_0837536C[])(struct MapObject *, struct Sprite *) = {
+ sub_805DCB8,
+ sub_805DCCC,
+ sub_805DCF8,
+ sub_805DD3C,
+ sub_805DD6C
+};
+
+const u8 gUnknown_08375380[] = {DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_SOUTH};
+
+u8 (*const gUnknown_08375384[])(struct MapObject *, struct Sprite *) = {
+ sub_805DDF8,
+ sub_805DE0C,
+ sub_805DE38,
+ sub_805DE7C,
+ sub_805DEAC
+};
+
+const u8 gUnknown_08375398[] = {DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_SOUTH};
+
+u8 (*const gUnknown_0837539C[])(struct MapObject *, struct Sprite *) = {
+ sub_805DF38,
+ sub_805DF4C,
+ sub_805DF78,
+ sub_805DFBC,
+ sub_805DFEC
+};
+
+const u8 gUnknown_083753B0[] = {DIR_NORTH, DIR_WEST, DIR_EAST, DIR_NORTH};
+
+u8 (*const gUnknown_083753B4[])(struct MapObject *, struct Sprite *) = {
+ sub_805E078,
+ sub_805E08C,
+ sub_805E0B8,
+ sub_805E0FC,
+ sub_805E12C
+};
+
+const u8 gUnknown_083753C8[] = {DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH};
+
+u8 (*const gUnknown_083753CC[])(struct MapObject *, struct Sprite *) = {
+ sub_805E1B8,
+ sub_805E1E4,
+ sub_805E208,
+ sub_805E234
+};
+
+const u8 gUnknown_083753DC[] = {DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gUnknown_083753E4[])(struct MapObject *, struct Sprite *) = {
+ sub_805E2BC,
+ sub_805E2E8,
+ sub_805E30C,
+ sub_805E338
+};
+
+const u8 gUnknown_083753F4[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+
+u8 (*const gUnknown_083753FC[])(struct MapObject *, struct Sprite *) = {
+ sub_805E3C0,
+ sub_805E3D4,
+ sub_805E40C,
+ sub_805E4C4
+};
+
+u8 (*const gUnknown_0837540C[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805E620,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375418[] = {DIR_NORTH, DIR_EAST, DIR_WEST, DIR_SOUTH};
+
+u8 (*const gUnknown_0837541C[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805E6AC,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375428[] = {DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH};
+u8 (*const gUnknown_0837542C[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805E738,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375438[] = {DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_WEST};
+
+u8 (*const gUnknown_0837543C[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805E7C4,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375448[] = {DIR_WEST, DIR_SOUTH, DIR_NORTH, DIR_EAST};
+
+u8 (*const gUnknown_0837544C[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805E850,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375458[] = {DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH};
+
+u8 (*const gUnknown_0837545C[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805E8DC,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375468[] = {DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gUnknown_0837546C[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805E968,
+ sub_805E5B4
+};
+
+u8 (*const gUnknown_08375478[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805E9F4,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375484[] = {DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST};
+
+u8 (*const gUnknown_08375488[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805EA80,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375494[] = {DIR_WEST, DIR_NORTH, DIR_SOUTH, DIR_EAST};
+
+u8 (*const gUnknown_08375498[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805EB0C,
+ sub_805E5B4
+};
+
+const u8 gUnknown_083754A4[] = {DIR_NORTH, DIR_SOUTH, DIR_EAST, DIR_WEST};
+
+u8 (*const gUnknown_083754A8[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805EB98,
+ sub_805E5B4
+};
+
+const u8 gUnknown_083754B4[] = {DIR_EAST, DIR_WEST, DIR_NORTH, DIR_SOUTH};
+
+u8 (*const gUnknown_083754B8[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805EC24,
+ sub_805E5B4
+};
+
+const u8 gUnknown_083754C4[] = {DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_NORTH};
+
+u8 (*const gUnknown_083754C8[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805ECB0,
+ sub_805E5B4
+};
+
+const u8 gUnknown_083754D4[] = {DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST};
+
+u8 (*const gUnknown_083754D8[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805ED3C,
+ sub_805E5B4
+};
+
+const u8 gUnknown_083754E4[] = {DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST};
+
+u8 (*const gUnknown_083754E8[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805EDC8,
+ sub_805E5B4
+};
+
+const u8 gUnknown_083754F4[] = {DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+
+u8 (*const gUnknown_083754F8[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805EE54,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375504[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH};
+
+u8 (*const gUnknown_08375508[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805EEE0,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375514[] = {DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST};
+
+u8 (*const gUnknown_08375518[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805EF6C,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375524[] = {DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST};
+
+u8 (*const gUnknown_08375528[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805EFF8,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375534[] = {DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_NORTH};
+
+u8 (*const gUnknown_08375538[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805F084,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375544[] = {DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH};
+
+u8 (*const gUnknown_08375548[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805F110,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375554[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST};
+
+u8 (*const gUnknown_08375558[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805F19C,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375564[] = {DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_EAST};
+
+u8 (*const gUnknown_08375568[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805F228,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375574[] = {DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH};
+
+u8 (*const gUnknown_08375578[])(struct MapObject *, struct Sprite *) = {
+ sub_805E4EC,
+ sub_805F2B4,
+ sub_805E5B4
+};
+
+const u8 gUnknown_08375584[] = {DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH};
+
+u8 (*const gUnknown_08375588[])(struct MapObject *, struct Sprite *) = {
+ mss_npc_reset_oampriv3_1_unk2_unk3,
+ sub_805F364,
+ sub_805F3C4
+};
+
+u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)) = {
+ sub_805F3EC,
+ sub_805F3F0,
+ sub_805F438,
+ sub_805F4F0,
+ sub_805F5A8,
+ sub_805F660,
+ cph_IM_DIFFERENT,
+ sub_805F760,
+ oac_hopping,
+ sub_805F3EC,
+ sub_805F3EC
+};
+
+u8 (*const gUnknown_083755C0[])(struct MapObject *, struct Sprite *) = {
+ mss_npc_reset_oampriv3_1_unk2_unk3,
+ mss_08062EA4,
+ sub_805F3C4
+};
+
+u8 (*const gUnknown_083755CC[])(struct MapObject *, struct Sprite *) = {
+ sub_805FAF8
+};
+
+u8 (*const gUnknown_083755D0[])(struct MapObject *, struct Sprite *) = {
+ sub_805FB64,
+ sub_805FB04
+};
+
+u8 (*const gUnknown_083755D8[])(struct MapObject *, struct Sprite *) = {
+ sub_805FBD4,
+ sub_805FB04
+};
+
+u8 (*const gUnknown_083755E0[])(struct MapObject *, struct Sprite *) = {
+ sub_805FC44,
+ sub_805FB04
+};
+
+u8 (*const gUnknown_083755E8[])(struct MapObject *, struct Sprite *) = {
+ sub_805FCB4,
+ sub_805FCE8,
+ sub_805FD08
+};
+
+#endif //POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index e1210f16c..fd74b28e0 100644..100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -4,7 +4,6 @@
#include "sprite.h"
#define fieldmap_object_cb(setup, callback, table) \
-extern u8 (*const table[])(struct MapObject *, struct Sprite *);\
static u8 callback(struct MapObject *, struct Sprite *);\
void setup(struct Sprite *sprite)\
{\
@@ -43,48 +42,33 @@ void MoveCoords(u8 direction, s16 *x, s16 *y);
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);
+u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3);
+u8 sub_805CADC(s16 a0, s16 a1, s16 a2, s16 a3);
+u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3);
+u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3);
+u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3);
+u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3);
+u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3);
+u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3);
+u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3);
+u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3);
+u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3);
+
+u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+
extern bool8 (*const gUnknown_08375684[4])(u8);
extern bool8 (*const gUnknown_08375694[4])(u8);
-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];
-extern const u8 gUnknown_08375418[4];
-extern const u8 gUnknown_08375428[4];
-extern const u8 gUnknown_08375438[4];
-extern const u8 gUnknown_08375448[4];
-extern const u8 gUnknown_08375458[4];
-extern const u8 gUnknown_08375468[4];
-extern const u8 gUnknown_08375240[4];
-extern const u8 gUnknown_08375484[4];
-extern const u8 gUnknown_08375494[4];
-extern const u8 gUnknown_083754A4[4];
-extern const u8 gUnknown_083754B4[4];
-extern const u8 gUnknown_083754C4[4];
-extern const u8 gUnknown_083754D4[4];
-extern const u8 gUnknown_083754E4[4];
-extern const u8 gUnknown_083754F4[4];
-extern const u8 gUnknown_08375504[4];
-extern const u8 gUnknown_08375514[4];
-extern const u8 gUnknown_08375524[4];
-extern const u8 gUnknown_08375534[4];
-extern const u8 gUnknown_08375544[4];
-extern const u8 gUnknown_08375554[4];
-extern const u8 gUnknown_08375564[4];
-extern const u8 gUnknown_08375574[4];
-extern const u8 gUnknown_08375584[4];
-
extern const u8 gUnknown_0837567B[9];
extern const u8 gUnknown_0837574F[8];
@@ -154,5 +138,190 @@ void sub_805FB90(struct Sprite *);
void sub_805FC00(struct Sprite *);
void sub_805FC70(struct Sprite *);
+u8 sub_805C8F0(struct MapObject *, struct Sprite *);
+u8 sub_805C904(struct MapObject *, struct Sprite *);
+u8 sub_805C930(struct MapObject *, struct Sprite *);
+u8 sub_805C96C(struct MapObject *, struct Sprite *);
+u8 sub_805C98C(struct MapObject *, struct Sprite *);
+u8 sub_805C9D8(struct MapObject *, struct Sprite *);
+u8 sub_805CA08(struct MapObject *, struct Sprite *);
+u8 sub_805CE2C(struct MapObject *, struct Sprite *);
+u8 sub_805CE40(struct MapObject *, struct Sprite *);
+u8 sub_805CE6C(struct MapObject *, struct Sprite *);
+u8 sub_805CEB0(struct MapObject *, struct Sprite *);
+u8 sub_805CEE0(struct MapObject *, struct Sprite *);
+u8 sub_805CF6C(struct MapObject *, struct Sprite *);
+u8 sub_805CF80(struct MapObject *, struct Sprite *);
+u8 sub_805CFAC(struct MapObject *, struct Sprite *);
+u8 sub_805CFE8(struct MapObject *, struct Sprite *);
+u8 sub_805D008(struct MapObject *, struct Sprite *);
+u8 sub_805D054(struct MapObject *, struct Sprite *);
+u8 sub_805D084(struct MapObject *, struct Sprite *);
+u8 sub_805D0F0(struct MapObject *, struct Sprite *);
+u8 sub_805D104(struct MapObject *, struct Sprite *);
+u8 sub_805D130(struct MapObject *, struct Sprite *);
+u8 sub_805D16C(struct MapObject *, struct Sprite *);
+u8 sub_805D18C(struct MapObject *, struct Sprite *);
+u8 sub_805D1D8(struct MapObject *, struct Sprite *);
+u8 sub_805D208(struct MapObject *, struct Sprite *);
+u8 sub_805D274(struct MapObject *, struct Sprite *);
+u8 sub_805D2A0(struct MapObject *, struct Sprite *);
+u8 sub_805D2C0(struct MapObject *, struct Sprite *);
+u8 do_berry_tree_growth_sparkle_1(struct MapObject *, struct Sprite *);
+u8 sub_805D3EC(struct MapObject *, struct Sprite *);
+u8 do_berry_tree_growth_sparkle_2(struct MapObject *, struct Sprite *);
+u8 sub_805D458(struct MapObject *, struct Sprite *);
+u8 sub_805D4A8(struct MapObject *, struct Sprite *);
+u8 sub_805D538(struct MapObject *, struct Sprite *);
+u8 sub_805D54C(struct MapObject *, struct Sprite *);
+u8 sub_805D578(struct MapObject *, struct Sprite *);
+u8 sub_805D5BC(struct MapObject *, struct Sprite *);
+u8 sub_805D5EC(struct MapObject *, struct Sprite *);
+u8 sub_805D678(struct MapObject *, struct Sprite *);
+u8 sub_805D68C(struct MapObject *, struct Sprite *);
+u8 sub_805D6B8(struct MapObject *, struct Sprite *);
+u8 sub_805D6FC(struct MapObject *, struct Sprite *);
+u8 sub_805D72C(struct MapObject *, struct Sprite *);
+u8 sub_805D7B8(struct MapObject *, struct Sprite *);
+u8 sub_805D7CC(struct MapObject *, struct Sprite *);
+u8 sub_805D7F8(struct MapObject *, struct Sprite *);
+u8 sub_805D83C(struct MapObject *, struct Sprite *);
+u8 sub_805D86C(struct MapObject *, struct Sprite *);
+u8 sub_805D8F8(struct MapObject *, struct Sprite *);
+u8 sub_805D90C(struct MapObject *, struct Sprite *);
+u8 sub_805D938(struct MapObject *, struct Sprite *);
+u8 sub_805D97C(struct MapObject *, struct Sprite *);
+u8 sub_805D9AC(struct MapObject *, struct Sprite *);
+u8 sub_805DA38(struct MapObject *, struct Sprite *);
+u8 sub_805DA4C(struct MapObject *, struct Sprite *);
+u8 sub_805DA78(struct MapObject *, struct Sprite *);
+u8 sub_805DABC(struct MapObject *, struct Sprite *);
+u8 sub_805DAEC(struct MapObject *, struct Sprite *);
+u8 sub_805DB78(struct MapObject *, struct Sprite *);
+u8 sub_805DB8C(struct MapObject *, struct Sprite *);
+u8 sub_805DBB8(struct MapObject *, struct Sprite *);
+u8 sub_805DBFC(struct MapObject *, struct Sprite *);
+u8 sub_805DC2C(struct MapObject *, struct Sprite *);
+u8 sub_805DCB8(struct MapObject *, struct Sprite *);
+u8 sub_805DCCC(struct MapObject *, struct Sprite *);
+u8 sub_805DCF8(struct MapObject *, struct Sprite *);
+u8 sub_805DD3C(struct MapObject *, struct Sprite *);
+u8 sub_805DD6C(struct MapObject *, struct Sprite *);
+u8 sub_805DDF8(struct MapObject *, struct Sprite *);
+u8 sub_805DE0C(struct MapObject *, struct Sprite *);
+u8 sub_805DE38(struct MapObject *, struct Sprite *);
+u8 sub_805DE7C(struct MapObject *, struct Sprite *);
+u8 sub_805DEAC(struct MapObject *, struct Sprite *);
+u8 sub_805DF38(struct MapObject *, struct Sprite *);
+u8 sub_805DF4C(struct MapObject *, struct Sprite *);
+u8 sub_805DF78(struct MapObject *, struct Sprite *);
+u8 sub_805DFBC(struct MapObject *, struct Sprite *);
+u8 sub_805DFEC(struct MapObject *, struct Sprite *);
+u8 sub_805E078(struct MapObject *, struct Sprite *);
+u8 sub_805E08C(struct MapObject *, struct Sprite *);
+u8 sub_805E0B8(struct MapObject *, struct Sprite *);
+u8 sub_805E0FC(struct MapObject *, struct Sprite *);
+u8 sub_805E12C(struct MapObject *, struct Sprite *);
+u8 sub_805E1B8(struct MapObject *, struct Sprite *);
+u8 sub_805E1E4(struct MapObject *, struct Sprite *);
+u8 sub_805E208(struct MapObject *, struct Sprite *);
+u8 sub_805E234(struct MapObject *, struct Sprite *);
+u8 sub_805E2BC(struct MapObject *, struct Sprite *);
+u8 sub_805E2E8(struct MapObject *, struct Sprite *);
+u8 sub_805E30C(struct MapObject *, struct Sprite *);
+u8 sub_805E338(struct MapObject *, struct Sprite *);
+u8 sub_805E3C0(struct MapObject *, struct Sprite *);
+u8 sub_805E3D4(struct MapObject *, struct Sprite *);
+u8 sub_805E40C(struct MapObject *, struct Sprite *);
+u8 sub_805E4C4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805E620(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805E6AC(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805E738(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805E7C4(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805E850(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805E8DC(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805E968(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805E9F4(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805EA80(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805EB0C(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805EB98(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805EC24(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805ECB0(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805ED3C(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805EDC8(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805EE54(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805EEE0(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805EF6C(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805EFF8(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805F084(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805F110(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805F19C(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805F228(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 sub_805E4EC(struct MapObject *, struct Sprite *);
+u8 sub_805F2B4(struct MapObject *, struct Sprite *);
+u8 sub_805E5B4(struct MapObject *, struct Sprite *);
+u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *, struct Sprite *);
+u8 sub_805F364(struct MapObject *, struct Sprite *);
+u8 sub_805F3C4(struct MapObject *, struct Sprite *);
+u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *, struct Sprite *);
+u8 mss_08062EA4(struct MapObject *, struct Sprite *);
+u8 sub_805F3C4(struct MapObject *, struct Sprite *);
+u8 sub_805FAF8(struct MapObject *, struct Sprite *);
+u8 sub_805FB64(struct MapObject *, struct Sprite *);
+u8 sub_805FB04(struct MapObject *, struct Sprite *);
+u8 sub_805FBD4(struct MapObject *, struct Sprite *);
+u8 sub_805FB04(struct MapObject *, struct Sprite *);
+u8 sub_805FC44(struct MapObject *, struct Sprite *);
+u8 sub_805FB04(struct MapObject *, struct Sprite *);
+u8 sub_805FCB4(struct MapObject *, struct Sprite *);
+u8 sub_805FCE8(struct MapObject *, struct Sprite *);
+u8 sub_805FD08(struct MapObject *, struct Sprite *);
+
int state_to_direction(u8, u8, u8);
#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index ab3bbceb3..211a249db 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -341,6 +341,8 @@ const s16 gUnknown_0837520C[] = {0x20, 0x40, 0x60, 0x80};
const s16 gUnknown_08375204[] = {0x20, 0x40, 0x80, 0xc0};
const s16 gUnknown_0837521C[] = {0x20, 0x30, 0x40, 0x50};
+#include "data/field_map_obj/callback_subroutine_pointers.h"
+
// text
extern void strange_npc_table_clear(void);
@@ -2333,7 +2335,6 @@ u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite)
}
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)
{
@@ -3481,8 +3482,6 @@ u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *mapObject, struct Sprite
return 1;
}
-extern u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-
u8 sub_805F364(struct MapObject *mapObject, struct Sprite *sprite)
{
if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.running1 == 2)
@@ -3587,7 +3586,6 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite)
}
u8 sub_805FAD8(struct MapObject *mapObject, struct Sprite *sprite);
-extern u8 (*const gUnknown_083755CC[])(struct MapObject *, struct Sprite *);
void FieldObjectCB_Hidden1(struct Sprite *sprite)
{
@@ -4701,8 +4699,8 @@ extern u8 (*const gUnknown_083759C0[5])(u8);
void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3)
{
- u8 (*functions[5])(u8);
- memcpy(functions, gUnknown_083759C0, sizeof(gUnknown_083759C0));
+ u8 (*const functions[5])(u8);
+ memcpy((void *)functions, gUnknown_083759C0, sizeof(gUnknown_083759C0));
sub_8060D20(mapObject, sprite, direction, a3);
sub_805FE28(mapObject, sprite, functions[a3](mapObject->mapobj_unk_18));
}