sub_8009A1C

This commit is contained in:
DizzyEggg 2025-02-17 09:49:35 +01:00
parent 976083c211
commit d96c57572f
2 changed files with 48 additions and 57 deletions

View File

@ -5,59 +5,6 @@
.text
thumb_func_start sub_8009A1C
sub_8009A1C:
push {r4-r6,lr}
adds r6, r0, 0
ldr r0, _08009A30
str r3, [r0]
ldr r3, [r6, 0xC]
movs r0, 0xC0
lsls r0, 19
adds r2, r0
movs r5, 0
b _08009A56
.align 2, 0
_08009A30: .4byte gUnknown_202D2A0
_08009A34:
ldm r3!, {r0}
stm r2!, {r0}
ldm r3!, {r0}
stm r2!, {r0}
ldm r3!, {r0}
stm r2!, {r0}
ldm r3!, {r0}
stm r2!, {r0}
ldm r3!, {r0}
stm r2!, {r0}
ldm r3!, {r0}
stm r2!, {r0}
ldm r3!, {r0}
stm r2!, {r0}
ldm r3!, {r0}
stm r2!, {r0}
adds r5, 0x1
_08009A56:
ldr r0, [r6, 0x8]
cmp r5, r0
ble _08009A34
movs r5, 0
lsls r4, r1, 6
_08009A60:
adds r0, r5, 0
adds r0, 0xE0
ldr r1, [r6, 0x10]
adds r1, r4
bl SetBGPaletteBufferColorArray
adds r4, 0x4
adds r5, 0x1
cmp r5, 0xF
ble _08009A60
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8009A1C
thumb_func_start sub_8009A7C
sub_8009A7C:
push {r4-r7,lr}

View File

@ -11,10 +11,29 @@ extern const struct FileArchive gSystemFileArchive; // 8300500
extern Palette32 gFontPalette[8];
extern u8 gUnknown_202D238[4];
extern s32 gUnknown_202D23C;
extern u32 gUnknown_202D2A0;
extern struct unkStruct_202D240 gUnknown_202D240[8];
// code_8009804.s
extern void sub_8009A1C(u32);
typedef struct Palette256
{
RGB pal[256];
} Palette256;
struct unkStruct_8009A1C
{
u8 fill0[0x8];
s32 unk8;
u32 *unkC;
Palette256 *unk10;
};
struct unkStruct_8009A1C_ptr
{
u8 fill0;
struct unkStruct_8009A1C *ptr;
};
void sub_8009A1C(struct unkStruct_8009A1C *r0, u32 palId, u32 vramDstOffset, u32 r3);
void InitFontPalette(void)
{
@ -134,7 +153,32 @@ void SetFontsBaseColor(RGB a0)
gFontPalette[i].pal[1] = a0;
}
UNUSED static void sub_8009A10(u32 *a0)
UNUSED static void sub_8009A10(struct unkStruct_8009A1C_ptr *a0, u32 palId, u32 vramDstOffset, u32 r3)
{
sub_8009A1C(a0[1]);
sub_8009A1C(a0->ptr, palId, vramDstOffset, r3);
}
void sub_8009A1C(struct unkStruct_8009A1C *r0, u32 palId, u32 vramDstOffset, u32 r3)
{
s32 i;
u32 *dst, *src;
gUnknown_202D2A0 = r3;
src = r0->unkC;
dst = (void *)(VRAM) + vramDstOffset;
for (i = 0; i <= r0->unk8; i++) {
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
}
for (i = 0; i < 16; i++) {
SetBGPaletteBufferColorArray(i + 0xE0, &r0->unk10->pal[i + palId * 16]);
}
}