summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/palette.h5
-rw-r--r--src/palette.c33
2 files changed, 26 insertions, 12 deletions
diff --git a/include/palette.h b/include/palette.h
index e24da3e00..84794afc9 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -9,6 +9,11 @@
#define PLTT_BUFFER_SIZE 0x200
#define PLTT_DECOMP_BUFFER_SIZE (PLTT_BUFFER_SIZE * 2)
+#define PALETTE_FADE_STATUS_DELAY 2
+#define PALETTE_FADE_STATUS_ACTIVE 1
+#define PALETTE_FADE_STATUS_DONE 0
+#define PALETTE_FADE_STATUS_LOADING -1
+
enum
{
FAST_FADE_IN_FROM_WHITE,
diff --git a/src/palette.c b/src/palette.c
index be5143876..5d1d6635c 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -115,7 +115,7 @@ u8 UpdatePaletteFade(void)
u8 dummy = 0;
if (sPlttBufferTransferPending)
- return -1;
+ return PALETTE_FADE_STATUS_LOADING;
if (gPaletteFade.mode == NORMAL_FADE)
result = UpdateNormalPaletteFade();
@@ -409,11 +409,11 @@ static u8 UpdateNormalPaletteFade(void)
u16 selectedPalettes;
if (!gPaletteFade.active)
- return 0;
+ return PALETTE_FADE_STATUS_DONE;
if (IsSoftwarePaletteFadeFinishing())
{
- return gPaletteFade.active;
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
}
else
{
@@ -483,7 +483,9 @@ static u8 UpdateNormalPaletteFade(void)
}
}
- return gPaletteFade.active;
+ // gPaletteFade.active cannot change since the last time it was checked. So this
+ // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;`
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
}
}
@@ -578,10 +580,11 @@ static u8 UpdateFastPaletteFade(void)
s8 b;
if (!gPaletteFade.active)
- return 0;
+ return PALETTE_FADE_STATUS_DONE;
if (IsSoftwarePaletteFadeFinishing())
- return gPaletteFade.active;
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
+
if (gPaletteFade.objPaletteToggle)
{
@@ -688,7 +691,9 @@ static u8 UpdateFastPaletteFade(void)
gPaletteFade.objPaletteToggle ^= 1;
if (gPaletteFade.objPaletteToggle)
- return gPaletteFade.active;
+ // gPaletteFade.active cannot change since the last time it was checked. So this
+ // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;`
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
if (gPaletteFade.y - gPaletteFade.deltaY < 0)
gPaletteFade.y = 0;
@@ -714,8 +719,10 @@ static u8 UpdateFastPaletteFade(void)
gPaletteFade.mode = NORMAL_FADE;
gPaletteFade.softwareFadeFinishing = 1;
}
-
- return gPaletteFade.active;
+
+ // gPaletteFade.active cannot change since the last time it was checked. So this
+ // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;`
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
}
void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 shouldResetBlendRegisters)
@@ -739,12 +746,12 @@ void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 should
static u8 UpdateHardwarePaletteFade(void)
{
if (!gPaletteFade.active)
- return 0;
+ return PALETTE_FADE_STATUS_DONE;
if (gPaletteFade.delayCounter < gPaletteFade_delay)
{
gPaletteFade.delayCounter++;
- return 2;
+ return PALETTE_FADE_STATUS_DELAY;
}
gPaletteFade.delayCounter = 0;
@@ -778,7 +785,9 @@ static u8 UpdateHardwarePaletteFade(void)
gPaletteFade.shouldResetBlendRegisters = 0;
}
- return gPaletteFade.active;
+ // gPaletteFade.active cannot change since the last time it was checked. So this
+ // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;`
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
}
static void UpdateBlendRegisters(void)