.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start ResetBgs ResetBgs: @ 8001028 push {lr} bl ResetBgControlStructs ldr r1, _0800103C @ =gUnknown_30008D0 movs r0, 0 strh r0, [r1, 0x10] bl SetTextModeAndHideBgs pop {r0} bx r0 .align 2, 0 _0800103C: .4byte gUnknown_30008D0 thumb_func_end ResetBgs thumb_func_start SetBgModeInternal SetBgModeInternal: @ 8001040 lsls r0, 24 lsrs r0, 24 ldr r3, _08001054 @ =gUnknown_30008D0 ldrh r2, [r3, 0x10] ldr r1, _08001058 @ =0x0000fff8 ands r1, r2 orrs r1, r0 strh r1, [r3, 0x10] bx lr .align 2, 0 _08001054: .4byte gUnknown_30008D0 _08001058: .4byte 0x0000fff8 thumb_func_end SetBgModeInternal thumb_func_start GetBgMode GetBgMode: @ 800105C ldr r0, _08001068 @ =gUnknown_30008D0 ldrb r1, [r0, 0x10] movs r0, 0x7 ands r0, r1 bx lr .align 2, 0 _08001068: .4byte gUnknown_30008D0 thumb_func_end GetBgMode thumb_func_start ResetBgControlStructs ResetBgControlStructs: @ 800106C push {lr} ldr r2, _08001084 @ =gUnknown_30008D0 ldr r0, _08001088 @ =gUnknown_81E9F64 ldr r0, [r0] adds r1, r2, 0 adds r1, 0xC _08001078: str r0, [r1] subs r1, 0x4 cmp r1, r2 bge _08001078 pop {r0} bx r0 .align 2, 0 _08001084: .4byte gUnknown_30008D0 _08001088: .4byte gUnknown_81E9F64 thumb_func_end ResetBgControlStructs thumb_func_start Unused_ResetBgControlStruct Unused_ResetBgControlStruct: @ 800108C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl IsInvalidBg lsls r0, 24 cmp r0, 0 bne _080010AA ldr r1, _080010B0 @ =gUnknown_30008D0 lsls r0, r4, 2 adds r0, r1 ldr r1, _080010B4 @ =gUnknown_81E9F64 ldr r1, [r1] str r1, [r0] _080010AA: pop {r4} pop {r0} bx r0 .align 2, 0 _080010B0: .4byte gUnknown_30008D0 _080010B4: .4byte gUnknown_81E9F64 thumb_func_end Unused_ResetBgControlStruct thumb_func_start SetBgControlAttributes SetBgControlAttributes: @ 80010B8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 ldr r4, [sp, 0x30] ldr r5, [sp, 0x34] ldr r6, [sp, 0x38] mov r12, r6 ldr r6, [sp, 0x3C] mov r8, r6 lsls r0, 24 lsrs r7, r0, 24 str r7, [sp] lsls r1, 24 lsrs r1, 24 mov r10, r1 lsls r2, 24 lsrs r6, r2, 24 lsls r3, 24 lsrs r3, 24 mov r9, r3 lsls r4, 24 lsrs r4, 24 str r4, [sp, 0x4] lsls r5, 24 lsrs r5, 24 mov r0, r12 lsls r0, 24 lsrs r4, r0, 24 mov r1, r8 lsls r1, 24 lsrs r1, 24 str r1, [sp, 0xC] adds r0, r7, 0 bl IsInvalidBg lsls r0, 24 lsrs r0, 24 mov r12, r0 cmp r0, 0 bne _080011D0 ldr r2, _080011E0 @ =gUnknown_30008D0 mov r8, r2 mov r0, r10 cmp r0, 0xFF beq _0800112C lsls r2, r7, 2 add r2, r8 movs r1, 0x3 ands r1, r0 ldrb r3, [r2, 0x1] movs r0, 0x4 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2, 0x1] _0800112C: cmp r6, 0xFF beq _08001144 lsls r1, r7, 2 add r1, r8 movs r0, 0x1F ands r6, r0 lsls r3, r6, 2 ldrb r2, [r1, 0x1] subs r0, 0x9C ands r0, r2 orrs r0, r3 strb r0, [r1, 0x1] _08001144: mov r1, r9 cmp r1, 0xFF beq _08001160 lsls r1, r7, 2 add r1, r8 movs r0, 0x3 mov r2, r9 ands r2, r0 lsls r3, r2, 2 ldrb r2, [r1] subs r0, 0x10 ands r0, r2 orrs r0, r3 strb r0, [r1] _08001160: ldr r6, [sp, 0x4] cmp r6, 0xFF beq _08001176 lsls r1, r7, 2 add r1, r8 lsls r3, r6, 7 ldrb r2, [r1, 0x1] movs r0, 0x7F ands r0, r2 orrs r0, r3 strb r0, [r1, 0x1] _08001176: cmp r5, 0xFF beq _0800118E lsls r1, r7, 2 add r1, r8 movs r0, 0x3 ands r5, r0 lsls r3, r5, 4 ldrb r2, [r1] subs r0, 0x34 ands r0, r2 orrs r0, r3 strb r0, [r1] _0800118E: cmp r4, 0xFF beq _080011A6 lsls r1, r7, 2 add r1, r8 movs r0, 0x1 ands r4, r0 lsls r3, r4, 6 ldrb r2, [r1] subs r0, 0x42 ands r0, r2 orrs r0, r3 strb r0, [r1] _080011A6: ldr r0, [sp, 0xC] cmp r0, 0xFF beq _080011BC lsls r1, r7, 2 add r1, r8 lsls r3, r0, 7 ldrb r2, [r1] movs r0, 0x7F ands r0, r2 orrs r0, r3 strb r0, [r1] _080011BC: ldr r1, [sp] lsls r0, r1, 2 add r0, r8 mov r2, r12 strb r2, [r0, 0x2] strb r2, [r0, 0x3] ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] _080011D0: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080011E0: .4byte gUnknown_30008D0 thumb_func_end SetBgControlAttributes thumb_func_start GetBgControlAttribute GetBgControlAttribute: @ 80011E4 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r5, r1, 24 adds r0, r4, 0 bl IsInvalidBg lsls r0, 24 cmp r0, 0 bne _08001290 ldr r1, _0800121C @ =gUnknown_30008D0 lsls r2, r4, 2 adds r0, r2, r1 ldrb r0, [r0] lsls r0, 31 adds r3, r1, 0 cmp r0, 0 beq _08001290 subs r0, r5, 0x1 cmp r0, 0x7 bhi _08001290 lsls r0, 2 ldr r1, _08001220 @ =_08001224 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0800121C: .4byte gUnknown_30008D0 _08001220: .4byte _08001224 .align 2, 0 _08001224: .4byte _08001244 .4byte _0800124E .4byte _08001258 .4byte _08001262 .4byte _0800126C .4byte _08001274 .4byte _0800127E .4byte _08001288 _08001244: adds r0, r2, r3 ldrb r0, [r0] lsls r0, 31 lsrs r0, 31 b _08001292 _0800124E: adds r0, r2, r3 ldrb r0, [r0, 0x1] lsls r0, 30 lsrs r0, 30 b _08001292 _08001258: adds r0, r2, r3 ldrb r0, [r0, 0x1] lsls r0, 25 lsrs r0, 27 b _08001292 _08001262: adds r0, r2, r3 ldrb r0, [r0] lsls r0, 28 lsrs r0, 30 b _08001292 _0800126C: adds r0, r2, r3 ldrb r0, [r0, 0x1] lsrs r0, 7 b _08001292 _08001274: adds r0, r2, r3 ldrb r0, [r0] lsls r0, 26 lsrs r0, 30 b _08001292 _0800127E: adds r0, r2, r3 ldrb r0, [r0] lsls r0, 25 lsrs r0, 31 b _08001292 _08001288: adds r0, r2, r3 ldrb r0, [r0] lsrs r0, 7 b _08001292 _08001290: movs r0, 0xFF _08001292: pop {r4,r5} pop {r1} bx r1 thumb_func_end GetBgControlAttribute thumb_func_start LoadBgVram LoadBgVram: @ 8001298 push {r4-r7,lr} mov r7, r8 push {r7} mov r8, r1 ldr r1, [sp, 0x18] lsls r0, 24 lsrs r4, r0, 24 lsls r2, 16 lsrs r7, r2, 16 lsls r3, 16 lsrs r6, r3, 16 lsls r1, 24 lsrs r5, r1, 24 adds r0, r4, 0 bl IsInvalidBg lsls r0, 24 cmp r0, 0 bne _08001310 ldr r1, _080012D8 @ =gUnknown_30008D0 lsls r0, r4, 2 adds r1, r0, r1 ldrb r0, [r1] lsls r0, 31 cmp r0, 0 beq _08001310 cmp r5, 0x1 beq _080012DC cmp r5, 0x2 beq _080012E4 movs r2, 0xFF b _08001314 .align 2, 0 _080012D8: .4byte gUnknown_30008D0 _080012DC: ldrb r0, [r1, 0x1] lsls r0, 30 lsrs r0, 16 b _080012EC _080012E4: ldrb r0, [r1, 0x1] lsls r0, 25 lsrs r0, 27 lsls r0, 11 _080012EC: adds r0, r6, r0 lsls r0, 16 lsrs r0, 16 movs r1, 0xC0 lsls r1, 19 adds r1, r0, r1 mov r0, r8 adds r2, r7, 0 movs r3, 0 bl RequestDma3Copy lsls r0, 24 lsrs r2, r0, 24 asrs r0, 24 movs r1, 0x1 negs r1, r1 cmp r0, r1 bne _08001314 _08001310: movs r0, 0xFF b _08001316 _08001314: adds r0, r2, 0 _08001316: pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end LoadBgVram thumb_func_start ShowBgInternal ShowBgInternal: @ 8001320 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl IsInvalidBg lsls r0, 24 cmp r0, 0 bne _0800138E ldr r5, _08001394 @ =gUnknown_30008D0 lsls r0, r4, 2 adds r2, r0, r5 ldrb r3, [r2] lsls r0, r3, 31 cmp r0, 0 beq _0800138E lsls r1, r3, 26 lsrs r1, 30 ldrb r2, [r2, 0x1] lsls r0, r2, 30 lsrs r0, 28 orrs r1, r0 movs r0, 0x40 ands r0, r3 orrs r1, r0 lsrs r0, r2, 7 lsls r0, 7 orrs r1, r0 lsls r2, 25 lsrs r2, 27 lsls r2, 8 orrs r1, r2 lsrs r0, r3, 7 lsls r0, 13 orrs r1, r0 lsls r0, r3, 28 lsrs r0, 30 lsls r0, 14 orrs r1, r0 lsls r0, r4, 25 movs r2, 0x80 lsls r2, 20 adds r0, r2 lsrs r0, 24 bl SetGpuReg adds r1, r4, 0 adds r1, 0x8 movs r0, 0x1 lsls r0, r1 ldrh r1, [r5, 0x10] orrs r0, r1 ldr r1, _08001398 @ =0x00000f07 ands r0, r1 strh r0, [r5, 0x10] _0800138E: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08001394: .4byte gUnknown_30008D0 _08001398: .4byte 0x00000f07 thumb_func_end ShowBgInternal thumb_func_start HideBgInternal HideBgInternal: @ 800139C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl IsInvalidBg lsls r0, 24 cmp r0, 0 bne _080013C2 ldr r2, _080013C8 @ =gUnknown_30008D0 adds r0, r4, 0 adds r0, 0x8 movs r1, 0x1 lsls r1, r0 ldrh r0, [r2, 0x10] bics r0, r1 ldr r1, _080013CC @ =0x00000f07 ands r0, r1 strh r0, [r2, 0x10] _080013C2: pop {r4} pop {r0} bx r0 .align 2, 0 _080013C8: .4byte gUnknown_30008D0 _080013CC: .4byte 0x00000f07 thumb_func_end HideBgInternal thumb_func_start SyncBgVisibilityAndMode SyncBgVisibilityAndMode: @ 80013D0 push {lr} movs r0, 0 bl GetGpuReg ldr r1, _080013EC @ =0x0000f0f8 ands r1, r0 ldr r0, _080013F0 @ =gUnknown_30008D0 ldrh r0, [r0, 0x10] orrs r1, r0 movs r0, 0 bl SetGpuReg pop {r0} bx r0 .align 2, 0 _080013EC: .4byte 0x0000f0f8 _080013F0: .4byte gUnknown_30008D0 thumb_func_end SyncBgVisibilityAndMode thumb_func_start SetTextModeAndHideBgs SetTextModeAndHideBgs: @ 80013F4 push {lr} movs r0, 0 bl GetGpuReg ldr r1, _0800140C @ =0x0000f0f8 ands r1, r0 movs r0, 0 bl SetGpuReg pop {r0} bx r0 .align 2, 0 _0800140C: .4byte 0x0000f0f8 thumb_func_end SetTextModeAndHideBgs thumb_func_start SetBgAffineInternal SetBgAffineInternal: @ 8001410 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x24 mov r12, r1 mov r8, r2 ldr r1, [sp, 0x3C] ldr r2, [sp, 0x40] ldr r4, [sp, 0x44] ldr r5, [sp, 0x48] lsls r0, 24 lsrs r6, r0, 24 lsls r3, 16 lsrs r3, 16 lsls r1, 16 lsrs r7, r1, 16 lsls r2, 16 lsrs r2, 16 lsls r4, 16 lsrs r4, 16 lsls r5, 16 lsrs r5, 16 ldr r0, _08001454 @ =gUnknown_30008D0 ldrh r0, [r0, 0x10] movs r1, 0x7 ands r1, r0 cmp r1, 0x1 beq _08001458 cmp r1, 0x1 ble _080014CE cmp r1, 0x2 beq _0800145E b _080014CE .align 2, 0 _08001454: .4byte gUnknown_30008D0 _08001458: cmp r6, 0x2 bne _080014CE b _08001468 _0800145E: subs r0, r6, 0x2 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _080014CE _08001468: mov r0, r12 str r0, [sp] mov r0, r8 str r0, [sp, 0x4] mov r0, sp strh r3, [r0, 0x8] strh r7, [r0, 0xA] strh r2, [r0, 0xC] strh r4, [r0, 0xE] strh r5, [r0, 0x10] add r4, sp, 0x14 adds r1, r4, 0 movs r2, 0x1 bl BgAffineSet ldrh r1, [r4] movs r0, 0x20 bl SetGpuReg ldrh r1, [r4, 0x2] movs r0, 0x22 bl SetGpuReg ldrh r1, [r4, 0x4] movs r0, 0x24 bl SetGpuReg ldrh r1, [r4, 0x6] movs r0, 0x26 bl SetGpuReg ldrh r1, [r4] movs r0, 0x20 bl SetGpuReg ldrh r1, [r4, 0x8] movs r0, 0x28 bl SetGpuReg ldrh r1, [r4, 0xA] movs r0, 0x2A bl SetGpuReg ldrh r1, [r4, 0xC] movs r0, 0x2C bl SetGpuReg ldrh r1, [r4, 0xE] movs r0, 0x2E bl SetGpuReg _080014CE: add sp, 0x24 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end SetBgAffineInternal thumb_func_start IsInvalidBg IsInvalidBg: @ 80014DC push {lr} lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 bhi _080014EA movs r0, 0 b _080014EC _080014EA: movs r0, 0x1 _080014EC: pop {r1} bx r1 thumb_func_end IsInvalidBg thumb_func_start sub_80014F0 sub_80014F0: @ 80014F0 push {r4-r7,lr} mov r7, r8 push {r7} adds r5, r1, 0 mov r8, r2 cmp r3, 0x1 beq _08001582 cmp r3, 0x1 bgt _08001508 cmp r3, 0 beq _0800150E b _08001606 _08001508: cmp r3, 0x2 beq _080015C8 b _08001606 _0800150E: lsls r0, 24 lsrs r0, 24 movs r1, 0x2 bl GetBgControlAttribute lsls r0, 16 lsrs r0, 7 movs r1, 0x80 lsls r1, 3 adds r4, r0, r1 movs r1, 0x80 lsls r1, 4 cmp r4, r1 ble _0800152C adds r4, r1, 0 _0800152C: movs r2, 0 movs r6, 0 adds r3, r0, 0 movs r5, 0 cmp r3, r4 bge _0800157C ldr r7, _08001568 @ =gUnknown_3000938 mov r12, r7 _0800153C: adds r0, r3, 0 cmp r3, 0 bge _08001544 adds r0, r3, 0x7 _08001544: asrs r0, 3 mov r7, r12 adds r1, r0, r7 ldrb r1, [r1] lsls r0, 3 subs r0, r3, r0 asrs r1, r0 movs r0, 0x1 ands r1, r0 cmp r1, 0 bne _08001572 cmp r2, 0 beq _0800156C adds r2, 0x1 cmp r2, r8 bne _08001574 adds r0, r6, 0 b _08001608 .align 2, 0 _08001568: .4byte gUnknown_3000938 _0800156C: adds r6, r5, 0 movs r2, 0x1 b _08001574 _08001572: movs r2, 0 _08001574: adds r3, 0x1 adds r5, 0x1 cmp r3, r4 blt _0800153C _0800157C: movs r0, 0x1 negs r0, r0 b _08001608 _08001582: lsls r0, 24 lsrs r0, 24 movs r1, 0x2 bl GetBgControlAttribute lsls r0, 16 lsrs r0, 7 adds r0, r5 mov r1, r8 adds r4, r0, r1 adds r3, r0, 0 cmp r3, r4 bge _08001606 ldr r5, _080015C4 @ =gUnknown_3000938 movs r6, 0x1 _080015A0: adds r1, r3, 0 cmp r3, 0 bge _080015A8 adds r1, r3, 0x7 _080015A8: asrs r1, 3 adds r2, r1, r5 lsls r1, 3 subs r1, r3, r1 adds r0, r6, 0 lsls r0, r1 ldrb r1, [r2] orrs r0, r1 strb r0, [r2] adds r3, 0x1 cmp r3, r4 blt _080015A0 b _08001606 .align 2, 0 _080015C4: .4byte gUnknown_3000938 _080015C8: lsls r0, 24 lsrs r0, 24 movs r1, 0x2 bl GetBgControlAttribute lsls r0, 16 lsrs r0, 7 adds r0, r5 mov r7, r8 adds r4, r0, r7 adds r3, r0, 0 cmp r3, r4 bge _08001606 ldr r5, _08001614 @ =gUnknown_3000938 movs r6, 0x1 _080015E6: adds r0, r3, 0 cmp r3, 0 bge _080015EE adds r0, r3, 0x7 _080015EE: asrs r0, 3 adds r2, r0, r5 lsls r0, 3 subs r0, r3, r0 adds r1, r6, 0 lsls r1, r0 ldrb r0, [r2] bics r0, r1 strb r0, [r2] adds r3, 0x1 cmp r3, r4 blt _080015E6 _08001606: movs r0, 0 _08001608: pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _08001614: .4byte gUnknown_3000938 thumb_func_end sub_80014F0 thumb_func_start sub_8001618 sub_8001618: @ 8001618 push {r4,lr} adds r4, r0, 0 bl ResetBgs ldr r1, _0800164C @ =gUnknown_3000928 movs r2, 0 adds r0, r1, 0 adds r0, 0xC _08001628: str r2, [r0] subs r0, 0x4 cmp r0, r1 bge _08001628 ldr r0, _08001650 @ =gUnknown_3003D8C str r4, [r0] ldr r1, _08001654 @ =gUnknown_3000938 movs r2, 0 adds r0, r1, 0 adds r0, 0xFF _0800163C: strb r2, [r0] subs r0, 0x1 cmp r0, r1 bge _0800163C pop {r4} pop {r0} bx r0 .align 2, 0 _0800164C: .4byte gUnknown_3000928 _08001650: .4byte gUnknown_3003D8C _08001654: .4byte gUnknown_3000938 thumb_func_end sub_8001618 thumb_func_start sub_8001658 sub_8001658: @ 8001658 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 adds r5, r1, 0 lsls r0, 24 lsrs r0, 24 lsls r2, 24 lsrs r4, r2, 24 bl SetBgModeInternal bl ResetBgControlStructs cmp r4, 0 beq _08001712 movs r7, 0 ldr r0, _08001724 @ =gUnknown_30008E8 mov r9, r0 adds r6, r5, 0 ldr r2, _08001728 @ =gUnknown_3000938 mov r10, r2 mov r8, r4 _08001688: ldr r4, [r6] lsls r0, r4, 30 lsrs r5, r0, 30 cmp r5, 0x3 bhi _08001704 lsls r1, r4, 28 lsrs r1, 30 lsls r2, r4, 23 lsrs r2, 27 lsls r3, r4, 21 lsrs r3, 30 lsls r0, r4, 20 lsrs r0, 31 str r0, [sp] lsls r0, r4, 18 lsrs r0, 30 str r0, [sp, 0x4] str r7, [sp, 0x8] str r7, [sp, 0xC] adds r0, r5, 0 bl SetBgControlAttributes lsls r4, r5, 4 mov r5, r9 adds r3, r4, r5 ldr r2, [r6] lsls r2, 8 lsrs r2, 22 ldrh r0, [r3] ldr r5, _0800172C @ =0xfffffc00 adds r1, r5, 0 ands r0, r1 orrs r0, r2 strh r0, [r3] ldrb r0, [r3, 0x1] movs r2, 0x3D negs r2, r2 adds r1, r2, 0 ands r0, r1 strb r0, [r3, 0x1] ldr r0, [r3] ldr r1, _08001730 @ =0x00003fff ands r0, r1 str r0, [r3] mov r0, r9 adds r0, 0x4 adds r0, r4, r0 str r7, [r0] mov r0, r9 adds r0, 0x8 adds r0, r4, r0 str r7, [r0] ldr r5, _08001734 @ =gUnknown_30008F4 adds r4, r5 str r7, [r4] ldr r0, [r6] lsls r0, 28 lsrs r0, 30 lsls r0, 6 add r0, r10 movs r1, 0x1 strb r1, [r0] _08001704: adds r6, 0x4 movs r0, 0x1 negs r0, r0 add r8, r0 mov r2, r8 cmp r2, 0 bne _08001688 _08001712: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08001724: .4byte gUnknown_30008E8 _08001728: .4byte gUnknown_3000938 _0800172C: .4byte 0xfffffc00 _08001730: .4byte 0x00003fff _08001734: .4byte gUnknown_30008F4 thumb_func_end sub_8001658 thumb_func_start sub_8001738 sub_8001738: @ 8001738 push {r4-r7,lr} sub sp, 0x10 adds r7, r0, 0 ldr r4, [r7] lsls r0, r4, 30 lsrs r5, r0, 30 cmp r5, 0x3 bhi _080017B8 lsls r1, r4, 28 lsrs r1, 30 lsls r2, r4, 23 lsrs r2, 27 lsls r3, r4, 21 lsrs r3, 30 lsls r0, r4, 20 lsrs r0, 31 str r0, [sp] lsls r0, r4, 18 lsrs r0, 30 str r0, [sp, 0x4] movs r6, 0 str r6, [sp, 0x8] str r6, [sp, 0xC] adds r0, r5, 0 bl SetBgControlAttributes ldr r4, _080017C0 @ =gUnknown_30008E8 lsls r5, 4 adds r3, r5, r4 ldr r1, [r7] lsls r1, 8 lsrs r1, 22 ldrh r2, [r3] ldr r0, _080017C4 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r3] ldrb r1, [r3, 0x1] movs r0, 0x3D negs r0, r0 ands r0, r1 strb r0, [r3, 0x1] ldr r0, [r3] ldr r1, _080017C8 @ =0x00003fff ands r0, r1 str r0, [r3] adds r0, r4, 0x4 adds r0, r5, r0 str r6, [r0] adds r0, r4, 0 adds r0, 0x8 adds r0, r5, r0 str r6, [r0] adds r4, 0xC adds r5, r4 str r6, [r5] ldr r1, _080017CC @ =gUnknown_3000938 ldr r0, [r7] lsls r0, 28 lsrs r0, 30 lsls r0, 6 adds r0, r1 movs r1, 0x1 strb r1, [r0] _080017B8: add sp, 0x10 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080017C0: .4byte gUnknown_30008E8 _080017C4: .4byte 0xfffffc00 _080017C8: .4byte 0x00003fff _080017CC: .4byte gUnknown_3000938 thumb_func_end sub_8001738 thumb_func_start LoadBgTiles LoadBgTiles: @ 80017D0 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 adds r7, r1, 0 lsls r0, 24 lsrs r5, r0, 24 lsls r2, 16 lsrs r2, 16 mov r8, r2 lsls r3, 16 lsrs r4, r3, 16 adds r0, r5, 0 movs r1, 0x5 bl GetBgControlAttribute lsls r0, 16 cmp r0, 0 bne _0800180C ldr r1, _08001808 @ =gUnknown_30008E8 lsls r0, r5, 4 adds r0, r1 ldrh r0, [r0] lsls r0, 22 lsrs r0, 22 adds r0, r4 lsls r0, 21 b _0800181C .align 2, 0 _08001808: .4byte gUnknown_30008E8 _0800180C: ldr r1, _0800183C @ =gUnknown_30008E8 lsls r0, r5, 4 adds r0, r1 ldrh r0, [r0] lsls r0, 22 lsrs r0, 22 adds r0, r4 lsls r0, 22 _0800181C: lsrs r4, r0, 16 movs r6, 0x1 str r6, [sp] adds r0, r5, 0 adds r1, r7, 0 mov r2, r8 adds r3, r4, 0 bl LoadBgVram lsls r2, r0, 24 lsrs r1, r2, 24 adds r7, r1, 0 cmp r1, 0xFF bne _08001844 ldr r0, _08001840 @ =0x0000ffff b _08001872 .align 2, 0 _0800183C: .4byte gUnknown_30008E8 _08001840: .4byte 0x0000ffff _08001844: ldr r0, _08001880 @ =gUnknown_3000928 lsrs r2, 29 lsls r2, 2 adds r2, r0 movs r0, 0x1F ands r0, r1 adds r1, r6, 0 lsls r1, r0 ldr r0, [r2] orrs r0, r1 str r0, [r2] ldr r0, _08001884 @ =gUnknown_3003D8C ldr r0, [r0] cmp r0, 0x1 bne _08001870 lsrs r1, r4, 5 mov r0, r8 lsrs r2, r0, 5 adds r0, r5, 0 movs r3, 0x1 bl sub_80014F0 _08001870: adds r0, r7, 0 _08001872: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _08001880: .4byte gUnknown_3000928 _08001884: .4byte gUnknown_3003D8C thumb_func_end LoadBgTiles thumb_func_start LoadBgTilemap LoadBgTilemap: @ 8001888 push {r4,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 lsls r2, 16 lsrs r2, 16 lsls r3, 21 lsrs r3, 16 movs r4, 0x2 str r4, [sp] bl LoadBgVram lsls r2, r0, 24 lsrs r3, r2, 24 cmp r3, 0xFF beq _080018C8 ldr r0, _080018C4 @ =gUnknown_3000928 lsrs r2, 29 lsls r2, 2 adds r2, r0 movs r0, 0x1F ands r0, r3 movs r1, 0x1 lsls r1, r0 ldr r0, [r2] orrs r0, r1 str r0, [r2] adds r0, r3, 0 b _080018CA .align 2, 0 _080018C4: .4byte gUnknown_3000928 _080018C8: ldr r0, _080018D4 @ =0x0000ffff _080018CA: add sp, 0x4 pop {r4} pop {r1} bx r1 .align 2, 0 _080018D4: .4byte 0x0000ffff thumb_func_end LoadBgTilemap thumb_func_start Unused_LoadBgPalette Unused_LoadBgPalette: @ 80018D8 push {r4-r7,lr} adds r7, r1, 0 lsls r0, 24 lsrs r4, r0, 24 lsls r2, 16 lsrs r6, r2, 16 lsls r3, 16 lsrs r5, r3, 16 adds r0, r4, 0 bl IsInvalidBg32 cmp r0, 0 bne _08001924 ldr r1, _08001928 @ =gUnknown_30008E8 lsls r0, r4, 4 adds r0, r1 ldrb r1, [r0, 0x1] lsls r1, 26 lsrs r1, 28 lsls r1, 5 lsls r0, r5, 1 adds r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0xA0 lsls r0, 19 adds r1, r0 adds r0, r7, 0 adds r2, r6, 0 movs r3, 0 bl RequestDma3Copy lsls r3, r0, 24 asrs r1, r3, 24 movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _08001930 _08001924: ldr r0, _0800192C @ =0x0000ffff b _08001954 .align 2, 0 _08001928: .4byte gUnknown_30008E8 _0800192C: .4byte 0x0000ffff _08001930: ldr r4, _0800195C @ =gUnknown_3000928 adds r0, r1, 0 cmp r1, 0 bge _0800193A adds r0, 0x1F _0800193A: asrs r0, 5 lsls r2, r0, 2 adds r2, r4 lsls r0, 5 subs r0, r1, r0 lsls r0, 24 asrs r0, 24 movs r1, 0x1 lsls r1, r0 ldr r0, [r2] orrs r0, r1 str r0, [r2] lsrs r0, r3, 24 _08001954: pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0800195C: .4byte gUnknown_3000928 thumb_func_end Unused_LoadBgPalette thumb_func_start IsDma3ManagerBusyWithBgCopy IsDma3ManagerBusyWithBgCopy: @ 8001960 push {r4-r7,lr} movs r5, 0 movs r7, 0x1 negs r7, r7 _08001968: adds r0, r5, 0 cmp r5, 0 bge _08001970 adds r0, 0x1F _08001970: asrs r0, 5 lsls r2, r0, 24 lsls r0, 5 subs r0, r5, r0 lsls r0, 24 lsrs r0, 24 ldr r1, _080019A4 @ =gUnknown_3000928 lsrs r2, 22 adds r4, r2, r1 movs r6, 0x1 lsls r6, r0 ldr r0, [r4] ands r0, r6 cmp r0, 0 beq _080019AE lsls r0, r5, 16 asrs r0, 16 bl CheckForSpaceForDma3Request lsls r0, 24 asrs r0, 24 cmp r0, r7 bne _080019A8 movs r0, 0x1 b _080019B6 .align 2, 0 _080019A4: .4byte gUnknown_3000928 _080019A8: ldr r0, [r4] bics r0, r6 str r0, [r4] _080019AE: adds r5, 0x1 cmp r5, 0x7F ble _08001968 movs r0, 0 _080019B6: pop {r4-r7} pop {r1} bx r1 thumb_func_end IsDma3ManagerBusyWithBgCopy thumb_func_start ShowBg ShowBg: @ 80019BC push {lr} lsls r0, 24 lsrs r0, 24 bl ShowBgInternal bl SyncBgVisibilityAndMode pop {r0} bx r0 thumb_func_end ShowBg thumb_func_start HideBg HideBg: @ 80019D0 push {lr} lsls r0, 24 lsrs r0, 24 bl HideBgInternal bl SyncBgVisibilityAndMode pop {r0} bx r0 thumb_func_end HideBg thumb_func_start SetBgAttribute SetBgAttribute: @ 80019E4 push {r4,lr} sub sp, 0x10 lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r1, 24 lsls r2, 24 lsrs r3, r2, 24 subs r0, r1, 0x1 cmp r0, 0x6 bhi _08001A9E lsls r0, 2 ldr r1, _08001A04 @ =_08001A08 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08001A04: .4byte _08001A08 .align 2, 0 _08001A08: .4byte _08001A24 .4byte _08001A34 .4byte _08001A46 .4byte _08001A5C .4byte _08001A70 .4byte _08001A88 .4byte _08001A66 _08001A24: movs r0, 0xFF str r0, [sp] str r0, [sp, 0x4] str r0, [sp, 0x8] str r0, [sp, 0xC] adds r0, r4, 0 adds r1, r3, 0 b _08001A7E _08001A34: movs r0, 0xFF str r0, [sp] str r0, [sp, 0x4] str r0, [sp, 0x8] str r0, [sp, 0xC] adds r0, r4, 0 movs r1, 0xFF adds r2, r3, 0 b _08001A80 _08001A46: movs r0, 0xFF str r0, [sp] str r0, [sp, 0x4] str r0, [sp, 0x8] str r0, [sp, 0xC] adds r0, r4, 0 movs r1, 0xFF movs r2, 0xFF bl SetBgControlAttributes b _08001A9E _08001A5C: str r3, [sp] movs r0, 0xFF str r0, [sp, 0x4] str r0, [sp, 0x8] b _08001A78 _08001A66: movs r0, 0xFF str r0, [sp] str r3, [sp, 0x4] str r0, [sp, 0x8] b _08001A78 _08001A70: movs r0, 0xFF str r0, [sp] str r0, [sp, 0x4] str r3, [sp, 0x8] _08001A78: str r0, [sp, 0xC] adds r0, r4, 0 movs r1, 0xFF _08001A7E: movs r2, 0xFF _08001A80: movs r3, 0xFF bl SetBgControlAttributes b _08001A9E _08001A88: movs r0, 0xFF str r0, [sp] str r0, [sp, 0x4] str r0, [sp, 0x8] str r3, [sp, 0xC] adds r0, r4, 0 movs r1, 0xFF movs r2, 0xFF movs r3, 0xFF bl SetBgControlAttributes _08001A9E: add sp, 0x10 pop {r4} pop {r0} bx r0 thumb_func_end SetBgAttribute thumb_func_start GetBgAttribute GetBgAttribute: @ 8001AA8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r1, 24 subs r0, r1, 0x1 cmp r0, 0x9 bhi _08001B84 lsls r0, 2 ldr r1, _08001AC4 @ =_08001AC8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08001AC4: .4byte _08001AC8 .align 2, 0 _08001AC8: .4byte _08001AF0 .4byte _08001AFA .4byte _08001B04 .4byte _08001B0E .4byte _08001B22 .4byte _08001B2C .4byte _08001B18 .4byte _08001B36 .4byte _08001B64 .4byte _08001B70 _08001AF0: adds r0, r4, 0 movs r1, 0x2 bl GetBgControlAttribute b _08001B6A _08001AFA: adds r0, r4, 0 movs r1, 0x3 bl GetBgControlAttribute b _08001B6A _08001B04: adds r0, r4, 0 movs r1, 0x4 bl GetBgControlAttribute b _08001B6A _08001B0E: adds r0, r4, 0 movs r1, 0x5 bl GetBgControlAttribute b _08001B6A _08001B18: adds r0, r4, 0 movs r1, 0x6 bl GetBgControlAttribute b _08001B6A _08001B22: adds r0, r4, 0 movs r1, 0x7 bl GetBgControlAttribute b _08001B6A _08001B2C: adds r0, r4, 0 movs r1, 0x8 bl GetBgControlAttribute b _08001B6A _08001B36: adds r0, r4, 0 bl GetBgType cmp r0, 0 beq _08001B48 cmp r0, 0x1 beq _08001B56 movs r0, 0 b _08001B86 _08001B48: adds r0, r4, 0 movs r1, 0 bl GetBgMetricTextMode lsls r0, 27 lsrs r0, 16 b _08001B86 _08001B56: adds r0, r4, 0 movs r1, 0 bl GetBgMetricAffineMode lsls r0, 24 lsrs r0, 16 b _08001B86 _08001B64: adds r0, r4, 0 bl GetBgType _08001B6A: lsls r0, 16 lsrs r0, 16 b _08001B86 _08001B70: ldr r0, _08001B80 @ =gUnknown_30008E8 lsls r1, r4, 4 adds r1, r0 ldrh r0, [r1] lsls r0, 22 lsrs r0, 22 b _08001B86 .align 2, 0 _08001B80: .4byte gUnknown_30008E8 _08001B84: ldr r0, _08001B8C @ =0x0000ffff _08001B86: pop {r4} pop {r1} bx r1 .align 2, 0 _08001B8C: .4byte 0x0000ffff thumb_func_end GetBgAttribute thumb_func_start ChangeBgX ChangeBgX: @ 8001B90 push {r4-r6,lr} adds r6, r1, 0 lsls r0, 24 lsrs r4, r0, 24 lsls r2, 24 lsrs r5, r2, 24 adds r0, r4, 0 bl IsInvalidBg32 cmp r0, 0 bne _08001BB4 adds r0, r4, 0 movs r1, 0x1 bl GetBgControlAttribute lsls r0, 16 cmp r0, 0 bne _08001BBA _08001BB4: movs r0, 0x1 negs r0, r0 b _08001CC0 _08001BBA: cmp r5, 0x1 beq _08001BD8 cmp r5, 0x1 ble _08001BC6 cmp r5, 0x2 beq _08001BEC _08001BC6: ldr r0, _08001BD4 @ =gUnknown_30008E8 lsls r1, r4, 4 adds r0, 0x8 adds r0, r1, r0 str r6, [r0] adds r5, r1, 0 b _08001BFC .align 2, 0 _08001BD4: .4byte gUnknown_30008E8 _08001BD8: ldr r0, _08001BE8 @ =gUnknown_30008E8 lsls r2, r4, 4 adds r0, 0x8 adds r0, r2, r0 ldr r1, [r0] adds r1, r6 b _08001BF8 .align 2, 0 _08001BE8: .4byte gUnknown_30008E8 _08001BEC: ldr r0, _08001C14 @ =gUnknown_30008E8 lsls r2, r4, 4 adds r0, 0x8 adds r0, r2, r0 ldr r1, [r0] subs r1, r6 _08001BF8: str r1, [r0] adds r5, r2, 0 _08001BFC: bl GetBgMode lsls r0, 24 lsrs r0, 24 cmp r4, 0x1 beq _08001C38 cmp r4, 0x1 bgt _08001C18 cmp r4, 0 beq _08001C22 b _08001CB8 .align 2, 0 _08001C14: .4byte gUnknown_30008E8 _08001C18: cmp r4, 0x2 beq _08001C4C cmp r4, 0x3 beq _08001C84 b _08001CB8 _08001C22: ldr r0, _08001C34 @ =gUnknown_30008E8 ldr r0, [r0, 0x8] lsls r0, 8 lsrs r1, r0, 16 movs r0, 0x10 bl SetGpuReg b _08001CB8 .align 2, 0 _08001C34: .4byte gUnknown_30008E8 _08001C38: ldr r0, _08001C48 @ =gUnknown_30008E8 ldr r0, [r0, 0x18] lsls r0, 8 lsrs r1, r0, 16 movs r0, 0x14 bl SetGpuReg b _08001CB8 .align 2, 0 _08001C48: .4byte gUnknown_30008E8 _08001C4C: cmp r0, 0 bne _08001C64 ldr r0, _08001C60 @ =gUnknown_30008E8 ldr r0, [r0, 0x28] lsls r0, 8 lsrs r1, r0, 16 movs r0, 0x18 bl SetGpuReg b _08001CB8 .align 2, 0 _08001C60: .4byte gUnknown_30008E8 _08001C64: ldr r0, _08001C80 @ =gUnknown_30008E8 ldr r0, [r0, 0x28] lsrs r1, r0, 16 lsls r0, 16 lsrs r4, r0, 16 movs r0, 0x2A bl SetGpuReg movs r0, 0x28 adds r1, r4, 0 bl SetGpuReg b _08001CB8 .align 2, 0 _08001C80: .4byte gUnknown_30008E8 _08001C84: cmp r0, 0 bne _08001C9C ldr r0, _08001C98 @ =gUnknown_30008E8 ldr r0, [r0, 0x38] lsls r0, 8 lsrs r1, r0, 16 movs r0, 0x1C bl SetGpuReg b _08001CB8 .align 2, 0 _08001C98: .4byte gUnknown_30008E8 _08001C9C: cmp r0, 0x2 bne _08001CB8 ldr r0, _08001CC8 @ =gUnknown_30008E8 ldr r0, [r0, 0x38] lsrs r1, r0, 16 lsls r0, 16 lsrs r4, r0, 16 movs r0, 0x3A bl SetGpuReg movs r0, 0x38 adds r1, r4, 0 bl SetGpuReg _08001CB8: ldr r0, _08001CC8 @ =gUnknown_30008E8 adds r0, 0x8 adds r0, r5, r0 ldr r0, [r0] _08001CC0: pop {r4-r6} pop {r1} bx r1 .align 2, 0 _08001CC8: .4byte gUnknown_30008E8 thumb_func_end ChangeBgX thumb_func_start GetBgX GetBgX: @ 8001CCC push {r4,lr} lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 bl IsInvalidBg32 cmp r0, 0 bne _08001CFC adds r0, r4, 0 movs r1, 0x1 bl GetBgControlAttribute lsls r0, 16 cmp r0, 0 beq _08001CFC ldr r0, _08001CF8 @ =gUnknown_30008E8 lsls r1, r4, 4 adds r0, 0x8 adds r1, r0 ldr r0, [r1] b _08001D00 .align 2, 0 _08001CF8: .4byte gUnknown_30008E8 _08001CFC: movs r0, 0x1 negs r0, r0 _08001D00: pop {r4} pop {r1} bx r1 thumb_func_end GetBgX thumb_func_start ChangeBgY ChangeBgY: @ 8001D08 push {r4-r6,lr} adds r6, r1, 0 lsls r0, 24 lsrs r4, r0, 24 lsls r2, 24 lsrs r5, r2, 24 adds r0, r4, 0 bl IsInvalidBg32 cmp r0, 0 bne _08001D2C adds r0, r4, 0 movs r1, 0x1 bl GetBgControlAttribute lsls r0, 16 cmp r0, 0 bne _08001D32 _08001D2C: movs r0, 0x1 negs r0, r0 b _08001E38 _08001D32: cmp r5, 0x1 beq _08001D50 cmp r5, 0x1 ble _08001D3E cmp r5, 0x2 beq _08001D64 _08001D3E: ldr r0, _08001D4C @ =gUnknown_30008E8 lsls r1, r4, 4 adds r0, 0xC adds r0, r1, r0 str r6, [r0] adds r5, r1, 0 b _08001D74 .align 2, 0 _08001D4C: .4byte gUnknown_30008E8 _08001D50: ldr r0, _08001D60 @ =gUnknown_30008E8 lsls r2, r4, 4 adds r0, 0xC adds r0, r2, r0 ldr r1, [r0] adds r1, r6 b _08001D70 .align 2, 0 _08001D60: .4byte gUnknown_30008E8 _08001D64: ldr r0, _08001D8C @ =gUnknown_30008E8 lsls r2, r4, 4 adds r0, 0xC adds r0, r2, r0 ldr r1, [r0] subs r1, r6 _08001D70: str r1, [r0] adds r5, r2, 0 _08001D74: bl GetBgMode lsls r0, 24 lsrs r0, 24 cmp r4, 0x1 beq _08001DB0 cmp r4, 0x1 bgt _08001D90 cmp r4, 0 beq _08001D9A b _08001E30 .align 2, 0 _08001D8C: .4byte gUnknown_30008E8 _08001D90: cmp r4, 0x2 beq _08001DC4 cmp r4, 0x3 beq _08001DFC b _08001E30 _08001D9A: ldr r0, _08001DAC @ =gUnknown_30008E8 ldr r0, [r0, 0xC] lsls r0, 8 lsrs r1, r0, 16 movs r0, 0x12 bl SetGpuReg b _08001E30 .align 2, 0 _08001DAC: .4byte gUnknown_30008E8 _08001DB0: ldr r0, _08001DC0 @ =gUnknown_30008E8 ldr r0, [r0, 0x1C] lsls r0, 8 lsrs r1, r0, 16 movs r0, 0x16 bl SetGpuReg b _08001E30 .align 2, 0 _08001DC0: .4byte gUnknown_30008E8 _08001DC4: cmp r0, 0 bne _08001DDC ldr r0, _08001DD8 @ =gUnknown_30008E8 ldr r0, [r0, 0x2C] lsls r0, 8 lsrs r1, r0, 16 movs r0, 0x1A bl SetGpuReg b _08001E30 .align 2, 0 _08001DD8: .4byte gUnknown_30008E8 _08001DDC: ldr r0, _08001DF8 @ =gUnknown_30008E8 ldr r0, [r0, 0x2C] lsrs r1, r0, 16 lsls r0, 16 lsrs r4, r0, 16 movs r0, 0x2E bl SetGpuReg movs r0, 0x2C adds r1, r4, 0 bl SetGpuReg b _08001E30 .align 2, 0 _08001DF8: .4byte gUnknown_30008E8 _08001DFC: cmp r0, 0 bne _08001E14 ldr r0, _08001E10 @ =gUnknown_30008E8 ldr r0, [r0, 0x3C] lsls r0, 8 lsrs r1, r0, 16 movs r0, 0x1E bl SetGpuReg b _08001E30 .align 2, 0 _08001E10: .4byte gUnknown_30008E8 _08001E14: cmp r0, 0x2 bne _08001E30 ldr r0, _08001E40 @ =gUnknown_30008E8 ldr r0, [r0, 0x3C] lsrs r1, r0, 16 lsls r0, 16 lsrs r4, r0, 16 movs r0, 0x3E bl SetGpuReg movs r0, 0x3C adds r1, r4, 0 bl SetGpuReg _08001E30: ldr r0, _08001E40 @ =gUnknown_30008E8 adds r0, 0xC adds r0, r5, r0 ldr r0, [r0] _08001E38: pop {r4-r6} pop {r1} bx r1 .align 2, 0 _08001E40: .4byte gUnknown_30008E8 thumb_func_end ChangeBgY thumb_func_start GetBgY GetBgY: @ 8001E44 push {r4,lr} lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 bl IsInvalidBg32 cmp r0, 0 bne _08001E74 adds r0, r4, 0 movs r1, 0x1 bl GetBgControlAttribute lsls r0, 16 cmp r0, 0 beq _08001E74 ldr r0, _08001E70 @ =gUnknown_30008E8 lsls r1, r4, 4 adds r0, 0xC adds r1, r0 ldr r0, [r1] b _08001E78 .align 2, 0 _08001E70: .4byte gUnknown_30008E8 _08001E74: movs r0, 0x1 negs r0, r0 _08001E78: pop {r4} pop {r1} bx r1 thumb_func_end GetBgY thumb_func_start SetBgAffine SetBgAffine: @ 8001E80 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 ldr r4, [sp, 0x28] ldr r5, [sp, 0x2C] ldr r6, [sp, 0x30] ldr r7, [sp, 0x34] lsls r0, 24 lsrs r0, 24 lsls r7, 16 lsrs r7, 16 lsls r3, 16 asrs r3, 16 lsls r4, 16 asrs r4, 16 str r4, [sp] lsls r5, 16 asrs r5, 16 str r5, [sp, 0x4] lsls r6, 16 asrs r6, 16 str r6, [sp, 0x8] str r7, [sp, 0xC] bl SetBgAffineInternal add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end SetBgAffine thumb_func_start Unused_AdjustBgMosaic Unused_AdjustBgMosaic: @ 8001EC0 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r6, r1, 24 movs r0, 0x4C bl GetGpuReg lsls r0, 16 lsrs r5, r0, 16 movs r1, 0xF movs r3, 0xF ands r3, r5 lsrs r2, r0, 20 ands r2, r1 movs r0, 0xFF lsls r0, 8 ands r5, r0 cmp r6, 0x6 bhi _08001F14 lsls r0, r6, 2 ldr r1, _08001EF4 @ =_08001EF8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08001EF4: .4byte _08001EF8 .align 2, 0 _08001EF8: .4byte _08001F14 .4byte _08001F1C .4byte _08001F22 .4byte _08001F34 .4byte _08001F4A .4byte _08001F50 .4byte _08001F62 _08001F14: movs r3, 0xF ands r3, r4 lsrs r2, r4, 4 b _08001F76 _08001F1C: movs r3, 0xF ands r3, r4 b _08001F76 _08001F22: lsls r0, r3, 16 asrs r0, 16 adds r0, r4 cmp r0, 0xF ble _08001F30 movs r3, 0xF b _08001F76 _08001F30: adds r0, r3, r4 b _08001F44 _08001F34: lsls r0, r3, 16 asrs r0, 16 subs r0, r4 cmp r0, 0 bge _08001F42 movs r3, 0 b _08001F76 _08001F42: subs r0, r3, r4 _08001F44: lsls r0, 16 lsrs r3, r0, 16 b _08001F76 _08001F4A: movs r2, 0xF ands r2, r4 b _08001F76 _08001F50: lsls r0, r2, 16 asrs r0, 16 adds r0, r4 cmp r0, 0xF ble _08001F5E movs r2, 0xF b _08001F76 _08001F5E: adds r0, r2, r4 b _08001F72 _08001F62: lsls r0, r2, 16 asrs r0, 16 subs r0, r4 cmp r0, 0 bge _08001F70 movs r2, 0 b _08001F76 _08001F70: subs r0, r2, r4 _08001F72: lsls r0, 16 lsrs r2, r0, 16 _08001F76: lsls r0, r2, 16 asrs r0, 12 movs r1, 0xF0 ands r0, r1 orrs r5, r0 lsls r0, r3, 16 asrs r0, 16 movs r1, 0xF ands r0, r1 orrs r5, r0 lsls r0, r5, 16 lsrs r5, r0, 16 movs r0, 0x4C adds r1, r5, 0 bl SetGpuReg lsls r0, r5, 24 lsrs r0, 24 pop {r4-r6} pop {r1} bx r1 thumb_func_end Unused_AdjustBgMosaic thumb_func_start SetBgTilemapBuffer SetBgTilemapBuffer: @ 8001FA0 push {r4,r5,lr} adds r5, r1, 0 lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl IsInvalidBg32 cmp r0, 0 bne _08001FCA adds r0, r4, 0 movs r1, 0x1 bl GetBgControlAttribute lsls r0, 16 cmp r0, 0 beq _08001FCA ldr r0, _08001FD0 @ =gUnknown_30008E8 lsls r1, r4, 4 adds r0, 0x4 adds r1, r0 str r5, [r1] _08001FCA: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08001FD0: .4byte gUnknown_30008E8 thumb_func_end SetBgTilemapBuffer thumb_func_start UnsetBgTilemapBuffer UnsetBgTilemapBuffer: @ 8001FD4 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl IsInvalidBg32 adds r5, r0, 0 cmp r5, 0 bne _08001FFE adds r0, r4, 0 movs r1, 0x1 bl GetBgControlAttribute lsls r0, 16 cmp r0, 0 beq _08001FFE ldr r0, _08002004 @ =gUnknown_30008E8 lsls r1, r4, 4 adds r0, 0x4 adds r1, r0 str r5, [r1] _08001FFE: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08002004: .4byte gUnknown_30008E8 thumb_func_end UnsetBgTilemapBuffer thumb_func_start GetBgTilemapBuffer GetBgTilemapBuffer: @ 8002008 push {r4,lr} lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 bl IsInvalidBg32 cmp r0, 0 bne _08002038 adds r0, r4, 0 movs r1, 0x1 bl GetBgControlAttribute lsls r0, 16 cmp r0, 0 beq _08002038 ldr r0, _08002034 @ =gUnknown_30008E8 lsls r1, r4, 4 adds r0, 0x4 adds r1, r0 ldr r0, [r1] b _0800203A .align 2, 0 _08002034: .4byte gUnknown_30008E8 _08002038: movs r0, 0 _0800203A: pop {r4} pop {r1} bx r1 thumb_func_end GetBgTilemapBuffer thumb_func_start CopyToBgTilemapBuffer CopyToBgTilemapBuffer: @ 8002040 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} mov r10, r1 lsls r0, 24 lsrs r4, r0, 24 mov r9, r4 lsls r7, r2, 16 lsrs r6, r7, 16 lsls r3, 16 lsrs r5, r3, 16 mov r8, r5 adds r0, r4, 0 bl IsInvalidBg32 cmp r0, 0 bne _080020A8 adds r0, r4, 0 bl IsTileMapOutsideWram cmp r0, 0 bne _080020A8 cmp r6, 0 beq _08002090 ldr r0, _0800208C @ =gUnknown_30008E8 lsls r1, r4, 4 adds r0, 0x4 adds r1, r0 lsls r0, r5, 5 ldr r1, [r1] adds r1, r0 lsrs r2, r7, 17 mov r0, r10 bl CpuSet b _080020A8 .align 2, 0 _0800208C: .4byte gUnknown_30008E8 _08002090: ldr r0, _080020B8 @ =gUnknown_30008E8 mov r2, r9 lsls r1, r2, 4 adds r0, 0x4 adds r1, r0 mov r2, r8 lsls r0, r2, 5 ldr r1, [r1] adds r1, r0 mov r0, r10 bl LZ77UnCompWram _080020A8: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080020B8: .4byte gUnknown_30008E8 thumb_func_end CopyToBgTilemapBuffer thumb_func_start CopyBgTilemapBufferToVram CopyBgTilemapBufferToVram: @ 80020BC push {r4,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl IsInvalidBg32 cmp r0, 0 bne _08002118 adds r0, r4, 0 bl IsTileMapOutsideWram cmp r0, 0 bne _08002118 adds r0, r4, 0 bl GetBgType cmp r0, 0 beq _080020EA cmp r0, 0x1 beq _080020F6 movs r2, 0 b _08002102 _080020EA: adds r0, r4, 0 movs r1, 0 bl GetBgMetricTextMode lsls r0, 27 b _08002100 _080020F6: adds r0, r4, 0 movs r1, 0 bl GetBgMetricAffineMode lsls r0, 24 _08002100: lsrs r2, r0, 16 _08002102: ldr r0, _08002120 @ =gUnknown_30008E8 lsls r1, r4, 4 adds r0, 0x4 adds r1, r0 ldr r1, [r1] movs r0, 0x2 str r0, [sp] adds r0, r4, 0 movs r3, 0 bl LoadBgVram _08002118: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _08002120: .4byte gUnknown_30008E8 thumb_func_end CopyBgTilemapBufferToVram thumb_func_start CopyToBgTilemapBufferRect CopyToBgTilemapBufferRect: @ 8002124 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 mov r8, r1 ldr r1, [sp, 0x24] ldr r4, [sp, 0x28] lsls r0, 24 lsrs r5, r0, 24 lsls r2, 24 lsrs r2, 24 mov r10, r2 lsls r3, 24 lsrs r7, r3, 24 lsls r1, 24 lsrs r1, 24 mov r9, r1 lsls r4, 24 lsrs r6, r4, 24 adds r0, r5, 0 bl IsInvalidBg32 cmp r0, 0 bne _08002214 adds r0, r5, 0 bl IsTileMapOutsideWram cmp r0, 0 bne _08002214 adds r0, r5, 0 bl GetBgType cmp r0, 0 beq _08002172 cmp r0, 0x1 beq _080021C0 b _08002214 _08002172: mov r4, r8 adds r3, r7, 0 adds r0, r3, r6 cmp r3, r0 bge _08002214 mov r12, r0 lsls r1, r5, 4 ldr r0, _080021BC @ =gUnknown_30008EC adds r1, r0 mov r8, r1 _08002186: mov r2, r10 mov r1, r9 adds r0, r2, r1 adds r7, r3, 0x1 cmp r2, r0 bge _080021B0 mov r1, r8 ldr r6, [r1] lsls r5, r3, 5 adds r3, r0, 0 _0800219A: adds r0, r5, r2 lsls r0, 1 adds r0, r6 ldrh r1, [r4] strh r1, [r0] adds r4, 0x2 adds r0, r2, 0x1 lsls r0, 16 lsrs r2, r0, 16 cmp r2, r3 blt _0800219A _080021B0: lsls r0, r7, 16 lsrs r3, r0, 16 cmp r3, r12 blt _08002186 b _08002214 .align 2, 0 _080021BC: .4byte gUnknown_30008EC _080021C0: mov r4, r8 adds r0, r5, 0 movs r1, 0x1 bl GetBgMetricAffineMode lsls r0, 16 lsrs r0, 16 str r0, [sp] adds r3, r7, 0 adds r0, r3, r6 cmp r3, r0 bge _08002214 mov r12, r0 lsls r5, 4 mov r8, r5 _080021DE: mov r2, r10 mov r1, r9 adds r0, r2, r1 adds r7, r3, 0x1 cmp r2, r0 bge _0800220C ldr r6, _08002224 @ =gUnknown_30008EC add r6, r8 ldr r1, [sp] adds r5, r3, 0 muls r5, r1 adds r3, r0, 0 _080021F6: ldr r1, [r6] adds r0, r5, r2 adds r1, r0 ldrb r0, [r4] strb r0, [r1] adds r4, 0x1 adds r0, r2, 0x1 lsls r0, 16 lsrs r2, r0, 16 cmp r2, r3 blt _080021F6 _0800220C: lsls r0, r7, 16 lsrs r3, r0, 16 cmp r3, r12 blt _080021DE _08002214: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08002224: .4byte gUnknown_30008EC thumb_func_end CopyToBgTilemapBufferRect thumb_func_start CopyToBgTilemapBufferRect_ChangePalette CopyToBgTilemapBufferRect_ChangePalette: @ 8002228 push {r4-r6,lr} sub sp, 0x24 ldr r4, [sp, 0x34] ldr r5, [sp, 0x38] ldr r6, [sp, 0x3C] lsls r0, 24 lsrs r0, 24 lsls r2, 24 lsrs r2, 24 lsls r3, 24 lsrs r3, 24 lsls r4, 24 lsrs r4, 24 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 str r4, [sp] str r5, [sp, 0x4] str r2, [sp, 0x8] str r3, [sp, 0xC] str r4, [sp, 0x10] str r5, [sp, 0x14] str r6, [sp, 0x18] movs r2, 0 str r2, [sp, 0x1C] str r2, [sp, 0x20] movs r3, 0 bl CopyRectToBgTilemapBufferRect add sp, 0x24 pop {r4-r6} pop {r0} bx r0 thumb_func_end CopyToBgTilemapBufferRect_ChangePalette thumb_func_start CopyRectToBgTilemapBufferRect CopyRectToBgTilemapBufferRect: @ 800226C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x40 str r1, [sp, 0x8] ldr r1, [sp, 0x60] ldr r4, [sp, 0x68] ldr r5, [sp, 0x6C] ldr r6, [sp, 0x70] ldr r7, [sp, 0x74] mov r8, r7 ldr r7, [sp, 0x78] mov r9, r7 ldr r7, [sp, 0x7C] mov r10, r7 ldr r7, [sp, 0x80] mov r12, r7 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x4] lsls r2, 24 lsrs r2, 24 str r2, [sp, 0xC] lsls r3, 24 lsrs r3, 24 str r3, [sp, 0x10] lsls r1, 24 lsrs r7, r1, 24 lsls r4, 24 lsrs r4, 24 str r4, [sp, 0x14] lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 str r6, [sp, 0x18] mov r0, r8 lsls r0, 24 lsrs r4, r0, 24 mov r1, r9 lsls r1, 24 lsrs r1, 24 str r1, [sp, 0x1C] mov r2, r10 lsls r2, 16 lsrs r2, 16 str r2, [sp, 0x20] mov r0, r12 lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x24] ldr r0, [sp, 0x4] bl IsInvalidBg32 cmp r0, 0 beq _080022E2 b _0800243E _080022E2: ldr r0, [sp, 0x4] bl IsTileMapOutsideWram cmp r0, 0 beq _080022EE b _0800243E _080022EE: ldr r0, [sp, 0x4] movs r1, 0x4 bl GetBgControlAttribute lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x30] ldr r0, [sp, 0x4] movs r1, 0x1 bl GetBgMetricTextMode lsls r0, 21 lsrs r0, 16 str r0, [sp, 0x28] ldr r0, [sp, 0x4] movs r1, 0x2 bl GetBgMetricTextMode lsls r0, 21 lsrs r0, 16 str r0, [sp, 0x2C] ldr r0, [sp, 0x4] bl GetBgType cmp r0, 0 beq _08002328 cmp r0, 0x1 beq _080023C4 b _0800243E _08002328: ldr r1, [sp, 0x10] adds r0, r1, 0 muls r0, r7 ldr r2, [sp, 0xC] adds r0, r2 lsls r0, 1 ldr r1, [sp, 0x8] adds r6, r1, r0 adds r0, r5, r4 cmp r5, r0 blt _08002340 b _0800243E _08002340: ldr r2, [sp, 0x18] subs r2, r7, r2 str r2, [sp, 0x34] str r0, [sp, 0x38] _08002348: ldr r4, [sp, 0x14] ldr r7, [sp, 0x18] adds r0, r4, r7 adds r1, r5, 0x1 str r1, [sp, 0x3C] cmp r4, r0 bge _080023AA ldr r2, [sp, 0x4] lsls r0, r2, 4 ldr r1, _080023C0 @ =gUnknown_30008EC adds r0, r1 mov r10, r0 ldr r7, [sp, 0x20] lsls r7, 16 mov r9, r7 ldr r1, [sp, 0x24] lsls r0, r1, 16 asrs r0, 16 mov r8, r0 _0800236E: ldr r2, [sp, 0x2C] str r2, [sp] adds r0, r4, 0 adds r1, r5, 0 ldr r2, [sp, 0x30] ldr r3, [sp, 0x28] bl GetTileMapIndexFromCoords lsls r0, 16 lsrs r0, 15 mov r7, r10 ldr r1, [r7] adds r1, r0 mov r0, r8 str r0, [sp] adds r0, r6, 0 ldr r2, [sp, 0x1C] mov r7, r9 asrs r3, r7, 16 bl CopyTileMapEntry adds r6, 0x2 adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 ldr r1, [sp, 0x14] ldr r2, [sp, 0x18] adds r0, r1, r2 cmp r4, r0 blt _0800236E _080023AA: ldr r5, [sp, 0x34] lsls r0, r5, 1 adds r6, r0 ldr r7, [sp, 0x3C] lsls r0, r7, 16 lsrs r5, r0, 16 ldr r0, [sp, 0x38] cmp r5, r0 blt _08002348 b _0800243E .align 2, 0 _080023C0: .4byte gUnknown_30008EC _080023C4: ldr r1, [sp, 0x10] adds r0, r1, 0 muls r0, r7 ldr r2, [sp, 0xC] adds r0, r2 ldr r1, [sp, 0x8] adds r6, r1, r0 ldr r0, [sp, 0x4] movs r1, 0x1 bl GetBgMetricAffineMode lsls r0, 16 lsrs r0, 16 mov r9, r0 adds r0, r5, r4 cmp r5, r0 bge _0800243E ldr r2, [sp, 0x18] subs r2, r7, r2 str r2, [sp, 0x34] str r0, [sp, 0x38] ldr r7, _08002450 @ =gUnknown_30008EC mov r10, r7 ldr r0, [sp, 0x4] lsls r0, 4 mov r8, r0 _080023F8: ldr r4, [sp, 0x14] ldr r1, [sp, 0x18] adds r0, r4, r1 adds r2, r5, 0x1 str r2, [sp, 0x3C] cmp r4, r0 bge _0800242E mov r3, r8 add r3, r10 mov r7, r9 muls r7, r5 mov r12, r7 adds r2, r0, 0 _08002412: ldr r1, [r3] mov r5, r12 adds r0, r5, r4 adds r1, r0 ldrb r0, [r6] ldr r7, [sp, 0x20] adds r0, r7 strb r0, [r1] adds r6, 0x1 adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, r2 blt _08002412 _0800242E: ldr r0, [sp, 0x34] adds r6, r0 ldr r1, [sp, 0x3C] lsls r0, r1, 16 lsrs r5, r0, 16 ldr r2, [sp, 0x38] cmp r5, r2 blt _080023F8 _0800243E: add sp, 0x40 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08002450: .4byte gUnknown_30008EC thumb_func_end CopyRectToBgTilemapBufferRect thumb_func_start FillBgTilemapBufferRect_Palette0 FillBgTilemapBufferRect_Palette0: @ 8002454 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 ldr r4, [sp, 0x24] ldr r5, [sp, 0x28] lsls r0, 24 lsrs r6, r0, 24 lsls r1, 16 lsrs r1, 16 mov r8, r1 lsls r2, 24 lsrs r2, 24 mov r10, r2 lsls r3, 24 lsrs r7, r3, 24 lsls r4, 24 lsrs r4, 24 mov r9, r4 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 bl IsInvalidBg32 cmp r0, 0 bne _08002540 adds r0, r6, 0 bl IsTileMapOutsideWram cmp r0, 0 bne _08002540 adds r0, r6, 0 bl GetBgType cmp r0, 0 beq _080024A6 cmp r0, 0x1 beq _080024F0 b _08002540 _080024A6: adds r3, r7, 0 adds r5, r3, r5 cmp r3, r5 bge _08002540 adds r7, r5, 0 lsls r1, r6, 4 ldr r0, _080024EC @ =gUnknown_30008EC adds r1, r0 mov r12, r1 _080024B8: mov r2, r10 mov r1, r9 adds r0, r2, r1 adds r6, r3, 0x1 cmp r2, r0 bge _080024E0 mov r5, r12 ldr r4, [r5] lsls r3, 5 adds r1, r0, 0 _080024CC: adds r0, r3, r2 lsls r0, 1 adds r0, r4 mov r5, r8 strh r5, [r0] adds r0, r2, 0x1 lsls r0, 16 lsrs r2, r0, 16 cmp r2, r1 blt _080024CC _080024E0: lsls r0, r6, 16 lsrs r3, r0, 16 cmp r3, r7 blt _080024B8 b _08002540 .align 2, 0 _080024EC: .4byte gUnknown_30008EC _080024F0: adds r0, r6, 0 movs r1, 0x1 bl GetBgMetricAffineMode lsls r0, 16 lsrs r0, 16 str r0, [sp] adds r3, r7, 0 adds r5, r3, r5 cmp r3, r5 bge _08002540 adds r7, r5, 0 lsls r6, 4 mov r12, r6 _0800250C: mov r2, r10 mov r1, r9 adds r0, r2, r1 adds r6, r3, 0x1 cmp r2, r0 bge _08002538 ldr r5, _08002550 @ =gUnknown_30008EC add r5, r12 ldr r1, [sp] adds r4, r3, 0 muls r4, r1 adds r3, r0, 0 _08002524: ldr r0, [r5] adds r1, r4, r2 adds r0, r1 mov r1, r8 strb r1, [r0] adds r0, r2, 0x1 lsls r0, 16 lsrs r2, r0, 16 cmp r2, r3 blt _08002524 _08002538: lsls r0, r6, 16 lsrs r3, r0, 16 cmp r3, r7 blt _0800250C _08002540: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08002550: .4byte gUnknown_30008EC thumb_func_end FillBgTilemapBufferRect_Palette0 thumb_func_start FillBgTilemapBufferRect FillBgTilemapBufferRect: @ 8002554 push {r4-r6,lr} sub sp, 0x10 ldr r4, [sp, 0x20] ldr r5, [sp, 0x24] ldr r6, [sp, 0x28] lsls r0, 24 lsrs r0, 24 lsls r1, 16 lsrs r1, 16 lsls r2, 24 lsrs r2, 24 lsls r3, 24 lsrs r3, 24 lsls r4, 24 lsrs r4, 24 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 str r4, [sp] str r5, [sp, 0x4] str r6, [sp, 0x8] movs r4, 0 str r4, [sp, 0xC] bl WriteSequenceToBgTilemapBuffer add sp, 0x10 pop {r4-r6} pop {r0} bx r0 thumb_func_end FillBgTilemapBufferRect thumb_func_start WriteSequenceToBgTilemapBuffer WriteSequenceToBgTilemapBuffer: @ 8002590 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x2C ldr r4, [sp, 0x4C] ldr r5, [sp, 0x50] ldr r6, [sp, 0x54] ldr r7, [sp, 0x58] mov r8, r7 lsls r0, 24 lsrs r0, 24 mov r9, r0 add r0, sp, 0x4 strh r1, [r0] lsls r2, 24 lsrs r2, 24 str r2, [sp, 0x8] lsls r3, 24 lsrs r7, r3, 24 lsls r4, 24 lsrs r4, 24 mov r10, r4 lsls r5, 24 lsrs r4, r5, 24 lsls r6, 24 lsrs r6, 24 str r6, [sp, 0xC] mov r0, r8 lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x10] mov r0, r9 bl IsInvalidBg32 cmp r0, 0 beq _080025DE b _08002724 _080025DE: mov r0, r9 bl IsTileMapOutsideWram cmp r0, 0 beq _080025EA b _08002724 _080025EA: mov r0, r9 movs r1, 0x4 bl GetBgControlAttribute lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x1C] mov r0, r9 movs r1, 0x1 bl GetBgMetricTextMode lsls r0, 21 lsrs r0, 16 str r0, [sp, 0x14] mov r0, r9 movs r1, 0x2 bl GetBgMetricTextMode lsls r0, 21 lsrs r0, 16 str r0, [sp, 0x18] mov r0, r9 bl GetBgType cmp r0, 0 beq _08002624 cmp r0, 0x1 beq _080026AC b _08002724 _08002624: adds r5, r7, 0 adds r0, r5, r4 cmp r5, r0 bge _08002724 str r0, [sp, 0x24] add r7, sp, 0x4 _08002630: ldr r4, [sp, 0x8] mov r1, r10 adds r0, r4, r1 adds r2, r5, 0x1 mov r8, r2 cmp r4, r0 bge _08002694 mov r3, r9 lsls r1, r3, 4 ldr r0, _080026A4 @ =gUnknown_30008EC adds r6, r1, r0 _08002646: ldr r0, [sp, 0x18] str r0, [sp] adds r0, r4, 0 adds r1, r5, 0 ldr r2, [sp, 0x1C] ldr r3, [sp, 0x14] bl GetTileMapIndexFromCoords lsls r0, 16 lsrs r0, 15 ldr r1, [r6] adds r1, r0 movs r0, 0 str r0, [sp] add r0, sp, 0x4 ldr r2, [sp, 0xC] movs r3, 0 bl CopyTileMapEntry ldrh r0, [r7] movs r2, 0xFC lsls r2, 8 adds r1, r2, 0 adds r2, r0, 0 ands r2, r1 ldr r3, [sp, 0x10] adds r0, r3 ldr r3, _080026A8 @ =0x000003ff adds r1, r3, 0 ands r0, r1 adds r2, r0 strh r2, [r7] adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 ldr r0, [sp, 0x8] add r0, r10 cmp r4, r0 blt _08002646 _08002694: mov r1, r8 lsls r0, r1, 16 lsrs r5, r0, 16 ldr r2, [sp, 0x24] cmp r5, r2 blt _08002630 b _08002724 .align 2, 0 _080026A4: .4byte gUnknown_30008EC _080026A8: .4byte 0x000003ff _080026AC: mov r0, r9 movs r1, 0x1 bl GetBgMetricAffineMode lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x20] adds r5, r7, 0 adds r0, r5, r4 cmp r5, r0 bge _08002724 str r0, [sp, 0x24] mov r3, r9 lsls r3, 4 mov r12, r3 _080026CA: ldr r4, [sp, 0x8] mov r7, r10 adds r0, r4, r7 adds r1, r5, 0x1 mov r8, r1 cmp r4, r0 bge _08002718 ldr r2, _08002734 @ =gUnknown_30008EC add r2, r12 str r2, [sp, 0x28] ldr r7, [sp, 0x20] adds r3, r5, 0 muls r3, r7 add r2, sp, 0x4 movs r1, 0xFC lsls r1, 8 mov r9, r1 ldr r7, _08002738 @ =0x000003ff adds r5, r7, 0 adds r6, r0, 0 _080026F2: ldr r0, [sp, 0x28] ldr r1, [r0] adds r0, r3, r4 adds r1, r0 ldrh r0, [r2] strb r0, [r1] ldrh r0, [r2] mov r1, r9 ands r1, r0 ldr r7, [sp, 0x10] adds r0, r7 ands r0, r5 adds r1, r0 strh r1, [r2] adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, r6 blt _080026F2 _08002718: mov r1, r8 lsls r0, r1, 16 lsrs r5, r0, 16 ldr r2, [sp, 0x24] cmp r5, r2 blt _080026CA _08002724: add sp, 0x2C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08002734: .4byte gUnknown_30008EC _08002738: .4byte 0x000003ff thumb_func_end WriteSequenceToBgTilemapBuffer thumb_func_start GetBgMetricTextMode GetBgMetricTextMode: @ 800273C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r4, r1, 24 adds r5, r4, 0 movs r1, 0x4 bl GetBgControlAttribute lsls r0, 24 lsrs r0, 24 cmp r4, 0x1 beq _0800277C cmp r4, 0x1 bgt _08002760 cmp r4, 0 beq _08002766 b _080027A2 _08002760: cmp r5, 0x2 beq _0800278E b _080027A2 _08002766: cmp r0, 0x2 bgt _08002774 cmp r0, 0x1 bge _0800279E _0800276E: cmp r0, 0 beq _08002796 b _080027A2 _08002774: cmp r0, 0x3 bne _080027A2 movs r0, 0x4 b _080027A4 _0800277C: cmp r0, 0x1 beq _0800279E cmp r0, 0x1 ble _0800276E cmp r0, 0x2 beq _08002796 cmp r0, 0x3 bne _080027A2 b _0800279E _0800278E: cmp r0, 0 blt _080027A2 cmp r0, 0x1 bgt _0800279A _08002796: movs r0, 0x1 b _080027A4 _0800279A: cmp r0, 0x3 bgt _080027A2 _0800279E: movs r0, 0x2 b _080027A4 _080027A2: movs r0, 0 _080027A4: pop {r4,r5} pop {r1} bx r1 thumb_func_end GetBgMetricTextMode thumb_func_start GetBgMetricAffineMode GetBgMetricAffineMode: @ 80027AC push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r4, r1, 24 movs r1, 0x4 bl GetBgControlAttribute lsls r0, 24 lsrs r1, r0, 24 adds r0, r1, 0 cmp r4, 0 beq _080027D4 cmp r4, 0 blt _080027FC cmp r4, 0x2 bgt _080027FC movs r0, 0x10 lsls r0, r1 b _080027FE _080027D4: cmp r1, 0x1 beq _080027F0 cmp r1, 0x1 bgt _080027E2 cmp r1, 0 beq _080027EC b _080027FC _080027E2: cmp r0, 0x2 beq _080027F4 cmp r0, 0x3 beq _080027F8 b _080027FC _080027EC: movs r0, 0x1 b _080027FE _080027F0: movs r0, 0x4 b _080027FE _080027F4: movs r0, 0x10 b _080027FE _080027F8: movs r0, 0x40 b _080027FE _080027FC: movs r0, 0 _080027FE: pop {r4} pop {r1} bx r1 thumb_func_end GetBgMetricAffineMode thumb_func_start GetTileMapIndexFromCoords GetTileMapIndexFromCoords: @ 8002804 push {r4,lr} adds r4, r0, 0 ldr r0, [sp, 0x8] subs r3, 0x1 ands r4, r3 subs r0, 0x1 ands r1, r0 cmp r2, 0x1 beq _08002828 cmp r2, 0x1 ble _08002830 cmp r2, 0x2 beq _08002830 cmp r2, 0x3 bne _08002830 cmp r1, 0x1F ble _08002828 adds r1, 0x20 _08002828: cmp r4, 0x1F ble _08002830 subs r4, 0x20 adds r1, 0x20 _08002830: lsls r0, r1, 5 adds r0, r4 pop {r4} pop {r1} bx r1 thumb_func_end GetTileMapIndexFromCoords thumb_func_start CopyTileMapEntry CopyTileMapEntry: @ 800283C push {r4-r6,lr} adds r4, r0, 0 adds r6, r1, 0 ldr r5, [sp, 0x10] cmp r2, 0x10 beq _08002864 cmp r2, 0x10 bgt _08002884 cmp r2, 0 blt _08002884 ldrh r0, [r4] adds r0, r3 ldr r3, _08002860 @ =0x00000fff adds r1, r3, 0 ands r0, r1 adds r1, r2, r5 lsls r1, 12 b _0800288A .align 2, 0 _08002860: .4byte 0x00000fff _08002864: ldrh r1, [r6] movs r0, 0xFC lsls r0, 8 ands r1, r0 lsls r2, r5, 12 adds r2, r1, r2 ldrh r0, [r4] adds r0, r3 ldr r3, _08002880 @ =0x000003ff adds r1, r3, 0 ands r0, r1 orrs r0, r2 b _0800288C .align 2, 0 _08002880: .4byte 0x000003ff _08002884: ldrh r0, [r4] adds r0, r3 lsls r1, r5, 12 _0800288A: adds r0, r1 _0800288C: lsls r0, 16 lsrs r1, r0, 16 strh r1, [r6] pop {r4-r6} pop {r0} bx r0 thumb_func_end CopyTileMapEntry thumb_func_start GetBgType GetBgType: @ 8002898 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 adds r5, r4, 0 bl GetBgMode lsls r0, 24 lsrs r0, 24 cmp r4, 0x2 beq _080028C6 cmp r4, 0x2 ble _080028B6 cmp r4, 0x3 beq _080028D6 b _080028DE _080028B6: cmp r5, 0 blt _080028DE cmp r0, 0x1 bgt _080028DE cmp r0, 0 blt _080028DE _080028C2: movs r0, 0 b _080028E0 _080028C6: cmp r0, 0 beq _080028C2 cmp r0, 0 blt _080028DE cmp r0, 0x2 bgt _080028DE _080028D2: movs r0, 0x1 b _080028E0 _080028D6: cmp r0, 0 beq _080028C2 cmp r0, 0x2 beq _080028D2 _080028DE: ldr r0, _080028E8 @ =0x0000ffff _080028E0: pop {r4,r5} pop {r1} bx r1 .align 2, 0 _080028E8: .4byte 0x0000ffff thumb_func_end GetBgType thumb_func_start IsInvalidBg32 IsInvalidBg32: @ 80028EC push {lr} lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 bhi _080028FA movs r0, 0 b _080028FC _080028FA: movs r0, 0x1 _080028FC: pop {r1} bx r1 thumb_func_end IsInvalidBg32 thumb_func_start IsTileMapOutsideWram IsTileMapOutsideWram: @ 8002900 push {lr} lsls r0, 24 ldr r1, _0800291C @ =gUnknown_30008E8 lsrs r0, 20 adds r1, 0x4 adds r0, r1 ldr r1, [r0] ldr r0, _08002920 @ =0x03008000 cmp r1, r0 bhi _08002924 cmp r1, 0 beq _08002924 movs r0, 0 b _08002926 .align 2, 0 _0800291C: .4byte gUnknown_30008E8 _08002920: .4byte 0x03008000 _08002924: movs r0, 0x1 _08002926: pop {r1} bx r1 thumb_func_end IsTileMapOutsideWram .align 2, 0 @ Don't pad with nop.