1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#include "global.h"
#include "text.h"
#include "dynamic_placeholder_text_util.h"
#include "string_util.h"
static EWRAM_DATA const u8 *sStringPointers[8] = {0};
static const u8 sTextColorTable[] =
{
0, 0, 0, 16, 17, 17, 17, 16, 16, 0, 0, 17, 1, 0, 17, 16,
0, 16, 16, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0,
17, 1, 0, 0, 0, 16, 17, 0, 16, 16, 16, 0, 1, 0, 51, 51,
51, 51, 51, 51, 51, 51, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 50,
};
void DynamicPlaceholderTextUtil_Reset(void)
{
const u8 **ptr = sStringPointers;
u8 *fillval = NULL;
const u8 **ptr2 = ptr + (NELEMS(sStringPointers) - 1);
do
{
*ptr2-- = fillval;
}
while ((intptr_t)ptr2 >= (intptr_t)ptr);
}
void DynamicPlaceholderTextUtil_SetPlaceholderPtr(u8 idx, const u8 *ptr)
{
if (idx < NELEMS(sStringPointers))
sStringPointers[idx] = ptr;
}
u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src)
{
while (*src != EOS)
{
if (*src != CHAR_SPECIAL_F7)
{
*dest++ = *src++;
}
else
{
src++;
if (sStringPointers[*src] != NULL)
dest = StringCopy(dest, sStringPointers[*src]);
src++;
}
}
*dest = EOS;
return dest;
}
const u8 *DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 idx)
{
return sStringPointers[idx];
}
u8 GetColorFromTextColorTable(u16 graphicId)
{
u32 test = graphicId >> 1;
u32 shift = (graphicId & 1) << 2;
if (test > 0x4B)
return 3;
else
return (sTextColorTable[graphicId >> 1] >> shift) & 0xF;
}
|