Merge branch 'pr/3' into FollowingPokemon_Gen1-3

This commit is contained in:
W1serV1ser committed 2022-07-05 23:58:14 -07:00
commit 59e91c9b5f
11 files changed
+251 -445

No files matched your search

+3 -3
View File
@@ -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);
+1
View File
@@ -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
View File
@@ -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);
+10 -10
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+14 -7
View File
@@ -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
View File
@@ -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)
{