summaryrefslogtreecommitdiff
path: root/arm9/src/text.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/src/text.c')
-rw-r--r--arm9/src/text.c68
1 files changed, 66 insertions, 2 deletions
diff --git a/arm9/src/text.c b/arm9/src/text.c
index 8ec3efe8..6207d913 100644
--- a/arm9/src/text.c
+++ b/arm9/src/text.c
@@ -1,10 +1,11 @@
#include "text.h"
#include "heap.h"
#include "string16.h"
+#include "MI_memory.h"
const struct FontInfo *gFonts = NULL;
-u8 UNK_021C5734[0x200];
+u16 UNK_021C5734[0x100];
u32 UNK_021C5714[8];
u8 UNK_021C570C[8];
@@ -12,13 +13,18 @@ extern u32 FUN_0200CA7C(void (*func)(u32, struct TextPrinter *), struct TextPrin
extern struct TextPrinter *FUN_0201B6C8(void);
extern void FUN_0200CAB4(u32 param0);
-extern void FUN_0201C238(struct TextPrinter *printer);
extern void FUN_0201C1A8(struct TextPrinter *printer);
extern void CopyWindowToVram(u32 windowId);
extern u32 FontFunc(u8 fontId, struct TextPrinter *printer);
+extern void *FUN_02006BB0(u32 param0, u32 param1, u32 param2, struct TextPrinter **param3, u32 param4);
+
+extern u32 FUN_0201AB0C(u32 windowId);
+extern void FUN_02019658(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7, u32 param8, u32 param9);
+
+
THUMB_FUNC void SetFontsPointer(const struct FontInfo *fonts)
{
gFonts = fonts;
@@ -498,3 +504,61 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow
}
}
#endif
+
+THUMB_FUNC void DecompressGlyphTile(const u16 *src, u16 *dst)
+{
+ dst[0] = UNK_021C5734[(u32)src[0] >> 8];
+ dst[1] = UNK_021C5734[(u8)src[0]];
+ dst[2] = UNK_021C5734[(u32)src[1] >> 8];
+ dst[3] = UNK_021C5734[(u8)src[1]];
+ dst[4] = UNK_021C5734[(u32)src[2] >> 8];
+ dst[5] = UNK_021C5734[(u8)src[2]];
+ dst[6] = UNK_021C5734[(u32)src[3] >> 8];
+ dst[7] = UNK_021C5734[(u8)src[3]];
+ dst[8] = UNK_021C5734[(u32)src[4] >> 8];
+ dst[9] = UNK_021C5734[(u8)src[4]];
+ dst[10] = UNK_021C5734[(u32)src[5] >> 8];
+ dst[11] = UNK_021C5734[(u8)src[5]];
+ dst[12] = UNK_021C5734[(u32)src[6] >> 8];
+ dst[13] = UNK_021C5734[(u8)src[6]];
+ dst[14] = UNK_021C5734[(u32)src[7] >> 8];
+ dst[15] = UNK_021C5734[(u8)src[7]];
+}
+
+THUMB_FUNC void FUN_0201C1A8(struct TextPrinter *printer)
+{
+ printer->Unk2C = NULL;
+}
+
+THUMB_FUNC void *FUN_0201C1B0(void)
+{
+ void *res = AllocFromHeap(0, sizeof(struct TextPrinter) * 32);
+ struct TextPrinter *var;
+ void *tmp = FUN_02006BB0(14, 5, 0, &var, 0);
+ MIi_CpuCopy32((void *)var->printerTemplate.Unk20, res, sizeof(struct TextPrinter) * 32); //todo Unk20 can't be right here
+ FreeToHeap(tmp);
+ return res;
+}
+
+THUMB_FUNC void FUN_0201C1EC(struct TextPrinter *printer, u32 param1, u32 param2, u32 param3)
+{
+#pragma unused (param1, param2)
+ u32 windowId = printer->printerTemplate.windowId;
+ if (printer->Unk2C == NULL)
+ {
+ printer->Unk2C = FUN_0201C1B0();
+ }
+ u32 r6 = (u32)printer->Unk2C + param3 * (sizeof(struct TextPrinter) * 8);
+ u32 r2 = ((FUN_0201AB0C(windowId) - 3) << 0x13) >> 0x10;
+ FUN_02019658(windowId, r6, 0, 0, 24, 32, r2, 0, 24, 32);
+}
+
+THUMB_FUNC void FUN_0201C238(struct TextPrinter *printer)
+{
+ if (printer->Unk2C == NULL)
+ {
+ return;
+ }
+ FreeToHeap(printer->Unk2C);
+ printer->Unk2C = NULL;
+}