diff options
-rw-r--r-- | asm/text.s | 123 | ||||
-rw-r--r-- | include/code_800B540.h | 6 | ||||
-rw-r--r-- | src/text.c | 72 |
3 files changed, 77 insertions, 124 deletions
@@ -5,129 +5,6 @@ .text - thumb_func_start xxx_update_some_bg_tiles -xxx_update_some_bg_tiles: - push {r4,r5,lr} - adds r1, r0, 0 - ldr r0, _08006360 - ldr r5, [r0] - ldr r4, _08006364 - str r1, [r0] - cmp r1, 0 - beq _08006354 - cmp r1, 0x2 - bne _0800636C -_08006354: - movs r0, 0x2 - bl sub_800CDA8 - ldr r2, _08006368 - b _08006374 - .align 2, 0 -_08006360: .4byte gUnknown_20274B0 -_08006364: .4byte 0x06004f40 -_08006368: .4byte gUnknown_80B87C4 -_0800636C: - movs r0, 0x1 - bl sub_800CDA8 - ldr r2, _080063A4 -_08006374: - ldr r1, _080063A8 - ldr r0, _080063AC - str r0, [r1] - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldm r2!, {r0} - stm r4!, {r0} - ldr r0, [r2] - str r0, [r4] - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080063A4: .4byte gUnknown_80B87E4 -_080063A8: .4byte gUnknown_202B030 -_080063AC: .4byte 0x88888888 - thumb_func_end xxx_update_some_bg_tiles - - thumb_func_start sub_80063B0 -sub_80063B0: - ldr r0, _080063B8 - ldr r0, [r0] - bx lr - .align 2, 0 -_080063B8: .4byte gUnknown_20274B0 - thumb_func_end sub_80063B0 - - thumb_func_start sub_80063BC -sub_80063BC: - ldr r1, _080063C8 - ldrb r2, [r1] - strb r0, [r1] - adds r0, r2, 0 - bx lr - .align 2, 0 -_080063C8: .4byte gUnknown_202B034 - thumb_func_end sub_80063BC - - thumb_func_start sub_80063CC -sub_80063CC: - ldr r1, _080063D4 - str r0, [r1] - bx lr - .align 2, 0 -_080063D4: .4byte gUnknown_20274AC - thumb_func_end sub_80063CC - - thumb_func_start sub_80063D8 -sub_80063D8: - push {lr} - adds r1, r0, 0 - cmp r1, 0 - bne _080063F0 - ldr r0, _080063E8 - ldr r0, [r0] - ldr r2, _080063EC - b _08006410 - .align 2, 0 -_080063E8: .4byte gUnknown_20274B0 -_080063EC: .4byte 0x88888888 -_080063F0: - movs r0, 0xF - ands r0, r1 - lsls r2, r0, 4 - orrs r2, r0 - lsls r1, r0, 8 - orrs r2, r1 - lsls r1, r0, 12 - orrs r2, r1 - lsls r1, r0, 16 - orrs r2, r1 - lsls r1, r0, 20 - orrs r2, r1 - lsls r1, r0, 24 - orrs r2, r1 - lsls r0, 28 - orrs r2, r0 -_08006410: - ldr r0, _08006418 - str r2, [r0] - pop {r0} - bx r0 - .align 2, 0 -_08006418: .4byte gUnknown_202B030 - thumb_func_end sub_80063D8 - thumb_func_start sub_800641C sub_800641C: push {lr} diff --git a/include/code_800B540.h b/include/code_800B540.h new file mode 100644 index 0000000..050998e --- /dev/null +++ b/include/code_800B540.h @@ -0,0 +1,6 @@ +#ifndef GUARD_code_800B540_H +#define GUARD_code_800B540_H + +void sub_800CDA8(int a0); + +#endif //GUARD_code_800B540_H @@ -6,6 +6,7 @@ #include "global.h" #include "file_system.h" #include "code_800558C.h" +#include "code_800B540.h" struct UnkTextStruct1 { u8 fill00[4]; @@ -21,6 +22,7 @@ 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 u32 gUnknown_202B020; EWRAM_DATA u32 gUnknown_202B024; @@ -29,11 +31,13 @@ EWRAM_DATA u32 gUnknown_202B030; EWRAM_DATA u8 gUnknown_202B034; EWRAM_DATA u16 gUnknown_202B038[2][32][32]; -void xxx_update_some_bg_tiles(int a0); +u32 xxx_update_some_bg_tiles(u32 a0); 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]; void sub_8006218(void) { @@ -73,3 +77,69 @@ void sub_8006218(void) gUnknown_202B024 = 20; xxx_update_some_bg_tiles(0); } + +u32 xxx_update_some_bg_tiles(u32 a0) +{ + u32 r5 = gUnknown_20274B0; + u32 *r4 = (u32 *)(VRAM + 0x4f40); + const u32 *r2; + gUnknown_20274B0 = a0; + if (a0 == 0 || a0 == 2) + { + sub_800CDA8(2); + r2 = gUnknown_80B87C4; + } + else + { + sub_800CDA8(1); + r2 = gUnknown_80B87E4; + } + gUnknown_202B030 = 0x88888888; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + *r4++ = *r2++; + return r5; +} + +u32 sub_80063B0(void) +{ + return gUnknown_20274B0; +} + +u8 sub_80063BC(u8 a0) +{ + u8 retval = gUnknown_202B034; + gUnknown_202B034 = a0; + return retval; +} + +void sub_80063CC(u32 a0) +{ + gUnknown_20274AC = a0; +} + +void sub_80063D8(int a0) +{ + u32 retval; + if (a0 == 0) + { + gUnknown_20274B0; + retval = 0x88888888; + } + else + { + retval = (a0 & 0xf) | ((a0 & 0xf) << 4); + retval |= ((a0 & 0xf) << 8); + retval |= ((a0 & 0xf) << 12); + retval |= ((a0 & 0xf) << 16); + retval |= ((a0 & 0xf) << 20); + retval |= ((a0 & 0xf) << 24); + retval |= ((a0 & 0xf) << 28); + } + gUnknown_202B030 = retval; +} |