Sync palette
This commit is contained in:
+5
-6
@@ -74,11 +74,10 @@ void TintPalette_GrayScale(u16 *palette, u16 count);
|
|||||||
void TintPalette_GrayScale2(u16 *palette, u16 count);
|
void TintPalette_GrayScale2(u16 *palette, u16 count);
|
||||||
void TintPalette_SepiaTone(u16 *palette, u16 count);
|
void TintPalette_SepiaTone(u16 *palette, u16 count);
|
||||||
void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone);
|
void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone);
|
||||||
void sub_80716F8(const u16 *src, u16 *dst, u16 count, u8 a4);
|
void PaletteStruct_ResetById(u16 id);
|
||||||
void sub_80717A8(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7);
|
void CopyPaletteInvertedTint(const u16 *src, u16 *dst, u16 count, u8 tone);
|
||||||
bool32 sub_807185C(u8 var);
|
void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id);
|
||||||
void sub_8071898(void);
|
bool32 IsBlendPalettesGraduallyTaskActive(u8 var);
|
||||||
void PaletteStruct_ResetById(u16 a1);
|
void DestroyBlendPalettesGraduallyTask(void);
|
||||||
void ResetPaletteStruct(u8 paletteNum);
|
|
||||||
|
|
||||||
#endif // GUARD_PALETTE_H
|
#endif // GUARD_PALETTE_H
|
||||||
|
|||||||
+196
-190
@@ -11,46 +11,48 @@ enum
|
|||||||
HARDWARE_FADE,
|
HARDWARE_FADE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// These are structs for some unused palette system.
|
||||||
|
// The full functionality of this system is unknown.
|
||||||
|
|
||||||
#define NUM_PALETTE_STRUCTS 16
|
#define NUM_PALETTE_STRUCTS 16
|
||||||
|
|
||||||
// unused palette struct
|
|
||||||
struct PaletteStructTemplate
|
struct PaletteStructTemplate
|
||||||
{
|
{
|
||||||
u16 uid;
|
u16 id;
|
||||||
u16 *src;
|
u16 *src;
|
||||||
u16 pst_field_8_0:1;
|
bool16 pst_field_8_0:1;
|
||||||
u16 pst_field_8_1:9;
|
u16 unused:9;
|
||||||
u16 size:5;
|
u16 size:5;
|
||||||
u16 pst_field_9_7:1;
|
u8 time1;
|
||||||
u8 pst_field_A;
|
|
||||||
u8 srcCount:5;
|
u8 srcCount:5;
|
||||||
u8 pst_field_B_5:3;
|
u8 state:3;
|
||||||
u8 pst_field_C;
|
u8 time2;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PaletteStruct
|
struct PaletteStruct
|
||||||
{
|
{
|
||||||
const struct PaletteStructTemplate *base;
|
const struct PaletteStructTemplate *template;
|
||||||
u32 ps_field_4_0:1;
|
bool32 active:1;
|
||||||
u16 ps_field_4_1:1;
|
bool32 flag:1;
|
||||||
u32 baseDestOffset:9;
|
u32 baseDestOffset:9;
|
||||||
u16 destOffset:10;
|
u16 destOffset:10;
|
||||||
u16 srcIndex:7;
|
u16 srcIndex:7;
|
||||||
u8 ps_field_8;
|
u8 countdown1;
|
||||||
u8 ps_field_9;
|
u8 countdown2;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void sub_8070790(struct PaletteStruct *, u32 *);
|
static void PaletteStruct_Copy(struct PaletteStruct *, u32 *);
|
||||||
static void sub_80708F4(struct PaletteStruct *, u32 *);
|
static void PaletteStruct_Blend(struct PaletteStruct *, u32 *);
|
||||||
static void sub_80709B4(struct PaletteStruct *);
|
static void PaletteStruct_TryEnd(struct PaletteStruct *);
|
||||||
static u8 GetPaletteNumByUid(u16);
|
static void PaletteStruct_Reset(u8 paletteNum);
|
||||||
|
static u8 PaletteStruct_GetPalNum(u16);
|
||||||
static u8 UpdateNormalPaletteFade(void);
|
static u8 UpdateNormalPaletteFade(void);
|
||||||
static void BeginFastPaletteFadeInternal(u8);
|
static void BeginFastPaletteFadeInternal(u8);
|
||||||
static u8 UpdateFastPaletteFade(void);
|
static u8 UpdateFastPaletteFade(void);
|
||||||
static u8 UpdateHardwarePaletteFade(void);
|
static u8 UpdateHardwarePaletteFade(void);
|
||||||
static void UpdateBlendRegisters(void);
|
static void UpdateBlendRegisters(void);
|
||||||
static bool8 IsSoftwarePaletteFadeFinishing(void);
|
static bool8 IsSoftwarePaletteFadeFinishing(void);
|
||||||
static void sub_80718B8(u8 taskId);
|
static void Task_BlendPalettesGradually(u8 taskId);
|
||||||
|
|
||||||
ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0};
|
ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0};
|
||||||
ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0};
|
ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0};
|
||||||
@@ -59,10 +61,10 @@ EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0};
|
|||||||
static EWRAM_DATA u32 sPlttBufferTransferPending = 0;
|
static EWRAM_DATA u32 sPlttBufferTransferPending = 0;
|
||||||
EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0};
|
EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0};
|
||||||
|
|
||||||
static const struct PaletteStructTemplate gDummyPaletteStructTemplate =
|
static const struct PaletteStructTemplate sDummyPaletteStructTemplate =
|
||||||
{
|
{
|
||||||
.uid = 0xFFFF,
|
.id = 0xFFFF,
|
||||||
.pst_field_B_5 = 1
|
.state = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 sRoundedDownGrayscaleMap[] =
|
static const u8 sRoundedDownGrayscaleMap[] =
|
||||||
@@ -79,20 +81,20 @@ static const u8 sRoundedDownGrayscaleMap[] =
|
|||||||
void LoadCompressedPalette(const u32 *src, u16 offset, u16 size)
|
void LoadCompressedPalette(const u32 *src, u16 offset, u16 size)
|
||||||
{
|
{
|
||||||
LZDecompressWram(src, gPaletteDecompressionBuffer);
|
LZDecompressWram(src, gPaletteDecompressionBuffer);
|
||||||
CpuCopy16(gPaletteDecompressionBuffer, gPlttBufferUnfaded + offset, size);
|
CpuCopy16(gPaletteDecompressionBuffer, &gPlttBufferUnfaded[offset], size);
|
||||||
CpuCopy16(gPaletteDecompressionBuffer, gPlttBufferFaded + offset, size);
|
CpuCopy16(gPaletteDecompressionBuffer, &gPlttBufferFaded[offset], size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadPalette(const void *src, u16 offset, u16 size)
|
void LoadPalette(const void *src, u16 offset, u16 size)
|
||||||
{
|
{
|
||||||
CpuCopy16(src, gPlttBufferUnfaded + offset, size);
|
CpuCopy16(src, &gPlttBufferUnfaded[offset], size);
|
||||||
CpuCopy16(src, gPlttBufferFaded + offset, size);
|
CpuCopy16(src, &gPlttBufferFaded[offset], size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FillPalette(u16 value, u16 offset, u16 size)
|
void FillPalette(u16 value, u16 offset, u16 size)
|
||||||
{
|
{
|
||||||
CpuFill16(value, gPlttBufferUnfaded + offset, size);
|
CpuFill16(value, &gPlttBufferUnfaded[offset], size);
|
||||||
CpuFill16(value, gPlttBufferFaded + offset, size);
|
CpuFill16(value, &gPlttBufferFaded[offset], size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferPlttBuffer(void)
|
void TransferPlttBuffer(void)
|
||||||
@@ -102,7 +104,7 @@ void TransferPlttBuffer(void)
|
|||||||
void *src = gPlttBufferFaded;
|
void *src = gPlttBufferFaded;
|
||||||
void *dest = (void *)PLTT;
|
void *dest = (void *)PLTT;
|
||||||
DmaCopy16(3, src, dest, PLTT_SIZE);
|
DmaCopy16(3, src, dest, PLTT_SIZE);
|
||||||
sPlttBufferTransferPending = 0;
|
sPlttBufferTransferPending = FALSE;
|
||||||
if (gPaletteFade.mode == HARDWARE_FADE && gPaletteFade.active)
|
if (gPaletteFade.mode == HARDWARE_FADE && gPaletteFade.active)
|
||||||
UpdateBlendRegisters();
|
UpdateBlendRegisters();
|
||||||
}
|
}
|
||||||
@@ -129,8 +131,8 @@ void ResetPaletteFade(void)
|
|||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
for (i = 0; i < 16; ++i)
|
for (i = 0; i < NUM_PALETTE_STRUCTS; ++i)
|
||||||
ResetPaletteStruct(i);
|
PaletteStruct_Reset(i);
|
||||||
ResetPaletteFadeControl();
|
ResetPaletteFadeControl();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,7 +181,7 @@ bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targe
|
|||||||
temp = gPaletteFade.bufferTransferDisabled;
|
temp = gPaletteFade.bufferTransferDisabled;
|
||||||
gPaletteFade.bufferTransferDisabled = FALSE;
|
gPaletteFade.bufferTransferDisabled = FALSE;
|
||||||
CpuCopy32(gPlttBufferFaded, (void *)PLTT, PLTT_SIZE);
|
CpuCopy32(gPlttBufferFaded, (void *)PLTT, PLTT_SIZE);
|
||||||
sPlttBufferTransferPending = 0;
|
sPlttBufferTransferPending = FALSE;
|
||||||
if (gPaletteFade.mode == HARDWARE_FADE && gPaletteFade.active)
|
if (gPaletteFade.mode == HARDWARE_FADE && gPaletteFade.active)
|
||||||
UpdateBlendRegisters();
|
UpdateBlendRegisters();
|
||||||
gPaletteFade.bufferTransferDisabled = temp;
|
gPaletteFade.bufferTransferDisabled = temp;
|
||||||
@@ -187,15 +189,15 @@ bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static bool8 sub_80706D0(u32 a1, u8 a2, u8 a3, u8 a4, u16 a5)
|
static bool8 BeginPlttFade(u32 selectedPalettes, u8 delay, u8 startY, u8 targetY, u16 blendColor)
|
||||||
{
|
{
|
||||||
ReadPlttIntoBuffers();
|
ReadPlttIntoBuffers();
|
||||||
return BeginNormalPaletteFade(a1, a2, a3, a4, a5);
|
return BeginNormalPaletteFade(selectedPalettes, delay, startY, targetY, blendColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
// Unused
|
||||||
static void sub_8070718(u8 a1, u32 *a2)
|
static void PaletteStruct_Run(u8 a1, u32 *unkFlags)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
@@ -203,82 +205,80 @@ static void sub_8070718(u8 a1, u32 *a2)
|
|||||||
{
|
{
|
||||||
struct PaletteStruct *palstruct = &sPaletteStructs[i];
|
struct PaletteStruct *palstruct = &sPaletteStructs[i];
|
||||||
|
|
||||||
if (palstruct->ps_field_4_0)
|
if (palstruct->active)
|
||||||
{
|
{
|
||||||
if (palstruct->base->pst_field_8_0 == a1)
|
if (palstruct->template->pst_field_8_0 == a1)
|
||||||
{
|
{
|
||||||
u8 val1 = palstruct->srcIndex;
|
u8 srcIndex = palstruct->srcIndex;
|
||||||
u8 val2 = palstruct->base->srcCount;
|
u8 srcCount = palstruct->template->srcCount;
|
||||||
|
|
||||||
if (val1 == val2)
|
if (srcIndex == srcCount)
|
||||||
{
|
{
|
||||||
sub_80709B4(palstruct);
|
PaletteStruct_TryEnd(palstruct);
|
||||||
if (!palstruct->ps_field_4_0)
|
if (!palstruct->active)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (palstruct->ps_field_8 == 0)
|
if (palstruct->countdown1 == 0)
|
||||||
sub_8070790(palstruct, a2);
|
PaletteStruct_Copy(palstruct, unkFlags);
|
||||||
else
|
else
|
||||||
--palstruct->ps_field_8;
|
palstruct->countdown1--;
|
||||||
sub_80708F4(palstruct, a2);
|
PaletteStruct_Blend(palstruct, unkFlags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
static void PaletteStruct_Copy(struct PaletteStruct *palStruct, u32 *unkFlags)
|
||||||
static void sub_8070790(struct PaletteStruct *a1, u32 *a2)
|
|
||||||
{
|
{
|
||||||
s32 srcIndex;
|
s32 srcIndex;
|
||||||
s32 srcCount;
|
s32 srcCount;
|
||||||
u8 i = 0;
|
u8 i = 0;
|
||||||
u16 srcOffset = a1->srcIndex * a1->base->size;
|
u16 srcOffset = palStruct->srcIndex * palStruct->template->size;
|
||||||
|
|
||||||
if (!a1->base->pst_field_8_0)
|
if (!palStruct->template->pst_field_8_0)
|
||||||
{
|
{
|
||||||
while (i < a1->base->size)
|
while (i < palStruct->template->size)
|
||||||
{
|
{
|
||||||
gPlttBufferUnfaded[a1->destOffset] = a1->base->src[srcOffset];
|
gPlttBufferUnfaded[palStruct->destOffset] = palStruct->template->src[srcOffset];
|
||||||
gPlttBufferFaded[a1->destOffset] = a1->base->src[srcOffset];
|
gPlttBufferFaded[palStruct->destOffset] = palStruct->template->src[srcOffset];
|
||||||
++i;
|
i++;
|
||||||
++a1->destOffset;
|
palStruct->destOffset++;
|
||||||
++srcOffset;
|
srcOffset++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while (i < a1->base->size)
|
while (i < palStruct->template->size)
|
||||||
{
|
{
|
||||||
gPlttBufferFaded[a1->destOffset] = a1->base->src[srcOffset];
|
gPlttBufferFaded[palStruct->destOffset] = palStruct->template->src[srcOffset];
|
||||||
++i;
|
i++;
|
||||||
++a1->destOffset;
|
palStruct->destOffset++;
|
||||||
++srcOffset;
|
srcOffset++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a1->destOffset = a1->baseDestOffset;
|
palStruct->destOffset = palStruct->baseDestOffset;
|
||||||
a1->ps_field_8 = a1->base->pst_field_A;
|
palStruct->countdown1 = palStruct->template->time1;
|
||||||
++a1->srcIndex;
|
palStruct->srcIndex++;
|
||||||
srcIndex = a1->srcIndex;
|
srcIndex = palStruct->srcIndex;
|
||||||
srcCount = a1->base->srcCount;
|
srcCount = palStruct->template->srcCount;
|
||||||
if (srcIndex >= srcCount)
|
if (srcIndex >= srcCount)
|
||||||
{
|
{
|
||||||
if (a1->ps_field_9)
|
if (palStruct->countdown2)
|
||||||
--a1->ps_field_9;
|
palStruct->countdown2--;
|
||||||
a1->srcIndex = 0;
|
palStruct->srcIndex = 0;
|
||||||
}
|
}
|
||||||
*a2 |= 1 << (a1->baseDestOffset >> 4);
|
*unkFlags |= 1 << (palStruct->baseDestOffset >> 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
static void PaletteStruct_Blend(struct PaletteStruct *palStruct, u32 *unkFlags)
|
||||||
static void sub_80708F4(struct PaletteStruct *a1, u32 *a2)
|
|
||||||
{
|
{
|
||||||
if (gPaletteFade.active && ((1 << (a1->baseDestOffset >> 4)) & gPaletteFade_selectedPalettes))
|
if (gPaletteFade.active && ((1 << (palStruct->baseDestOffset >> 4)) & gPaletteFade_selectedPalettes))
|
||||||
{
|
{
|
||||||
if (!a1->base->pst_field_8_0)
|
if (!palStruct->template->pst_field_8_0)
|
||||||
{
|
{
|
||||||
if (gPaletteFade.delayCounter != gPaletteFade_delay)
|
if (gPaletteFade.delayCounter != gPaletteFade_delay)
|
||||||
BlendPalette(a1->baseDestOffset,
|
BlendPalette(palStruct->baseDestOffset,
|
||||||
a1->base->size,
|
palStruct->template->size,
|
||||||
gPaletteFade.y,
|
gPaletteFade.y,
|
||||||
gPaletteFade.blendColor);
|
gPaletteFade.blendColor);
|
||||||
}
|
}
|
||||||
@@ -286,65 +286,64 @@ static void sub_80708F4(struct PaletteStruct *a1, u32 *a2)
|
|||||||
{
|
{
|
||||||
if (!gPaletteFade.delayCounter)
|
if (!gPaletteFade.delayCounter)
|
||||||
{
|
{
|
||||||
if (a1->ps_field_8 != a1->base->pst_field_A)
|
if (palStruct->countdown1 != palStruct->template->time1)
|
||||||
{
|
{
|
||||||
u32 srcOffset = a1->srcIndex * a1->base->size;
|
u32 srcOffset = palStruct->srcIndex * palStruct->template->size;
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
for (i = 0; i < a1->base->size; ++i)
|
for (i = 0; i < palStruct->template->size; i++)
|
||||||
gPlttBufferFaded[a1->baseDestOffset + i] = a1->base->src[srcOffset + i];
|
gPlttBufferFaded[palStruct->baseDestOffset + i] = palStruct->template->src[srcOffset + i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
static void PaletteStruct_TryEnd(struct PaletteStruct *palStruct)
|
||||||
static void sub_80709B4(struct PaletteStruct *a1)
|
|
||||||
{
|
{
|
||||||
if (!a1->ps_field_9)
|
if (!palStruct->countdown2)
|
||||||
{
|
{
|
||||||
s32 val = a1->base->pst_field_B_5;
|
s32 state = palStruct->template->state;
|
||||||
|
|
||||||
if (!val)
|
if (state == 0)
|
||||||
{
|
{
|
||||||
a1->srcIndex = 0;
|
palStruct->srcIndex = 0;
|
||||||
a1->ps_field_8 = a1->base->pst_field_A;
|
palStruct->countdown1 = palStruct->template->time1;
|
||||||
a1->ps_field_9 = a1->base->pst_field_C;
|
palStruct->countdown2 = palStruct->template->time2;
|
||||||
a1->destOffset = a1->baseDestOffset;
|
palStruct->destOffset = palStruct->baseDestOffset;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (val < 0)
|
if (state < 0)
|
||||||
return;
|
return;
|
||||||
if (val > 2)
|
if (state > 2)
|
||||||
return;
|
return;
|
||||||
PaletteStruct_ResetById(a1->base->uid);
|
PaletteStruct_ResetById(palStruct->template->id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
--a1->ps_field_9;
|
palStruct->countdown2--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PaletteStruct_ResetById(u16 a1)
|
void PaletteStruct_ResetById(u16 id)
|
||||||
{
|
{
|
||||||
u8 paletteNum = GetPaletteNumByUid(a1);
|
u8 paletteNum = PaletteStruct_GetPalNum(id);
|
||||||
if (paletteNum != 16)
|
if (paletteNum != NUM_PALETTE_STRUCTS)
|
||||||
ResetPaletteStruct(paletteNum);
|
PaletteStruct_Reset(paletteNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResetPaletteStruct(u8 paletteNum)
|
static void PaletteStruct_Reset(u8 paletteNum)
|
||||||
{
|
{
|
||||||
sPaletteStructs[paletteNum].base = &gDummyPaletteStructTemplate;
|
sPaletteStructs[paletteNum].template = &sDummyPaletteStructTemplate;
|
||||||
sPaletteStructs[paletteNum].ps_field_4_0 = 0;
|
sPaletteStructs[paletteNum].active = FALSE;
|
||||||
sPaletteStructs[paletteNum].baseDestOffset = 0;
|
sPaletteStructs[paletteNum].baseDestOffset = 0;
|
||||||
sPaletteStructs[paletteNum].destOffset = 0;
|
sPaletteStructs[paletteNum].destOffset = 0;
|
||||||
sPaletteStructs[paletteNum].srcIndex = 0;
|
sPaletteStructs[paletteNum].srcIndex = 0;
|
||||||
sPaletteStructs[paletteNum].ps_field_4_1 = 0;
|
sPaletteStructs[paletteNum].flag = FALSE;
|
||||||
sPaletteStructs[paletteNum].ps_field_8 = 0;
|
sPaletteStructs[paletteNum].countdown1 = 0;
|
||||||
sPaletteStructs[paletteNum].ps_field_9 = 0;
|
sPaletteStructs[paletteNum].countdown2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResetPaletteFadeControl(void)
|
void ResetPaletteFadeControl(void)
|
||||||
@@ -367,31 +366,28 @@ void ResetPaletteFadeControl(void)
|
|||||||
gPaletteFade.deltaY = 2;
|
gPaletteFade.deltaY = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
static void PaletteStruct_SetUnusedFlag(u16 id)
|
||||||
static void sub_8070AFC(u16 uid)
|
|
||||||
{
|
{
|
||||||
u8 paletteNum = GetPaletteNumByUid(uid);
|
u8 paletteNum = PaletteStruct_GetPalNum(id);
|
||||||
if (paletteNum != 16)
|
if (paletteNum != NUM_PALETTE_STRUCTS)
|
||||||
sPaletteStructs[paletteNum].ps_field_4_1 = 1;
|
sPaletteStructs[paletteNum].flag = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
static void PaletteStruct_ClearUnusedFlag(u16 id)
|
||||||
static void sub_8070B28(u16 uid)
|
|
||||||
{
|
{
|
||||||
u8 paletteNum = GetPaletteNumByUid(uid);
|
u8 paletteNum = PaletteStruct_GetPalNum(id);
|
||||||
if (paletteNum != 16)
|
if (paletteNum != NUM_PALETTE_STRUCTS)
|
||||||
sPaletteStructs[paletteNum].ps_field_4_1 = 0;
|
sPaletteStructs[paletteNum].flag = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// not used
|
static u8 PaletteStruct_GetPalNum(u16 id)
|
||||||
static u8 GetPaletteNumByUid(u16 uid)
|
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
for (i = 0; i < NUM_PALETTE_STRUCTS; ++i)
|
for (i = 0; i < NUM_PALETTE_STRUCTS; i++)
|
||||||
if (sPaletteStructs[i].base->uid == uid)
|
if (sPaletteStructs[i].template->id == id)
|
||||||
return i;
|
return i;
|
||||||
return 16;
|
return NUM_PALETTE_STRUCTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 UpdateNormalPaletteFade(void)
|
static u8 UpdateNormalPaletteFade(void)
|
||||||
@@ -411,7 +407,7 @@ static u8 UpdateNormalPaletteFade(void)
|
|||||||
{
|
{
|
||||||
if (gPaletteFade.delayCounter < gPaletteFade_delay)
|
if (gPaletteFade.delayCounter < gPaletteFade_delay)
|
||||||
{
|
{
|
||||||
++gPaletteFade.delayCounter;
|
gPaletteFade.delayCounter++;
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
gPaletteFade.delayCounter = 0;
|
gPaletteFade.delayCounter = 0;
|
||||||
@@ -708,25 +704,25 @@ static u8 UpdateHardwarePaletteFade(void)
|
|||||||
return PALETTE_FADE_STATUS_DONE;
|
return PALETTE_FADE_STATUS_DONE;
|
||||||
if (gPaletteFade.delayCounter < gPaletteFade_delay)
|
if (gPaletteFade.delayCounter < gPaletteFade_delay)
|
||||||
{
|
{
|
||||||
++gPaletteFade.delayCounter;
|
gPaletteFade.delayCounter++;
|
||||||
return PALETTE_FADE_STATUS_DELAY;
|
return PALETTE_FADE_STATUS_DELAY;
|
||||||
}
|
}
|
||||||
gPaletteFade.delayCounter = 0;
|
gPaletteFade.delayCounter = 0;
|
||||||
if (!gPaletteFade.yDec)
|
if (!gPaletteFade.yDec)
|
||||||
{
|
{
|
||||||
++gPaletteFade.y;
|
gPaletteFade.y++;
|
||||||
if (gPaletteFade.y > gPaletteFade.targetY)
|
if (gPaletteFade.y > gPaletteFade.targetY)
|
||||||
{
|
{
|
||||||
++gPaletteFade.hardwareFadeFinishing;
|
gPaletteFade.hardwareFadeFinishing++;
|
||||||
--gPaletteFade.y;
|
gPaletteFade.y--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gPaletteFade.y-- - 1 < gPaletteFade.targetY)
|
if (gPaletteFade.y-- - 1 < gPaletteFade.targetY)
|
||||||
{
|
{
|
||||||
++gPaletteFade.hardwareFadeFinishing;
|
gPaletteFade.hardwareFadeFinishing++;
|
||||||
++gPaletteFade.y;
|
gPaletteFade.y++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -770,7 +766,7 @@ static bool8 IsSoftwarePaletteFadeFinishing(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++gPaletteFade.softwareFadeFinishingCounter;
|
gPaletteFade.softwareFadeFinishingCounter++;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -806,11 +802,11 @@ void TintPalette_GrayScale(u16 *palette, u16 count)
|
|||||||
|
|
||||||
for (i = 0; i < count; ++i)
|
for (i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
r = (*palette >> 0) & 0x1F;
|
r = GET_R(*palette);
|
||||||
g = (*palette >> 5) & 0x1F;
|
g = GET_G(*palette);
|
||||||
b = (*palette >> 10) & 0x1F;
|
b = GET_B(*palette);
|
||||||
gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
||||||
*palette++ = (gray << 10) | (gray << 5) | (gray << 0);
|
*palette++ = RGB2(gray, gray, gray);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -821,15 +817,15 @@ void TintPalette_GrayScale2(u16 *palette, u16 count)
|
|||||||
|
|
||||||
for (i = 0; i < count; ++i)
|
for (i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
r = (*palette >> 0) & 0x1F;
|
r = GET_R(*palette);
|
||||||
g = (*palette >> 5) & 0x1F;
|
g = GET_G(*palette);
|
||||||
b = (*palette >> 10) & 0x1F;
|
b = GET_B(*palette);
|
||||||
gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
||||||
|
|
||||||
if (gray > 0x1F)
|
if (gray > 31)
|
||||||
gray = 0x1F;
|
gray = 31;
|
||||||
gray = sRoundedDownGrayscaleMap[gray];
|
gray = sRoundedDownGrayscaleMap[gray];
|
||||||
*palette++ = (gray << 10) | (gray << 5) | (gray << 0);
|
*palette++ = RGB2(gray, gray, gray);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -840,16 +836,16 @@ void TintPalette_SepiaTone(u16 *palette, u16 count)
|
|||||||
|
|
||||||
for (i = 0; i < count; ++i)
|
for (i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
r = (*palette >> 0) & 0x1F;
|
r = GET_R(*palette);
|
||||||
g = (*palette >> 5) & 0x1F;
|
g = GET_G(*palette);
|
||||||
b = (*palette >> 10) & 0x1F;
|
b = GET_B(*palette);
|
||||||
gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
||||||
r = (u16)((Q_8_8(1.2) * gray)) >> 8;
|
r = (u16)((Q_8_8(1.2) * gray)) >> 8;
|
||||||
g = (u16)((Q_8_8(1.0) * gray)) >> 8;
|
g = (u16)((Q_8_8(1.0) * gray)) >> 8;
|
||||||
b = (u16)((Q_8_8(0.94) * gray)) >> 8;
|
b = (u16)((Q_8_8(0.94) * gray)) >> 8;
|
||||||
if (r > 31)
|
if (r > 31)
|
||||||
r = 31;
|
r = 31;
|
||||||
*palette++ = (b << 10) | (g << 5) | (r << 0);
|
*palette++ = RGB2(r, g, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -860,9 +856,9 @@ void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 b
|
|||||||
|
|
||||||
for (i = 0; i < count; ++i)
|
for (i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
r = (*palette >> 0) & 0x1F;
|
r = GET_R(*palette);
|
||||||
g = (*palette >> 5) & 0x1F;
|
g = GET_G(*palette);
|
||||||
b = (*palette >> 10) & 0x1F;
|
b = GET_B(*palette);
|
||||||
gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
||||||
r = (u16)((rTone * gray)) >> 8;
|
r = (u16)((rTone * gray)) >> 8;
|
||||||
g = (u16)((gTone * gray)) >> 8;
|
g = (u16)((gTone * gray)) >> 8;
|
||||||
@@ -873,116 +869,126 @@ void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 b
|
|||||||
g = 31;
|
g = 31;
|
||||||
if (b > 31)
|
if (b > 31)
|
||||||
b = 31;
|
b = 31;
|
||||||
*palette++ = (b << 10) | (g << 5) | (r << 0);
|
*palette++ = RGB2(r, g, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_80716F8(const u16 *src, u16 *dst, u16 count, u8 a4)
|
void CopyPaletteInvertedTint(const u16 *src, u16 *dst, u16 count, u8 tone)
|
||||||
{
|
{
|
||||||
s32 r, g, b, i;
|
s32 r, g, b, i;
|
||||||
u32 gray;
|
u32 gray;
|
||||||
|
|
||||||
if (!a4)
|
if (!tone)
|
||||||
{
|
{
|
||||||
for (i = 0; i < count; ++i)
|
for (i = 0; i < count; i++)
|
||||||
*dst++ = *src++;
|
*dst++ = *src++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (i = 0; i < count; ++src, ++dst, ++i)
|
for (i = 0; i < count; src++, dst++, i++)
|
||||||
{
|
{
|
||||||
r = (*src >> 0) & 0x1F;
|
r = GET_R(*src);
|
||||||
g = (*src >> 5) & 0x1F;
|
g = GET_G(*src);
|
||||||
b = (*src >> 10) & 0x1F;
|
b = GET_B(*src);
|
||||||
gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
||||||
r += (a4 * (gray - r) >> 4);
|
r += (tone * (gray - r) >> 4);
|
||||||
g += (a4 * (gray - g) >> 4);
|
g += (tone * (gray - g) >> 4);
|
||||||
b += (a4 * (gray - b) >> 4);
|
b += (tone * (gray - b) >> 4);
|
||||||
*dst = (b << 10) | (g << 5) | (r << 0);
|
*dst = RGB2(r, g, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_80717A8(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7)
|
#define tCoeff data[0]
|
||||||
|
#define tCoeffTarget data[1]
|
||||||
|
#define tCoeffDelta data[2]
|
||||||
|
#define tDelay data[3]
|
||||||
|
#define tDelayTimer data[4]
|
||||||
|
#define IDX_PALETTES 5 // data[5] and data[6], set/get via Set/GetWordTaskArg
|
||||||
|
#define tColor data[7]
|
||||||
|
#define tId data[8]
|
||||||
|
|
||||||
|
// Blend the selected palettes in a series of steps toward or away from the color.
|
||||||
|
void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id)
|
||||||
{
|
{
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
|
|
||||||
taskId = CreateTask(sub_80718B8, a6);
|
taskId = CreateTask(Task_BlendPalettesGradually, priority);
|
||||||
gTasks[taskId].data[0] = a3;
|
gTasks[taskId].tCoeff = coeff;
|
||||||
gTasks[taskId].data[1] = a4;
|
gTasks[taskId].tCoeffTarget = coeffTarget;
|
||||||
if (a2 >= 0)
|
if (delay >= 0)
|
||||||
{
|
{
|
||||||
gTasks[taskId].data[3] = a2;
|
gTasks[taskId].tDelay = delay;
|
||||||
gTasks[taskId].data[2] = 1;
|
gTasks[taskId].tCoeffDelta = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gTasks[taskId].data[3] = 0;
|
gTasks[taskId].tDelay = 0;
|
||||||
gTasks[taskId].data[2] = -a2 + 1;
|
gTasks[taskId].tCoeffDelta = -delay + 1;
|
||||||
}
|
}
|
||||||
if (a4 < a3)
|
if (coeffTarget < coeff)
|
||||||
gTasks[taskId].data[2] *= -1;
|
gTasks[taskId].tCoeffDelta *= -1;
|
||||||
SetWordTaskArg(taskId, 5, a1);
|
SetWordTaskArg(taskId, IDX_PALETTES, selectedPalettes);
|
||||||
gTasks[taskId].data[7] = a5;
|
gTasks[taskId].tColor = color;
|
||||||
gTasks[taskId].data[8] = a7;
|
gTasks[taskId].tId = id;
|
||||||
gTasks[taskId].func(taskId);
|
gTasks[taskId].func(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool32 sub_807185C(u8 var)
|
bool32 IsBlendPalettesGraduallyTaskActive(u8 id)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
for (i = 0; i < NUM_TASKS; ++i)
|
for (i = 0; i < NUM_TASKS; ++i)
|
||||||
if (gTasks[i].isActive == TRUE
|
if (gTasks[i].isActive == TRUE
|
||||||
&& gTasks[i].func == sub_80718B8
|
&& gTasks[i].func == Task_BlendPalettesGradually
|
||||||
&& gTasks[i].data[8] == var)
|
&& gTasks[i].tId == id)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8071898(void)
|
void DestroyBlendPalettesGraduallyTask(void)
|
||||||
{
|
{
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
|
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
taskId = FindTaskIdByFunc(sub_80718B8);
|
taskId = FindTaskIdByFunc(Task_BlendPalettesGradually);
|
||||||
if (taskId == TAIL_SENTINEL)
|
if (taskId == TASK_NONE)
|
||||||
break;
|
break;
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80718B8(u8 taskId)
|
static void Task_BlendPalettesGradually(u8 taskId)
|
||||||
{
|
{
|
||||||
u32 wordVar;
|
u32 palettes;
|
||||||
s16 *data;
|
s16 *data;
|
||||||
s16 temp;
|
s16 target;
|
||||||
|
|
||||||
data = gTasks[taskId].data;
|
data = gTasks[taskId].data;
|
||||||
wordVar = GetWordTaskArg(taskId, 5);
|
palettes = GetWordTaskArg(taskId, IDX_PALETTES);
|
||||||
if (++data[4] > data[3])
|
if (++tDelayTimer > tDelay)
|
||||||
{
|
{
|
||||||
data[4] = 0;
|
tDelayTimer = 0;
|
||||||
BlendPalettes(wordVar, data[0], data[7]);
|
BlendPalettes(palettes, tCoeff, tColor);
|
||||||
temp = data[1];
|
target = tCoeffTarget;
|
||||||
if (data[0] == temp)
|
if (tCoeff == target)
|
||||||
{
|
{
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data[0] += data[2];
|
tCoeff += tCoeffDelta;
|
||||||
if (data[2] >= 0)
|
if (tCoeffDelta >= 0)
|
||||||
{
|
{
|
||||||
if (data[0] < temp)
|
if (tCoeff < target)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (data[0] > temp)
|
else if (tCoeff > target)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
data[0] = temp;
|
tCoeff = target;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1199,8 +1199,8 @@ static bool8 sub_81121D8(u8 taskId)
|
|||||||
if (data[1] > 15)
|
if (data[1] > 15)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
sub_80716F8(gPlttBufferUnfaded + 0x01, gPlttBufferFaded + 0x01, 0xDF, 0x0F - data[1]);
|
CopyPaletteInvertedTint(gPlttBufferUnfaded + 0x01, gPlttBufferFaded + 0x01, 0xDF, 0x0F - data[1]);
|
||||||
sub_80716F8(gPlttBufferUnfaded + 0x100, gPlttBufferFaded + 0x100, 0x100, 0x0F - data[1]);
|
CopyPaletteInvertedTint(gPlttBufferUnfaded + 0x100, gPlttBufferFaded + 0x100, 0x100, 0x0F - data[1]);
|
||||||
FillWindowPixelRect(sQuestLogHeaderWindowIds[0], 0x00, 0, sQuestLogHeaderWindowTemplates[0].height * 8 - 1 - data[1], sQuestLogHeaderWindowTemplates[0].width * 8, 1);
|
FillWindowPixelRect(sQuestLogHeaderWindowIds[0], 0x00, 0, sQuestLogHeaderWindowTemplates[0].height * 8 - 1 - data[1], sQuestLogHeaderWindowTemplates[0].width * 8, 1);
|
||||||
FillWindowPixelRect(sQuestLogHeaderWindowIds[1], 0x00, 0, data[1], sQuestLogHeaderWindowTemplates[1].width * 8, 1);
|
FillWindowPixelRect(sQuestLogHeaderWindowIds[1], 0x00, 0, data[1], sQuestLogHeaderWindowTemplates[1].width * 8, 1);
|
||||||
CopyWindowToVram(sQuestLogHeaderWindowIds[0], COPYWIN_GFX);
|
CopyWindowToVram(sQuestLogHeaderWindowIds[0], COPYWIN_GFX);
|
||||||
|
|||||||
+11
-11
@@ -519,15 +519,15 @@ static void SetTitleScreenScene_FadeIn(s16 * data)
|
|||||||
if (data[2] > 36)
|
if (data[2] > 36)
|
||||||
{
|
{
|
||||||
CreateTask(Task_TitleScreen_SlideWin0, 3);
|
CreateTask(Task_TitleScreen_SlideWin0, 3);
|
||||||
sub_80717A8(0x2000, -4, 0x01, 0x10, RGB(30, 30, 31), 0, 0);
|
BlendPalettesGradually(0x2000, -4, 0x01, 0x10, RGB(30, 30, 31), 0, 0);
|
||||||
data[2] = 0;
|
data[2] = 0;
|
||||||
data[1]++;
|
data[1]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
if (!sub_807185C(0))
|
if (!IsBlendPalettesGraduallyTaskActive(0))
|
||||||
{
|
{
|
||||||
sub_80717A8(0x2000, -4, 0x0F, 0x00, RGB(30, 30, 31), 0, 0);
|
BlendPalettesGradually(0x2000, -4, 0x0F, 0x00, RGB(30, 30, 31), 0, 0);
|
||||||
data[1]++;
|
data[1]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -536,14 +536,14 @@ static void SetTitleScreenScene_FadeIn(s16 * data)
|
|||||||
if (data[2] > 20)
|
if (data[2] > 20)
|
||||||
{
|
{
|
||||||
data[2] = 0;
|
data[2] = 0;
|
||||||
sub_80717A8(0x2000, -4, 0x01, 0x10, RGB(30, 30, 31), 0, 0);
|
BlendPalettesGradually(0x2000, -4, 0x01, 0x10, RGB(30, 30, 31), 0, 0);
|
||||||
data[1]++;
|
data[1]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
if (!sub_807185C(0))
|
if (!IsBlendPalettesGraduallyTaskActive(0))
|
||||||
{
|
{
|
||||||
sub_80717A8(0x2000, -4, 0x0F, 0x00, RGB(30, 30, 31), 0, 0);
|
BlendPalettesGradually(0x2000, -4, 0x0F, 0x00, RGB(30, 30, 31), 0, 0);
|
||||||
data[1]++;
|
data[1]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -552,12 +552,12 @@ static void SetTitleScreenScene_FadeIn(s16 * data)
|
|||||||
if (data[2] > 20)
|
if (data[2] > 20)
|
||||||
{
|
{
|
||||||
data[2] = 0;
|
data[2] = 0;
|
||||||
sub_80717A8(0x2000, -3, 0x00, 0x10, RGB(30, 30, 31), 0, 0);
|
BlendPalettesGradually(0x2000, -3, 0x00, 0x10, RGB(30, 30, 31), 0, 0);
|
||||||
data[1]++;
|
data[1]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
if (!sub_807185C(0))
|
if (!IsBlendPalettesGraduallyTaskActive(0))
|
||||||
{
|
{
|
||||||
data[5] = 1;
|
data[5] = 1;
|
||||||
r4 = (0x10000 << CreateBlankSprite()) | 0x00001FFF;
|
r4 = (0x10000 << CreateBlankSprite()) | 0x00001FFF;
|
||||||
@@ -565,12 +565,12 @@ static void SetTitleScreenScene_FadeIn(s16 * data)
|
|||||||
BeginNormalPaletteFade(r4, 1, 0x10, 0x00, RGB(30, 30, 31));
|
BeginNormalPaletteFade(r4, 1, 0x10, 0x00, RGB(30, 30, 31));
|
||||||
ShowBg(0);
|
ShowBg(0);
|
||||||
CpuCopy16(gGraphics_TitleScreen_BoxArtMonPals, gPlttBufferUnfaded + 0xD0, 0x20);
|
CpuCopy16(gGraphics_TitleScreen_BoxArtMonPals, gPlttBufferUnfaded + 0xD0, 0x20);
|
||||||
sub_80717A8(0x2000, 1, 0x0F, 0x00, RGB(30, 30, 31), 0, 0);
|
BlendPalettesGradually(0x2000, 1, 0x0F, 0x00, RGB(30, 30, 31), 0, 0);
|
||||||
data[1]++;
|
data[1]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
if (!sub_807185C(0) && !gPaletteFade.active)
|
if (!IsBlendPalettesGraduallyTaskActive(0) && !gPaletteFade.active)
|
||||||
{
|
{
|
||||||
SetTitleScreenScene(data, TITLESCREENSCENE_RUN);
|
SetTitleScreenScene(data, TITLESCREENSCENE_RUN);
|
||||||
}
|
}
|
||||||
@@ -872,7 +872,7 @@ static void LoadMainTitleScreenPalsAndResetBgs(void)
|
|||||||
if (taskId != 0xFF)
|
if (taskId != 0xFF)
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
|
|
||||||
sub_8071898();
|
DestroyBlendPalettesGraduallyTask();
|
||||||
ResetPaletteFadeControl();
|
ResetPaletteFadeControl();
|
||||||
LoadPalette(gGraphics_TitleScreen_GameTitleLogoPals, 0x00, 0x1A0);
|
LoadPalette(gGraphics_TitleScreen_GameTitleLogoPals, 0x00, 0x1A0);
|
||||||
LoadPalette(gGraphics_TitleScreen_BoxArtMonPals, 0xD0, 0x20);
|
LoadPalette(gGraphics_TitleScreen_BoxArtMonPals, 0xD0, 0x20);
|
||||||
|
|||||||
Reference in New Issue
Block a user