From 024bee59a6e15bb1ab461454baca714080d7ec05 Mon Sep 17 00:00:00 2001 From: tgsm Date: Sun, 9 Feb 2025 18:55:10 -0600 Subject: [PATCH] text: Decompile InitGraphics Co-authored-by: Seth Barberee --- asm/text.s | 102 -------------------------------------------------- ld_script.txt | 1 - src/text.c | 77 +++++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 103 deletions(-) delete mode 100644 asm/text.s diff --git a/asm/text.s b/asm/text.s deleted file mode 100644 index 3060acc4c..000000000 --- a/asm/text.s +++ /dev/null @@ -1,102 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - - - thumb_func_start InitGraphics -InitGraphics: - push {r4-r6,lr} - ldr r1, _0800978C - movs r0, 0x1 - strb r0, [r1] - movs r1, 0xC0 - lsls r1, 19 - movs r5, 0 - ldr r3, _08009790 - ldr r0, _08009794 - movs r2, 0 -_080096F4: - stm r1!, {r2} - adds r5, 0x1 - cmp r5, r3 - bls _080096F4 - movs r1, 0xA0 - lsls r1, 19 - movs r5, 0 - movs r2, 0 -_08009704: - stm r1!, {r2} - adds r5, 0x1 - cmp r5, 0xFF - bls _08009704 - movs r1, 0xE0 - lsls r1, 19 - movs r5, 0 - ldr r2, _08009798 -_08009714: - stm r1!, {r2} - adds r5, 0x1 - cmp r5, 0xFF - bls _08009714 - ldr r4, _0800979C - adds r1, r4, 0 - bl OpenFileAndGetFileDataPtr - adds r6, r0, 0 - ldr r1, [r6, 0x4] - ldm r1!, {r5} - ldr r0, _080097A0 - lsls r2, r5, 5 - bl CpuCopy - adds r0, r6, 0 - bl CloseFile - ldr r0, _080097A4 - adds r1, r4, 0 - bl OpenFileAndGetFileDataPtr - adds r6, r0, 0 - ldr r1, [r6, 0x4] - ldm r1!, {r5} - ldr r0, _080097A8 - lsls r2, r5, 5 - bl CpuCopy - adds r0, r6, 0 - bl CloseFile - bl InitFontPalette - ldr r0, _080097AC - adds r1, r4, 0 - bl OpenFileAndGetFileDataPtr - adds r6, r0, 0 - ldr r4, [r6, 0x4] - movs r5, 0 -_08009766: - movs r1, 0xF8 - lsls r1, 1 - adds r0, r5, r1 - adds r1, r4, 0 - bl SetBGPaletteBufferColorArray - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0xF - ble _08009766 - adds r0, r6, 0 - bl CloseFile - bl TransferBGPaletteBuffer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800978C: .4byte gUnknown_203B090 -_08009790: .4byte 0x00005fff -_08009794: .4byte gUnknown_80B88B0 -_08009798: .4byte 0x00a000a0 -_0800979C: .4byte gSystemFileArchive -_080097A0: .4byte 0x06004f00 -_080097A4: .4byte gUnknown_80B88B8 -_080097A8: .4byte 0x06017e00 -_080097AC: .4byte gUnknown_80B88C0 - thumb_func_end InitGraphics - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index a3e408d90..cda49fe72 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -68,7 +68,6 @@ SECTIONS { src/code_800558C.o(.text); src/random.o(.text); src/text.o(.text); - asm/text.o(.text); src/code_8009804.o(.text); asm/code_8009804.o(.text); src/math.o(.text); diff --git a/src/text.c b/src/text.c index a89734963..e1eae1003 100644 --- a/src/text.c +++ b/src/text.c @@ -1,5 +1,6 @@ #include "global.h" #include "globaldata.h" +#include "bg_palette_buffer.h" #include "text.h" #include "decompress.h" #include "code_8009804.h" @@ -16,6 +17,10 @@ struct CharMapStruct // data.s +// data2.s +extern const char gUnknown_80B88B0[]; // "font" +extern const char gUnknown_80B88B8[]; // "fontsp" +extern const char gUnknown_80B88C0[]; // "fontsppa" // system_sbin.s extern const struct FileArchive gSystemFileArchive; @@ -3566,6 +3571,78 @@ static s32 InterpretColorChar(u8 a0) return 7; } +struct FontData { + u32 size; + u8 dataArray[136 * 32]; +}; + +struct FontSpData { + u32 size; + u8 dataArray[16 * 32]; +}; + +void InitGraphics(void) +{ + u32 count; + OpenedFile *file; + u32 *dest; + struct FontData *font; + struct FontSpData *fontSp; +#ifdef NONMATCHING + RGB *data; + u32 size; + const struct FileArchive *arc; +#else + register RGB *data asm("r4"); + register u32 size asm("r5"); + register const struct FileArchive *arc asm("r4"); +#endif + + gUnknown_203B090 = 1; + dest = (u32 *)VRAM; + for(count = 0; count < 0x6000; count++) + { + *dest++ = 0; + } + + dest = (u32 *)PLTT; + for(count = 0; count < 0x100; count++) + { + *dest++ = 0; + } + + dest = (u32 *)OAM; + for(count = 0; count < 0x100; count++) + { + *dest++ = 0x00a000a0; + } + + arc = &gSystemFileArchive; + + file = OpenFileAndGetFileDataPtr(gUnknown_80B88B0, arc); + font = (struct FontData *)(file->data); + size = font->size; + CpuCopy((u32 *)0x06004f00, font->dataArray, size * 32); + CloseFile(file); + + file = OpenFileAndGetFileDataPtr(gUnknown_80B88B8, arc); + fontSp = (struct FontSpData *)(file->data); + size = fontSp->size; + CpuCopy((u32 *)0x06017e00, fontSp->dataArray, size * 32); + CloseFile(file); + + InitFontPalette(); + file = OpenFileAndGetFileDataPtr(gUnknown_80B88C0, arc); + data = (RGB *)file->data; + + for(count = 0; (s32)count < 0x10; data++, count++) + { + SetBGPaletteBufferColorArray(0x1F0 + count, data); + } + CloseFile(file); + TransferBGPaletteBuffer(); +} + // These functions run from IWRAM for improved performance. IWRAM_INIT void sub_8272760(s32 id) {