Refactored BlendSettings storage inside gPaletteFade.
This commit is contained in:
parent
a4680ed572
commit
dbc4cb8293
3 changed files with 15 additions and 30 deletions
|
@ -26,15 +26,19 @@ enum
|
||||||
FAST_FADE_OUT_TO_BLACK,
|
FAST_FADE_OUT_TO_BLACK,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct BlendSettings {
|
||||||
|
u16 blendColor:15;
|
||||||
|
u16 isTint:1;
|
||||||
|
u8 coeff:5;
|
||||||
|
};
|
||||||
|
|
||||||
struct PaletteFadeControl
|
struct PaletteFadeControl
|
||||||
{
|
{
|
||||||
u32 multipurpose1; // This field needs to exist or errors will occur
|
u32 multipurpose1; // This field needs to exist or errors will occur
|
||||||
u16 blendColor1:15;
|
// These three are only used for TOD blending
|
||||||
u16 tint1:1;
|
struct BlendSettings *bld0;
|
||||||
u32 tint0:1;
|
struct BlendSettings *bld1;
|
||||||
u32 coeff0:5;
|
u16 weight:9; // [0, 256], so must be 9 bits
|
||||||
u32 coeff1:5;
|
|
||||||
u32 weight:9;
|
|
||||||
u8 delayCounter:6;
|
u8 delayCounter:6;
|
||||||
u16 y:5; // blend coefficient
|
u16 y:5; // blend coefficient
|
||||||
u16 targetY:5; // target blend coefficient
|
u16 targetY:5; // target blend coefficient
|
||||||
|
@ -52,12 +56,6 @@ struct PaletteFadeControl
|
||||||
u8 deltaY:4; // rate of change of blend coefficient
|
u8 deltaY:4; // rate of change of blend coefficient
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BlendSettings {
|
|
||||||
u16 blendColor:15;
|
|
||||||
u16 isTint:1;
|
|
||||||
u8 coeff:5;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern struct PaletteFadeControl gPaletteFade;
|
extern struct PaletteFadeControl gPaletteFade;
|
||||||
extern u32 gPlttBufferTransferPending;
|
extern u32 gPlttBufferTransferPending;
|
||||||
extern u8 gPaletteDecompressionBuffer[];
|
extern u8 gPaletteDecompressionBuffer[];
|
||||||
|
|
|
@ -1506,7 +1506,7 @@ u8 UpdateTimeOfDay(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 MapHasNaturalLight(u8 mapType) { // Weather a map type is naturally lit/outside
|
static bool8 MapHasNaturalLight(u8 mapType) { // Whether a map type is naturally lit/outside
|
||||||
return mapType == MAP_TYPE_TOWN || mapType == MAP_TYPE_CITY || mapType == MAP_TYPE_ROUTE
|
return mapType == MAP_TYPE_TOWN || mapType == MAP_TYPE_CITY || mapType == MAP_TYPE_ROUTE
|
||||||
|| mapType == MAP_TYPE_OCEAN_ROUTE;
|
|| mapType == MAP_TYPE_OCEAN_ROUTE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -232,12 +232,9 @@ bool8 BeginTimeOfDayPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 ta
|
||||||
gPaletteFade.active = 1;
|
gPaletteFade.active = 1;
|
||||||
gPaletteFade.mode = TIME_OF_DAY_FADE;
|
gPaletteFade.mode = TIME_OF_DAY_FADE;
|
||||||
|
|
||||||
gPaletteFade.blendColor = bld0->blendColor;
|
gPaletteFade.blendColor = 0;
|
||||||
gPaletteFade.coeff0 = bld0->coeff;
|
gPaletteFade.bld0 = bld0;
|
||||||
gPaletteFade.tint0 = bld0->isTint;
|
gPaletteFade.bld1 = bld1;
|
||||||
gPaletteFade.blendColor1 = bld1->blendColor;
|
|
||||||
gPaletteFade.coeff1 = bld1->coeff;
|
|
||||||
gPaletteFade.tint1 = bld1->isTint;
|
|
||||||
gPaletteFade.weight = weight;
|
gPaletteFade.weight = weight;
|
||||||
|
|
||||||
if (startY < targetY)
|
if (startY < targetY)
|
||||||
|
@ -474,8 +471,6 @@ static u8 UpdateTimeOfDayPaletteFade(void)
|
||||||
u16 copyPalettes;
|
u16 copyPalettes;
|
||||||
u16 * src;
|
u16 * src;
|
||||||
u16 * dst;
|
u16 * dst;
|
||||||
struct BlendSettings bld0;
|
|
||||||
struct BlendSettings bld1;
|
|
||||||
|
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
return PALETTE_FADE_STATUS_DONE;
|
return PALETTE_FADE_STATUS_DONE;
|
||||||
|
@ -505,14 +500,6 @@ static u8 UpdateTimeOfDayPaletteFade(void)
|
||||||
paletteOffset = 256;
|
paletteOffset = 256;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract blend settings from palette fade struct TODO: Embed struct within gPaletteFade
|
|
||||||
bld0.blendColor = gPaletteFade.blendColor;
|
|
||||||
bld0.coeff = gPaletteFade.coeff0;
|
|
||||||
bld0.isTint = gPaletteFade.tint0;
|
|
||||||
bld1.blendColor = gPaletteFade.blendColor1;
|
|
||||||
bld1.coeff = gPaletteFade.coeff1;
|
|
||||||
bld1.isTint = gPaletteFade.tint1;
|
|
||||||
|
|
||||||
src = gPlttBufferUnfaded + paletteOffset;
|
src = gPlttBufferUnfaded + paletteOffset;
|
||||||
dst = gPlttBufferFaded + paletteOffset;
|
dst = gPlttBufferFaded + paletteOffset;
|
||||||
|
|
||||||
|
@ -528,7 +515,7 @@ static u8 UpdateTimeOfDayPaletteFade(void)
|
||||||
} else { // tile palettes, don't blend [13, 15]
|
} else { // tile palettes, don't blend [13, 15]
|
||||||
timePalettes = selectedPalettes & 0x1FFF;
|
timePalettes = selectedPalettes & 0x1FFF;
|
||||||
}
|
}
|
||||||
TimeMixPalettes(timePalettes, src, dst, &bld0, &bld1, gPaletteFade.weight);
|
TimeMixPalettes(timePalettes, src, dst, gPaletteFade.bld0, gPaletteFade.bld1, gPaletteFade.weight);
|
||||||
|
|
||||||
// palettes that were not blended above must be copied through
|
// palettes that were not blended above must be copied through
|
||||||
if ((copyPalettes = ~timePalettes)) {
|
if ((copyPalettes = ~timePalettes)) {
|
||||||
|
|
Loading…
Reference in a new issue