Continue documenting overworld/field effects
This commit is contained in:
@@ -749,7 +749,7 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_Pokeball[] =
|
||||
static const struct SpriteTemplate sSpriteTemplate_Pokeball =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 4105,
|
||||
.paletteTag = FLDEFF_PAL_TAG_9,
|
||||
.oam = &gObjectEventBaseOam_32x32,
|
||||
.anims = sSpriteAnimTable_Pokeball,
|
||||
.images = sSpriteImage_Pokeball,
|
||||
@@ -798,7 +798,7 @@ static const union AnimCmd *const sSpriteAnimTable_UnusedBrendanLass[] =
|
||||
static const struct SpriteTemplate sSpriteTemplate_UnusedBrendan =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 4106,
|
||||
.paletteTag = FLDEFF_PAL_TAG_10,
|
||||
.oam = &sOam_UnusedBrendanLass,
|
||||
.anims = sSpriteAnimTable_UnusedBrendanLass,
|
||||
.images = sImageTable_UnusedBrendan,
|
||||
@@ -809,7 +809,7 @@ static const struct SpriteTemplate sSpriteTemplate_UnusedBrendan =
|
||||
static const struct SpriteTemplate sSpriteTemplate_UnusedLass =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 4106,
|
||||
.paletteTag = FLDEFF_PAL_TAG_10,
|
||||
.oam = &sOam_UnusedBrendanLass,
|
||||
.anims = sSpriteAnimTable_UnusedBrendanLass,
|
||||
.images = sImageTable_UnusedLass,
|
||||
@@ -821,7 +821,7 @@ static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/field_effe
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo10 =
|
||||
{
|
||||
gFieldEffectObjectPalette10, 0x1009
|
||||
gFieldEffectObjectPalette10, FLDEFF_PAL_TAG_9
|
||||
};
|
||||
|
||||
static const u16 sMugshotPal_Sidney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal");
|
||||
@@ -850,7 +850,7 @@ static const u16 *const sPlayerMugshotsPals[GENDER_COUNT] =
|
||||
static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal");
|
||||
static const struct SpritePalette sSpritePalette_UnusedTrainer =
|
||||
{
|
||||
sUnusedTrainerPalette, 0x100A
|
||||
sUnusedTrainerPalette, FLDEFF_PAL_TAG_10
|
||||
};
|
||||
|
||||
static const u16 sBigPokeball_Tilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_map.bin");
|
||||
|
||||
@@ -16,9 +16,9 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_JumpSmallSplash;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_LongGrass;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_JumpLongGrass;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown17;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedGrass;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedGrass2;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown19;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown20;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_WaterSurfacing;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ReflectionDistortion;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Sparkle;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints;
|
||||
@@ -30,8 +30,8 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_SandPile;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_JumpOutOfAsh;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_LavaridgeGymWarp;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_AshPuff;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza;
|
||||
@@ -55,9 +55,9 @@ const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
|
||||
[FLDEFFOBJ_LONG_GRASS] = &gFieldEffectObjectTemplate_LongGrass,
|
||||
[FLDEFFOBJ_JUMP_LONG_GRASS] = &gFieldEffectObjectTemplate_JumpLongGrass,
|
||||
[FLDEFFOBJ_17] = &gFieldEffectObjectTemplate_Unknown17,
|
||||
[FLDEFFOBJ_UNUSED_GRASS] = &gFieldEffectObjectTemplate_UnusedGrass,
|
||||
[FLDEFFOBJ_UNUSED_GRASS_2] = &gFieldEffectObjectTemplate_UnusedGrass2,
|
||||
[FLDEFFOBJ_19] = &gFieldEffectObjectTemplate_Unknown19,
|
||||
[FLDEFFOBJ_20] = &gFieldEffectObjectTemplate_Unknown20,
|
||||
[FLDEFFOBJ_WATER_SURFACING] = &gFieldEffectObjectTemplate_WaterSurfacing,
|
||||
[FLDEFFOBJ_REFLECTION_DISTORTION] = &gFieldEffectObjectTemplate_ReflectionDistortion,
|
||||
[FLDEFFOBJ_SPARKLE] = &gFieldEffectObjectTemplate_Sparkle,
|
||||
[FLDEFFOBJ_DEEP_SAND_FOOTPRINTS] = &gFieldEffectObjectTemplate_DeepSandFootprints,
|
||||
@@ -69,8 +69,8 @@ const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
|
||||
[FLDEFFOBJ_SAND_PILE] = &gFieldEffectObjectTemplate_SandPile,
|
||||
[FLDEFFOBJ_SHORT_GRASS] = &gFieldEffectObjectTemplate_ShortGrass,
|
||||
[FLDEFFOBJ_HOT_SPRINGS_WATER] = &gFieldEffectObjectTemplate_HotSpringsWater,
|
||||
[FLDEFFOBJ_JUMP_OUT_OF_ASH] = &gFieldEffectObjectTemplate_JumpOutOfAsh,
|
||||
[FLDEFFOBJ_LAVARIDGE_GYM_WARP] = &gFieldEffectObjectTemplate_LavaridgeGymWarp,
|
||||
[FLDEFFOBJ_ASH_PUFF] = &gFieldEffectObjectTemplate_AshPuff,
|
||||
[FLDEFFOBJ_ASH_LAUNCH] = &gFieldEffectObjectTemplate_AshLaunch,
|
||||
[FLDEFFOBJ_BUBBLES] = &gFieldEffectObjectTemplate_Bubbles,
|
||||
[FLDEFFOBJ_SMALL_SPARKLE] = &gFieldEffectObjectTemplate_SmallSparkle,
|
||||
[FLDEFFOBJ_RAYQUAZA] = &gFieldEffectObjectTemplate_Rayquaza,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -303,11 +303,11 @@ const u32 gFieldEffectObjectPic_Arrow[] = INCBIN_U32("graphics/field_effects/pic
|
||||
const u16 gFieldEffectObjectPalette0[] = INCBIN_U16("graphics/field_effects/palettes/00.gbapal");
|
||||
const u16 gFieldEffectObjectPalette1[] = INCBIN_U16("graphics/field_effects/palettes/01.gbapal");
|
||||
const u32 gFieldEffectObjectPic_GroundImpactDust[] = INCBIN_U32("graphics/field_effects/pics/ground_impact_dust.4bpp");
|
||||
const u32 gFieldEffectObjectPic_JumpTallGrass[] = INCBIN_U32("graphics/field_effects/pics/bike_hop_tall_grass.4bpp");
|
||||
const u32 gUnusedGrass[] = INCBIN_U32("graphics/field_effects/pics/unused_grass_2.4bpp");
|
||||
const u32 gFieldEffectObjectPic_JumpTallGrass[] = INCBIN_U32("graphics/field_effects/pics/jump_tall_grass.4bpp");
|
||||
const u32 gUnusedGrass3[] = INCBIN_U32("graphics/field_effects/pics/unused_grass_3.4bpp");
|
||||
const u32 gFieldEffectObjectPic_JumpLongGrass[] = INCBIN_U32("graphics/field_effects/pics/unknown_16.4bpp");
|
||||
const u32 gFieldEffectObjectPic_Unknown17[] = INCBIN_U32("graphics/field_effects/pics/unknown_17.4bpp");
|
||||
const u32 gFieldEffectObjectPic_UnusedGrass[] = INCBIN_U32("graphics/field_effects/pics/unused_grass.4bpp");
|
||||
const u32 gFieldEffectObjectPic_UnusedGrass2[] = INCBIN_U32("graphics/field_effects/pics/unused_grass_2.4bpp");
|
||||
const u32 gFieldEffectObjectPic_LongGrass[] = INCBIN_U32("graphics/field_effects/pics/long_grass.4bpp");
|
||||
const u32 gFieldEffectObjectPic_TallGrass[] = INCBIN_U32("graphics/field_effects/pics/tall_grass.4bpp");
|
||||
const u32 gFieldEffectObjectPic_ShortGrass[] = INCBIN_U32("graphics/field_effects/pics/short_grass.4bpp");
|
||||
@@ -316,17 +316,17 @@ const u32 gFieldEffectObjectPic_DeepSandFootprints[] = INCBIN_U32("graphics/fiel
|
||||
const u32 gFieldEffectObjectPic_BikeTireTracks[] = INCBIN_U32("graphics/field_effects/pics/bike_tire_tracks.4bpp");
|
||||
const u32 gFieldEffectObjectPic_Unknown19[] = INCBIN_U32("graphics/field_effects/pics/unknown_19.4bpp");
|
||||
const u32 gFieldEffectObjectPic_SandPile[] = INCBIN_U32("graphics/field_effects/pics/sand_pile.4bpp");
|
||||
const u32 gFieldEffectObjectPic_JumpBigSplash[] = INCBIN_U32("graphics/field_effects/pics/bike_hop_big_splash.4bpp");
|
||||
const u32 gFieldEffectObjectPic_JumpBigSplash[] = INCBIN_U32("graphics/field_effects/pics/jump_big_splash.4bpp");
|
||||
const u32 gFieldEffectObjectPic_Splash[] = INCBIN_U32("graphics/field_effects/pics/splash.4bpp");
|
||||
const u32 gFieldEffectObjectPic_JumpSmallSplash[] = INCBIN_U32("graphics/field_effects/pics/bike_hop_small_splash.4bpp");
|
||||
const u32 gFieldEffectObjectPic_Unknown20[] = INCBIN_U32("graphics/field_effects/pics/unknown_20.4bpp");
|
||||
const u32 gFieldEffectObjectPic_JumpSmallSplash[] = INCBIN_U32("graphics/field_effects/pics/jump_small_splash.4bpp");
|
||||
const u32 gFieldEffectObjectPic_WaterSurfacing[] = INCBIN_U32("graphics/field_effects/pics/water_surfacing.4bpp");
|
||||
const u32 gFieldEffectObjectPic_TreeDisguise[] = INCBIN_U32("graphics/field_effects/pics/tree_disguise.4bpp");
|
||||
const u32 gFieldEffectObjectPic_MountainDisguise[] = INCBIN_U32("graphics/field_effects/pics/mountain_disguise.4bpp");
|
||||
const u32 gFieldEffectObjectPic_SandDisguisePlaceholder[] = INCBIN_U32("graphics/field_effects/pics/sand_disguise_placeholder.4bpp");
|
||||
const u32 gFieldEffectObjectPic_HotSpringsWater[] = INCBIN_U32("graphics/field_effects/pics/hot_springs_water.4bpp");
|
||||
const u16 gFieldEffectObjectPalette2[] = INCBIN_U16("graphics/field_effects/palettes/02.gbapal");
|
||||
const u32 gFieldEffectObjectPic_JumpOutOfAsh[] = INCBIN_U32("graphics/field_effects/pics/jump_out_of_ash.4bpp");
|
||||
const u32 gFieldEffectObjectPic_LavaridgeGymWarp[] = INCBIN_U32("graphics/field_effects/pics/lavaridge_gym_warp.4bpp");
|
||||
const u32 gFieldEffectObjectPic_AshPuff[] = INCBIN_U32("graphics/field_effects/pics/ash_puff.4bpp");
|
||||
const u32 gFieldEffectObjectPic_AshLaunch[] = INCBIN_U32("graphics/field_effects/pics/ash_launch.4bpp");
|
||||
const u32 gFieldEffectObjectPic_Bubbles[] = INCBIN_U32("graphics/field_effects/pics/bubbles.4bpp");
|
||||
const u32 gFieldEffectObjectPic_SmallSparkle[] = INCBIN_U32("graphics/field_effects/pics/small_sparkle.4bpp");
|
||||
const u16 gFieldEffectObjectPalette3[] = INCBIN_U16("graphics/field_effects/palettes/03.gbapal");
|
||||
|
||||
@@ -130,6 +130,8 @@ static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *);
|
||||
static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8);
|
||||
static void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
|
||||
static void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *);
|
||||
static void InitSpriteForFigure8Anim(struct Sprite *sprite);
|
||||
static bool8 AnimateSpriteInFigure8(struct Sprite *sprite);
|
||||
|
||||
const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
|
||||
|
||||
@@ -6864,15 +6866,15 @@ bool8 MovementAction_UnusedAcroActionRight_Step0(struct ObjectEvent *objectEvent
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8095AF0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
void InitFigure8Anim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8097750(sprite);
|
||||
InitSpriteForFigure8Anim(sprite);
|
||||
sprite->animPaused = FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8095B0C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 DoFigure8Anim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8097758(sprite))
|
||||
if (AnimateSpriteInFigure8(sprite))
|
||||
{
|
||||
ShiftStillObjectEventCoords(objectEvent);
|
||||
objectEvent->triggerGroundEffectsOnStop = TRUE;
|
||||
@@ -6884,14 +6886,14 @@ bool8 sub_8095B0C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
|
||||
bool8 MovementAction_Figure8_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8095AF0(objectEvent, sprite);
|
||||
InitFigure8Anim(objectEvent, sprite);
|
||||
sprite->data[2] = 1;
|
||||
return MovementAction_Figure8_Step1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 MovementAction_Figure8_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8095B0C(objectEvent, sprite))
|
||||
if (DoFigure8Anim(objectEvent, sprite))
|
||||
{
|
||||
sprite->data[2] = 2;
|
||||
return TRUE;
|
||||
@@ -8094,26 +8096,26 @@ void GroundEffect_Seaweed(struct ObjectEvent *objEvent, struct Sprite *sprite)
|
||||
}
|
||||
|
||||
static void (*const sGroundEffectFuncs[])(struct ObjectEvent *objEvent, struct Sprite *sprite) = {
|
||||
GroundEffect_SpawnOnTallGrass,
|
||||
GroundEffect_StepOnTallGrass,
|
||||
GroundEffect_SpawnOnLongGrass,
|
||||
GroundEffect_StepOnLongGrass,
|
||||
GroundEffect_WaterReflection,
|
||||
GroundEffect_IceReflection,
|
||||
GroundEffect_FlowingWater,
|
||||
GroundEffect_SandTracks,
|
||||
GroundEffect_DeepSandTracks,
|
||||
GroundEffect_Ripple,
|
||||
GroundEffect_StepOnPuddle,
|
||||
GroundEffect_SandHeap,
|
||||
GroundEffect_JumpOnTallGrass,
|
||||
GroundEffect_JumpOnLongGrass,
|
||||
GroundEffect_JumpOnShallowWater,
|
||||
GroundEffect_JumpOnWater,
|
||||
GroundEffect_JumpLandingDust,
|
||||
GroundEffect_ShortGrass,
|
||||
GroundEffect_HotSprings,
|
||||
GroundEffect_Seaweed
|
||||
GroundEffect_SpawnOnTallGrass, // GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN
|
||||
GroundEffect_StepOnTallGrass, // GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE
|
||||
GroundEffect_SpawnOnLongGrass, // GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN
|
||||
GroundEffect_StepOnLongGrass, // GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE
|
||||
GroundEffect_WaterReflection, // GROUND_EFFECT_FLAG_ICE_REFLECTION
|
||||
GroundEffect_IceReflection, // GROUND_EFFECT_FLAG_REFLECTION
|
||||
GroundEffect_FlowingWater, // GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER
|
||||
GroundEffect_SandTracks, // GROUND_EFFECT_FLAG_SAND
|
||||
GroundEffect_DeepSandTracks, // GROUND_EFFECT_FLAG_DEEP_SAND
|
||||
GroundEffect_Ripple, // GROUND_EFFECT_FLAG_RIPPLES
|
||||
GroundEffect_StepOnPuddle, // GROUND_EFFECT_FLAG_PUDDLE
|
||||
GroundEffect_SandHeap, // GROUND_EFFECT_FLAG_SAND_PILE
|
||||
GroundEffect_JumpOnTallGrass, // GROUND_EFFECT_FLAG_LAND_IN_TALL_GRASS
|
||||
GroundEffect_JumpOnLongGrass, // GROUND_EFFECT_FLAG_LAND_IN_LONG_GRASS
|
||||
GroundEffect_JumpOnShallowWater, // GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER
|
||||
GroundEffect_JumpOnWater, // GROUND_EFFECT_FLAG_LAND_IN_DEEP_WATER
|
||||
GroundEffect_JumpLandingDust, // GROUND_EFFECT_FLAG_LAND_ON_NORMAL_GROUND
|
||||
GroundEffect_ShortGrass, // GROUND_EFFECT_FLAG_SHORT_GRASS
|
||||
GroundEffect_HotSprings, // GROUND_EFFECT_FLAG_HOT_SPRINGS
|
||||
GroundEffect_Seaweed // GROUND_EFFECT_FLAG_SEAWEED
|
||||
};
|
||||
|
||||
static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite *sprite, u32 flags)
|
||||
@@ -8391,7 +8393,7 @@ bool8 sub_80976EC(struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static const s8 gUnknown_0850E772[] = {
|
||||
static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = {
|
||||
1, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 1, 2, 2, 1, 2,
|
||||
2, 1, 2, 2, 1, 2, 1, 1,
|
||||
@@ -8403,7 +8405,7 @@ static const s8 gUnknown_0850E772[] = {
|
||||
0, 1, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
|
||||
static const s8 gUnknown_0850E7BA[] = {
|
||||
static const s8 sFigure8YOffsets[FIGURE_8_LENGTH] = {
|
||||
0, 0, 1, 0, 0, 1, 0, 0,
|
||||
1, 0, 1, 1, 0, 1, 1, 0,
|
||||
1, 1, 0, 1, 1, 0, 1, 1,
|
||||
@@ -8415,57 +8417,57 @@ static const s8 gUnknown_0850E7BA[] = {
|
||||
-1, -1, -1, -1, -1, -1, -1, -2,
|
||||
};
|
||||
|
||||
s16 sub_8097728(s16 a1)
|
||||
s16 GetFigure8YOffset(s16 idx)
|
||||
{
|
||||
return gUnknown_0850E7BA[a1];
|
||||
return sFigure8YOffsets[idx];
|
||||
}
|
||||
|
||||
s16 sub_809773C(s16 a1)
|
||||
s16 GetFigure8XOffset(s16 idx)
|
||||
{
|
||||
return gUnknown_0850E772[a1];
|
||||
return sFigure8XOffsets[idx];
|
||||
}
|
||||
|
||||
void sub_8097750(struct Sprite *sprite)
|
||||
static void InitSpriteForFigure8Anim(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[6] = 0;
|
||||
sprite->data[7] = 0;
|
||||
}
|
||||
|
||||
bool8 sub_8097758(struct Sprite *sprite)
|
||||
static bool8 AnimateSpriteInFigure8(struct Sprite *sprite)
|
||||
{
|
||||
bool8 result = FALSE;
|
||||
bool8 finished = FALSE;
|
||||
|
||||
switch(sprite->data[7])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.x += sub_809773C(sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(sprite->data[6]);
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.x -= sub_809773C(0x47 - sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.x -= sub_809773C(sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(sprite->data[6]);
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos2.x += sub_809773C(0x47 - sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
|
||||
break;
|
||||
case 0:
|
||||
sprite->pos2.x += GetFigure8XOffset(sprite->data[6]);
|
||||
sprite->pos2.y += GetFigure8YOffset(sprite->data[6]);
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.x -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.x -= GetFigure8XOffset(sprite->data[6]);
|
||||
sprite->pos2.y += GetFigure8YOffset(sprite->data[6]);
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos2.x += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
break;
|
||||
}
|
||||
if(++sprite->data[6] == 0x48)
|
||||
if (++sprite->data[6] == FIGURE_8_LENGTH)
|
||||
{
|
||||
sprite->data[6] = 0;
|
||||
sprite->data[7]++;
|
||||
}
|
||||
if(sprite->data[7] == 0x4)
|
||||
if (sprite->data[7] == 4)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
result = TRUE;
|
||||
finished = TRUE;
|
||||
}
|
||||
return result;
|
||||
return finished;
|
||||
}
|
||||
|
||||
static const s8 gUnknown_0850E802[] = {
|
||||
|
||||
2155
src/field_effect.c
2155
src/field_effect.c
File diff suppressed because it is too large
Load Diff
@@ -817,19 +817,19 @@ u32 FldEff_Unknown19(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 FldEff_UnusedGrass(void)
|
||||
u32 FldEff_UnusedGrass2(void)
|
||||
{
|
||||
u8 spriteId;
|
||||
struct Sprite *sprite;
|
||||
|
||||
sub_80930E0((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_GRASS_2], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->oam.priority = gFieldEffectArguments[3];
|
||||
sprite->data[0] = FLDEFF_UNUSED_GRASS;
|
||||
sprite->data[0] = FLDEFF_UNUSED_GRASS_2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -851,19 +851,19 @@ u32 FldEff_Unknown21(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 FldEff_Unknown22(void)
|
||||
u32 FldEff_WaterSurfacing(void)
|
||||
{
|
||||
u8 spriteId;
|
||||
struct Sprite *sprite;
|
||||
|
||||
sub_80930E0((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_20], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_WATER_SURFACING], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->oam.priority = gFieldEffectArguments[3];
|
||||
sprite->data[0] = FLDEFF_UNKNOWN_22;
|
||||
sprite->data[0] = FLDEFF_WATER_SURFACING;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -960,33 +960,34 @@ u32 FldEff_SurfBlob(void)
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
void sub_81555AC(u8 spriteId, u8 value)
|
||||
// States for bobbing up and down while surfing
|
||||
void SetSurfBobState(u8 spriteId, u8 value)
|
||||
{
|
||||
gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF) | (value & 0xF);
|
||||
}
|
||||
|
||||
void sub_81555D8(u8 spriteId, u8 value)
|
||||
void SetSurfBobWhileFlyingOutState(u8 spriteId, u8 value)
|
||||
{
|
||||
gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF0) | ((value & 0xF) << 4);
|
||||
}
|
||||
|
||||
void sub_8155604(u8 spriteId, u8 value, s16 data1)
|
||||
void SetSurfBobWhileFishingState(u8 spriteId, u8 value, s16 data1)
|
||||
{
|
||||
gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF00) | ((value & 0xF) << 8);
|
||||
gSprites[spriteId].data[1] = data1;
|
||||
}
|
||||
|
||||
static u8 sub_8155638(struct Sprite *sprite)
|
||||
static u8 GetSurfBobState(struct Sprite *sprite)
|
||||
{
|
||||
return sprite->data[0] & 0xF;
|
||||
}
|
||||
|
||||
static u8 sub_8155640(struct Sprite *sprite)
|
||||
static u8 GetSurfBobWhileFlyingOutState(struct Sprite *sprite)
|
||||
{
|
||||
return (sprite->data[0] & 0xF0) >> 4;
|
||||
}
|
||||
|
||||
static u8 sub_815564C(struct Sprite *sprite)
|
||||
static u8 GetSurfBobWhileFishingState(struct Sprite *sprite)
|
||||
{
|
||||
return (sprite->data[0] & 0xF00) >> 8;
|
||||
}
|
||||
@@ -1018,7 +1019,7 @@ static void SynchroniseSurfAnim(struct ObjectEvent *objectEvent, struct Sprite *
|
||||
[DIR_NORTHEAST] = 1,
|
||||
};
|
||||
|
||||
if (sub_8155640(sprite) == 0)
|
||||
if (GetSurfBobWhileFlyingOutState(sprite) == 0)
|
||||
StartSpriteAnimIfDifferent(sprite, surfBlobDirectionAnims[objectEvent->movementDirection]);
|
||||
}
|
||||
|
||||
@@ -1049,8 +1050,8 @@ void sub_81556E8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
static void CreateBobbingEffect(struct ObjectEvent *objectEvent, struct Sprite *linkedSprite, struct Sprite *sprite)
|
||||
{
|
||||
u16 unk_085CDC6A[] = {3, 7};
|
||||
u8 v0 = sub_8155638(sprite);
|
||||
if (v0 != 0)
|
||||
u8 bobState = GetSurfBobState(sprite);
|
||||
if (bobState != 0)
|
||||
{
|
||||
if (((u16)(++ sprite->data[4]) & unk_085CDC6A[sprite->data[5]]) == 0)
|
||||
{
|
||||
@@ -1060,9 +1061,9 @@ static void CreateBobbingEffect(struct ObjectEvent *objectEvent, struct Sprite *
|
||||
{
|
||||
sprite->data[3] = -sprite->data[3];
|
||||
}
|
||||
if (v0 != 2)
|
||||
if (bobState != 2)
|
||||
{
|
||||
if (sub_815564C(sprite) == 0)
|
||||
if (GetSurfBobWhileFishingState(sprite) == 0)
|
||||
linkedSprite->pos2.y = sprite->pos2.y;
|
||||
else
|
||||
linkedSprite->pos2.y = sprite->data[1] + sprite->pos2.y;
|
||||
@@ -1358,61 +1359,72 @@ void UpdateSparkleFieldEffect(struct Sprite *sprite)
|
||||
FieldEffectStop(sprite, FLDEFF_SPARKLE);
|
||||
}
|
||||
|
||||
void sub_8155EA0(struct Sprite *sprite)
|
||||
#define sTimer data[0]
|
||||
#define sState data[2]
|
||||
#define sStartY data[4]
|
||||
#define sCounter data[5]
|
||||
#define sAnimCounter data[6]
|
||||
#define sAnimState data[7]
|
||||
|
||||
// Same as InitSpriteForFigure8Anim
|
||||
static void InitRayquazaForFigure8Anim(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[6] = 0;
|
||||
sprite->data[7] = 0;
|
||||
sprite->sAnimCounter = 0;
|
||||
sprite->sAnimState = 0;
|
||||
}
|
||||
|
||||
bool8 sub_8155EA8(struct Sprite *sprite)
|
||||
// Only different from AnimateSpriteInFigure8 by the addition of SetGpuReg to move the spotlight
|
||||
static bool8 AnimateRayquazaInFigure8(struct Sprite *sprite)
|
||||
{
|
||||
bool8 returnBool = FALSE;
|
||||
bool8 finished = FALSE;
|
||||
|
||||
switch (sprite->data[7])
|
||||
switch (sprite->sAnimState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.x += sub_809773C(sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(sprite->data[6]);
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.x -= sub_809773C(0x47 - sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.x -= sub_809773C(sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(sprite->data[6]);
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos2.x += sub_809773C(0x47 - sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
|
||||
break;
|
||||
case 0:
|
||||
sprite->pos2.x += GetFigure8XOffset(sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset(sprite->sAnimCounter);
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.x -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.x -= GetFigure8XOffset(sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset(sprite->sAnimCounter);
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos2.x += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
break;
|
||||
}
|
||||
|
||||
// Update spotlight to sweep left and right with Rayquaza
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, -sprite->pos2.x);
|
||||
if (++sprite->data[6] == 72)
|
||||
|
||||
if (++sprite->sAnimCounter == FIGURE_8_LENGTH)
|
||||
{
|
||||
sprite->data[6] = 0;
|
||||
sprite->data[7]++;
|
||||
sprite->sAnimCounter = 0;
|
||||
sprite->sAnimState++;
|
||||
}
|
||||
if (sprite->data[7] == 4)
|
||||
if (sprite->sAnimState == 4)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
returnBool = TRUE;
|
||||
finished = TRUE;
|
||||
}
|
||||
|
||||
return returnBool;
|
||||
return finished;
|
||||
}
|
||||
|
||||
void sub_8155F80(struct Sprite *sprite)
|
||||
void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
switch (sprite->data[2])
|
||||
switch (sprite->sState)
|
||||
{
|
||||
case 0:
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0x78 - (sprite->data[0] / 3));
|
||||
if (sprite->data[0] == 0x60)
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 120 - (sprite->sTimer / 3));
|
||||
if (sprite->sTimer == 96)
|
||||
{
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
@@ -1422,42 +1434,42 @@ void sub_8155F80(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sprite->data[0] > 0x137)
|
||||
if (sprite->sTimer > 311)
|
||||
{
|
||||
sprite->data[2] = 1;
|
||||
sprite->data[0] = 0;
|
||||
sprite->sState = 1;
|
||||
sprite->sTimer = 0;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos1.y = (gSineTable[sprite->data[0] / 3] >> 2) + sprite->data[4];
|
||||
if (sprite->data[0] == 0xBD)
|
||||
sprite->pos1.y = (gSineTable[sprite->sTimer / 3] >> 2) + sprite->sStartY;
|
||||
if (sprite->sTimer == 189)
|
||||
{
|
||||
sprite->data[2] = 2;
|
||||
sprite->data[5] = 0;
|
||||
sprite->data[0] = 0;
|
||||
sprite->sState = 2;
|
||||
sprite->sCounter = 0;
|
||||
sprite->sTimer = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (sprite->data[0] == 0x3C)
|
||||
if (sprite->sTimer == 60)
|
||||
{
|
||||
sprite->data[5]++;
|
||||
sprite->data[0] = 0;
|
||||
sprite->sCounter++;
|
||||
sprite->sTimer = 0;
|
||||
}
|
||||
if (sprite->data[5] == 7)
|
||||
if (sprite->sCounter == 7)
|
||||
{
|
||||
sprite->data[5] = 0;
|
||||
sprite->data[2] = 3;
|
||||
sprite->sCounter = 0;
|
||||
sprite->sState = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (sprite->pos2.y == 0)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[2]++;
|
||||
sprite->sTimer = 0;
|
||||
sprite->sState++;
|
||||
}
|
||||
if (sprite->data[0] == 5)
|
||||
if (sprite->sTimer == 5)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
sprite->sTimer = 0;
|
||||
if (sprite->pos2.y > 0)
|
||||
sprite->pos2.y--;
|
||||
else
|
||||
@@ -1465,38 +1477,38 @@ void sub_8155F80(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (sprite->data[0] == 0x3C)
|
||||
if (sprite->sTimer == 60)
|
||||
{
|
||||
sprite->data[2] = 5;
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[5] = 0;
|
||||
sprite->sState = 5;
|
||||
sprite->sTimer = 0;
|
||||
sprite->sCounter = 0;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
sub_8155EA0(sprite);
|
||||
sprite->data[2] = 6;
|
||||
sprite->data[0] = 0;
|
||||
InitRayquazaForFigure8Anim(sprite);
|
||||
sprite->sState = 6;
|
||||
sprite->sTimer = 0;
|
||||
break;
|
||||
case 6:
|
||||
if (sub_8155EA8(sprite))
|
||||
if (AnimateRayquazaInFigure8(sprite))
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
if (++sprite->data[5] <= 2)
|
||||
sprite->sTimer = 0;
|
||||
if (++sprite->sCounter <= 2)
|
||||
{
|
||||
sub_8155EA0(sprite);
|
||||
InitRayquazaForFigure8Anim(sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[5] = 0;
|
||||
sprite->data[2] = 7;
|
||||
sprite->sCounter = 0;
|
||||
sprite->sState = 7;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (sprite->data[0] == 0x1E)
|
||||
if (sprite->sTimer == 30)
|
||||
{
|
||||
sprite->data[2] = 8;
|
||||
sprite->data[0] = 0;
|
||||
sprite->sState = 8;
|
||||
sprite->sTimer = 0;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
@@ -1508,11 +1520,11 @@ void sub_8155F80(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||
FieldEffectStop(sprite, FLDEFF_RAYQUAZA);
|
||||
FieldEffectStop(sprite, FLDEFF_RAYQUAZA_SPOTLIGHT);
|
||||
break;
|
||||
}
|
||||
|
||||
if (sprite->data[2] == 1)
|
||||
if (sprite->sState == 1)
|
||||
{
|
||||
if ((sprite->data[1] & 7) == 0)
|
||||
sprite->pos2.y += sprite->data[3];
|
||||
@@ -1521,10 +1533,17 @@ void sub_8155F80(struct Sprite *sprite)
|
||||
sprite->data[1]++;
|
||||
}
|
||||
|
||||
sprite->data[0]++;
|
||||
sprite->sTimer++;
|
||||
}
|
||||
|
||||
void sub_8156194(struct Sprite *sprite)
|
||||
#undef sTimer
|
||||
#undef sState
|
||||
#undef sStartY
|
||||
#undef sCounter
|
||||
#undef sAnimCounter
|
||||
#undef sAnimState
|
||||
|
||||
void UpdateJumpImpactEffect(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->animEnded)
|
||||
{
|
||||
|
||||
@@ -320,7 +320,7 @@ static u8 ObjectEventCB2_NoMovement2(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void player_step(u8 direction, u16 newKeys, u16 heldKeys)
|
||||
void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys)
|
||||
{
|
||||
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
|
||||
@@ -869,7 +869,7 @@ static void PlayerAvatarTransition_Surfing(struct ObjectEvent *objEvent)
|
||||
gFieldEffectArguments[2] = gPlayerAvatar.objectEventId;
|
||||
spriteId = FieldEffectStart(FLDEFF_SURF_BLOB);
|
||||
objEvent->fieldEffectSpriteId = spriteId;
|
||||
sub_81555AC(spriteId, 1);
|
||||
SetSurfBobState(spriteId, 1);
|
||||
}
|
||||
|
||||
static void PlayerAvatarTransition_Underwater(struct ObjectEvent *objEvent)
|
||||
@@ -885,7 +885,7 @@ static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *objEvent)
|
||||
gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_5;
|
||||
}
|
||||
|
||||
void sub_808B578(void)
|
||||
void UpdatePlayerAvatarTransitionState(void)
|
||||
{
|
||||
gPlayerAvatar.tileTransitionState = T_NOT_MOVING;
|
||||
if (PlayerIsAnimActive())
|
||||
@@ -1650,7 +1650,7 @@ static void Task_StopSurfingInit(u8 taskId)
|
||||
if (!ObjectEventClearHeldMovementIfFinished(playerObjEvent))
|
||||
return;
|
||||
}
|
||||
sub_81555AC(playerObjEvent->fieldEffectSpriteId, 2);
|
||||
SetSurfBobState(playerObjEvent->fieldEffectSpriteId, 2);
|
||||
ObjectEventSetHeldMovement(playerObjEvent, GetJumpSpecialMovementAction((u8)gTasks[taskId].data[0]));
|
||||
gTasks[taskId].func = Task_WaitStopSurfing;
|
||||
}
|
||||
@@ -1934,7 +1934,7 @@ static bool8 Fishing11(struct Task *task)
|
||||
ObjectEventSetGraphicsId(playerObjEvent, task->tPlayerGfxId);
|
||||
ObjectEventTurn(playerObjEvent, playerObjEvent->movementDirection);
|
||||
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
|
||||
sub_8155604(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
|
||||
SetSurfBobWhileFishingState(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
|
||||
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
|
||||
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
|
||||
ClearDialogWindowAndFrame(0, TRUE);
|
||||
@@ -1994,7 +1994,7 @@ static bool8 Fishing15(struct Task *task)
|
||||
ObjectEventSetGraphicsId(playerObjEvent, task->tPlayerGfxId);
|
||||
ObjectEventTurn(playerObjEvent, playerObjEvent->movementDirection);
|
||||
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
|
||||
sub_8155604(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
|
||||
SetSurfBobWhileFishingState(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
|
||||
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
|
||||
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
|
||||
task->tStep++;
|
||||
@@ -2053,7 +2053,7 @@ static void AlignFishingAnimationFrames(void)
|
||||
if (animType == 10 || animType == 11)
|
||||
playerSprite->pos2.y = 8;
|
||||
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
|
||||
sub_8155604(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 1, playerSprite->pos2.y);
|
||||
SetSurfBobWhileFishingState(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 1, playerSprite->pos2.y);
|
||||
}
|
||||
|
||||
void sub_808D074(u8 a0)
|
||||
|
||||
@@ -290,7 +290,7 @@ void FieldCB_WarpExitFadeFromWhite(void)
|
||||
|
||||
void FieldCB_WarpExitFadeFromBlack(void)
|
||||
{
|
||||
if (!sub_81D6534()) // sub_81D6534 always returns false
|
||||
if (!OnTrainerHillEReaderChallengeFloor()) // always false
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
FadeInFromBlack();
|
||||
SetUpWarpExitTask();
|
||||
|
||||
@@ -44,7 +44,7 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader);
|
||||
static void LoadSavedMapView(void);
|
||||
static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth, u8 yMode);
|
||||
|
||||
struct MapHeader const *const mapconnection_get_mapheader(struct MapConnection *connection)
|
||||
struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection)
|
||||
{
|
||||
return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum);
|
||||
}
|
||||
@@ -124,7 +124,7 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader)
|
||||
gMapConnectionFlags = sDummyConnectionFlags;
|
||||
for (i = 0; i < count; i++, connection++)
|
||||
{
|
||||
struct MapHeader const *cMap = mapconnection_get_mapheader(connection);
|
||||
struct MapHeader const *cMap = GetMapHeaderFromConnection(connection);
|
||||
u32 offset = connection->offset;
|
||||
switch (connection->direction)
|
||||
{
|
||||
@@ -734,7 +734,7 @@ int CanCameraMoveInDirection(int direction)
|
||||
void sub_80887F8(struct MapConnection *connection, int direction, int x, int y)
|
||||
{
|
||||
struct MapHeader const *mapHeader;
|
||||
mapHeader = mapconnection_get_mapheader(connection);
|
||||
mapHeader = GetMapHeaderFromConnection(connection);
|
||||
switch (direction)
|
||||
{
|
||||
case CONNECTION_EAST:
|
||||
@@ -805,7 +805,7 @@ struct MapConnection *sub_8088950(u8 direction, int x, int y)
|
||||
bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection)
|
||||
{
|
||||
struct MapHeader const *mapHeader;
|
||||
mapHeader = mapconnection_get_mapheader(connection);
|
||||
mapHeader = GetMapHeaderFromConnection(connection);
|
||||
switch (direction)
|
||||
{
|
||||
case CONNECTION_SOUTH:
|
||||
@@ -846,7 +846,7 @@ int sub_8088A38(int x, int width)
|
||||
int sub_8088A4C(struct MapConnection *connection, int x, int y)
|
||||
{
|
||||
struct MapHeader const *mapHeader;
|
||||
mapHeader = mapconnection_get_mapheader(connection);
|
||||
mapHeader = GetMapHeaderFromConnection(connection);
|
||||
switch (connection->direction)
|
||||
{
|
||||
case CONNECTION_SOUTH:
|
||||
@@ -893,7 +893,7 @@ struct MapConnection *GetConnectionAtCoords(s16 x, s16 y)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void sub_8088B3C(u16 x, u16 y)
|
||||
void SetCameraFocusCoords(u16 x, u16 y)
|
||||
{
|
||||
gSaveBlock1Ptr->pos.x = x - 7;
|
||||
gSaveBlock1Ptr->pos.y = y - 7;
|
||||
@@ -905,7 +905,8 @@ void GetCameraFocusCoords(u16 *x, u16 *y)
|
||||
*y = gSaveBlock1Ptr->pos.y + 7;
|
||||
}
|
||||
|
||||
void SetPlayerCoords(u16 x, u16 y)
|
||||
// Unused
|
||||
static void SetCameraCoords(u16 x, u16 y)
|
||||
{
|
||||
gSaveBlock1Ptr->pos.x = x;
|
||||
gSaveBlock1Ptr->pos.y = y;
|
||||
|
||||
@@ -122,12 +122,12 @@ static const struct SpriteFrameImage sSpriteImageTable_CutGrass[] =
|
||||
{gFieldEffectPic_CutGrass, 0x20},
|
||||
};
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo6 = {gFieldEffectObjectPalette6, 0x1000};
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo6 = {gFieldEffectObjectPalette6, FLDEFF_PAL_TAG_0};
|
||||
|
||||
static const struct SpriteTemplate sSpriteTemplate_CutGrass =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0x1000,
|
||||
.paletteTag = FLDEFF_PAL_TAG_0,
|
||||
.oam = &sOamData_CutGrass,
|
||||
.anims = sSpriteAnimTable_CutGrass,
|
||||
.images = sSpriteImageTable_CutGrass,
|
||||
|
||||
@@ -209,7 +209,7 @@ static const struct SpriteFrameImage gUnknown_858E5D8[] =
|
||||
static const struct SpriteTemplate gUnknown_0858E600 =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0x1003,
|
||||
.paletteTag = FLDEFF_PAL_TAG_3,
|
||||
.oam = &gOamData_858E4D8,
|
||||
.anims = gSpriteAnimTable_858E570,
|
||||
.images = gUnknown_858E588,
|
||||
@@ -220,7 +220,7 @@ static const struct SpriteTemplate gUnknown_0858E600 =
|
||||
static const struct SpriteTemplate gUnknown_0858E618 =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0x1008,
|
||||
.paletteTag = FLDEFF_PAL_TAG_8,
|
||||
.oam = &gOamData_858E4D8,
|
||||
.anims = gSpriteAnimTable_858E574,
|
||||
.images = gUnknown_858E5B0,
|
||||
@@ -231,7 +231,7 @@ static const struct SpriteTemplate gUnknown_0858E618 =
|
||||
static const struct SpriteTemplate gUnknown_0858E630 =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0x1008,
|
||||
.paletteTag = FLDEFF_PAL_TAG_8,
|
||||
.oam = &gOamData_858E4D8,
|
||||
.anims = gSpriteAnimTable_858E584,
|
||||
.images = gUnknown_858E5D8,
|
||||
@@ -239,8 +239,8 @@ static const struct SpriteTemplate gUnknown_0858E630 =
|
||||
.callback = ShrubEntranceSpriteCallback1,
|
||||
};
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo7 = {gFieldEffectObjectPalette7, 0x1003};
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo8 = {gFieldEffectObjectPalette8, 0x1008};
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo7 = {gFieldEffectObjectPalette7, FLDEFF_PAL_TAG_3};
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo8 = {gFieldEffectObjectPalette8, FLDEFF_PAL_TAG_8};
|
||||
|
||||
static const struct OamData gOamData_858E658 =
|
||||
{
|
||||
@@ -277,7 +277,7 @@ static const struct SpriteFrameImage gUnknown_0858E674[] =
|
||||
static const struct SpriteTemplate gUnknown_0858E68C =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0x100E,
|
||||
.paletteTag = FLDEFF_PAL_TAG_14,
|
||||
.oam = &gOamData_858E658,
|
||||
.anims = gSpriteAnimTable_858E670,
|
||||
.images = gUnknown_0858E674,
|
||||
@@ -286,7 +286,7 @@ static const struct SpriteTemplate gUnknown_0858E68C =
|
||||
};
|
||||
|
||||
// This uses one of the secret base palettes, so there is no "graphics/field_effects/palettes/09.pal" file.
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo9 = {gTilesetPalettes_SecretBase[5], 0x100E};
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo9 = {gTilesetPalettes_SecretBase[5], FLDEFF_PAL_TAG_14};
|
||||
|
||||
static const u8 gSpriteImage_858E6AC[] = INCBIN_U8("graphics/unknown/858E84C/0.4bpp");
|
||||
static const u8 gSpriteImage_858E72C[] = INCBIN_U8("graphics/unknown/858E84C/1.4bpp");
|
||||
@@ -300,7 +300,7 @@ static const struct SpriteFrameImage gUnknown_0858E84C[] =
|
||||
{gSpriteImage_858E7AC, sizeof(gSpriteImage_858E7AC)},
|
||||
};
|
||||
|
||||
static const struct SpritePalette gUnknown_0858E864 = {gUnknown_0858E82C, 0x1000};
|
||||
static const struct SpritePalette gUnknown_0858E864 = {gUnknown_0858E82C, FLDEFF_PAL_TAG_0};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_858E86C[] =
|
||||
{
|
||||
@@ -318,7 +318,7 @@ static const union AnimCmd *const gSpriteAnimTable_858E87C[] =
|
||||
static const struct SpriteTemplate gUnknown_0858E880 =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0x1000,
|
||||
.paletteTag = FLDEFF_PAL_TAG_0,
|
||||
.oam = &gObjectEventBaseOam_32x8,
|
||||
.anims = gSpriteAnimTable_858E87C,
|
||||
.images = gUnknown_0858E84C,
|
||||
|
||||
@@ -399,7 +399,7 @@ static bool8 IsHiddenItemPresentInConnection(struct MapConnection *connection, i
|
||||
u32 localOffset;
|
||||
s32 localLength;
|
||||
|
||||
struct MapHeader const *const mapHeader = mapconnection_get_mapheader(connection);
|
||||
struct MapHeader const *const mapHeader = GetMapHeaderFromConnection(connection);
|
||||
|
||||
switch (connection->direction)
|
||||
{
|
||||
|
||||
@@ -96,24 +96,24 @@ static void VBlankCB_Field(void);
|
||||
static void SpriteCB_LinkPlayer(struct Sprite *sprite);
|
||||
static void ChooseAmbientCrySpecies(void);
|
||||
static void DoMapLoadLoop(u8 *state);
|
||||
static bool32 LoadMapInStepsLocal(u8 *state, bool32);
|
||||
static bool32 LoadMapInStepsLink(u8 *state);
|
||||
static bool32 ReturnToFieldLocal(u8 *state);
|
||||
static bool32 LoadMapInStepsLocal(u8 *state, bool32);
|
||||
static bool32 ReturnToFieldLink(u8 *state);
|
||||
static void mli4_mapscripts_and_other(void);
|
||||
static void InitObjectEventsLink(void);
|
||||
static void InitObjectEventsLocal(void);
|
||||
static void InitOverworldGraphicsRegisters(void);
|
||||
static u8 GetSpriteForLinkedPlayer(u8);
|
||||
static u16 KeyInterCB_SendNothing(u32 a1);
|
||||
static void sub_80867C8(void);
|
||||
static void ResetMirageTowerAndSaveBlockPtrs(void);
|
||||
static void sub_80867D8(void);
|
||||
static void sub_8086AE4(void);
|
||||
static void sub_80869DC(void);
|
||||
static void sub_8086B14(void);
|
||||
static void OffsetCameraFocusByLinkPlayerId(void);
|
||||
static void SpawnLinkPlayers(void);
|
||||
static void SetCameraToTrackGuestPlayer(void);
|
||||
static void sub_8086988(bool32 arg0);
|
||||
static void ResumeMap(bool32 arg0);
|
||||
static void SetCameraToTrackPlayer(void);
|
||||
static void sub_8086A68(void);
|
||||
static void sub_8086860(void);
|
||||
static void InitViewGraphics(void);
|
||||
static void SetCameraToTrackGuestPlayer_2(void);
|
||||
static void CreateLinkPlayerSprites(void);
|
||||
static void ClearAllPlayerKeys(void);
|
||||
@@ -520,7 +520,7 @@ void Overworld_SetObjEventTemplateMovementType(u8 localId, u8 movementType)
|
||||
}
|
||||
}
|
||||
|
||||
static void mapdata_load_assets_to_gpu_and_full_redraw(void)
|
||||
static void InitMapView(void)
|
||||
{
|
||||
ResetFieldCamera();
|
||||
CopyMapTilesetsToVram(gMapHeader.mapLayout);
|
||||
@@ -939,7 +939,7 @@ static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStr
|
||||
else if (MetatileBehavior_IsEastArrowWarp(metatileBehavior) == TRUE)
|
||||
return DIR_WEST;
|
||||
else if ((playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER && transitionFlags == PLAYER_AVATAR_FLAG_SURFING)
|
||||
|| (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_SURFING && transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER ))
|
||||
|| (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_SURFING && transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER))
|
||||
return playerStruct->direction;
|
||||
else if (MetatileBehavior_IsLadder(metatileBehavior) == TRUE)
|
||||
return playerStruct->direction;
|
||||
@@ -1421,7 +1421,7 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys)
|
||||
{
|
||||
struct FieldInput inputStruct;
|
||||
|
||||
sub_808B578();
|
||||
UpdatePlayerAvatarTransitionState();
|
||||
FieldClearPlayerInput(&inputStruct);
|
||||
FieldGetPlayerInput(&inputStruct, newKeys, heldKeys);
|
||||
if (!ScriptContext2_IsEnabled())
|
||||
@@ -1433,7 +1433,7 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys)
|
||||
}
|
||||
else
|
||||
{
|
||||
player_step(inputStruct.dpadDirection, newKeys, heldKeys);
|
||||
PlayerStep(inputStruct.dpadDirection, newKeys, heldKeys);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1723,12 +1723,12 @@ void CB2_ContinueSavedGame(void)
|
||||
ClearContinueGameWarpStatus();
|
||||
SetWarpDestinationToContinueGameWarp();
|
||||
WarpIntoMap();
|
||||
sub_80EDB44();
|
||||
TryPutTodaysRivalTrainerOnAir();
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80EDB44();
|
||||
TryPutTodaysRivalTrainerOnAir();
|
||||
gFieldCallback = sub_8086204;
|
||||
SetMainCallback1(CB1_Overworld);
|
||||
CB2_ReturnToField();
|
||||
@@ -1797,7 +1797,7 @@ static bool32 LoadMapInStepsLink(u8 *state)
|
||||
InitOverworldBgs();
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
sub_80867C8();
|
||||
ResetMirageTowerAndSaveBlockPtrs();
|
||||
sub_80867D8();
|
||||
(*state)++;
|
||||
break;
|
||||
@@ -1806,13 +1806,13 @@ static bool32 LoadMapInStepsLink(u8 *state)
|
||||
(*state)++;
|
||||
break;
|
||||
case 2:
|
||||
sub_8086988(TRUE);
|
||||
ResumeMap(TRUE);
|
||||
(*state)++;
|
||||
break;
|
||||
case 3:
|
||||
sub_8086AE4();
|
||||
sub_80869DC();
|
||||
sub_8086B14();
|
||||
OffsetCameraFocusByLinkPlayerId();
|
||||
InitObjectEventsLink();
|
||||
SpawnLinkPlayers();
|
||||
SetCameraToTrackGuestPlayer();
|
||||
(*state)++;
|
||||
break;
|
||||
@@ -1878,16 +1878,16 @@ static bool32 LoadMapInStepsLocal(u8 *state, bool32 a2)
|
||||
(*state)++;
|
||||
break;
|
||||
case 1:
|
||||
sub_80867C8();
|
||||
ResetMirageTowerAndSaveBlockPtrs();
|
||||
sub_80867D8();
|
||||
(*state)++;
|
||||
break;
|
||||
case 2:
|
||||
sub_8086988(a2);
|
||||
ResumeMap(a2);
|
||||
(*state)++;
|
||||
break;
|
||||
case 3:
|
||||
mli4_mapscripts_and_other();
|
||||
InitObjectEventsLocal();
|
||||
SetCameraToTrackPlayer();
|
||||
(*state)++;
|
||||
break;
|
||||
@@ -1945,16 +1945,16 @@ static bool32 ReturnToFieldLocal(u8 *state)
|
||||
switch (*state)
|
||||
{
|
||||
case 0:
|
||||
sub_80867C8();
|
||||
ResetMirageTowerAndSaveBlockPtrs();
|
||||
sub_80867D8();
|
||||
sub_8086988(FALSE);
|
||||
ResumeMap(FALSE);
|
||||
sub_8086A68();
|
||||
SetCameraToTrackPlayer();
|
||||
(*state)++;
|
||||
break;
|
||||
case 1:
|
||||
sub_8086860();
|
||||
sub_81D64C0();
|
||||
InitViewGraphics();
|
||||
TryLoadTrainerHillEReaderPalette();
|
||||
(*state)++;
|
||||
break;
|
||||
case 2:
|
||||
@@ -1974,12 +1974,12 @@ static bool32 ReturnToFieldLink(u8 *state)
|
||||
{
|
||||
case 0:
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
sub_80867C8();
|
||||
ResetMirageTowerAndSaveBlockPtrs();
|
||||
sub_80867D8();
|
||||
(*state)++;
|
||||
break;
|
||||
case 1:
|
||||
sub_8086988(TRUE);
|
||||
ResumeMap(TRUE);
|
||||
(*state)++;
|
||||
break;
|
||||
case 2:
|
||||
@@ -2050,7 +2050,7 @@ static void DoMapLoadLoop(u8 *state)
|
||||
while (!LoadMapInStepsLocal(state, FALSE));
|
||||
}
|
||||
|
||||
static void sub_80867C8(void)
|
||||
static void ResetMirageTowerAndSaveBlockPtrs(void)
|
||||
{
|
||||
ClearMirageTowerPulseBlend();
|
||||
MoveSaveBlocks_ResetHeap();
|
||||
@@ -2067,12 +2067,12 @@ static void sub_80867D8(void)
|
||||
LoadOam();
|
||||
}
|
||||
|
||||
static void sub_8086860(void)
|
||||
static void InitViewGraphics(void)
|
||||
{
|
||||
InitCurrentFlashLevelScanlineEffect();
|
||||
InitOverworldGraphicsRegisters();
|
||||
InitTextBoxGfxAndPrinters();
|
||||
mapdata_load_assets_to_gpu_and_full_redraw();
|
||||
InitMapView();
|
||||
}
|
||||
|
||||
static void InitOverworldGraphicsRegisters(void)
|
||||
@@ -2110,7 +2110,7 @@ static void InitOverworldGraphicsRegisters(void)
|
||||
InitFieldMessageBox();
|
||||
}
|
||||
|
||||
static void sub_8086988(bool32 a1)
|
||||
static void ResumeMap(bool32 a1)
|
||||
{
|
||||
ResetTasks();
|
||||
ResetSpriteData();
|
||||
@@ -2133,7 +2133,7 @@ static void sub_8086988(bool32 a1)
|
||||
TryStartMirageTowerPulseBlendEffect();
|
||||
}
|
||||
|
||||
static void sub_80869DC(void)
|
||||
static void InitObjectEventsLink(void)
|
||||
{
|
||||
gTotalCameraPixelOffsetX = 0;
|
||||
gTotalCameraPixelOffsetY = 0;
|
||||
@@ -2142,7 +2142,7 @@ static void sub_80869DC(void)
|
||||
TryRunOnWarpIntoMapScript();
|
||||
}
|
||||
|
||||
static void mli4_mapscripts_and_other(void)
|
||||
static void InitObjectEventsLocal(void)
|
||||
{
|
||||
s16 x, y;
|
||||
struct InitialPlayerAvatarState *player;
|
||||
@@ -2183,17 +2183,17 @@ static void SetCameraToTrackGuestPlayer_2(void)
|
||||
InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId));
|
||||
}
|
||||
|
||||
static void sub_8086AE4(void)
|
||||
static void OffsetCameraFocusByLinkPlayerId(void)
|
||||
{
|
||||
u16 x, y;
|
||||
GetCameraFocusCoords(&x, &y);
|
||||
|
||||
// This is a hack of some kind; it's undone in sub_8086B14, which is called
|
||||
// This is a hack of some kind; it's undone in SpawnLinkPlayers, which is called
|
||||
// soon after this function.
|
||||
sub_8088B3C(x + gLocalLinkPlayerId, y);
|
||||
SetCameraFocusCoords(x + gLocalLinkPlayerId, y);
|
||||
}
|
||||
|
||||
static void sub_8086B14(void)
|
||||
static void SpawnLinkPlayers(void)
|
||||
{
|
||||
u16 i;
|
||||
u16 x, y;
|
||||
|
||||
@@ -64,7 +64,7 @@ static void TrainerHillSetPlayerLost(void);
|
||||
static void TrainerHillGetChallengeStatus(void);
|
||||
static void BufferChallengeTime(void);
|
||||
static void GetAllFloorsUsed(void);
|
||||
static void ClearVarResult(void);
|
||||
static void GetInEReaderMode(void);
|
||||
static void IsTrainerHillChallengeActive(void);
|
||||
static void ShowTrainerHillPostBattleText(void);
|
||||
static void SetAllTrainerFlags(void);
|
||||
@@ -202,7 +202,7 @@ static const u16 *const *const sPrizeListSets[] =
|
||||
sPrizeLists2
|
||||
};
|
||||
|
||||
static const u16 sUnknown_0862A5D4[] = INCBIN_U16("graphics/pokenav/862A5D4.gbapal");
|
||||
static const u16 sEReader_Pal[] = INCBIN_U16("graphics/misc/trainer_hill_ereader.gbapal");
|
||||
static const u8 sRecordWinColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
|
||||
|
||||
static const struct TrHillTag *const sDataPerTag[] =
|
||||
@@ -233,7 +233,7 @@ static void (* const sHillFunctions[])(void) =
|
||||
[TRAINER_HILL_FUNC_GET_CHALLENGE_STATUS] = TrainerHillGetChallengeStatus,
|
||||
[TRAINER_HILL_FUNC_GET_CHALLENGE_TIME] = BufferChallengeTime,
|
||||
[TRAINER_HILL_FUNC_GET_ALL_FLOORS_USED] = GetAllFloorsUsed,
|
||||
[TRAINER_HILL_FUNC_CLEAR_RESULT] = ClearVarResult,
|
||||
[TRAINER_HILL_FUNC_GET_IN_EREADER_MODE] = GetInEReaderMode,
|
||||
[TRAINER_HILL_FUNC_IN_CHALLENGE] = IsTrainerHillChallengeActive,
|
||||
[TRAINER_HILL_FUNC_POST_BATTLE_TEXT] = ShowTrainerHillPostBattleText,
|
||||
[TRAINER_HILL_FUNC_SET_ALL_TRAINER_FLAGS] = SetAllTrainerFlags,
|
||||
@@ -546,10 +546,11 @@ static void GetAllFloorsUsed(void)
|
||||
}
|
||||
|
||||
// May have been dummied. Every time this is called a conditional for var result occurs afterwards
|
||||
static void ClearVarResult(void)
|
||||
// Relation to E-Reader is an assumption, most dummied Trainer Hill code seems to be JP E-Reader mode related
|
||||
static void GetInEReaderMode(void)
|
||||
{
|
||||
SetUpDataStruct();
|
||||
gSpecialVar_Result = 0;
|
||||
gSpecialVar_Result = FALSE;
|
||||
FreeDataStruct();
|
||||
}
|
||||
|
||||
@@ -997,11 +998,11 @@ static void SetAllTrainerFlags(void)
|
||||
gSaveBlock2Ptr->frontier.trainerFlags = 0xFF;
|
||||
}
|
||||
|
||||
// Palette never loaded, sub_81D6534 always FALSE
|
||||
void sub_81D64C0(void)
|
||||
// Palette never loaded, OnTrainerHillEReaderChallengeFloor always FALSE
|
||||
void TryLoadTrainerHillEReaderPalette(void)
|
||||
{
|
||||
if (sub_81D6534() == TRUE)
|
||||
LoadPalette(sUnknown_0862A5D4, 0x70, 0x20);
|
||||
if (OnTrainerHillEReaderChallengeFloor() == TRUE)
|
||||
LoadPalette(sEReader_Pal, 0x70, 0x20);
|
||||
}
|
||||
|
||||
static void GetGameSaved(void)
|
||||
@@ -1020,13 +1021,13 @@ static void ClearGameSaved(void)
|
||||
}
|
||||
|
||||
// Always FALSE
|
||||
bool32 sub_81D6534(void)
|
||||
bool32 OnTrainerHillEReaderChallengeFloor(void)
|
||||
{
|
||||
if (!InTrainerHillChallenge() || GetCurrentTrainerHillMapId() == TRAINER_HILL_ENTRANCE)
|
||||
return FALSE;
|
||||
|
||||
ClearVarResult();
|
||||
if (gSpecialVar_Result == 0)
|
||||
GetInEReaderMode();
|
||||
if (gSpecialVar_Result == FALSE)
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
|
||||
@@ -559,7 +559,7 @@ static bool8 PopOutOfAshHiddenTrainer(u8 taskId, struct Task *task, struct Objec
|
||||
gFieldEffectArguments[1] = trainerObj->currentCoords.y;
|
||||
gFieldEffectArguments[2] = gSprites[trainerObj->spriteId].subpriority - 1;
|
||||
gFieldEffectArguments[3] = 2;
|
||||
task->tOutOfAshSpriteId = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
|
||||
task->tOutOfAshSpriteId = FieldEffectStart(FLDEFF_ASH_PUFF);
|
||||
task->tFuncId++;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -586,7 +586,7 @@ static bool8 JumpInPlaceHiddenTrainer(u8 taskId, struct Task *task, struct Objec
|
||||
|
||||
static bool8 WaitRevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
|
||||
{
|
||||
if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
|
||||
if (!FieldEffectActiveListContains(FLDEFF_ASH_PUFF))
|
||||
task->tFuncId = 3;
|
||||
|
||||
return FALSE;
|
||||
@@ -610,7 +610,7 @@ static void sub_80B44C8(u8 taskId)
|
||||
task->data[7]++;
|
||||
}
|
||||
sTrainerSeeFuncList2[task->data[0]](taskId, task, objEvent);
|
||||
if (task->data[0] == 3 && !FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
|
||||
if (task->data[0] == 3 && !FieldEffectActiveListContains(FLDEFF_ASH_PUFF))
|
||||
{
|
||||
SetTrainerMovementType(objEvent, GetTrainerFacingDirectionMovementType(objEvent->facingDirection));
|
||||
TryOverrideTemplateCoordsForObjectEvent(objEvent, GetTrainerFacingDirectionMovementType(objEvent->facingDirection));
|
||||
|
||||
Reference in New Issue
Block a user