summaryrefslogtreecommitdiff
path: root/src/fldeff_secretpower.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fldeff_secretpower.c')
-rw-r--r--src/fldeff_secretpower.c212
1 files changed, 103 insertions, 109 deletions
diff --git a/src/fldeff_secretpower.c b/src/fldeff_secretpower.c
index d1df03d84..e58a1e82f 100644
--- a/src/fldeff_secretpower.c
+++ b/src/fldeff_secretpower.c
@@ -10,12 +10,13 @@
#include "rom6.h"
#include "script.h"
#include "secret_base.h"
-#include "constants/songs.h"
#include "sound.h"
+#include "constants/field_effects.h"
+#include "constants/songs.h"
-extern u8 gUnknown_081A2CE6[];
-extern u8 gUnknown_081A2D3E[];
-extern u8 gUnknown_081A2D96[];
+extern u8 DoSecretBaseCaveFieldEffectScript[];
+extern u8 DoSecretBaseTreeFieldEffectScript[];
+extern u8 DoSecretBaseShrubFieldEffectScript[];
const u8 gSpriteImage_83D198C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/0.4bpp");
const u8 gSpriteImage_83D1A0C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/1.4bpp");
@@ -162,8 +163,8 @@ const struct SpriteFrameImage gSpriteImageTable_83D25EC[] =
{gSpriteImage_83D1E4C, 0x80},
};
-void sub_80C644C(struct Sprite *);
-const struct SpriteTemplate gSpriteTemplate_83D2614 =
+static void CaveEntranceSpriteCallback1(struct Sprite *);
+static const struct SpriteTemplate sSpriteTemplate_CaveEntrance =
{
.tileTag = 0xFFFF,
.paletteTag = 4099,
@@ -171,11 +172,11 @@ const struct SpriteTemplate gSpriteTemplate_83D2614 =
.anims = gSpriteAnimTable_83D2584,
.images = gSpriteImageTable_83D259C,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80C644C,
+ .callback = CaveEntranceSpriteCallback1,
};
-void sub_80C6598(struct Sprite *);
-const struct SpriteTemplate gSpriteTemplate_83D262C =
+static void TreeEntranceSpriteCallback1(struct Sprite *);
+const struct SpriteTemplate sSpriteTemplate_TreeEntrance =
{
.tileTag = 0xFFFF,
.paletteTag = 4104,
@@ -183,11 +184,11 @@ const struct SpriteTemplate gSpriteTemplate_83D262C =
.anims = gSpriteAnimTable_83D2588,
.images = gSpriteImageTable_83D25C4,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80C6598,
+ .callback = TreeEntranceSpriteCallback1,
};
-void sub_80C66BC(struct Sprite *);
-const struct SpriteTemplate gSpriteTemplate_83D2644 =
+static void ShrubEntranceSpriteCallback1(struct Sprite *);
+const struct SpriteTemplate sSpriteTemplate_ShrubEntrance =
{
.tileTag = 0xFFFF,
.paletteTag = 4104,
@@ -195,48 +196,48 @@ const struct SpriteTemplate gSpriteTemplate_83D2644 =
.anims = gSpriteAnimTable_83D2598,
.images = gSpriteImageTable_83D25EC,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80C66BC,
+ .callback = ShrubEntranceSpriteCallback1,
};
const struct SpritePalette gFieldEffectObjectPaletteInfo7 = {gFieldEffectObjectPalette7, 0x1003};
const struct SpritePalette gFieldEffectObjectPaletteInfo8 = {gFieldEffectObjectPalette8, 0x1008};
-void sub_80C639C(void);
-void sub_80C63E8(void);
-void sub_80C6468(struct Sprite *);
-void sub_80C6498(struct Sprite *);
-void sub_80C64A8(void);
-void sub_80C64F4(void);
-void sub_80C65C4(struct Sprite *);
-void sub_80C65FC(struct Sprite *);
-void sub_80C660C(void);
-void sub_80C6658(void);
-void sub_80C66D8(struct Sprite *sprite);
-void sub_80C6708(struct Sprite *sprite);
-
-void sub_80C6264(void)
-{
- sub_80BBFD8(&gUnknown_0203923C, gMapHeader.events);
- sub_80BB5E4();
+static void FieldCallback_SecretBaseCave(void);
+static void StartSecretBaseCaveFieldEffect(void);
+static void CaveEntranceSpriteCallback2(struct Sprite *);
+static void CaveEntranceSpriteCallbackEnd(struct Sprite *);
+static void FieldCallback_SecretBaseTree(void);
+static void StartSecretBaseTreeFieldEffect(void);
+static void TreeEntranceSpriteCallback2(struct Sprite *);
+static void TreeEntranceSpriteCallbackEnd(struct Sprite *);
+static void FieldCallback_SecretBaseShrub(void);
+static void StartSecretBaseShrubFieldEffect(void);
+static void ShrubEntranceSpriteCallback2(struct Sprite *sprite);
+static void ShrubEntranceSpriteCallbackEnd(struct Sprite *sprite);
+
+static void SetCurrentSecretBase(void)
+{
+ SetCurrentSecretBaseFromPosition(&gPlayerFacingPosition, gMapHeader.events);
+ SetCurrentSecretBaseVar();
}
-void sub_80C6280(void)
+static void AdjustSecretPowerSpritePixelOffsets(void)
{
switch (gFieldEffectArguments[1])
{
- case 1:
+ case DIR_SOUTH:
gFieldEffectArguments[5] = 8;
gFieldEffectArguments[6] = 40;
break;
- case 2:
+ case DIR_NORTH:
gFieldEffectArguments[5] = 8;
gFieldEffectArguments[6] = 8;
break;
- case 3:
+ case DIR_WEST:
gFieldEffectArguments[5] = -8;
gFieldEffectArguments[6] = 24;
break;
- case 4:
+ case DIR_EAST:
gFieldEffectArguments[5] = 24;
gFieldEffectArguments[6] = 24;
break;
@@ -245,37 +246,37 @@ void sub_80C6280(void)
#if DEBUG
-void debug_sub_80D93F4(void)
+void Debug_SetUpFieldMove_SecretPower(void)
{
u8 metatile;
- sub_80BB63C();
+ CheckPlayerHasSecretBase();
- if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != 2)
+ if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != DIR_NORTH)
{
ScriptContext2_Disable();
return;
}
- GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
- metatile = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y);
+ GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+ metatile = MapGridGetMetatileBehaviorAt(gPlayerFacingPosition.x, gPlayerFacingPosition.y);
if (MetatileBehavior_IsSecretBaseCave(metatile) == TRUE)
{
- sub_80C6264();
+ SetCurrentSecretBase();
gLastFieldPokeMenuOpened = 0;
- sub_80C639C();
+ FieldCallback_SecretBaseCave();
}
else if (MetatileBehavior_IsSecretBaseTree(metatile) == TRUE)
{
- sub_80C6264();
+ SetCurrentSecretBase();
gLastFieldPokeMenuOpened = 0;
- sub_80C64A8();
+ FieldCallback_SecretBaseTree();
}
else if (MetatileBehavior_IsSecretBaseShrub(metatile) == TRUE)
{
- sub_80C6264();
+ SetCurrentSecretBase();
gLastFieldPokeMenuOpened = 0;
- sub_80C660C();
+ FieldCallback_SecretBaseShrub();
}
else
{
@@ -289,58 +290,57 @@ bool8 SetUpFieldMove_SecretPower(void)
{
u8 behavior;
- sub_80BB63C();
-
+ CheckPlayerHasSecretBase();
if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != DIR_NORTH)
return FALSE;
- GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
- behavior = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y);
+ GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+ behavior = MapGridGetMetatileBehaviorAt(gPlayerFacingPosition.x, gPlayerFacingPosition.y);
if (MetatileBehavior_IsSecretBaseCave(behavior) == TRUE)
{
- sub_80C6264();
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_80C639C;
+ SetCurrentSecretBase();
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SecretBaseCave;
return TRUE;
}
if (MetatileBehavior_IsSecretBaseTree(behavior) == TRUE)
{
- sub_80C6264();
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_80C64A8;
+ SetCurrentSecretBase();
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SecretBaseTree;
return TRUE;
}
if (MetatileBehavior_IsSecretBaseShrub(behavior) == TRUE)
{
- sub_80C6264();
- gFieldCallback = FieldCallback_Teleport;
- gUnknown_03005CE4 = sub_80C660C;
+ SetCurrentSecretBase();
+ gFieldCallback = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SecretBaseShrub;
return TRUE;
}
return FALSE;
}
-void sub_80C639C(void)
+static void FieldCallback_SecretBaseCave(void)
{
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(gUnknown_081A2CE6);
+ ScriptContext1_SetupScript(DoSecretBaseCaveFieldEffectScript);
}
bool8 FldEff_UseSecretPowerCave(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (uintptr_t)sub_80C63E8 >> 16;
- gTasks[taskId].data[9] = (uintptr_t)sub_80C63E8;
+ gTasks[taskId].data[8] = (uintptr_t)StartSecretBaseCaveFieldEffect >> 16;
+ gTasks[taskId].data[9] = (uintptr_t)StartSecretBaseCaveFieldEffect;
return FALSE;
}
-void sub_80C63E8(void)
+static void StartSecretBaseCaveFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_CAVE);
FieldEffectStart(FLDEFF_SECRET_POWER_CAVE);
@@ -348,60 +348,60 @@ void sub_80C63E8(void)
bool8 FldEff_SecretPowerCave(void)
{
- sub_80C6280();
+ AdjustSecretPowerSpritePixelOffsets();
CreateSprite(
- &gSpriteTemplate_83D2614,
+ &sSpriteTemplate_CaveEntrance,
gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
148);
return FALSE;
}
-void sub_80C644C(struct Sprite *sprite)
+static void CaveEntranceSpriteCallback1(struct Sprite *sprite)
{
PlaySE(SE_W088);
sprite->data[0] = 0;
- sprite->callback = sub_80C6468;
+ sprite->callback = CaveEntranceSpriteCallback2;
}
-void sub_80C6468(struct Sprite *sprite)
+static void CaveEntranceSpriteCallback2(struct Sprite *sprite)
{
if (sprite->data[0] < 40)
{
sprite->data[0]++;
- if (sprite->data[0] == 20 )
- sub_80BB800();
+ if (sprite->data[0] == 20)
+ SetOpenedSecretBaseMetatile();
}
else
{
sprite->data[0] = 0;
- sprite->callback = sub_80C6498;
+ sprite->callback = CaveEntranceSpriteCallbackEnd;
}
}
-void sub_80C6498(struct Sprite *sprite)
+static void CaveEntranceSpriteCallbackEnd(struct Sprite *sprite)
{
FieldEffectStop(sprite, FLDEFF_SECRET_POWER_CAVE);
EnableBothScriptContexts();
}
-void sub_80C64A8(void)
+static void FieldCallback_SecretBaseTree(void)
{
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(gUnknown_081A2D3E);
+ ScriptContext1_SetupScript(DoSecretBaseTreeFieldEffectScript);
}
bool8 FldEff_UseSecretPowerTree(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (uintptr_t)sub_80C64F4 >> 16;
- gTasks[taskId].data[9] = (uintptr_t)sub_80C64F4;
+ gTasks[taskId].data[8] = (uintptr_t)StartSecretBaseTreeFieldEffect >> 16;
+ gTasks[taskId].data[9] = (uintptr_t)StartSecretBaseTreeFieldEffect;
return FALSE;
}
-void sub_80C64F4(void)
+static void StartSecretBaseTreeFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_TREE);
FieldEffectStart(FLDEFF_SECRET_POWER_TREE);
@@ -409,77 +409,72 @@ void sub_80C64F4(void)
bool8 FldEff_SecretPowerTree(void)
{
- s16 behavior = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y) & 0xFFF;
+ s16 behavior = MapGridGetMetatileBehaviorAt(gPlayerFacingPosition.x, gPlayerFacingPosition.y) & 0xFFF;
if (behavior == MB_SECRET_BASE_SPOT_TREE_1)
- {
gFieldEffectArguments[7] = 0;
- }
if (behavior == MB_SECRET_BASE_SPOT_TREE_2)
- {
gFieldEffectArguments[7] = 2;
- }
-
- sub_80C6280();
+ AdjustSecretPowerSpritePixelOffsets();
CreateSprite(
- &gSpriteTemplate_83D262C,
+ &sSpriteTemplate_TreeEntrance,
gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
148);
if (gFieldEffectArguments[7] == 1 || gFieldEffectArguments[7] == 3)
- sub_80BB800();
+ SetOpenedSecretBaseMetatile();
return FALSE;
}
-void sub_80C6598(struct Sprite *sprite)
+static void TreeEntranceSpriteCallback1(struct Sprite *sprite)
{
PlaySE(SE_W010);
sprite->animNum = gFieldEffectArguments[7];
sprite->data[0] = 0;
- sprite->callback = sub_80C65C4;
+ sprite->callback = TreeEntranceSpriteCallback2;
}
-void sub_80C65C4(struct Sprite *sprite)
+static void TreeEntranceSpriteCallback2(struct Sprite *sprite)
{
sprite->data[0]++;
if (sprite->data[0] >= 40)
{
if (gFieldEffectArguments[7] == 0 || gFieldEffectArguments[7] == 2)
- sub_80BB800();
+ SetOpenedSecretBaseMetatile();
+
sprite->data[0] = 0;
- sprite->callback = sub_80C65FC;
+ sprite->callback = TreeEntranceSpriteCallbackEnd;
}
}
-
-void sub_80C65FC(struct Sprite *sprite)
+static void TreeEntranceSpriteCallbackEnd(struct Sprite *sprite)
{
FieldEffectStop(sprite, FLDEFF_SECRET_POWER_TREE);
EnableBothScriptContexts();
}
-void sub_80C660C(void)
+static void FieldCallback_SecretBaseShrub(void)
{
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(gUnknown_081A2D96);
+ ScriptContext1_SetupScript(DoSecretBaseShrubFieldEffectScript);
}
bool8 FldEff_UseSecretPowerShrub(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (uintptr_t)sub_80C6658 >> 16;
- gTasks[taskId].data[9] = (uintptr_t)sub_80C6658;
+ gTasks[taskId].data[8] = (uintptr_t)StartSecretBaseShrubFieldEffect >> 16;
+ gTasks[taskId].data[9] = (uintptr_t)StartSecretBaseShrubFieldEffect;
return FALSE;
}
-void sub_80C6658(void)
+static void StartSecretBaseShrubFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_SHRUB);
FieldEffectStart(FLDEFF_SECRET_POWER_SHRUB);
@@ -487,39 +482,38 @@ void sub_80C6658(void)
bool8 FldEff_SecretPowerShrub(void)
{
- sub_80C6280();
+ AdjustSecretPowerSpritePixelOffsets();
CreateSprite(
- &gSpriteTemplate_83D2644,
+ &sSpriteTemplate_ShrubEntrance,
gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
148);
return FALSE;
}
-void sub_80C66BC(struct Sprite *sprite)
+static void ShrubEntranceSpriteCallback1(struct Sprite *sprite)
{
PlaySE(SE_W077);
sprite->data[0] = 0;
- sprite->callback = sub_80C66D8;
+ sprite->callback = ShrubEntranceSpriteCallback2;
}
-void sub_80C66D8(struct Sprite *sprite)
+static void ShrubEntranceSpriteCallback2(struct Sprite *sprite)
{
if (sprite->data[0] < 40)
{
sprite->data[0]++;
- if (sprite->data[0] == 20 )
- sub_80BB800();
+ if (sprite->data[0] == 20)
+ SetOpenedSecretBaseMetatile();
}
else
{
sprite->data[0] = 0;
- sprite->callback = sub_80C6708;
+ sprite->callback = ShrubEntranceSpriteCallbackEnd;
}
}
-
-void sub_80C6708(struct Sprite *sprite)
+static void ShrubEntranceSpriteCallbackEnd(struct Sprite *sprite)
{
FieldEffectStop(sprite, FLDEFF_SECRET_POWER_SHRUB);
EnableBothScriptContexts();