Merge branch 'pr/3' into FollowingPokemon_Gen1-3
This commit is contained in:
commit
59e91c9b5f
11 files changed
+251
-445
No files matched your search
@@ -70,11 +70,10 @@ struct LockedAnimObjectEvents
|
||||
extern const struct OamData gObjectEventBaseOam_32x8;
|
||||
extern const struct OamData gObjectEventBaseOam_32x32;
|
||||
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
|
||||
extern const u8 gReflectionEffectPaletteMap[];
|
||||
|
||||
extern const u8 *const gBerryTreeObjectEventGraphicsIdTablePointers[];
|
||||
extern const u16 *const gBerryTreeObjectEventGraphicsIdTablePointers[];
|
||||
extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[];
|
||||
extern const u8 *const gBerryTreePaletteSlotTablePointers[];
|
||||
extern const u16 *const gBerryTreePaletteSlotTablePointers[];
|
||||
|
||||
void ResetObjectEvents(void);
|
||||
u8 GetMoveDirectionAnimNum(u8);
|
||||
@@ -191,6 +190,7 @@ void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible)
|
||||
s16 GetFigure8XOffset(s16 idx);
|
||||
s16 GetFigure8YOffset(s16 idx);
|
||||
void CameraObjectReset2(void);
|
||||
void LoadObjectEventPalette(u16 paletteTag);
|
||||
u8 GetObjectEventBerryTreeId(u8 objectEventId);
|
||||
void SetBerryTreeJustPicked(u8 mapId, u8 mapNumber, u8 mapGroup);
|
||||
bool8 IsBerryTreeSparkling(u8, u8, u8);
|
||||
|
||||
@@ -41,5 +41,6 @@ void UpdateBubblesFieldEffect(struct Sprite*);
|
||||
void UpdateSparkleFieldEffect(struct Sprite*);
|
||||
void SetSpriteInvisible(u8 spriteId);
|
||||
void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y);
|
||||
void LoadFieldEffectPalette(u8 fieldEffect);
|
||||
|
||||
#endif //GUARD_FIELD_EFFECT_HELPERS_H
|
||||
+10
-1
@@ -139,6 +139,15 @@ extern struct Weather gWeather;
|
||||
extern struct Weather *const gWeatherPtr;
|
||||
extern const u16 gFogPalette[];
|
||||
|
||||
enum
|
||||
{
|
||||
GAMMA_NONE,
|
||||
GAMMA_NORMAL,
|
||||
GAMMA_ALT,
|
||||
};
|
||||
|
||||
void UpdatePaletteGammaType(u8 index, u8 gammaType);
|
||||
|
||||
// field_weather_effect.c
|
||||
extern const u8 gWeatherFogHorizontalTiles[];
|
||||
|
||||
@@ -152,7 +161,7 @@ void FadeScreen(u8 mode, s8 delay);
|
||||
bool8 IsWeatherNotFadingIn(void);
|
||||
void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex);
|
||||
void ApplyWeatherGammaShiftToPal(u8 paletteIndex);
|
||||
void LoadCustomWeatherSpritePalette(const u16 *palette);
|
||||
void LoadCustomWeatherSpritePalette(const struct SpritePalette *palette);
|
||||
void ResetDroughtWeatherPaletteLoading(void);
|
||||
bool8 LoadDroughtWeatherPalettes(void);
|
||||
void DroughtStateInit(void);
|
||||
|
||||
@@ -30,7 +30,7 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = {
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN,
|
||||
.oam = &gObjectEventBaseOam_8x8,
|
||||
.anims = sAnimTable_Shadow,
|
||||
.images = sPicTable_ShadowSmall,
|
||||
@@ -40,7 +40,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN,
|
||||
.oam = &gObjectEventBaseOam_16x8,
|
||||
.anims = sAnimTable_Shadow,
|
||||
.images = sPicTable_ShadowMedium,
|
||||
@@ -50,7 +50,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN,
|
||||
.oam = &gObjectEventBaseOam_32x8,
|
||||
.anims = sAnimTable_Shadow,
|
||||
.images = sPicTable_ShadowLarge,
|
||||
@@ -60,7 +60,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN,
|
||||
.oam = &gObjectEventBaseOam_64x32,
|
||||
.anims = sAnimTable_Shadow,
|
||||
.images = sPicTable_ShadowExtraLarge,
|
||||
@@ -267,7 +267,7 @@ static const union AnimCmd *const sAnimTable_Arrow[] =
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN,
|
||||
.oam = &gObjectEventBaseOam_16x16,
|
||||
.anims = sAnimTable_Arrow,
|
||||
.images = sPicTable_Arrow,
|
||||
@@ -978,7 +978,7 @@ static const union AnimCmd *const sAnimTable_Sparkle[] =
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Sparkle = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = OBJ_EVENT_PAL_TAG_NPC_2,
|
||||
.oam = &gObjectEventBaseOam_16x16,
|
||||
.anims = sAnimTable_Sparkle,
|
||||
.images = sPicTable_Sparkle,
|
||||
@@ -1022,7 +1022,7 @@ static const union AnimCmd *const sAnimTable_TreeDisguise[] =
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = OBJ_EVENT_PAL_TAG_NPC_3,
|
||||
.oam = &gObjectEventBaseOam_16x32,
|
||||
.anims = sAnimTable_TreeDisguise,
|
||||
.images = sPicTable_TreeDisguise,
|
||||
@@ -1066,7 +1066,7 @@ static const union AnimCmd *const sAnimTable_MountainDisguise[] =
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = OBJ_EVENT_PAL_TAG_NPC_2,
|
||||
.oam = &gObjectEventBaseOam_16x32,
|
||||
.anims = sAnimTable_MountainDisguise,
|
||||
.images = sPicTable_MountainDisguise,
|
||||
@@ -1086,7 +1086,7 @@ static const struct SpriteFrameImage sPicTable_SandDisguisePlaceholder[] = {
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = OBJ_EVENT_PAL_TAG_NPC_1,
|
||||
.oam = &gObjectEventBaseOam_16x32,
|
||||
.anims = sAnimTable_TreeDisguise,
|
||||
.images = sPicTable_SandDisguisePlaceholder,
|
||||
@@ -1111,7 +1111,7 @@ static const union AnimCmd *const sAnimTable_Bird[] =
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN,
|
||||
.oam = &gObjectEventBaseOam_32x32,
|
||||
.anims = sAnimTable_Bird,
|
||||
.images = sPicTable_Bird,
|
||||
|
||||
@@ -10,7 +10,7 @@ static const struct SpriteFrameImage sPicTable_PechaBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_PechaBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Pecha[] = {3, 4, 4, 4, 4};
|
||||
const u16 gBerryTreePaletteTagTable_Pecha[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_KelpsyBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -24,7 +24,7 @@ static const struct SpriteFrameImage sPicTable_KelpsyBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_KelpsyBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Kelpsy[] = {3, 4, 2, 2, 2};
|
||||
const u16 gBerryTreePaletteTagTable_Kelpsy[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_WepearBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -38,7 +38,7 @@ static const struct SpriteFrameImage sPicTable_WepearBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_WepearBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Wepear[] = {3, 4, 2, 2, 2};
|
||||
const u16 gBerryTreePaletteTagTable_Wepear[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_IapapaBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -52,7 +52,7 @@ static const struct SpriteFrameImage sPicTable_IapapaBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_IapapaBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Iapapa[] = {3, 4, 3, 3, 3};
|
||||
const u16 gBerryTreePaletteTagTable_Iapapa[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_CheriBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -66,7 +66,7 @@ static const struct SpriteFrameImage sPicTable_CheriBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_CheriBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Cheri[] = {3, 4, 4, 4, 4};
|
||||
const u16 gBerryTreePaletteTagTable_Cheri[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_FigyBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -80,7 +80,7 @@ static const struct SpriteFrameImage sPicTable_FigyBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_FigyBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Figy[] = {3, 4, 3, 3, 3};
|
||||
const u16 gBerryTreePaletteTagTable_Figy[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_MagoBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -94,7 +94,7 @@ static const struct SpriteFrameImage sPicTable_MagoBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_MagoBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Mago[] = {3, 4, 3, 3, 3};
|
||||
const u16 gBerryTreePaletteTagTable_Mago[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_LumBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -108,7 +108,7 @@ static const struct SpriteFrameImage sPicTable_LumBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_LumBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Lum[] = {3, 4, 4, 4, 4};
|
||||
const u16 gBerryTreePaletteTagTable_Lum[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_RazzBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -122,7 +122,7 @@ static const struct SpriteFrameImage sPicTable_RazzBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_RazzBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Razz[] = {3, 4, 4, 4, 4};
|
||||
const u16 gBerryTreePaletteTagTable_Razz[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_GrepaBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -136,7 +136,7 @@ static const struct SpriteFrameImage sPicTable_GrepaBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_GrepaBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Grepa[] = {3, 4, 3, 3, 3};
|
||||
const u16 gBerryTreePaletteTagTable_Grepa[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_RabutaBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -150,7 +150,7 @@ static const struct SpriteFrameImage sPicTable_RabutaBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_RabutaBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Rabuta[] = {3, 4, 4, 4, 4};
|
||||
const u16 gBerryTreePaletteTagTable_Rabuta[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_NomelBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -164,7 +164,7 @@ static const struct SpriteFrameImage sPicTable_NomelBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_NomelBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Nomel[] = {3, 4, 3, 3, 3};
|
||||
const u16 gBerryTreePaletteTagTable_Nomel[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_LeppaBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -178,7 +178,7 @@ static const struct SpriteFrameImage sPicTable_LeppaBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_LeppaBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Leppa[] = {3, 4, 3, 3, 3};
|
||||
const u16 gBerryTreePaletteTagTable_Leppa[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_LiechiBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -192,7 +192,7 @@ static const struct SpriteFrameImage sPicTable_LiechiBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_LiechiBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Liechi[] = {3, 4, 4, 4, 4};
|
||||
const u16 gBerryTreePaletteTagTable_Liechi[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_HondewBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -206,7 +206,7 @@ static const struct SpriteFrameImage sPicTable_HondewBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_HondewBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Hondew[] = {3, 4, 5, 5, 5};
|
||||
const u16 gBerryTreePaletteTagTable_Hondew[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NPC_4};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_AguavBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -220,7 +220,7 @@ static const struct SpriteFrameImage sPicTable_AguavBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_AguavBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Aguav[] = {3, 4, 4, 4, 4};
|
||||
const u16 gBerryTreePaletteTagTable_Aguav[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_WikiBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -234,7 +234,7 @@ static const struct SpriteFrameImage sPicTable_WikiBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_WikiBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Wiki[] = {3, 4, 3, 3, 3};
|
||||
const u16 gBerryTreePaletteTagTable_Wiki[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_PomegBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -248,7 +248,7 @@ static const struct SpriteFrameImage sPicTable_PomegBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_PomegBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Pomeg[] = {3, 4, 3, 3, 3};
|
||||
const u16 gBerryTreePaletteTagTable_Pomeg[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_RawstBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -262,7 +262,7 @@ static const struct SpriteFrameImage sPicTable_RawstBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_RawstBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Rawst[] = {3, 4, 4, 4, 4};
|
||||
const u16 gBerryTreePaletteTagTable_Rawst[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_SpelonBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -276,7 +276,7 @@ static const struct SpriteFrameImage sPicTable_SpelonBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_SpelonBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Spelon[] = {3, 4, 3, 3, 3};
|
||||
const u16 gBerryTreePaletteTagTable_Spelon[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_ChestoBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -290,7 +290,7 @@ static const struct SpriteFrameImage sPicTable_ChestoBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_ChestoBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Chesto[] = {3, 4, 2, 2, 2};
|
||||
const u16 gBerryTreePaletteTagTable_Chesto[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_OranBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -304,7 +304,7 @@ static const struct SpriteFrameImage sPicTable_OranBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_OranBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Oran[] = {3, 4, 2, 2, 2};
|
||||
const u16 gBerryTreePaletteTagTable_Oran[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_PersimBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -318,7 +318,7 @@ static const struct SpriteFrameImage sPicTable_PersimBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_PersimBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Persim[] = {3, 4, 2, 2, 2};
|
||||
const u16 gBerryTreePaletteTagTable_Persim[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_SitrusBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -332,7 +332,7 @@ static const struct SpriteFrameImage sPicTable_SitrusBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_SitrusBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Sitrus[] = {3, 4, 4, 4, 4};
|
||||
const u16 gBerryTreePaletteTagTable_Sitrus[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_AspearBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -346,7 +346,7 @@ static const struct SpriteFrameImage sPicTable_AspearBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_AspearBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Aspear[] = {3, 4, 3, 3, 3};
|
||||
const u16 gBerryTreePaletteTagTable_Aspear[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_PamtreBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -360,7 +360,7 @@ static const struct SpriteFrameImage sPicTable_PamtreBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_PamtreBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Pamtre[] = {3, 4, 2, 2, 2};
|
||||
const u16 gBerryTreePaletteTagTable_Pamtre[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_CornnBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -374,7 +374,7 @@ static const struct SpriteFrameImage sPicTable_CornnBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_CornnBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Cornn[] = {3, 4, 2, 2, 2};
|
||||
const u16 gBerryTreePaletteTagTable_Cornn[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_LansatBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -388,7 +388,7 @@ static const struct SpriteFrameImage sPicTable_LansatBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_LansatBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Lansat[] = {3, 4, 2, 2, 2};
|
||||
const u16 gBerryTreePaletteTagTable_Lansat[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_DurinBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -402,7 +402,7 @@ static const struct SpriteFrameImage sPicTable_DurinBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_DurinBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Durin[] = {3, 4, 4, 4, 4};
|
||||
const u16 gBerryTreePaletteTagTable_Durin[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_TamatoBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
|
||||
@@ -416,11 +416,11 @@ static const struct SpriteFrameImage sPicTable_TamatoBerryTree[] = {
|
||||
overworld_frame(gObjectEventPic_TamatoBerryTree, 2, 4, 5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Tamato[] = {3, 4, 2, 2, 2};
|
||||
const u16 gBerryTreePaletteTagTable_Tamato[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1};
|
||||
|
||||
const u8 gDeadBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES};
|
||||
const u16 gDeadBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES};
|
||||
|
||||
const u8 gBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES};
|
||||
const u16 gBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES};
|
||||
|
||||
const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = {
|
||||
[ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = sPicTable_CheriBerryTree,
|
||||
@@ -468,53 +468,53 @@ const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = {
|
||||
[ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = sPicTable_DurinBerryTree,
|
||||
};
|
||||
|
||||
const u8 *const gBerryTreePaletteSlotTablePointers[] = {
|
||||
[ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Cheri,
|
||||
[ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Chesto,
|
||||
[ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pecha,
|
||||
[ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Rawst,
|
||||
[ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Aspear,
|
||||
[ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Leppa,
|
||||
[ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Oran,
|
||||
[ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Persim,
|
||||
[ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Lum,
|
||||
[ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Sitrus,
|
||||
[ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Figy,
|
||||
[ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Wiki,
|
||||
[ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Mago,
|
||||
[ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Aguav,
|
||||
[ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Iapapa,
|
||||
[ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Razz,
|
||||
[ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Razz,
|
||||
[ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Mago,
|
||||
[ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Wepear,
|
||||
[ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Iapapa,
|
||||
[ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pomeg,
|
||||
[ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Kelpsy,
|
||||
[ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Wepear,
|
||||
[ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Hondew,
|
||||
[ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Grepa,
|
||||
[ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Tamato,
|
||||
[ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Cornn,
|
||||
[ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pomeg,
|
||||
[ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Rabuta,
|
||||
[ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Nomel,
|
||||
[ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Spelon,
|
||||
[ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pamtre,
|
||||
[ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Rabuta,
|
||||
[ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Durin,
|
||||
[ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Hondew,
|
||||
[ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Liechi,
|
||||
[ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Hondew,
|
||||
[ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Aguav,
|
||||
[ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pomeg,
|
||||
[ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Grepa,
|
||||
[ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Lansat,
|
||||
[ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Cornn,
|
||||
[ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Durin,
|
||||
const u16 *const gBerryTreePaletteTagTablePointers[] = {
|
||||
[ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Cheri,
|
||||
[ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Chesto,
|
||||
[ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Pecha,
|
||||
[ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Rawst,
|
||||
[ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Aspear,
|
||||
[ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Leppa,
|
||||
[ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Oran,
|
||||
[ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Persim,
|
||||
[ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Lum,
|
||||
[ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Sitrus,
|
||||
[ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Figy,
|
||||
[ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Wiki,
|
||||
[ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Mago,
|
||||
[ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Aguav,
|
||||
[ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Iapapa,
|
||||
[ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Razz,
|
||||
[ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Razz,
|
||||
[ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Mago,
|
||||
[ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Wepear,
|
||||
[ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Iapapa,
|
||||
[ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Pomeg,
|
||||
[ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Kelpsy,
|
||||
[ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Wepear,
|
||||
[ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Hondew,
|
||||
[ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Grepa,
|
||||
[ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Tamato,
|
||||
[ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Cornn,
|
||||
[ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Pomeg,
|
||||
[ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Rabuta,
|
||||
[ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Nomel,
|
||||
[ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Spelon,
|
||||
[ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Pamtre,
|
||||
[ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Rabuta,
|
||||
[ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Durin,
|
||||
[ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Hondew,
|
||||
[ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Liechi,
|
||||
[ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Hondew,
|
||||
[ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Aguav,
|
||||
[ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Pomeg,
|
||||
[ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Grepa,
|
||||
[ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Lansat,
|
||||
[ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Cornn,
|
||||
[ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Durin,
|
||||
};
|
||||
|
||||
const u8 *const gBerryTreeObjectEventGraphicsIdTablePointers[] = {
|
||||
const u16 *const gBerryTreeObjectEventGraphicsIdTablePointers[] = {
|
||||
[ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = gBerryTreeObjectEventGraphicsIdTable,
|
||||
[ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = gBerryTreeObjectEventGraphicsIdTable,
|
||||
[ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = gBerryTreeObjectEventGraphicsIdTable,
|
||||
|
||||
+24
-277
@@ -12,6 +12,7 @@
|
||||
#include "field_effect_helpers.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_specials.h"
|
||||
#include "field_weather.h"
|
||||
#include "fieldmap.h"
|
||||
#include "mauville_old_man.h"
|
||||
#include "metatile_behavior.h"
|
||||
@@ -79,8 +80,6 @@ static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprit
|
||||
return 0;\
|
||||
}
|
||||
|
||||
static EWRAM_DATA u8 sCurrentReflectionType = 0;
|
||||
static EWRAM_DATA u16 sCurrentSpecialObjectPaletteTag = 0;
|
||||
static EWRAM_DATA struct LockedAnimObjectEvents *sLockedAnimObjectEvents = {0};
|
||||
|
||||
extern void PlaySE(u16);
|
||||
@@ -143,6 +142,7 @@ static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *);
|
||||
static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **);
|
||||
static void GetObjectEventMovingCameraOffset(s16 *, s16 *);
|
||||
static void LoadObjectEventPalette(u16);
|
||||
static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8);
|
||||
static void RemoveObjectEventIfOutsideView(struct ObjectEvent *);
|
||||
static void SpawnObjectEventOnReturnToField(u8, s16, s16);
|
||||
static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8);
|
||||
@@ -176,8 +176,6 @@ static bool8 AreElevationsCompatible(u8 a, u8 b);
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_PechaBerryTree[];
|
||||
|
||||
const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
|
||||
|
||||
static const struct SpriteTemplate sCameraSpriteTemplate = {
|
||||
.tileTag = 0,
|
||||
.paletteTag = TAG_NONE,
|
||||
@@ -809,13 +807,13 @@ const u8 gInitialMovementTypeFacingDirections[] = {
|
||||
#define OBJ_EVENT_PAL_TAG_CHERISH_BALL 0x1075
|
||||
#define OBJ_EVENT_PAL_TAG_NONE 0x11FF
|
||||
|
||||
#include "data/object_events/object_event_graphics_info_pointers.h"
|
||||
#include "data/field_effects/field_effect_object_template_pointers.h"
|
||||
#include "data/object_events/object_event_pic_tables.h"
|
||||
#include "data/object_events/object_event_anims.h"
|
||||
#include "data/object_events/base_oam.h"
|
||||
#include "data/object_events/object_event_subsprites.h"
|
||||
#include "data/object_events/object_event_graphics_info.h"
|
||||
#include "data/object_events/object_event_graphics_info_pointers.h"
|
||||
|
||||
static const struct SpritePalette sObjectEventSpritePalettes[] = {
|
||||
{gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_NPC_1},
|
||||
@@ -1215,187 +1213,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = {
|
||||
{},
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_Brendan[] = {
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_May[] = {
|
||||
OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_PlayerUnderwater[] = {
|
||||
OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
|
||||
OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
|
||||
OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
|
||||
OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
|
||||
};
|
||||
|
||||
static const struct PairedPalettes sPlayerReflectionPaletteSets[] = {
|
||||
{OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan},
|
||||
{OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May},
|
||||
{OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, sReflectionPaletteTags_PlayerUnderwater},
|
||||
{OBJ_EVENT_PAL_TAG_NONE, NULL},
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_QuintyPlump[] = {
|
||||
OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_Truck[] = {
|
||||
OBJ_EVENT_PAL_TAG_TRUCK,
|
||||
OBJ_EVENT_PAL_TAG_TRUCK,
|
||||
OBJ_EVENT_PAL_TAG_TRUCK,
|
||||
OBJ_EVENT_PAL_TAG_TRUCK,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_VigorothMover[] = {
|
||||
OBJ_EVENT_PAL_TAG_VIGOROTH,
|
||||
OBJ_EVENT_PAL_TAG_VIGOROTH,
|
||||
OBJ_EVENT_PAL_TAG_VIGOROTH,
|
||||
OBJ_EVENT_PAL_TAG_VIGOROTH,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_MovingBox[] = {
|
||||
OBJ_EVENT_PAL_TAG_MOVING_BOX,
|
||||
OBJ_EVENT_PAL_TAG_MOVING_BOX,
|
||||
OBJ_EVENT_PAL_TAG_MOVING_BOX,
|
||||
OBJ_EVENT_PAL_TAG_MOVING_BOX,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_CableCar[] = {
|
||||
OBJ_EVENT_PAL_TAG_CABLE_CAR,
|
||||
OBJ_EVENT_PAL_TAG_CABLE_CAR,
|
||||
OBJ_EVENT_PAL_TAG_CABLE_CAR,
|
||||
OBJ_EVENT_PAL_TAG_CABLE_CAR,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_SSTidal[] = {
|
||||
OBJ_EVENT_PAL_TAG_SSTIDAL,
|
||||
OBJ_EVENT_PAL_TAG_SSTIDAL,
|
||||
OBJ_EVENT_PAL_TAG_SSTIDAL,
|
||||
OBJ_EVENT_PAL_TAG_SSTIDAL,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_SubmarineShadow[] = {
|
||||
OBJ_EVENT_PAL_TAG_SSTIDAL,
|
||||
OBJ_EVENT_PAL_TAG_SSTIDAL,
|
||||
OBJ_EVENT_PAL_TAG_SSTIDAL,
|
||||
OBJ_EVENT_PAL_TAG_SSTIDAL,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_Kyogre[] = {
|
||||
OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_Groudon[] = {
|
||||
OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_Npc3[] = { // Only used by the Route 120 bridge Kecleon
|
||||
OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
|
||||
};
|
||||
|
||||
static const u16 sReflectionPaletteTags_RedLeaf[] = {
|
||||
OBJ_EVENT_PAL_TAG_RED_LEAF,
|
||||
OBJ_EVENT_PAL_TAG_RED_LEAF,
|
||||
OBJ_EVENT_PAL_TAG_RED_LEAF,
|
||||
OBJ_EVENT_PAL_TAG_RED_LEAF,
|
||||
};
|
||||
|
||||
static const struct PairedPalettes sSpecialObjectReflectionPaletteSets[] = {
|
||||
{OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan},
|
||||
{OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May},
|
||||
{OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, sReflectionPaletteTags_QuintyPlump},
|
||||
{OBJ_EVENT_PAL_TAG_TRUCK, sReflectionPaletteTags_Truck},
|
||||
{OBJ_EVENT_PAL_TAG_VIGOROTH, sReflectionPaletteTags_VigorothMover},
|
||||
{OBJ_EVENT_PAL_TAG_MOVING_BOX, sReflectionPaletteTags_MovingBox},
|
||||
{OBJ_EVENT_PAL_TAG_CABLE_CAR, sReflectionPaletteTags_CableCar},
|
||||
{OBJ_EVENT_PAL_TAG_SSTIDAL, sReflectionPaletteTags_SSTidal},
|
||||
{OBJ_EVENT_PAL_TAG_KYOGRE, sReflectionPaletteTags_Kyogre},
|
||||
{OBJ_EVENT_PAL_TAG_GROUDON, sReflectionPaletteTags_Groudon},
|
||||
{OBJ_EVENT_PAL_TAG_NPC_3, sReflectionPaletteTags_Npc3},
|
||||
{OBJ_EVENT_PAL_TAG_SSTIDAL, sReflectionPaletteTags_SubmarineShadow},
|
||||
{OBJ_EVENT_PAL_TAG_RED_LEAF, sReflectionPaletteTags_RedLeaf},
|
||||
{OBJ_EVENT_PAL_TAG_NONE, NULL},
|
||||
};
|
||||
|
||||
static const u16 sObjectPaletteTags0[] = {
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN,
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_1,
|
||||
OBJ_EVENT_PAL_TAG_NPC_2,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3,
|
||||
OBJ_EVENT_PAL_TAG_NPC_4,
|
||||
OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
|
||||
};
|
||||
|
||||
static const u16 sObjectPaletteTags1[] = {
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN,
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_1,
|
||||
OBJ_EVENT_PAL_TAG_NPC_2,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3,
|
||||
OBJ_EVENT_PAL_TAG_NPC_4,
|
||||
OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
|
||||
};
|
||||
|
||||
static const u16 sObjectPaletteTags2[] = {
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN,
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_1,
|
||||
OBJ_EVENT_PAL_TAG_NPC_2,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3,
|
||||
OBJ_EVENT_PAL_TAG_NPC_4,
|
||||
OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
|
||||
};
|
||||
|
||||
static const u16 sObjectPaletteTags3[] = {
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN,
|
||||
OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_1,
|
||||
OBJ_EVENT_PAL_TAG_NPC_2,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3,
|
||||
OBJ_EVENT_PAL_TAG_NPC_4,
|
||||
OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
|
||||
OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
|
||||
};
|
||||
|
||||
static const u16 *const sObjectPaletteTagSets[] = {
|
||||
sObjectPaletteTags0,
|
||||
sObjectPaletteTags1,
|
||||
sObjectPaletteTags2,
|
||||
sObjectPaletteTags3,
|
||||
};
|
||||
|
||||
#include "data/object_events/berry_tree_graphics_tables.h"
|
||||
#include "data/field_effects/field_effect_objects.h"
|
||||
|
||||
@@ -2128,9 +1945,10 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
|
||||
|
||||
objectEvent = &gObjectEvents[objectEventId];
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
|
||||
if (spriteTemplate->paletteTag != 0xffff)
|
||||
if (spriteTemplate->paletteTag != 0xFFFF)
|
||||
{
|
||||
LoadObjectEventPalette(spriteTemplate->paletteTag);
|
||||
UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate->paletteTag), GAMMA_ALT);
|
||||
}
|
||||
|
||||
if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE)
|
||||
@@ -2149,6 +1967,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
|
||||
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
|
||||
sprite->x += 8;
|
||||
sprite->y += 16 + sprite->centerToCornerVecY;
|
||||
sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate->paletteTag);
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->sObjEventId = objectEventId;
|
||||
objectEvent->spriteId = spriteId;
|
||||
@@ -2293,7 +2112,11 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 d
|
||||
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(graphicsId);
|
||||
CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, SpriteCB_VirtualObject, &spriteTemplate, &subspriteTables);
|
||||
*(u16 *)&spriteTemplate.paletteTag = TAG_NONE;
|
||||
if (spriteTemplate.paletteTag != 0xFFFF)
|
||||
{
|
||||
LoadObjectEventPalette(spriteTemplate.paletteTag);
|
||||
UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), GAMMA_ALT);
|
||||
}
|
||||
x += MAP_OFFSET;
|
||||
y += MAP_OFFSET;
|
||||
SetSpritePosToOffsetMapCoords(&x, &y, 8, 16);
|
||||
@@ -2304,18 +2127,10 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 d
|
||||
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
|
||||
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
|
||||
sprite->y += sprite->centerToCornerVecY;
|
||||
sprite->oam.paletteNum = graphicsInfo->paletteSlot;
|
||||
if (sprite->oam.paletteNum >= 16)
|
||||
sprite->oam.paletteNum -= 16;
|
||||
|
||||
sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate.paletteTag);
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->sVirtualObjId = virtualObjId;
|
||||
sprite->sVirtualObjElev = z;
|
||||
if (graphicsInfo->paletteSlot == 10)
|
||||
LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
|
||||
else if (graphicsInfo->paletteSlot >= 16)
|
||||
_PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0);
|
||||
|
||||
sprite->sVirtualObjElev = elevation;
|
||||
if (subspriteTables != NULL)
|
||||
{
|
||||
SetSubspriteTables(sprite, subspriteTables);
|
||||
@@ -2433,10 +2248,10 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y)
|
||||
spriteFrameImage.size = graphicsInfo->size;
|
||||
CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables);
|
||||
spriteTemplate.images = &spriteFrameImage;
|
||||
|
||||
if (spriteTemplate.paletteTag != 0xffff)
|
||||
if (spriteTemplate.paletteTag != 0xFFFF)
|
||||
{
|
||||
LoadObjectEventPalette(spriteTemplate.paletteTag);
|
||||
UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), GAMMA_ALT);
|
||||
}
|
||||
|
||||
i = CreateSprite(&spriteTemplate, 0, 0, 0);
|
||||
@@ -2457,6 +2272,7 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y)
|
||||
if (subspriteTables != NULL)
|
||||
SetSubspriteTables(sprite, subspriteTables);
|
||||
|
||||
sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate.paletteTag);
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->sObjEventId = objectEventId;
|
||||
objectEvent->spriteId = i;
|
||||
@@ -2497,26 +2313,17 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId)
|
||||
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(graphicsId);
|
||||
sprite = &gSprites[objectEvent->spriteId];
|
||||
paletteSlot = graphicsInfo->paletteSlot;
|
||||
if (paletteSlot == 0)
|
||||
if (graphicsInfo->paletteTag != 0xFFFF)
|
||||
{
|
||||
PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
|
||||
}
|
||||
else if (paletteSlot == 10)
|
||||
{
|
||||
LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
|
||||
}
|
||||
else if (paletteSlot >= 16)
|
||||
{
|
||||
paletteSlot -= 16;
|
||||
_PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot);
|
||||
LoadObjectEventPalette(graphicsInfo->paletteTag);
|
||||
UpdatePaletteGammaType(IndexOfSpritePaletteTag(graphicsInfo->paletteTag), GAMMA_ALT);
|
||||
}
|
||||
sprite->oam.shape = graphicsInfo->oam->shape;
|
||||
sprite->oam.size = graphicsInfo->oam->size;
|
||||
sprite->images = graphicsInfo->images;
|
||||
sprite->anims = graphicsInfo->anims;
|
||||
sprite->subspriteTables = graphicsInfo->subspriteTables;
|
||||
sprite->oam.paletteNum = paletteSlot;
|
||||
sprite->oam.paletteNum = IndexOfSpritePaletteTag(graphicsInfo->paletteTag);
|
||||
objectEvent->inanimate = graphicsInfo->inanimate;
|
||||
objectEvent->graphicsId = graphicsId;
|
||||
SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y);
|
||||
@@ -2576,9 +2383,11 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite
|
||||
if (berryId > ITEM_TO_BERRY(LAST_BERRY_INDEX))
|
||||
berryId = 0;
|
||||
|
||||
LoadObjectEventPalette(gBerryTreePaletteTagTablePointers[berryId][berryStage]);
|
||||
ObjectEventSetGraphicsId(objectEvent, gBerryTreeObjectEventGraphicsIdTablePointers[berryId][berryStage]);
|
||||
sprite->images = gBerryTreePicTablePointers[berryId];
|
||||
sprite->oam.paletteNum = gBerryTreePaletteSlotTablePointers[berryId][berryStage];
|
||||
sprite->oam.paletteNum = IndexOfSpritePaletteTag(gBerryTreePaletteTagTablePointers[berryId][berryStage]);
|
||||
UpdatePaletteGammaType(sprite->oam.paletteNum, GAMMA_ALT);
|
||||
StartSpriteAnim(sprite, berryStage);
|
||||
}
|
||||
}
|
||||
@@ -2683,7 +2492,7 @@ void FreeAndReserveObjectSpritePalettes(void)
|
||||
gReservedSpritePaletteCount = 12;
|
||||
}
|
||||
|
||||
static void LoadObjectEventPalette(u16 paletteTag)
|
||||
void LoadObjectEventPalette(u16 paletteTag)
|
||||
{
|
||||
u16 i = FindObjectEventPaletteIndexByTag(paletteTag);
|
||||
|
||||
@@ -2737,37 +2546,6 @@ static u16 FindObjectEventPaletteIndexByTag(u16 tag)
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
PatchObjectPalette(tag, slot);
|
||||
for (i = 0; sPlayerReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
|
||||
{
|
||||
if (sPlayerReflectionPaletteSets[i].tag == tag)
|
||||
{
|
||||
PatchObjectPalette(sPlayerReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
sCurrentSpecialObjectPaletteTag = tag;
|
||||
PatchObjectPalette(tag, slot);
|
||||
for (i = 0; sSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
|
||||
{
|
||||
if (sSpecialObjectReflectionPaletteSets[i].tag == tag)
|
||||
{
|
||||
PatchObjectPalette(sSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void _PatchObjectPalette(u16 tag, u8 slot)
|
||||
{
|
||||
PatchObjectPalette(tag, slot);
|
||||
@@ -3206,37 +2984,6 @@ void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup
|
||||
}
|
||||
}
|
||||
|
||||
void InitObjectEventPalettes(u8 palSlot)
|
||||
{
|
||||
FreeAndReserveObjectSpritePalettes();
|
||||
sCurrentSpecialObjectPaletteTag = OBJ_EVENT_PAL_TAG_NONE;
|
||||
sCurrentReflectionType = palSlot;
|
||||
if (palSlot == 1)
|
||||
{
|
||||
PatchObjectPaletteRange(sObjectPaletteTagSets[sCurrentReflectionType], 0, 6);
|
||||
gReservedSpritePaletteCount = 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
PatchObjectPaletteRange(sObjectPaletteTagSets[sCurrentReflectionType], 0, 10);
|
||||
}
|
||||
}
|
||||
|
||||
u16 GetObjectPaletteTag(u8 palSlot)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
if (palSlot < 10)
|
||||
return sObjectPaletteTagSets[sCurrentReflectionType][palSlot];
|
||||
|
||||
for (i = 0; sSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
|
||||
{
|
||||
if (sSpecialObjectReflectionPaletteSets[i].tag == sCurrentSpecialObjectPaletteTag)
|
||||
return sSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType];
|
||||
}
|
||||
return OBJ_EVENT_PAL_TAG_NONE;
|
||||
}
|
||||
|
||||
movement_type_empty_callback(MovementType_None)
|
||||
movement_type_def(MovementType_WanderAround, gMovementTypeFuncs_WanderAround)
|
||||
|
||||
|
||||
+10
-4
@@ -36,6 +36,7 @@
|
||||
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
|
||||
|
||||
EWRAM_DATA s32 gFieldEffectArguments[8] = {0};
|
||||
EWRAM_DATA u16 gReflectionPaletteBuffer[0x10] = {0};
|
||||
|
||||
// Static type declarations
|
||||
|
||||
@@ -774,6 +775,7 @@ void FieldEffectScript_LoadFadedPalette(u8 **script)
|
||||
{
|
||||
struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script);
|
||||
LoadSpritePalette(palette);
|
||||
UpdatePaletteGammaType(IndexOfSpritePaletteTag(palette->tag), GAMMA_NORMAL);
|
||||
UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag));
|
||||
(*script) += 4;
|
||||
}
|
||||
@@ -3138,10 +3140,13 @@ u8 FldEff_RayquazaSpotlight(void)
|
||||
|
||||
u8 FldEff_NPCFlyOut(void)
|
||||
{
|
||||
u8 spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0x78, 0, 1);
|
||||
struct Sprite *sprite = &gSprites[spriteId];
|
||||
u8 spriteId;
|
||||
struct Sprite *sprite;
|
||||
|
||||
LoadFieldEffectPalette(FLDEFFOBJ_BIRD);
|
||||
spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0x78, 0, 1);
|
||||
sprite = &gSprites[spriteId];
|
||||
|
||||
sprite->oam.paletteNum = 0;
|
||||
sprite->oam.priority = 1;
|
||||
sprite->callback = SpriteCB_NPCFlyOut;
|
||||
sprite->data[1] = gFieldEffectArguments[0];
|
||||
@@ -3321,9 +3326,10 @@ static u8 CreateFlyBirdSprite(void)
|
||||
{
|
||||
u8 spriteId;
|
||||
struct Sprite *sprite;
|
||||
|
||||
LoadFieldEffectPalette(FLDEFFOBJ_BIRD);
|
||||
spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0xff, 0xb4, 0x1);
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->oam.paletteNum = 0;
|
||||
sprite->oam.priority = 1;
|
||||
sprite->callback = SpriteCB_FlyBirdLeaveBall;
|
||||
return spriteId;
|
||||
|
||||
+70
-49
@@ -7,18 +7,18 @@
|
||||
#include "fieldmap.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "palette.h"
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "trig.h"
|
||||
#include "constants/field_effects.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
#define OBJ_EVENT_PAL_TAG_NONE 0x11FF // duplicate of define in event_object_movement.c
|
||||
|
||||
static void UpdateObjectReflectionSprite(struct Sprite *);
|
||||
static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *, u8);
|
||||
static void LoadObjectRegularReflectionPalette(struct ObjectEvent *, u8);
|
||||
static void UpdateGrassFieldEffectSubpriority(struct Sprite *, u8, u8);
|
||||
static void FadeFootprintsTireTracks_Step0(struct Sprite *);
|
||||
static void FadeFootprintsTireTracks_Step1(struct Sprite *);
|
||||
@@ -30,7 +30,12 @@ static void SynchroniseSurfAnim(struct ObjectEvent *, struct Sprite *);
|
||||
static void SynchroniseSurfPosition(struct ObjectEvent *, struct Sprite *);
|
||||
static void UpdateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sprite *);
|
||||
static void SpriteCB_UnderwaterSurfBlob(struct Sprite *);
|
||||
static u32 ShowDisguiseFieldEffect(u8, u8, u8);
|
||||
static u32 ShowDisguiseFieldEffect(u8, u8);
|
||||
static void LoadFieldEffectPalette_(u8 fieldEffect, bool8 updateGammaType);
|
||||
|
||||
void LoadSpecialReflectionPalette(struct Sprite *sprite);
|
||||
|
||||
extern u16 gReflectionPaletteBuffer[];
|
||||
|
||||
// Used by several field effects to determine which of a group it is
|
||||
#define sFldEff data[1]
|
||||
@@ -47,7 +52,6 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo
|
||||
reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 0x98)];
|
||||
reflectionSprite->callback = UpdateObjectReflectionSprite;
|
||||
reflectionSprite->oam.priority = 3;
|
||||
reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum];
|
||||
reflectionSprite->usingSheet = TRUE;
|
||||
reflectionSprite->anims = gDummySpriteAnimTable;
|
||||
StartSpriteAnim(reflectionSprite, 0);
|
||||
@@ -68,6 +72,8 @@ static s16 GetReflectionVerticalOffset(struct ObjectEvent *objectEvent)
|
||||
return GetObjectEventGraphicsInfo(objectEvent->graphicsId)->height - 2;
|
||||
}
|
||||
|
||||
#define OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION 0x1102
|
||||
|
||||
static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *reflectionSprite)
|
||||
{
|
||||
u8 bridgeType;
|
||||
@@ -81,50 +87,46 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct
|
||||
&& ((bridgeType = MetatileBehavior_GetBridgeType(objectEvent->previousMetatileBehavior))
|
||||
|| (bridgeType = MetatileBehavior_GetBridgeType(objectEvent->currentMetatileBehavior))))
|
||||
{
|
||||
// When walking on a bridge high above water (Route 120), the reflection is a solid dark blue color.
|
||||
// This is so the sprite blends in with the dark water metatile underneath the bridge.
|
||||
reflectionSprite->sReflectionVerticalOffset = bridgeReflectionVerticalOffsets[bridgeType - 1];
|
||||
LoadObjectHighBridgeReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum);
|
||||
LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION);
|
||||
reflectionSprite->oam.paletteNum = IndexOfSpritePaletteTag(OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION);
|
||||
UpdatePaletteGammaType(reflectionSprite->oam.paletteNum, GAMMA_NORMAL);
|
||||
UpdateSpritePaletteWithWeather(reflectionSprite->oam.paletteNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadObjectRegularReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum);
|
||||
LoadSpecialReflectionPalette(reflectionSprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteIndex)
|
||||
void LoadSpecialReflectionPalette(struct Sprite *sprite)
|
||||
{
|
||||
const struct ObjectEventGraphicsInfo *graphicsInfo;
|
||||
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
|
||||
if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE)
|
||||
{
|
||||
if (graphicsInfo->paletteSlot == 0)
|
||||
{
|
||||
LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex);
|
||||
}
|
||||
else if (graphicsInfo->paletteSlot == 10)
|
||||
{
|
||||
LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
PatchObjectPalette(GetObjectPaletteTag(paletteIndex), paletteIndex);
|
||||
}
|
||||
UpdateSpritePaletteWithWeather(paletteIndex);
|
||||
}
|
||||
}
|
||||
|
||||
// When walking on a bridge high above water (Route 120), the reflection is a solid dark blue color.
|
||||
// This is so the sprite blends in with the dark water metatile underneath the bridge.
|
||||
static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteNum)
|
||||
{
|
||||
const struct ObjectEventGraphicsInfo *graphicsInfo;
|
||||
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
|
||||
if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE)
|
||||
{
|
||||
PatchObjectPalette(graphicsInfo->reflectionPaletteTag, paletteNum);
|
||||
UpdateSpritePaletteWithWeather(paletteNum);
|
||||
}
|
||||
u32 R, G, B, i;
|
||||
u16 color;
|
||||
u16* pal;
|
||||
struct SpritePalette reflectionPalette;
|
||||
|
||||
CpuCopy16(&gPlttBufferUnfaded[0x100 + sprite->oam.paletteNum * 16], gReflectionPaletteBuffer, 32);
|
||||
pal = gReflectionPaletteBuffer;
|
||||
for (i = 0; i < 16; ++i)
|
||||
{
|
||||
color = pal[i];
|
||||
R = GET_R(color) + 8;
|
||||
G = GET_G(color) + 8;
|
||||
B = GET_B(color) + 16;
|
||||
if (R > 31) R = 31;
|
||||
if (G > 31) G = 31;
|
||||
if (B > 31) B = 31;
|
||||
pal[i] = RGB(R, G, B);
|
||||
}
|
||||
reflectionPalette.data = gReflectionPaletteBuffer;
|
||||
reflectionPalette.tag = GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum) + 0x1000;
|
||||
LoadSpritePalette(&reflectionPalette);
|
||||
sprite->oam.paletteNum = IndexOfSpritePaletteTag(reflectionPalette.tag);
|
||||
UpdatePaletteGammaType(sprite->oam.paletteNum, GAMMA_ALT);
|
||||
UpdateSpritePaletteWithWeather(sprite->oam.paletteNum);
|
||||
}
|
||||
|
||||
static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
|
||||
@@ -140,7 +142,6 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[mainSprite->oam.paletteNum];
|
||||
reflectionSprite->oam.shape = mainSprite->oam.shape;
|
||||
reflectionSprite->oam.size = mainSprite->oam.size;
|
||||
reflectionSprite->oam.matrixNum = mainSprite->oam.matrixNum | ST_OAM_VFLIP;
|
||||
@@ -183,6 +184,7 @@ u8 CreateWarpArrowSprite(void)
|
||||
u8 spriteId;
|
||||
struct Sprite *sprite;
|
||||
|
||||
LoadFieldEffectPalette_(FLDEFFOBJ_ARROW, FALSE);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ARROW], 0, 0, 0x52);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
@@ -241,6 +243,7 @@ u32 FldEff_Shadow(void)
|
||||
|
||||
objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
|
||||
LoadFieldEffectPalette_(sShadowEffectTemplateIds[graphicsInfo->shadowSize], FALSE);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
@@ -495,6 +498,7 @@ u32 FldEff_JumpLongGrass(void)
|
||||
struct Sprite *sprite;
|
||||
|
||||
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
|
||||
LoadFieldEffectPalette(FLDEFFOBJ_SURF_BLOB);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_LONG_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
@@ -1075,7 +1079,6 @@ u32 FldEff_SurfBlob(void)
|
||||
{
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->oam.paletteNum = 0;
|
||||
sprite->tPlayerObjId = gFieldEffectArguments[2];
|
||||
sprite->data[3] = -1;
|
||||
sprite->data[6] = -1;
|
||||
@@ -1352,13 +1355,13 @@ u32 FldEff_BerryTreeGrowthSparkle(void)
|
||||
struct Sprite *sprite;
|
||||
|
||||
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4);
|
||||
LoadFieldEffectPalette(FLDEFFOBJ_SPARKLE);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->oam.priority = gFieldEffectArguments[3];
|
||||
sprite->oam.paletteNum = 5;
|
||||
sprite->data[0] = FLDEFF_BERRY_TREE_GROWTH_SPARKLE;
|
||||
}
|
||||
return 0;
|
||||
@@ -1373,20 +1376,20 @@ u32 FldEff_BerryTreeGrowthSparkle(void)
|
||||
|
||||
u32 ShowTreeDisguiseFieldEffect(void)
|
||||
{
|
||||
return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, FLDEFFOBJ_TREE_DISGUISE, 4);
|
||||
return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, FLDEFFOBJ_TREE_DISGUISE);
|
||||
}
|
||||
|
||||
u32 ShowMountainDisguiseFieldEffect(void)
|
||||
{
|
||||
return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, FLDEFFOBJ_MOUNTAIN_DISGUISE, 3);
|
||||
return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, FLDEFFOBJ_MOUNTAIN_DISGUISE);
|
||||
}
|
||||
|
||||
u32 ShowSandDisguiseFieldEffect(void)
|
||||
{
|
||||
return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, FLDEFFOBJ_SAND_DISGUISE, 2);
|
||||
return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, FLDEFFOBJ_SAND_DISGUISE);
|
||||
}
|
||||
|
||||
static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum)
|
||||
static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx)
|
||||
{
|
||||
u8 spriteId;
|
||||
struct Sprite *sprite;
|
||||
@@ -1396,12 +1399,12 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum)
|
||||
FieldEffectActiveListRemove(fldEff);
|
||||
return MAX_SPRITES;
|
||||
}
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[fldEffObj], 0, 0, 0);
|
||||
LoadFieldEffectPalette(templateIdx);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[templateIdx], 0, 0, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->coordOffsetEnabled ++;
|
||||
sprite->oam.paletteNum = paletteNum;
|
||||
sprite->sFldEff = fldEff;
|
||||
sprite->sLocalId = gFieldEffectArguments[0];
|
||||
sprite->sMapNum = gFieldEffectArguments[1];
|
||||
@@ -1748,6 +1751,24 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 elevatio
|
||||
}
|
||||
}
|
||||
|
||||
static void LoadFieldEffectPalette_(u8 fieldEffect, bool8 updateGammaType)
|
||||
{
|
||||
const struct SpriteTemplate *spriteTemplate;
|
||||
|
||||
spriteTemplate = gFieldEffectObjectTemplatePointers[fieldEffect];
|
||||
if (spriteTemplate->paletteTag != 0xffff)
|
||||
{
|
||||
LoadObjectEventPalette(spriteTemplate->paletteTag);
|
||||
if (updateGammaType)
|
||||
UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate->paletteTag), GAMMA_NORMAL);
|
||||
}
|
||||
}
|
||||
|
||||
void LoadFieldEffectPalette(u8 fieldEffect)
|
||||
{
|
||||
LoadFieldEffectPalette_(fieldEffect, TRUE);
|
||||
}
|
||||
|
||||
// Unused, duplicates of data in event_object_movement.c
|
||||
static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = {
|
||||
1, 2, 2, 2, 2, 2, 2, 2,
|
||||
|
||||
+15
-13
@@ -19,13 +19,6 @@
|
||||
|
||||
#define DROUGHT_COLOR_INDEX(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00))
|
||||
|
||||
enum
|
||||
{
|
||||
GAMMA_NONE,
|
||||
GAMMA_NORMAL,
|
||||
GAMMA_ALT,
|
||||
};
|
||||
|
||||
struct RGBColor
|
||||
{
|
||||
u16 r:5;
|
||||
@@ -116,7 +109,7 @@ void (*const gWeatherPalStateFuncs[])(void) =
|
||||
|
||||
// This table specifies which of the gamma shift tables should be
|
||||
// applied to each of the background and sprite palettes.
|
||||
static const u8 sBasePaletteGammaTypes[32] =
|
||||
EWRAM_DATA u8 sBasePaletteGammaTypes[32] =
|
||||
{
|
||||
// background palettes
|
||||
GAMMA_NORMAL,
|
||||
@@ -160,11 +153,10 @@ void StartWeather(void)
|
||||
{
|
||||
if (!FuncIsActiveTask(Task_WeatherMain))
|
||||
{
|
||||
u8 index = AllocSpritePalette(TAG_WEATHER_START);
|
||||
u8 index = 15;
|
||||
CpuCopy32(gFogPalette, &gPlttBufferUnfaded[0x100 + index * 16], 32);
|
||||
BuildGammaShiftTables();
|
||||
gWeatherPtr->altGammaSpritePalIndex = index;
|
||||
gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(PALTAG_WEATHER_2);
|
||||
gWeatherPtr->rainSpriteCount = 0;
|
||||
gWeatherPtr->curRainSpriteIndex = 0;
|
||||
gWeatherPtr->cloudSpritesCreated = 0;
|
||||
@@ -282,6 +274,10 @@ static void BuildGammaShiftTables(void)
|
||||
u32 v10;
|
||||
u16 v11;
|
||||
s16 dunno;
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i <= 12; i++)
|
||||
sBasePaletteGammaTypes[i] = GAMMA_NORMAL;
|
||||
|
||||
sPaletteGammaTypes = sBasePaletteGammaTypes;
|
||||
for (v0 = 0; v0 <= 1; v0++)
|
||||
@@ -857,10 +853,10 @@ static bool8 IsFirstFrameOfWeatherFadeIn(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void LoadCustomWeatherSpritePalette(const u16 *palette)
|
||||
void LoadCustomWeatherSpritePalette(const struct SpritePalette *palette)
|
||||
{
|
||||
LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32);
|
||||
UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex);
|
||||
LoadSpritePalette(palette);
|
||||
UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag));
|
||||
}
|
||||
|
||||
static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1)
|
||||
@@ -1102,3 +1098,9 @@ void ResetPreservedPalettesInWeather(void)
|
||||
{
|
||||
sPaletteGammaTypes = sBasePaletteGammaTypes;
|
||||
}
|
||||
|
||||
void UpdatePaletteGammaType(u8 index, u8 gammaType)
|
||||
{
|
||||
if (index != 0xFF)
|
||||
sBasePaletteGammaTypes[index + 16] = gammaType;
|
||||
}
|
||||
@@ -31,6 +31,10 @@ const u8 gWeatherAshTiles[] = INCBIN_U8("graphics/weather/ash.4bpp");
|
||||
const u8 gWeatherRainTiles[] = INCBIN_U8("graphics/weather/rain.4bpp");
|
||||
const u8 gWeatherSandstormTiles[] = INCBIN_U8("graphics/weather/sandstorm.4bpp");
|
||||
|
||||
const struct SpritePalette sFogSpritePalette = {gFogPalette, 0x1201};
|
||||
const struct SpritePalette sCloudsSpritePalette = {gCloudsWeatherPalette, 0x1207};
|
||||
const struct SpritePalette sSandstormSpritePalette = {gSandstormWeatherPalette, 0x1204};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// WEATHER_SUNNY_CLOUDS
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -86,7 +90,7 @@ static const union AnimCmd *const sCloudSpriteAnimCmds[] =
|
||||
static const struct SpriteTemplate sCloudSpriteTemplate =
|
||||
{
|
||||
.tileTag = GFXTAG_CLOUD,
|
||||
.paletteTag = PALTAG_WEATHER_2,
|
||||
.paletteTag = 0x1207,
|
||||
.oam = &sCloudSpriteOamData,
|
||||
.anims = sCloudSpriteAnimCmds,
|
||||
.images = NULL,
|
||||
@@ -182,7 +186,7 @@ static void CreateCloudSprites(void)
|
||||
return;
|
||||
|
||||
LoadSpriteSheet(&sCloudSpriteSheet);
|
||||
LoadCustomWeatherSpritePalette(gCloudsWeatherPalette);
|
||||
LoadCustomWeatherSpritePalette(&sCloudsSpritePalette);
|
||||
for (i = 0; i < NUM_CLOUD_SPRITES; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&sCloudSpriteTemplate, 0, 0, 0xFF);
|
||||
@@ -215,7 +219,7 @@ static void DestroyCloudSprites(void)
|
||||
DestroySprite(gWeatherPtr->sprites.s1.cloudSprites[i]);
|
||||
}
|
||||
|
||||
FreeSpriteTilesByTag(GFXTAG_CLOUD);
|
||||
FreeSpriteTilesByTag(0x1207);
|
||||
gWeatherPtr->cloudSpritesCreated = FALSE;
|
||||
}
|
||||
|
||||
@@ -1475,6 +1479,7 @@ static void CreateFogHorizontalSprites(void)
|
||||
sprite->x = (i % 5) * 64 + 32;
|
||||
sprite->y = (i / 5) * 64 + 32;
|
||||
gWeatherPtr->sprites.s2.fogHSprites[i] = sprite;
|
||||
sprite->oam.paletteNum = gWeatherPtr->altGammaSpritePalIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1633,7 +1638,7 @@ static const union AnimCmd *const sAshSpriteAnimCmds[] =
|
||||
static const struct SpriteTemplate sAshSpriteTemplate =
|
||||
{
|
||||
.tileTag = GFXTAG_ASH,
|
||||
.paletteTag = PALTAG_WEATHER,
|
||||
.paletteTag = 0x1201,
|
||||
.oam = &sAshSpriteOamData,
|
||||
.anims = sAshSpriteAnimCmds,
|
||||
.images = NULL,
|
||||
@@ -1654,6 +1659,7 @@ static void CreateAshSprites(void)
|
||||
|
||||
if (!gWeatherPtr->ashSpritesCreated)
|
||||
{
|
||||
LoadCustomWeatherSpritePalette(&sFogSpritePalette);
|
||||
for (i = 0; i < NUM_ASH_SPRITES; i++)
|
||||
{
|
||||
spriteId = CreateSpriteAtEnd(&sAshSpriteTemplate, 0, 0, 0x4E);
|
||||
@@ -1850,7 +1856,7 @@ static const union AnimCmd *const sFogDiagonalSpriteAnimCmds[] =
|
||||
static const struct SpriteTemplate sFogDiagonalSpriteTemplate =
|
||||
{
|
||||
.tileTag = GFXTAG_FOG_D,
|
||||
.paletteTag = PALTAG_WEATHER,
|
||||
.paletteTag = 0x1201,
|
||||
.oam = &sFogDiagonalSpriteOamData,
|
||||
.anims = sFogDiagonalSpriteAnimCmds,
|
||||
.images = NULL,
|
||||
@@ -1872,6 +1878,7 @@ static void CreateFogDiagonalSprites(void)
|
||||
{
|
||||
fogDiagonalSpriteSheet = gFogDiagonalSpriteSheet;
|
||||
LoadSpriteSheet(&fogDiagonalSpriteSheet);
|
||||
LoadCustomWeatherSpritePalette(&sFogSpritePalette);
|
||||
for (i = 0; i < NUM_FOG_DIAGONAL_SPRITES; i++)
|
||||
{
|
||||
spriteId = CreateSpriteAtEnd(&sFogDiagonalSpriteTemplate, 0, (i / 5) * 64, 0xFF);
|
||||
@@ -2097,7 +2104,7 @@ static const union AnimCmd *const sSandstormSpriteAnimCmds[] =
|
||||
static const struct SpriteTemplate sSandstormSpriteTemplate =
|
||||
{
|
||||
.tileTag = GFXTAG_SANDSTORM,
|
||||
.paletteTag = PALTAG_WEATHER_2,
|
||||
.paletteTag = 0x1204,
|
||||
.oam = &sSandstormSpriteOamData,
|
||||
.anims = sSandstormSpriteAnimCmds,
|
||||
.images = NULL,
|
||||
@@ -2130,7 +2137,7 @@ static void CreateSandstormSprites(void)
|
||||
if (!gWeatherPtr->sandstormSpritesCreated)
|
||||
{
|
||||
LoadSpriteSheet(&sSandstormSpriteSheet);
|
||||
LoadCustomWeatherSpritePalette(gSandstormWeatherPalette);
|
||||
LoadCustomWeatherSpritePalette(&sSandstormSpritePalette);
|
||||
for (i = 0; i < NUM_SANDSTORM_SPRITES; i++)
|
||||
{
|
||||
spriteId = CreateSpriteAtEnd(&sSandstormSpriteTemplate, 0, (i / 5) * 64, 1);
|
||||
|
||||
+17
-4
@@ -4,6 +4,7 @@
|
||||
#include "event_object_movement.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_weather.h"
|
||||
#include "pokemon.h"
|
||||
#include "script.h"
|
||||
#include "script_movement.h"
|
||||
@@ -19,6 +20,9 @@
|
||||
#include "constants/field_effects.h"
|
||||
#include "constants/trainer_types.h"
|
||||
|
||||
extern const struct SpritePalette sObjectEventSpritePalettes[];
|
||||
extern const struct SpritePalette gObjectEventPal_Npc1;
|
||||
|
||||
// this file's functions
|
||||
static u8 CheckTrainer(u8 objectEventId);
|
||||
static u8 GetTrainerApproachDistance(struct ObjectEvent *trainerObj);
|
||||
@@ -168,7 +172,7 @@ static const union AnimCmd *const sSpriteAnimTable_Icons[] =
|
||||
static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark =
|
||||
{
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_NONE,
|
||||
.paletteTag = 0x1100, ////LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN)
|
||||
.oam = &sOamData_Icons,
|
||||
.anims = sSpriteAnimTable_Icons,
|
||||
.images = sSpriteImageTable_ExclamationQuestionMark,
|
||||
@@ -695,7 +699,10 @@ void TryPrepareSecondApproachingTrainer(void)
|
||||
|
||||
u8 FldEff_ExclamationMarkIcon(void)
|
||||
{
|
||||
u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x53);
|
||||
u8 spriteId, paletteNum;
|
||||
|
||||
LoadObjectEventPalette(0x1100); //LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN)
|
||||
spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52);
|
||||
|
||||
if (spriteId != MAX_SPRITES)
|
||||
SetIconSpriteData(&gSprites[spriteId], FLDEFF_EXCLAMATION_MARK_ICON, 0);
|
||||
@@ -705,7 +712,10 @@ u8 FldEff_ExclamationMarkIcon(void)
|
||||
|
||||
u8 FldEff_QuestionMarkIcon(void)
|
||||
{
|
||||
u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52);
|
||||
u8 spriteId;
|
||||
|
||||
LoadObjectEventPalette(0x1100); //LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN)
|
||||
spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52);
|
||||
|
||||
if (spriteId != MAX_SPRITES)
|
||||
SetIconSpriteData(&gSprites[spriteId], FLDEFF_QUESTION_MARK_ICON, 1);
|
||||
@@ -715,7 +725,10 @@ u8 FldEff_QuestionMarkIcon(void)
|
||||
|
||||
u8 FldEff_HeartIcon(void)
|
||||
{
|
||||
u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_HeartIcon, 0, 0, 0x52);
|
||||
u8 spriteId;
|
||||
|
||||
LoadSpritePalette(&gObjectEventPal_Npc1);
|
||||
spriteId = CreateSpriteAtEnd(&sSpriteTemplate_HeartIcon, 0, 0, 0x52);
|
||||
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user