diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/gba/defines.h | 5 | ||||
-rw-r--r-- | include/gba/syscall.h | 4 | ||||
-rw-r--r-- | include/gba/types.h | 8 | ||||
-rw-r--r-- | include/palette.h | 68 |
4 files changed, 83 insertions, 2 deletions
diff --git a/include/gba/defines.h b/include/gba/defines.h index 4fd54975d..ea363109f 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -70,4 +70,9 @@ #define TOTAL_OBJ_TILE_COUNT 1024 +#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) + +#define RGB_BLACK RGB(0, 0, 0) +#define RGB_WHITE RGB(31, 31, 31) + #endif // GUARD_GBA_DEFINES diff --git a/include/gba/syscall.h b/include/gba/syscall.h index 2008128d3..3f41abba1 100644 --- a/include/gba/syscall.h +++ b/include/gba/syscall.h @@ -21,11 +21,11 @@ void VBlankIntrWait(void); #define CPU_SET_16BIT 0x00000000 #define CPU_SET_32BIT 0x04000000 -void CpuSet(void *src, void *dest, u32 control); +void CpuSet(const void *src, void *dest, u32 control); #define CPU_FAST_SET_SRC_FIXED 0x01000000 -void CpuFastSet(void *src, void *dest, u32 control); +void CpuFastSet(const void *src, void *dest, u32 control); void ObjAffineSet(struct ObjAffineSrcData *src, void *dest, s32 count, s32 offset); diff --git a/include/gba/types.h b/include/gba/types.h index 1274d4f0d..740c72d92 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -26,6 +26,14 @@ typedef u8 bool8; typedef u16 bool16; typedef u32 bool32; +struct PlttData +{ + u16 r:5; // red + u16 g:5; // green + u16 b:5; // blue + u16 unused_15:1; +}; + struct OamData { u32 y:8; diff --git a/include/palette.h b/include/palette.h new file mode 100644 index 000000000..de2cf0083 --- /dev/null +++ b/include/palette.h @@ -0,0 +1,68 @@ +#ifndef GUARD_PALETTE_H +#define GUARD_PALETTE_H + +#include "global.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 + +enum +{ + FAST_FADE_IN_FROM_WHITE, + FAST_FADE_OUT_TO_WHTIE, + 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; + u16 active:1; + u16 multipurpose2:6; + u16 yDec:1; // whether blend coefficient is decreasing + u16 bufferTransferDisabled:1; + u16 mode:2; + u16 shouldResetBlendRegisters:1; + u16 hardwareFadeFinishing:1; + u16 softwareFadeFinishingCounter:5; + u16 softwareFadeFinishing:1; + u16 objPaletteToggle:1; + 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[]; + +void LoadCompressedPalette(const void *, u16, u16); +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); +void ResetPaletteFadeControl(); +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); +void BlendPalettes(u32, u8, u16); +void BlendPalettesUnfaded(u32, u8, u16); + +#endif // GUARD_PALETTE_H |