mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-06 22:28:44 -05:00
814 lines
12 KiB
ArmAsm
814 lines
12 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start BlitBitmapRect4BitWithoutColorKey
|
|
BlitBitmapRect4BitWithoutColorKey: @ 8004A60
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x14
|
|
ldr r4, [sp, 0x2C]
|
|
ldr r5, [sp, 0x30]
|
|
ldr r6, [sp, 0x34]
|
|
ldr r7, [sp, 0x38]
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
lsls r3, 16
|
|
lsrs r3, 16
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
lsls r7, 16
|
|
lsrs r7, 16
|
|
str r4, [sp]
|
|
str r5, [sp, 0x4]
|
|
str r6, [sp, 0x8]
|
|
str r7, [sp, 0xC]
|
|
movs r4, 0xFF
|
|
str r4, [sp, 0x10]
|
|
bl BlitBitmapRect4Bit
|
|
add sp, 0x14
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end BlitBitmapRect4BitWithoutColorKey
|
|
|
|
thumb_func_start BlitBitmapRect4Bit
|
|
BlitBitmapRect4Bit: @ 8004AA4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x2C
|
|
str r0, [sp]
|
|
str r1, [sp, 0x4]
|
|
ldr r0, [sp, 0x4C]
|
|
ldr r1, [sp, 0x50]
|
|
ldr r4, [sp, 0x54]
|
|
ldr r5, [sp, 0x58]
|
|
ldr r6, [sp, 0x5C]
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
str r2, [sp, 0x8]
|
|
lsls r3, 16
|
|
lsrs r7, r3, 16
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0xC]
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
mov r9, r1
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
str r6, [sp, 0x10]
|
|
ldr r0, [sp, 0x4]
|
|
ldrh r3, [r0, 0x4]
|
|
ldr r1, [sp, 0xC]
|
|
subs r0, r3, r1
|
|
adds r2, r4
|
|
mov r8, r2
|
|
cmp r0, r4
|
|
bge _08004AF8
|
|
ldr r2, [sp, 0x8]
|
|
adds r0, r2
|
|
mov r8, r0
|
|
_08004AF8:
|
|
ldr r4, [sp, 0x4]
|
|
ldrh r0, [r4, 0x6]
|
|
mov r1, r9
|
|
subs r0, r1
|
|
adds r2, r5, r7
|
|
str r2, [sp, 0x14]
|
|
cmp r0, r5
|
|
bge _08004B0C
|
|
adds r0, r7
|
|
str r0, [sp, 0x14]
|
|
_08004B0C:
|
|
ldr r4, [sp]
|
|
ldrh r1, [r4, 0x4]
|
|
movs r2, 0x7
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
adds r1, r0
|
|
asrs r1, 3
|
|
str r1, [sp, 0x18]
|
|
adds r0, r3, 0
|
|
ands r0, r2
|
|
adds r0, r3, r0
|
|
asrs r0, 3
|
|
str r0, [sp, 0x1C]
|
|
ldr r0, [sp, 0x10]
|
|
cmp r0, 0xFF
|
|
bne _08004BCA
|
|
adds r3, r7, 0
|
|
mov r1, r9
|
|
ldr r2, [sp, 0x14]
|
|
cmp r3, r2
|
|
blt _08004B38
|
|
b _08004C72
|
|
_08004B38:
|
|
ldr r5, [sp, 0x8]
|
|
ldr r6, [sp, 0xC]
|
|
adds r4, r3, 0x1
|
|
str r4, [sp, 0x24]
|
|
adds r0, r1, 0x1
|
|
str r0, [sp, 0x28]
|
|
cmp r5, r8
|
|
bge _08004BBE
|
|
movs r7, 0x3
|
|
asrs r0, r3, 3
|
|
ldr r2, [sp, 0x18]
|
|
muls r0, r2
|
|
lsls r0, 5
|
|
mov r10, r0
|
|
lsls r0, r3, 29
|
|
lsrs r0, 27
|
|
mov r9, r0
|
|
asrs r0, r1, 3
|
|
ldr r4, [sp, 0x1C]
|
|
muls r0, r4
|
|
lsls r0, 5
|
|
mov r12, r0
|
|
lsls r0, r1, 29
|
|
lsrs r3, r0, 27
|
|
_08004B68:
|
|
asrs r0, r5, 1
|
|
ands r0, r7
|
|
ldr r2, [sp]
|
|
ldr r1, [r2]
|
|
adds r1, r0
|
|
asrs r0, r5, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r1, r10
|
|
mov r4, r9
|
|
adds r2, r1, r4
|
|
asrs r0, r6, 1
|
|
ands r0, r7
|
|
ldr r4, [sp, 0x4]
|
|
ldr r1, [r4]
|
|
adds r1, r0
|
|
asrs r0, r6, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r1, r12
|
|
adds r4, r1, r3
|
|
ldrb r2, [r2]
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
lsls r0, 2
|
|
asrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
lsls r1, r0, 2
|
|
lsls r2, r1
|
|
movs r0, 0xF0
|
|
asrs r0, r1
|
|
ldrb r1, [r4]
|
|
ands r0, r1
|
|
orrs r2, r0
|
|
strb r2, [r4]
|
|
adds r5, 0x1
|
|
adds r6, 0x1
|
|
cmp r5, r8
|
|
blt _08004B68
|
|
_08004BBE:
|
|
ldr r3, [sp, 0x24]
|
|
ldr r1, [sp, 0x28]
|
|
ldr r2, [sp, 0x14]
|
|
cmp r3, r2
|
|
blt _08004B38
|
|
b _08004C72
|
|
_08004BCA:
|
|
adds r3, r7, 0
|
|
mov r1, r9
|
|
ldr r4, [sp, 0x14]
|
|
cmp r3, r4
|
|
bge _08004C72
|
|
_08004BD4:
|
|
ldr r5, [sp, 0x8]
|
|
ldr r6, [sp, 0xC]
|
|
adds r0, r3, 0x1
|
|
str r0, [sp, 0x24]
|
|
adds r2, r1, 0x1
|
|
str r2, [sp, 0x28]
|
|
cmp r5, r8
|
|
bge _08004C68
|
|
movs r4, 0x3
|
|
mov r9, r4
|
|
asrs r0, r3, 3
|
|
ldr r2, [sp, 0x18]
|
|
muls r0, r2
|
|
lsls r0, 5
|
|
str r0, [sp, 0x20]
|
|
lsls r0, r3, 29
|
|
lsrs r0, 27
|
|
mov r10, r0
|
|
movs r3, 0x1
|
|
asrs r0, r1, 3
|
|
ldr r4, [sp, 0x1C]
|
|
muls r0, r4
|
|
lsls r0, 5
|
|
mov r12, r0
|
|
lsls r0, r1, 29
|
|
lsrs r7, r0, 27
|
|
_08004C08:
|
|
asrs r0, r5, 1
|
|
mov r1, r9
|
|
ands r0, r1
|
|
ldr r2, [sp]
|
|
ldr r1, [r2]
|
|
adds r1, r0
|
|
asrs r0, r5, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
ldr r4, [sp, 0x20]
|
|
adds r1, r4
|
|
mov r0, r10
|
|
adds r2, r1, r0
|
|
asrs r0, r6, 1
|
|
mov r1, r9
|
|
ands r0, r1
|
|
ldr r4, [sp, 0x4]
|
|
ldr r1, [r4]
|
|
adds r1, r0
|
|
asrs r0, r6, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r1, r12
|
|
adds r4, r1, r7
|
|
ldrb r2, [r2]
|
|
adds r0, r5, 0
|
|
ands r0, r3
|
|
lsls r0, 2
|
|
asrs r2, r0
|
|
movs r0, 0xF
|
|
ands r2, r0
|
|
ldr r0, [sp, 0x10]
|
|
cmp r2, r0
|
|
beq _08004C60
|
|
adds r0, r6, 0
|
|
ands r0, r3
|
|
lsls r1, r0, 2
|
|
lsls r2, r1
|
|
movs r0, 0xF0
|
|
asrs r0, r1
|
|
ldrb r1, [r4]
|
|
ands r0, r1
|
|
orrs r2, r0
|
|
strb r2, [r4]
|
|
_08004C60:
|
|
adds r5, 0x1
|
|
adds r6, 0x1
|
|
cmp r5, r8
|
|
blt _08004C08
|
|
_08004C68:
|
|
ldr r3, [sp, 0x24]
|
|
ldr r1, [sp, 0x28]
|
|
ldr r2, [sp, 0x14]
|
|
cmp r3, r2
|
|
blt _08004BD4
|
|
_08004C72:
|
|
add sp, 0x2C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end BlitBitmapRect4Bit
|
|
|
|
thumb_func_start FillBitmapRect4Bit
|
|
FillBitmapRect4Bit: @ 8004C84
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
mov r9, r0
|
|
ldr r0, [sp, 0x24]
|
|
ldr r4, [sp, 0x28]
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
mov r10, r1
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
adds r5, r2, 0
|
|
lsls r3, 16
|
|
lsrs r3, 16
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r4, 24
|
|
lsrs r7, r4, 24
|
|
adds r4, r1, r3
|
|
mov r3, r9
|
|
ldrh r1, [r3, 0x4]
|
|
cmp r4, r1
|
|
ble _08004CBA
|
|
adds r4, r1, 0
|
|
_08004CBA:
|
|
adds r2, r0
|
|
mov r12, r2
|
|
mov r2, r9
|
|
ldrh r0, [r2, 0x6]
|
|
cmp r12, r0
|
|
ble _08004CC8
|
|
mov r12, r0
|
|
_08004CC8:
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
adds r0, r1, r0
|
|
asrs r0, 3
|
|
str r0, [sp]
|
|
adds r1, r5, 0
|
|
cmp r1, r12
|
|
bge _08004D30
|
|
_08004CD8:
|
|
mov r3, r10
|
|
adds r0, r1, 0x1
|
|
mov r8, r0
|
|
cmp r3, r4
|
|
bge _08004D2A
|
|
asrs r0, r1, 3
|
|
ldr r2, [sp]
|
|
muls r0, r2
|
|
lsls r6, r0, 5
|
|
lsls r0, r1, 29
|
|
lsrs r5, r0, 27
|
|
_08004CEE:
|
|
asrs r2, r3, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
mov r0, r9
|
|
ldr r1, [r0]
|
|
adds r1, r2
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
adds r1, r6
|
|
adds r2, r1, r5
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08004D1A
|
|
ldrb r0, [r2]
|
|
movs r1, 0xF
|
|
ands r1, r0
|
|
lsls r0, r7, 4
|
|
orrs r1, r0
|
|
strb r1, [r2]
|
|
b _08004D24
|
|
_08004D1A:
|
|
ldrb r1, [r2]
|
|
movs r0, 0xF0
|
|
ands r0, r1
|
|
orrs r0, r7
|
|
strb r0, [r2]
|
|
_08004D24:
|
|
adds r3, 0x1
|
|
cmp r3, r4
|
|
blt _08004CEE
|
|
_08004D2A:
|
|
mov r1, r8
|
|
cmp r1, r12
|
|
blt _08004CD8
|
|
_08004D30:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end FillBitmapRect4Bit
|
|
|
|
thumb_func_start BlitBitmapRect4BitTo8Bit
|
|
BlitBitmapRect4BitTo8Bit: @ 8004D40
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x3C
|
|
str r0, [sp]
|
|
str r1, [sp, 0x4]
|
|
ldr r0, [sp, 0x5C]
|
|
ldr r1, [sp, 0x60]
|
|
ldr r5, [sp, 0x64]
|
|
ldr r4, [sp, 0x68]
|
|
ldr r6, [sp, 0x6C]
|
|
ldr r7, [sp, 0x70]
|
|
mov r8, r7
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
str r2, [sp, 0x8]
|
|
lsls r3, 16
|
|
lsrs r3, 16
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0xC]
|
|
lsls r1, 16
|
|
lsrs r7, r1, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
str r6, [sp, 0x10]
|
|
mov r0, r8
|
|
lsls r0, 28
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x14]
|
|
lsls r0, r6, 28
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x28]
|
|
ldr r1, [sp, 0x4]
|
|
ldrh r0, [r1, 0x4]
|
|
ldr r2, [sp, 0xC]
|
|
subs r0, r2
|
|
ldr r1, [sp, 0x8]
|
|
adds r1, r5, r1
|
|
str r1, [sp, 0x18]
|
|
cmp r0, r5
|
|
bge _08004DA6
|
|
ldr r2, [sp, 0x8]
|
|
adds r0, r2
|
|
str r0, [sp, 0x18]
|
|
_08004DA6:
|
|
ldr r5, [sp, 0x4]
|
|
ldrh r1, [r5, 0x6]
|
|
subs r0, r1, r7
|
|
cmp r0, r4
|
|
bge _08004DB8
|
|
adds r0, r3, r1
|
|
subs r0, r7
|
|
str r0, [sp, 0x1C]
|
|
b _08004DBC
|
|
_08004DB8:
|
|
adds r4, r3, r4
|
|
str r4, [sp, 0x1C]
|
|
_08004DBC:
|
|
ldr r0, [sp]
|
|
ldrh r1, [r0, 0x4]
|
|
movs r2, 0x7
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
adds r1, r0
|
|
asrs r1, 3
|
|
str r1, [sp, 0x20]
|
|
ldr r5, [sp, 0x4]
|
|
ldrh r1, [r5, 0x4]
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
adds r1, r0
|
|
asrs r1, 3
|
|
str r1, [sp, 0x24]
|
|
ldr r0, [sp, 0x10]
|
|
cmp r0, 0xFF
|
|
bne _08004E9C
|
|
adds r2, r3, 0
|
|
adds r5, r7, 0
|
|
ldr r1, [sp, 0x1C]
|
|
cmp r2, r1
|
|
blt _08004DEC
|
|
b _08004F7E
|
|
_08004DEC:
|
|
ldr r3, [sp, 0x8]
|
|
lsrs r3, 1
|
|
str r3, [sp, 0x2C]
|
|
movs r0, 0x3
|
|
ands r3, r0
|
|
str r3, [sp, 0x2C]
|
|
ldr r7, [sp, 0x8]
|
|
lsrs r0, r7, 3
|
|
lsls r0, 5
|
|
str r0, [sp, 0x30]
|
|
_08004E00:
|
|
ldr r0, [sp]
|
|
ldr r1, [r0]
|
|
ldr r3, [sp, 0x2C]
|
|
adds r1, r3
|
|
ldr r7, [sp, 0x30]
|
|
adds r1, r7
|
|
asrs r0, r2, 3
|
|
ldr r3, [sp, 0x20]
|
|
muls r0, r3
|
|
lsls r0, 5
|
|
mov r8, r0
|
|
add r1, r8
|
|
lsls r0, r2, 29
|
|
lsrs r7, r0, 27
|
|
adds r6, r1, r7
|
|
ldr r3, [sp, 0x8]
|
|
ldr r4, [sp, 0xC]
|
|
adds r2, 0x1
|
|
mov r10, r2
|
|
adds r0, r5, 0x1
|
|
str r0, [sp, 0x38]
|
|
ldr r1, [sp, 0x18]
|
|
cmp r3, r1
|
|
bge _08004E90
|
|
asrs r0, r5, 3
|
|
ldr r2, [sp, 0x24]
|
|
muls r0, r2
|
|
lsls r0, 6
|
|
mov r12, r0
|
|
lsls r0, r5, 29
|
|
lsrs r0, 26
|
|
mov r9, r0
|
|
_08004E40:
|
|
movs r0, 0x7
|
|
ands r0, r4
|
|
ldr r5, [sp, 0x4]
|
|
ldr r1, [r5]
|
|
adds r1, r0
|
|
asrs r0, r4, 3
|
|
lsls r0, 6
|
|
adds r1, r0
|
|
add r1, r12
|
|
mov r0, r9
|
|
adds r5, r1, r0
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08004E64
|
|
ldrb r0, [r6]
|
|
lsrs r0, 4
|
|
b _08004E80
|
|
_08004E64:
|
|
asrs r2, r3, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r0, [sp]
|
|
ldr r1, [r0]
|
|
adds r1, r2
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r1, r8
|
|
adds r6, r1, r7
|
|
ldrb r1, [r6]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
_08004E80:
|
|
ldr r1, [sp, 0x14]
|
|
adds r0, r1, r0
|
|
strb r0, [r5]
|
|
adds r3, 0x1
|
|
adds r4, 0x1
|
|
ldr r2, [sp, 0x18]
|
|
cmp r3, r2
|
|
blt _08004E40
|
|
_08004E90:
|
|
mov r2, r10
|
|
ldr r5, [sp, 0x38]
|
|
ldr r3, [sp, 0x1C]
|
|
cmp r2, r3
|
|
blt _08004E00
|
|
b _08004F7E
|
|
_08004E9C:
|
|
adds r2, r3, 0
|
|
adds r5, r7, 0
|
|
ldr r7, [sp, 0x1C]
|
|
cmp r2, r7
|
|
bge _08004F7E
|
|
ldr r0, [sp, 0x8]
|
|
lsrs r0, 1
|
|
str r0, [sp, 0x34]
|
|
movs r0, 0x3
|
|
ldr r1, [sp, 0x34]
|
|
ands r1, r0
|
|
str r1, [sp, 0x34]
|
|
_08004EB4:
|
|
ldr r3, [sp]
|
|
ldr r1, [r3]
|
|
ldr r7, [sp, 0x34]
|
|
adds r1, r7
|
|
ldr r3, [sp, 0x8]
|
|
lsrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
asrs r0, r2, 3
|
|
ldr r7, [sp, 0x20]
|
|
muls r0, r7
|
|
lsls r0, 5
|
|
mov r8, r0
|
|
add r1, r8
|
|
lsls r0, r2, 29
|
|
lsrs r7, r0, 27
|
|
adds r6, r1, r7
|
|
ldr r4, [sp, 0xC]
|
|
adds r2, 0x1
|
|
mov r10, r2
|
|
adds r0, r5, 0x1
|
|
str r0, [sp, 0x38]
|
|
ldr r1, [sp, 0x18]
|
|
cmp r3, r1
|
|
bge _08004F74
|
|
asrs r0, r5, 3
|
|
ldr r2, [sp, 0x24]
|
|
muls r0, r2
|
|
lsls r0, 6
|
|
mov r9, r0
|
|
lsls r0, r5, 29
|
|
lsrs r0, 26
|
|
mov r12, r0
|
|
_08004EF6:
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08004F2A
|
|
ldrb r2, [r6]
|
|
movs r0, 0xF0
|
|
ands r0, r2
|
|
ldr r5, [sp, 0x28]
|
|
cmp r0, r5
|
|
beq _08004F6A
|
|
adds r0, r4, 0
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
ldr r5, [sp, 0x4]
|
|
ldr r1, [r5]
|
|
adds r1, r0
|
|
asrs r0, r4, 3
|
|
lsls r0, 6
|
|
adds r1, r0
|
|
add r1, r9
|
|
mov r0, r12
|
|
adds r5, r1, r0
|
|
lsrs r0, r2, 4
|
|
ldr r1, [sp, 0x14]
|
|
adds r0, r1, r0
|
|
b _08004F68
|
|
_08004F2A:
|
|
asrs r2, r3, 1
|
|
movs r0, 0x3
|
|
ands r2, r0
|
|
ldr r5, [sp]
|
|
ldr r1, [r5]
|
|
adds r1, r2
|
|
asrs r0, r3, 3
|
|
lsls r0, 5
|
|
adds r1, r0
|
|
add r1, r8
|
|
adds r6, r1, r7
|
|
ldrb r0, [r6]
|
|
movs r2, 0xF
|
|
ands r2, r0
|
|
ldr r0, [sp, 0x10]
|
|
cmp r2, r0
|
|
beq _08004F6A
|
|
adds r0, r4, 0
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
ldr r5, [sp, 0x4]
|
|
ldr r1, [r5]
|
|
adds r1, r0
|
|
asrs r0, r4, 3
|
|
lsls r0, 6
|
|
adds r1, r0
|
|
add r1, r9
|
|
mov r0, r12
|
|
adds r5, r1, r0
|
|
ldr r1, [sp, 0x14]
|
|
adds r0, r1, r2
|
|
_08004F68:
|
|
strb r0, [r5]
|
|
_08004F6A:
|
|
adds r3, 0x1
|
|
adds r4, 0x1
|
|
ldr r2, [sp, 0x18]
|
|
cmp r3, r2
|
|
blt _08004EF6
|
|
_08004F74:
|
|
mov r2, r10
|
|
ldr r5, [sp, 0x38]
|
|
ldr r3, [sp, 0x1C]
|
|
cmp r2, r3
|
|
blt _08004EB4
|
|
_08004F7E:
|
|
add sp, 0x3C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end BlitBitmapRect4BitTo8Bit
|
|
|
|
thumb_func_start FillBitmapRect8Bit
|
|
FillBitmapRect8Bit: @ 8004F90
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
mov r8, r0
|
|
ldr r0, [sp, 0x28]
|
|
ldr r4, [sp, 0x2C]
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
mov r10, r1
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
adds r6, r2, 0
|
|
lsls r3, 16
|
|
lsrs r3, 16
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
mov r9, r4
|
|
adds r5, r1, r3
|
|
mov r3, r8
|
|
ldrh r1, [r3, 0x4]
|
|
cmp r5, r1
|
|
ble _08004FC8
|
|
adds r5, r1, 0
|
|
_08004FC8:
|
|
adds r7, r2, r0
|
|
mov r2, r8
|
|
ldrh r0, [r2, 0x6]
|
|
cmp r7, r0
|
|
ble _08004FD4
|
|
adds r7, r0, 0
|
|
_08004FD4:
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
adds r0, r1, r0
|
|
asrs r0, 3
|
|
str r0, [sp]
|
|
adds r1, r6, 0
|
|
cmp r1, r7
|
|
bge _08005024
|
|
_08004FE4:
|
|
mov r3, r10
|
|
adds r6, r1, 0x1
|
|
str r6, [sp, 0x4]
|
|
cmp r3, r5
|
|
bge _0800501E
|
|
movs r0, 0x7
|
|
mov r12, r0
|
|
asrs r0, r1, 3
|
|
ldr r2, [sp]
|
|
muls r0, r2
|
|
lsls r4, r0, 6
|
|
lsls r0, r1, 29
|
|
lsrs r2, r0, 26
|
|
_08004FFE:
|
|
adds r0, r3, 0
|
|
mov r6, r12
|
|
ands r0, r6
|
|
mov r6, r8
|
|
ldr r1, [r6]
|
|
adds r1, r0
|
|
asrs r0, r3, 3
|
|
lsls r0, 6
|
|
adds r1, r0
|
|
adds r1, r4
|
|
adds r1, r2
|
|
mov r0, r9
|
|
strb r0, [r1]
|
|
adds r3, 0x1
|
|
cmp r3, r5
|
|
blt _08004FFE
|
|
_0800501E:
|
|
ldr r1, [sp, 0x4]
|
|
cmp r1, r7
|
|
blt _08004FE4
|
|
_08005024:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end FillBitmapRect8Bit
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|