pmd-red/asm/code_800E9E4.s
2024-07-19 20:38:08 -04:00

2153 lines
33 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_800E9E4
sub_800E9E4:
push {lr}
bl sub_800E2C0
movs r1, 0x1
negs r1, r1
cmp r0, r1
bne _0800E9F6
movs r0, 0
b _0800E9F8
_0800E9F6:
movs r0, 0x1
_0800E9F8:
pop {r1}
bx r1
thumb_func_end sub_800E9E4
thumb_func_start sub_800E9FC
sub_800E9FC:
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
ldr r0, _0800EA38
ldr r1, [r0]
movs r2, 0
movs r4, 0x1
negs r4, r4
_0800EA0C:
ldr r0, [r1, 0x4]
cmp r0, r4
beq _0800EA20
cmp r3, 0
bne _0800EA3C
adds r0, r1, 0
adds r0, 0x54
ldrb r0, [r0]
cmp r0, 0
beq _0800EA3C
_0800EA20:
adds r2, 0x1
adds r1, 0xD0
cmp r2, 0x1F
ble _0800EA0C
bl sub_800EC74
lsls r0, 24
cmp r0, 0
bne _0800EA3C
movs r0, 0
b _0800EA3E
.align 2, 0
_0800EA38: .4byte gUnknown_203B0CC
_0800EA3C:
movs r0, 0x1
_0800EA3E:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_800E9FC
thumb_func_start sub_800EA44
sub_800EA44:
push {r4-r6,lr}
lsls r0, 16
asrs r5, r0, 16
lsls r1, 16
lsrs r1, 16
adds r0, r1, 0
bl sub_800ECB8
adds r4, r0, 0
ldr r0, [r4, 0x20]
bl sub_800ECD0
adds r1, r0, 0
movs r2, 0
ldr r0, [r4, 0x1C]
cmp r2, r0
bge _0800EA7C
adds r3, r0, 0
_0800EA68:
movs r6, 0
ldrsh r0, [r1, r6]
cmp r0, r5
bne _0800EA74
ldrb r0, [r1, 0x2]
b _0800EA7E
_0800EA74:
adds r2, 0x1
adds r1, 0xC
cmp r2, r3
blt _0800EA68
_0800EA7C:
ldrb r0, [r4, 0x10]
_0800EA7E:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_800EA44
thumb_func_start sub_800EA84
sub_800EA84:
push {r4,lr}
sub sp, 0x50
adds r4, r0, 0
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0
ldrsh r0, [r0, r1]
str r0, [sp, 0x28]
ldr r0, [r4, 0x10]
str r0, [sp, 0x2C]
ldr r0, [r4, 0xC]
str r0, [sp, 0x30]
ldr r0, [r4, 0x4]
str r0, [sp, 0x34]
ldr r0, [r4, 0x8]
str r0, [sp, 0x38]
ldrh r0, [r4]
bl sub_800ECB8
movs r2, 0
ldrsh r0, [r0, r2]
bl sub_800EBBC
str r0, [sp, 0x3C]
ldr r0, _0800EADC
str r0, [sp, 0x40]
add r1, sp, 0x44
ldr r0, _0800EAE0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
add r1, sp, 0x28
mov r0, sp
movs r2, 0x28
bl memcpy
movs r0, 0x5
mov r1, sp
bl sub_800E208
add sp, 0x50
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0800EADC: .4byte 0x0000ffff
_0800EAE0: .4byte gUnknown_80B9C60
thumb_func_end sub_800EA84
thumb_func_start sub_800EAE4
sub_800EAE4:
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
bl sub_800E2C0
adds r1, r0, 0
movs r3, 0x1
negs r3, r3
cmp r1, r3
beq _0800EB1E
ldr r2, _0800EB14
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r1, r0, r1
ldr r0, [r4]
str r0, [r1, 0x18]
ldr r0, [r1, 0x20]
cmp r0, r3
beq _0800EB18
ldr r0, [r5]
str r0, [r1, 0x1C]
b _0800EB1E
.align 2, 0
_0800EB14: .4byte gUnknown_203B0CC
_0800EB18:
movs r0, 0
strh r0, [r1, 0x1C]
strh r0, [r1, 0x1E]
_0800EB1E:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_800EAE4
thumb_func_start sub_800EB24
sub_800EB24:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x20
adds r6, r1, 0
mov r8, r2
adds r5, r3, 0
ldr r4, [sp, 0x38]
bl sub_800E2C0
adds r1, r0, 0
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800EBB0
ldr r2, _0800EB8C
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r2, r0, r1
adds r0, r2, 0
adds r0, 0xCC
ldr r0, [r0]
cmp r0, 0
bne _0800EB5A
ldr r0, [r6]
str r0, [r2, 0x18]
_0800EB5A:
ldr r0, [r2]
cmp r0, 0x6
beq _0800EB94
ldr r0, [r2, 0x8]
movs r1, 0x7
mov r12, r1
ands r0, r1
cmp r0, 0
bne _0800EB94
mov r1, sp
ldr r0, _0800EB90
ldm r0!, {r3,r6,r7}
stm r1!, {r3,r6,r7}
ldm r0!, {r3,r6,r7}
stm r1!, {r3,r6,r7}
ldm r0!, {r3,r6}
stm r1!, {r3,r6}
mov r7, r12
ands r4, r7
lsls r0, r4, 2
add r0, sp
ldr r0, [r0]
adds r0, r5, r0
b _0800EB96
.align 2, 0
_0800EB8C: .4byte gUnknown_203B0CC
_0800EB90: .4byte gUnknown_80B9C9C
_0800EB94:
adds r0, r5, 0x1
_0800EB96:
str r0, [r2, 0x24]
ldr r1, [r2, 0x20]
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800EBAA
mov r1, r8
ldr r0, [r1]
str r0, [r2, 0x1C]
b _0800EBB0
_0800EBAA:
movs r0, 0
strh r0, [r2, 0x1C]
strh r0, [r2, 0x1E]
_0800EBB0:
add sp, 0x20
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_800EB24
thumb_func_start sub_800EBBC
sub_800EBBC:
push {lr}
bl sub_800ECA4
ldr r0, [r0, 0x1C]
pop {r1}
bx r1
thumb_func_end sub_800EBBC
thumb_func_start sub_800EBC8
sub_800EBC8:
push {r4,lr}
sub sp, 0x50
adds r4, r0, 0
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x4
ldrsh r0, [r0, r1]
str r0, [sp, 0x28]
ldr r0, [r4, 0x10]
str r0, [sp, 0x2C]
ldr r0, [r4, 0xC]
str r0, [sp, 0x30]
ldr r0, [r4, 0x4]
str r0, [sp, 0x34]
ldr r0, [r4, 0x8]
str r0, [sp, 0x38]
ldrh r0, [r4]
bl sub_800ECB8
movs r2, 0x4
ldrsh r0, [r0, r2]
bl sub_800EC68
str r0, [sp, 0x3C]
ldr r0, _0800EC20
str r0, [sp, 0x40]
add r1, sp, 0x44
ldr r0, _0800EC24
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
add r1, sp, 0x28
mov r0, sp
movs r2, 0x28
bl memcpy
movs r0, 0x6
mov r1, sp
bl sub_800E208
add sp, 0x50
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0800EC20: .4byte 0x0000ffff
_0800EC24: .4byte gUnknown_80B9C60
thumb_func_end sub_800EBC8
thumb_func_start sub_800EC28
sub_800EC28:
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
bl sub_800E2C0
adds r1, r0, 0
movs r3, 0x1
negs r3, r3
cmp r1, r3
beq _0800EC62
ldr r2, _0800EC58
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r1, r0, r1
ldr r0, [r4]
str r0, [r1, 0x18]
ldr r0, [r1, 0x20]
cmp r0, r3
beq _0800EC5C
ldr r0, [r5]
str r0, [r1, 0x1C]
b _0800EC62
.align 2, 0
_0800EC58: .4byte gUnknown_203B0CC
_0800EC5C:
movs r0, 0
strh r0, [r1, 0x1C]
strh r0, [r1, 0x1E]
_0800EC62:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_800EC28
thumb_func_start sub_800EC68
sub_800EC68:
push {lr}
bl sub_800ECA4
ldr r0, [r0, 0x1C]
pop {r1}
bx r1
thumb_func_end sub_800EC68
thumb_func_start sub_800EC74
sub_800EC74:
push {lr}
movs r0, 0x1
bl sub_800F19C
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end sub_800EC74
thumb_func_start sub_800EC84
sub_800EC84:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
ldrb r0, [r0, 0x8]
pop {r1}
bx r1
thumb_func_end sub_800EC84
thumb_func_start sub_800EC94
sub_800EC94:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
ldrb r0, [r0, 0x9]
pop {r1}
bx r1
thumb_func_end sub_800EC94
thumb_func_start sub_800ECA4
sub_800ECA4:
adds r1, r0, 0
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _0800ECB4
adds r0, r1
bx lr
.align 2, 0
_0800ECB4: .4byte gUnknown_80B9CC4
thumb_func_end sub_800ECA4
thumb_func_start sub_800ECB8
sub_800ECB8:
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _0800ECCC
adds r0, r1
bx lr
.align 2, 0
_0800ECCC: .4byte gUnknown_80BDBC4
thumb_func_end sub_800ECB8
thumb_func_start sub_800ECD0
sub_800ECD0:
adds r1, r0, 0
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _0800ECE0
adds r0, r1
bx lr
.align 2, 0
_0800ECE0: .4byte gUnknown_80C183C
thumb_func_end sub_800ECD0
thumb_func_start sub_800ECE4
sub_800ECE4:
lsls r0, 24
ldr r1, _0800ECF4
lsrs r0, 23
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_0800ECF4: .4byte gUnknown_80CE73C
thumb_func_end sub_800ECE4
thumb_func_start sub_800ECF8
sub_800ECF8:
lsls r0, 24
ldr r1, _0800ED08
lsrs r0, 22
adds r0, r1
movs r1, 0
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_0800ED08: .4byte gUnknown_80CE37C
thumb_func_end sub_800ECF8
thumb_func_start sub_800ED0C
sub_800ED0C:
lsls r0, 24
ldr r1, _0800ED1C
lsrs r0, 22
adds r0, r1
movs r1, 0x2
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_0800ED1C: .4byte gUnknown_80CE37C
thumb_func_end sub_800ED0C
thumb_func_start sub_800ED20
sub_800ED20:
lsls r0, 16
lsrs r0, 16
ldr r2, _0800ED34
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r2, 0xC
adds r1, r2
ldr r0, [r1]
bx lr
.align 2, 0
_0800ED34: .4byte gUnknown_80BDBC4
thumb_func_end sub_800ED20
thumb_func_start sub_800ED38
sub_800ED38:
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _0800ED60
ldr r0, [r4]
cmp r0, 0
bne _0800ED54
movs r0, 0x4C
movs r1, 0xB
bl MemoryAlloc
str r0, [r4]
movs r1, 0x4C
bl MemoryClear8
_0800ED54:
ldr r0, [r4]
str r5, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0800ED60: .4byte gUnknown_203B0D0
thumb_func_end sub_800ED38
thumb_func_start sub_800ED64
sub_800ED64:
push {r4,lr}
ldr r4, _0800ED7C
ldr r0, [r4]
cmp r0, 0
beq _0800ED76
bl MemoryFree
movs r0, 0
str r0, [r4]
_0800ED76:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800ED7C: .4byte gUnknown_203B0D0
thumb_func_end sub_800ED64
thumb_func_start sub_800ED80
sub_800ED80:
push {r4,lr}
ldr r2, _0800EDAC
ldr r1, [r2]
movs r0, 0
str r0, [r1]
adds r4, r2, 0
movs r3, 0
movs r2, 0x4
movs r1, 0x1
_0800ED92:
ldr r0, [r4]
adds r0, r2
str r3, [r0]
str r3, [r0, 0x4]
str r3, [r0, 0x8]
adds r2, 0x24
subs r1, 0x1
cmp r1, 0
bge _0800ED92
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800EDAC: .4byte gUnknown_203B0D0
thumb_func_end sub_800ED80
thumb_func_start sub_800EDB0
sub_800EDB0:
push {r4,r5,lr}
adds r4, r0, 0
movs r3, 0
ldr r5, _0800EDDC
movs r2, 0
_0800EDBA:
ldr r1, [r5]
adds r0, r1, 0x4
adds r0, r2
ldr r0, [r0]
cmp r0, 0
bne _0800EDE0
adds r1, r2
adds r1, 0x4
adds r0, r4, 0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
movs r0, 0x1
b _0800EDEA
.align 2, 0
_0800EDDC: .4byte gUnknown_203B0D0
_0800EDE0:
adds r2, 0x24
adds r3, 0x1
cmp r3, 0x1
ble _0800EDBA
movs r0, 0
_0800EDEA:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_800EDB0
thumb_func_start sub_800EDF0
sub_800EDF0:
push {r4,lr}
sub sp, 0x24
adds r4, r1, 0
cmp r0, 0
beq _0800EE00
cmp r0, 0x1
beq _0800EE1A
b _0800EE44
_0800EE00:
movs r0, 0x3
str r0, [sp]
movs r0, 0xE
str r0, [sp, 0xC]
movs r1, 0x1
negs r1, r1
str r1, [sp, 0x10]
movs r0, 0xDC
lsls r0, 2
str r0, [sp, 0x18]
movs r0, 0x1F
str r0, [sp, 0x1C]
b _0800EE40
_0800EE1A:
movs r0, 0x4
str r0, [sp]
movs r0, 0xE
str r0, [sp, 0xC]
movs r0, 0xF0
lsls r0, 4
str r0, [sp, 0x10]
movs r0, 0x1
negs r0, r0
str r0, [sp, 0x18]
str r0, [sp, 0x1C]
bl sub_8000728
movs r2, 0x2
eors r0, r2
negs r1, r0
orrs r1, r0
asrs r1, 31
ands r1, r2
_0800EE40:
str r1, [sp, 0x14]
str r4, [sp, 0x4]
_0800EE44:
ldr r0, [r4, 0x4]
str r0, [sp, 0x8]
movs r0, 0
str r0, [sp, 0x20]
mov r0, sp
bl sub_800EDB0
add sp, 0x24
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_800EDF0
thumb_func_start sub_800EE5C
sub_800EE5C:
push {r4-r6,lr}
adds r4, r0, 0
bl sub_800ECA4
adds r6, r0, 0
cmp r4, 0
beq _0800EEC2
ldr r2, [r6]
subs r0, r2, 0x1
cmp r0, 0x1
bls _0800EEC2
ldr r1, [r6, 0x4]
adds r0, r2, 0
bl sub_800F1C0
adds r5, r0, 0
cmp r5, 0
beq _0800EEC2
ldr r0, [r6]
ldr r1, [r6, 0x4]
bl sub_800F0F4
adds r4, r0, 0
movs r0, 0x1
negs r0, r0
cmp r4, r0
bne _0800EE9A
adds r0, r5, 0
bl sub_800F204
b _0800EEC2
_0800EE9A:
movs r0, 0x2
negs r0, r0
cmp r4, r0
beq _0800EEB6
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_800F13C
adds r0, r4, 0
adds r1, r5, 0
bl sub_800EDF0
b _0800EEBC
_0800EEB6:
adds r0, r5, 0
bl sub_800F204
_0800EEBC:
ldr r0, [r6, 0x4]
bl sub_800F15C
_0800EEC2:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_800EE5C
thumb_func_start sub_800EEC8
sub_800EEC8:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
movs r1, 0
ldrsh r0, [r0, r1]
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EEC8
thumb_func_start sub_800EEE0
sub_800EEE0:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
movs r1, 0x4
ldrsh r0, [r0, r1]
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EEE0
thumb_func_start sub_800EEF8
sub_800EEF8:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
movs r1, 0x2
ldrsh r0, [r0, r1]
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EEF8
thumb_func_start sub_800EF10
sub_800EF10:
push {lr}
lsls r0, 16
lsrs r0, 16
bl sub_800ECB8
movs r1, 0x6
ldrsh r0, [r0, r1]
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EF10
thumb_func_start sub_800EF28
sub_800EF28:
push {lr}
lsls r0, 24
lsrs r0, 24
bl sub_800ECE4
lsls r0, 16
asrs r0, 16
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EF28
thumb_func_start sub_800EF40
sub_800EF40:
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
cmp r1, 0
beq _0800EF52
bl sub_800ECF8
b _0800EF56
_0800EF52:
bl sub_800ED0C
_0800EF56:
lsls r0, 16
asrs r0, 16
bl sub_800EE5C
pop {r0}
bx r0
thumb_func_end sub_800EF40
thumb_func_start sub_800EF64
sub_800EF64:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _0800EF9C
mov r9, r0
movs r1, 0x4
mov r8, r1
movs r7, 0
movs r6, 0
movs r5, 0x1
_0800EF7A:
mov r0, r9
ldr r1, [r0]
adds r0, r1, 0x4
adds r0, r7
ldr r0, [r0]
cmp r0, 0
beq _0800F01A
mov r0, r8
adds r4, r1, r0
ldr r0, [r4]
cmp r0, 0x3
beq _0800EFA0
cmp r0, 0x3
bls _0800F018
cmp r0, 0x4
beq _0800EFDA
b _0800F018
.align 2, 0
_0800EF9C: .4byte gUnknown_203B0D0
_0800EFA0:
ldr r0, [r4, 0x8]
ldr r1, [r4, 0x18]
bl sub_8005674
mov r1, r9
ldr r0, [r1]
ldr r0, [r0]
cmp r0, 0
beq _0800EFCA
cmp r0, 0x1
bne _0800F00C
ldr r0, [r4, 0x8]
ldr r1, [r0, 0x18]
ldr r0, [r4, 0xC]
adds r0, 0x10
lsls r0, 20
lsrs r0, 16
movs r2, 0x10
bl sub_809971C
b _0800F00C
_0800EFCA:
ldr r0, [r4, 0xC]
ldr r1, [r4, 0x8]
ldr r1, [r1, 0x18]
ldr r2, [r4, 0x1C]
ldr r3, [r4, 0x20]
bl sub_8005770
b _0800F00C
_0800EFDA:
bl sub_8000728
cmp r0, 0x1
bne _0800F000
movs r0, 0
movs r1, 0x1
bl sub_800CD64
movs r0, 0
bl sub_8052210
movs r0, 0x5
movs r1, 0
bl sub_803EAF0
bl sub_800CB20
bl xxx_call_update_bg_vram
_0800F000:
ldr r0, [r4, 0x8]
ldr r1, [r4, 0xC]
ldr r2, [r4, 0x10]
ldr r3, [r4, 0x14]
bl sub_8009A1C
_0800F00C:
ldr r0, [r4, 0x4]
cmp r0, 0
beq _0800F018
bl sub_800F204
str r6, [r4, 0x4]
_0800F018:
str r6, [r4]
_0800F01A:
movs r0, 0x24
add r8, r0
adds r7, 0x24
subs r5, 0x1
cmp r5, 0
bge _0800EF7A
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_800EF64
thumb_func_start sub_800F034
sub_800F034:
push {r4-r6,lr}
ldr r4, _0800F074
ldr r0, [r4]
cmp r0, 0
bne _0800F04E
movs r0, 0x10
movs r1, 0xB
bl MemoryAlloc
str r0, [r4]
movs r1, 0x10
bl MemoryClear8
_0800F04E:
movs r3, 0
adds r6, r4, 0
movs r5, 0x1
negs r5, r5
movs r4, 0
_0800F058:
ldr r0, [r6]
lsls r2, r3, 3
adds r1, r0, r2
str r5, [r1]
adds r0, 0x4
adds r0, r2
str r4, [r0]
adds r3, 0x1
cmp r3, 0x1
ble _0800F058
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0800F074: .4byte gUnknown_203B0D4
thumb_func_end sub_800F034
thumb_func_start sub_800F078
sub_800F078:
push {r4,lr}
ldr r4, _0800F090
ldr r0, [r4]
cmp r0, 0
beq _0800F08A
bl MemoryFree
movs r0, 0
str r0, [r4]
_0800F08A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800F090: .4byte gUnknown_203B0D4
thumb_func_end sub_800F078
thumb_func_start sub_800F094
sub_800F094:
push {r4-r6,lr}
movs r3, 0
ldr r6, _0800F0BC
movs r5, 0x1
negs r5, r5
movs r4, 0
_0800F0A0:
ldr r0, [r6]
lsls r2, r3, 3
adds r1, r0, r2
str r5, [r1]
adds r0, 0x4
adds r0, r2
str r4, [r0]
adds r3, 0x1
cmp r3, 0x1
ble _0800F0A0
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0800F0BC: .4byte gUnknown_203B0D4
thumb_func_end sub_800F094
thumb_func_start sub_800F0C0
sub_800F0C0:
push {lr}
cmp r0, 0x3
bne _0800F0D8
ldr r0, _0800F0D4
ldr r0, [r0]
ldr r0, [r0]
cmp r0, r1
bne _0800F0EC
movs r0, 0
b _0800F0F0
.align 2, 0
_0800F0D4: .4byte gUnknown_203B0D4
_0800F0D8:
ldr r0, _0800F0E8
ldr r0, [r0]
ldr r0, [r0, 0x8]
cmp r0, r1
bne _0800F0EC
movs r0, 0x1
b _0800F0F0
.align 2, 0
_0800F0E8: .4byte gUnknown_203B0D4
_0800F0EC:
movs r0, 0x3
negs r0, r0
_0800F0F0:
pop {r1}
bx r1
thumb_func_end sub_800F0C0
thumb_func_start sub_800F0F4
sub_800F0F4:
push {lr}
cmp r0, 0x3
bne _0800F114
ldr r0, _0800F110
ldr r2, [r0]
ldr r0, [r2]
cmp r0, r1
beq _0800F11E
ldr r0, [r2, 0x4]
cmp r0, 0
bne _0800F132
movs r0, 0
b _0800F136
.align 2, 0
_0800F110: .4byte gUnknown_203B0D4
_0800F114:
ldr r0, _0800F124
ldr r2, [r0]
ldr r0, [r2, 0x8]
cmp r0, r1
bne _0800F128
_0800F11E:
movs r0, 0x2
negs r0, r0
b _0800F136
.align 2, 0
_0800F124: .4byte gUnknown_203B0D4
_0800F128:
ldr r0, [r2, 0xC]
cmp r0, 0
bne _0800F132
movs r0, 0x1
b _0800F136
_0800F132:
movs r0, 0x1
negs r0, r0
_0800F136:
pop {r1}
bx r1
thumb_func_end sub_800F0F4
thumb_func_start sub_800F13C
sub_800F13C:
push {lr}
ldr r1, _0800F158
ldr r3, [r1]
lsls r1, r0, 3
adds r0, r3, 0x4
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _0800F154
adds r1, r3, r1
ldr r0, [r2, 0x4]
str r0, [r1]
_0800F154:
pop {r0}
bx r0
.align 2, 0
_0800F158: .4byte gUnknown_203B0D4
thumb_func_end sub_800F13C
thumb_func_start sub_800F15C
sub_800F15C:
push {r4,r5,lr}
adds r4, r0, 0
movs r3, 0
ldr r5, _0800F17C
_0800F164:
ldr r1, [r5]
lsls r2, r3, 3
adds r0, r1, r2
ldr r0, [r0]
cmp r0, r4
bne _0800F180
adds r1, 0x4
adds r1, r2
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
b _0800F186
.align 2, 0
_0800F17C: .4byte gUnknown_203B0D4
_0800F180:
adds r3, 0x1
cmp r3, 0x1
ble _0800F164
_0800F186:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_800F15C
thumb_func_start sub_800F18C
sub_800F18C:
ldr r1, _0800F198
lsls r0, 3
ldr r1, [r1]
adds r1, r0
adds r0, r1, 0
bx lr
.align 2, 0
_0800F198: .4byte gUnknown_203B0D4
thumb_func_end sub_800F18C
thumb_func_start sub_800F19C
sub_800F19C:
push {lr}
ldr r1, _0800F1B4
ldr r1, [r1]
lsls r0, 3
adds r1, 0x4
adds r1, r0
ldr r0, [r1]
cmp r0, 0
beq _0800F1B8
movs r0, 0x1
b _0800F1BA
.align 2, 0
_0800F1B4: .4byte gUnknown_203B0D4
_0800F1B8:
movs r0, 0
_0800F1BA:
pop {r1}
bx r1
thumb_func_end sub_800F19C
thumb_func_start sub_800F1C0
sub_800F1C0:
push {lr}
sub sp, 0x8
adds r2, r1, 0
cmp r0, 0x1
bcc _0800F1EC
cmp r0, 0x3
bls _0800F1D4
cmp r0, 0x4
beq _0800F1E4
b _0800F1EC
_0800F1D4:
ldr r1, _0800F1E0
mov r0, sp
bl sprintf
b _0800F1EC
.align 2, 0
_0800F1E0: .4byte gUnknown_80CE77C
_0800F1E4:
ldr r1, _0800F1FC
mov r0, sp
bl sprintf
_0800F1EC:
ldr r1, _0800F200
mov r0, sp
bl Call_OpenFileAndGetFileDataPtr
add sp, 0x8
pop {r1}
bx r1
.align 2, 0
_0800F1FC: .4byte gUnknown_80CE788
_0800F200: .4byte gEffectFileArchive
thumb_func_end sub_800F1C0
thumb_func_start sub_800F204
sub_800F204:
push {lr}
bl CloseFile
pop {r0}
bx r0
thumb_func_end sub_800F204
thumb_func_start GetDungeonPokemonSprite
@ DungeonPokemonSprite *GetDungeonPokemonSprite(int id)
GetDungeonPokemonSprite:
push {r4,lr}
adds r4, r0, 0
movs r3, 0
ldr r0, _0800F230
ldr r0, [r0]
adds r1, r0, 0x4
adds r2, r0, 0
adds r2, 0x8
_0800F220:
ldrb r0, [r1]
cmp r0, 0
beq _0800F234
ldr r0, [r2]
cmp r0, r4
bne _0800F234
adds r0, r1, 0
b _0800F240
.align 2, 0
_0800F230: .4byte gDungeonPokemonSprites
_0800F234:
adds r1, 0x40
adds r2, 0x40
adds r3, 0x1
cmp r3, 0x15
ble _0800F220
movs r0, 0
_0800F240:
pop {r4}
pop {r1}
bx r1
thumb_func_end GetDungeonPokemonSprite
thumb_func_start NewDungeonPokemonSprite
@ DungeonPokemonSprite *NewDungeonPokemonSprite(void)
NewDungeonPokemonSprite:
push {lr}
movs r2, 0
ldr r0, _0800F25C
ldr r0, [r0]
adds r1, r0, 0x4
_0800F252:
ldrb r0, [r1]
cmp r0, 0
bne _0800F260
adds r0, r1, 0
b _0800F26A
.align 2, 0
_0800F25C: .4byte gDungeonPokemonSprites
_0800F260:
adds r1, 0x40
adds r2, 0x1
cmp r2, 0x15
ble _0800F252
movs r0, 0
_0800F26A:
pop {r1}
bx r1
thumb_func_end NewDungeonPokemonSprite
thumb_func_start GetNextStatusSymbol
@ u32 GetNextStatusSymbol(?, int select)
@ The "select" parameter exists to differentiate between the two kinds of
@ status symbols that can appear at the same time.
@ Only frozen falls under select = 1, every other symbol falls under select = 0
GetNextStatusSymbol:
push {r4-r6,lr}
adds r2, r0, 0
lsls r0, r1, 3
adds r0, 0x28
adds r3, r2, r0
movs r5, 0x80
lsls r5, 21
cmp r1, 0
bne _0800F284
movs r5, 0x1
_0800F284:
movs r6, 0x80
lsls r6, 21
cmp r1, 0
bne _0800F290
movs r6, 0x80
lsls r6, 20
_0800F290:
movs r4, 0x1
cmp r1, 0
bne _0800F298
movs r4, 0x1C
_0800F298:
ldr r0, [r2, 0xC]
cmp r0, 0
bne _0800F2A4
b _0800F2CC
_0800F2A0:
adds r0, r1, 0
b _0800F2CE
_0800F2A4:
ldr r2, [r3]
adds r1, r5, 0
cmp r2, 0
beq _0800F2AE
adds r1, r2, 0
_0800F2AE:
movs r2, 0
cmp r2, r4
bge _0800F2CC
adds r3, r0, 0
_0800F2B6:
lsls r1, 1
cmp r1, r6
bls _0800F2BE
adds r1, r5, 0
_0800F2BE:
adds r0, r3, 0
ands r0, r1
cmp r0, 0
bne _0800F2A0
adds r2, 0x1
cmp r2, r4
blt _0800F2B6
_0800F2CC:
movs r0, 0
_0800F2CE:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end GetNextStatusSymbol
thumb_func_start StatusSymbolBitToIndex
StatusSymbolBitToIndex:
push {lr}
movs r1, 0
cmp r0, 0
beq _0800F2E4
_0800F2DC:
lsrs r0, 1
adds r1, 0x1
cmp r0, 0
bne _0800F2DC
_0800F2E4:
adds r0, r1, 0
pop {r1}
bx r1
thumb_func_end StatusSymbolBitToIndex
thumb_func_start sub_800F2EC
sub_800F2EC:
push {r4-r7,lr}
sub sp, 0xC
adds r5, r0, 0
adds r6, r1, 0
adds r7, r2, 0
lsls r0, r6, 3
adds r0, 0x28
adds r4, r5, r0
ldr r0, [r5, 0xC]
cmp r0, 0
bne _0800F306
str r0, [r4]
b _0800F35C
_0800F306:
ldr r0, [r4]
cmp r0, 0
bne _0800F30E
str r0, [r4, 0x4]
_0800F30E:
ldr r0, [r4, 0x4]
cmp r0, 0
bgt _0800F32A
adds r0, r5, 0
adds r1, r6, 0
bl GetNextStatusSymbol
adds r1, r0, 0
ldr r0, [r4]
cmp r0, r1
beq _0800F326
str r1, [r4]
_0800F326:
movs r0, 0x3C
b _0800F32C
_0800F32A:
subs r0, 0x1
_0800F32C:
str r0, [r4, 0x4]
ldrb r0, [r5, 0x10]
cmp r0, 0
beq _0800F35C
ldr r0, [r4]
cmp r0, 0
beq _0800F35C
bl StatusSymbolBitToIndex
adds r1, r0, 0
movs r2, 0x8
ldrsh r0, [r5, r2]
adds r2, r5, 0
adds r2, 0x14
lsls r3, r6, 2
adds r3, 0x18
adds r3, r5, r3
str r7, [sp]
ldrb r4, [r5, 0x11]
str r4, [sp, 0x4]
ldr r4, [r5, 0x4]
str r4, [sp, 0x8]
bl DrawStatusSprite
_0800F35C:
add sp, 0xC
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_800F2EC
thumb_func_start DrawStatusSprite
@ void DrawStatusSprite(?, int status, Position *pos, Position *pos_offset, Position *pos_screen, ?)
DrawStatusSprite:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
mov r12, r2
ldr r0, [sp, 0x20]
mov r8, r0
ldr r4, [sp, 0x24]
ldr r0, _0800F410
lsls r1, 3
adds r2, r1, r0
ldr r0, [r2]
ldr r1, [r2, 0x4]
str r0, [sp]
str r1, [sp, 0x4]
lsls r2, r0, 1
ldr r1, [sp]
adds r2, r1
lsls r2, 3
ldr r0, _0800F414
adds r2, r0
ldr r0, [r2, 0x8]
ldr r6, _0800F418
adds r7, r0, r6
movs r0, 0x3
ands r4, r0
lsls r4, 10
ldr r5, _0800F41C
ldrh r1, [r5, 0x4]
ldr r0, _0800F420
ands r0, r1
orrs r0, r4
strh r0, [r5, 0x4]
mov r0, r12
movs r4, 0
ldrsh r1, [r0, r4]
ldr r0, [r2]
lsls r0, 2
subs r1, r0
mov r6, r8
movs r4, 0
ldrsh r0, [r6, r4]
subs r1, r0
movs r6, 0
ldrsh r0, [r3, r6]
adds r4, r1, r0
mov r0, r12
movs r6, 0x2
ldrsh r1, [r0, r6]
ldr r0, [r2, 0x4]
lsls r0, 2
subs r1, r0
mov r2, r8
movs r6, 0x2
ldrsh r0, [r2, r6]
subs r1, r0
movs r2, 0x2
ldrsh r0, [r3, r2]
adds r3, r1, r0
adds r6, r3, 0
subs r6, 0x10
movs r0, 0x20
negs r0, r0
cmp r4, r0
bge _0800F3E8
b _0800F5E4
_0800F3E8:
cmp r3, r0
bge _0800F3EE
b _0800F5E4
_0800F3EE:
cmp r4, 0xEF
ble _0800F3F4
b _0800F5E4
_0800F3F4:
cmp r3, 0x9F
ble _0800F3FA
b _0800F5E4
_0800F3FA:
ldr r0, [sp]
subs r0, 0x1
cmp r0, 0xF
bls _0800F404
b _0800F5A6
_0800F404:
lsls r0, 2
ldr r1, _0800F424
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0800F410: .4byte gStatusSprites
_0800F414: .4byte gStatusGraphics
_0800F418: .4byte 0x0000032b
_0800F41C: .4byte gUnknown_203B0DC
_0800F420: .4byte 0x0000f3ff
_0800F424: .4byte _0800F428
.align 2, 0
_0800F428:
.4byte _0800F468
.4byte _0800F4CC
.4byte _0800F4CC
.4byte _0800F574
.4byte _0800F538
.4byte _0800F4CC
.4byte _0800F4CC
.4byte _0800F498
.4byte _0800F4CC
.4byte _0800F4CC
.4byte _0800F4CC
.4byte _0800F468
.4byte _0800F4CC
.4byte _0800F468
.4byte _0800F4CC
.4byte _0800F500
_0800F468:
ldrh r2, [r5]
ldr r1, _0800F48C
adds r0, r1, 0
ands r0, r2
strh r0, [r5]
ldrh r0, [r5, 0x2]
ands r1, r0
ldr r0, _0800F490
ands r4, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r4
strh r1, [r5, 0x2]
ldr r1, _0800F494
ands r1, r6
b _0800F59A
.align 2, 0
_0800F48C: .4byte 0x00003fff
_0800F490: .4byte 0x000001ff
_0800F494: .4byte 0x00000fff
_0800F498:
movs r3, 0x80
lsls r3, 8
ldrh r2, [r5]
ldr r1, _0800F4C0
adds r0, r1, 0
ands r0, r2
orrs r0, r3
strh r0, [r5]
ldrh r0, [r5, 0x2]
ands r1, r0
ldr r0, _0800F4C4
ands r4, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r4
strh r1, [r5, 0x2]
ldr r1, _0800F4C8
ands r1, r6
b _0800F59A
.align 2, 0
_0800F4C0: .4byte 0x00003fff
_0800F4C4: .4byte 0x000001ff
_0800F4C8: .4byte 0x00000fff
_0800F4CC:
ldrh r2, [r5]
ldr r1, _0800F4F4
adds r0, r1, 0
ands r0, r2
strh r0, [r5]
movs r2, 0x80
lsls r2, 7
ldrh r0, [r5, 0x2]
ands r1, r0
orrs r1, r2
ldr r0, _0800F4F8
ands r4, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r4
strh r1, [r5, 0x2]
ldr r1, _0800F4FC
ands r1, r6
b _0800F59A
.align 2, 0
_0800F4F4: .4byte 0x00003fff
_0800F4F8: .4byte 0x000001ff
_0800F4FC: .4byte 0x00000fff
_0800F500:
ldrh r2, [r5]
ldr r1, _0800F52C
adds r0, r1, 0
ands r0, r2
strh r0, [r5]
movs r2, 0x80
lsls r2, 7
ldrh r0, [r5, 0x2]
ands r1, r0
orrs r1, r2
adds r2, r4, 0
adds r2, 0x8
ldr r0, _0800F530
ands r2, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r2
strh r1, [r5, 0x2]
ldr r1, _0800F534
ands r1, r6
b _0800F59A
.align 2, 0
_0800F52C: .4byte 0x00003fff
_0800F530: .4byte 0x000001ff
_0800F534: .4byte 0x00000fff
_0800F538:
movs r3, 0x80
lsls r3, 7
ldrh r2, [r5]
ldr r1, _0800F568
adds r0, r1, 0
ands r0, r2
orrs r0, r3
strh r0, [r5]
movs r2, 0x80
lsls r2, 8
ldrh r0, [r5, 0x2]
ands r1, r0
orrs r1, r2
ldr r0, _0800F56C
ands r4, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r4
strh r1, [r5, 0x2]
ldr r1, _0800F570
ands r1, r6
b _0800F59A
.align 2, 0
_0800F568: .4byte 0x00003fff
_0800F56C: .4byte 0x000001ff
_0800F570: .4byte 0x00000fff
_0800F574:
ldrh r2, [r5]
ldr r1, _0800F5F0
adds r0, r1, 0
ands r0, r2
strh r0, [r5]
movs r2, 0x80
lsls r2, 8
ldrh r0, [r5, 0x2]
ands r1, r0
orrs r1, r2
ldr r0, _0800F5F4
ands r4, r0
movs r0, 0xFE
lsls r0, 8
ands r1, r0
orrs r1, r4
strh r1, [r5, 0x2]
ldr r1, _0800F5F8
ands r1, r3
_0800F59A:
lsls r1, 4
ldrh r2, [r5, 0x6]
movs r0, 0xF
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x6]
_0800F5A6:
ldr r0, _0800F5FC
ands r7, r0
ldrh r1, [r5, 0x4]
movs r0, 0xFC
lsls r0, 8
ands r0, r1
orrs r0, r7
movs r1, 0xF
ldr r3, [sp, 0x4]
ands r1, r3
lsls r1, 12
ldr r2, _0800F5F8
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
mov r4, r12
movs r6, 0x2
ldrsh r1, [r4, r6]
mov r2, r8
movs r3, 0x2
ldrsh r0, [r2, r3]
subs r1, r0
lsrs r0, r1, 31
adds r1, r0
asrs r1, 1
adds r1, 0x1
adds r0, r5, 0
movs r2, 0
movs r3, 0
bl AddSprite
_0800F5E4:
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F5F0: .4byte 0x00003fff
_0800F5F4: .4byte 0x000001ff
_0800F5F8: .4byte 0x00000fff
_0800F5FC: .4byte 0x000003ff
thumb_func_end DrawStatusSprite
thumb_func_start LoadStatusGraphics
LoadStatusGraphics:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r1, 24
lsrs r1, 24
mov r9, r1
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
ldr r0, _0800F660
adds r1, r0
ldr r7, [r1, 0x14]
ldr r3, [r1, 0x10]
ldr r2, [r1]
ldr r0, [r1, 0x4]
muls r0, r2
lsls r4, r0, 5
mov r8, r4
ldr r0, [r1, 0x8]
ldr r1, _0800F664
adds r0, r1
lsls r5, r0, 5
adds r6, r5, 0
ldr r0, _0800F668
ldr r0, [r0]
ldr r0, [r0]
cmp r0, 0
bge _0800F63C
adds r0, 0x3
_0800F63C:
asrs r0, 2
adds r1, r3, 0
bl __modsi3
muls r0, r4
ldr r1, _0800F66C
adds r0, r1
adds r1, r7, r0
mov r2, r9
cmp r2, 0
beq _0800F674
ldr r2, _0800F670
adds r0, r5, r2
adds r2, r4, 0
bl sub_80098BC
b _0800F67E
.align 2, 0
_0800F660: .4byte gStatusGraphics
_0800F664: .4byte 0x0000032b
_0800F668: .4byte gDungeonPokemonSprites
_0800F66C: .4byte gStatusGraphics4bpp
_0800F670: .4byte 0x06010000
_0800F674:
ldr r2, _0800F68C
adds r0, r6, r2
mov r2, r8
bl CpuCopy
_0800F67E:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F68C: .4byte 0x06010000
thumb_func_end LoadStatusGraphics
thumb_func_start InitDungeonPokemonSprites
InitDungeonPokemonSprites:
push {r4,r5,lr}
ldr r5, _0800F738
ldr r0, [r5]
cmp r0, 0
bne _0800F6AC
ldr r4, _0800F73C
adds r0, r4, 0
movs r1, 0xC
bl MemoryAlloc
str r0, [r5]
adds r1, r4, 0
bl MemoryClear8
_0800F6AC:
ldr r1, [r5]
movs r0, 0
str r0, [r1]
movs r0, 0x1
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x2
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x3
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x4
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x5
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x6
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x7
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x8
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x9
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xA
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xB
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xC
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xD
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xE
movs r1, 0
bl LoadStatusGraphics
movs r0, 0xF
movs r1, 0
bl LoadStatusGraphics
movs r0, 0x10
movs r1, 0
bl LoadStatusGraphics
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0800F738: .4byte gDungeonPokemonSprites
_0800F73C: .4byte 0x00000584
thumb_func_end InitDungeonPokemonSprites
thumb_func_start FreeDungeonPokemonSprites
FreeDungeonPokemonSprites:
push {r4,lr}
ldr r4, _0800F758
ldr r0, [r4]
cmp r0, 0
beq _0800F752
bl MemoryFree
movs r0, 0
str r0, [r4]
_0800F752:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800F758: .4byte gDungeonPokemonSprites
thumb_func_end FreeDungeonPokemonSprites
thumb_func_start UpdateDungeonPokemonSprite
@ void UpdateDungeonPokemonSprite(int id, short species, int status, char visible)
UpdateDungeonPokemonSprite:
push {r4-r7,lr}
adds r4, r0, 0
adds r7, r2, 0
lsls r1, 16
asrs r5, r1, 16
lsls r3, 24
lsrs r6, r3, 24
ldr r0, _0800F790
ldr r0, [r0]
cmp r0, 0
beq _0800F788
adds r0, r4, 0
bl GetDungeonPokemonSprite
cmp r0, 0
beq _0800F788
movs r1, 0
strh r5, [r0, 0x8]
str r7, [r0, 0xC]
strb r6, [r0, 0x10]
adds r0, 0x38
strb r1, [r0]
_0800F788:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F790: .4byte gDungeonPokemonSprites
thumb_func_end UpdateDungeonPokemonSprite
thumb_func_start sub_800F794
sub_800F794:
push {r4-r6,lr}
adds r1, r0, 0
adds r4, r2, 0
adds r5, r3, 0
ldr r6, [sp, 0x10]
ldr r0, _0800F7CC
ldr r0, [r0]
cmp r0, 0
beq _0800F7C6
adds r0, r1, 0
bl GetDungeonPokemonSprite
adds r2, r0, 0
cmp r2, 0
beq _0800F7C6
adds r1, r2, 0
adds r1, 0x38
movs r0, 0x1
strb r0, [r1]
strh r4, [r2, 0x3C]
strh r5, [r2, 0x3E]
ldr r0, [r6]
str r0, [r2, 0x20]
ldr r0, [r6, 0xC]
str r0, [r2, 0x24]
_0800F7C6:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0800F7CC: .4byte gDungeonPokemonSprites
thumb_func_end sub_800F794
thumb_func_start sub_800F7D0
sub_800F7D0:
push {r4-r7,lr}
mov r7, r8
push {r7}
mov r8, r0
ldr r0, _0800F800
ldr r0, [r0]
cmp r0, 0
beq _0800F8C0
ldr r1, [r0]
adds r0, r1, 0
cmp r1, 0
bge _0800F7EA
adds r0, r1, 0x3
_0800F7EA:
asrs r0, 2
lsls r0, 2
subs r0, r1, r0
cmp r0, 0x1
beq _0800F82A
cmp r0, 0x1
bgt _0800F804
cmp r0, 0
beq _0800F80E
b _0800F888
.align 2, 0
_0800F800: .4byte gDungeonPokemonSprites
_0800F804:
cmp r0, 0x2
beq _0800F846
cmp r0, 0x3
beq _0800F868
b _0800F888
_0800F80E:
movs r0, 0x1
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x2
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x3
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x4
b _0800F860
_0800F82A:
movs r0, 0x5
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x6
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x7
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x8
b _0800F860
_0800F846:
movs r0, 0x9
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xA
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xB
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xC
_0800F860:
movs r1, 0x1
bl LoadStatusGraphics
b _0800F888
_0800F868:
movs r0, 0xD
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xE
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0xF
movs r1, 0x1
bl LoadStatusGraphics
movs r0, 0x10
movs r1, 0x1
bl LoadStatusGraphics
_0800F888:
movs r5, 0
movs r6, 0x4
_0800F88C:
ldr r7, _0800F8CC
ldr r4, [r7]
lsls r0, r5, 6
adds r0, r4, r0
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _0800F8B0
adds r4, r6
adds r0, r4, 0
movs r1, 0
mov r2, r8
bl sub_800F2EC
adds r0, r4, 0
movs r1, 0x1
mov r2, r8
bl sub_800F2EC
_0800F8B0:
adds r6, 0x40
adds r5, 0x1
cmp r5, 0x15
ble _0800F88C
ldr r1, [r7]
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_0800F8C0:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F8CC: .4byte gDungeonPokemonSprites
thumb_func_end sub_800F7D0
thumb_func_start AddPokemonDungeonSprite
@ void AddPokemonDungeonSprite(int id, short species, Position *pos, ?)
AddPokemonDungeonSprite:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
adds r7, r2, 0
mov r8, r3
lsls r1, 16
asrs r6, r1, 16
ldr r0, _0800F92C
ldr r0, [r0]
cmp r0, 0
beq _0800F920
adds r0, r5, 0
bl GetDungeonPokemonSprite
adds r4, r0, 0
cmp r4, 0
bne _0800F920
bl NewDungeonPokemonSprite
adds r1, r0, 0
cmp r1, 0
beq _0800F920
movs r0, 0x1
strb r0, [r1]
str r5, [r1, 0x4]
strh r6, [r1, 0x8]
str r4, [r1, 0xC]
ldr r0, [r7]
str r0, [r1, 0x14]
mov r0, r8
strb r0, [r1, 0x11]
ldr r0, _0800F930
ldr r0, [r0]
str r0, [r1, 0x1C]
str r0, [r1, 0x18]
str r4, [r1, 0x28]
str r4, [r1, 0x2C]
str r4, [r1, 0x30]
str r4, [r1, 0x34]
_0800F920:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800F92C: .4byte gDungeonPokemonSprites
_0800F930: .4byte gUnknown_80D3564
thumb_func_end AddPokemonDungeonSprite
thumb_func_start DeletePokemonDungeonSprite
@ void DeletePokemonDungeonSprite(int id)
DeletePokemonDungeonSprite:
push {lr}
adds r1, r0, 0
ldr r0, _0800F954
ldr r0, [r0]
cmp r0, 0
beq _0800F950
adds r0, r1, 0
bl GetDungeonPokemonSprite
cmp r0, 0
beq _0800F950
movs r1, 0x40
bl MemoryClear8
_0800F950:
pop {r0}
bx r0
.align 2, 0
_0800F954: .4byte gDungeonPokemonSprites
thumb_func_end DeletePokemonDungeonSprite
.align 2,0