2017-03-05 05:43:34 +01:00
|
|
|
#ifndef GUARD_PALETTE_H
|
|
|
|
#define GUARD_PALETTE_H
|
|
|
|
|
|
|
|
#define gPaletteFade_selectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade
|
|
|
|
#define gPaletteFade_blendCnt (gPaletteFade.multipurpose1) // hardware fade
|
|
|
|
#define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade
|
|
|
|
#define gPaletteFade_submode (gPaletteFade.multipurpose2) // fast fade
|
|
|
|
|
2017-10-12 09:06:19 +02:00
|
|
|
#define PLTT_BUFFER_SIZE 0x200
|
|
|
|
#define PLTT_DECOMP_BUFFER_SIZE (PLTT_BUFFER_SIZE * 2)
|
|
|
|
|
2019-02-10 03:50:12 +01:00
|
|
|
#define PALETTE_FADE_STATUS_DELAY 2
|
|
|
|
#define PALETTE_FADE_STATUS_ACTIVE 1
|
|
|
|
#define PALETTE_FADE_STATUS_DONE 0
|
2019-02-10 04:02:56 +01:00
|
|
|
#define PALETTE_FADE_STATUS_LOADING 0xFF
|
2019-02-10 03:50:12 +01:00
|
|
|
|
2017-03-05 05:43:34 +01:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
FAST_FADE_IN_FROM_WHITE,
|
2017-12-22 08:03:16 +01:00
|
|
|
FAST_FADE_OUT_TO_WHITE,
|
2017-03-05 05:43:34 +01:00
|
|
|
FAST_FADE_IN_FROM_BLACK,
|
|
|
|
FAST_FADE_OUT_TO_BLACK,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct PaletteFadeControl
|
|
|
|
{
|
|
|
|
u32 multipurpose1;
|
|
|
|
u8 delayCounter:6;
|
|
|
|
u16 y:5; // blend coefficient
|
|
|
|
u16 targetY:5; // target blend coefficient
|
|
|
|
u16 blendColor:15;
|
2018-07-15 13:23:38 +02:00
|
|
|
bool16 active:1;
|
2017-03-05 05:43:34 +01:00
|
|
|
u16 multipurpose2:6;
|
2018-07-15 13:23:38 +02:00
|
|
|
bool16 yDec:1; // whether blend coefficient is decreasing
|
|
|
|
bool16 bufferTransferDisabled:1;
|
2017-03-05 05:43:34 +01:00
|
|
|
u16 mode:2;
|
2018-07-15 13:23:38 +02:00
|
|
|
bool16 shouldResetBlendRegisters:1;
|
|
|
|
bool16 hardwareFadeFinishing:1;
|
2017-03-05 05:43:34 +01:00
|
|
|
u16 softwareFadeFinishingCounter:5;
|
2018-07-15 13:23:38 +02:00
|
|
|
bool16 softwareFadeFinishing:1;
|
|
|
|
bool16 objPaletteToggle:1;
|
2017-03-05 05:43:34 +01:00
|
|
|
u8 deltaY:4; // rate of change of blend coefficient
|
|
|
|
};
|
|
|
|
|
|
|
|
extern struct PaletteFadeControl gPaletteFade;
|
|
|
|
extern u32 gPlttBufferTransferPending;
|
|
|
|
extern u8 gPaletteDecompressionBuffer[];
|
|
|
|
extern u16 gPlttBufferUnfaded[];
|
|
|
|
extern u16 gPlttBufferFaded[];
|
|
|
|
|
2018-12-19 03:15:59 +01:00
|
|
|
void LoadCompressedPalette(const u32 *, u16, u16);
|
2017-03-05 05:43:34 +01:00
|
|
|
void LoadPalette(const void *, u16, u16);
|
|
|
|
void FillPalette(u16, u16, u16);
|
|
|
|
void TransferPlttBuffer(void);
|
|
|
|
u8 UpdatePaletteFade(void);
|
|
|
|
void ResetPaletteFade(void);
|
|
|
|
void ReadPlttIntoBuffers(void);
|
|
|
|
bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16);
|
|
|
|
bool8 unref_sub_8073D3C(u32, u8, u8, u8, u16);
|
|
|
|
void unref_sub_8073D84(u8, u32 *);
|
|
|
|
void ResetPaletteStructByUid(u16);
|
|
|
|
void ResetPaletteStruct(u8);
|
2018-10-14 20:00:14 +02:00
|
|
|
void ResetPaletteFadeControl(void);
|
2017-03-05 05:43:34 +01:00
|
|
|
void unref_sub_8074168(u16);
|
|
|
|
void unref_sub_8074194(u16);
|
|
|
|
void InvertPlttBuffer(u32);
|
|
|
|
void TintPlttBuffer(u32, s8, s8, s8);
|
|
|
|
void UnfadePlttBuffer(u32);
|
|
|
|
void BeginFastPaletteFade(u8);
|
|
|
|
void BeginHardwarePaletteFade(u8, u8, u8, u8, u8);
|
2019-01-26 14:50:24 +01:00
|
|
|
void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color);
|
2017-03-05 05:43:34 +01:00
|
|
|
void BlendPalettesUnfaded(u32, u8, u16);
|
2020-08-26 22:31:37 +02:00
|
|
|
void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id);
|
2019-01-20 18:24:35 +01:00
|
|
|
void TintPalette_GrayScale(u16 *palette, u16 count);
|
|
|
|
void TintPalette_GrayScale2(u16 *palette, u16 count);
|
|
|
|
void TintPalette_SepiaTone(u16 *palette, u16 count);
|
|
|
|
void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone);
|
2017-03-05 05:43:34 +01:00
|
|
|
|
|
|
|
#endif // GUARD_PALETTE_H
|