summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_transition.c16
-rw-r--r--src/braille_puzzles.c2
-rw-r--r--src/field_effect.c84
-rw-r--r--src/field_effect_helpers.c804
-rw-r--r--src/field_ground_effect.c128
-rw-r--r--src/field_map_obj.c32
-rw-r--r--src/field_map_obj_helpers.c10
-rw-r--r--src/field_player_avatar.c14
-rw-r--r--src/field_tasks.c6
-rw-r--r--src/fieldmap.c12
-rw-r--r--src/fldeff_cut.c4
-rw-r--r--src/fldeff_flash.c2
-rw-r--r--src/fldeff_strength.c6
-rw-r--r--src/fldeff_sweetscent.c2
-rw-r--r--src/fldeff_teleport.c2
-rw-r--r--src/pokemon_menu.c14
-rw-r--r--src/rom6.c24
-rw-r--r--src/scrcmd.c2
-rw-r--r--src/trainer_see.c16
19 files changed, 992 insertions, 188 deletions
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 1cacb8857..fd6eab491 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -994,10 +994,10 @@ static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task)
rand = Random() & 1;
for (i = 0; i <= 4; i++, rand ^= 1)
{
- gUnknown_0202FF84[0] = arr0[rand]; // x
- gUnknown_0202FF84[1] = (i * 32) + 16; // y
- gUnknown_0202FF84[2] = rand;
- gUnknown_0202FF84[3] = arr1[i];
+ gFieldEffectSpawnParams[0] = arr0[rand]; // x
+ gFieldEffectSpawnParams[1] = (i * 32) + 16; // y
+ gFieldEffectSpawnParams[2] = rand;
+ gFieldEffectSpawnParams[3] = arr1[i];
FieldEffectStart(FLDEFF_POKEBALL);
}
@@ -1017,14 +1017,14 @@ static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task)
bool8 FldEff_Pokeball(void)
{
- u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0);
+ u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0);
gSprites[spriteID].oam.priority = 0;
gSprites[spriteID].oam.affineMode = 1;
- gSprites[spriteID].data0 = gUnknown_0202FF84[2];
- gSprites[spriteID].data1 = gUnknown_0202FF84[3];
+ gSprites[spriteID].data0 = gFieldEffectSpawnParams[2];
+ gSprites[spriteID].data1 = gFieldEffectSpawnParams[3];
gSprites[spriteID].data2 = -1;
InitSpriteAffineAnim(&gSprites[spriteID]);
- StartSpriteAffineAnim(&gSprites[spriteID], gUnknown_0202FF84[2]);
+ StartSpriteAffineAnim(&gSprites[spriteID], gFieldEffectSpawnParams[2]);
return FALSE;
}
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index b8d7cd386..f6bd9e056 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -105,7 +105,7 @@ bool8 ShouldDoBrailleFlyEffect(void)
void DoBrailleFlyEffect(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
FieldEffectStart(0x3C);
}
diff --git a/src/field_effect.c b/src/field_effect.c
index cffed2614..164c74657 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -28,7 +28,7 @@
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
-EWRAM_DATA u32 gUnknown_0202FF84[8] = {0};
+EWRAM_DATA u32 gFieldEffectSpawnParams[8] = {0};
const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal");
@@ -1203,10 +1203,10 @@ void task00_8084310(u8 taskId)
{
return;
}
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- if ((int)gUnknown_0202FF84[0] > 5)
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
+ if ((int)gFieldEffectSpawnParams[0] > 5)
{
- gUnknown_0202FF84[0] = 0;
+ gFieldEffectSpawnParams[0] = 0;
}
FieldEffectStart(FLDEFF_USE_FLY);
task->data[0]++;
@@ -1665,7 +1665,7 @@ bool8 FldEff_UseWaterfall(void)
{
u8 taskId;
taskId = CreateTask(sub_8086F64, 0xff);
- gTasks[taskId].data[1] = gUnknown_0202FF84[0];
+ gTasks[taskId].data[1] = gFieldEffectSpawnParams[0];
sub_8086F64(taskId);
return FALSE;
}
@@ -1689,7 +1689,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObjec
if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject))
{
FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
- gUnknown_0202FF84[0] = task->data[1];
+ gFieldEffectSpawnParams[0] = task->data[1];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
}
@@ -1738,8 +1738,8 @@ bool8 FldEff_UseDive(void)
{
u8 taskId;
taskId = CreateTask(Task_Dive, 0xff);
- gTasks[taskId].data[15] = gUnknown_0202FF84[0];
- gTasks[taskId].data[14] = gUnknown_0202FF84[1];
+ gTasks[taskId].data[15] = gFieldEffectSpawnParams[0];
+ gTasks[taskId].data[14] = gFieldEffectSpawnParams[1];
Task_Dive(taskId);
return FALSE;
}
@@ -1759,7 +1759,7 @@ bool8 sub_8087124(struct Task *task)
bool8 dive_2_unknown(struct Task *task)
{
ScriptContext2_Enable();
- gUnknown_0202FF84[0] = task->data[15];
+ gFieldEffectSpawnParams[0] = task->data[15];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
return FALSE;
@@ -1820,10 +1820,10 @@ bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite
{
sprite->pos2.y = 0;
task->data[3] = 1;
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectSpawnParams[0] = mapObject->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObject->coords2.y;
+ gFieldEffectSpawnParams[2] = sprite->subpriority - 1;
+ gFieldEffectSpawnParams[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP);
PlaySE(SE_W153);
task->data[0]++;
@@ -1924,10 +1924,10 @@ bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite
{
if (sub_807D770())
{
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectSpawnParams[0] = mapObject->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObject->coords2.y;
+ gFieldEffectSpawnParams[2] = sprite->subpriority - 1;
+ gFieldEffectSpawnParams[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
task->data[0]++;
}
@@ -1966,9 +1966,9 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]
u8 FldEff_LavaridgeGymWarp(void)
{
u8 spriteId;
- sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]);
- gSprites[spriteId].oam.priority = gUnknown_0202FF84[3];
+ sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ gSprites[spriteId].oam.priority = gFieldEffectSpawnParams[3];
gSprites[spriteId].coordOffsetEnabled = 1;
return spriteId;
}
@@ -2009,10 +2009,10 @@ bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite
{
if (task->data[1] > 3)
{
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectSpawnParams[0] = mapObject->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObject->coords2.y;
+ gFieldEffectSpawnParams[2] = sprite->subpriority - 1;
+ gFieldEffectSpawnParams[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
task->data[0]++;
} else
@@ -2064,9 +2064,9 @@ bool8 sub_80877D4(struct Task *task, struct MapObject *mapObject, struct Sprite
u8 FldEff_PopOutOfAsh(void)
{
u8 spriteId;
- sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]);
- gSprites[spriteId].oam.priority = gUnknown_0202FF84[3];
+ sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ gSprites[spriteId].oam.priority = gFieldEffectSpawnParams[3];
gSprites[spriteId].coordOffsetEnabled = 1;
return spriteId;
}
@@ -2392,19 +2392,19 @@ bool8 FldEff_FieldMoveShowMon(void)
{
taskId = CreateTask(sub_808847C, 0xff);
}
- gTasks[taskId].data[15] = sub_8088830(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]);
+ gTasks[taskId].data[15] = sub_8088830(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
return FALSE;
}
bool8 FldEff_FieldMoveShowMonInit(void)
{
struct Pokemon *pokemon;
- u32 flag = gUnknown_0202FF84[0] & 0x80000000;
- pokemon = &gPlayerParty[(u8)gUnknown_0202FF84[0]];
- gUnknown_0202FF84[0] = GetMonData(pokemon, MON_DATA_SPECIES);
- gUnknown_0202FF84[1] = GetMonData(pokemon, MON_DATA_OT_ID);
- gUnknown_0202FF84[2] = GetMonData(pokemon, MON_DATA_PERSONALITY);
- gUnknown_0202FF84[0] |= flag;
+ u32 flag = gFieldEffectSpawnParams[0] & 0x80000000;
+ pokemon = &gPlayerParty[(u8)gFieldEffectSpawnParams[0]];
+ gFieldEffectSpawnParams[0] = GetMonData(pokemon, MON_DATA_SPECIES);
+ gFieldEffectSpawnParams[1] = GetMonData(pokemon, MON_DATA_OT_ID);
+ gFieldEffectSpawnParams[2] = GetMonData(pokemon, MON_DATA_PERSONALITY);
+ gFieldEffectSpawnParams[0] |= flag;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON);
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
return FALSE;
@@ -2879,7 +2879,7 @@ u8 FldEff_UseSurf(void)
{
u8 taskId;
taskId = CreateTask(sub_8088954, 0xff);
- gTasks[taskId].data[15] = gUnknown_0202FF84[0];
+ gTasks[taskId].data[15] = gFieldEffectSpawnParams[0];
sav1_reset_battle_music_maybe();
sub_8053FB0(0x016d);
return FALSE;
@@ -2919,7 +2919,7 @@ void sub_8088A30(struct Task *task)
mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject))
{
- gUnknown_0202FF84[0] = task->data[15] | 0x80000000;
+ gFieldEffectSpawnParams[0] = task->data[15] | 0x80000000;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
}
@@ -2934,9 +2934,9 @@ void sub_8088A78(struct Task *task)
sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(3));
FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
FieldObjectSetSpecialAnim(mapObject, sub_80608D0(mapObject->placeholder18));
- gUnknown_0202FF84[0] = task->data[1];
- gUnknown_0202FF84[1] = task->data[2];
- gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId;
+ gFieldEffectSpawnParams[0] = task->data[1];
+ gFieldEffectSpawnParams[1] = task->data[2];
+ gFieldEffectSpawnParams[2] = gPlayerAvatar.mapObjectId;
mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_SURF_BLOB);
task->data[0]++;
}
@@ -2970,7 +2970,7 @@ u8 FldEff_NPCFlyOut(void)
sprite->oam.paletteNum = 0;
sprite->oam.priority = 1;
sprite->callback = sub_8088BC4;
- sprite->data1 = gUnknown_0202FF84[0];
+ sprite->data1 = gFieldEffectSpawnParams[0];
PlaySE(SE_W019);
return spriteId;
}
@@ -3009,7 +3009,7 @@ u8 FldEff_UseFly(void)
{
u8 taskId;
taskId = CreateTask(sub_8088C70, 0xfe);
- gTasks[taskId].data[1] = gUnknown_0202FF84[0];
+ gTasks[taskId].data[1] = gFieldEffectSpawnParams[0];
return 0;
}
@@ -3040,7 +3040,7 @@ void sub_8088CF8(struct Task *task)
if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
{
task->data[0]++;
- gUnknown_0202FF84[0] = task->data[1];
+ gFieldEffectSpawnParams[0] = task->data[1];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
}
}
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
new file mode 100644
index 000000000..3f821e0b7
--- /dev/null
+++ b/src/field_effect_helpers.c
@@ -0,0 +1,804 @@
+//
+// Created by scott on 9/9/2017.
+//
+
+
+// Includes
+#include "global.h"
+#include "sprite.h"
+#include "fieldmap.h"
+#include "metatile_behavior.h"
+#include "songs.h"
+#include "sound.h"
+#include "field_map_obj.h"
+#include "field_camera.h"
+#include "field_map_obj_helpers.h"
+#include "field_weather.h"
+#include "field_effect.h"
+#include "field_ground_effect.h"
+#include "field_effect_helpers.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+// Static ROM declarations
+static void sub_81269E0(struct Sprite *);
+static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite);
+static void npc_pal_op_A(struct MapObject *, u8);
+static void npc_pal_op_B(struct MapObject *, u8);
+static void sub_81275A0(struct Sprite *);
+static void sub_81275C4(struct Sprite *);
+/*static*/ void sub_8127DA0(struct Sprite *);
+/*static*/ void sub_8127DD0(struct Sprite *);
+/*static*/ void sub_8127E30(struct Sprite *);
+/*static*/ void sub_812882C(struct Sprite *, u8, u8);
+static void sub_81278D8(struct Sprite *);
+
+// .rodata
+
+const u8 UnusedEggString_8401E28[] = _("タマゴ");
+
+const u16 gUnknown_08401E2C[] = {
+ 0x0c,
+ 0x1c,
+ 0x2c
+};
+
+const u8 gUnknown_08401E32[] = {
+ 0,
+ 1,
+ 2,
+ 3
+};
+
+const u16 gUnknown_08401E36[] = {
+ 4,
+ 4,
+ 4,
+ 16
+};
+
+void (*const gUnknown_08401E40[])(struct Sprite *) = {
+ sub_81275A0,
+ sub_81275C4
+};
+
+void (*const gUnknown_08401E48[])(struct Sprite *) = {
+ sub_8127DA0,
+ sub_8127DD0,
+ sub_8127E30
+};
+
+const u8 gUnknown_08401E54[] = {
+ 0,
+ 0,
+ 1,
+ 2,
+ 3
+};
+
+const u16 gUnknown_08401E5A[] = {
+ 3,
+ 7
+};
+
+// .text
+
+void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag)
+{
+ struct Sprite *newSprite;
+
+ newSprite = &gSprites[obj_unfreeze(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
+ newSprite->callback = sub_81269E0;
+ newSprite->oam.priority = 3;
+ newSprite->oam.paletteNum = gUnknown_0830FD14[newSprite->oam.paletteNum];
+ newSprite->usingSheet = TRUE;
+ newSprite->anims = gDummySpriteAnimTable;
+ StartSpriteAnim(newSprite, 0);
+ newSprite->affineAnims = gDummySpriteAffineAnimTable;
+ newSprite->affineAnimBeginning = TRUE;
+ newSprite->subspriteMode = 0;
+ newSprite->data0 = sprite->data0;
+ newSprite->data1 = mapObject->localId;
+ newSprite->data7 = flag;
+ npc_pal_op(mapObject, newSprite);
+ if (!flag)
+ {
+ newSprite->oam.affineMode = 1;
+ }
+}
+
+s16 sub_81268D0(struct MapObject *mapObject)
+{
+ return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2;
+}
+
+static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 whichElement;
+ u16 unk_8041e2c[3];
+
+ memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C);
+ sprite->data2 = 0;
+ if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E))))
+ {
+ sprite->data2 = unk_8041e2c[whichElement - 1];
+ npc_pal_op_A(mapObject, sprite->oam.paletteNum);
+ }
+ else
+ {
+ npc_pal_op_B(mapObject, sprite->oam.paletteNum);
+ }
+}
+
+static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum)
+{
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ if (graphicsInfo->paletteTag2 != 0x11ff)
+ {
+ if (graphicsInfo->paletteSlot == 0)
+ {
+ npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, paletteNum);
+ }
+ else if (graphicsInfo->paletteSlot == 10)
+ {
+ npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, paletteNum);
+ }
+ else
+ {
+ pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum);
+ }
+ sub_807D78C(paletteNum);
+ }
+}
+
+static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum)
+{
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ if (graphicsInfo->paletteTag2 != 0x11ff)
+ {
+ pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum);
+ sub_807D78C(paletteNum);
+ }
+}
+
+static void sub_81269E0(struct Sprite *sprite)
+{
+ struct MapObject *mapObject;
+ struct Sprite *oldSprite;
+
+ mapObject = &gMapObjects[sprite->data0];
+ oldSprite = &gSprites[mapObject->spriteId];
+ if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data1)
+ {
+ sprite->inUse = FALSE;
+ }
+ else
+ {
+ sprite->oam.paletteNum = gUnknown_0830FD14[oldSprite->oam.paletteNum];
+ sprite->oam.shape = oldSprite->oam.shape;
+ sprite->oam.size = oldSprite->oam.size;
+ sprite->oam.matrixNum = oldSprite->oam.matrixNum | 0x10;
+ sprite->oam.tileNum = oldSprite->oam.tileNum;
+ sprite->subspriteTables = oldSprite->subspriteTables;
+ sprite->subspriteTableNum = oldSprite->subspriteTableNum;
+ sprite->invisible = oldSprite->invisible;
+ sprite->pos1.x = oldSprite->pos1.x;
+ sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data2;
+ sprite->centerToCornerVecX = oldSprite->centerToCornerVecX;
+ sprite->centerToCornerVecY = oldSprite->centerToCornerVecY;
+ sprite->pos2.x = oldSprite->pos2.x;
+ sprite->pos2.y = -oldSprite->pos2.y;
+ sprite->coordOffsetEnabled = oldSprite->coordOffsetEnabled;
+ if (sprite->data7 == FALSE)
+ {
+ sprite->oam.matrixNum = 0;
+ if (oldSprite->oam.matrixNum & 0x8)
+ {
+ sprite->oam.matrixNum = 1;
+ }
+ }
+ }
+}
+
+u8 sub_8126B54(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8] /*gFieldEffectSpriteTemplate_Arrow*/, 0, 0, 0x52);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->invisible = TRUE;
+ }
+ return spriteId;
+}
+
+void objid_set_invisible(u8 spriteId)
+{
+ gSprites[spriteId].invisible = TRUE;
+}
+
+void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y)
+{
+ s16 x2;
+ s16 y2;
+ struct Sprite *sprite;
+
+ sprite = &gSprites[spriteId];
+ if (sprite->invisible || sprite->data0 != x || sprite->data1 != y)
+ {
+ sub_80603CC(x, y, &x2, &y2);
+ sprite = &gSprites[spriteId];
+ sprite->pos1.x = x2 + 8;
+ sprite->pos1.y = y2 + 8;
+ sprite->invisible = FALSE;
+ sprite->data0 = x;
+ sprite->data1 = y;
+ StartSpriteAnim(sprite, animNum - 1);
+ }
+}
+
+u8 FldEff_Shadow(void)
+{
+ u8 mapObjectId;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ u8 spriteId;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ gSprites[spriteId].data0 = gFieldEffectSpawnParams[0];
+ gSprites[spriteId].data1 = gFieldEffectSpawnParams[1];
+ gSprites[spriteId].data2 = gFieldEffectSpawnParams[2];
+ gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize];
+ }
+ return 0;
+}
+
+void oamc_shadow(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId))
+ {
+ FieldEffectStop(sprite, FLDEFF_SHADOW);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = linkedSprite->pos1.y + sprite->data3;
+ if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F))
+ {
+ FieldEffectStop(sprite, FLDEFF_SHADOW);
+ }
+ }
+}
+
+u8 FldEff_TallGrass(void)
+{
+ s16 x;
+ s16 y;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ x = gFieldEffectSpawnParams[0];
+ y = gFieldEffectSpawnParams[1];
+ sub_8060470(&x, &y, 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectSpawnParams[3];
+ sprite->data0 = gFieldEffectSpawnParams[2];
+ sprite->data1 = gFieldEffectSpawnParams[0];
+ sprite->data2 = gFieldEffectSpawnParams[1];
+ sprite->data3 = gFieldEffectSpawnParams[4];
+ sprite->data4 = gFieldEffectSpawnParams[5];
+ sprite->data5 = gFieldEffectSpawnParams[6];
+ if (gFieldEffectSpawnParams[7])
+ {
+ SeekSpriteAnim(sprite, 4);
+ }
+ }
+ return 0;
+}
+
+void unc_grass_normal(struct Sprite *sprite)
+{
+ u8 mapNum;
+ u8 mapGroup;
+ u8 metatileBehavior;
+ u8 localId;
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+
+ mapNum = sprite->data5 >> 8;
+ mapGroup = sprite->data5;
+ if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup))
+ {
+ sprite->data1 -= gCamera.x;
+ sprite->data2 -= gCamera.y;
+ sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup;
+ }
+ localId = sprite->data3 >> 8;
+ mapNum = sprite->data3;
+ mapGroup = sprite->data4;
+ metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2);
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded))
+ {
+ FieldEffectStop(sprite, FLDEFF_TALL_GRASS);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2))
+ {
+ sprite->data7 = TRUE;
+ }
+ metatileBehavior = 0;
+ if (sprite->animCmdIndex == 0)
+ {
+ metatileBehavior = 4;
+ }
+ sub_806487C(sprite, 0);
+ sub_812882C(sprite, sprite->data0, metatileBehavior);
+ }
+}
+
+u8 FldEff_JumpTallGrass(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectSpawnParams[3];
+ sprite->data0 = gFieldEffectSpawnParams[2];
+ sprite->data1 = 12;
+ }
+ return 0;
+}
+
+u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+{
+ struct Sprite *sprite;
+ u8 i;
+
+ for (i = 0; i < MAX_SPRITES; i ++)
+ {
+ if (gSprites[i].inUse)
+ {
+ sprite = &gSprites[i];
+ if (sprite->callback == unc_grass_normal && (x == sprite->data1 && y == sprite->data2) && (localId == (u8)(sprite->data3 >> 8) && mapNum == (sprite->data3 & 0xFF) && mapGroup == sprite->data4))
+ {
+ return i;
+ }
+ }
+ }
+ return MAX_SPRITES;
+}
+
+u8 FldEff_LongGrass(void)
+{
+ s16 x;
+ s16 y;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ x = gFieldEffectSpawnParams[0];
+ y = gFieldEffectSpawnParams[1];
+ sub_8060470(&x, &y, 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = ZCoordToPriority(gFieldEffectSpawnParams[2]);
+ sprite->data0 = gFieldEffectSpawnParams[2];
+ sprite->data1 = gFieldEffectSpawnParams[0];
+ sprite->data2 = gFieldEffectSpawnParams[1];
+ sprite->data3 = gFieldEffectSpawnParams[4];
+ sprite->data4 = gFieldEffectSpawnParams[5];
+ sprite->data5 = gFieldEffectSpawnParams[6];
+ if (gFieldEffectSpawnParams[7])
+ {
+ SeekSpriteAnim(sprite, 6);
+ }
+ }
+ return 0;
+}
+
+void unc_grass_tall(struct Sprite *sprite)
+{
+ u8 mapNum;
+ u8 mapGroup;
+ u8 metatileBehavior;
+ u8 localId;
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+
+ mapNum = sprite->data5 >> 8;
+ mapGroup = sprite->data5;
+ if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup))
+ {
+ sprite->data1 -= gCamera.x;
+ sprite->data2 -= gCamera.y;
+ sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup;
+ }
+ localId = sprite->data3 >> 8;
+ mapNum = sprite->data3;
+ mapGroup = sprite->data4;
+ metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2);
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded))
+ {
+ FieldEffectStop(sprite, FLDEFF_LONG_GRASS);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2))
+ {
+ sprite->data7 = TRUE;
+ }
+ sub_806487C(sprite, 0);
+ sub_812882C(sprite, sprite->data0, 0);
+ }
+}
+
+u8 FldEff_JumpLongGrass(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectSpawnParams[3];
+ sprite->data0 = gFieldEffectSpawnParams[2];
+ sprite->data1 = 18;
+ }
+ return 0;
+}
+
+u8 FldEff_ShortGrass(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &(gSprites[spriteId]);
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectSpawnParams[0];
+ sprite->data1 = gFieldEffectSpawnParams[1];
+ sprite->data2 = gFieldEffectSpawnParams[2];
+ sprite->data3 = gSprites[mapObject->spriteId].pos1.x;
+ sprite->data4 = gSprites[mapObject->spriteId].pos1.y;
+ }
+ return 0;
+}
+
+void sub_8127334(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ s16 x;
+ s16 y;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18)
+ {
+ FieldEffectStop(sprite, FLDEFF_SHORT_GRASS);
+ }
+ else
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
+ linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ y = linkedSprite->pos1.y;
+ x = linkedSprite->pos1.x;
+ if (x != sprite->data3 || y != sprite->data4)
+ {
+ sprite->data3 = x;
+ sprite->data4 = y;
+ if (sprite->animEnded)
+ {
+ StartSpriteAnim(sprite, 0);
+ }
+ }
+ sprite->pos1.x = x;
+ sprite->pos1.y = y;
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 8;
+ sprite->subpriority = linkedSprite->subpriority - 1;
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sub_806487C(sprite, linkedSprite->invisible);
+ }
+}
+
+u8 FldEff_SandFootprints(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectSpawnParams[3];
+ sprite->data7 = FLDEFF_SAND_FOOTPRINTS;
+ StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]);
+ }
+ return 0;
+}
+
+u8 FldEff_DeepSandFootprints(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectSpawnParams[3];
+ sprite->data7 = FLDEFF_DEEP_SAND_FOOTPRINTS;
+ StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]);
+ }
+ return spriteId;
+}
+
+u8 FldEff_BikeTireTracks(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectSpawnParams[3];
+ sprite->data7 = FLDEFF_BIKE_TIRE_TRACKS;
+ StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]);
+ }
+ return spriteId;
+}
+
+void sub_8127584(struct Sprite *sprite)
+{
+ gUnknown_08401E40[sprite->data0](sprite);
+}
+
+static void sub_81275A0(struct Sprite *sprite)
+{
+ if (++sprite->data1 > 40)
+ {
+ sprite->data0 = 1;
+ }
+ sub_806487C(sprite, FALSE);
+}
+
+static void sub_81275C4(struct Sprite *sprite)
+{
+ sprite->invisible ^= 1;
+ sprite->data1 ++;
+ sub_806487C(sprite, sprite->invisible);
+ if (sprite->data1 > 56)
+ {
+ FieldEffectStop(sprite, sprite->data7);
+ }
+}
+
+u8 FldEff_Splash(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sprite->data0 = gFieldEffectSpawnParams[0];
+ sprite->data1 = gFieldEffectSpawnParams[1];
+ sprite->data2 = gFieldEffectSpawnParams[2];
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ PlaySE(SE_MIZU);
+ }
+ return 0;
+}
+
+void sub_81276B4(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+
+ if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId))
+ {
+ FieldEffectStop(sprite, FLDEFF_SPLASH);
+ }
+ else
+ {
+ sprite->pos1.x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x;
+ sprite->pos1.y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y;
+ sub_806487C(sprite, FALSE);
+ }
+}
+
+u8 FldEff_JumpSmallSplash(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectSpawnParams[3];
+ sprite->data0 = gFieldEffectSpawnParams[2];
+ sprite->data1 = FLDEFF_JUMP_SMALL_SPLASH;
+ }
+ return 0;
+}
+
+u8 FldEff_JumpBigSplash(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectSpawnParams[3];
+ sprite->data0 = gFieldEffectSpawnParams[2];
+ sprite->data1 = FLDEFF_JUMP_BIG_SPLASH;
+ }
+ return 0;
+}
+
+u8 FldEff_FeetInFlowingWater(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ sprite = &gSprites[spriteId];
+ sprite->callback = sub_81278D8;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectSpawnParams[0];
+ sprite->data1 = gFieldEffectSpawnParams[1];
+ sprite->data2 = gFieldEffectSpawnParams[2];
+ sprite->data3 = -1;
+ sprite->data4 = -1;
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ StartSpriteAnim(sprite, 1);
+ }
+ return 0;
+}
+
+static void sub_81278D8(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ struct Sprite *linkedSprite;
+ struct MapObject *mapObject;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19)
+ {
+ FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = linkedSprite->pos1.y;
+ sprite->subpriority = linkedSprite->subpriority;
+ sub_806487C(sprite, FALSE);
+ if (mapObject->coords2.x != sprite->data3 || mapObject->coords2.y != sprite->data4)
+ {
+ sprite->data3 = mapObject->coords2.x;
+ sprite->data4 = mapObject->coords2.y;
+ if (!sprite->invisible)
+ {
+ PlaySE(SE_MIZU);
+ }
+ }
+ }
+}
+
+u8 FldEff_Ripple(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectSpawnParams[3];
+ sprite->data0 = FLDEFF_RIPPLE;
+ }
+ return 0;
+}
+
+u8 FldEff_HotSpringsWater(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectSpawnParams[0];
+ sprite->data1 = gFieldEffectSpawnParams[1];
+ sprite->data2 = gFieldEffectSpawnParams[2];
+ sprite->data3 = gSprites[mapObject->spriteId].pos1.x;
+ sprite->data4 = gSprites[mapObject->spriteId].pos1.y;
+ }
+ return 0;
+}
diff --git a/src/field_ground_effect.c b/src/field_ground_effect.c
index b9935463b..e50811a78 100644
--- a/src/field_ground_effect.c
+++ b/src/field_ground_effect.c
@@ -460,18 +460,18 @@ void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *spri
{
u8 *ptr;
- gUnknown_0202FF84[0] = mapObj->coords2.x;
- gUnknown_0202FF84[1] = mapObj->coords2.y;
- gUnknown_0202FF84[2] = mapObj->elevation;
- gUnknown_0202FF84[3] = 2;
- gUnknown_0202FF84[4] = (mapObj->localId << 8) | mapObj->mapNum;
- gUnknown_0202FF84[5] = mapObj->mapGroup;
+ gFieldEffectSpawnParams[0] = mapObj->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords2.y;
+ gFieldEffectSpawnParams[2] = mapObj->elevation;
+ gFieldEffectSpawnParams[3] = 2;
+ gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectSpawnParams[5] = mapObj->mapGroup;
ptr = (u8 *)&gSaveBlock1;
- gUnknown_0202FF84[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8)
| (u8)gSaveBlock1.location.mapGroup;
- gUnknown_0202FF84[7] = 1;
+ gFieldEffectSpawnParams[7] = 1;
FieldEffectStart(4);
}
@@ -479,18 +479,18 @@ void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite)
{
u8 *ptr;
- gUnknown_0202FF84[0] = mapObj->coords2.x;
- gUnknown_0202FF84[1] = mapObj->coords2.y;
- gUnknown_0202FF84[2] = mapObj->elevation;
- gUnknown_0202FF84[3] = 2;
- gUnknown_0202FF84[4] = (mapObj->localId << 8) | mapObj->mapNum;
- gUnknown_0202FF84[5] = mapObj->mapGroup;
+ gFieldEffectSpawnParams[0] = mapObj->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords2.y;
+ gFieldEffectSpawnParams[2] = mapObj->elevation;
+ gFieldEffectSpawnParams[3] = 2;
+ gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectSpawnParams[5] = mapObj->mapGroup;
ptr = (u8 *)&gSaveBlock1;
- gUnknown_0202FF84[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8)
| (u8)gSaveBlock1.location.mapGroup;
- gUnknown_0202FF84[7] = 0;
+ gFieldEffectSpawnParams[7] = 0;
FieldEffectStart(4);
}
@@ -498,18 +498,18 @@ void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite)
{
u8 *ptr;
- gUnknown_0202FF84[0] = mapObj->coords2.x;
- gUnknown_0202FF84[1] = mapObj->coords2.y;
- gUnknown_0202FF84[2] = mapObj->elevation;
- gUnknown_0202FF84[3] = 2;
- gUnknown_0202FF84[4] = (mapObj->localId << 8) | mapObj->mapNum;
- gUnknown_0202FF84[5] = mapObj->mapGroup;
+ gFieldEffectSpawnParams[0] = mapObj->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords2.y;
+ gFieldEffectSpawnParams[2] = mapObj->elevation;
+ gFieldEffectSpawnParams[3] = 2;
+ gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectSpawnParams[5] = mapObj->mapGroup;
ptr = (u8 *)&gSaveBlock1;
- gUnknown_0202FF84[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8)
| (u8)gSaveBlock1.location.mapGroup;
- gUnknown_0202FF84[7] = 1;
+ gFieldEffectSpawnParams[7] = 1;
FieldEffectStart(17);
}
@@ -517,18 +517,18 @@ void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite)
{
u8 *ptr;
- gUnknown_0202FF84[0] = mapObj->coords2.x;
- gUnknown_0202FF84[1] = mapObj->coords2.y;
- gUnknown_0202FF84[2] = mapObj->elevation;
- gUnknown_0202FF84[3] = 2;
- gUnknown_0202FF84[4] = (mapObj->localId << 8) | mapObj->mapNum;
- gUnknown_0202FF84[5] = mapObj->mapGroup;
+ gFieldEffectSpawnParams[0] = mapObj->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords2.y;
+ gFieldEffectSpawnParams[2] = mapObj->elevation;
+ gFieldEffectSpawnParams[3] = 2;
+ gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectSpawnParams[5] = mapObj->mapGroup;
ptr = (u8 *)&gSaveBlock1;
- gUnknown_0202FF84[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8)
| (u8)gSaveBlock1.location.mapGroup;
- gUnknown_0202FF84[7] = 0;
+ gFieldEffectSpawnParams[7] = 0;
FieldEffectStart(17);
}
@@ -572,11 +572,11 @@ static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Spr
// First half-word is a Field Effect script id. (gFieldEffectScriptPointers)
u16 sandFootprints_FieldEffectData[2] = { 0xD, 0x18 };
- gUnknown_0202FF84[0] = mapObj->coords3.x;
- gUnknown_0202FF84[1] = mapObj->coords3.y;
- gUnknown_0202FF84[2] = 149;
- gUnknown_0202FF84[3] = 2;
- gUnknown_0202FF84[4] = mapObj->mapobj_unk_18;
+ gFieldEffectSpawnParams[0] = mapObj->coords3.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords3.y;
+ gFieldEffectSpawnParams[2] = 149;
+ gFieldEffectSpawnParams[3] = 2;
+ gFieldEffectSpawnParams[4] = mapObj->mapobj_unk_18;
FieldEffectStart(sandFootprints_FieldEffectData[a]);
}
@@ -598,11 +598,11 @@ static void DoTracksGroundEffect_BikeTireTracks(
if (mapObj->coords2.x != mapObj->coords3.x || mapObj->coords2.y != mapObj->coords3.y)
{
- gUnknown_0202FF84[0] = mapObj->coords3.x;
- gUnknown_0202FF84[1] = mapObj->coords3.y;
- gUnknown_0202FF84[2] = 149;
- gUnknown_0202FF84[3] = 2;
- gUnknown_0202FF84[4] =
+ gFieldEffectSpawnParams[0] = mapObj->coords3.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords3.y;
+ gFieldEffectSpawnParams[2] = 149;
+ gFieldEffectSpawnParams[3] = 2;
+ gFieldEffectSpawnParams[4] =
bikeTireTracks_Transitions[mapObj->mapobj_unk_20][mapObj->mapobj_unk_18 - 5];
FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS);
}
@@ -627,10 +627,10 @@ void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprit
{
u8 spriteId;
- gUnknown_0202FF84[0] = mapObj->coords2.x;
- gUnknown_0202FF84[1] = mapObj->coords2.y;
- gUnknown_0202FF84[2] = mapObj->elevation;
- gUnknown_0202FF84[3] = 2;
+ gFieldEffectSpawnParams[0] = mapObj->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords2.y;
+ gFieldEffectSpawnParams[2] = mapObj->elevation;
+ gFieldEffectSpawnParams[3] = 2;
FieldEffectStart(FLDEFF_JUMP_TALL_GRASS);
spriteId = sub_8126FF0(
@@ -642,37 +642,37 @@ void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprit
void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
{
- gUnknown_0202FF84[0] = mapObj->coords2.x;
- gUnknown_0202FF84[1] = mapObj->coords2.y;
- gUnknown_0202FF84[2] = mapObj->elevation;
- gUnknown_0202FF84[3] = 2;
+ gFieldEffectSpawnParams[0] = mapObj->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords2.y;
+ gFieldEffectSpawnParams[2] = mapObj->elevation;
+ gFieldEffectSpawnParams[3] = 2;
FieldEffectStart(FLDEFF_JUMP_LONG_GRASS);
}
void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite)
{
- gUnknown_0202FF84[0] = mapObj->coords2.x;
- gUnknown_0202FF84[1] = mapObj->coords2.y;
- gUnknown_0202FF84[2] = mapObj->elevation;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectSpawnParams[0] = mapObj->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords2.y;
+ gFieldEffectSpawnParams[2] = mapObj->elevation;
+ gFieldEffectSpawnParams[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH);
}
void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite)
{
- gUnknown_0202FF84[0] = mapObj->coords2.x;
- gUnknown_0202FF84[1] = mapObj->coords2.y;
- gUnknown_0202FF84[2] = mapObj->elevation;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectSpawnParams[0] = mapObj->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords2.y;
+ gFieldEffectSpawnParams[2] = mapObj->elevation;
+ gFieldEffectSpawnParams[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH);
}
void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite)
{
- gUnknown_0202FF84[0] = mapObj->coords2.x;
- gUnknown_0202FF84[1] = mapObj->coords2.y;
- gUnknown_0202FF84[2] = mapObj->elevation;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectSpawnParams[0] = mapObj->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords2.y;
+ gFieldEffectSpawnParams[2] = mapObj->elevation;
+ gFieldEffectSpawnParams[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_DUST);
}
@@ -688,8 +688,8 @@ void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite)
void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite)
{
- gUnknown_0202FF84[0] = mapObj->coords2.x;
- gUnknown_0202FF84[1] = mapObj->coords2.y;
+ gFieldEffectSpawnParams[0] = mapObj->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObj->coords2.y;
FieldEffectStart(FLDEFF_BUBBLES);
}
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index f60b1b233..dc72981bb 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -1901,7 +1901,7 @@ extern void CameraObjectReset1(void);
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
extern u8 gReservedSpritePaletteCount;
-extern struct Camera gUnknown_0202E844;
+extern struct Camera gCamera;
static u8 gUnknown_030005A4;
static u16 gUnknown_030005A6;
@@ -2990,9 +2990,9 @@ void UpdateFieldObjectCoordsForCameraUpdate(void)
asm(""::"r"(i)); //makes the compiler store i in r3
#endif
- if (gUnknown_0202E844.field_0)
+ if (gCamera.field_0)
{
- for (i = 0, deltaX = gUnknown_0202E844.x, deltaY = gUnknown_0202E844.y; i < 16; i++)
+ for (i = 0, deltaX = gCamera.x, deltaY = gCamera.y; i < 16; i++)
{
struct MapObject *mapObject = &gMapObjects[i];
@@ -3895,10 +3895,10 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp
{
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;
+ gFieldEffectSpawnParams[0] = mapObject->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObject->coords2.y;
+ gFieldEffectSpawnParams[2] = sprite->subpriority - 1;
+ gFieldEffectSpawnParams[3] = sprite->oam.priority;
FieldEffectStart(0x17);
sprite->animNum = 0;
}
@@ -3934,10 +3934,10 @@ u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sp
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;
+ gFieldEffectSpawnParams[0] = mapObject->coords2.x;
+ gFieldEffectSpawnParams[1] = mapObject->coords2.y;
+ gFieldEffectSpawnParams[2] = sprite->subpriority - 1;
+ gFieldEffectSpawnParams[3] = sprite->oam.priority;
FieldEffectStart(0x17);
return 1;
}
@@ -5086,7 +5086,7 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite)
mapObject = &gMapObjects[sprite->data0];
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0))
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
mapObject->mapobj_unk_1A = FieldEffectStart(0x1c);
mapObject->mapobj_unk_21 = 1;
sprite->data7 ++;
@@ -5106,7 +5106,7 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite)
mapObject = &gMapObjects[sprite->data0];
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0))
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
mapObject->mapobj_unk_1A = FieldEffectStart(0x1d);
mapObject->mapobj_unk_21 = 1;
sprite->data7 ++;
@@ -7490,7 +7490,7 @@ bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite)
bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
FieldEffectStart(0x0);
sprite->data2 = 1;
return TRUE;
@@ -7498,7 +7498,7 @@ bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *s
bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
FieldEffectStart(0x21);
sprite->data2 = 1;
return TRUE;
@@ -7506,7 +7506,7 @@ bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *s
bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
FieldEffectStart(0x2e);
sprite->data2 = 1;
return TRUE;
diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c
index 87be8e011..d8cb33251 100644
--- a/src/field_map_obj_helpers.c
+++ b/src/field_map_obj_helpers.c
@@ -294,7 +294,7 @@ void sub_8064990(u8 a1, u8 dir)
u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
return FieldEffectStart(fieldEffectId);
}
@@ -310,9 +310,9 @@ void DoShadowFieldEffect(struct MapObject *mapObject)
void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite)
{
const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- gUnknown_0202FF84[0] = sprite->pos1.x;
- gUnknown_0202FF84[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
- gUnknown_0202FF84[2] = 151;
- gUnknown_0202FF84[3] = 3;
+ gFieldEffectSpawnParams[0] = sprite->pos1.x;
+ gFieldEffectSpawnParams[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
+ gFieldEffectSpawnParams[2] = 151;
+ gFieldEffectSpawnParams[3] = 3;
FieldEffectStart(5);
}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 2a7b2f3e0..b055036ea 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -666,9 +666,9 @@ void PlayerAvatarTransition_Surfing(struct MapObject *a)
sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(3));
FieldObjectTurn(a, a->placeholder18);
SetPlayerAvatarStateMask(8);
- gUnknown_0202FF84[0] = a->coords2.x;
- gUnknown_0202FF84[1] = a->coords2.y;
- gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId;
+ gFieldEffectSpawnParams[0] = a->coords2.x;
+ gFieldEffectSpawnParams[1] = a->coords2.y;
+ gFieldEffectSpawnParams[2] = gPlayerAvatar.mapObjectId;
unk = FieldEffectStart(8);
a->mapobj_unk_1A = unk;
sub_8127ED0(unk, 1);
@@ -1226,10 +1226,10 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c)
FieldObjectClearAnimIfSpecialAnimFinished(c);
FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId(task->data[2]));
FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId(task->data[2]));
- gUnknown_0202FF84[0] = c->coords2.x;
- gUnknown_0202FF84[1] = c->coords2.y;
- gUnknown_0202FF84[2] = c->elevation;
- gUnknown_0202FF84[3] = gSprites[c->spriteId].oam.priority;
+ gFieldEffectSpawnParams[0] = c->coords2.x;
+ gFieldEffectSpawnParams[1] = c->coords2.y;
+ gFieldEffectSpawnParams[2] = c->elevation;
+ gFieldEffectSpawnParams[3] = gSprites[c->spriteId].oam.priority;
FieldEffectStart(10);
PlaySE(SE_W070);
task->data[0]++;
diff --git a/src/field_tasks.c b/src/field_tasks.c
index caf2ce6b9..628ee81de 100644
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -836,11 +836,11 @@ void Task_MuddySlope(u8 taskId)
}
break;
}
- if (gUnknown_0202E844.field_0 && mapIndices != data[0])
+ if (gCamera.field_0 && mapIndices != data[0])
{
data[0] = mapIndices;
- x2 = gUnknown_0202E844.x;
- y2 = gUnknown_0202E844.y;
+ x2 = gCamera.x;
+ y2 = gCamera.y;
}
else
{
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 0e0ec246c..7171e62b7 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -22,7 +22,7 @@ struct Coords32
EWRAM_DATA static u16 gUnknown_02029828[0x2800] = {0};
EWRAM_DATA struct MapHeader gMapHeader = {0};
-EWRAM_DATA struct Camera gUnknown_0202E844 = {0};
+EWRAM_DATA struct Camera gCamera = {0};
EWRAM_DATA static struct ConnectionFlags gUnknown_0202E850 = {0};
struct BackupMapData gUnknown_03004870;
@@ -713,7 +713,7 @@ bool8 CameraMove(int x, int y)
unsigned int direction;
struct MapConnection *connection;
int old_x, old_y;
- gUnknown_0202E844.field_0 = FALSE;
+ gCamera.field_0 = FALSE;
direction = GetPostCameraMoveMapBorderId(x, y);
if (direction + 1 <= 1)
{
@@ -728,14 +728,14 @@ bool8 CameraMove(int x, int y)
connection = sub_8056A64(direction, gSaveBlock1.pos.x, gSaveBlock1.pos.y);
sub_8056918(connection, direction, x, y);
sub_80538F0(connection->mapGroup, connection->mapNum);
- gUnknown_0202E844.field_0 = TRUE;
- gUnknown_0202E844.x = old_x - gSaveBlock1.pos.x;
- gUnknown_0202E844.y = old_y - gSaveBlock1.pos.y;
+ gCamera.field_0 = TRUE;
+ gCamera.x = old_x - gSaveBlock1.pos.x;
+ gCamera.y = old_y - gSaveBlock1.pos.y;
gSaveBlock1.pos.x += x;
gSaveBlock1.pos.y += y;
sub_80566F0(direction);
}
- return gUnknown_0202E844.field_0;
+ return gCamera.field_0;
}
struct MapConnection *sub_8056A64(u8 direction, int x, int y)
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index b394d1e4c..d0fdd5139 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -71,7 +71,7 @@ bool8 SetUpFieldMove_Cut(void)
void sub_80A25E8(void)
{
FieldEffectStart(1);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
}
bool8 FldEff_UseCutOnGrass(void)
@@ -86,7 +86,7 @@ bool8 FldEff_UseCutOnGrass(void)
void sub_80A2634(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
ScriptContext1_SetupScript(&UseCutScript);
}
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
index 6c2633567..df05de52b 100644
--- a/src/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -62,7 +62,7 @@ bool8 SetUpFieldMove_Flash(void)
void sub_810CBFC(void)
{
u8 taskId = oei_task_add();
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
gTasks[taskId].data[8] = (uintptr_t)sub_810CC34 >> 16;
gTasks[taskId].data[9] = (uintptr_t)sub_810CC34;
}
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
index 81f4f63c6..a5033e7b7 100644
--- a/src/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -42,13 +42,13 @@ bool8 SetUpFieldMove_Strength(void)
static void sub_811AA18(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
ScriptContext1_SetupScript(UseStrengthScript);
}
static void sub_811AA38(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
FieldEffectStart(40);
}
@@ -58,7 +58,7 @@ bool8 FldEff_UseStrength(void)
gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16;
gTasks[taskId].data[9] = (u32)sub_811AA9C;
- GetMonNickname(&gPlayerParty[gUnknown_0202FF84[0]], gStringVar1);
+ GetMonNickname(&gPlayerParty[gFieldEffectSpawnParams[0]], gStringVar1);
return FALSE;
}
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index 4c3e6bf4a..66fa3dae2 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -31,7 +31,7 @@ bool8 SetUpFieldMove_SweetScent(void)
static void sub_812BFD4(void)
{
FieldEffectStart(51);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
}
bool8 FldEff_SweetScent()
diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c
index 74e68df06..8f75099dc 100644
--- a/src/fldeff_teleport.c
+++ b/src/fldeff_teleport.c
@@ -27,7 +27,7 @@ void hm_teleport_run_dp02scr(void)
{
new_game();
FieldEffectStart(63);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
}
bool8 FldEff_UseTeleport(void)
diff --git a/src/pokemon_menu.c b/src/pokemon_menu.c
index 821101569..94801f1a2 100644
--- a/src/pokemon_menu.c
+++ b/src/pokemon_menu.c
@@ -786,7 +786,7 @@ static void sub_808ABA8(u8 taskID)
{
if (sub_807D770() == TRUE)
{
- gUnknown_0202FF84[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES);
+ gFieldEffectSpawnParams[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES);
gUnknown_03005CE4();
DestroyTask(taskID);
}
@@ -803,7 +803,7 @@ static void sub_808ABF4(u8 taskID)
static void sub_808AC2C(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
FieldEffectStart(FLDEFF_USE_SURF);
}
@@ -821,7 +821,7 @@ static bool8 SetUpFieldMove_Surf(void)
static void sub_808AC8C(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
FieldEffectStart(FLDEFF_USE_FLY);
}
@@ -872,14 +872,14 @@ u16 unref_sub_808AD88(void)
static void sub_808ADAC(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
FieldEffectStart(FLDEFF_USE_DIVE);
}
static bool8 SetUpFieldMove_Dive(void)
{
- gUnknown_0202FF84[1] = sub_8068F18();
- if (gUnknown_0202FF84[1])
+ gFieldEffectSpawnParams[1] = sub_8068F18();
+ if (gFieldEffectSpawnParams[1])
{
gFieldCallback = sub_808AB90;
gUnknown_03005CE4 = sub_808ADAC;
@@ -891,7 +891,7 @@ static bool8 SetUpFieldMove_Dive(void)
static void sub_808AE08(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
FieldEffectStart(FLDEFF_USE_WATERFALL);
}
diff --git a/src/rom6.c b/src/rom6.c
index ff032b6c2..1f72eba93 100644
--- a/src/rom6.c
+++ b/src/rom6.c
@@ -91,17 +91,17 @@ static void sub_810B428(u8 taskId)
{
if (!FieldEffectActiveListContains(6))
{
- gUnknown_0202FF84[1] = player_get_direction_lower_nybble();
- if (gUnknown_0202FF84[1] == 1)
- gUnknown_0202FF84[2] = 0;
- if (gUnknown_0202FF84[1] == 2)
- gUnknown_0202FF84[2] = 1;
- if (gUnknown_0202FF84[1] == 3)
- gUnknown_0202FF84[2] = 2;
- if (gUnknown_0202FF84[1] == 4)
- gUnknown_0202FF84[2] = 3;
+ gFieldEffectSpawnParams[1] = player_get_direction_lower_nybble();
+ if (gFieldEffectSpawnParams[1] == 1)
+ gFieldEffectSpawnParams[2] = 0;
+ if (gFieldEffectSpawnParams[1] == 2)
+ gFieldEffectSpawnParams[2] = 1;
+ if (gFieldEffectSpawnParams[1] == 3)
+ gFieldEffectSpawnParams[2] = 2;
+ if (gFieldEffectSpawnParams[1] == 4)
+ gFieldEffectSpawnParams[2] = 3;
sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState());
- StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gUnknown_0202FF84[2]);
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectSpawnParams[2]);
FieldEffectActiveListRemove(6);
gTasks[taskId].func = sub_810B4CC;
}
@@ -132,7 +132,7 @@ bool8 SetUpFieldMove_RockSmash(void)
static void sub_810B53C(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
ScriptContext1_SetupScript(UseRockSmashScript);
}
@@ -171,7 +171,7 @@ static void sub_810B5D8(void)
{
sub_8053014();
FieldEffectStart(0x26);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened;
}
int FldEff_UseDig(void)
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 66578f350..752aafe35 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1724,7 +1724,7 @@ bool8 ScrCmd_doanimation(struct ScriptContext *ctx)
bool8 ScrCmd_setanimation(struct ScriptContext *ctx)
{
u8 v2 = ScriptReadByte(ctx);
- gUnknown_0202FF84[v2] = (s16)VarGet(ScriptReadHalfword(ctx));
+ gFieldEffectSpawnParams[v2] = (s16)VarGet(ScriptReadHalfword(ctx));
return FALSE;
}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index feb35c67c..73dba2d60 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -201,7 +201,7 @@ s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
u8 direction;
- FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
FieldEffectStart(0);
direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18);
@@ -311,10 +311,10 @@ s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj))
{
- gUnknown_0202FF84[0] = trainerObj->coords2.x;
- gUnknown_0202FF84[1] = trainerObj->coords2.y;
- gUnknown_0202FF84[2] = gSprites[trainerObj->spriteId].subpriority - 1;
- gUnknown_0202FF84[3] = 2;
+ gFieldEffectSpawnParams[0] = trainerObj->coords2.x;
+ gFieldEffectSpawnParams[1] = trainerObj->coords2.y;
+ gFieldEffectSpawnParams[2] = gSprites[trainerObj->spriteId].subpriority - 1;
+ gFieldEffectSpawnParams[3] = 2;
task->data[4] = FieldEffectStart(49);
task->data[0]++;
}
@@ -421,9 +421,9 @@ void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = 1;
- sprite->data0 = gUnknown_0202FF84[0];
- sprite->data1 = gUnknown_0202FF84[1];
- sprite->data2 = gUnknown_0202FF84[2];
+ sprite->data0 = gFieldEffectSpawnParams[0];
+ sprite->data1 = gFieldEffectSpawnParams[1];
+ sprite->data2 = gFieldEffectSpawnParams[2];
sprite->data3 = -5;
sprite->data7 = a2;