diff options
author | scnorton <scnorton@biociphers.org> | 2018-01-21 17:48:35 -0500 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2018-01-21 17:48:35 -0500 |
commit | 192ee78bb96bae8dc8316cdd9edf2112ad2d1777 (patch) | |
tree | 70379ea4c95075665eb14af2936abdace1b5b077 /src | |
parent | 8bff04787167a733caa74c0b22dcd332b391f54d (diff) |
through sub_8006438
Diffstat (limited to 'src')
-rw-r--r-- | src/text.c | 64 |
1 files changed, 62 insertions, 2 deletions
@@ -17,13 +17,25 @@ struct UnkTextStruct1 { u8 unk46; }; +struct UnkTextStruct2 { + u8 fill00[0x0c]; + s16 unk0c; + u8 fill0e[2]; + s16 unk10; + u8 fill12[0x06]; +}; + +extern char gUnknown_3000E94[]; + EWRAM_DATA struct UnkTextStruct1 gUnknown_2027370[4]; EWRAM_DATA u8 *gUnknown_2027490[2]; EWRAM_DATA u16 gUnknown_2027498; EWRAM_DATA u8 gUnknown_20274A5; EWRAM_DATA u32 gUnknown_20274AC; EWRAM_DATA vu32 gUnknown_20274B0; -EWRAM_DATA struct OpenedFile *gUnknown_202AFB4[2]; +EWRAM_DATA u8 gUnknown_20274B4[0x3b00]; +EWRAM_DATA struct OpenedFile *gUnknown_202AFB4[3]; +EWRAM_DATA struct UnkTextStruct2 gUnknown_202AFC0[4]; EWRAM_DATA u32 gUnknown_202B020; EWRAM_DATA u32 gUnknown_202B024; EWRAM_DATA u32 gUnknown_202B028[2]; @@ -32,12 +44,19 @@ EWRAM_DATA u8 gUnknown_202B034; EWRAM_DATA u16 gUnknown_202B038[2][32][32]; u32 xxx_update_some_bg_tiles(u32 a0); +void sub_8006438(const struct UnkTextStruct2 *a0, u8 a1, u8 a2, u32 *a3); +void sub_8006554(void *a0, void *a1, void *a2, void *a3, u32 a4, const struct UnkTextStruct2 *a5, u8 a6, u32 a7, u32 *a8, u32 a9); +void sub_800898C(void); +void sub_80089AC(const struct UnkTextStruct2 *a0, void *a1); +void sub_8009388(void); +extern const struct UnkTextStruct2 gUnknown_80B857C[4]; extern const char gUnknown_80B87B4[]; extern const char gUnknown_80B87BC[]; extern const struct FileArchive gUnknown_8300500; extern const u32 gUnknown_80B87C4[8]; extern const u32 gUnknown_80B87E4[8]; +extern const u32 gUnknown_80B8804[4]; void sub_8006218(void) { @@ -71,7 +90,7 @@ void sub_8006218(void) } gUnknown_202B034 = 1; gUnknown_202B030 = 0x88888888; - gUnknown_203B078 = 0; + gUnknown_203B078 = NULL; gUnknown_20274A5 = 0; gUnknown_202B020 = 1; gUnknown_202B024 = 20; @@ -143,3 +162,44 @@ void sub_80063D8(int a0) } gUnknown_202B030 = retval; } + +void sub_800641C(void *a0, u8 a1, u8 a2) +{ + u32 r3 = 0; + sub_8006438(a0, a1, a2, &r3); +} + +void sub_8006438(const struct UnkTextStruct2 *a0, u8 a1, u8 a2, u32 *a3) +{ + int i; + u32 r9 = 2; + + if (a0 == NULL) + a0 = gUnknown_80B857C; + if (a2) + sub_8009388(); + sub_800898C(); + for (i = 0; i < 4; i++) + { + gUnknown_202AFC0[i] = a0[i]; + if (a0[i].unk0c) + { + sub_8006554(gUnknown_2027370, (void *)VRAM, gUnknown_20274B4, gUnknown_202B038, gUnknown_80B8804[i], a0 + i, a1, r9, a3, 0); + sub_80089AC(a0 + i, a3); + r9 += a0[i].unk0c * a0[i].unk10; + } + } +#ifdef NONMATCHING + gUnknown_203B078 = gUnknown_3000E94; + gUnknown_20274A5 = 1; +#else + asm(".syntax unified\n" + "\tldr r2, =gUnknown_203B078\n" + "\tldr r0, =gUnknown_3000E94\n" + "\tldr r1, =gUnknown_20274A5\n" + "\tstr r0, [r2]\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1]\n" + ".syntax divided"); +#endif +} |