Testing updating sprite palettes with weather + time.

This commit is contained in:
Ariel Antonitis 2021-04-25 00:56:23 -04:00
parent 37d0e17be4
commit 4a5dbcb52b
3 changed files with 12 additions and 7 deletions

View file

@ -770,8 +770,8 @@ void FieldEffectScript_LoadFadedPalette(u8 **script)
{
struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script);
LoadSpritePalette(palette);
UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag));
UpdateSpritePaletteWithTime(IndexOfSpritePaletteTag(palette->tag)); // Ensure field effects are blended
UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag));
(*script) += 4;
}

View file

@ -152,7 +152,6 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent,
}
paletteNum = LoadSpritePalette(&filteredPalette);
UpdateSpritePaletteWithWeather(paletteNum);
UpdateSpritePaletteWithTime(paletteNum);
}
sprite->oam.paletteNum = paletteNum;
sprite->oam.objMode = 1; // Alpha blending
@ -205,7 +204,6 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
}
paletteNum = LoadSpritePalette(&filteredPalette);
UpdateSpritePaletteWithWeather(paletteNum);
UpdateSpritePaletteWithTime(paletteNum);
}
reflectionSprite->oam.paletteNum = paletteNum;
}

View file

@ -536,8 +536,13 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex)
}
else
{
// No palette blending.
u32 palettes = 0;
u32 mask = 1 << startPalIndex;
u8 i;
CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16));
for (i = 0; i < numPalettes; i++, mask <<= 1)
palettes |= mask;
UpdatePalettesWithTime(palettes);
}
}
@ -825,7 +830,6 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex)
{
u16 paletteIndex = 16 + spritePaletteIndex;
u16 i;
switch (gWeatherPtr->palProcessingState)
{
case WEATHER_PAL_STATE_SCREEN_FADING_IN:
@ -853,7 +857,10 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex)
else
{
paletteIndex *= 16;
BlendPalette(paletteIndex, 16, 12, RGB(28, 31, 28));
// First blend with time
CpuFastCopy(gPlttBufferUnfaded + paletteIndex, gPlttBufferFaded + paletteIndex, 32);
UpdateSpritePaletteWithTime(spritePaletteIndex);
BlendPalettesFine(1 << (spritePaletteIndex + 16), gPlttBufferFaded + paletteIndex, gPlttBufferFaded + paletteIndex, 12, RGB(28, 31, 28));
}
break;
}
@ -876,8 +883,8 @@ static bool8 IsFirstFrameOfWeatherFadeIn(void)
void LoadCustomWeatherSpritePalette(const u16 *palette)
{
LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32);
UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex);
UpdateSpritePaletteWithTime(gWeatherPtr->weatherPicSpritePalIndex);
UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex);
}
static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1)