diff options
Diffstat (limited to 'arm9/src')
-rw-r--r-- | arm9/src/font.c | 66 | ||||
-rw-r--r-- | arm9/src/palette.c | 84 | ||||
-rw-r--r-- | arm9/src/unk_02002F08.c | 140 |
3 files changed, 144 insertions, 146 deletions
diff --git a/arm9/src/font.c b/arm9/src/font.c index e09b0341..6c838892 100644 --- a/arm9/src/font.c +++ b/arm9/src/font.c @@ -1,16 +1,17 @@ #include "global.h" #include "font.h" #include "gf_gfx_loader.h" +#include "graphic/font.naix" #include "render_text.h" #include "string16.h" #include "text.h" -#include "graphic/font.naix" +#include "unk_0201B8B8.h" struct UnkStruct_02002C14 *UNK_02106FC8; struct UnkStruct_02002C14 UNK_02106FCC; -const u16 UNK_020ECB54[4][2] = { {0, 0}, {1, 0}, {2, 0}, {3, 0} }; +const u16 UNK_020ECB54[4][2] = { { 0, 0 }, { 1, 0 }, { 2, 0 }, { 3, 0 } }; const struct FontInfo gFontInfos[5] = { { 0x0B, 0x10, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x02 }, @@ -164,10 +165,67 @@ THUMB_FUNC s32 GetFontAttribute(u8 fontId, s32 attr) THUMB_FUNC void FUN_02002ED0(u32 layer, u32 baseAddr, u32 heap_id) { - GfGfxLoader_GXLoadPal(NARC_GRAPHIC_FONT, NARC_font_narc_0006_NCLR, layer, baseAddr, 0x20, heap_id); + GfGfxLoader_GXLoadPal( + NARC_GRAPHIC_FONT, NARC_font_narc_0006_NCLR, layer, baseAddr, 0x20, heap_id); } THUMB_FUNC void FUN_02002EEC(u32 layer, u32 baseAddr, u32 heap_id) { - GfGfxLoader_GXLoadPal(NARC_GRAPHIC_FONT, NARC_font_narc_0007_NCLR, layer, baseAddr, 0x20, heap_id); + GfGfxLoader_GXLoadPal( + NARC_GRAPHIC_FONT, NARC_font_narc_0007_NCLR, layer, baseAddr, 0x20, heap_id); +} + +THUMB_FUNC s32 FUN_02002F08(u32 param0, struct String *str, u32 param2) +{ + GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL); + + return StringGetWidth(UNK_02106FC8->unk94[param0], String_c_str(str), param2); +} + +THUMB_FUNC u32 FUN_02002F40(u32 param0, struct String *str, u32 param2, u32 param3) +{ + u32 r0 = FUN_02002E14(param0, str, param2); + if (r0 < param3) + { + return (param3 - r0) / 2; + } + + return 0; +} + +THUMB_FUNC u32 FUN_02002F58(const u16 *str) +{ + u32 r5 = 1; + while (*str != EOS) + { + if (*str == 0xFFFE) + { + str = MsgArray_SkipControlCode(str); + continue; + } + + if (*str == 0xE000) + { + r5++; + str++; + continue; + } + + str++; + } + + return r5; +} + +THUMB_FUNC u32 FUN_02002F90(struct String *str) +{ + return FUN_02002F58(String_c_str(str)); +} + +THUMB_FUNC s32 FUN_02002F9C(u32 param0, struct String *str) +{ + GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL); + + return StringGetWidth_SingleLine_HandleClearToControlCode( + UNK_02106FC8->unk94[param0], String_c_str(str)); } diff --git a/arm9/src/palette.c b/arm9/src/palette.c index 5f437120..6726a0ec 100644 --- a/arm9/src/palette.c +++ b/arm9/src/palette.c @@ -1,7 +1,7 @@ #include "global.h" #include "palette.h" #include "MI_memory.h" -#include "unk_02002F08.h" +#include "gf_gfx_loader.h" #include "unk_0200CA44.h" extern void *FUN_020222E8(); @@ -10,6 +10,85 @@ extern void *FUN_02022308(); extern void *FUN_02022310(); extern int abs(int); +THUMB_FUNC struct PaletteData *FUN_02002FD0(u32 heap_id) +{ + struct PaletteData *ptr = AllocFromHeap(heap_id, sizeof(struct PaletteData)); + MI_CpuFill8(ptr, 0, sizeof(struct PaletteData)); + + return ptr; +} + +THUMB_FUNC void FUN_02002FEC(struct PaletteData *ptr) +{ + FreeToHeap(ptr); +} + +THUMB_FUNC void PaletteData_SetBuffers( + struct PaletteData *paletteData, u32 index, void *unfadedBuf, void *fadedBuf, u32 size) +{ + paletteData->pltt[index].unfadedBuf = unfadedBuf; + paletteData->pltt[index].fadedBuf = fadedBuf; + paletteData->pltt[index].bufSize = size; +} + +THUMB_FUNC void PaletteData_AllocBuffers( + struct PaletteData *paletteData, u32 index, u32 size, u32 heap_id) +{ + void *ptr = AllocFromHeap(heap_id, size); + void *ptr2 = AllocFromHeap(heap_id, size); + + PaletteData_SetBuffers(paletteData, index, ptr, ptr2, size); +} + +THUMB_FUNC void PaletteData_FreeBuffers(struct PaletteData *paletteData, u32 index) +{ + FreeToHeap(paletteData->pltt[index].unfadedBuf); + FreeToHeap(paletteData->pltt[index].fadedBuf); +} + +THUMB_FUNC void PaletteData_LoadPalette( + struct PaletteData *paletteData, const void *src, u32 index, u32 offset, u16 size) +{ + MIi_CpuCopy16(src, paletteData->pltt[index].unfadedBuf + offset, size); + MIi_CpuCopy16(src, paletteData->pltt[index].fadedBuf + offset, size); +} + +THUMB_FUNC void PaletteData_LoadFromNarc(struct PaletteData *paletteData, + NarcId narcId, + s32 memberId, + u32 heap_id, + u32 index, + u32 size, + u16 offset, + u16 param7) +{ + NNSG2dPaletteData *pltData; + void *ptr = GfGfxLoader_GetPlttData(narcId, memberId, &pltData, heap_id); + + GF_ASSERT(ptr != NULL); + + if (size == 0) + { + size = pltData->szByte; + } + + GF_ASSERT(size + offset * 2 <= paletteData->pltt[index].bufSize); + + PaletteData_LoadPalette(paletteData, pltData->pRawData + param7 * 2, index, offset, (u16)size); + FreeToHeap(ptr); +} + +THUMB_FUNC void PaletteData_LoadNarc(struct PaletteData *paletteData, + NarcId narcId, + s32 memberId, + u32 heap_id, + u32 index, + u32 size, + u16 offset) +{ + PaletteData_LoadFromNarc(paletteData, narcId, memberId, heap_id, index, size, offset, 0); +} + THUMB_FUNC void FUN_02003108(struct PaletteData *paletteData, u32 index, u16 offset, u32 size) { GF_ASSERT(offset * 2 + size <= paletteData->pltt[index].bufSize); @@ -496,7 +575,8 @@ THUMB_FUNC void BlendPalette(u16 *src, u16 *dest, u16 numEntries, u8 coeff, u16 s32 g = ((struct PlttData *)&src[i])->g; s32 b = ((struct PlttData *)&src[i])->b; - dest[i] = (u16)(((r + (((r2 - r) * coeff) >> 4)) << 0) | ((g + (((g2 - g) * coeff) >> 4)) << 5) | + dest[i] = + (u16)(((r + (((r2 - r) * coeff) >> 4)) << 0) | ((g + (((g2 - g) * coeff) >> 4)) << 5) | ((b + (((b2 - b) * coeff) >> 4)) << 10)); } } diff --git a/arm9/src/unk_02002F08.c b/arm9/src/unk_02002F08.c deleted file mode 100644 index 5a1eca36..00000000 --- a/arm9/src/unk_02002F08.c +++ /dev/null @@ -1,140 +0,0 @@ -#include "global.h" -#include "unk_02002F08.h" -#include "font.h" -#include "gf_gfx_loader.h" -#include "string16.h" -#include "unk_0201B8B8.h" - -THUMB_FUNC s32 FUN_02002F08(u32 param0, struct String *str, u32 param2) -{ - GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL); - - return StringGetWidth(UNK_02106FC8->unk94[param0], String_c_str(str), param2); -} - -THUMB_FUNC u32 FUN_02002F40(u32 param0, struct String *str, u32 param2, u32 param3) -{ - u32 r0 = FUN_02002E14(param0, str, param2); - if (r0 < param3) - { - return (param3 - r0) / 2; - } - - return 0; -} - -THUMB_FUNC u32 FUN_02002F58(const u16 *str) -{ - u32 r5 = 1; - while (*str != EOS) - { - if (*str == 0xFFFE) - { - str = MsgArray_SkipControlCode(str); - continue; - } - - if (*str == 0xE000) - { - r5++; - str++; - continue; - } - - str++; - } - - return r5; -} - -THUMB_FUNC u32 FUN_02002F90(struct String *str) -{ - return FUN_02002F58(String_c_str(str)); -} - -THUMB_FUNC s32 FUN_02002F9C(u32 param0, struct String *str) -{ - GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL); - - return StringGetWidth_SingleLine_HandleClearToControlCode( - UNK_02106FC8->unk94[param0], String_c_str(str)); -} - -THUMB_FUNC struct PaletteData *FUN_02002FD0(u32 heap_id) -{ - struct PaletteData *ptr = AllocFromHeap(heap_id, sizeof(struct PaletteData)); - MI_CpuFill8(ptr, 0, sizeof(struct PaletteData)); - - return ptr; -} - -THUMB_FUNC void FUN_02002FEC(struct PaletteData *ptr) -{ - FreeToHeap(ptr); -} - -THUMB_FUNC void PaletteData_SetBuffers( - struct PaletteData *paletteData, u32 index, void *unfadedBuf, void *fadedBuf, u32 size) -{ - paletteData->pltt[index].unfadedBuf = unfadedBuf; - paletteData->pltt[index].fadedBuf = fadedBuf; - paletteData->pltt[index].bufSize = size; -} - -THUMB_FUNC void PaletteData_AllocBuffers( - struct PaletteData *paletteData, u32 index, u32 size, u32 heap_id) -{ - void *ptr = AllocFromHeap(heap_id, size); - void *ptr2 = AllocFromHeap(heap_id, size); - - PaletteData_SetBuffers(paletteData, index, ptr, ptr2, size); -} - -THUMB_FUNC void PaletteData_FreeBuffers(struct PaletteData *paletteData, u32 index) -{ - FreeToHeap(paletteData->pltt[index].unfadedBuf); - FreeToHeap(paletteData->pltt[index].fadedBuf); -} - -THUMB_FUNC void PaletteData_LoadPalette( - struct PaletteData *paletteData, const void *src, u32 index, u32 offset, u16 size) -{ - MIi_CpuCopy16(src, paletteData->pltt[index].unfadedBuf + offset, size); - MIi_CpuCopy16(src, paletteData->pltt[index].fadedBuf + offset, size); -} - -THUMB_FUNC void PaletteData_LoadFromNarc(struct PaletteData *paletteData, - NarcId narcId, - s32 memberId, - u32 heap_id, - u32 index, - u32 size, - u16 offset, - u16 param7) -{ - NNSG2dPaletteData *pltData; - void *ptr = GfGfxLoader_GetPlttData(narcId, memberId, &pltData, heap_id); - - GF_ASSERT(ptr != NULL); - - if (size == 0) - { - size = pltData->szByte; - } - - GF_ASSERT(size + offset * 2 <= paletteData->pltt[index].bufSize); - - PaletteData_LoadPalette(paletteData, pltData->pRawData + param7 * 2, index, offset, (u16)size); - FreeToHeap(ptr); -} - -THUMB_FUNC void PaletteData_LoadNarc(struct PaletteData *paletteData, - NarcId narcId, - s32 memberId, - u32 heap_id, - u32 index, - u32 size, - u16 offset) -{ - PaletteData_LoadFromNarc(paletteData, narcId, memberId, heap_id, index, size, offset, 0); -} |