pokefirered/asm/field_effect_helpers.s
2018-11-23 15:17:38 -05:00

4309 lines
71 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start SetUpReflection
SetUpReflection: @ 80DAD7C
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
adds r4, r1, 0
lsls r5, r2, 24
lsrs r5, 24
movs r0, 0x20
ldrsh r1, [r4, r0]
movs r0, 0x22
ldrsh r2, [r4, r0]
adds r0, r4, 0
movs r3, 0x98
bl obj_unfreeze
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _080DAE2C @ =gSprites
adds r7, r1, r0
ldr r0, _080DAE30 @ =sub_80DAF50
str r0, [r7, 0x1C]
ldrb r1, [r7, 0x5]
movs r0, 0xC
orrs r1, r0
strb r1, [r7, 0x5]
ldr r2, _080DAE34 @ =gUnknown_835B934
lsrs r0, r1, 4
adds r0, r2
ldrb r0, [r0]
lsls r0, 4
movs r2, 0xF
ands r1, r2
orrs r1, r0
strb r1, [r7, 0x5]
movs r1, 0x3F
adds r1, r7
mov r8, r1
ldrb r0, [r1]
movs r1, 0x40
orrs r0, r1
mov r1, r8
strb r0, [r1]
ldr r0, _080DAE38 @ =gDummySpriteAnimTable
str r0, [r7, 0x8]
adds r0, r7, 0
movs r1, 0
bl StartSpriteAnim
ldr r0, _080DAE3C @ =gDummySpriteAffineAnimTable
str r0, [r7, 0x10]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x8
orrs r0, r1
mov r1, r8
strb r0, [r1]
adds r2, r7, 0
adds r2, 0x42
ldrb r1, [r2]
movs r0, 0x3F
ands r0, r1
strb r0, [r2]
ldrh r0, [r4, 0x2E]
strh r0, [r7, 0x2E]
ldrb r0, [r6, 0x8]
strh r0, [r7, 0x30]
strh r5, [r7, 0x3C]
adds r0, r6, 0
adds r1, r7, 0
bl npc_pal_op
cmp r5, 0
bne _080DAE22
ldrb r0, [r7, 0x1]
movs r1, 0x4
negs r1, r1
ands r1, r0
movs r0, 0x1
orrs r1, r0
strb r1, [r7, 0x1]
_080DAE22:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DAE2C: .4byte gSprites
_080DAE30: .4byte sub_80DAF50
_080DAE34: .4byte gUnknown_835B934
_080DAE38: .4byte gDummySpriteAnimTable
_080DAE3C: .4byte gDummySpriteAffineAnimTable
thumb_func_end SetUpReflection
thumb_func_start sub_80DAE40
sub_80DAE40: @ 80DAE40
push {lr}
ldrb r0, [r0, 0x5]
bl GetFieldObjectGraphicsInfo
ldrh r0, [r0, 0xA]
subs r0, 0x2
lsls r0, 16
asrs r0, 16
pop {r1}
bx r1
thumb_func_end sub_80DAE40
thumb_func_start npc_pal_op
npc_pal_op: @ 80DAE54
push {r4,r5,lr}
sub sp, 0x8
adds r5, r0, 0
adds r4, r1, 0
ldr r1, _080DAEAC @ =gUnknown_83FECCC
mov r0, sp
movs r2, 0x6
bl memcpy
movs r0, 0
strh r0, [r4, 0x32]
ldrb r0, [r5, 0x5]
bl GetFieldObjectGraphicsInfo
ldrb r1, [r0, 0xC]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080DAEB0
ldrb r0, [r5, 0x1F]
bl MetatileBehavior_ReturnFalse_7
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080DAE96
ldrb r0, [r5, 0x1E]
bl MetatileBehavior_ReturnFalse_7
lsls r0, 24
lsrs r0, 24
cmp r0, 0
beq _080DAEB0
_080DAE96:
subs r0, 0x1
lsls r0, 1
add r0, sp
ldrh r0, [r0]
strh r0, [r4, 0x32]
ldrb r1, [r4, 0x5]
lsrs r1, 4
adds r0, r5, 0
bl npc_pal_op_A
b _080DAEBA
.align 2, 0
_080DAEAC: .4byte gUnknown_83FECCC
_080DAEB0:
ldrb r1, [r4, 0x5]
lsrs r1, 4
adds r0, r5, 0
bl npc_pal_op_B
_080DAEBA:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end npc_pal_op
thumb_func_start npc_pal_op_B
npc_pal_op_B: @ 80DAEC4
push {r4,lr}
lsls r1, 24
lsrs r4, r1, 24
ldrb r0, [r0, 0x5]
bl GetFieldObjectGraphicsInfo
adds r2, r0, 0
ldrh r1, [r2, 0x4]
ldr r0, _080DAEF0 @ =0x000011ff
cmp r1, r0
beq _080DAF18
ldrb r0, [r2, 0xC]
movs r1, 0xF
ands r1, r0
cmp r1, 0
bne _080DAEF4
ldrh r0, [r2, 0x2]
adds r1, r4, 0
bl npc_load_two_palettes__no_record
b _080DAF12
.align 2, 0
_080DAEF0: .4byte 0x000011ff
_080DAEF4:
cmp r1, 0xA
bne _080DAF02
ldrh r0, [r2, 0x2]
adds r1, r4, 0
bl npc_load_two_palettes__and_record
b _080DAF12
_080DAF02:
adds r0, r4, 0
bl npc_paltag_by_palslot
lsls r0, 16
lsrs r0, 16
adds r1, r4, 0
bl pal_patch_for_npc
_080DAF12:
adds r0, r4, 0
bl sub_807AA8C
_080DAF18:
pop {r4}
pop {r0}
bx r0
thumb_func_end npc_pal_op_B
thumb_func_start npc_pal_op_A
npc_pal_op_A: @ 80DAF20
push {r4,lr}
lsls r1, 24
lsrs r4, r1, 24
ldrb r0, [r0, 0x5]
bl GetFieldObjectGraphicsInfo
adds r2, r0, 0
ldrh r1, [r2, 0x4]
ldr r0, _080DAF4C @ =0x000011ff
cmp r1, r0
beq _080DAF44
adds r0, r1, 0
adds r1, r4, 0
bl pal_patch_for_npc
adds r0, r4, 0
bl sub_807AA8C
_080DAF44:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DAF4C: .4byte 0x000011ff
thumb_func_end npc_pal_op_A
thumb_func_start sub_80DAF50
sub_80DAF50: @ 80DAF50
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r4, r0, 0
movs r0, 0x2E
ldrsh r1, [r4, r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _080DAF98 @ =gMapObjects
adds r7, r0, r1
ldrb r1, [r7, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DAF9C @ =gSprites
adds r5, r0, r1
ldr r0, [r7]
ldr r1, _080DAFA0 @ =0x00020001
ands r0, r1
cmp r0, r1
bne _080DAF88
ldrb r1, [r7, 0x8]
movs r2, 0x30
ldrsh r0, [r4, r2]
cmp r1, r0
beq _080DAFA4
_080DAF88:
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x2
negs r0, r0
ands r0, r1
strb r0, [r2]
b _080DB0AE
.align 2, 0
_080DAF98: .4byte gMapObjects
_080DAF9C: .4byte gSprites
_080DAFA0: .4byte 0x00020001
_080DAFA4:
ldr r1, _080DB0BC @ =gUnknown_835B934
ldrb r0, [r5, 0x5]
lsrs r0, 4
adds r0, r1
ldrb r1, [r0]
lsls r1, 4
ldrb r2, [r4, 0x5]
movs r0, 0xF
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x5]
ldrb r1, [r5, 0x1]
lsrs r1, 6
lsls r1, 6
ldrb r2, [r4, 0x1]
movs r3, 0x3F
adds r0, r3, 0
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x1]
ldrb r0, [r5, 0x3]
lsrs r0, 6
lsls r0, 6
ldrb r2, [r4, 0x3]
adds r1, r3, 0
ands r1, r2
orrs r1, r0
strb r1, [r4, 0x3]
ldrb r0, [r5, 0x3]
lsls r0, 26
lsrs r0, 27
movs r2, 0x10
orrs r0, r2
lsls r0, 1
subs r2, 0x4F
mov r9, r2
ands r1, r2
orrs r1, r0
strb r1, [r4, 0x3]
ldrh r1, [r5, 0x4]
lsls r1, 22
lsrs r1, 22
ldrh r2, [r4, 0x4]
ldr r0, _080DB0C0 @ =0xfffffc00
ands r0, r2
orrs r0, r1
strh r0, [r4, 0x4]
ldr r0, [r5, 0x18]
str r0, [r4, 0x18]
adds r0, r5, 0
adds r0, 0x42
ldrb r0, [r0]
lsls r0, 26
lsrs r0, 26
adds r2, r4, 0
adds r2, 0x42
ands r3, r0
ldrb r1, [r2]
movs r0, 0x40
negs r0, r0
ands r0, r1
orrs r0, r3
strb r0, [r2]
movs r0, 0x3E
adds r0, r5
mov r8, r0
ldrb r0, [r0]
adds r6, r4, 0
adds r6, 0x3E
movs r1, 0x4
ands r1, r0
ldrb r2, [r6]
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r6]
ldrh r0, [r5, 0x20]
strh r0, [r4, 0x20]
adds r0, r7, 0
bl sub_80DAE40
ldrh r1, [r5, 0x22]
adds r0, r1
ldrh r1, [r4, 0x32]
adds r1, r0
strh r1, [r4, 0x22]
adds r0, r5, 0
adds r0, 0x28
ldrb r1, [r0]
adds r0, r4, 0
adds r0, 0x28
strb r1, [r0]
adds r0, r5, 0
adds r0, 0x29
ldrb r0, [r0]
adds r1, r4, 0
adds r1, 0x29
strb r0, [r1]
ldrh r0, [r5, 0x24]
strh r0, [r4, 0x24]
ldrh r0, [r5, 0x26]
negs r0, r0
strh r0, [r4, 0x26]
mov r2, r8
ldrb r0, [r2]
movs r1, 0x2
ands r1, r0
ldrb r2, [r6]
movs r0, 0x3
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r6]
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080DB0AE
ldrb r0, [r4, 0x3]
mov r2, r9
ands r2, r0
strb r2, [r4, 0x3]
ldrb r0, [r5, 0x3]
lsls r0, 26
lsrs r0, 27
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _080DB0AE
movs r1, 0x2
adds r0, r2, 0
orrs r0, r1
strb r0, [r4, 0x3]
_080DB0AE:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DB0BC: .4byte gUnknown_835B934
_080DB0C0: .4byte 0xfffffc00
thumb_func_end sub_80DAF50
thumb_func_start sub_80DB0C4
sub_80DB0C4: @ 80DB0C4
push {r4,lr}
ldr r0, _080DB10C @ =gUnknown_83A0010
ldr r0, [r0, 0x20]
movs r1, 0
movs r2, 0
movs r3, 0x52
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
adds r4, r0, 0
cmp r0, 0x40
beq _080DB102
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _080DB110 @ =gSprites
adds r1, r0
ldrb r2, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
movs r3, 0x4
orrs r0, r3
strb r0, [r1, 0x5]
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x2
orrs r0, r2
orrs r0, r3
strb r0, [r1]
_080DB102:
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DB10C: .4byte gUnknown_83A0010
_080DB110: .4byte gSprites
thumb_func_end sub_80DB0C4
thumb_func_start objid_set_invisible
objid_set_invisible: @ 80DB114
lsls r0, 24
lsrs r0, 24
ldr r2, _080DB130 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
bx lr
.align 2, 0
_080DB130: .4byte gSprites
thumb_func_end objid_set_invisible
thumb_func_start sub_80DB134
sub_80DB134: @ 80DB134
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
lsls r0, 24
lsrs r5, r0, 24
lsls r1, 24
lsrs r1, 24
mov r8, r1
lsls r2, 16
lsrs r7, r2, 16
lsls r3, 16
lsrs r6, r3, 16
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
ldr r1, _080DB1D8 @ =gSprites
adds r2, r0, r1
adds r0, r2, 0
adds r0, 0x3E
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _080DB17E
movs r0, 0x2E
ldrsh r1, [r2, r0]
lsls r0, r7, 16
asrs r0, 16
cmp r1, r0
bne _080DB17E
movs r0, 0x30
ldrsh r1, [r2, r0]
lsls r0, r6, 16
asrs r0, 16
cmp r1, r0
beq _080DB1CA
_080DB17E:
lsls r0, r7, 16
asrs r0, 16
lsls r1, r6, 16
asrs r1, 16
mov r4, sp
adds r4, 0x2
mov r2, sp
adds r3, r4, 0
bl sub_8063B1C
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
ldr r1, _080DB1D8 @ =gSprites
adds r2, r0, r1
mov r0, sp
ldrh r0, [r0]
adds r0, 0x8
strh r0, [r2, 0x20]
ldrh r0, [r4]
adds r0, 0x8
strh r0, [r2, 0x22]
adds r3, r2, 0
adds r3, 0x3E
ldrb r1, [r3]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r3]
strh r7, [r2, 0x2E]
strh r6, [r2, 0x30]
mov r1, r8
subs r1, 0x1
lsls r1, 24
lsrs r1, 24
adds r0, r2, 0
bl StartSpriteAnim
_080DB1CA:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DB1D8: .4byte gSprites
thumb_func_end sub_80DB134
thumb_func_start oei_shadow
oei_shadow: @ 80DB1DC
push {r4,r5,lr}
ldr r5, _080DB268 @ =gFieldEffectArguments
ldrb r0, [r5]
ldrb r1, [r5, 0x4]
ldrb r2, [r5, 0x8]
bl GetFieldObjectIdByLocalIdAndMap
lsls r0, 24
lsrs r0, 24
ldr r2, _080DB26C @ =gMapObjects
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1, 0x5]
bl GetFieldObjectGraphicsInfo
adds r4, r0, 0
ldr r2, _080DB270 @ =gUnknown_83A0010
ldr r1, _080DB274 @ =gUnknown_83FECD2
ldrb r0, [r4, 0xC]
lsls r0, 26
lsrs r0, 30
adds r0, r1
ldrb r0, [r0]
lsls r0, 2
adds r0, r2
ldr r0, [r0]
movs r1, 0
movs r2, 0
movs r3, 0x94
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080DB260
ldr r0, _080DB278 @ =gSprites
lsls r2, r1, 4
adds r2, r1
lsls r2, 2
adds r2, r0
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x2
orrs r0, r1
strb r0, [r3]
ldr r0, [r5]
strh r0, [r2, 0x2E]
ldr r0, [r5, 0x4]
strh r0, [r2, 0x30]
ldr r0, [r5, 0x8]
strh r0, [r2, 0x32]
ldrh r1, [r4, 0xA]
lsls r1, 16
asrs r1, 17
ldr r3, _080DB27C @ =gUnknown_83FECD6
ldrb r0, [r4, 0xC]
lsls r0, 26
lsrs r0, 30
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
subs r1, r0
strh r1, [r2, 0x34]
_080DB260:
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080DB268: .4byte gFieldEffectArguments
_080DB26C: .4byte gMapObjects
_080DB270: .4byte gUnknown_83A0010
_080DB274: .4byte gUnknown_83FECD2
_080DB278: .4byte gSprites
_080DB27C: .4byte gUnknown_83FECD6
thumb_func_end oei_shadow
thumb_func_start oamc_shadow
oamc_shadow: @ 80DB280
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
ldrh r0, [r5, 0x2E]
lsls r0, 24
lsrs r0, 24
ldrh r1, [r5, 0x30]
lsls r1, 24
lsrs r1, 24
ldrh r2, [r5, 0x32]
lsls r2, 24
lsrs r2, 24
mov r3, sp
bl TryGetFieldObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
beq _080DB2AE
adds r0, r5, 0
movs r1, 0x3
bl FieldEffectStop
b _080DB334
_080DB2AE:
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _080DB33C @ =gMapObjects
adds r4, r0, r1
ldrb r0, [r4, 0x4]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _080DB340 @ =gSprites
adds r1, r0
ldrb r0, [r1, 0x5]
movs r2, 0xC
ands r2, r0
ldrb r3, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r2
strb r0, [r5, 0x5]
ldrh r0, [r1, 0x20]
strh r0, [r5, 0x20]
ldrh r0, [r5, 0x34]
ldrh r1, [r1, 0x22]
adds r0, r1
strh r0, [r5, 0x22]
ldr r0, [r4]
ldr r1, _080DB344 @ =0x00400001
ands r0, r1
cmp r0, r1
bne _080DB32C
ldrb r0, [r4, 0x1E]
bl MetatileBehavior_IsTallGrass
lsls r0, 24
cmp r0, 0
bne _080DB32C
ldrb r0, [r4, 0x1E]
bl MetatileBehavior_IsSurfable
lsls r0, 24
cmp r0, 0
bne _080DB32C
ldrb r0, [r4, 0x1F]
bl MetatileBehavior_IsSurfable
lsls r0, 24
cmp r0, 0
bne _080DB32C
ldrb r0, [r4, 0x1E]
bl MetatileBehavior_IsReflective
lsls r0, 24
cmp r0, 0
bne _080DB32C
ldrb r0, [r4, 0x1F]
bl MetatileBehavior_IsReflective
lsls r0, 24
cmp r0, 0
beq _080DB334
_080DB32C:
adds r0, r5, 0
movs r1, 0x3
bl FieldEffectStop
_080DB334:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DB33C: .4byte gMapObjects
_080DB340: .4byte gSprites
_080DB344: .4byte 0x00400001
thumb_func_end oamc_shadow
thumb_func_start oei_grass_normal
oei_grass_normal: @ 80DB348
push {r4,r5,lr}
sub sp, 0x4
ldr r5, _080DB3E0 @ =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_8063BC4
ldr r0, _080DB3E4 @ =gUnknown_83A0010
ldr r0, [r0, 0x10]
mov r1, sp
movs r2, 0
ldrsh r1, [r1, r2]
movs r3, 0
ldrsh r2, [r4, r3]
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080DB3D4
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DB3E8 @ =gSprites
adds r3, r0, r1
adds r2, r3, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x2
orrs r0, r1
strb r0, [r2]
movs r0, 0x3
ldrb r1, [r5, 0xC]
ands r1, r0
lsls r1, 2
ldrb r2, [r3, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3, 0x5]
ldr r0, [r5, 0x8]
strh r0, [r3, 0x2E]
ldr r0, [r5]
strh r0, [r3, 0x30]
ldr r0, [r5, 0x4]
strh r0, [r3, 0x32]
ldr r0, [r5, 0x10]
strh r0, [r3, 0x34]
ldr r0, [r5, 0x14]
strh r0, [r3, 0x36]
ldr r0, [r5, 0x18]
strh r0, [r3, 0x38]
ldr r0, [r5, 0x1C]
cmp r0, 0
beq _080DB3D4
adds r0, r3, 0
movs r1, 0x4
bl SeekSpriteAnim
_080DB3D4:
movs r0, 0
add sp, 0x4
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080DB3E0: .4byte gFieldEffectArguments
_080DB3E4: .4byte gUnknown_83A0010
_080DB3E8: .4byte gSprites
thumb_func_end oei_grass_normal
thumb_func_start unc_grass_normal
unc_grass_normal: @ 80DB3EC
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
adds r5, r0, 0
ldrh r0, [r5, 0x38]
lsrs r4, r0, 8
lsls r0, 24
lsrs r7, r0, 24
ldr r3, _080DB498 @ =gUnknown_2036E18
ldrb r1, [r3]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080DB438
ldr r0, _080DB49C @ =gSaveBlock1Ptr
ldr r2, [r0]
movs r0, 0x5
ldrsb r0, [r2, r0]
cmp r0, r4
bne _080DB41E
movs r0, 0x4
ldrsb r0, [r2, r0]
cmp r0, r7
beq _080DB438
_080DB41E:
ldr r1, [r3, 0x4]
ldrh r0, [r5, 0x30]
subs r0, r1
strh r0, [r5, 0x30]
ldr r1, [r3, 0x8]
ldrh r0, [r5, 0x32]
subs r0, r1
strh r0, [r5, 0x32]
ldrb r1, [r2, 0x5]
lsls r1, 8
ldrb r0, [r2, 0x4]
orrs r0, r1
strh r0, [r5, 0x38]
_080DB438:
ldrh r0, [r5, 0x34]
lsrs r1, r0, 8
mov r8, r1
lsls r0, 24
lsrs r4, r0, 24
ldrh r0, [r5, 0x36]
lsls r0, 24
lsrs r7, r0, 24
movs r2, 0x30
ldrsh r0, [r5, r2]
movs r2, 0x32
ldrsh r1, [r5, r2]
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r6, r0, 24
mov r0, r8
adds r1, r4, 0
adds r2, r7, 0
mov r3, sp
bl TryGetFieldObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
bne _080DB48C
adds r0, r6, 0
bl MetatileBehavior_IsTallGrass_2
lsls r0, 24
cmp r0, 0
beq _080DB48C
movs r1, 0x3C
ldrsh r0, [r5, r1]
cmp r0, 0
beq _080DB4A0
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DB4A0
_080DB48C:
adds r0, r5, 0
movs r1, 0x4
bl FieldEffectStop
b _080DB4E4
.align 2, 0
_080DB498: .4byte gUnknown_2036E18
_080DB49C: .4byte gSaveBlock1Ptr
_080DB4A0:
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _080DB4F0 @ =gMapObjects
adds r2, r0, r1
ldr r0, [r2, 0x10]
ldr r1, [r5, 0x30]
cmp r0, r1
beq _080DB4C0
ldr r0, [r2, 0x14]
cmp r0, r1
beq _080DB4C0
movs r0, 0x1
strh r0, [r5, 0x3C]
_080DB4C0:
movs r6, 0
adds r0, r5, 0
adds r0, 0x2B
ldrb r0, [r0]
cmp r0, 0
bne _080DB4CE
movs r6, 0x4
_080DB4CE:
adds r0, r5, 0
movs r1, 0
bl sub_8068EB4
ldrh r1, [r5, 0x2E]
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
adds r2, r6, 0
bl sub_80DCD48
_080DB4E4:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DB4F0: .4byte gMapObjects
thumb_func_end unc_grass_normal
thumb_func_start FldEff_JumpTallGrass
FldEff_JumpTallGrass: @ 80DB4F4
push {r4,lr}
ldr r4, _080DB558 @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0xC
bl sub_8063BC4
ldr r0, _080DB55C @ =gUnknown_83A0010
ldr r0, [r0, 0x28]
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 _080DB550
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DB560 @ =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, 0xC
strh r0, [r2, 0x30]
_080DB550:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DB558: .4byte gFieldEffectArguments
_080DB55C: .4byte gUnknown_83A0010
_080DB560: .4byte gSprites
thumb_func_end FldEff_JumpTallGrass
thumb_func_start sub_80DB564
sub_80DB564: @ 80DB564
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r4, [sp, 0x18]
lsls r0, 24
lsrs r0, 24
mov r12, r0
lsls r1, 24
lsrs r7, r1, 24
lsls r2, 24
lsrs r6, r2, 24
movs r5, 0
ldr r0, _080DB5D4 @ =gSprites
mov r8, r0
lsls r3, 16
asrs r3, 16
lsls r4, 16
asrs r4, 16
_080DB588:
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
mov r1, r8
adds r2, r0, r1
adds r0, r2, 0
adds r0, 0x3E
ldrb r0, [r0]
lsls r0, 31
cmp r0, 0
beq _080DB5DC
ldr r1, [r2, 0x1C]
ldr r0, _080DB5D8 @ =unc_grass_normal
cmp r1, r0
bne _080DB5DC
movs r1, 0x30
ldrsh r0, [r2, r1]
cmp r3, r0
bne _080DB5DC
movs r1, 0x32
ldrsh r0, [r2, r1]
cmp r4, r0
bne _080DB5DC
ldrh r1, [r2, 0x34]
lsls r0, r1, 16
asrs r0, 24
cmp r12, r0
bne _080DB5DC
movs r0, 0xFF
ands r0, r1
cmp r7, r0
bne _080DB5DC
movs r1, 0x36
ldrsh r0, [r2, r1]
cmp r6, r0
bne _080DB5DC
adds r0, r5, 0
b _080DB5E8
.align 2, 0
_080DB5D4: .4byte gSprites
_080DB5D8: .4byte unc_grass_normal
_080DB5DC:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x3F
bls _080DB588
movs r0, 0x40
_080DB5E8:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80DB564
thumb_func_start FldEff_LongGrass
FldEff_LongGrass: @ 80DB5F4
push {r4,r5,lr}
sub sp, 0x4
ldr r5, _080DB690 @ =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_8063BC4
ldr r0, _080DB694 @ =gUnknown_83A0010
ldr r0, [r0, 0x3C]
mov r1, sp
movs r2, 0
ldrsh r1, [r1, r2]
movs r3, 0
ldrsh r2, [r4, r3]
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080DB684
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DB698 @ =gSprites
adds r4, r0, r1
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x2
orrs r0, r1
strb r0, [r2]
ldrb r0, [r5, 0x8]
bl ZCoordToPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r4, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x5]
ldr r0, [r5, 0x8]
strh r0, [r4, 0x2E]
ldr r0, [r5]
strh r0, [r4, 0x30]
ldr r0, [r5, 0x4]
strh r0, [r4, 0x32]
ldr r0, [r5, 0x10]
strh r0, [r4, 0x34]
ldr r0, [r5, 0x14]
strh r0, [r4, 0x36]
ldr r0, [r5, 0x18]
strh r0, [r4, 0x38]
ldr r0, [r5, 0x1C]
cmp r0, 0
beq _080DB684
adds r0, r4, 0
movs r1, 0x6
bl SeekSpriteAnim
_080DB684:
movs r0, 0
add sp, 0x4
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080DB690: .4byte gFieldEffectArguments
_080DB694: .4byte gUnknown_83A0010
_080DB698: .4byte gSprites
thumb_func_end FldEff_LongGrass
thumb_func_start unc_grass_tall
unc_grass_tall: @ 80DB69C
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
adds r5, r0, 0
ldrh r0, [r5, 0x38]
lsrs r7, r0, 8
lsls r0, 24
lsrs r6, r0, 24
ldr r3, _080DB748 @ =gUnknown_2036E18
ldrb r1, [r3]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080DB6E8
ldr r0, _080DB74C @ =gSaveBlock1Ptr
ldr r2, [r0]
movs r0, 0x5
ldrsb r0, [r2, r0]
cmp r0, r7
bne _080DB6CE
movs r0, 0x4
ldrsb r0, [r2, r0]
cmp r0, r6
beq _080DB6E8
_080DB6CE:
ldr r1, [r3, 0x4]
ldrh r0, [r5, 0x30]
subs r0, r1
strh r0, [r5, 0x30]
ldr r1, [r3, 0x8]
ldrh r0, [r5, 0x32]
subs r0, r1
strh r0, [r5, 0x32]
ldrb r1, [r2, 0x5]
lsls r1, 8
ldrb r0, [r2, 0x4]
orrs r0, r1
strh r0, [r5, 0x38]
_080DB6E8:
ldrh r0, [r5, 0x34]
lsrs r1, r0, 8
mov r8, r1
lsls r0, 24
lsrs r7, r0, 24
ldrh r0, [r5, 0x36]
lsls r0, 24
lsrs r6, r0, 24
movs r2, 0x30
ldrsh r0, [r5, r2]
movs r2, 0x32
ldrsh r1, [r5, r2]
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r4, r0, 24
mov r0, r8
adds r1, r7, 0
adds r2, r6, 0
mov r3, sp
bl TryGetFieldObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
bne _080DB73C
adds r0, r4, 0
bl MetatileBehavior_ReturnFalse_3
lsls r0, 24
cmp r0, 0
beq _080DB73C
movs r1, 0x3C
ldrsh r0, [r5, r1]
cmp r0, 0
beq _080DB750
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DB750
_080DB73C:
adds r0, r5, 0
movs r1, 0x11
bl FieldEffectStop
b _080DB786
.align 2, 0
_080DB748: .4byte gUnknown_2036E18
_080DB74C: .4byte gSaveBlock1Ptr
_080DB750:
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _080DB794 @ =gMapObjects
adds r2, r0, r1
ldr r0, [r2, 0x10]
ldr r1, [r5, 0x30]
cmp r0, r1
beq _080DB770
ldr r0, [r2, 0x14]
cmp r0, r1
beq _080DB770
movs r0, 0x1
strh r0, [r5, 0x3C]
_080DB770:
adds r0, r5, 0
movs r1, 0
bl sub_8068EB4
ldrh r1, [r5, 0x2E]
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
movs r2, 0
bl sub_80DCD48
_080DB786:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DB794: .4byte gMapObjects
thumb_func_end unc_grass_tall
thumb_func_start FldEff_JumpLongGrass
FldEff_JumpLongGrass: @ 80DB798
push {r4,lr}
ldr r4, _080DB7FC @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8063BC4
ldr r0, _080DB800 @ =gUnknown_83A0010
ldr r0, [r0, 0x40]
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 _080DB7F4
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DB804 @ =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, 0x12
strh r0, [r2, 0x30]
_080DB7F4:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DB7FC: .4byte gFieldEffectArguments
_080DB800: .4byte gUnknown_83A0010
_080DB804: .4byte gSprites
thumb_func_end FldEff_JumpLongGrass
thumb_func_start sub_80DB808
sub_80DB808: @ 80DB808
push {r4-r6,lr}
ldr r6, _080DB89C @ =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
bl GetFieldObjectIdByLocalIdAndMap
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _080DB8A0 @ =gMapObjects
adds r5, r1, r0
ldr r0, _080DB8A4 @ =gUnknown_83A0010
ldr r0, [r0, 0x78]
movs r1, 0
movs r2, 0
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
cmp r0, 0x40
beq _080DB894
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r4, _080DB8A8 @ =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]
_080DB894:
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_080DB89C: .4byte gFieldEffectArguments
_080DB8A0: .4byte gMapObjects
_080DB8A4: .4byte gUnknown_83A0010
_080DB8A8: .4byte gSprites
thumb_func_end sub_80DB808
thumb_func_start sub_80DB8AC
sub_80DB8AC: @ 80DB8AC
push {r4-r7,lr}
mov r7, r8
push {r7}
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 TryGetFieldObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
bne _080DB8EA
ldr r5, _080DB8F4 @ =gMapObjects
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, 29
cmp r0, 0
blt _080DB8F8
_080DB8EA:
adds r0, r4, 0
movs r1, 0x29
bl FieldEffectStop
b _080DB98E
.align 2, 0
_080DB8F4: .4byte gMapObjects
_080DB8F8:
ldrb r0, [r1, 0x5]
bl GetFieldObjectGraphicsInfo
mov r8, r0
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r5
ldrb r1, [r0, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DB99C @ =gSprites
adds r6, r0, r1
ldrh r5, [r6, 0x22]
ldrh r7, [r6, 0x20]
movs r0, 0x20
ldrsh r1, [r6, r0]
movs r2, 0x34
ldrsh r0, [r4, r2]
cmp r1, r0
bne _080DB934
lsls r0, r5, 16
asrs r0, 16
movs r2, 0x36
ldrsh r1, [r4, r2]
cmp r0, r1
beq _080DB94E
_080DB934:
strh r7, [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 _080DB94E
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
_080DB94E:
strh r7, [r4, 0x20]
strh r5, [r4, 0x22]
mov r1, r8
ldrh r0, [r1, 0xA]
lsls r0, 16
asrs r0, 17
subs r0, 0x8
strh r0, [r4, 0x26]
adds r0, r6, 0
adds r0, 0x43
ldrb r0, [r0]
subs r0, 0x1
adds r1, r4, 0
adds r1, 0x43
strb r0, [r1]
ldrb r0, [r6, 0x5]
movs r1, 0xC
ands r1, r0
ldrb r2, [r4, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x5]
adds r0, r6, 0
adds r0, 0x3E
ldrb r1, [r0]
lsls r1, 29
lsrs r1, 31
adds r0, r4, 0
bl sub_8068EB4
_080DB98E:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080DB99C: .4byte gSprites
thumb_func_end sub_80DB8AC
thumb_func_start FldEff_SandFootprints
FldEff_SandFootprints: @ 80DB9A0
push {r4,lr}
ldr r4, _080DBA08 @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8063BC4
ldr r0, _080DBA0C @ =gUnknown_83A0010
ldr r0, [r0, 0x2C]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x40
beq _080DB9FE
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DBA10 @ =gSprites
adds r0, r1
adds r3, r0, 0
adds r3, 0x3E
ldrb r1, [r3]
movs r2, 0x2
orrs r1, r2
strb r1, [r3]
movs r1, 0x3
ldrb r2, [r4, 0xC]
ands r2, r1
lsls r2, 2
ldrb r3, [r0, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r3
orrs r1, r2
strb r1, [r0, 0x5]
movs r1, 0xD
strh r1, [r0, 0x3C]
ldrb r1, [r4, 0x10]
bl StartSpriteAnim
_080DB9FE:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DBA08: .4byte gFieldEffectArguments
_080DBA0C: .4byte gUnknown_83A0010
_080DBA10: .4byte gSprites
thumb_func_end FldEff_SandFootprints
thumb_func_start FldEff_DeepSandFootprints
FldEff_DeepSandFootprints: @ 80DBA14
push {r4,r5,lr}
ldr r4, _080DBA7C @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8063BC4
ldr r0, _080DBA80 @ =gUnknown_83A0010
ldr r0, [r0, 0x5C]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r1, r0, 24
adds r5, r1, 0
cmp r1, 0x40
beq _080DBA74
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DBA84 @ =gSprites
adds r0, r1
adds r3, r0, 0
adds r3, 0x3E
ldrb r1, [r3]
movs r2, 0x2
orrs r1, r2
strb r1, [r3]
movs r1, 0x3
ldrb r2, [r4, 0xC]
ands r2, r1
lsls r2, 2
ldrb r3, [r0, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r3
orrs r1, r2
strb r1, [r0, 0x5]
movs r1, 0x18
strh r1, [r0, 0x3C]
ldrb r1, [r4, 0x10]
bl StartSpriteAnim
_080DBA74:
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080DBA7C: .4byte gFieldEffectArguments
_080DBA80: .4byte gUnknown_83A0010
_080DBA84: .4byte gSprites
thumb_func_end FldEff_DeepSandFootprints
thumb_func_start FldEff_BikeTireTracks
FldEff_BikeTireTracks: @ 80DBA88
push {r4,r5,lr}
ldr r4, _080DBAF0 @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8063BC4
ldr r0, _080DBAF4 @ =gUnknown_83A0010
ldr r0, [r0, 0x6C]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r1, r0, 24
adds r5, r1, 0
cmp r1, 0x40
beq _080DBAE8
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DBAF8 @ =gSprites
adds r0, r1
adds r3, r0, 0
adds r3, 0x3E
ldrb r1, [r3]
movs r2, 0x2
orrs r1, r2
strb r1, [r3]
movs r1, 0x3
ldrb r2, [r4, 0xC]
ands r2, r1
lsls r2, 2
ldrb r3, [r0, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r3
orrs r1, r2
strb r1, [r0, 0x5]
movs r1, 0x23
strh r1, [r0, 0x3C]
ldrb r1, [r4, 0x10]
bl StartSpriteAnim
_080DBAE8:
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080DBAF0: .4byte gFieldEffectArguments
_080DBAF4: .4byte gUnknown_83A0010
_080DBAF8: .4byte gSprites
thumb_func_end FldEff_BikeTireTracks
thumb_func_start sub_80DBAFC
sub_80DBAFC: @ 80DBAFC
push {lr}
ldr r2, _080DBB14 @ =gUnknown_83FECE0
movs r3, 0x2E
ldrsh r1, [r0, r3]
lsls r1, 2
adds r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_080DBB14: .4byte gUnknown_83FECE0
thumb_func_end sub_80DBAFC
thumb_func_start sub_80DBB18
sub_80DBB18: @ 80DBB18
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 _080DBB2E
movs r0, 0x1
strh r0, [r1, 0x2E]
_080DBB2E:
adds r0, r1, 0
movs r1, 0
bl sub_8068EB4
pop {r0}
bx r0
thumb_func_end sub_80DBB18
thumb_func_start sub_80DBB3C
sub_80DBB3C: @ 80DBB3C
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 sub_8068EB4
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x38
ble _080DBB80
ldrh r1, [r4, 0x3C]
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldEffectStop
_080DBB80:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80DBB3C
thumb_func_start FldEff_Splash
FldEff_Splash: @ 80DBB88
push {r4-r6,lr}
ldr r6, _080DBC1C @ =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
bl GetFieldObjectIdByLocalIdAndMap
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _080DBC20 @ =gMapObjects
adds r5, r1, r0
ldr r0, _080DBC24 @ =gUnknown_83A0010
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 _080DBC12
ldrb r0, [r5, 0x5]
bl GetFieldObjectGraphicsInfo
lsls r3, r4, 4
adds r3, r4
lsls r3, 2
ldr r4, _080DBC28 @ =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, 0x3F
bl PlaySE
_080DBC12:
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_080DBC1C: .4byte gFieldEffectArguments
_080DBC20: .4byte gMapObjects
_080DBC24: .4byte gUnknown_83A0010
_080DBC28: .4byte gSprites
thumb_func_end FldEff_Splash
thumb_func_start sub_80DBC2C
sub_80DBC2C: @ 80DBC2C
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 _080DBC5C
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 TryGetFieldObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
beq _080DBC66
_080DBC5C:
adds r0, r4, 0
movs r1, 0xF
bl FieldEffectStop
b _080DBCA6
_080DBC66:
ldr r3, _080DBCB0 @ =gSprites
ldr r2, _080DBCB4 @ =gMapObjects
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 sub_8068EB4
_080DBCA6:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DBCB0: .4byte gSprites
_080DBCB4: .4byte gMapObjects
thumb_func_end sub_80DBC2C
thumb_func_start FldEff_JumpSmallSplash
FldEff_JumpSmallSplash: @ 80DBCB8
push {r4,lr}
ldr r4, _080DBD1C @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0xC
bl sub_8063BC4
ldr r0, _080DBD20 @ =gUnknown_83A0010
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 _080DBD14
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DBD24 @ =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]
_080DBD14:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DBD1C: .4byte gFieldEffectArguments
_080DBD20: .4byte gUnknown_83A0010
_080DBD24: .4byte gSprites
thumb_func_end FldEff_JumpSmallSplash
thumb_func_start oei_water_drop_tall
oei_water_drop_tall: @ 80DBD28
push {r4,lr}
ldr r4, _080DBD8C @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8063BC4
ldr r0, _080DBD90 @ =gUnknown_83A0010
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 _080DBD84
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DBD94 @ =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]
_080DBD84:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DBD8C: .4byte gFieldEffectArguments
_080DBD90: .4byte gUnknown_83A0010
_080DBD94: .4byte gSprites
thumb_func_end oei_water_drop_tall
thumb_func_start FldEff_FeetInFlowingWater
FldEff_FeetInFlowingWater: @ 80DBD98
push {r4-r7,lr}
ldr r7, _080DBE38 @ =gFieldEffectArguments
ldrb r0, [r7]
ldrb r1, [r7, 0x4]
ldrb r2, [r7, 0x8]
bl GetFieldObjectIdByLocalIdAndMap
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _080DBE3C @ =gMapObjects
adds r6, r1, r0
ldr r0, _080DBE40 @ =gUnknown_83A0010
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 _080DBE2E
ldrb r0, [r6, 0x5]
bl GetFieldObjectGraphicsInfo
adds r4, r0, 0
lsls r0, r5, 4
adds r0, r5
lsls r0, 2
ldr r3, _080DBE44 @ =gSprites
adds r0, r3
ldr r1, _080DBE48 @ =sub_80DBE50
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, _080DBE4C @ =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
_080DBE2E:
movs r0, 0
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080DBE38: .4byte gFieldEffectArguments
_080DBE3C: .4byte gMapObjects
_080DBE40: .4byte gUnknown_83A0010
_080DBE44: .4byte gSprites
_080DBE48: .4byte sub_80DBE50
_080DBE4C: .4byte 0x0000ffff
thumb_func_end FldEff_FeetInFlowingWater
thumb_func_start sub_80DBE50
sub_80DBE50: @ 80DBE50
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 TryGetFieldObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
bne _080DBE8A
ldr r2, _080DBE94 @ =gMapObjects
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 _080DBE98
_080DBE8A:
adds r0, r4, 0
movs r1, 0x22
bl FieldEffectStop
b _080DBEE2
.align 2, 0
_080DBE94: .4byte gMapObjects
_080DBE98:
ldrb r1, [r5, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DBEEC @ =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 sub_8068EB4
ldr r1, [r5, 0x10]
ldr r0, [r4, 0x34]
cmp r1, r0
beq _080DBEE2
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 _080DBEE2
movs r0, 0x3F
bl PlaySE
_080DBEE2:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DBEEC: .4byte gSprites
thumb_func_end sub_80DBE50
thumb_func_start oei_ripples
oei_ripples: @ 80DBEF0
push {r4,lr}
ldr r0, _080DBF44 @ =gUnknown_83A0010
ldr r0, [r0, 0x14]
ldr r4, _080DBF48 @ =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 _080DBF3C
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DBF4C @ =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]
_080DBF3C:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DBF44: .4byte gUnknown_83A0010
_080DBF48: .4byte gFieldEffectArguments
_080DBF4C: .4byte gSprites
thumb_func_end oei_ripples
thumb_func_start sub_80DBF50
sub_80DBF50: @ 80DBF50
push {r4-r6,lr}
ldr r6, _080DBFE4 @ =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
bl GetFieldObjectIdByLocalIdAndMap
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _080DBFE8 @ =gMapObjects
adds r5, r1, r0
ldr r0, _080DBFEC @ =gUnknown_83A0010
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 _080DBFDC
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r4, _080DBFF0 @ =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]
_080DBFDC:
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_080DBFE4: .4byte gFieldEffectArguments
_080DBFE8: .4byte gMapObjects
_080DBFEC: .4byte gUnknown_83A0010
_080DBFF0: .4byte gSprites
thumb_func_end sub_80DBF50
thumb_func_start sub_80DBFF4
sub_80DBFF4: @ 80DBFF4
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 TryGetFieldObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
bne _080DC02E
ldr r5, _080DC038 @ =gMapObjects
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 _080DC03C
_080DC02E:
adds r0, r4, 0
movs r1, 0x2A
bl FieldEffectStop
b _080DC080
.align 2, 0
_080DC038: .4byte gMapObjects
_080DC03C:
ldrb r0, [r1, 0x5]
bl GetFieldObjectGraphicsInfo
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, _080DC088 @ =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 sub_8068EB4
_080DC080:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DC088: .4byte gSprites
thumb_func_end sub_80DBFF4
thumb_func_start FldEff_Unknown19
FldEff_Unknown19: @ 80DC08C
push {r4,lr}
ldr r4, _080DC0EC @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8063BC4
ldr r0, _080DC0F0 @ =gUnknown_83A0010
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 _080DC0E4
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DC0F4 @ =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]
_080DC0E4:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DC0EC: .4byte gFieldEffectArguments
_080DC0F0: .4byte gUnknown_83A0010
_080DC0F4: .4byte gSprites
thumb_func_end FldEff_Unknown19
thumb_func_start FldEff_Unknown20
FldEff_Unknown20: @ 80DC0F8
push {r4,lr}
ldr r4, _080DC158 @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8063BC4
ldr r0, _080DC15C @ =gUnknown_83A0010
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 _080DC150
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DC160 @ =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]
_080DC150:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DC158: .4byte gFieldEffectArguments
_080DC15C: .4byte gUnknown_83A0010
_080DC160: .4byte gSprites
thumb_func_end FldEff_Unknown20
thumb_func_start FldEff_Unknown21
FldEff_Unknown21: @ 80DC164
push {r4,lr}
ldr r4, _080DC1C4 @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8063BC4
ldr r0, _080DC1C8 @ =gUnknown_83A0010
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 _080DC1BC
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DC1CC @ =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]
_080DC1BC:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DC1C4: .4byte gFieldEffectArguments
_080DC1C8: .4byte gUnknown_83A0010
_080DC1CC: .4byte gSprites
thumb_func_end FldEff_Unknown21
thumb_func_start FldEff_Unknown22
FldEff_Unknown22: @ 80DC1D0
push {r4,lr}
ldr r4, _080DC230 @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8063BC4
ldr r0, _080DC234 @ =gUnknown_83A0010
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 _080DC228
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DC238 @ =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]
_080DC228:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DC230: .4byte gFieldEffectArguments
_080DC234: .4byte gUnknown_83A0010
_080DC238: .4byte gSprites
thumb_func_end FldEff_Unknown22
thumb_func_start ash
ash: @ 80DC23C
push {r4,lr}
lsls r2, 16
lsrs r2, 16
ldr r4, _080DC26C @ =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
.align 2, 0
_080DC26C: .4byte gFieldEffectArguments
thumb_func_end ash
thumb_func_start oei_ash
oei_ash: @ 80DC270
push {r4,r5,lr}
sub sp, 0x4
ldr r5, _080DC2F0 @ =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_8063BC4
ldr r0, _080DC2F4 @ =gUnknown_83A0010
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 _080DC2E6
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DC2F8 @ =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]
_080DC2E6:
movs r0, 0
add sp, 0x4
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080DC2F0: .4byte gFieldEffectArguments
_080DC2F4: .4byte gUnknown_83A0010
_080DC2F8: .4byte gSprites
thumb_func_end oei_ash
thumb_func_start sub_80DC2FC
sub_80DC2FC: @ 80DC2FC
push {lr}
ldr r2, _080DC314 @ =gUnknown_83FECE8
movs r3, 0x2E
ldrsh r1, [r0, r3]
lsls r1, 2
adds r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_080DC314: .4byte gUnknown_83FECE8
thumb_func_end sub_80DC2FC
thumb_func_start sub_80DC318
sub_80DC318: @ 80DC318
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 _080DC342
movs r0, 0x1
strh r0, [r3, 0x2E]
_080DC342:
pop {r0}
bx r0
thumb_func_end sub_80DC318
thumb_func_start sub_80DC348
sub_80DC348: @ 80DC348
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, _080DC3A0 @ =gMapObjects
ldr r0, _080DC3A4 @ =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
.align 2, 0
_080DC3A0: .4byte gMapObjects
_080DC3A4: .4byte gPlayerAvatar
thumb_func_end sub_80DC348
thumb_func_start sub_80DC3A8
sub_80DC3A8: @ 80DC3A8
push {r4,lr}
adds r4, r0, 0
movs r1, 0
bl sub_8068EB4
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DC3C8
adds r0, r4, 0
movs r1, 0x7
bl FieldEffectStop
_080DC3C8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80DC3A8
thumb_func_start sub_80DC3D0
sub_80DC3D0: @ 80DC3D0
push {r4,r5,lr}
ldr r4, _080DC43C @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8063BC4
ldr r0, _080DC440 @ =gUnknown_83A0010
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 _080DC42C
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _080DC444 @ =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]
movs r2, 0
strh r0, [r1, 0x32]
strh r2, [r1, 0x34]
ldr r0, _080DC448 @ =0x0000ffff
strh r0, [r1, 0x3A]
movs r0, 0x1
negs r0, r0
strh r0, [r1, 0x3C]
_080DC42C:
movs r0, 0x8
bl FieldEffectActiveListRemove
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080DC43C: .4byte gFieldEffectArguments
_080DC440: .4byte gUnknown_83A0010
_080DC444: .4byte gSprites
_080DC448: .4byte 0x0000ffff
thumb_func_end sub_80DC3D0
thumb_func_start sub_80DC44C
sub_80DC44C: @ 80DC44C
lsls r0, 24
lsrs r0, 24
lsls r1, 24
ldr r3, _080DC474 @ =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
.align 2, 0
_080DC474: .4byte gSprites
thumb_func_end sub_80DC44C
thumb_func_start sub_80DC478
sub_80DC478: @ 80DC478
lsls r0, 24
lsrs r0, 24
lsls r1, 24
ldr r3, _080DC4A0 @ =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
.align 2, 0
_080DC4A0: .4byte gSprites
thumb_func_end sub_80DC478
thumb_func_start sub_80DC4A4
sub_80DC4A4: @ 80DC4A4
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
ldr r4, _080DC4D0 @ =gSprites
lsls r3, r0, 4
adds r3, r0
lsls r3, 2
adds r3, r4
ldrh r0, [r3, 0x2E]
ldr r4, _080DC4D4 @ =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
.align 2, 0
_080DC4D0: .4byte gSprites
_080DC4D4: .4byte 0xfffff0ff
thumb_func_end sub_80DC4A4
thumb_func_start sub_80DC4D8
sub_80DC4D8: @ 80DC4D8
ldrh r1, [r0, 0x2E]
movs r0, 0xF
ands r0, r1
bx lr
thumb_func_end sub_80DC4D8
thumb_func_start sub_80DC4E0
sub_80DC4E0: @ 80DC4E0
ldrh r1, [r0, 0x2E]
movs r0, 0xF0
ands r0, r1
lsrs r0, 4
bx lr
thumb_func_end sub_80DC4E0
thumb_func_start sub_80DC4EC
sub_80DC4EC: @ 80DC4EC
ldrh r1, [r0, 0x2E]
movs r0, 0xF0
lsls r0, 4
ands r0, r1
lsrs r0, 8
bx lr
thumb_func_end sub_80DC4EC
thumb_func_start sub_80DC4F8
sub_80DC4F8: @ 80DC4F8
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, _080DC548 @ =gMapObjects
adds r4, r0
ldrb r0, [r4, 0x4]
lsls r5, r0, 4
adds r5, r0
lsls r5, 2
ldr r0, _080DC54C @ =gSprites
adds r5, r0
adds r0, r4, 0
adds r1, r6, 0
bl sub_80DC550
adds r0, r4, 0
adds r1, r6, 0
bl sub_80DC588
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_80DC61C
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
.align 2, 0
_080DC548: .4byte gMapObjects
_080DC54C: .4byte gSprites
thumb_func_end sub_80DC4F8
thumb_func_start sub_80DC550
sub_80DC550: @ 80DC550
push {r4,r5,lr}
sub sp, 0x8
adds r5, r0, 0
adds r4, r1, 0
ldr r1, _080DC584 @ =gUnknown_83FECF4
mov r0, sp
movs r2, 0x5
bl memcpy
adds r0, r4, 0
bl sub_80DC4E0
lsls r0, 24
cmp r0, 0
bne _080DC57C
ldrb r0, [r5, 0x18]
lsrs r0, 4
add r0, sp
ldrb r1, [r0]
adds r0, r4, 0
bl StartSpriteAnimIfDifferent
_080DC57C:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DC584: .4byte gUnknown_83FECF4
thumb_func_end sub_80DC550
thumb_func_start sub_80DC588
sub_80DC588: @ 80DC588
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 _080DC610
mov r0, sp
movs r5, 0
ldrsh r2, [r0, r5]
movs r5, 0x3A
ldrsh r0, [r4, r5]
cmp r2, r0
bne _080DC5C4
lsls r0, r1, 16
asrs r0, 16
movs r5, 0x3C
ldrsh r1, [r4, r5]
cmp r0, r1
beq _080DC610
_080DC5C4:
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
_080DC5D6:
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 _080DC5FC
ldrh r0, [r4, 0x38]
adds r0, 0x1
strh r0, [r4, 0x38]
b _080DC610
_080DC5FC:
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 _080DC5D6
_080DC610:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80DC588
thumb_func_start sub_80DC61C
sub_80DC61C: @ 80DC61C
push {r4,r5,lr}
sub sp, 0x4
adds r5, r1, 0
adds r4, r2, 0
ldr r1, _080DC680 @ =gUnknown_83FECFA
mov r0, sp
movs r2, 0x4
bl memcpy
adds r0, r4, 0
bl sub_80DC4D8
lsls r0, 24
lsrs r0, 24
adds r2, r0, 0
cmp r2, 0
beq _080DC6A6
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 _080DC65C
ldrh r0, [r4, 0x34]
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
_080DC65C:
ldrh r1, [r4, 0x36]
movs r0, 0x1F
ands r0, r1
cmp r0, 0
bne _080DC66C
ldrh r0, [r4, 0x34]
negs r0, r0
strh r0, [r4, 0x34]
_080DC66C:
cmp r2, 0x2
beq _080DC6A6
adds r0, r4, 0
bl sub_80DC4EC
lsls r0, 24
cmp r0, 0
bne _080DC684
ldrh r0, [r4, 0x26]
b _080DC68A
.align 2, 0
_080DC680: .4byte gUnknown_83FECFA
_080DC684:
ldrh r0, [r4, 0x26]
ldrh r3, [r4, 0x30]
adds r0, r3
_080DC68A:
strh r0, [r5, 0x26]
adds r0, r4, 0
adds r0, 0x2B
ldrb r0, [r0]
cmp r0, 0
beq _080DC69C
ldrh r0, [r5, 0x26]
adds r0, 0x1
strh r0, [r5, 0x26]
_080DC69C:
ldrh r0, [r5, 0x20]
strh r0, [r4, 0x20]
ldrh r0, [r5, 0x22]
adds r0, 0x8
strh r0, [r4, 0x22]
_080DC6A6:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80DC61C
thumb_func_start sub_80DC6B0
sub_80DC6B0: @ 80DC6B0
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _080DC6F4 @ =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, _080DC6F8 @ =gSprites
adds r2, r1
ldr r1, _080DC6FC @ =sub_80DC700
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
.align 2, 0
_080DC6F4: .4byte gDummySpriteTemplate
_080DC6F8: .4byte gSprites
_080DC6FC: .4byte sub_80DC700
thumb_func_end sub_80DC6B0
thumb_func_start sub_80DC700
sub_80DC700: @ 80DC700
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, _080DC73C @ =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 _080DC728
ldrh r0, [r2, 0x30]
ldrh r1, [r3, 0x26]
adds r0, r1
strh r0, [r3, 0x26]
_080DC728:
ldrh r1, [r2, 0x32]
movs r0, 0xF
ands r0, r1
cmp r0, 0
bne _080DC738
ldrh r0, [r2, 0x30]
negs r0, r0
strh r0, [r2, 0x30]
_080DC738:
pop {r0}
bx r0
.align 2, 0
_080DC73C: .4byte gSprites
thumb_func_end sub_80DC700
thumb_func_start FldEff_Dust
FldEff_Dust: @ 80DC740
push {r4,lr}
ldr r4, _080DC7A4 @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0xC
bl sub_8063BC4
ldr r0, _080DC7A8 @ =gUnknown_83A0010
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 _080DC79C
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DC7AC @ =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]
_080DC79C:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DC7A4: .4byte gFieldEffectArguments
_080DC7A8: .4byte gUnknown_83A0010
_080DC7AC: .4byte gSprites
thumb_func_end FldEff_Dust
thumb_func_start FldEff_SandPile
FldEff_SandPile: @ 80DC7B0
push {r4-r7,lr}
ldr r7, _080DC85C @ =gFieldEffectArguments
ldrb r0, [r7]
ldrb r1, [r7, 0x4]
ldrb r2, [r7, 0x8]
bl GetFieldObjectIdByLocalIdAndMap
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _080DC860 @ =gMapObjects
adds r6, r1, r0
ldr r0, _080DC864 @ =gUnknown_83A0010
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 _080DC854
ldrb r0, [r6, 0x5]
bl GetFieldObjectGraphicsInfo
adds r5, r0, 0
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
ldr r4, _080DC868 @ =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
_080DC854:
movs r0, 0
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080DC85C: .4byte gFieldEffectArguments
_080DC860: .4byte gMapObjects
_080DC864: .4byte gUnknown_83A0010
_080DC868: .4byte gSprites
thumb_func_end FldEff_SandPile
thumb_func_start sub_80DC86C
sub_80DC86C: @ 80DC86C
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 TryGetFieldObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
bne _080DC8A6
ldr r2, _080DC8B0 @ =gMapObjects
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 _080DC8B4
_080DC8A6:
adds r0, r4, 0
movs r1, 0x27
bl FieldEffectStop
b _080DC926
.align 2, 0
_080DC8B0: .4byte gMapObjects
_080DC8B4:
ldr r2, _080DC930 @ =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 _080DC8DC
lsls r0, r5, 16
asrs r0, 16
movs r2, 0x36
ldrsh r1, [r4, r2]
cmp r0, r1
beq _080DC8F6
_080DC8DC:
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 _080DC8F6
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
_080DC8F6:
strh r6, [r4, 0x20]
strh r5, [r4, 0x22]
ldr r3, _080DC930 @ =gSprites
ldr r2, _080DC934 @ =gMapObjects
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 sub_8068EB4
_080DC926:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DC930: .4byte gSprites
_080DC934: .4byte gMapObjects
thumb_func_end sub_80DC86C
thumb_func_start FldEff_Bubbles
FldEff_Bubbles: @ 80DC938
push {r4,lr}
ldr r4, _080DC990 @ =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0
bl sub_8063BC4
ldr r0, _080DC994 @ =gUnknown_83A0010
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 _080DC988
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _080DC998 @ =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]
_080DC988:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DC990: .4byte gFieldEffectArguments
_080DC994: .4byte gUnknown_83A0010
_080DC998: .4byte gSprites
thumb_func_end FldEff_Bubbles
thumb_func_start sub_80DC99C
sub_80DC99C: @ 80DC99C
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 sub_8068EB4
ldrh r1, [r4, 0x3E]
ldr r0, _080DC9D8 @ =0x00001004
ands r0, r1
cmp r0, 0
beq _080DC9D0
adds r0, r4, 0
movs r1, 0x35
bl FieldEffectStop
_080DC9D0:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DC9D8: .4byte 0x00001004
thumb_func_end sub_80DC99C
thumb_func_start sub_80DC9DC
sub_80DC9DC: @ 80DC9DC
movs r0, 0
bx lr
thumb_func_end sub_80DC9DC
thumb_func_start ShowTreeDisguiseFieldEffect
ShowTreeDisguiseFieldEffect: @ 80DC9E0
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
ShowMountainDisguiseFieldEffect: @ 80DC9F0
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
ShowSandDisguiseFieldEffect: @ 80DCA00
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
ShowDisguiseFieldEffect: @ 80DCA10
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, _080DCA44 @ =gFieldEffectArguments
ldrb r0, [r5]
ldrb r1, [r5, 0x4]
ldrb r2, [r5, 0x8]
mov r3, sp
bl TryGetFieldObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
beq _080DCA48
adds r0, r4, 0
bl FieldEffectActiveListRemove
movs r0, 0x40
b _080DCAB4
.align 2, 0
_080DCA44: .4byte gFieldEffectArguments
_080DCA48:
ldr r1, _080DCAC0 @ =gUnknown_83A0010
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 _080DCAB0
mov r0, sp
ldrb r0, [r0]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080DCAC4 @ =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]
_080DCAB0:
mov r0, sp
ldrb r0, [r0]
_080DCAB4:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080DCAC0: .4byte gUnknown_83A0010
_080DCAC4: .4byte gSprites
thumb_func_end ShowDisguiseFieldEffect
thumb_func_start sub_80DCAC8
sub_80DCAC8: @ 80DCAC8
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 TryGetFieldObjectIdByLocalIdAndMap
lsls r0, 24
cmp r0, 0
beq _080DCAF8
ldrh r1, [r5, 0x30]
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
bl FieldEffectStop
_080DCAF8:
ldr r4, _080DCBB0 @ =gMapObjects
mov r0, sp
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r0, [r0, 0x5]
bl GetFieldObjectGraphicsInfo
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, _080DCBB4 @ =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 _080DCB78
adds r0, r1, 0x1
strh r0, [r5, 0x2E]
adds r0, r5, 0
movs r1, 0x1
bl StartSpriteAnim
_080DCB78:
movs r3, 0x2E
ldrsh r0, [r5, r3]
ldrh r2, [r5, 0x2E]
cmp r0, 0x2
bne _080DCB94
adds r0, r5, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DCB94
movs r0, 0x1
strh r0, [r5, 0x3C]
_080DCB94:
lsls r0, r2, 16
asrs r0, 16
cmp r0, 0x3
bne _080DCBA8
ldrh r1, [r5, 0x30]
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
bl FieldEffectStop
_080DCBA8:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DCBB0: .4byte gMapObjects
_080DCBB4: .4byte gSprites
thumb_func_end sub_80DCAC8
thumb_func_start sub_80DCBB8
sub_80DCBB8: @ 80DCBB8
push {lr}
adds r1, r0, 0
adds r0, 0x21
ldrb r0, [r0]
cmp r0, 0x1
bne _080DCBD6
ldr r2, _080DCBDC @ =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]
_080DCBD6:
pop {r0}
bx r0
.align 2, 0
_080DCBDC: .4byte gSprites
thumb_func_end sub_80DCBB8
thumb_func_start sub_80DCBE0
sub_80DCBE0: @ 80DCBE0
push {lr}
adds r2, r0, 0
adds r2, 0x21
ldrb r1, [r2]
cmp r1, 0x2
beq _080DCC16
cmp r1, 0
beq _080DCC16
ldrb r1, [r0, 0x1A]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DCC08 @ =gSprites
adds r1, r0, r1
movs r3, 0x3C
ldrsh r0, [r1, r3]
cmp r0, 0
bne _080DCC0C
movs r0, 0
b _080DCC18
.align 2, 0
_080DCC08: .4byte gSprites
_080DCC0C:
movs r0, 0x2
strb r0, [r2]
ldrh r0, [r1, 0x2E]
adds r0, 0x1
strh r0, [r1, 0x2E]
_080DCC16:
movs r0, 0x1
_080DCC18:
pop {r1}
bx r1
thumb_func_end sub_80DCBE0
thumb_func_start FldEff_Sparkle
FldEff_Sparkle: @ 80DCC1C
push {r4,lr}
ldr r4, _080DCC84 @ =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_8063BC4
ldr r0, _080DCC88 @ =gUnknown_83A0010
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 _080DCC7C
ldr r0, _080DCC8C @ =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]
_080DCC7C:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080DCC84: .4byte gFieldEffectArguments
_080DCC88: .4byte gUnknown_83A0010
_080DCC8C: .4byte gSprites
thumb_func_end FldEff_Sparkle
thumb_func_start sub_80DCC90
sub_80DCC90: @ 80DCC90
push {lr}
adds r2, r0, 0
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0
bne _080DCCC4
adds r0, r2, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DCCBC
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]
_080DCCBC:
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0
beq _080DCCDA
_080DCCC4:
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x22
ble _080DCCDA
adds r0, r2, 0
movs r1, 0x36
bl FieldEffectStop
_080DCCDA:
pop {r0}
bx r0
thumb_func_end sub_80DCC90
thumb_func_start sub_80DCCE0
sub_80DCCE0: @ 80DCCE0
push {r4,lr}
adds r4, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DCCFE
ldrh r1, [r4, 0x30]
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldEffectStop
b _080DCD14
_080DCCFE:
adds r0, r4, 0
movs r1, 0
bl sub_8068EB4
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r0, 24
adds r1, r4, 0
movs r2, 0
bl SetObjectSubpriorityByZCoord
_080DCD14:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80DCCE0
thumb_func_start sub_80DCD1C
sub_80DCD1C: @ 80DCD1C
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DCD3A
ldrh r1, [r2, 0x2E]
lsls r1, 24
lsrs r1, 24
adds r0, r2, 0
bl FieldEffectStop
b _080DCD42
_080DCD3A:
adds r0, r2, 0
movs r1, 0
bl sub_8068EB4
_080DCD42:
pop {r0}
bx r0
thumb_func_end sub_80DCD1C
thumb_func_start sub_80DCD48
sub_80DCD48: @ 80DCD48
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
_080DCD5E:
lsls r0, r7, 3
adds r0, r7
lsls r0, 2
ldr r1, _080DCDF8 @ =gMapObjects
adds r4, r0, r1
ldrb r0, [r4]
lsls r0, 31
cmp r0, 0
beq _080DCE00
ldrb r0, [r4, 0x5]
bl GetFieldObjectGraphicsInfo
ldrb r1, [r4, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DCDFC @ =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 _080DCE00
lsls r0, r4, 16
asrs r0, 16
cmp r0, r2
ble _080DCE00
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 _080DCDD8
cmp r2, r0
bge _080DCE00
_080DCDD8:
lsls r0, r4, 16
asrs r0, 16
cmp r0, r3
ble _080DCE00
adds r2, r6, 0
adds r2, 0x43
adds r0, r5, 0
adds r0, 0x43
ldrb r1, [r0]
ldrb r0, [r2]
cmp r0, r1
bhi _080DCE00
adds r0, r1, 0x2
strb r0, [r2]
b _080DCE0A
.align 2, 0
_080DCDF8: .4byte gMapObjects
_080DCDFC: .4byte gSprites
_080DCE00:
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0xF
bls _080DCD5E
_080DCE0A:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80DCD48
.align 2, 0 @ Don't pad with nop.