pokeemerald/asm/field_effect_helpers.s
2018-10-09 17:32:39 -04:00

2911 lines
45 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_8154C60
sub_8154C60: @ 8154C60
push {lr}
ldr r2, =gUnknown_085CDC4C
movs r3, 0x2E
ldrsh r1, [r0, r3]
lsls r1, 2
adds r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.pool
thumb_func_end sub_8154C60
thumb_func_start sub_8154C7C
sub_8154C7C: @ 8154C7C
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
adds r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x28
ble _08154C92
movs r0, 0x1
strh r0, [r1, 0x2E]
_08154C92:
adds r0, r1, 0
movs r1, 0
bl UpdateEventObjectSpriteVisibility
pop {r0}
bx r0
thumb_func_end sub_8154C7C
thumb_func_start sub_8154CA0
sub_8154CA0: @ 8154CA0
push {r4,lr}
adds r4, r0, 0
adds r3, r4, 0
adds r3, 0x3E
ldrb r2, [r3]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
ldrb r1, [r3]
lsls r1, 29
lsrs r1, 31
adds r0, r4, 0
bl UpdateEventObjectSpriteVisibility
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x38
ble _08154CE4
ldrh r1, [r4, 0x3C]
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldEffectStop
_08154CE4:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8154CA0
thumb_func_start sub_8154CEC
sub_8154CEC: @ 8154CEC
push {r4-r6,lr}
ldr r6, =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
bl GetEventObjectIdByLocalIdAndMap
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, =gEventObjects
adds r5, r1, r0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x34]
movs r1, 0
movs r2, 0
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x40
beq _08154D76
ldrb r0, [r5, 0x5]
bl GetEventObjectGraphicsInfo
lsls r3, r4, 4
adds r3, r4
lsls r3, 2
ldr r4, =gSprites
adds r3, r4
movs r1, 0x3E
adds r1, r3
mov r12, r1
ldrb r1, [r1]
movs r2, 0x2
orrs r1, r2
mov r2, r12
strb r1, [r2]
ldrb r2, [r5, 0x4]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r4
ldrb r1, [r1, 0x5]
movs r2, 0xC
ands r2, r1
ldrb r4, [r3, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r4
orrs r1, r2
strb r1, [r3, 0x5]
ldr r1, [r6]
strh r1, [r3, 0x2E]
ldr r1, [r6, 0x4]
strh r1, [r3, 0x30]
ldr r1, [r6, 0x8]
strh r1, [r3, 0x32]
ldrh r0, [r0, 0xA]
lsls r0, 16
asrs r0, 17
subs r0, 0x4
strh r0, [r3, 0x26]
movs r0, 0x46
bl PlaySE
_08154D76:
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.pool
thumb_func_end sub_8154CEC
thumb_func_start sub_8154D90
sub_8154D90: @ 8154D90
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08154DC0
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x30]
lsls r1, 24
lsrs r1, 24
ldrh r2, [r4, 0x32]
lsls r2, 24
lsrs r2, 24
mov r3, sp
bl TryGetEventObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
beq _08154DCA
_08154DC0:
adds r0, r4, 0
movs r1, 0xF
bl FieldEffectStop
b _08154E0A
_08154DCA:
ldr r3, =gSprites
ldr r2, =gEventObjects
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r0, [r0, 0x20]
strh r0, [r4, 0x20]
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r0, [r0, 0x22]
strh r0, [r4, 0x22]
adds r0, r4, 0
movs r1, 0
bl UpdateEventObjectSpriteVisibility
_08154E0A:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8154D90
thumb_func_start sub_8154E1C
sub_8154E1C: @ 8154E1C
push {r4,lr}
ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0xC
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x38]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _08154E78
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
movs r0, 0x3
ldrb r1, [r4, 0xC]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
ldr r0, [r4, 0x8]
strh r0, [r2, 0x2E]
movs r0, 0x10
strh r0, [r2, 0x30]
_08154E78:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_8154E1C
thumb_func_start oei_water_drop_tall
oei_water_drop_tall: @ 8154E8C
push {r4,lr}
ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x30]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _08154EE8
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
movs r0, 0x3
ldrb r1, [r4, 0xC]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
ldr r0, [r4, 0x8]
strh r0, [r2, 0x2E]
movs r0, 0xE
strh r0, [r2, 0x30]
_08154EE8:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end oei_water_drop_tall
thumb_func_start sub_8154EFC
sub_8154EFC: @ 8154EFC
push {r4-r7,lr}
ldr r7, =gFieldEffectArguments
ldrb r0, [r7]
ldrb r1, [r7, 0x4]
ldrb r2, [r7, 0x8]
bl GetEventObjectIdByLocalIdAndMap
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, =gEventObjects
adds r6, r1, r0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x34]
movs r1, 0
movs r2, 0
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x40
beq _08154F92
ldrb r0, [r6, 0x5]
bl GetEventObjectGraphicsInfo
adds r4, r0, 0
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
ldr r3, =gSprites
adds r0, r3
ldr r1, =sub_8154FB4
str r1, [r0, 0x1C]
adds r5, r0, 0
adds r5, 0x3E
ldrb r1, [r5]
movs r2, 0x2
orrs r1, r2
strb r1, [r5]
ldrb r2, [r6, 0x4]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r3
ldrb r1, [r1, 0x5]
movs r2, 0xC
ands r2, r1
ldrb r3, [r0, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r3
orrs r1, r2
strb r1, [r0, 0x5]
ldr r1, [r7]
strh r1, [r0, 0x2E]
ldr r1, [r7, 0x4]
strh r1, [r0, 0x30]
ldr r1, [r7, 0x8]
strh r1, [r0, 0x32]
ldr r1, =0x0000ffff
strh r1, [r0, 0x34]
movs r1, 0x1
negs r1, r1
strh r1, [r0, 0x36]
ldrh r1, [r4, 0xA]
lsls r1, 16
asrs r1, 17
subs r1, 0x4
strh r1, [r0, 0x26]
movs r1, 0x1
bl StartSpriteAnim
_08154F92:
movs r0, 0
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end sub_8154EFC
thumb_func_start sub_8154FB4
sub_8154FB4: @ 8154FB4
push {r4,r5,lr}
sub sp, 0x4
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x30]
lsls r1, 24
lsrs r1, 24
ldrh r2, [r4, 0x32]
lsls r2, 24
lsrs r2, 24
mov r3, sp
bl TryGetEventObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
bne _08154FEE
ldr r2, =gEventObjects
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r5, r0, r2
ldrb r0, [r5, 0x2]
lsls r0, 28
cmp r0, 0
blt _08154FFC
_08154FEE:
adds r0, r4, 0
movs r1, 0x22
bl FieldEffectStop
b _08155046
.pool
_08154FFC:
ldrb r1, [r5, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, =gSprites
adds r0, r1
ldrh r1, [r0, 0x20]
strh r1, [r4, 0x20]
ldrh r1, [r0, 0x22]
strh r1, [r4, 0x22]
adds r0, 0x43
ldrb r0, [r0]
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
adds r0, r4, 0
movs r1, 0
bl UpdateEventObjectSpriteVisibility
ldr r1, [r5, 0x10]
ldr r0, [r4, 0x34]
cmp r1, r0
beq _08155046
ldrh r0, [r5, 0x10]
strh r0, [r4, 0x34]
ldrh r0, [r5, 0x12]
strh r0, [r4, 0x36]
adds r0, r4, 0
adds r0, 0x3E
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _08155046
movs r0, 0x46
bl PlaySE
_08155046:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_8154FB4
thumb_func_start oei_ripples
oei_ripples: @ 8155054
push {r4,lr}
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x14]
ldr r4, =gFieldEffectArguments
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _081550A0
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
movs r0, 0x3
ldrb r1, [r4, 0xC]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
movs r0, 0x5
strh r0, [r2, 0x2E]
_081550A0:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end oei_ripples
thumb_func_start sub_81550B4
sub_81550B4: @ 81550B4
push {r4-r6,lr}
ldr r6, =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
bl GetEventObjectIdByLocalIdAndMap
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, =gEventObjects
adds r5, r1, r0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x7C]
movs r1, 0
movs r2, 0
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _08155140
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r4, =gSprites
adds r2, r4
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
ldrb r1, [r5, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r0, [r0, 0x5]
movs r1, 0xC
ands r1, r0
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
ldr r0, [r6]
strh r0, [r2, 0x2E]
ldr r0, [r6, 0x4]
strh r0, [r2, 0x30]
ldr r0, [r6, 0x8]
strh r0, [r2, 0x32]
ldrb r1, [r5, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrh r0, [r0, 0x20]
strh r0, [r2, 0x34]
ldrb r1, [r5, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrh r0, [r0, 0x22]
strh r0, [r2, 0x36]
_08155140:
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.pool
thumb_func_end sub_81550B4
thumb_func_start sub_8155158
sub_8155158: @ 8155158
push {r4,r5,lr}
sub sp, 0x4
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x30]
lsls r1, 24
lsrs r1, 24
ldrh r2, [r4, 0x32]
lsls r2, 24
lsrs r2, 24
mov r3, sp
bl TryGetEventObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
bne _08155192
ldr r5, =gEventObjects
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r1, r0, r5
ldrb r0, [r1, 0x2]
lsls r0, 26
cmp r0, 0
blt _081551A0
_08155192:
adds r0, r4, 0
movs r1, 0x2A
bl FieldEffectStop
b _081551E4
.pool
_081551A0:
ldrb r0, [r1, 0x5]
bl GetEventObjectGraphicsInfo
mov r1, sp
ldrb r2, [r1]
lsls r1, r2, 3
adds r1, r2
lsls r1, 2
adds r1, r5
ldrb r2, [r1, 0x4]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
ldr r2, =gSprites
adds r1, r2
ldrh r2, [r1, 0x20]
strh r2, [r4, 0x20]
ldrh r0, [r0, 0xA]
lsls r0, 16
asrs r0, 17
ldrh r2, [r1, 0x22]
adds r0, r2
subs r0, 0x8
strh r0, [r4, 0x22]
adds r1, 0x43
ldrb r0, [r1]
subs r0, 0x1
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
adds r0, r4, 0
movs r1, 0
bl UpdateEventObjectSpriteVisibility
_081551E4:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_8155158
thumb_func_start sub_81551F0
sub_81551F0: @ 81551F0
push {r4,lr}
ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x44]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _08155248
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
movs r0, 0x3
ldrb r1, [r4, 0xC]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
movs r0, 0x13
strh r0, [r2, 0x2E]
_08155248:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_81551F0
thumb_func_start sub_815525C
sub_815525C: @ 815525C
push {r4,lr}
ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x48]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _081552B4
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
movs r0, 0x3
ldrb r1, [r4, 0xC]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
movs r0, 0x14
strh r0, [r2, 0x2E]
_081552B4:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_815525C
thumb_func_start sub_81552C8
sub_81552C8: @ 81552C8
push {r4,lr}
ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x4C]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _08155320
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
movs r0, 0x3
ldrb r1, [r4, 0xC]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
movs r0, 0x15
strh r0, [r2, 0x2E]
_08155320:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_81552C8
thumb_func_start sub_8155334
sub_8155334: @ 8155334
push {r4,lr}
ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x50]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _0815538C
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
movs r0, 0x3
ldrb r1, [r4, 0xC]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
movs r0, 0x16
strh r0, [r2, 0x2E]
_0815538C:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_8155334
thumb_func_start ash
ash: @ 81553A0
push {r4,lr}
lsls r2, 16
lsrs r2, 16
ldr r4, =gFieldEffectArguments
lsls r0, 16
asrs r0, 16
str r0, [r4]
lsls r1, 16
asrs r1, 16
str r1, [r4, 0x4]
movs r0, 0x52
str r0, [r4, 0x8]
movs r0, 0x1
str r0, [r4, 0xC]
str r2, [r4, 0x10]
lsls r3, 16
asrs r3, 16
str r3, [r4, 0x14]
movs r0, 0x7
bl FieldEffectStart
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end ash
thumb_func_start oei_ash
oei_ash: @ 81553D4
push {r4,r5,lr}
sub sp, 0x4
ldr r5, =gFieldEffectArguments
ldrh r1, [r5]
mov r0, sp
strh r1, [r0]
ldrh r0, [r5, 0x4]
mov r4, sp
adds r4, 0x2
strh r0, [r4]
mov r0, sp
adds r1, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x18]
mov r1, sp
movs r2, 0
ldrsh r1, [r1, r2]
movs r3, 0
ldrsh r2, [r4, r3]
ldrb r3, [r5, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _0815544A
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
movs r0, 0x3
ldrb r1, [r5, 0xC]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
ldr r0, [r5]
strh r0, [r2, 0x30]
ldr r0, [r5, 0x4]
strh r0, [r2, 0x32]
ldr r0, [r5, 0x10]
strh r0, [r2, 0x34]
ldr r0, [r5, 0x14]
strh r0, [r2, 0x36]
_0815544A:
movs r0, 0
add sp, 0x4
pop {r4,r5}
pop {r1}
bx r1
.pool
thumb_func_end oei_ash
thumb_func_start sub_8155460
sub_8155460: @ 8155460
push {lr}
ldr r2, =gUnknown_085CDC54
movs r3, 0x2E
ldrsh r1, [r0, r3]
lsls r1, 2
adds r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.pool
thumb_func_end sub_8155460
thumb_func_start sub_815547C
sub_815547C: @ 815547C
push {lr}
adds r3, r0, 0
adds r2, r3, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
subs r2, 0x12
ldrb r0, [r2]
movs r1, 0x40
orrs r0, r1
strb r0, [r2]
ldrh r0, [r3, 0x36]
subs r0, 0x1
strh r0, [r3, 0x36]
lsls r0, 16
cmp r0, 0
bne _081554A6
movs r0, 0x1
strh r0, [r3, 0x2E]
_081554A6:
pop {r0}
bx r0
thumb_func_end sub_815547C
thumb_func_start sub_81554AC
sub_81554AC: @ 81554AC
push {r4,lr}
adds r4, r0, 0
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
subs r2, 0x12
ldrb r1, [r2]
movs r0, 0x41
negs r0, r0
ands r0, r1
strb r0, [r2]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r2, 0x32
ldrsh r1, [r4, r2]
ldrh r2, [r4, 0x34]
bl MapGridSetMetatileIdAt
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r2, 0x32
ldrsh r1, [r4, r2]
bl CurrentMapDrawMetatileAt
ldr r2, =gEventObjects
ldr r0, =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
movs r0, 0x2
strh r0, [r4, 0x2E]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_81554AC
thumb_func_start sub_815550C
sub_815550C: @ 815550C
push {r4,lr}
adds r4, r0, 0
movs r1, 0
bl UpdateEventObjectSpriteVisibility
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0815552C
adds r0, r4, 0
movs r1, 0x7
bl FieldEffectStop
_0815552C:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_815550C
thumb_func_start sub_8155534
sub_8155534: @ 8155534
push {r4,r5,lr}
ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x1C]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
movs r3, 0x96
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
cmp r0, 0x40
beq _0815558E
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, =gSprites
adds r1, r0
adds r3, r1, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r2, 0x2
orrs r0, r2
strb r0, [r3]
ldrb r2, [r1, 0x5]
movs r0, 0xF
ands r0, r2
strb r0, [r1, 0x5]
ldr r0, [r4, 0x8]
strh r0, [r1, 0x32]
ldr r0, =0x0000ffff
strh r0, [r1, 0x34]
movs r0, 0x1
negs r0, r0
strh r0, [r1, 0x3A]
strh r0, [r1, 0x3C]
_0815558E:
movs r0, 0x8
bl FieldEffectActiveListRemove
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
.pool
thumb_func_end sub_8155534
thumb_func_start sub_81555AC
sub_81555AC: @ 81555AC
lsls r0, 24
lsrs r0, 24
lsls r1, 24
ldr r3, =gSprites
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r3
ldrh r0, [r2, 0x2E]
movs r3, 0x10
negs r3, r3
ands r3, r0
movs r0, 0xF0
lsls r0, 20
ands r0, r1
lsrs r0, 24
orrs r0, r3
strh r0, [r2, 0x2E]
bx lr
.pool
thumb_func_end sub_81555AC
thumb_func_start sub_81555D8
sub_81555D8: @ 81555D8
lsls r0, 24
lsrs r0, 24
lsls r1, 24
ldr r3, =gSprites
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r3
ldrh r0, [r2, 0x2E]
movs r3, 0xF1
negs r3, r3
ands r3, r0
movs r0, 0xF0
lsls r0, 20
ands r0, r1
lsrs r0, 20
orrs r3, r0
strh r3, [r2, 0x2E]
bx lr
.pool
thumb_func_end sub_81555D8
thumb_func_start sub_8155604
sub_8155604: @ 8155604
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
ldr r4, =gSprites
lsls r3, r0, 4
adds r3, r0
lsls r3, 2
adds r3, r4
ldrh r0, [r3, 0x2E]
ldr r4, =0xfffff0ff
ands r4, r0
movs r0, 0xF0
lsls r0, 20
ands r0, r1
lsrs r0, 16
orrs r4, r0
strh r4, [r3, 0x2E]
strh r2, [r3, 0x30]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8155604
thumb_func_start sub_8155638
sub_8155638: @ 8155638
ldrh r1, [r0, 0x2E]
movs r0, 0xF
ands r0, r1
bx lr
thumb_func_end sub_8155638
thumb_func_start sub_8155640
sub_8155640: @ 8155640
ldrh r1, [r0, 0x2E]
movs r0, 0xF0
ands r0, r1
lsrs r0, 4
bx lr
thumb_func_end sub_8155640
thumb_func_start sub_815564C
sub_815564C: @ 815564C
ldrh r1, [r0, 0x2E]
movs r0, 0xF0
lsls r0, 4
ands r0, r1
lsrs r0, 8
bx lr
thumb_func_end sub_815564C
thumb_func_start sub_8155658
sub_8155658: @ 8155658
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x32
ldrsh r0, [r6, r1]
lsls r4, r0, 3
adds r4, r0
lsls r4, 2
ldr r0, =gEventObjects
adds r4, r0
ldrb r0, [r4, 0x4]
lsls r5, r0, 4
adds r5, r0
lsls r5, 2
ldr r0, =gSprites
adds r5, r0
adds r0, r4, 0
adds r1, r6, 0
bl sub_81556B0
adds r0, r4, 0
adds r1, r6, 0
bl sub_81556E8
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_815577C
ldrb r0, [r5, 0x5]
movs r1, 0xC
ands r1, r0
ldrb r2, [r6, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r6, 0x5]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_8155658
thumb_func_start sub_81556B0
sub_81556B0: @ 81556B0
push {r4,r5,lr}
sub sp, 0xC
adds r5, r0, 0
adds r4, r1, 0
ldr r1, =gUnknown_085CDC60
mov r0, sp
movs r2, 0x9
bl memcpy
adds r0, r4, 0
bl sub_8155640
lsls r0, 24
cmp r0, 0
bne _081556DC
ldrb r0, [r5, 0x18]
lsrs r0, 4
add r0, sp
ldrb r1, [r0]
adds r0, r4, 0
bl StartSpriteAnimIfDifferent
_081556DC:
add sp, 0xC
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_81556B0
thumb_func_start sub_81556E8
sub_81556E8: @ 81556E8
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
adds r4, r1, 0
ldrh r2, [r0, 0x10]
mov r1, sp
strh r2, [r1]
ldrh r1, [r0, 0x12]
mov r0, sp
adds r0, 0x2
strh r1, [r0]
movs r2, 0x26
ldrsh r3, [r4, r2]
mov r8, r0
cmp r3, 0
bne _08155770
mov r0, sp
movs r5, 0
ldrsh r2, [r0, r5]
movs r5, 0x3A
ldrsh r0, [r4, r5]
cmp r2, r0
bne _08155724
lsls r0, r1, 16
asrs r0, 16
movs r5, 0x3C
ldrsh r1, [r4, r5]
cmp r0, r1
beq _08155770
_08155724:
strh r3, [r4, 0x38]
strh r2, [r4, 0x3A]
mov r1, r8
movs r2, 0
ldrsh r0, [r1, r2]
strh r0, [r4, 0x3C]
movs r5, 0x1
mov r7, r8
mov r6, sp
_08155736:
adds r0, r5, 0
mov r1, sp
adds r2, r7, 0
bl MoveCoords
movs r1, 0
ldrsh r0, [r6, r1]
movs r2, 0
ldrsh r1, [r7, r2]
bl MapGridGetZCoordAt
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
bne _0815575C
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
b _08155770
_0815575C:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
ldrh r0, [r4, 0x3A]
strh r0, [r6]
ldrh r0, [r4, 0x3C]
mov r1, r8
strh r0, [r1]
cmp r5, 0x4
bls _08155736
_08155770:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_81556E8
thumb_func_start sub_815577C
sub_815577C: @ 815577C
push {r4,r5,lr}
sub sp, 0x4
adds r5, r1, 0
adds r4, r2, 0
ldr r1, =gUnknown_085CDC6A
mov r0, sp
movs r2, 0x4
bl memcpy
adds r0, r4, 0
bl sub_8155638
lsls r0, 24
lsrs r0, 24
adds r2, r0, 0
cmp r2, 0
beq _081557F6
ldrh r1, [r4, 0x36]
adds r1, 0x1
strh r1, [r4, 0x36]
movs r3, 0x38
ldrsh r0, [r4, r3]
lsls r0, 1
add r0, sp
ldrh r0, [r0]
ands r1, r0
cmp r1, 0
bne _081557BC
ldrh r0, [r4, 0x34]
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
_081557BC:
ldrh r1, [r4, 0x36]
movs r0, 0xF
ands r0, r1
cmp r0, 0
bne _081557CC
ldrh r0, [r4, 0x34]
negs r0, r0
strh r0, [r4, 0x34]
_081557CC:
cmp r2, 0x2
beq _081557F6
adds r0, r4, 0
bl sub_815564C
lsls r0, 24
cmp r0, 0
bne _081557E4
ldrh r0, [r4, 0x26]
b _081557EA
.pool
_081557E4:
ldrh r0, [r4, 0x26]
ldrh r3, [r4, 0x30]
adds r0, r3
_081557EA:
strh r0, [r5, 0x26]
ldrh r0, [r5, 0x20]
strh r0, [r4, 0x20]
ldrh r0, [r5, 0x22]
adds r0, 0x8
strh r0, [r4, 0x22]
_081557F6:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_815577C
thumb_func_start sub_8155800
sub_8155800: @ 8155800
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, =gDummySpriteTemplate
movs r1, 0
movs r2, 0
movs r3, 0xFF
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r1, =gSprites
adds r2, r1
ldr r1, =sub_8155850
str r1, [r2, 0x1C]
movs r1, 0x3E
adds r1, r2
mov r12, r1
ldrb r1, [r1]
movs r3, 0x4
orrs r1, r3
mov r3, r12
strb r1, [r3]
strh r4, [r2, 0x2E]
movs r1, 0x1
strh r1, [r2, 0x30]
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_8155800
thumb_func_start sub_8155850
sub_8155850: @ 8155850
push {lr}
adds r2, r0, 0
movs r0, 0x2E
ldrsh r1, [r2, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, =gSprites
adds r3, r0, r1
ldrh r1, [r2, 0x32]
adds r0, r1, 0x1
strh r0, [r2, 0x32]
movs r0, 0x3
ands r0, r1
cmp r0, 0
bne _08155878
ldrh r0, [r2, 0x30]
ldrh r1, [r3, 0x26]
adds r0, r1
strh r0, [r3, 0x26]
_08155878:
ldrh r1, [r2, 0x32]
movs r0, 0xF
ands r0, r1
cmp r0, 0
bne _08155888
ldrh r0, [r2, 0x30]
negs r0, r0
strh r0, [r2, 0x30]
_08155888:
pop {r0}
bx r0
.pool
thumb_func_end sub_8155850
thumb_func_start sub_8155890
sub_8155890: @ 8155890
push {r4,lr}
ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0xC
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x24]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _081558EC
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
movs r0, 0x3
ldrb r1, [r4, 0xC]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2, 0x5]
ldr r0, [r4, 0x8]
strh r0, [r2, 0x2E]
movs r0, 0xA
strh r0, [r2, 0x30]
_081558EC:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_8155890
thumb_func_start sub_8155900
sub_8155900: @ 8155900
push {r4-r7,lr}
ldr r7, =gFieldEffectArguments
ldrb r0, [r7]
ldrb r1, [r7, 0x4]
ldrb r2, [r7, 0x8]
bl GetEventObjectIdByLocalIdAndMap
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, =gEventObjects
adds r6, r1, r0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x74]
movs r1, 0
movs r2, 0
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x40
beq _081559A4
ldrb r0, [r6, 0x5]
bl GetEventObjectGraphicsInfo
adds r5, r0, 0
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
ldr r4, =gSprites
adds r0, r4
adds r3, r0, 0
adds r3, 0x3E
ldrb r1, [r3]
movs r2, 0x2
orrs r1, r2
strb r1, [r3]
ldrb r2, [r6, 0x4]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r4
ldrb r1, [r1, 0x5]
movs r2, 0xC
ands r2, r1
ldrb r3, [r0, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r3
orrs r1, r2
strb r1, [r0, 0x5]
ldr r1, [r7]
strh r1, [r0, 0x2E]
ldr r1, [r7, 0x4]
strh r1, [r0, 0x30]
ldr r1, [r7, 0x8]
strh r1, [r0, 0x32]
ldrb r2, [r6, 0x4]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r4
ldrh r1, [r1, 0x20]
strh r1, [r0, 0x34]
ldrb r2, [r6, 0x4]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r4
ldrh r1, [r1, 0x22]
strh r1, [r0, 0x36]
ldrh r1, [r5, 0xA]
lsls r1, 16
asrs r1, 17
subs r1, 0x2
strh r1, [r0, 0x26]
movs r1, 0x2
bl SeekSpriteAnim
_081559A4:
movs r0, 0
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end sub_8155900
thumb_func_start sub_81559BC
sub_81559BC: @ 81559BC
push {r4-r6,lr}
sub sp, 0x4
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x30]
lsls r1, 24
lsrs r1, 24
ldrh r2, [r4, 0x32]
lsls r2, 24
lsrs r2, 24
mov r3, sp
bl TryGetEventObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
bne _081559F6
ldr r2, =gEventObjects
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r1, r0, r2
ldrb r0, [r1, 0x2]
lsls r0, 27
cmp r0, 0
blt _08155A04
_081559F6:
adds r0, r4, 0
movs r1, 0x27
bl FieldEffectStop
b _08155A76
.pool
_08155A04:
ldr r2, =gSprites
ldrb r1, [r1, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r5, [r0, 0x22]
ldrh r6, [r0, 0x20]
movs r2, 0x20
ldrsh r1, [r0, r2]
movs r2, 0x34
ldrsh r0, [r4, r2]
cmp r1, r0
bne _08155A2C
lsls r0, r5, 16
asrs r0, 16
movs r2, 0x36
ldrsh r1, [r4, r2]
cmp r0, r1
beq _08155A46
_08155A2C:
strh r6, [r4, 0x34]
strh r5, [r4, 0x36]
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08155A46
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
_08155A46:
strh r6, [r4, 0x20]
strh r5, [r4, 0x22]
ldr r3, =gSprites
ldr r2, =gEventObjects
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
adds r0, 0x43
ldrb r0, [r0]
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
adds r0, r4, 0
movs r1, 0
bl UpdateEventObjectSpriteVisibility
_08155A76:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_81559BC
thumb_func_start sub_8155A88
sub_8155A88: @ 8155A88
push {r4,lr}
ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
adds r0, 0x88
ldr r0, [r0]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
movs r3, 0x52
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _08155AD8
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, =gSprites
adds r1, r0
adds r3, r1, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r2, 0x2
orrs r0, r2
strb r0, [r3]
ldrb r2, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
movs r2, 0x4
orrs r0, r2
strb r0, [r1, 0x5]
_08155AD8:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_8155A88
thumb_func_start sub_8155AEC
sub_8155AEC: @ 8155AEC
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
adds r0, 0x80
movs r1, 0x80
lsls r1, 1
ands r0, r1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 24
ldrh r1, [r4, 0x22]
subs r1, r0
strh r1, [r4, 0x22]
adds r0, r4, 0
movs r1, 0
bl UpdateEventObjectSpriteVisibility
ldrh r1, [r4, 0x3E]
ldr r0, =0x00001004
ands r0, r1
cmp r0, 0
beq _08155B20
adds r0, r4, 0
movs r1, 0x35
bl FieldEffectStop
_08155B20:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8155AEC
thumb_func_start sub_8155B2C
sub_8155B2C: @ 8155B2C
push {r4,lr}
ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x4
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x58]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _08155B8C
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
movs r0, 0x3
ldrb r1, [r4, 0xC]
ands r1, r0
lsls r1, 2
ldrb r3, [r2, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r1
movs r1, 0xF
ands r0, r1
movs r1, 0x50
orrs r0, r1
strb r0, [r2, 0x5]
movs r0, 0x17
strh r0, [r2, 0x2E]
_08155B8C:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_8155B2C
thumb_func_start ShowTreeDisguiseFieldEffect
@ u8 ShowTreeDisguiseFieldEffect()
ShowTreeDisguiseFieldEffect: @ 8155BA0
push {lr}
movs r0, 0x1C
movs r1, 0x18
movs r2, 0x4
bl ShowDisguiseFieldEffect
pop {r1}
bx r1
thumb_func_end ShowTreeDisguiseFieldEffect
thumb_func_start ShowMountainDisguiseFieldEffect
@ u8 ShowMountainDisguiseFieldEffect()
ShowMountainDisguiseFieldEffect: @ 8155BB0
push {lr}
movs r0, 0x1D
movs r1, 0x19
movs r2, 0x3
bl ShowDisguiseFieldEffect
pop {r1}
bx r1
thumb_func_end ShowMountainDisguiseFieldEffect
thumb_func_start ShowSandDisguiseFieldEffect
@ u8 ShowSandDisguiseFieldEffect()
ShowSandDisguiseFieldEffect: @ 8155BC0
push {lr}
movs r0, 0x24
movs r1, 0x1C
movs r2, 0x2
bl ShowDisguiseFieldEffect
pop {r1}
bx r1
thumb_func_end ShowSandDisguiseFieldEffect
thumb_func_start ShowDisguiseFieldEffect
@ u8 ShowDisguiseFieldEffect(u8 fieldEffectId, u8 fieldEffectObjectId, u8 paletteSlot)
ShowDisguiseFieldEffect: @ 8155BD0
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
lsls r0, 24
lsrs r4, r0, 24
mov r8, r4
lsls r1, 24
lsrs r6, r1, 24
lsls r2, 24
lsrs r7, r2, 24
ldr r5, =gFieldEffectArguments
ldrb r0, [r5]
ldrb r1, [r5, 0x4]
ldrb r2, [r5, 0x8]
mov r3, sp
bl TryGetEventObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
beq _08155C08
adds r0, r4, 0
bl FieldEffectActiveListRemove
movs r0, 0x40
b _08155C74
.pool
_08155C08:
ldr r1, =gFieldEffectObjectTemplatePointers
lsls r0, r6, 2
adds r0, r1
ldr r0, [r0]
movs r1, 0
movs r2, 0
movs r3, 0
bl CreateSpriteAtEnd
mov r1, sp
strb r0, [r1]
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _08155C70
mov r0, sp
ldrb r0, [r0]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, =gSprites
adds r2, r0
movs r0, 0x3E
adds r0, r2
mov r12, r0
ldrb r3, [r0]
lsls r1, r3, 30
lsrs r1, 31
adds r1, 0x1
movs r0, 0x1
ands r1, r0
lsls r1, 1
movs r0, 0x3
negs r0, r0
ands r0, r3
orrs r0, r1
mov r1, r12
strb r0, [r1]
lsls r3, r7, 4
ldrb r1, [r2, 0x5]
movs r0, 0xF
ands r0, r1
orrs r0, r3
strb r0, [r2, 0x5]
mov r0, r8
strh r0, [r2, 0x30]
ldr r0, [r5]
strh r0, [r2, 0x32]
ldr r0, [r5, 0x4]
strh r0, [r2, 0x34]
ldr r0, [r5, 0x8]
strh r0, [r2, 0x36]
_08155C70:
mov r0, sp
ldrb r0, [r0]
_08155C74:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end ShowDisguiseFieldEffect
thumb_func_start sub_8155C88
sub_8155C88: @ 8155C88
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
ldrh r0, [r5, 0x32]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r5, 0x34]
lsls r1, 24
lsrs r1, 24
ldrh r2, [r5, 0x36]
lsls r2, 24
lsrs r2, 24
mov r3, sp
bl TryGetEventObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
beq _08155CB8
ldrh r1, [r5, 0x30]
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
bl FieldEffectStop
_08155CB8:
ldr r4, =gEventObjects
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r0, [r0, 0x5]
bl GetEventObjectGraphicsInfo
mov r1, sp
ldrb r2, [r1]
lsls r1, r2, 3
adds r1, r2
lsls r1, 2
adds r1, r4
ldrb r1, [r1, 0x4]
lsls r2, r1, 4
adds r2, r1
lsls r2, 2
ldr r1, =gSprites
adds r2, r1
adds r1, r2, 0
adds r1, 0x3E
ldrb r1, [r1]
movs r3, 0x3E
adds r3, r5
mov r12, r3
movs r3, 0x4
ands r3, r1
mov r1, r12
ldrb r4, [r1]
movs r1, 0x5
negs r1, r1
ands r1, r4
orrs r1, r3
mov r3, r12
strb r1, [r3]
ldrh r1, [r2, 0x20]
strh r1, [r5, 0x20]
ldrh r0, [r0, 0xA]
lsls r0, 16
asrs r0, 17
ldrh r1, [r2, 0x22]
adds r0, r1
subs r0, 0x10
strh r0, [r5, 0x22]
adds r2, 0x43
ldrb r0, [r2]
subs r0, 0x1
adds r1, r5, 0
adds r1, 0x43
strb r0, [r1]
ldrh r1, [r5, 0x2E]
movs r2, 0x2E
ldrsh r0, [r5, r2]
cmp r0, 0x1
bne _08155D38
adds r0, r1, 0x1
strh r0, [r5, 0x2E]
adds r0, r5, 0
movs r1, 0x1
bl StartSpriteAnim
_08155D38:
movs r3, 0x2E
ldrsh r0, [r5, r3]
ldrh r2, [r5, 0x2E]
cmp r0, 0x2
bne _08155D54
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08155D54
movs r0, 0x1
strh r0, [r5, 0x3C]
_08155D54:
lsls r0, r2, 16
asrs r0, 16
cmp r0, 0x3
bne _08155D68
ldrh r1, [r5, 0x30]
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
bl FieldEffectStop
_08155D68:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_8155C88
thumb_func_start sub_8155D78
sub_8155D78: @ 8155D78
push {lr}
adds r1, r0, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0x1
bne _08155D96
ldr r2, =gSprites
ldrb r1, [r1, 0x1A]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrh r1, [r0, 0x2E]
adds r1, 0x1
strh r1, [r0, 0x2E]
_08155D96:
pop {r0}
bx r0
.pool
thumb_func_end sub_8155D78
thumb_func_start sub_8155DA0
sub_8155DA0: @ 8155DA0
push {lr}
adds r2, r0, 0
adds r2, 0x21
ldrb r1, [r2]
cmp r1, 0x2
beq _08155DD6
cmp r1, 0
beq _08155DD6
ldrb r1, [r0, 0x1A]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, =gSprites
adds r1, r0, r1
movs r3, 0x3C
ldrsh r0, [r1, r3]
cmp r0, 0
bne _08155DCC
movs r0, 0
b _08155DD8
.pool
_08155DCC:
movs r0, 0x2
strb r0, [r2]
ldrh r0, [r1, 0x2E]
adds r0, 0x1
strh r0, [r1, 0x2E]
_08155DD6:
movs r0, 0x1
_08155DD8:
pop {r1}
bx r1
thumb_func_end sub_8155DA0
thumb_func_start sub_8155DDC
sub_8155DDC: @ 8155DDC
push {r4,lr}
ldr r4, =gFieldEffectArguments
ldr r0, [r4]
adds r0, 0x7
str r0, [r4]
ldr r0, [r4, 0x4]
adds r0, 0x7
str r0, [r4, 0x4]
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_80930E0
ldr r0, =gFieldEffectObjectTemplatePointers
adds r0, 0x8C
ldr r0, [r0]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
movs r3, 0x52
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x40
beq _08155E3C
ldr r0, =gSprites
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r0
movs r0, 0x3
ldrb r2, [r4, 0x8]
ands r2, r0
lsls r2, 2
ldrb r3, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r2
strb r0, [r1, 0x5]
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x2
orrs r0, r2
strb r0, [r1]
_08155E3C:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_8155DDC
thumb_func_start sub_8155E50
sub_8155E50: @ 8155E50
push {lr}
adds r2, r0, 0
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0
bne _08155E84
adds r0, r2, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08155E7C
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x4
orrs r0, r1
strb r0, [r3]
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
_08155E7C:
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0
beq _08155E9A
_08155E84:
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x22
ble _08155E9A
adds r0, r2, 0
movs r1, 0x36
bl FieldEffectStop
_08155E9A:
pop {r0}
bx r0
thumb_func_end sub_8155E50
thumb_func_start sub_8155EA0
sub_8155EA0: @ 8155EA0
movs r1, 0
strh r1, [r0, 0x3A]
strh r1, [r0, 0x3C]
bx lr
thumb_func_end sub_8155EA0
thumb_func_start sub_8155EA8
sub_8155EA8: @ 8155EA8
push {r4-r6,lr}
adds r5, r0, 0
movs r6, 0
movs r1, 0x3C
ldrsh r0, [r5, r1]
cmp r0, 0x1
beq _08155EDE
cmp r0, 0x1
bgt _08155EC0
cmp r0, 0
beq _08155ECA
b _08155F42
_08155EC0:
cmp r0, 0x2
beq _08155F06
cmp r0, 0x3
beq _08155F1A
b _08155F42
_08155ECA:
movs r2, 0x3A
ldrsh r0, [r5, r2]
bl sub_809773C
ldrh r1, [r5, 0x24]
adds r0, r1
strh r0, [r5, 0x24]
movs r2, 0x3A
ldrsh r0, [r5, r2]
b _08155F38
_08155EDE:
ldrh r0, [r5, 0x3A]
movs r4, 0x47
subs r0, r4, r0
lsls r0, 16
asrs r0, 16
bl sub_809773C
ldrh r1, [r5, 0x24]
subs r1, r0
strh r1, [r5, 0x24]
ldrh r0, [r5, 0x3A]
subs r4, r0
lsls r4, 16
asrs r4, 16
adds r0, r4, 0
bl sub_8097728
ldrh r2, [r5, 0x26]
adds r0, r2
b _08155F40
_08155F06:
movs r1, 0x3A
ldrsh r0, [r5, r1]
bl sub_809773C
ldrh r1, [r5, 0x24]
subs r1, r0
strh r1, [r5, 0x24]
movs r2, 0x3A
ldrsh r0, [r5, r2]
b _08155F38
_08155F1A:
ldrh r0, [r5, 0x3A]
movs r4, 0x47
subs r0, r4, r0
lsls r0, 16
asrs r0, 16
bl sub_809773C
ldrh r2, [r5, 0x24]
adds r0, r2
strh r0, [r5, 0x24]
ldrh r0, [r5, 0x3A]
subs r4, r0
lsls r4, 16
asrs r4, 16
adds r0, r4, 0
_08155F38:
bl sub_8097728
ldrh r1, [r5, 0x26]
adds r0, r1
_08155F40:
strh r0, [r5, 0x26]
_08155F42:
ldrh r1, [r5, 0x24]
negs r1, r1
lsls r1, 16
lsrs r1, 16
movs r0, 0x10
bl SetGpuReg
ldrh r0, [r5, 0x3A]
adds r0, 0x1
movs r1, 0
strh r0, [r5, 0x3A]
lsls r0, 16
asrs r0, 16
cmp r0, 0x48
bne _08155F68
strh r1, [r5, 0x3A]
ldrh r0, [r5, 0x3C]
adds r0, 0x1
strh r0, [r5, 0x3C]
_08155F68:
movs r2, 0x3C
ldrsh r0, [r5, r2]
cmp r0, 0x4
bne _08155F76
strh r1, [r5, 0x26]
strh r1, [r5, 0x24]
movs r6, 0x1
_08155F76:
adds r0, r6, 0
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8155EA8
thumb_func_start sub_8155F80
sub_8155F80: @ 8155F80
push {r4-r7,lr}
adds r5, r0, 0
movs r1, 0x32
ldrsh r0, [r5, r1]
cmp r0, 0x8
bls _08155F8E
b _08156156
_08155F8E:
lsls r0, 2
ldr r1, =_08155F9C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_08155F9C:
.4byte _08155FC0
.4byte _08156034
.4byte _0815606C
.4byte _08156090
.4byte _081560C0
.4byte _081560D4
.4byte _081560E0
.4byte _0815610E
.4byte _08156120
_08155FC0:
movs r2, 0x2E
ldrsh r0, [r5, r2]
movs r1, 0x3
bl __divsi3
movs r1, 0x78
subs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x12
bl SetGpuReg
movs r3, 0x2E
ldrsh r0, [r5, r3]
cmp r0, 0x60
bne _08156016
movs r1, 0
ldr r4, =0x0600f800
mov r12, r4
ldr r0, =0x0000bff4
adds r7, r0, 0
_08155FEA:
movs r2, 0xC
lsls r0, r1, 1
adds r3, r1, 0x1
lsls r6, r1, 5
adds r0, r1
lsls r4, r0, 1
_08155FF6:
adds r0, r6, r2
lsls r0, 1
add r0, r12
adds r1, r2, r7
adds r1, r4, r1
adds r1, 0x1
strh r1, [r0]
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x11
bls _08155FF6
lsls r0, r3, 24
lsrs r1, r0, 24
cmp r1, 0x2
bls _08155FEA
_08156016:
movs r2, 0x2E
ldrsh r1, [r5, r2]
ldr r0, =0x00000137
cmp r1, r0
bgt _08156022
b _08156156
_08156022:
movs r1, 0
movs r0, 0x1
b _0815611A
.pool
_08156034:
ldr r4, =gSineTable
movs r3, 0x2E
ldrsh r0, [r5, r3]
movs r1, 0x3
bl __divsi3
lsls r0, 16
asrs r0, 15
adds r0, r4
ldrh r0, [r0]
lsls r0, 16
asrs r0, 18
ldrh r4, [r5, 0x36]
adds r0, r4
movs r1, 0
strh r0, [r5, 0x22]
movs r2, 0x2E
ldrsh r0, [r5, r2]
cmp r0, 0xBD
bne _08156156
movs r0, 0x2
strh r0, [r5, 0x32]
strh r1, [r5, 0x38]
strh r1, [r5, 0x2E]
b _08156156
.pool
_0815606C:
movs r3, 0x2E
ldrsh r0, [r5, r3]
cmp r0, 0x3C
bne _0815607E
ldrh r0, [r5, 0x38]
adds r0, 0x1
movs r1, 0
strh r0, [r5, 0x38]
strh r1, [r5, 0x2E]
_0815607E:
movs r4, 0x38
ldrsh r0, [r5, r4]
cmp r0, 0x7
bne _08156156
movs r0, 0
strh r0, [r5, 0x38]
movs r0, 0x3
strh r0, [r5, 0x32]
b _08156156
_08156090:
ldrh r2, [r5, 0x26]
movs r0, 0x26
ldrsh r1, [r5, r0]
adds r3, r2, 0
cmp r1, 0
bne _081560A4
strh r1, [r5, 0x2E]
ldrh r0, [r5, 0x32]
adds r0, 0x1
strh r0, [r5, 0x32]
_081560A4:
movs r4, 0x2E
ldrsh r0, [r5, r4]
cmp r0, 0x5
bne _08156156
movs r0, 0
strh r0, [r5, 0x2E]
cmp r1, 0
ble _081560BA
subs r0, r3, 0x1
strh r0, [r5, 0x26]
b _08156156
_081560BA:
adds r0, r2, 0x1
strh r0, [r5, 0x26]
b _08156156
_081560C0:
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x3C
bne _08156156
movs r1, 0
movs r0, 0x5
strh r0, [r5, 0x32]
strh r1, [r5, 0x2E]
strh r1, [r5, 0x38]
b _08156156
_081560D4:
adds r0, r5, 0
bl sub_8155EA0
movs r1, 0
movs r0, 0x6
b _0815611A
_081560E0:
adds r0, r5, 0
bl sub_8155EA8
lsls r0, 24
cmp r0, 0
beq _08156156
movs r1, 0
strh r1, [r5, 0x2E]
ldrh r0, [r5, 0x38]
adds r0, 0x1
strh r0, [r5, 0x38]
lsls r0, 16
asrs r0, 16
cmp r0, 0x2
bgt _08156106
adds r0, r5, 0
bl sub_8155EA0
b _08156156
_08156106:
strh r1, [r5, 0x38]
movs r0, 0x7
strh r0, [r5, 0x32]
b _08156156
_0815610E:
movs r2, 0x2E
ldrsh r0, [r5, r2]
cmp r0, 0x1E
bne _08156156
movs r1, 0
movs r0, 0x8
_0815611A:
strh r0, [r5, 0x32]
strh r1, [r5, 0x2E]
b _08156156
_08156120:
movs r1, 0
ldr r6, =0x0600f800
movs r4, 0
_08156126:
movs r2, 0xC
adds r3, r1, 0x1
lsls r1, 5
_0815612C:
adds r0, r1, r2
lsls r0, 1
adds r0, r6
strh r4, [r0]
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x11
bls _0815612C
lsls r0, r3, 24
lsrs r1, r0, 24
cmp r1, 0xE
bls _08156126
movs r0, 0x12
movs r1, 0
bl SetGpuReg
adds r0, r5, 0
movs r1, 0x40
bl FieldEffectStop
_08156156:
movs r3, 0x32
ldrsh r0, [r5, r3]
cmp r0, 0x1
bne _08156184
ldrh r1, [r5, 0x30]
movs r0, 0x7
ands r0, r1
adds r2, r1, 0
cmp r0, 0
bne _08156172
ldrh r0, [r5, 0x34]
ldrh r4, [r5, 0x26]
adds r0, r4
strh r0, [r5, 0x26]
_08156172:
movs r0, 0xF
ands r0, r2
cmp r0, 0
bne _08156180
ldrh r0, [r5, 0x34]
negs r0, r0
strh r0, [r5, 0x34]
_08156180:
adds r0, r1, 0x1
strh r0, [r5, 0x30]
_08156184:
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8155F80
thumb_func_start sub_8156194
sub_8156194: @ 8156194
push {r4,lr}
adds r4, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _081561B2
ldrh r1, [r4, 0x30]
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldEffectStop
b _081561C8
_081561B2:
adds r0, r4, 0
movs r1, 0
bl UpdateEventObjectSpriteVisibility
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r0, 24
adds r1, r4, 0
movs r2, 0
bl SetObjectSubpriorityByZCoord
_081561C8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8156194
thumb_func_start sub_81561D0
sub_81561D0: @ 81561D0
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _081561EE
ldrh r1, [r2, 0x2E]
lsls r1, 24
lsrs r1, 24
adds r0, r2, 0
bl FieldEffectStop
b _081561F6
_081561EE:
adds r0, r2, 0
movs r1, 0
bl UpdateEventObjectSpriteVisibility
_081561F6:
pop {r0}
bx r0
thumb_func_end sub_81561D0
thumb_func_start sub_81561FC
sub_81561FC: @ 81561FC
push {r4-r7,lr}
adds r6, r0, 0
adds r0, r1, 0
lsls r0, 24
lsrs r0, 24
lsls r2, 24
lsrs r2, 24
adds r1, r6, 0
bl SetObjectSubpriorityByZCoord
movs r7, 0
_08156212:
lsls r0, r7, 3
adds r0, r7
lsls r0, 2
ldr r1, =gEventObjects
adds r4, r0, r1
ldrb r0, [r4]
lsls r0, 31
cmp r0, 0
beq _081562B4
ldrb r0, [r4, 0x5]
bl GetEventObjectGraphicsInfo
ldrb r1, [r4, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, =gSprites
adds r5, r0, r1
adds r0, r6, 0
adds r0, 0x28
movs r2, 0
ldrsb r2, [r0, r2]
ldrh r0, [r6, 0x20]
adds r1, r0, r2
subs r0, r2
lsls r0, 16
lsrs r4, r0, 16
lsls r1, 16
asrs r1, 16
movs r0, 0x20
ldrsh r2, [r5, r0]
cmp r1, r2
bge _081562B4
lsls r0, r4, 16
asrs r0, 16
cmp r0, r2
ble _081562B4
adds r0, r5, 0
adds r0, 0x29
movs r3, 0
ldrsb r3, [r0, r3]
ldrh r2, [r5, 0x22]
adds r2, r3
ldrh r4, [r5, 0x22]
adds r0, r6, 0
adds r0, 0x29
movs r1, 0
ldrsb r1, [r0, r1]
ldrh r0, [r6, 0x22]
subs r0, r1
lsls r0, 16
asrs r0, 16
adds r3, r0, r3
lsls r2, 16
asrs r2, 16
lsls r3, 16
asrs r3, 16
cmp r2, r3
blt _0815628C
cmp r2, r0
bge _081562B4
_0815628C:
lsls r0, r4, 16
asrs r0, 16
cmp r0, r3
ble _081562B4
adds r2, r6, 0
adds r2, 0x43
adds r0, r5, 0
adds r0, 0x43
ldrb r1, [r0]
ldrb r0, [r2]
cmp r0, r1
bhi _081562B4
adds r0, r1, 0x2
strb r0, [r2]
b _081562BE
.pool
_081562B4:
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0xF
bls _08156212
_081562BE:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_81561FC
.align 2, 0 @ Don't pad with nop.