mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-14 12:05:51 -05:00
text: Decompile InitGraphics
Co-authored-by: Seth Barberee <seth.barberee@gmail.com>
This commit is contained in:
102
asm/text.s
102
asm/text.s
@@ -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.
|
||||
@@ -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);
|
||||
|
||||
77
src/text.c
77
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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user