mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-07 06:35:48 -05:00
4309 lines
71 KiB
ArmAsm
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 @ =gCamera
|
|
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 gCamera
|
|
_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 @ =gCamera
|
|
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 gCamera
|
|
_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.
|