mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-06 22:28:44 -05:00
1518 lines
22 KiB
ArmAsm
1518 lines
22 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start CopyGlyphToWindow
|
|
CopyGlyphToWindow: @ 8003014
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x6C
|
|
adds r6, r0, 0
|
|
ldr r0, _08003084 @ =gWindows
|
|
mov r9, r0
|
|
ldrb r1, [r6, 0x4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
mov r1, r9
|
|
adds r2, r0, r1
|
|
ldrb r0, [r2, 0x3]
|
|
lsls r0, 3
|
|
ldrb r1, [r6, 0x8]
|
|
subs r1, r0, r1
|
|
ldr r3, _08003088 @ =gGlyphInfo
|
|
mov r8, r3
|
|
mov r0, r8
|
|
adds r0, 0x80
|
|
ldrb r7, [r0]
|
|
cmp r1, r7
|
|
bge _0800304A
|
|
adds r7, r1, 0
|
|
_0800304A:
|
|
ldrb r0, [r2, 0x4]
|
|
lsls r0, 3
|
|
ldrb r4, [r6, 0x9]
|
|
subs r0, r4
|
|
adds r1, r3, 0
|
|
adds r1, 0x81
|
|
ldrb r1, [r1]
|
|
mov r10, r1
|
|
adds r5, r4, 0
|
|
cmp r0, r10
|
|
bge _08003062
|
|
mov r10, r0
|
|
_08003062:
|
|
movs r1, 0
|
|
cmp r7, 0x8
|
|
ble _0800306A
|
|
movs r1, 0x1
|
|
_0800306A:
|
|
mov r0, r10
|
|
cmp r0, 0x8
|
|
ble _08003074
|
|
movs r0, 0x2
|
|
orrs r1, r0
|
|
_08003074:
|
|
cmp r1, 0x1
|
|
beq _08003134
|
|
cmp r1, 0x1
|
|
bgt _0800308C
|
|
cmp r1, 0
|
|
beq _0800309A
|
|
b _080035FC
|
|
.align 2, 0
|
|
_08003084: .4byte gWindows
|
|
_08003088: .4byte gGlyphInfo
|
|
_0800308C:
|
|
cmp r1, 0x2
|
|
bne _08003092
|
|
b _08003268
|
|
_08003092:
|
|
cmp r1, 0x3
|
|
bne _08003098
|
|
b _080033A0
|
|
_08003098:
|
|
b _080035FC
|
|
_0800309A:
|
|
adds r2, r3, 0
|
|
movs r1, 0
|
|
adds r0, r5, 0
|
|
cmp r1, r10
|
|
blt _080030A6
|
|
b _080035FC
|
|
_080030A6:
|
|
ldm r2!, {r3}
|
|
str r3, [sp]
|
|
movs r5, 0
|
|
ldrb r4, [r6, 0x8]
|
|
str r2, [sp, 0x28]
|
|
adds r1, 0x1
|
|
str r1, [sp, 0x20]
|
|
adds r1, r0, 0x1
|
|
str r1, [sp, 0x24]
|
|
cmp r5, r7
|
|
bge _08003124
|
|
ldr r2, _08003130 @ =gWindows
|
|
mov r12, r2
|
|
asrs r3, r0, 3
|
|
mov r9, r3
|
|
lsls r0, 29
|
|
lsrs r0, 27
|
|
mov r8, r0
|
|
_080030CA:
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r3, r0, 1
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
mov r1, r12
|
|
adds r1, 0x8
|
|
adds r1, r3, r1
|
|
asrs r2, r4, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
asrs r0, r4, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r3, r12
|
|
ldrb r0, [r3, 0x3]
|
|
mov r2, r9
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
mov r0, r8
|
|
adds r3, r1, r0
|
|
lsls r0, r5, 2
|
|
ldr r2, [sp]
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0800311C
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r3]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r3]
|
|
_0800311C:
|
|
adds r5, 0x1
|
|
adds r4, 0x1
|
|
cmp r5, r7
|
|
blt _080030CA
|
|
_08003124:
|
|
ldr r2, [sp, 0x28]
|
|
ldr r1, [sp, 0x20]
|
|
ldr r0, [sp, 0x24]
|
|
cmp r1, r10
|
|
blt _080030A6
|
|
b _080035FC
|
|
.align 2, 0
|
|
_08003130: .4byte gWindows
|
|
_08003134:
|
|
movs r2, 0
|
|
adds r1, r5, 0
|
|
cmp r2, r10
|
|
bge _080031BE
|
|
_0800313C:
|
|
ldm r3!, {r0}
|
|
mov r9, r0
|
|
movs r5, 0
|
|
ldrb r4, [r6, 0x8]
|
|
lsls r0, r1, 29
|
|
str r3, [sp, 0x38]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x30]
|
|
adds r2, r1, 0x1
|
|
str r2, [sp, 0x34]
|
|
asrs r1, 3
|
|
mov r12, r1
|
|
lsrs r0, 27
|
|
mov r8, r0
|
|
_08003158:
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r3, r0, 1
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
ldr r1, _08003260 @ =gWindows
|
|
adds r1, 0x8
|
|
adds r1, r3, r1
|
|
asrs r2, r4, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
asrs r0, r4, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
ldr r0, _08003260 @ =gWindows
|
|
adds r3, r0
|
|
ldrb r0, [r3, 0x3]
|
|
mov r2, r12
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
mov r0, r8
|
|
adds r3, r1, r0
|
|
lsls r0, r5, 2
|
|
mov r2, r9
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _080031AC
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r3]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r3]
|
|
_080031AC:
|
|
adds r5, 0x1
|
|
adds r4, 0x1
|
|
cmp r5, 0x7
|
|
ble _08003158
|
|
ldr r3, [sp, 0x38]
|
|
ldr r2, [sp, 0x30]
|
|
ldr r1, [sp, 0x34]
|
|
cmp r2, r10
|
|
blt _0800313C
|
|
_080031BE:
|
|
ldr r3, _08003264 @ =gGlyphInfo + 0x20
|
|
movs r2, 0
|
|
ldrb r1, [r6, 0x9]
|
|
cmp r2, r10
|
|
blt _080031CA
|
|
b _080035FC
|
|
_080031CA:
|
|
subs r7, 0x8
|
|
str r7, [sp, 0x64]
|
|
str r7, [sp, 0x4]
|
|
_080031D0:
|
|
ldm r3!, {r0}
|
|
mov r12, r0
|
|
movs r5, 0
|
|
ldrb r0, [r6, 0x8]
|
|
adds r4, r0, 0
|
|
adds r4, 0x8
|
|
str r3, [sp, 0x50]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x48]
|
|
adds r2, r1, 0x1
|
|
str r2, [sp, 0x4C]
|
|
ldr r3, [sp, 0x4]
|
|
cmp r5, r3
|
|
bge _08003254
|
|
ldr r7, _08003260 @ =gWindows
|
|
asrs r0, r1, 3
|
|
mov r9, r0
|
|
lsls r0, r1, 29
|
|
lsrs r0, 27
|
|
mov r8, r0
|
|
_080031F8:
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r3, r0, 1
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
adds r1, r7, 0
|
|
adds r1, 0x8
|
|
adds r1, r3, r1
|
|
asrs r2, r4, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
asrs r0, r4, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r3, r7
|
|
ldrb r0, [r3, 0x3]
|
|
mov r2, r9
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
mov r0, r8
|
|
adds r3, r1, r0
|
|
lsls r0, r5, 2
|
|
mov r2, r12
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0800324A
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r3]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r3]
|
|
_0800324A:
|
|
adds r5, 0x1
|
|
adds r4, 0x1
|
|
ldr r1, [sp, 0x64]
|
|
cmp r5, r1
|
|
blt _080031F8
|
|
_08003254:
|
|
ldr r3, [sp, 0x50]
|
|
ldr r2, [sp, 0x48]
|
|
ldr r1, [sp, 0x4C]
|
|
cmp r2, r10
|
|
blt _080031D0
|
|
b _080035FC
|
|
.align 2, 0
|
|
_08003260: .4byte gWindows
|
|
_08003264: .4byte gGlyphInfo + 0x20
|
|
_08003268:
|
|
adds r1, r3, 0
|
|
movs r2, 0
|
|
adds r0, r5, 0
|
|
mov r3, r10
|
|
subs r3, 0x8
|
|
str r3, [sp, 0x68]
|
|
_08003274:
|
|
ldm r1!, {r3}
|
|
mov r10, r3
|
|
movs r5, 0
|
|
ldrb r4, [r6, 0x8]
|
|
str r1, [sp, 0x60]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x58]
|
|
adds r1, r0, 0x1
|
|
str r1, [sp, 0x5C]
|
|
cmp r5, r7
|
|
bge _080032F2
|
|
ldr r2, _08003398 @ =gWindows
|
|
mov r12, r2
|
|
asrs r3, r0, 3
|
|
mov r9, r3
|
|
lsls r0, 29
|
|
lsrs r0, 27
|
|
mov r8, r0
|
|
_08003298:
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r3, r0, 1
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
mov r1, r12
|
|
adds r1, 0x8
|
|
adds r1, r3, r1
|
|
asrs r2, r4, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
asrs r0, r4, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r3, r12
|
|
ldrb r0, [r3, 0x3]
|
|
mov r2, r9
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
mov r0, r8
|
|
adds r3, r1, r0
|
|
lsls r0, r5, 2
|
|
mov r2, r10
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _080032EA
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r3]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r3]
|
|
_080032EA:
|
|
adds r5, 0x1
|
|
adds r4, 0x1
|
|
cmp r5, r7
|
|
blt _08003298
|
|
_080032F2:
|
|
ldr r1, [sp, 0x60]
|
|
ldr r2, [sp, 0x58]
|
|
ldr r0, [sp, 0x5C]
|
|
cmp r2, 0x7
|
|
ble _08003274
|
|
ldr r2, _0800339C @ =gGlyphInfo + 0x40
|
|
movs r1, 0
|
|
ldrb r0, [r6, 0x9]
|
|
adds r0, 0x8
|
|
ldr r3, [sp, 0x68]
|
|
cmp r1, r3
|
|
blt _0800330C
|
|
b _080035FC
|
|
_0800330C:
|
|
ldm r2!, {r3}
|
|
mov r10, r3
|
|
movs r5, 0
|
|
ldrb r4, [r6, 0x8]
|
|
str r2, [sp, 0x1C]
|
|
adds r1, 0x1
|
|
str r1, [sp, 0x14]
|
|
adds r1, r0, 0x1
|
|
str r1, [sp, 0x18]
|
|
cmp r5, r7
|
|
bge _0800338A
|
|
ldr r2, _08003398 @ =gWindows
|
|
mov r12, r2
|
|
asrs r3, r0, 3
|
|
mov r9, r3
|
|
lsls r0, 29
|
|
lsrs r0, 27
|
|
mov r8, r0
|
|
_08003330:
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r3, r0, 1
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
mov r1, r12
|
|
adds r1, 0x8
|
|
adds r1, r3, r1
|
|
asrs r2, r4, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
asrs r0, r4, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r3, r12
|
|
ldrb r0, [r3, 0x3]
|
|
mov r2, r9
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
mov r0, r8
|
|
adds r3, r1, r0
|
|
lsls r0, r5, 2
|
|
mov r2, r10
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _08003382
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r3]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r3]
|
|
_08003382:
|
|
adds r5, 0x1
|
|
adds r4, 0x1
|
|
cmp r5, r7
|
|
blt _08003330
|
|
_0800338A:
|
|
ldr r2, [sp, 0x1C]
|
|
ldr r1, [sp, 0x14]
|
|
ldr r0, [sp, 0x18]
|
|
ldr r3, [sp, 0x68]
|
|
cmp r1, r3
|
|
blt _0800330C
|
|
b _080035FC
|
|
.align 2, 0
|
|
_08003398: .4byte gWindows
|
|
_0800339C: .4byte gGlyphInfo + 0x40
|
|
_080033A0:
|
|
mov r2, r8
|
|
movs r3, 0
|
|
adds r1, r4, 0
|
|
subs r7, 0x8
|
|
str r7, [sp, 0x64]
|
|
mov r0, r10
|
|
subs r0, 0x8
|
|
str r0, [sp, 0x68]
|
|
_080033B0:
|
|
ldm r2!, {r0}
|
|
mov r9, r0
|
|
movs r5, 0
|
|
ldrb r4, [r6, 0x8]
|
|
lsls r0, r1, 29
|
|
str r2, [sp, 0x2C]
|
|
adds r3, 0x1
|
|
mov r10, r3
|
|
adds r2, r1, 0x1
|
|
mov r12, r2
|
|
asrs r1, 3
|
|
mov r8, r1
|
|
lsrs r7, r0, 27
|
|
_080033CA:
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r3, r0, 1
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
ldr r1, _080034D0 @ =gWindows
|
|
adds r1, 0x8
|
|
adds r1, r3, r1
|
|
asrs r2, r4, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
asrs r0, r4, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
ldr r0, _080034D0 @ =gWindows
|
|
adds r3, r0
|
|
ldrb r0, [r3, 0x3]
|
|
mov r2, r8
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r3, r1, r7
|
|
lsls r0, r5, 2
|
|
mov r2, r9
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0800341C
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r3]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r3]
|
|
_0800341C:
|
|
adds r5, 0x1
|
|
adds r4, 0x1
|
|
cmp r5, 0x7
|
|
ble _080033CA
|
|
ldr r2, [sp, 0x2C]
|
|
mov r3, r10
|
|
mov r1, r12
|
|
cmp r3, 0x7
|
|
ble _080033B0
|
|
ldr r3, _080034D4 @ =gGlyphInfo + 0x20
|
|
movs r2, 0
|
|
ldrb r1, [r6, 0x9]
|
|
ldr r0, [sp, 0x64]
|
|
mov r12, r0
|
|
_08003438:
|
|
ldm r3!, {r0}
|
|
mov r10, r0
|
|
movs r5, 0
|
|
ldrb r0, [r6, 0x8]
|
|
adds r4, r0, 0
|
|
adds r4, 0x8
|
|
str r3, [sp, 0x44]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x3C]
|
|
adds r2, r1, 0x1
|
|
str r2, [sp, 0x40]
|
|
cmp r5, r12
|
|
bge _080034B8
|
|
ldr r7, _080034D0 @ =gWindows
|
|
asrs r3, r1, 3
|
|
mov r9, r3
|
|
lsls r0, r1, 29
|
|
lsrs r0, 27
|
|
mov r8, r0
|
|
_0800345E:
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r3, r0, 1
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
adds r1, r7, 0
|
|
adds r1, 0x8
|
|
adds r1, r3, r1
|
|
asrs r2, r4, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
asrs r0, r4, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r3, r7
|
|
ldrb r0, [r3, 0x3]
|
|
mov r2, r9
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
mov r0, r8
|
|
adds r3, r1, r0
|
|
lsls r0, r5, 2
|
|
mov r2, r10
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _080034B0
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r3]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r3]
|
|
_080034B0:
|
|
adds r5, 0x1
|
|
adds r4, 0x1
|
|
cmp r5, r12
|
|
blt _0800345E
|
|
_080034B8:
|
|
ldr r3, [sp, 0x44]
|
|
ldr r2, [sp, 0x3C]
|
|
ldr r1, [sp, 0x40]
|
|
cmp r2, 0x7
|
|
ble _08003438
|
|
ldr r3, _080034D8 @ =gGlyphInfo + 0x40
|
|
movs r2, 0
|
|
ldrb r0, [r6, 0x9]
|
|
adds r1, r0, 0
|
|
adds r1, 0x8
|
|
b _08003556
|
|
.align 2, 0
|
|
_080034D0: .4byte gWindows
|
|
_080034D4: .4byte gGlyphInfo + 0x20
|
|
_080034D8: .4byte gGlyphInfo + 0x40
|
|
_080034DC:
|
|
ldm r3!, {r0}
|
|
mov r9, r0
|
|
movs r5, 0
|
|
ldrb r4, [r6, 0x8]
|
|
lsls r0, r1, 29
|
|
str r3, [sp, 0x54]
|
|
adds r2, 0x1
|
|
mov r10, r2
|
|
adds r2, r1, 0x1
|
|
mov r12, r2
|
|
asrs r1, 3
|
|
mov r8, r1
|
|
lsrs r7, r0, 27
|
|
_080034F6:
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r3, r0, 1
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
ldr r1, _0800360C @ =gWindows
|
|
adds r1, 0x8
|
|
adds r1, r3, r1
|
|
asrs r2, r4, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
asrs r0, r4, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
ldr r0, _0800360C @ =gWindows
|
|
adds r3, r0
|
|
ldrb r0, [r3, 0x3]
|
|
mov r2, r8
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r3, r1, r7
|
|
lsls r0, r5, 2
|
|
mov r2, r9
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _08003548
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r3]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r3]
|
|
_08003548:
|
|
adds r5, 0x1
|
|
adds r4, 0x1
|
|
cmp r5, 0x7
|
|
ble _080034F6
|
|
ldr r3, [sp, 0x54]
|
|
mov r2, r10
|
|
mov r1, r12
|
|
_08003556:
|
|
ldr r0, [sp, 0x68]
|
|
cmp r2, r0
|
|
blt _080034DC
|
|
ldr r3, _08003610 @ =gGlyphInfo + 0x60
|
|
movs r2, 0
|
|
ldrb r0, [r6, 0x9]
|
|
adds r1, r0, 0
|
|
adds r1, 0x8
|
|
ldr r0, [sp, 0x68]
|
|
cmp r2, r0
|
|
bge _080035FC
|
|
ldr r0, [sp, 0x64]
|
|
mov r10, r0
|
|
_08003570:
|
|
ldm r3!, {r0}
|
|
mov r12, r0
|
|
movs r5, 0
|
|
ldrb r0, [r6, 0x8]
|
|
adds r4, r0, 0
|
|
adds r4, 0x8
|
|
str r3, [sp, 0x10]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x8]
|
|
adds r2, r1, 0x1
|
|
str r2, [sp, 0xC]
|
|
cmp r5, r10
|
|
bge _080035F0
|
|
ldr r7, _0800360C @ =gWindows
|
|
asrs r3, r1, 3
|
|
mov r9, r3
|
|
lsls r0, r1, 29
|
|
lsrs r0, 27
|
|
mov r8, r0
|
|
_08003596:
|
|
ldrb r0, [r6, 0x4]
|
|
lsls r3, r0, 1
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
adds r1, r7, 0
|
|
adds r1, 0x8
|
|
adds r1, r3, r1
|
|
asrs r2, r4, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
asrs r0, r4, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r3, r7
|
|
ldrb r0, [r3, 0x3]
|
|
mov r2, r9
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
mov r0, r8
|
|
adds r3, r1, r0
|
|
lsls r0, r5, 2
|
|
mov r2, r12
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _080035E8
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r3]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r3]
|
|
_080035E8:
|
|
adds r5, 0x1
|
|
adds r4, 0x1
|
|
cmp r5, r10
|
|
blt _08003596
|
|
_080035F0:
|
|
ldr r3, [sp, 0x10]
|
|
ldr r2, [sp, 0x8]
|
|
ldr r1, [sp, 0xC]
|
|
ldr r0, [sp, 0x68]
|
|
cmp r2, r0
|
|
blt _08003570
|
|
_080035FC:
|
|
add sp, 0x6C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0800360C: .4byte gWindows
|
|
_08003610: .4byte gGlyphInfo + 0x60
|
|
thumb_func_end CopyGlyphToWindow
|
|
|
|
thumb_func_start sub_8003614
|
|
sub_8003614: @ 8003614
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x40
|
|
str r0, [sp]
|
|
ldr r0, [sp, 0x60]
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
str r1, [sp, 0x4]
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
str r2, [sp, 0x8]
|
|
lsls r3, 16
|
|
lsrs r3, 16
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
subs r1, r3, r1
|
|
ldr r5, _08003688 @ =gGlyphInfo
|
|
adds r0, r5, 0
|
|
adds r0, 0x80
|
|
ldrb r7, [r0]
|
|
adds r2, r5, 0
|
|
cmp r1, r7
|
|
bge _0800364A
|
|
adds r7, r1, 0
|
|
_0800364A:
|
|
ldr r1, [sp, 0x8]
|
|
subs r0, r4, r1
|
|
adds r1, r2, 0
|
|
adds r1, 0x81
|
|
ldrb r1, [r1]
|
|
str r1, [sp, 0xC]
|
|
cmp r0, r1
|
|
bge _0800365C
|
|
str r0, [sp, 0xC]
|
|
_0800365C:
|
|
movs r1, 0
|
|
movs r0, 0x7
|
|
ands r0, r3
|
|
adds r0, r3, r0
|
|
lsrs r0, 3
|
|
str r0, [sp, 0x10]
|
|
cmp r7, 0x8
|
|
ble _0800366E
|
|
movs r1, 0x1
|
|
_0800366E:
|
|
ldr r3, [sp, 0xC]
|
|
cmp r3, 0x8
|
|
ble _08003678
|
|
movs r0, 0x2
|
|
orrs r1, r0
|
|
_08003678:
|
|
cmp r1, 0x1
|
|
beq _08003718
|
|
cmp r1, 0x1
|
|
bgt _0800368C
|
|
cmp r1, 0
|
|
beq _0800369A
|
|
b _08003B00
|
|
.align 2, 0
|
|
_08003688: .4byte gGlyphInfo
|
|
_0800368C:
|
|
cmp r1, 0x2
|
|
bne _08003692
|
|
b _0800381C
|
|
_08003692:
|
|
cmp r1, 0x3
|
|
bne _08003698
|
|
b _0800391C
|
|
_08003698:
|
|
b _08003B00
|
|
_0800369A:
|
|
adds r1, r2, 0
|
|
movs r0, 0
|
|
ldr r2, [sp, 0x8]
|
|
ldr r3, [sp, 0xC]
|
|
cmp r0, r3
|
|
blt _080036A8
|
|
b _08003B00
|
|
_080036A8:
|
|
ldm r1!, {r3}
|
|
mov r8, r3
|
|
movs r5, 0
|
|
ldr r3, [sp, 0x4]
|
|
str r1, [sp, 0x28]
|
|
adds r0, 0x1
|
|
mov r9, r0
|
|
adds r0, r2, 0x1
|
|
mov r10, r0
|
|
cmp r5, r7
|
|
bge _0800370A
|
|
asrs r0, r2, 3
|
|
ldr r1, [sp, 0x10]
|
|
muls r0, r1
|
|
lsls r0, 5
|
|
mov r12, r0
|
|
lsls r0, r2, 29
|
|
lsrs r6, r0, 27
|
|
_080036CC:
|
|
asrs r1, r3, 1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
ldr r2, [sp]
|
|
adds r1, r2, r1
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r1, r12
|
|
adds r4, r1, r6
|
|
lsls r0, r5, 2
|
|
mov r2, r8
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _08003702
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r4]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r4]
|
|
_08003702:
|
|
adds r5, 0x1
|
|
adds r3, 0x1
|
|
cmp r5, r7
|
|
blt _080036CC
|
|
_0800370A:
|
|
ldr r1, [sp, 0x28]
|
|
mov r0, r9
|
|
mov r2, r10
|
|
ldr r3, [sp, 0xC]
|
|
cmp r0, r3
|
|
blt _080036A8
|
|
b _08003B00
|
|
_08003718:
|
|
adds r5, r2, 0
|
|
movs r4, 0
|
|
ldr r2, [sp, 0x8]
|
|
ldr r0, [sp, 0xC]
|
|
cmp r4, r0
|
|
bge _0800378E
|
|
_08003724:
|
|
ldm r5!, {r1}
|
|
mov r8, r1
|
|
movs r6, 0
|
|
ldr r3, [sp, 0x4]
|
|
asrs r0, r2, 3
|
|
lsls r1, r2, 29
|
|
str r5, [sp, 0x2C]
|
|
adds r4, 0x1
|
|
mov r9, r4
|
|
adds r2, 0x1
|
|
mov r10, r2
|
|
ldr r2, [sp, 0x10]
|
|
muls r0, r2
|
|
lsls r0, 5
|
|
mov r12, r0
|
|
lsrs r5, r1, 27
|
|
_08003744:
|
|
asrs r1, r3, 1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
ldr r0, [sp]
|
|
adds r1, r0, r1
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r1, r12
|
|
adds r4, r1, r5
|
|
lsls r0, r6, 2
|
|
mov r2, r8
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0800377A
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r4]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r4]
|
|
_0800377A:
|
|
adds r6, 0x1
|
|
adds r3, 0x1
|
|
cmp r6, 0x7
|
|
ble _08003744
|
|
ldr r5, [sp, 0x2C]
|
|
mov r4, r9
|
|
mov r2, r10
|
|
ldr r1, [sp, 0xC]
|
|
cmp r4, r1
|
|
blt _08003724
|
|
_0800378E:
|
|
ldr r1, _08003818 @ =gGlyphInfo + 0x20
|
|
movs r0, 0
|
|
ldr r2, [sp, 0x8]
|
|
ldr r3, [sp, 0xC]
|
|
cmp r0, r3
|
|
blt _0800379C
|
|
b _08003B00
|
|
_0800379C:
|
|
subs r7, 0x8
|
|
str r7, [sp, 0x18]
|
|
str r7, [sp, 0x14]
|
|
_080037A2:
|
|
ldm r1!, {r3}
|
|
mov r8, r3
|
|
movs r5, 0
|
|
ldr r3, [sp, 0x4]
|
|
adds r3, 0x8
|
|
mov r12, r1
|
|
adds r0, 0x1
|
|
mov r9, r0
|
|
adds r0, r2, 0x1
|
|
mov r10, r0
|
|
ldr r1, [sp, 0x14]
|
|
cmp r5, r1
|
|
bge _08003808
|
|
asrs r0, r2, 3
|
|
ldr r1, [sp, 0x10]
|
|
muls r0, r1
|
|
lsls r7, r0, 5
|
|
lsls r0, r2, 29
|
|
lsrs r6, r0, 27
|
|
_080037C8:
|
|
asrs r1, r3, 1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
ldr r2, [sp]
|
|
adds r1, r2, r1
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r1, r7
|
|
adds r4, r1, r6
|
|
lsls r0, r5, 2
|
|
mov r2, r8
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _080037FE
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r4]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r4]
|
|
_080037FE:
|
|
adds r5, 0x1
|
|
adds r3, 0x1
|
|
ldr r0, [sp, 0x18]
|
|
cmp r5, r0
|
|
blt _080037C8
|
|
_08003808:
|
|
mov r1, r12
|
|
mov r0, r9
|
|
mov r2, r10
|
|
ldr r3, [sp, 0xC]
|
|
cmp r0, r3
|
|
blt _080037A2
|
|
b _08003B00
|
|
.align 2, 0
|
|
_08003818: .4byte gGlyphInfo + 0x20
|
|
_0800381C:
|
|
adds r0, r2, 0
|
|
movs r1, 0
|
|
ldr r2, [sp, 0x8]
|
|
adds r3, r2, 0
|
|
adds r3, 0x8
|
|
str r3, [sp, 0x1C]
|
|
ldr r3, [sp, 0xC]
|
|
subs r3, 0x8
|
|
str r3, [sp, 0x20]
|
|
_0800382E:
|
|
ldm r0!, {r3}
|
|
mov r8, r3
|
|
movs r5, 0
|
|
ldr r3, [sp, 0x4]
|
|
str r0, [sp, 0x34]
|
|
adds r1, 0x1
|
|
mov r9, r1
|
|
adds r0, r2, 0x1
|
|
mov r10, r0
|
|
cmp r5, r7
|
|
bge _08003890
|
|
asrs r0, r2, 3
|
|
ldr r1, [sp, 0x10]
|
|
muls r0, r1
|
|
lsls r0, 5
|
|
mov r12, r0
|
|
lsls r0, r2, 29
|
|
lsrs r6, r0, 27
|
|
_08003852:
|
|
asrs r1, r3, 1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
ldr r2, [sp]
|
|
adds r1, r2, r1
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r1, r12
|
|
adds r4, r1, r6
|
|
lsls r0, r5, 2
|
|
mov r2, r8
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _08003888
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r4]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r4]
|
|
_08003888:
|
|
adds r5, 0x1
|
|
adds r3, 0x1
|
|
cmp r5, r7
|
|
blt _08003852
|
|
_08003890:
|
|
ldr r0, [sp, 0x34]
|
|
mov r1, r9
|
|
mov r2, r10
|
|
cmp r1, 0x7
|
|
ble _0800382E
|
|
ldr r2, _08003918 @ =gGlyphInfo + 0x40
|
|
movs r0, 0
|
|
ldr r1, [sp, 0x1C]
|
|
ldr r3, [sp, 0x20]
|
|
cmp r0, r3
|
|
blt _080038A8
|
|
b _08003B00
|
|
_080038A8:
|
|
ldm r2!, {r3}
|
|
mov r8, r3
|
|
movs r5, 0
|
|
ldr r3, [sp, 0x4]
|
|
str r2, [sp, 0x38]
|
|
adds r0, 0x1
|
|
mov r9, r0
|
|
adds r0, r1, 0x1
|
|
mov r10, r0
|
|
cmp r5, r7
|
|
bge _0800390A
|
|
asrs r0, r1, 3
|
|
ldr r2, [sp, 0x10]
|
|
muls r0, r2
|
|
lsls r0, 5
|
|
mov r12, r0
|
|
lsls r0, r1, 29
|
|
lsrs r6, r0, 27
|
|
_080038CC:
|
|
asrs r1, r3, 1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
ldr r0, [sp]
|
|
adds r1, r0, r1
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r1, r12
|
|
adds r4, r1, r6
|
|
lsls r0, r5, 2
|
|
mov r2, r8
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _08003902
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r4]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r4]
|
|
_08003902:
|
|
adds r5, 0x1
|
|
adds r3, 0x1
|
|
cmp r5, r7
|
|
blt _080038CC
|
|
_0800390A:
|
|
ldr r2, [sp, 0x38]
|
|
mov r0, r9
|
|
mov r1, r10
|
|
ldr r3, [sp, 0x20]
|
|
cmp r0, r3
|
|
blt _080038A8
|
|
b _08003B00
|
|
.align 2, 0
|
|
_08003918: .4byte gGlyphInfo + 0x40
|
|
_0800391C:
|
|
movs r2, 0
|
|
ldr r4, [sp, 0x8]
|
|
ldr r0, [sp, 0x4]
|
|
adds r0, 0x8
|
|
str r0, [sp, 0x3C]
|
|
subs r7, 0x8
|
|
str r7, [sp, 0x18]
|
|
adds r1, r4, 0
|
|
adds r1, 0x8
|
|
str r1, [sp, 0x1C]
|
|
ldr r3, [sp, 0xC]
|
|
subs r3, 0x8
|
|
str r3, [sp, 0x20]
|
|
_08003936:
|
|
ldm r5!, {r0}
|
|
mov r8, r0
|
|
movs r6, 0
|
|
ldr r3, [sp, 0x4]
|
|
asrs r0, r4, 3
|
|
lsls r1, r4, 29
|
|
mov r10, r5
|
|
adds r2, 0x1
|
|
mov r12, r2
|
|
adds r4, 0x1
|
|
mov r9, r4
|
|
ldr r2, [sp, 0x10]
|
|
muls r0, r2
|
|
lsls r7, r0, 5
|
|
lsrs r5, r1, 27
|
|
_08003954:
|
|
asrs r1, r3, 1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
ldr r0, [sp]
|
|
adds r1, r0, r1
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r1, r7
|
|
adds r4, r1, r5
|
|
lsls r0, r6, 2
|
|
mov r2, r8
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0800398A
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r4]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r4]
|
|
_0800398A:
|
|
adds r6, 0x1
|
|
adds r3, 0x1
|
|
cmp r6, 0x7
|
|
ble _08003954
|
|
mov r5, r10
|
|
mov r2, r12
|
|
mov r4, r9
|
|
cmp r2, 0x7
|
|
ble _08003936
|
|
ldr r1, _08003B10 @ =gGlyphInfo + 0x20
|
|
movs r0, 0
|
|
ldr r2, [sp, 0x8]
|
|
ldr r3, [sp, 0x18]
|
|
mov r12, r3
|
|
_080039A6:
|
|
ldm r1!, {r3}
|
|
mov r8, r3
|
|
movs r5, 0
|
|
ldr r3, [sp, 0x3C]
|
|
str r1, [sp, 0x24]
|
|
adds r0, 0x1
|
|
mov r9, r0
|
|
adds r0, r2, 0x1
|
|
mov r10, r0
|
|
cmp r5, r12
|
|
bge _08003A06
|
|
asrs r0, r2, 3
|
|
ldr r1, [sp, 0x10]
|
|
muls r0, r1
|
|
lsls r7, r0, 5
|
|
lsls r0, r2, 29
|
|
lsrs r6, r0, 27
|
|
_080039C8:
|
|
asrs r1, r3, 1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
ldr r2, [sp]
|
|
adds r1, r2, r1
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r1, r7
|
|
adds r4, r1, r6
|
|
lsls r0, r5, 2
|
|
mov r2, r8
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _080039FE
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r4]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r4]
|
|
_080039FE:
|
|
adds r5, 0x1
|
|
adds r3, 0x1
|
|
cmp r5, r12
|
|
blt _080039C8
|
|
_08003A06:
|
|
ldr r1, [sp, 0x24]
|
|
mov r0, r9
|
|
mov r2, r10
|
|
cmp r0, 0x7
|
|
ble _080039A6
|
|
ldr r6, _08003B14 @ =gGlyphInfo + 0x40
|
|
movs r4, 0
|
|
ldr r2, [sp, 0x1C]
|
|
ldr r3, [sp, 0x20]
|
|
cmp r4, r3
|
|
bge _08003A84
|
|
_08003A1C:
|
|
ldm r6!, {r0}
|
|
mov r8, r0
|
|
movs r5, 0
|
|
ldr r3, [sp, 0x4]
|
|
asrs r0, r2, 3
|
|
lsls r1, r2, 29
|
|
mov r12, r6
|
|
adds r4, 0x1
|
|
mov r9, r4
|
|
adds r2, 0x1
|
|
mov r10, r2
|
|
ldr r2, [sp, 0x10]
|
|
muls r0, r2
|
|
lsls r7, r0, 5
|
|
lsrs r6, r1, 27
|
|
_08003A3A:
|
|
asrs r1, r3, 1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
ldr r0, [sp]
|
|
adds r1, r0, r1
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r1, r7
|
|
adds r4, r1, r6
|
|
lsls r0, r5, 2
|
|
mov r2, r8
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _08003A70
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r4]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r4]
|
|
_08003A70:
|
|
adds r5, 0x1
|
|
adds r3, 0x1
|
|
cmp r5, 0x7
|
|
ble _08003A3A
|
|
mov r6, r12
|
|
mov r4, r9
|
|
mov r2, r10
|
|
ldr r1, [sp, 0x20]
|
|
cmp r4, r1
|
|
blt _08003A1C
|
|
_08003A84:
|
|
ldr r2, _08003B18 @ =gGlyphInfo + 0x60
|
|
movs r0, 0
|
|
ldr r1, [sp, 0x1C]
|
|
ldr r3, [sp, 0x20]
|
|
cmp r0, r3
|
|
bge _08003B00
|
|
ldr r3, [sp, 0x18]
|
|
mov r12, r3
|
|
_08003A94:
|
|
ldm r2!, {r3}
|
|
mov r8, r3
|
|
movs r5, 0
|
|
ldr r3, [sp, 0x3C]
|
|
str r2, [sp, 0x30]
|
|
adds r0, 0x1
|
|
mov r9, r0
|
|
adds r0, r1, 0x1
|
|
mov r10, r0
|
|
cmp r5, r12
|
|
bge _08003AF4
|
|
asrs r0, r1, 3
|
|
ldr r2, [sp, 0x10]
|
|
muls r0, r2
|
|
lsls r7, r0, 5
|
|
lsls r0, r1, 29
|
|
lsrs r6, r0, 27
|
|
_08003AB6:
|
|
asrs r1, r3, 1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
ldr r0, [sp]
|
|
adds r1, r0, r1
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r1, r7
|
|
adds r4, r1, r6
|
|
lsls r0, r5, 2
|
|
mov r2, r8
|
|
lsrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _08003AEC
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
lsls r0, 2
|
|
lsls r2, r0
|
|
movs r1, 0xF0
|
|
asrs r1, r0
|
|
ldrb r0, [r4]
|
|
ands r1, r0
|
|
orrs r2, r1
|
|
strb r2, [r4]
|
|
_08003AEC:
|
|
adds r5, 0x1
|
|
adds r3, 0x1
|
|
cmp r5, r12
|
|
blt _08003AB6
|
|
_08003AF4:
|
|
ldr r2, [sp, 0x30]
|
|
mov r0, r9
|
|
mov r1, r10
|
|
ldr r3, [sp, 0x20]
|
|
cmp r0, r3
|
|
blt _08003A94
|
|
_08003B00:
|
|
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
|
|
_08003B10: .4byte gGlyphInfo + 0x20
|
|
_08003B14: .4byte gGlyphInfo + 0x40
|
|
_08003B18: .4byte gGlyphInfo + 0x60
|
|
thumb_func_end sub_8003614
|
|
|
|
thumb_func_start ClearTextSpan
|
|
ClearTextSpan: @ 8003B1C
|
|
bx lr
|
|
thumb_func_end ClearTextSpan
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|