summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--[-rwxr-xr-x]src/daycare.c0
-rw-r--r--[-rwxr-xr-x]src/field_effect.c2
-rwxr-xr-x[-rw-r--r--]src/field_map_obj.c563
-rwxr-xr-x[-rw-r--r--]src/field_map_obj_helpers.c0
4 files changed, 433 insertions, 132 deletions
diff --git a/src/daycare.c b/src/daycare.c
index cded18207..cded18207 100755..100644
--- a/src/daycare.c
+++ b/src/daycare.c
diff --git a/src/field_effect.c b/src/field_effect.c
index 9591bb6a0..b3aff6af9 100755..100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -28,8 +28,6 @@
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
-#define obj_frame_tiles(ptr) {.data = (u8 *)ptr, .size = sizeof ptr}
-
const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal");
const u32 gSpriteImage_839E434[] = INCBIN_U32("graphics/misc/pokeball_glow.4bpp");
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index ade72923d..436c3beb0 100644..100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -15,33 +15,438 @@
#include "sprite.h"
#include "metatile_behavior.h"
#include "map_constants.h"
+#include "map_object_constants.h"
#include "trainer_see.h"
-extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36];
+// rodata
-struct PairedPalettes
-{
- u16 tag;
- u16 *data;
+const u8 gUnknown_0830FD14[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
+
+void ObjectCB_CameraObject(struct Sprite *sprite);
+const struct SpriteTemplate gSpriteTemplate_830FD24 = {0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, ObjectCB_CameraObject};
+
+void CameraObject_0(struct Sprite *);
+void CameraObject_1(struct Sprite *);
+void CameraObject_2(struct Sprite *);
+void (*const gCameraObjectFuncs[])(struct Sprite *) = {
+ CameraObject_0,
+ CameraObject_1,
+ CameraObject_2,
+};
+
+#include "data/field_map_obj/map_object_graphics.h"
+#include "data/field_map_obj/field_effect_object_graphics.h"
+
+void (*const gUnknown_0836DA88[])(struct Sprite *) =
+{
+ sub_805C884,
+ sub_805CDE8,
+ sub_805C8AC,
+ sub_805CF28,
+ sub_805CF28,
+ sub_805D0AC,
+ sub_805D0AC,
+ sub_805D230,
+ sub_805D230,
+ sub_805D230,
+ sub_805D230,
+ sub_80587B4,
+ FieldObjectCB_BerryTree,
+ sub_805D4F4,
+ sub_805D634,
+ sub_805D774,
+ sub_805D8B4,
+ sub_805D9F4,
+ sub_805DB34,
+ sub_805DC74,
+ sub_805DDB4,
+ sub_805DEF4,
+ sub_805E034,
+ sub_805E174,
+ sub_805E278,
+ sub_805E37C,
+ sub_805E37C,
+ sub_805E37C,
+ sub_805E37C,
+ sub_805E5DC,
+ sub_805E668,
+ sub_805E6F4,
+ sub_805E780,
+ sub_805E80C,
+ sub_805E898,
+ sub_805E924,
+ sub_805E9B0,
+ sub_805EA3C,
+ sub_805EAC8,
+ sub_805EB54,
+ sub_805EBE0,
+ sub_805EC6C,
+ sub_805ECF8,
+ sub_805ED84,
+ sub_805EE10,
+ sub_805EE9C,
+ sub_805EF28,
+ sub_805EFB4,
+ sub_805F040,
+ sub_805F0CC,
+ sub_805F158,
+ sub_805F1E4,
+ sub_805F270,
+ sub_805F2FC,
+ sub_805F2FC,
+ sub_805F2FC,
+ sub_805F2FC,
+ FieldObjectCB_TreeDisguise,
+ FieldObjectCB_MountainDisguise,
+ sub_805F8E0,
+ sub_805F8E0,
+ sub_805F8E0,
+ sub_805F8E0,
+ FieldObjectCB_Hidden1,
+ sub_805FB20,
+ sub_805FB20,
+ sub_805FB20,
+ sub_805FB20,
+ sub_805FB90,
+ sub_805FB90,
+ sub_805FB90,
+ sub_805FB90,
+ sub_805FC00,
+ sub_805FC00,
+ sub_805FC00,
+ sub_805FC00,
+ sub_805FC70
+};
+
+const u8 gUnknown_0836DBBC[] = {0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+const u8 gUnknown_0836DC09[] = {DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_NORTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH};
+
+#include "data/field_map_obj/map_object_graphics_info_pointers.h"
+#include "data/field_map_obj/field_effect_object_template_pointers.h"
+#include "data/field_map_obj/map_object_pic_tables.h"
+#include "data/field_map_obj/map_object_anims.h"
+#include "data/field_map_obj/base_oam.h"
+#include "data/field_map_obj/map_object_subsprites.h"
+#include "data/field_map_obj/map_object_graphics_info.h"
+
+const struct SpritePalette gUnknown_0837377C[] = {
+ {gMapObjectPalette0, 0x1103},
+ {gMapObjectPalette1, 0x1104},
+ {gMapObjectPalette2, 0x1105},
+ {gMapObjectPalette3, 0x1106},
+ {gMapObjectPalette4, 0x1107},
+ {gMapObjectPalette5, 0x1108},
+ {gMapObjectPalette6, 0x1109},
+ {gMapObjectPalette7, 0x110A},
+ {gMapObjectPalette8, 0x1100},
+ {gMapObjectPalette9, 0x1101},
+ {gMapObjectPalette10, 0x1102},
+ {gMapObjectPalette11, 0x1115},
+ {gMapObjectPalette12, 0x110B},
+ {gMapObjectPalette13, 0x110C},
+ {gMapObjectPalette14, 0x110D},
+ {gMapObjectPalette15, 0x110E},
+ {gMapObjectPalette16, 0x110F},
+ {gMapObjectPalette17, 0x1110},
+ {gMapObjectPalette18, 0x1111},
+ {gMapObjectPalette19, 0x1112},
+ {gMapObjectPalette20, 0x1113},
+ {gMapObjectPalette21, 0x1114},
+ {gMapObjectPalette22, 0x1116},
+ {gMapObjectPalette23, 0x1117},
+ {gMapObjectPalette24, 0x1118},
+ {gMapObjectPalette25, 0x1119},
+ {gMapObjectPalette26, 0x111A},
+ {NULL, 0x0000}
+};
+
+const u16 Palettes_837385C[] = {
+ 0x1101,
+ 0x1101,
+ 0x1101,
+ 0x1101
+};
+
+const u16 Palettes_8373864[] = {
+ 0x1111,
+ 0x1111,
+ 0x1111,
+ 0x1111
+};
+
+const u16 Palettes_837386C[] = {
+ 0x1115,
+ 0x1115,
+ 0x1115,
+ 0x1115
+};
+
+const struct PairedPalettes gUnknown_08373874[] = {
+ {0x1100, Palettes_837385C},
+ {0x1110, Palettes_837385C},
+ {0x1115, Palettes_837386C},
+ {0x11FF, NULL}
+};
+
+const u16 Palettes_8373894[] = {
+ 0x110C,
+ 0x110C,
+ 0x110C,
+ 0x110C
+};
+
+const u16 Palettes_837389C[] = {
+ 0x110D,
+ 0x110D,
+ 0x110D,
+ 0x110D
+};
+
+const u16 Palettes_83738A4[] = {
+ 0x110E,
+ 0x110E,
+ 0x110E,
+ 0x110E
+};
+
+const u16 Palettes_83738AC[] = {
+ 0x1112,
+ 0x1112,
+ 0x1112,
+ 0x1112
+};
+
+const u16 Palettes_83738B4[] = {
+ 0x1113,
+ 0x1113,
+ 0x1113,
+ 0x1113
+};
+
+const u16 Palettes_83738BC[] = {
+ 0x1114,
+ 0x1114,
+ 0x1114,
+ 0x1114
+};
+
+const u16 Palettes_83738C4[] = {
+ 0x111A,
+ 0x111A,
+ 0x111A,
+ 0x111A
+};
+
+const u16 Palettes_83738CC[] = {
+ 0x1117,
+ 0x1117,
+ 0x1117,
+ 0x1117
+};
+
+const u16 Palettes_83738D4[] = {
+ 0x1119,
+ 0x1119,
+ 0x1119,
+ 0x1119
+};
+
+const u16 Palettes_83738DC[] = {
+ 0x1109,
+ 0x1109,
+ 0x1109,
+ 0x1109
+};
+
+const struct PairedPalettes gUnknown_083738E4[] = {
+ {0x1100, Palettes_837385C},
+ {0x1110, Palettes_837385C},
+ {0x110B, Palettes_8373894},
+ {0x110D, Palettes_837389C},
+ {0x110E, Palettes_83738A4},
+ {0x1112, Palettes_83738AC},
+ {0x1113, Palettes_83738B4},
+ {0x1114, Palettes_83738BC},
+ {0x1116, Palettes_83738CC},
+ {0x1118, Palettes_83738D4},
+ {0x1105, Palettes_83738DC},
+ {0x111A, Palettes_83738C4},
+ {0x11FF, NULL}
+};
+
+const u16 Unknown_837394C[] = {
+ 0x1100,
+ 0x1101,
+ 0x1103,
+ 0x1104,
+ 0x1105,
+ 0x1106,
+ 0x1107,
+ 0x1108,
+ 0x1109,
+ 0x110A
+};
+
+const u16 Unknown_8373960[] = {
+ 0x1100,
+ 0x1101,
+ 0x1103,
+ 0x1104,
+ 0x1105,
+ 0x1106,
+ 0x1107,
+ 0x1108,
+ 0x1109,
+ 0x110A
+};
+
+const u16 Unknown_8373974[] = {
+ 0x1100,
+ 0x1101,
+ 0x1103,
+ 0x1104,
+ 0x1105,
+ 0x1106,
+ 0x1107,
+ 0x1108,
+ 0x1109,
+ 0x110A
+};
+
+const u16 Unknown_8373988[] = {
+ 0x1100,
+ 0x1101,
+ 0x1103,
+ 0x1104,
+ 0x1105,
+ 0x1106,
+ 0x1107,
+ 0x1108,
+ 0x1109,
+ 0x110A
+};
+
+const u16 *const gUnknown_0837399C[] = {
+ Unknown_837394C,
+ Unknown_8373960,
+ Unknown_8373974,
+ Unknown_8373988
+};
+
+#include "data/field_map_obj/berry_tree_graphics_tables.h"
+#include "data/field_map_obj/field_effect_objects.h"
+
+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"
+
+const u8 gUnknown_083755F4[] = {0x00, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0x01};
+const u8 gUnknown_083755FD[] = {0x04, 0x04, 0x05, 0x06, 0x07, 0x04, 0x04, 0x05, 0x05};
+const u8 gUnknown_08375606[] = {0x08, 0x08, 0x09, 0x0A, 0x0B, 0x08, 0x08, 0x09, 0x09};
+const u8 gUnknown_0837560F[] = {0x0C, 0x0C, 0x0D, 0x0E, 0x0F, 0x0C, 0x0C, 0x0D, 0x0D};
+const u8 gUnknown_08375618[] = {0x10, 0x10, 0x11, 0x12, 0x13, 0x10, 0x10, 0x11, 0x11};
+const u8 gUnknown_08375621[] = {0x14, 0x14, 0x15, 0x16, 0x17, 0x14, 0x14, 0x15, 0x15};
+const u8 gUnknown_0837562A[] = {0x14, 0x14, 0x15, 0x16, 0x17, 0x14, 0x14, 0x15, 0x15};
+const u8 gUnknown_08375633[] = {0x18, 0x18, 0x19, 0x1A, 0x1B, 0x18, 0x18, 0x19, 0x19};
+const u8 gUnknown_0837563C[] = {0x1C, 0x1C, 0x1D, 0x1E, 0x1F, 0x1C, 0x1C, 0x1D, 0x1D};
+const u8 gUnknown_08375645[] = {0x20, 0x20, 0x21, 0x22, 0x23, 0x20, 0x20, 0x21, 0x21};
+const u8 gUnknown_0837564E[] = {0x24, 0x24, 0x25, 0x26, 0x27, 0x24, 0x24, 0x25, 0x25};
+const u8 gUnknown_08375657[] = {0x00, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0x01};
+const u8 gUnknown_08375660[] = {0x04, 0x04, 0x05, 0x06, 0x07, 0x04, 0x04, 0x05, 0x05};
+const u8 gUnknown_08375669[] = {0x08, 0x08, 0x09, 0x0A, 0x0B, 0x08, 0x08, 0x09, 0x09};
+const u8 gUnknown_08375672[] = {0x14, 0x14, 0x15, 0x16, 0x17, 0x14, 0x14, 0x15, 0x15};
+const u8 gUnknown_0837567B[] = {0x08, 0x08, 0x07, 0x09, 0x0A, 0x08, 0x08, 0x07, 0x07};
+
+bool8 (*const gUnknown_08375684[])(u8) = {
+ MetatileBehavior_IsSouthBlocked,
+ MetatileBehavior_IsNorthBlocked,
+ MetatileBehavior_IsWestBlocked,
+ MetatileBehavior_IsEastBlocked
+};
+
+bool8 (*const gUnknown_08375694[])(u8) = {
+ MetatileBehavior_IsNorthBlocked,
+ MetatileBehavior_IsSouthBlocked,
+ MetatileBehavior_IsEastBlocked,
+ MetatileBehavior_IsWestBlocked
+};
+
+const struct Coords16 gDirectionToVector[] = {
+ { 0, 0},
+ { 0, 1},
+ { 0, -1},
+ {-1, 0},
+ { 1, 0},
+ {-1, 1},
+ { 1, 1},
+ {-1, -1},
+ { 1, -1}
+};
+
+const u8 gUnknown_083756C8[] = {0x00, 0x00, 0x01, 0x02, 0x03};
+const u8 gUnknown_083756CD[] = {0x04, 0x04, 0x05, 0x06, 0x07};
+const u8 gUnknown_083756D2[] = {0x08, 0x08, 0x09, 0x0A, 0x0B};
+const u8 gUnknown_083756D7[] = {0x15, 0x15, 0x16, 0x17, 0x18};
+const u8 gUnknown_083756DC[] = {0x29, 0x29, 0x2A, 0x2B, 0x2C};
+const u8 gUnknown_083756E1[] = {0x2D, 0x2D, 0x2E, 0x2F, 0x30};
+const u8 gUnknown_083756E6[] = {0x31, 0x31, 0x32, 0x33, 0x34};
+const u8 gUnknown_083756EB[] = {0x35, 0x35, 0x36, 0x37, 0x38};
+const u8 gUnknown_083756F0[] = {0x0C, 0x0C, 0x0D, 0x0E, 0x0F};
+const u8 gUnknown_083756F5[] = {0x46, 0x46, 0x47, 0x48, 0x49};
+const u8 gUnknown_083756FA[] = {0x4B, 0x4B, 0x4A, 0x4D, 0x4C};
+const u8 gUnknown_083756FF[] = {0x42, 0x42, 0x43, 0x44, 0x45};
+const u8 gUnknown_08375704[] = {0x3A, 0x3A, 0x3B, 0x3C, 0x3D};
+const u8 gUnknown_08375709[] = {0x19, 0x19, 0x1A, 0x1B, 0x1C};
+const u8 gUnknown_0837570E[] = {0x1D, 0x1D, 0x1E, 0x1F, 0x20};
+const u8 gUnknown_08375713[] = {0x21, 0x21, 0x22, 0x23, 0x24};
+const u8 gUnknown_08375718[] = {0x25, 0x25, 0x26, 0x27, 0x28};
+const u8 gUnknown_0837571D[] = {0x62, 0x62, 0x63, 0x64, 0x65};
+const u8 gUnknown_08375722[] = {0x66, 0x66, 0x67, 0x68, 0x69};
+const u8 gUnknown_08375727[] = {0x6A, 0x6A, 0x6B, 0x6C, 0x6D};
+const u8 gUnknown_0837572C[] = {0x6E, 0x6E, 0x6F, 0x70, 0x71};
+const u8 gUnknown_08375731[] = {0x72, 0x72, 0x73, 0x74, 0x75};
+const u8 gUnknown_08375736[] = {0x76, 0x76, 0x77, 0x78, 0x79};
+const u8 gUnknown_0837573B[] = {0x7A, 0x7A, 0x7B, 0x7C, 0x7D};
+const u8 gUnknown_08375740[] = {0x7E, 0x7E, 0x7F, 0x80, 0x81};
+const u8 gUnknown_08375745[] = {0x82, 0x82, 0x83, 0x84, 0x85};
+const u8 gUnknown_0837574A[] = {0x86, 0x86, 0x87, 0x88, 0x89};
+
+const u8 gUnknown_0837574F[] = {2, 1, 4, 3, 8, 7, 6, 5};
+
+const u8 gUnknown_08375757[][4] = {
+ {2, 1, 4, 3},
+ {1, 2, 3, 4},
+ {3, 4, 2, 1},
+ {4, 3, 1, 2}
};
+const u8 gUnknown_08375767[][4] = {
+ {2, 1, 4, 3},
+ {1, 2, 3, 4},
+ {4, 3, 1, 2},
+ {3, 4, 2, 1}
+};
+
+#include "data/field_map_obj/anim_func_ptrs.h"
+
+// text
+
+extern void strange_npc_table_clear(void);
+extern void ClearPlayerAvatarInfo(void);
+extern void npc_load_two_palettes__no_record(u16, u8);
+extern void npc_load_two_palettes__and_record(u16, u8);
+extern void sub_8060388(s16, s16, s16 *, s16 *);
+void sub_80634D0(struct MapObject *, struct Sprite *);
+extern void pal_patch_for_npc(u16, u16);
+extern void CameraObjectReset1(void);
+
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
extern u8 gReservedSpritePaletteCount;
extern struct Camera gUnknown_0202E844;
extern u8 gUnknown_030005A4;
extern u16 gUnknown_030005A6;
-extern const u8 gUnknown_0836DBBC[];
-extern const u8 gUnknown_0836DC09[];
-extern void (*const gUnknown_0836DA88[])(struct Sprite *);
-extern const u8 *const gBerryTreeGraphicsIdTablePointers[];
-extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[];
-extern const u8 *const gBerryTreePaletteSlotTablePointers[];
-extern const struct MapObjectGraphicsInfo *const gMapObjectGraphicsInfoPointers[];
-extern const struct SpritePalette gUnknown_0837377C[];
-extern const struct PairedPalettes gUnknown_08373874[];
-extern const struct PairedPalettes gUnknown_083738E4[];
-extern const struct SpriteTemplate gSpriteTemplate_830FD24;
-extern const u16 *const gUnknown_0837399C[];
void npc_clear_ids_and_state(struct MapObject *mapObj)
{
@@ -491,7 +896,7 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *
u8 SpawnFieldObject(struct MapObjectTemplate *mapObjTemplate, u8 b, u8 c, s16 d, s16 e)
{
struct SpriteTemplate spriteTemplate;
- struct SubspriteTable *subspriteTables = NULL;
+ const struct SubspriteTable *subspriteTables = NULL;
struct SpriteFrameImage spriteFrameImage;
const struct MapObjectGraphicsInfo *gfxInfo;
u8 mapObjectId;
@@ -551,7 +956,7 @@ u8 show_sprite(u8 a, u8 b, u8 c)
return SpawnFieldObject(r5, b, c, x, y);
}
-void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables)
+void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
{
const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(graphicsId);
@@ -565,12 +970,12 @@ void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callba
*subspriteTables = gfxInfo->subspriteTables;
}
-void MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables)
+void MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
{
MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, gUnknown_0836DA88[callbackIndex], sprTemplate, subspriteTables);
}
-void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables)
+void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
{
MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(mapObjTemplate->graphicsId, mapObjTemplate->movementType, sprTemplate, subspriteTables);
}
@@ -578,7 +983,7 @@ void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjT
u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 c, s16 d, u8 subpriority)
{
struct SpriteTemplate spriteTemplate;
- struct SubspriteTable *subspriteTables;
+ const struct SubspriteTable *subspriteTables;
u8 spriteId;
MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, callback, &spriteTemplate, &subspriteTables);
@@ -601,7 +1006,7 @@ u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f)
{
const struct MapObjectGraphicsInfo *gfxInfo;
struct SpriteTemplate spriteTemplate;
- struct SubspriteTable *subspriteTables;
+ const struct SubspriteTable *subspriteTables;
u8 spriteId;
gfxInfo = GetFieldObjectGraphicsInfo(a);
@@ -729,7 +1134,7 @@ void sub_805B75C(u8 a, s16 b, s16 c)
{
struct SpriteTemplate sp0;
struct SpriteFrameImage sp18;
- struct SubspriteTable *subspriteTables;
+ const struct SubspriteTable *subspriteTables;
const struct MapObjectGraphicsInfo *gfxInfo;
struct MapObject *mapObject;
u8 spriteId;
@@ -1027,8 +1432,6 @@ u8 FindFieldObjectPaletteIndexByTag(u16 tag)
return 0xFF;
}
-const u8 gUnknown_0830FD14[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
-
void npc_load_two_palettes__no_record(u16 a, u8 b)
{
u8 i;
@@ -1177,18 +1580,6 @@ void UpdateFieldObjectsForCameraUpdate(s16 x, s16 y)
RemoveFieldObjectsOutsideView();
}
-void ObjectCB_CameraObject(struct Sprite *sprite);
-const struct SpriteTemplate gSpriteTemplate_830FD24 =
-{
- .tileTag = 0,
- .paletteTag = 0xFFFF,
- .oam = &gDummyOamData,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = ObjectCB_CameraObject,
-};
-
u8 AddCameraObject(u8 a)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_830FD24, 0, 0, 4);
@@ -1198,19 +1589,10 @@ u8 AddCameraObject(u8 a)
return spriteId;
}
-void CameraObject_0(struct Sprite *);
-void CameraObject_1(struct Sprite *);
-void CameraObject_2(struct Sprite *);
-
void ObjectCB_CameraObject(struct Sprite *sprite)
{
- void (*const cameraObjectFuncs[])(struct Sprite *) =
- {
- CameraObject_0,
- CameraObject_1,
- CameraObject_2,
- };
-
+ void (*cameraObjectFuncs[3])(struct Sprite *);
+ memcpy(cameraObjectFuncs, gCameraObjectFuncs, sizeof gCameraObjectFuncs);
cameraObjectFuncs[sprite->data1](sprite);
}
@@ -1508,8 +1890,6 @@ u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite)
}
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)
@@ -2026,7 +2406,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)
{
@@ -3174,8 +3553,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)
@@ -3280,7 +3657,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)
{
@@ -3382,22 +3758,6 @@ void npc_reset(struct MapObject *mapObject, struct Sprite *sprite)
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];
@@ -3888,8 +4248,6 @@ void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback
}
-extern const u8 gUnknown_083756C8[5];
-
u8 GetFaceDirectionAnimId(u8 index)
{
u8 directions[5];
@@ -3901,8 +4259,6 @@ u8 GetFaceDirectionAnimId(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756CD[5];
-
u8 GetSimpleGoAnimId(u8 index)
{
u8 directions[5];
@@ -3914,8 +4270,6 @@ u8 GetSimpleGoAnimId(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756D2[5];
-
u8 GetGoSpeed0AnimId(u8 index)
{
u8 directions[5];
@@ -3927,8 +4281,6 @@ u8 GetGoSpeed0AnimId(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756D7[5];
-
u8 sub_8060744(u8 index)
{
u8 directions[5];
@@ -3940,8 +4292,6 @@ u8 sub_8060744(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756DC[5];
-
u8 d2s_08064034(u8 index)
{
u8 directions[5];
@@ -3953,8 +4303,6 @@ u8 d2s_08064034(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756E1[5];
-
u8 sub_806079C(u8 index)
{
u8 directions[5];
@@ -3966,8 +4314,6 @@ u8 sub_806079C(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756E6[5];
-
u8 sub_80607C8(u8 index)
{
u8 directions[5];
@@ -3979,8 +4325,6 @@ u8 sub_80607C8(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756EB[5];
-
u8 sub_80607F4(u8 index)
{
u8 directions[5];
@@ -3992,8 +4336,6 @@ u8 sub_80607F4(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756F0[5];
-
u8 GetJumpLedgeAnimId(u8 index)
{
u8 directions[5];
@@ -4005,8 +4347,6 @@ u8 GetJumpLedgeAnimId(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756F5[5];
-
u8 sub_806084C(u8 index)
{
u8 directions[5];
@@ -4018,8 +4358,6 @@ u8 sub_806084C(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756FA[5];
-
u8 sub_8060878(u8 index)
{
u8 directions[5];
@@ -4031,8 +4369,6 @@ u8 sub_8060878(u8 index)
return directions[index];
}
-extern const u8 gUnknown_083756FF[5];
-
u8 sub_80608A4(u8 index)
{
u8 directions[5];
@@ -4044,8 +4380,6 @@ u8 sub_80608A4(u8 index)
return directions[index];
}
-extern const u8 gUnknown_08375704[5];
-
u8 sub_80608D0(u8 index)
{
u8 directions[5];
@@ -4057,8 +4391,6 @@ u8 sub_80608D0(u8 index)
return directions[index];
}
-extern const u8 gUnknown_08375709[5];
-
u8 GetStepInPlaceDelay32AnimId(u8 index)
{
u8 directions[5];
@@ -4070,8 +4402,6 @@ u8 GetStepInPlaceDelay32AnimId(u8 index)
return directions[index];
}
-extern const u8 gUnknown_0837570E[5];
-
u8 GetStepInPlaceDelay16AnimId(u8 index)
{
u8 directions[5];
@@ -4083,8 +4413,6 @@ u8 GetStepInPlaceDelay16AnimId(u8 index)
return directions[index];
}
-extern const u8 gUnknown_08375713[5];
-
u8 GetStepInPlaceDelay8AnimId(u8 index)
{
u8 directions[5];
@@ -4096,8 +4424,6 @@ u8 GetStepInPlaceDelay8AnimId(u8 index)
return directions[index];
}
-extern const u8 gUnknown_08375718[5];
-
u8 GetStepInPlaceDelay4AnimId(u8 index)
{
u8 directions[5];
@@ -4114,8 +4440,6 @@ u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction)
return FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(GetOppositeDirection(direction)));
}
-extern const u8 gUnknown_0837571D[5];
-
u8 sub_80609D8(u8 index)
{
u8 directions[5];
@@ -4127,8 +4451,6 @@ u8 sub_80609D8(u8 index)
return directions[index];
}
-extern const u8 gUnknown_08375722[5];
-
u8 sub_8060A04(u8 index)
{
u8 directions[5];
@@ -4140,8 +4462,6 @@ u8 sub_8060A04(u8 index)
return directions[index];
}
-extern const u8 gUnknown_08375727[5];
-
u8 sub_8060A30(u8 index)
{
u8 directions[5];
@@ -4153,8 +4473,6 @@ u8 sub_8060A30(u8 index)
return directions[index];
}
-extern const u8 gUnknown_0837572C[5];
-
u8 sub_8060A5C(u8 index)
{
u8 directions[5];
@@ -4166,8 +4484,6 @@ u8 sub_8060A5C(u8 index)
return directions[index];
}
-extern const u8 gUnknown_08375731[5];
-
u8 sub_8060A88(u8 index)
{
u8 directions[5];
@@ -4179,8 +4495,6 @@ u8 sub_8060A88(u8 index)
return directions[index];
}
-extern const u8 gUnknown_08375736[5];
-
u8 sub_8060AB4(u8 index)
{
u8 directions[5];
@@ -4192,8 +4506,6 @@ u8 sub_8060AB4(u8 index)
return directions[index];
}
-extern const u8 gUnknown_0837573B[5];
-
u8 sub_8060AE0(u8 index)
{
u8 directions[5];
@@ -4205,8 +4517,6 @@ u8 sub_8060AE0(u8 index)
return directions[index];
}
-extern const u8 gUnknown_08375740[5];
-
u8 sub_8060B0C(u8 index)
{
u8 directions[5];
@@ -4218,8 +4528,6 @@ u8 sub_8060B0C(u8 index)
return directions[index];
}
-extern const u8 gUnknown_08375745[5];
-
u8 sub_8060B38(u8 index)
{
u8 directions[5];
@@ -4231,8 +4539,6 @@ u8 sub_8060B38(u8 index)
return directions[index];
}
-extern const u8 gUnknown_0837574A[5];
-
u8 sub_8060B64(u8 index)
{
u8 directions[5];
@@ -4392,8 +4698,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));
}
@@ -4595,9 +4901,6 @@ bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
-extern const s16 gUnknown_08375A34[3];
-extern const s16 gUnknown_08375A3A[3];
-
void sub_806113C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a4, u8 a5)
{
s16 vSPp4[3];
diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c
index 17584c96a..17584c96a 100644..100755
--- a/src/field_map_obj_helpers.c
+++ b/src/field_map_obj_helpers.c