text: Decompile InitGraphics

Co-authored-by: Seth Barberee <seth.barberee@gmail.com>
This commit is contained in:
tgsm
2025-02-09 18:55:10 -06:00
parent e830152cf9
commit 024bee59a6
3 changed files with 77 additions and 103 deletions

View File

@@ -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.

View File

@@ -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);

View File

@@ -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)
{