Continue disassembling text.s
This commit is contained in:
864
src/text.c
864
src/text.c
@@ -8,11 +8,17 @@
|
||||
EWRAM_DATA struct TextPrinter gTempTextPrinter;
|
||||
EWRAM_DATA struct TextPrinter gTextPrinters[NUM_TEXT_PRINTERS];
|
||||
|
||||
extern u8 gUnknown_03002F84[];
|
||||
extern u16 gFontHalfRowLookupTable[];
|
||||
extern u16 gLastTextBgColor;
|
||||
extern u16 gLastTextFgColor;
|
||||
extern u16 gLastTextShadowColor;
|
||||
|
||||
extern struct FontInfo *gFonts;
|
||||
extern u8 gUnknown_03002F84[];
|
||||
|
||||
u16 AddTextPrinter(struct TextWindow *textWindow, u8 speed, void (*callback)(u16, struct TextWindow *));
|
||||
extern u8 gFontHalfRowOffsets[];
|
||||
|
||||
u16 AddTextPrinter(struct TextWindow *textWindow, u8 speed, void (*callback)(struct TextWindow *, u16));
|
||||
void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor);
|
||||
u32 RenderFont(struct TextPrinter *textPrinter);
|
||||
void CopyWindowToVram(u8 windowId, u8 mode);
|
||||
@@ -26,10 +32,10 @@ void DeactivateAllTextPrinters (void)
|
||||
{
|
||||
int printer;
|
||||
for (printer = 0; printer < NUM_TEXT_PRINTERS; ++printer)
|
||||
gTextPrinters[printer].sub_union.sub.field_7 = 0;
|
||||
gTextPrinters[printer].sub_union.sub.active = 0;
|
||||
}
|
||||
|
||||
u16 Print(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback)(u16, struct TextWindow *))
|
||||
u16 Print(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextWindow *, u16))
|
||||
{
|
||||
struct TextWindow window;
|
||||
|
||||
@@ -49,7 +55,7 @@ u16 Print(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback
|
||||
return AddTextPrinter(&window, speed, callback);
|
||||
}
|
||||
|
||||
u16 AddTextPrinter(struct TextWindow *textWindow, u8 speed, void (*callback)(u16, struct TextWindow *))
|
||||
u16 AddTextPrinter(struct TextWindow *textWindow, u8 speed, void (*callback)(struct TextWindow *, u16))
|
||||
{
|
||||
int i;
|
||||
u16 j;
|
||||
@@ -57,7 +63,7 @@ u16 AddTextPrinter(struct TextWindow *textWindow, u8 speed, void (*callback)(u16
|
||||
if (!gFonts)
|
||||
return FALSE;
|
||||
|
||||
gTempTextPrinter.sub_union.sub.field_7 = 1;
|
||||
gTempTextPrinter.sub_union.sub.active = 1;
|
||||
gTempTextPrinter.state = 0;
|
||||
gTempTextPrinter.text_speed = speed;
|
||||
gTempTextPrinter.delayCounter = 0;
|
||||
@@ -84,16 +90,858 @@ u16 AddTextPrinter(struct TextWindow *textWindow, u8 speed, void (*callback)(u16
|
||||
gTempTextPrinter.text_speed = 0;
|
||||
for (j = 0; j < 0x400; ++j)
|
||||
{
|
||||
if (RenderFont(&gTempTextPrinter) == 1)
|
||||
if ((u32)RenderFont(&gTempTextPrinter) == 1)
|
||||
break;
|
||||
}
|
||||
|
||||
if (speed != 0xFF)
|
||||
CopyWindowToVram(gTempTextPrinter.window.windowId, 2);
|
||||
gTextPrinters[textWindow->windowId].sub_union.sub.field_7 = 0;
|
||||
gTextPrinters[textWindow->windowId].sub_union.sub.active = 0;
|
||||
}
|
||||
gUnknown_03002F84[0] = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void RunTextPrinters(void)
|
||||
{
|
||||
int i;
|
||||
u16 temp;
|
||||
|
||||
if (gUnknown_03002F84[0] == 0)
|
||||
{
|
||||
for (i = 0; i < 0x20; ++i)
|
||||
{
|
||||
if (gTextPrinters[i].sub_union.sub.active != 0)
|
||||
{
|
||||
temp = RenderFont(&gTextPrinters[i]);
|
||||
switch (temp) {
|
||||
case 0:
|
||||
CopyWindowToVram(gTextPrinters[i].window.windowId, 2);
|
||||
case 3:
|
||||
if (gTextPrinters[i].callback != 0)
|
||||
gTextPrinters[i].callback(&gTextPrinters[i].window, temp);
|
||||
break;
|
||||
case 1:
|
||||
gTextPrinters[i].sub_union.sub.active = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool8 IsTextPrinterActive(u8 id)
|
||||
{
|
||||
return gTextPrinters[id].sub_union.sub.active;
|
||||
}
|
||||
|
||||
|
||||
u32 RenderFont(struct TextPrinter *textPrinter)
|
||||
{
|
||||
u32 ret;
|
||||
while (TRUE)
|
||||
{
|
||||
ret = gFonts[textPrinter->window.fontId].fontFunction(textPrinter);
|
||||
if (ret != 2)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor)
|
||||
{
|
||||
u16* current = gFontHalfRowLookupTable;
|
||||
|
||||
gLastTextBgColor = bgColor;
|
||||
gLastTextFgColor = fgColor;
|
||||
gLastTextShadowColor = shadowColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (bgColor << 8) | (bgColor << 4) | bgColor;
|
||||
*(current++) = (fgColor << 12) | (bgColor << 8) | (bgColor << 4) | bgColor;
|
||||
*(current++) = (shadowColor << 12) | (bgColor << 8) | (bgColor << 4) | bgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (fgColor << 8) | (bgColor << 4) | bgColor;
|
||||
*(current++) = (fgColor << 12) | (fgColor << 8) | (bgColor << 4) | bgColor;
|
||||
*(current++) = (shadowColor << 12) | (fgColor << 8) | (bgColor << 4) | bgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (shadowColor << 8) | (bgColor << 4) | bgColor;
|
||||
*(current++) = (fgColor << 12) | (shadowColor << 8) | (bgColor << 4) | bgColor;
|
||||
*(current++) = (shadowColor << 12) | (shadowColor << 8) | (bgColor << 4) | bgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (bgColor << 8) | (fgColor << 4) | bgColor;
|
||||
*(current++) = (fgColor << 12) | (bgColor << 8) | (fgColor << 4) | bgColor;
|
||||
*(current++) = (shadowColor << 12) | (bgColor << 8) | (fgColor << 4) | bgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (fgColor << 8) | (fgColor << 4) | bgColor;
|
||||
*(current++) = (fgColor << 12) | (fgColor << 8) | (fgColor << 4) | bgColor;
|
||||
*(current++) = (shadowColor << 12) | (fgColor << 8) | (fgColor << 4) | bgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (shadowColor << 8) | (fgColor << 4) | bgColor;
|
||||
*(current++) = (fgColor << 12) | (shadowColor << 8) | (fgColor << 4) | bgColor;
|
||||
*(current++) = (shadowColor << 12) | (shadowColor << 8) | (fgColor << 4) | bgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (bgColor << 8) | (shadowColor << 4) | bgColor;
|
||||
*(current++) = (fgColor << 12) | (bgColor << 8) | (shadowColor << 4) | bgColor;
|
||||
*(current++) = (shadowColor << 12) | (bgColor << 8) | (shadowColor << 4) | bgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (fgColor << 8) | (shadowColor << 4) | bgColor;
|
||||
*(current++) = (fgColor << 12) | (fgColor << 8) | (shadowColor << 4) | bgColor;
|
||||
*(current++) = (shadowColor << 12) | (fgColor << 8) | (shadowColor << 4) | bgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | bgColor;
|
||||
*(current++) = (fgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | bgColor;
|
||||
*(current++) = (shadowColor << 12) | (shadowColor << 8) | (shadowColor << 4) | bgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (bgColor << 8) | (bgColor << 4) | fgColor;
|
||||
*(current++) = (fgColor << 12) | (bgColor << 8) | (bgColor << 4) | fgColor;
|
||||
*(current++) = (shadowColor << 12) | (bgColor << 8) | (bgColor << 4) | fgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (fgColor << 8) | (bgColor << 4) | fgColor;
|
||||
*(current++) = (fgColor << 12) | (fgColor << 8) | (bgColor << 4) | fgColor;
|
||||
*(current++) = (shadowColor << 12) | (fgColor << 8) | (bgColor << 4) | fgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (shadowColor << 8) | (bgColor << 4) | fgColor;
|
||||
*(current++) = (fgColor << 12) | (shadowColor << 8) | (bgColor << 4) | fgColor;
|
||||
*(current++) = (shadowColor << 12) | (shadowColor << 8) | (bgColor << 4) | fgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (bgColor << 8) | (fgColor << 4) | fgColor;
|
||||
*(current++) = (fgColor << 12) | (bgColor << 8) | (fgColor << 4) | fgColor;
|
||||
*(current++) = (shadowColor << 12) | (bgColor << 8) | (fgColor << 4) | fgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (fgColor << 8) | (fgColor << 4) | fgColor;
|
||||
*(current++) = (fgColor << 12) | (fgColor << 8) | (fgColor << 4) | fgColor;
|
||||
*(current++) = (shadowColor << 12) | (fgColor << 8) | (fgColor << 4) | fgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (shadowColor << 8) | (fgColor << 4) | fgColor;
|
||||
*(current++) = (fgColor << 12) | (shadowColor << 8) | (fgColor << 4) | fgColor;
|
||||
*(current++) = (shadowColor << 12) | (shadowColor << 8) | (fgColor << 4) | fgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (bgColor << 8) | (shadowColor << 4) | fgColor;
|
||||
*(current++) = (fgColor << 12) | (bgColor << 8) | (shadowColor << 4) | fgColor;
|
||||
*(current++) = (shadowColor << 12) | (bgColor << 8) | (shadowColor << 4) | fgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (fgColor << 8) | (shadowColor << 4) | fgColor;
|
||||
*(current++) = (fgColor << 12) | (fgColor << 8) | (shadowColor << 4) | fgColor;
|
||||
*(current++) = (shadowColor << 12) | (fgColor << 8) | (shadowColor << 4) | fgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | fgColor;
|
||||
*(current++) = (fgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | fgColor;
|
||||
*(current++) = (shadowColor << 12) | (shadowColor << 8) | (shadowColor << 4) | fgColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (bgColor << 8) | (bgColor << 4) | shadowColor;
|
||||
*(current++) = (fgColor << 12) | (bgColor << 8) | (bgColor << 4) | shadowColor;
|
||||
*(current++) = (shadowColor << 12) | (bgColor << 8) | (bgColor << 4) | shadowColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (fgColor << 8) | (bgColor << 4) | shadowColor;
|
||||
*(current++) = (fgColor << 12) | (fgColor << 8) | (bgColor << 4) | shadowColor;
|
||||
*(current++) = (shadowColor << 12) | (fgColor << 8) | (bgColor << 4) | shadowColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (shadowColor << 8) | (bgColor << 4) | shadowColor;
|
||||
*(current++) = (fgColor << 12) | (shadowColor << 8) | (bgColor << 4) | shadowColor;
|
||||
*(current++) = (shadowColor << 12) | (shadowColor << 8) | (bgColor << 4) | shadowColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (bgColor << 8) | (fgColor << 4) | shadowColor;
|
||||
*(current++) = (fgColor << 12) | (bgColor << 8) | (fgColor << 4) | shadowColor;
|
||||
*(current++) = (shadowColor << 12) | (bgColor << 8) | (fgColor << 4) | shadowColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (fgColor << 8) | (fgColor << 4) | shadowColor;
|
||||
*(current++) = (fgColor << 12) | (fgColor << 8) | (fgColor << 4) | shadowColor;
|
||||
*(current++) = (shadowColor << 12) | (fgColor << 8) | (fgColor << 4) | shadowColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (shadowColor << 8) | (fgColor << 4) | shadowColor;
|
||||
*(current++) = (fgColor << 12) | (shadowColor << 8) | (fgColor << 4) | shadowColor;
|
||||
*(current++) = (shadowColor << 12) | (shadowColor << 8) | (fgColor << 4) | shadowColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (bgColor << 8) | (shadowColor << 4) | shadowColor;
|
||||
*(current++) = (fgColor << 12) | (bgColor << 8) | (shadowColor << 4) | shadowColor;
|
||||
*(current++) = (shadowColor << 12) | (bgColor << 8) | (shadowColor << 4) | shadowColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (fgColor << 8) | (shadowColor << 4) | shadowColor;
|
||||
*(current++) = (fgColor << 12) | (fgColor << 8) | (shadowColor << 4) | shadowColor;
|
||||
*(current++) = (shadowColor << 12) | (fgColor << 8) | (shadowColor << 4) | shadowColor;
|
||||
|
||||
*(current++) = (bgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | shadowColor;
|
||||
*(current++) = (fgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | shadowColor;
|
||||
*(current++) = (shadowColor << 12) | (shadowColor << 8) | (shadowColor << 4) | shadowColor;
|
||||
}
|
||||
#else
|
||||
__attribute__((naked))
|
||||
void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor)
|
||||
{
|
||||
asm(" push {r4-r7,lr}\n\
|
||||
mov r7, r10\n\
|
||||
mov r6, r9\n\
|
||||
mov r5, r8\n\
|
||||
push {r5-r7}\n\
|
||||
sub sp, #0x24\n\
|
||||
lsl r0, #24\n\
|
||||
lsr r0, #24\n\
|
||||
lsl r1, #24\n\
|
||||
lsr r1, #24\n\
|
||||
lsl r2, #24\n\
|
||||
lsr r2, #24\n\
|
||||
ldr r3, =gFontHalfRowLookupTable\n\
|
||||
ldr r4, =gLastTextBgColor\n\
|
||||
strh r1, [r4]\n\
|
||||
ldr r4, =gLastTextFgColor\n\
|
||||
strh r0, [r4]\n\
|
||||
ldr r4, =gLastTextShadowColor\n\
|
||||
strh r2, [r4]\n\
|
||||
lsl r5, r1, #12\n\
|
||||
lsl r6, r0, #12\n\
|
||||
lsl r4, r2, #12\n\
|
||||
mov r8, r4\n\
|
||||
lsl r7, r1, #8\n\
|
||||
str r7, [sp]\n\
|
||||
lsl r4, r1, #4\n\
|
||||
mov r9, r4\n\
|
||||
orr r7, r4\n\
|
||||
str r7, [sp, #0x4]\n\
|
||||
orr r7, r1\n\
|
||||
add r4, r5, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r4, r6, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r4, r8\n\
|
||||
orr r7, r4\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
lsl r7, r0, #8\n\
|
||||
mov r10, r7\n\
|
||||
mov r4, r10\n\
|
||||
mov r7, r9\n\
|
||||
orr r4, r7\n\
|
||||
str r4, [sp, #0x8]\n\
|
||||
add r7, r4, #0\n\
|
||||
orr r7, r1\n\
|
||||
add r4, r5, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r4, r6, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r4, r8\n\
|
||||
orr r7, r4\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
lsl r7, r2, #8\n\
|
||||
mov r12, r7\n\
|
||||
mov r4, r12\n\
|
||||
mov r7, r9\n\
|
||||
orr r4, r7\n\
|
||||
str r4, [sp, #0xC]\n\
|
||||
add r7, r4, #0\n\
|
||||
orr r7, r1\n\
|
||||
add r4, r5, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r4, r6, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r4, r8\n\
|
||||
orr r7, r4\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
lsl r7, r0, #4\n\
|
||||
mov r9, r7\n\
|
||||
ldr r4, [sp]\n\
|
||||
orr r4, r7\n\
|
||||
str r4, [sp, #0x10]\n\
|
||||
add r7, r4, #0\n\
|
||||
orr r7, r1\n\
|
||||
add r4, r5, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r4, r6, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r4, r8\n\
|
||||
orr r7, r4\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r7, r10\n\
|
||||
add r4, r7, #0\n\
|
||||
mov r7, r9\n\
|
||||
orr r4, r7\n\
|
||||
str r4, [sp, #0x14]\n\
|
||||
add r7, r4, #0\n\
|
||||
orr r7, r1\n\
|
||||
add r4, r5, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r4, r6, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r4, r8\n\
|
||||
orr r7, r4\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r7, r12\n\
|
||||
add r4, r7, #0\n\
|
||||
mov r7, r9\n\
|
||||
orr r4, r7\n\
|
||||
str r4, [sp, #0x18]\n\
|
||||
add r7, r4, #0\n\
|
||||
orr r7, r1\n\
|
||||
add r4, r5, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r4, r6, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r4, r8\n\
|
||||
orr r7, r4\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
lsl r7, r2, #4\n\
|
||||
mov r9, r7\n\
|
||||
mov r4, r9\n\
|
||||
ldr r7, [sp]\n\
|
||||
orr r7, r4\n\
|
||||
str r7, [sp, #0x1C]\n\
|
||||
orr r7, r1\n\
|
||||
add r4, r5, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r4, r6, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r4, r8\n\
|
||||
orr r7, r4\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r7, r9\n\
|
||||
mov r4, r10\n\
|
||||
orr r4, r7\n\
|
||||
str r4, [sp, #0x20]\n\
|
||||
add r7, r4, #0\n\
|
||||
orr r7, r1\n\
|
||||
add r4, r5, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r4, r6, #0\n\
|
||||
orr r4, r7\n\
|
||||
strh r4, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r4, r8\n\
|
||||
orr r7, r4\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r4, r12\n\
|
||||
mov r7, r9\n\
|
||||
orr r4, r7\n\
|
||||
add r7, r4, #0\n\
|
||||
orr r7, r1\n\
|
||||
add r1, r5, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r1, r6, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r1, r8\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
ldr r7, [sp, #0x4]\n\
|
||||
orr r7, r0\n\
|
||||
add r1, r5, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r1, r6, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r1, r8\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
ldr r7, [sp, #0x8]\n\
|
||||
orr r7, r0\n\
|
||||
add r1, r5, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r1, r6, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r1, r8\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
ldr r7, [sp, #0xC]\n\
|
||||
orr r7, r0\n\
|
||||
add r1, r5, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r1, r6, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r1, r8\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
ldr r7, [sp, #0x10]\n\
|
||||
orr r7, r0\n\
|
||||
add r1, r5, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r1, r6, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r1, r8\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
ldr r7, [sp, #0x14]\n\
|
||||
orr r7, r0\n\
|
||||
add r1, r5, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r1, r6, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r1, r8\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
ldr r7, [sp, #0x18]\n\
|
||||
orr r7, r0\n\
|
||||
add r1, r5, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r1, r6, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r1, r8\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
ldr r7, [sp, #0x1C]\n\
|
||||
orr r7, r0\n\
|
||||
add r1, r5, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r1, r6, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r1, r8\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
ldr r7, [sp, #0x20]\n\
|
||||
orr r7, r0\n\
|
||||
add r1, r5, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r1, r6, #0\n\
|
||||
orr r1, r7\n\
|
||||
strh r1, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r1, r8\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r7, r4, #0\n\
|
||||
orr r7, r0\n\
|
||||
add r0, r5, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r0, r6, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r7, r2, #0\n\
|
||||
ldr r0, [sp, #0x4]\n\
|
||||
orr r7, r0\n\
|
||||
add r0, r5, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r0, r6, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
orr r7, r1\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r7, r2, #0\n\
|
||||
ldr r1, [sp, #0x8]\n\
|
||||
orr r7, r1\n\
|
||||
add r0, r5, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r0, r6, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r0, r8\n\
|
||||
orr r7, r0\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r7, r2, #0\n\
|
||||
ldr r1, [sp, #0xC]\n\
|
||||
orr r7, r1\n\
|
||||
add r0, r5, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r0, r6, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r0, r8\n\
|
||||
orr r7, r0\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r7, r2, #0\n\
|
||||
ldr r1, [sp, #0x10]\n\
|
||||
orr r7, r1\n\
|
||||
add r0, r5, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r0, r6, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r0, r8\n\
|
||||
orr r7, r0\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r7, r2, #0\n\
|
||||
ldr r1, [sp, #0x14]\n\
|
||||
orr r7, r1\n\
|
||||
add r0, r5, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r0, r6, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r0, r8\n\
|
||||
orr r7, r0\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r7, r2, #0\n\
|
||||
ldr r1, [sp, #0x18]\n\
|
||||
orr r7, r1\n\
|
||||
add r0, r5, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r0, r6, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r0, r8\n\
|
||||
orr r7, r0\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r7, r2, #0\n\
|
||||
ldr r1, [sp, #0x1C]\n\
|
||||
orr r7, r1\n\
|
||||
add r0, r5, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r0, r6, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r0, r8\n\
|
||||
orr r7, r0\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r7, r2, #0\n\
|
||||
ldr r1, [sp, #0x20]\n\
|
||||
orr r7, r1\n\
|
||||
add r0, r5, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r0, r6, #0\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
mov r0, r8\n\
|
||||
orr r7, r0\n\
|
||||
strh r7, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
add r7, r2, #0\n\
|
||||
orr r7, r4\n\
|
||||
orr r5, r7\n\
|
||||
strh r5, [r3]\n\
|
||||
add r3, #0x2\n\
|
||||
orr r6, r7\n\
|
||||
strh r6, [r3]\n\
|
||||
orr r0, r7\n\
|
||||
strh r0, [r3, #0x2]\n\
|
||||
add sp, #0x24\n\
|
||||
pop {r3-r5}\n\
|
||||
mov r8, r3\n\
|
||||
mov r9, r4\n\
|
||||
mov r10, r5\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool");
|
||||
}
|
||||
#endif
|
||||
|
||||
void SaveTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor)
|
||||
{
|
||||
*bgColor = gLastTextBgColor;
|
||||
*fgColor = gLastTextFgColor;
|
||||
*shadowColor = gLastTextShadowColor;
|
||||
}
|
||||
|
||||
void RestoreTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor)
|
||||
{
|
||||
GenerateFontHalfRowLookupTable(*fgColor, *bgColor, *shadowColor);
|
||||
}
|
||||
|
||||
// struct means TextWindow, no struct means TextPrinter
|
||||
|
||||
//#ifdef NONMATCHING
|
||||
void DecompressGlyphTile(u16 *src, u32 *dest)
|
||||
{
|
||||
u32 temp;
|
||||
|
||||
temp = src[0];
|
||||
*(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
|
||||
temp = src[1];
|
||||
src += 2;
|
||||
dest[1] = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
|
||||
dest++;
|
||||
temp = *(src++);
|
||||
*(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
|
||||
temp = *(src++);
|
||||
*(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
|
||||
temp = *(src++);
|
||||
*(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
|
||||
temp = *(src++);
|
||||
*(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
|
||||
*(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[src[0] & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[src[0] >> 8]];
|
||||
*(dest) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[src[1] & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[src[1] >> 8]];
|
||||
}
|
||||
/*#else
|
||||
__attribute__((naked))
|
||||
void DecompressGlyphTile(u16 *src, u32 *dest)
|
||||
{
|
||||
asm("push {r4-r7,lr}\n\
|
||||
mov r7, r8\n\
|
||||
push {r7}\n\
|
||||
ldrh r7, [r0]\n\
|
||||
ldr r5, =gFontHalfRowLookupTable\n\
|
||||
ldr r4, =gFontHalfRowOffsets\n\
|
||||
mov r2, #0xFF\n\
|
||||
mov r8, r2\n\
|
||||
add r2, r7, #0\n\
|
||||
mov r3, r8\n\
|
||||
and r2, r3\n\
|
||||
add r2, r4\n\
|
||||
ldrb r2, [r2]\n\
|
||||
lsl r2, #1\n\
|
||||
add r2, r5\n\
|
||||
ldrh r3, [r2]\n\
|
||||
lsl r3, #16\n\
|
||||
lsr r2, r7, #8\n\
|
||||
add r2, r4\n\
|
||||
ldrb r2, [r2]\n\
|
||||
lsl r2, #1\n\
|
||||
add r2, r5\n\
|
||||
ldrh r2, [r2]\n\
|
||||
orr r3, r2\n\
|
||||
add r6, r1, #0\n\
|
||||
stmia r6!, {r3}\n\
|
||||
ldrh r7, [r0, #0x2]\n\
|
||||
add r0, #0x4\n\
|
||||
add r2, r7, #0\n\
|
||||
mov r3, r8\n\
|
||||
and r2, r3\n\
|
||||
add r2, r4\n\
|
||||
ldrb r2, [r2]\n\
|
||||
lsl r2, #1\n\
|
||||
add r2, r5\n\
|
||||
ldrh r3, [r2]\n\
|
||||
lsl r3, #16\n\
|
||||
lsr r2, r7, #8\n\
|
||||
add r2, r4\n\
|
||||
ldrb r2, [r2]\n\
|
||||
lsl r2, #1\n\
|
||||
add r2, r5\n\
|
||||
ldrh r2, [r2]\n\
|
||||
orr r3, r2\n\
|
||||
str r3, [r1, #0x4]\n\
|
||||
add r6, #0x4\n\
|
||||
ldrh r7, [r0]\n\
|
||||
add r0, #0x2\n\
|
||||
add r1, r7, #0\n\
|
||||
mov r2, r8\n\
|
||||
and r1, r2\n\
|
||||
add r1, r4\n\
|
||||
ldrb r1, [r1]\n\
|
||||
lsl r1, #1\n\
|
||||
add r1, r5\n\
|
||||
ldrh r2, [r1]\n\
|
||||
lsl r2, #16\n\
|
||||
lsr r1, r7, #8\n\
|
||||
add r1, r4\n\
|
||||
ldrb r1, [r1]\n\
|
||||
lsl r1, #1\n\
|
||||
add r1, r5\n\
|
||||
ldrh r1, [r1]\n\
|
||||
orr r2, r1\n\
|
||||
stmia r6!, {r2}\n\
|
||||
ldrh r7, [r0]\n\
|
||||
add r0, #0x2\n\
|
||||
add r1, r7, #0\n\
|
||||
mov r3, r8\n\
|
||||
and r1, r3\n\
|
||||
add r1, r4\n\
|
||||
ldrb r1, [r1]\n\
|
||||
lsl r1, #1\n\
|
||||
add r1, r5\n\
|
||||
ldrh r2, [r1]\n\
|
||||
lsl r2, #16\n\
|
||||
lsr r1, r7, #8\n\
|
||||
add r1, r4\n\
|
||||
ldrb r1, [r1]\n\
|
||||
lsl r1, #1\n\
|
||||
add r1, r5\n\
|
||||
ldrh r1, [r1]\n\
|
||||
orr r2, r1\n\
|
||||
stmia r6!, {r2}\n\
|
||||
ldrh r7, [r0]\n\
|
||||
add r0, #0x2\n\
|
||||
add r1, r7, #0\n\
|
||||
and r1, r3\n\
|
||||
add r1, r4\n\
|
||||
ldrb r1, [r1]\n\
|
||||
lsl r1, #1\n\
|
||||
add r1, r5\n\
|
||||
ldrh r2, [r1]\n\
|
||||
lsl r2, #16\n\
|
||||
lsr r1, r7, #8\n\
|
||||
add r1, r4\n\
|
||||
ldrb r1, [r1]\n\
|
||||
lsl r1, #1\n\
|
||||
add r1, r5\n\
|
||||
ldrh r1, [r1]\n\
|
||||
orr r2, r1\n\
|
||||
stmia r6!, {r2}\n\
|
||||
ldrh r7, [r0]\n\
|
||||
add r0, #0x2\n\
|
||||
add r1, r7, #0\n\
|
||||
and r1, r3\n\
|
||||
add r1, r4\n\
|
||||
ldrb r1, [r1]\n\
|
||||
lsl r1, #1\n\
|
||||
add r1, r5\n\
|
||||
ldrh r2, [r1]\n\
|
||||
lsl r2, #16\n\
|
||||
lsr r1, r7, #8\n\
|
||||
add r1, r4\n\
|
||||
ldrb r1, [r1]\n\
|
||||
lsl r1, #1\n\
|
||||
add r1, r5\n\
|
||||
ldrh r1, [r1]\n\
|
||||
orr r2, r1\n\
|
||||
stmia r6!, {r2}\n\
|
||||
ldrh r7, [r0]\n\
|
||||
add r1, r7, #0\n\
|
||||
and r1, r3\n\
|
||||
add r1, r4\n\
|
||||
ldrb r1, [r1]\n\
|
||||
lsl r1, #1\n\
|
||||
add r1, r5\n\
|
||||
ldrh r2, [r1]\n\
|
||||
lsl r2, #16\n\
|
||||
lsr r1, r7, #8\n\
|
||||
add r1, r4\n\
|
||||
ldrb r1, [r1]\n\
|
||||
lsl r1, #1\n\
|
||||
add r1, r5\n\
|
||||
ldrh r1, [r1]\n\
|
||||
orr r2, r1\n\
|
||||
stmia r6!, {r2}\n\
|
||||
ldrh r7, [r0, #0x2]\n\
|
||||
add r0, r7, #0\n\
|
||||
and r0, r3\n\
|
||||
add r0, r4\n\
|
||||
ldrb r0, [r0]\n\
|
||||
lsl r0, #1\n\
|
||||
add r0, r5\n\
|
||||
ldrh r1, [r0]\n\
|
||||
lsl r1, #16\n\
|
||||
lsr r0, r7, #8\n\
|
||||
add r0, r4\n\
|
||||
ldrb r0, [r0]\n\
|
||||
lsl r0, #1\n\
|
||||
add r0, r5\n\
|
||||
ldrh r0, [r0]\n\
|
||||
orr r1, r0\n\
|
||||
str r1, [r6]\n\
|
||||
pop {r3}\n\
|
||||
mov r8, r3\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool");
|
||||
}
|
||||
#endif*/
|
||||
|
||||
u8 GetLastTextColor(u8 colorType)
|
||||
{
|
||||
switch (colorType)
|
||||
{
|
||||
case 0:
|
||||
return gLastTextFgColor;
|
||||
case 2:
|
||||
return gLastTextBgColor;
|
||||
case 1:
|
||||
return gLastTextShadowColor;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user