summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-10-17 13:23:03 -0700
committerYamaArashi <shadow962@live.com>2016-10-17 13:23:03 -0700
commitea286c2f47eb374db0235ae3ce6a1bc7c7954989 (patch)
treed26e7f26661f14a655a1e8d0c58e6f47324e9b91
parenteff8353bfc78cd6e58be53665f277a810e8fda77 (diff)
split out field_effect_helpers.s
-rw-r--r--Makefile3
-rw-r--r--asm/field_effect_helpers.s4349
-rw-r--r--asm/rom_81258BC.s4340
-rw-r--r--ld_script.txt1
4 files changed, 4352 insertions, 4341 deletions
diff --git a/Makefile b/Makefile
index d00a9899f..99bb8cec1 100644
--- a/Makefile
+++ b/Makefile
@@ -49,7 +49,8 @@ C_OBJS := $(C_SRCS:%.c=%.o)
ASM_OBJS := asm/crt0.o asm/rom3.o asm/rom_8040EB4.o asm/rom4.o asm/rom_8074BAC.o asm/rom5.o asm/rom5_part2.o asm/rom6.o\
asm/libgcnmultiboot.o asm/m4a_1.o asm/m4a_3.o asm/libagbsyscall.o \
asm/rom_8072DF8.o asm/rom_8065394.o asm/rom_803D1FC.o asm/rom_803BA2C.o \
-asm/rom_813BA94.o asm/rom_81258BC.o asm/mystery_event_script.o
+asm/rom_813BA94.o asm/rom_81258BC.o asm/mystery_event_script.o \
+asm/field_effect_helpers.o
DATA_ASM_OBJS := data/data2.o data/graphics.o data/sound_data.o \
data/event_scripts.o data/battle_anim_scripts.o \
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
new file mode 100644
index 000000000..bd268229c
--- /dev/null
+++ b/asm/field_effect_helpers.s
@@ -0,0 +1,4349 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start SetUpReflection
+SetUpReflection: @ 812680C
+ 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, _081268BC
+ adds r7, r1, r0
+ ldr r0, _081268C0
+ str r0, [r7, 0x1C]
+ ldrb r1, [r7, 0x5]
+ movs r0, 0xC
+ orrs r1, r0
+ strb r1, [r7, 0x5]
+ ldr r2, _081268C4
+ 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, _081268C8
+ str r0, [r7, 0x8]
+ adds r0, r7, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ ldr r0, _081268CC
+ 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 _081268B2
+ ldrb r0, [r7, 0x1]
+ movs r1, 0x4
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x1
+ orrs r1, r0
+ strb r1, [r7, 0x1]
+_081268B2:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081268BC: .4byte gSprites
+_081268C0: .4byte sub_81269E0
+_081268C4: .4byte gUnknown_0830FD14
+_081268C8: .4byte gDummySpriteAnimTable
+_081268CC: .4byte gDummySpriteAffineAnimTable
+ thumb_func_end SetUpReflection
+
+ thumb_func_start sub_81268D0
+sub_81268D0: @ 81268D0
+ 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_81268D0
+
+ thumb_func_start npc_pal_op
+npc_pal_op: @ 81268E4
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r1, _0812693C
+ 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 _08126940
+ ldrb r0, [r5, 0x1F]
+ bl sub_8057450
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _08126926
+ ldrb r0, [r5, 0x1E]
+ bl sub_8057450
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _08126940
+_08126926:
+ 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 _0812694A
+ .align 2, 0
+_0812693C: .4byte gUnknown_08401E2C
+_08126940:
+ ldrb r1, [r4, 0x5]
+ lsrs r1, 4
+ adds r0, r5, 0
+ bl npc_pal_op_B
+_0812694A:
+ 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: @ 8126954
+ 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, _08126980
+ cmp r1, r0
+ beq _081269A8
+ ldrb r0, [r2, 0xC]
+ movs r1, 0xF
+ ands r1, r0
+ cmp r1, 0
+ bne _08126984
+ ldrh r0, [r2, 0x2]
+ adds r1, r4, 0
+ bl npc_load_two_palettes__no_record
+ b _081269A2
+ .align 2, 0
+_08126980: .4byte 0x000011ff
+_08126984:
+ cmp r1, 0xA
+ bne _08126992
+ ldrh r0, [r2, 0x2]
+ adds r1, r4, 0
+ bl npc_load_two_palettes__and_record
+ b _081269A2
+_08126992:
+ adds r0, r4, 0
+ bl npc_paltag_by_palslot
+ lsls r0, 16
+ lsrs r0, 16
+ adds r1, r4, 0
+ bl pal_patch_for_npc
+_081269A2:
+ adds r0, r4, 0
+ bl sub_807D78C
+_081269A8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end npc_pal_op_B
+
+ thumb_func_start npc_pal_op_A
+npc_pal_op_A: @ 81269B0
+ 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, _081269DC
+ cmp r1, r0
+ beq _081269D4
+ adds r0, r1, 0
+ adds r1, r4, 0
+ bl pal_patch_for_npc
+ adds r0, r4, 0
+ bl sub_807D78C
+_081269D4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081269DC: .4byte 0x000011ff
+ thumb_func_end npc_pal_op_A
+
+ thumb_func_start sub_81269E0
+sub_81269E0: @ 81269E0
+ 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, _08126A28
+ adds r7, r0, r1
+ ldrb r1, [r7, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08126A2C
+ adds r5, r0, r1
+ ldr r0, [r7]
+ ldr r1, _08126A30
+ ands r0, r1
+ cmp r0, r1
+ bne _08126A18
+ ldrb r1, [r7, 0x8]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ beq _08126A34
+_08126A18:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ b _08126B3E
+ .align 2, 0
+_08126A28: .4byte gMapObjects
+_08126A2C: .4byte gSprites
+_08126A30: .4byte 0x00020001
+_08126A34:
+ ldr r1, _08126B4C
+ 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, _08126B50
+ 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_81268D0
+ 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 _08126B3E
+ 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 _08126B3E
+ movs r1, 0x2
+ adds r0, r2, 0
+ orrs r0, r1
+ strb r0, [r4, 0x3]
+_08126B3E:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08126B4C: .4byte gUnknown_0830FD14
+_08126B50: .4byte 0xfffffc00
+ thumb_func_end sub_81269E0
+
+ thumb_func_start sub_8126B54
+sub_8126B54: @ 8126B54
+ push {r4,lr}
+ ldr r0, _08126B9C
+ 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 _08126B92
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08126BA0
+ 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]
+_08126B92:
+ adds r0, r4, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08126B9C: .4byte gFieldEffectObjectTemplatePointers
+_08126BA0: .4byte gSprites
+ thumb_func_end sub_8126B54
+
+ thumb_func_start objid_set_invisible
+objid_set_invisible: @ 8126BA4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08126BC0
+ 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
+_08126BC0: .4byte gSprites
+ thumb_func_end objid_set_invisible
+
+ thumb_func_start sub_8126BC4
+sub_8126BC4: @ 8126BC4
+ 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, _08126C68
+ adds r2, r0, r1
+ adds r0, r2, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _08126C0E
+ movs r0, 0x2E
+ ldrsh r1, [r2, r0]
+ lsls r0, r7, 16
+ asrs r0, 16
+ cmp r1, r0
+ bne _08126C0E
+ movs r0, 0x30
+ ldrsh r1, [r2, r0]
+ lsls r0, r6, 16
+ asrs r0, 16
+ cmp r1, r0
+ beq _08126C5A
+_08126C0E:
+ 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_80603CC
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ ldr r1, _08126C68
+ 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
+_08126C5A:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08126C68: .4byte gSprites
+ thumb_func_end sub_8126BC4
+
+ thumb_func_start oei_shadow
+oei_shadow: @ 8126C6C
+ push {r4,r5,lr}
+ ldr r5, _08126CF8
+ ldrb r0, [r5]
+ ldrb r1, [r5, 0x4]
+ ldrb r2, [r5, 0x8]
+ bl GetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08126CFC
+ 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, _08126D00
+ ldr r1, _08126D04
+ 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 _08126CF0
+ ldr r0, _08126D08
+ 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, _08126D0C
+ 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]
+_08126CF0:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08126CF8: .4byte gUnknown_0202FF84
+_08126CFC: .4byte gMapObjects
+_08126D00: .4byte gFieldEffectObjectTemplatePointers
+_08126D04: .4byte gUnknown_08401E32
+_08126D08: .4byte gSprites
+_08126D0C: .4byte gUnknown_08401E36
+ thumb_func_end oei_shadow
+
+ thumb_func_start oamc_shadow
+oamc_shadow: @ 8126D10
+ 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 _08126D3E
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl FieldEffectStop
+ b _08126DC4
+_08126D3E:
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08126DCC
+ adds r4, r0, r1
+ ldrb r0, [r4, 0x4]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08126DD0
+ 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, _08126DD4
+ ands r0, r1
+ cmp r0, r1
+ bne _08126DBC
+ ldrb r0, [r4, 0x1E]
+ bl sub_8056E14
+ lsls r0, 24
+ cmp r0, 0
+ bne _08126DBC
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ cmp r0, 0
+ bne _08126DBC
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ cmp r0, 0
+ bne _08126DBC
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsReflective
+ lsls r0, 24
+ cmp r0, 0
+ bne _08126DBC
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsReflective
+ lsls r0, 24
+ cmp r0, 0
+ beq _08126DC4
+_08126DBC:
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl FieldEffectStop
+_08126DC4:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08126DCC: .4byte gMapObjects
+_08126DD0: .4byte gSprites
+_08126DD4: .4byte 0x00400001
+ thumb_func_end oamc_shadow
+
+ thumb_func_start oei_grass_normal
+oei_grass_normal: @ 8126DD8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r5, _08126E70
+ 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_8060470
+ ldr r0, _08126E74
+ 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 _08126E64
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08126E78
+ 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 _08126E64
+ adds r0, r3, 0
+ movs r1, 0x4
+ bl SeekSpriteAnim
+_08126E64:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08126E70: .4byte gUnknown_0202FF84
+_08126E74: .4byte gFieldEffectObjectTemplatePointers
+_08126E78: .4byte gSprites
+ thumb_func_end oei_grass_normal
+
+ thumb_func_start unc_grass_normal
+unc_grass_normal: @ 8126E7C
+ 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, _08126F24
+ ldrb r1, [r3]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08126EC6
+ ldr r2, _08126F28
+ movs r0, 0x5
+ ldrsb r0, [r2, r0]
+ cmp r0, r4
+ bne _08126EAC
+ movs r0, 0x4
+ ldrsb r0, [r2, r0]
+ cmp r0, r7
+ beq _08126EC6
+_08126EAC:
+ 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]
+_08126EC6:
+ 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 _08126F1A
+ adds r0, r6, 0
+ bl MetatileBehavior_IsTallGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _08126F1A
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _08126F2C
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08126F2C
+_08126F1A:
+ adds r0, r5, 0
+ movs r1, 0x4
+ bl FieldEffectStop
+ b _08126F70
+ .align 2, 0
+_08126F24: .4byte gUnknown_0202E844
+_08126F28: .4byte gSaveBlock1
+_08126F2C:
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08126F7C
+ adds r2, r0, r1
+ ldr r0, [r2, 0x10]
+ ldr r1, [r5, 0x30]
+ cmp r0, r1
+ beq _08126F4C
+ ldr r0, [r2, 0x14]
+ cmp r0, r1
+ beq _08126F4C
+ movs r0, 0x1
+ strh r0, [r5, 0x3C]
+_08126F4C:
+ movs r6, 0
+ adds r0, r5, 0
+ adds r0, 0x2B
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08126F5A
+ movs r6, 0x4
+_08126F5A:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_806487C
+ ldrh r1, [r5, 0x2E]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ adds r2, r6, 0
+ bl sub_812882C
+_08126F70:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08126F7C: .4byte gMapObjects
+ thumb_func_end unc_grass_normal
+
+ thumb_func_start sub_8126F80
+sub_8126F80: @ 8126F80
+ push {r4,lr}
+ ldr r4, _08126FE4
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0xC
+ bl sub_8060470
+ ldr r0, _08126FE8
+ 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 _08126FDC
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08126FEC
+ 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]
+_08126FDC:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08126FE4: .4byte gUnknown_0202FF84
+_08126FE8: .4byte gFieldEffectObjectTemplatePointers
+_08126FEC: .4byte gSprites
+ thumb_func_end sub_8126F80
+
+ thumb_func_start sub_8126FF0
+sub_8126FF0: @ 8126FF0
+ 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, _08127060
+ mov r8, r0
+ lsls r3, 16
+ asrs r3, 16
+ lsls r4, 16
+ asrs r4, 16
+_08127014:
+ 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 _08127068
+ ldr r1, [r2, 0x1C]
+ ldr r0, _08127064
+ cmp r1, r0
+ bne _08127068
+ movs r1, 0x30
+ ldrsh r0, [r2, r1]
+ cmp r3, r0
+ bne _08127068
+ movs r1, 0x32
+ ldrsh r0, [r2, r1]
+ cmp r4, r0
+ bne _08127068
+ ldrh r1, [r2, 0x34]
+ lsrs r0, r1, 8
+ cmp r12, r0
+ bne _08127068
+ movs r0, 0xFF
+ ands r0, r1
+ cmp r7, r0
+ bne _08127068
+ movs r1, 0x36
+ ldrsh r0, [r2, r1]
+ cmp r6, r0
+ bne _08127068
+ adds r0, r5, 0
+ b _08127074
+ .align 2, 0
+_08127060: .4byte gSprites
+_08127064: .4byte unc_grass_normal
+_08127068:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3F
+ bls _08127014
+ movs r0, 0x40
+_08127074:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8126FF0
+
+ thumb_func_start sub_8127080
+sub_8127080: @ 8127080
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r5, _0812711C
+ 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_8060470
+ ldr r0, _08127120
+ 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 _08127110
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08127124
+ 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 _08127110
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl SeekSpriteAnim
+_08127110:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0812711C: .4byte gUnknown_0202FF84
+_08127120: .4byte gFieldEffectObjectTemplatePointers
+_08127124: .4byte gSprites
+ thumb_func_end sub_8127080
+
+ thumb_func_start unc_grass_tall
+unc_grass_tall: @ 8127128
+ 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, _081271D0
+ ldrb r1, [r3]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08127172
+ ldr r2, _081271D4
+ movs r0, 0x5
+ ldrsb r0, [r2, r0]
+ cmp r0, r7
+ bne _08127158
+ movs r0, 0x4
+ ldrsb r0, [r2, r0]
+ cmp r0, r6
+ beq _08127172
+_08127158:
+ 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]
+_08127172:
+ 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 _081271C6
+ adds r0, r4, 0
+ bl MetatileBehavior_IsLongGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _081271C6
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _081271D8
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _081271D8
+_081271C6:
+ adds r0, r5, 0
+ movs r1, 0x11
+ bl FieldEffectStop
+ b _0812720E
+ .align 2, 0
+_081271D0: .4byte gUnknown_0202E844
+_081271D4: .4byte gSaveBlock1
+_081271D8:
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0812721C
+ adds r2, r0, r1
+ ldr r0, [r2, 0x10]
+ ldr r1, [r5, 0x30]
+ cmp r0, r1
+ beq _081271F8
+ ldr r0, [r2, 0x14]
+ cmp r0, r1
+ beq _081271F8
+ movs r0, 0x1
+ strh r0, [r5, 0x3C]
+_081271F8:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_806487C
+ ldrh r1, [r5, 0x2E]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ movs r2, 0
+ bl sub_812882C
+_0812720E:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812721C: .4byte gMapObjects
+ thumb_func_end unc_grass_tall
+
+ thumb_func_start sub_8127220
+sub_8127220: @ 8127220
+ push {r4,lr}
+ ldr r4, _08127284
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127288
+ 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 _0812727C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _0812728C
+ 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]
+_0812727C:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127284: .4byte gUnknown_0202FF84
+_08127288: .4byte gFieldEffectObjectTemplatePointers
+_0812728C: .4byte gSprites
+ thumb_func_end sub_8127220
+
+ thumb_func_start sub_8127290
+sub_8127290: @ 8127290
+ push {r4-r6,lr}
+ ldr r6, _08127324
+ 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, _08127328
+ adds r5, r1, r0
+ ldr r0, _0812732C
+ 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 _0812731C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r4, _08127330
+ 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]
+_0812731C:
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127324: .4byte gUnknown_0202FF84
+_08127328: .4byte gMapObjects
+_0812732C: .4byte gFieldEffectObjectTemplatePointers
+_08127330: .4byte gSprites
+ thumb_func_end sub_8127290
+
+ thumb_func_start sub_8127334
+sub_8127334: @ 8127334
+ 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 _08127372
+ ldr r5, _0812737C
+ 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 _08127380
+_08127372:
+ adds r0, r4, 0
+ movs r1, 0x29
+ bl FieldEffectStop
+ b _08127416
+ .align 2, 0
+_0812737C: .4byte gMapObjects
+_08127380:
+ 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, _08127424
+ 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 _081273BC
+ lsls r0, r5, 16
+ asrs r0, 16
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ beq _081273D6
+_081273BC:
+ 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 _081273D6
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAnim
+_081273D6:
+ 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_806487C
+_08127416:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127424: .4byte gSprites
+ thumb_func_end sub_8127334
+
+ thumb_func_start sub_8127428
+sub_8127428: @ 8127428
+ push {r4,lr}
+ ldr r4, _08127490
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127494
+ 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 _08127486
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08127498
+ 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
+_08127486:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127490: .4byte gUnknown_0202FF84
+_08127494: .4byte gFieldEffectObjectTemplatePointers
+_08127498: .4byte gSprites
+ thumb_func_end sub_8127428
+
+ thumb_func_start sub_812749C
+sub_812749C: @ 812749C
+ push {r4,r5,lr}
+ ldr r4, _08127504
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127508
+ 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 _081274FC
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0812750C
+ 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
+_081274FC:
+ adds r0, r5, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127504: .4byte gUnknown_0202FF84
+_08127508: .4byte gFieldEffectObjectTemplatePointers
+_0812750C: .4byte gSprites
+ thumb_func_end sub_812749C
+
+ thumb_func_start sub_8127510
+sub_8127510: @ 8127510
+ push {r4,r5,lr}
+ ldr r4, _08127578
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _0812757C
+ 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 _08127570
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08127580
+ 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
+_08127570:
+ adds r0, r5, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127578: .4byte gUnknown_0202FF84
+_0812757C: .4byte gFieldEffectObjectTemplatePointers
+_08127580: .4byte gSprites
+ thumb_func_end sub_8127510
+
+ thumb_func_start sub_8127584
+sub_8127584: @ 8127584
+ push {lr}
+ ldr r2, _0812759C
+ 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
+_0812759C: .4byte gUnknown_08401E40
+ thumb_func_end sub_8127584
+
+ thumb_func_start sub_81275A0
+sub_81275A0: @ 81275A0
+ 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 _081275B6
+ movs r0, 0x1
+ strh r0, [r1, 0x2E]
+_081275B6:
+ adds r0, r1, 0
+ movs r1, 0
+ bl sub_806487C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81275A0
+
+ thumb_func_start sub_81275C4
+sub_81275C4: @ 81275C4
+ 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_806487C
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x38
+ ble _08127608
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldEffectStop
+_08127608:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81275C4
+
+ thumb_func_start sub_8127610
+sub_8127610: @ 8127610
+ push {r4-r6,lr}
+ ldr r6, _081276A4
+ 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, _081276A8
+ adds r5, r1, r0
+ ldr r0, _081276AC
+ 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 _0812769A
+ ldrb r0, [r5, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ lsls r3, r4, 4
+ adds r3, r4
+ lsls r3, 2
+ ldr r4, _081276B0
+ adds r3, r4
+ movs r1, 0x3E
+ adds r1, r3
+ mov r12, r1
+ ldrb r1, [r1]
+ movs r2, 0x2
+ orrs r1, r2
+ mov r2, r12
+ strb r1, [r2]
+ ldrb r2, [r5, 0x4]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ ldrb r1, [r1, 0x5]
+ movs r2, 0xC
+ ands r2, r1
+ ldrb r4, [r3, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r4
+ orrs r1, r2
+ strb r1, [r3, 0x5]
+ ldr r1, [r6]
+ strh r1, [r3, 0x2E]
+ ldr r1, [r6, 0x4]
+ strh r1, [r3, 0x30]
+ ldr r1, [r6, 0x8]
+ strh r1, [r3, 0x32]
+ ldrh r0, [r0, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ subs r0, 0x4
+ strh r0, [r3, 0x26]
+ movs r0, 0x46
+ bl PlaySE
+_0812769A:
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081276A4: .4byte gUnknown_0202FF84
+_081276A8: .4byte gMapObjects
+_081276AC: .4byte gFieldEffectObjectTemplatePointers
+_081276B0: .4byte gSprites
+ thumb_func_end sub_8127610
+
+ thumb_func_start sub_81276B4
+sub_81276B4: @ 81276B4
+ 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 _081276E4
+ 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 _081276EE
+_081276E4:
+ adds r0, r4, 0
+ movs r1, 0xF
+ bl FieldEffectStop
+ b _0812772E
+_081276EE:
+ ldr r3, _08127738
+ ldr r2, _0812773C
+ 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_806487C
+_0812772E:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127738: .4byte gSprites
+_0812773C: .4byte gMapObjects
+ thumb_func_end sub_81276B4
+
+ thumb_func_start sub_8127740
+sub_8127740: @ 8127740
+ push {r4,lr}
+ ldr r4, _081277A4
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0xC
+ bl sub_8060470
+ ldr r0, _081277A8
+ 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 _0812779C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _081277AC
+ 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]
+_0812779C:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081277A4: .4byte gUnknown_0202FF84
+_081277A8: .4byte gFieldEffectObjectTemplatePointers
+_081277AC: .4byte gSprites
+ thumb_func_end sub_8127740
+
+ thumb_func_start oei_water_drop_tall
+oei_water_drop_tall: @ 81277B0
+ push {r4,lr}
+ ldr r4, _08127814
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127818
+ 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 _0812780C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _0812781C
+ 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]
+_0812780C:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127814: .4byte gUnknown_0202FF84
+_08127818: .4byte gFieldEffectObjectTemplatePointers
+_0812781C: .4byte gSprites
+ thumb_func_end oei_water_drop_tall
+
+ thumb_func_start sub_8127820
+sub_8127820: @ 8127820
+ push {r4-r7,lr}
+ ldr r7, _081278C0
+ 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, _081278C4
+ adds r6, r1, r0
+ ldr r0, _081278C8
+ 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 _081278B6
+ ldrb r0, [r6, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ adds r4, r0, 0
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ ldr r3, _081278CC
+ adds r0, r3
+ ldr r1, _081278D0
+ 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, _081278D4
+ 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
+_081278B6:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081278C0: .4byte gUnknown_0202FF84
+_081278C4: .4byte gMapObjects
+_081278C8: .4byte gFieldEffectObjectTemplatePointers
+_081278CC: .4byte gSprites
+_081278D0: .4byte sub_81278D8
+_081278D4: .4byte 0x0000ffff
+ thumb_func_end sub_8127820
+
+ thumb_func_start sub_81278D8
+sub_81278D8: @ 81278D8
+ 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 _08127912
+ ldr r2, _0812791C
+ 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 _08127920
+_08127912:
+ adds r0, r4, 0
+ movs r1, 0x22
+ bl FieldEffectStop
+ b _0812796A
+ .align 2, 0
+_0812791C: .4byte gMapObjects
+_08127920:
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08127974
+ 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_806487C
+ ldr r1, [r5, 0x10]
+ ldr r0, [r4, 0x34]
+ cmp r1, r0
+ beq _0812796A
+ 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 _0812796A
+ movs r0, 0x46
+ bl PlaySE
+_0812796A:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127974: .4byte gSprites
+ thumb_func_end sub_81278D8
+
+ thumb_func_start oei_ripples
+oei_ripples: @ 8127978
+ push {r4,lr}
+ ldr r0, _081279CC
+ ldr r0, [r0, 0x14]
+ ldr r4, _081279D0
+ 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 _081279C4
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _081279D4
+ 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]
+_081279C4:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081279CC: .4byte gFieldEffectObjectTemplatePointers
+_081279D0: .4byte gUnknown_0202FF84
+_081279D4: .4byte gSprites
+ thumb_func_end oei_ripples
+
+ thumb_func_start sub_81279D8
+sub_81279D8: @ 81279D8
+ push {r4-r6,lr}
+ ldr r6, _08127A6C
+ 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, _08127A70
+ adds r5, r1, r0
+ ldr r0, _08127A74
+ 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 _08127A64
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r4, _08127A78
+ 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]
+_08127A64:
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127A6C: .4byte gUnknown_0202FF84
+_08127A70: .4byte gMapObjects
+_08127A74: .4byte gFieldEffectObjectTemplatePointers
+_08127A78: .4byte gSprites
+ thumb_func_end sub_81279D8
+
+ thumb_func_start sub_8127A7C
+sub_8127A7C: @ 8127A7C
+ 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 _08127AB6
+ ldr r5, _08127AC0
+ 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 _08127AC4
+_08127AB6:
+ adds r0, r4, 0
+ movs r1, 0x2A
+ bl FieldEffectStop
+ b _08127B08
+ .align 2, 0
+_08127AC0: .4byte gMapObjects
+_08127AC4:
+ 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, _08127B10
+ 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_806487C
+_08127B08:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127B10: .4byte gSprites
+ thumb_func_end sub_8127A7C
+
+ thumb_func_start sub_8127B14
+sub_8127B14: @ 8127B14
+ push {r4,lr}
+ ldr r4, _08127B74
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127B78
+ 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 _08127B6C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08127B7C
+ 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]
+_08127B6C:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127B74: .4byte gUnknown_0202FF84
+_08127B78: .4byte gFieldEffectObjectTemplatePointers
+_08127B7C: .4byte gSprites
+ thumb_func_end sub_8127B14
+
+ thumb_func_start sub_8127B80
+sub_8127B80: @ 8127B80
+ push {r4,lr}
+ ldr r4, _08127BE0
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127BE4
+ 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 _08127BD8
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08127BE8
+ 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]
+_08127BD8:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127BE0: .4byte gUnknown_0202FF84
+_08127BE4: .4byte gFieldEffectObjectTemplatePointers
+_08127BE8: .4byte gSprites
+ thumb_func_end sub_8127B80
+
+ thumb_func_start sub_8127BEC
+sub_8127BEC: @ 8127BEC
+ push {r4,lr}
+ ldr r4, _08127C4C
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127C50
+ 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 _08127C44
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08127C54
+ 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]
+_08127C44:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127C4C: .4byte gUnknown_0202FF84
+_08127C50: .4byte gFieldEffectObjectTemplatePointers
+_08127C54: .4byte gSprites
+ thumb_func_end sub_8127BEC
+
+ thumb_func_start sub_8127C58
+sub_8127C58: @ 8127C58
+ push {r4,lr}
+ ldr r4, _08127CB8
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127CBC
+ 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 _08127CB0
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08127CC0
+ 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]
+_08127CB0:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127CB8: .4byte gUnknown_0202FF84
+_08127CBC: .4byte gFieldEffectObjectTemplatePointers
+_08127CC0: .4byte gSprites
+ thumb_func_end sub_8127C58
+
+ thumb_func_start ash
+ash: @ 8127CC4
+ push {r4,lr}
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r4, _08127CF4
+ 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
+_08127CF4: .4byte gUnknown_0202FF84
+ thumb_func_end ash
+
+ thumb_func_start oei_ash
+oei_ash: @ 8127CF8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r5, _08127D78
+ 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_8060470
+ ldr r0, _08127D7C
+ 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 _08127D6E
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08127D80
+ 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]
+_08127D6E:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127D78: .4byte gUnknown_0202FF84
+_08127D7C: .4byte gFieldEffectObjectTemplatePointers
+_08127D80: .4byte gSprites
+ thumb_func_end oei_ash
+
+ thumb_func_start sub_8127D84
+sub_8127D84: @ 8127D84
+ push {lr}
+ ldr r2, _08127D9C
+ 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
+_08127D9C: .4byte gUnknown_08401E48
+ thumb_func_end sub_8127D84
+
+ thumb_func_start sub_8127DA0
+sub_8127DA0: @ 8127DA0
+ 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 _08127DCA
+ movs r0, 0x1
+ strh r0, [r3, 0x2E]
+_08127DCA:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8127DA0
+
+ thumb_func_start sub_8127DD0
+sub_8127DD0: @ 8127DD0
+ 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, _08127E28
+ ldr r0, _08127E2C
+ 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
+_08127E28: .4byte gMapObjects
+_08127E2C: .4byte gPlayerAvatar
+ thumb_func_end sub_8127DD0
+
+ thumb_func_start sub_8127E30
+sub_8127E30: @ 8127E30
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_806487C
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08127E50
+ adds r0, r4, 0
+ movs r1, 0x7
+ bl FieldEffectStop
+_08127E50:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8127E30
+
+ thumb_func_start sub_8127E58
+sub_8127E58: @ 8127E58
+ push {r4,r5,lr}
+ ldr r4, _08127EC0
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127EC4
+ 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 _08127EB2
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08127EC8
+ adds r1, r0
+ adds r3, r1, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r2, 0x2
+ orrs r0, r2
+ strb r0, [r3]
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xF
+ ands r0, r2
+ strb r0, [r1, 0x5]
+ ldr r0, [r4, 0x8]
+ strh r0, [r1, 0x32]
+ ldr r0, _08127ECC
+ strh r0, [r1, 0x34]
+ movs r0, 0x1
+ negs r0, r0
+ strh r0, [r1, 0x3A]
+ strh r0, [r1, 0x3C]
+_08127EB2:
+ movs r0, 0x8
+ bl FieldEffectActiveListRemove
+ adds r0, r5, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127EC0: .4byte gUnknown_0202FF84
+_08127EC4: .4byte gFieldEffectObjectTemplatePointers
+_08127EC8: .4byte gSprites
+_08127ECC: .4byte 0x0000ffff
+ thumb_func_end sub_8127E58
+
+ thumb_func_start sub_8127ED0
+sub_8127ED0: @ 8127ED0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ ldr r3, _08127EF8
+ 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
+_08127EF8: .4byte gSprites
+ thumb_func_end sub_8127ED0
+
+ thumb_func_start sub_8127EFC
+sub_8127EFC: @ 8127EFC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ ldr r3, _08127F24
+ 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
+_08127F24: .4byte gSprites
+ thumb_func_end sub_8127EFC
+
+ thumb_func_start sub_8127F28
+sub_8127F28: @ 8127F28
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ ldr r4, _08127F54
+ lsls r3, r0, 4
+ adds r3, r0
+ lsls r3, 2
+ adds r3, r4
+ ldrh r0, [r3, 0x2E]
+ ldr r4, _08127F58
+ 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
+_08127F54: .4byte gSprites
+_08127F58: .4byte 0xfffff0ff
+ thumb_func_end sub_8127F28
+
+ thumb_func_start sub_8127F5C
+sub_8127F5C: @ 8127F5C
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0xF
+ ands r0, r1
+ bx lr
+ thumb_func_end sub_8127F5C
+
+ thumb_func_start sub_8127F64
+sub_8127F64: @ 8127F64
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0xF0
+ ands r0, r1
+ lsrs r0, 4
+ bx lr
+ thumb_func_end sub_8127F64
+
+ thumb_func_start sub_8127F70
+sub_8127F70: @ 8127F70
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0xF0
+ lsls r0, 4
+ ands r0, r1
+ lsrs r0, 8
+ bx lr
+ thumb_func_end sub_8127F70
+
+ thumb_func_start sub_8127F7C
+sub_8127F7C: @ 8127F7C
+ 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, _08127FCC
+ adds r4, r0
+ ldrb r0, [r4, 0x4]
+ lsls r5, r0, 4
+ adds r5, r0
+ lsls r5, 2
+ ldr r0, _08127FD0
+ adds r5, r0
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl sub_8127FD4
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl sub_812800C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl sub_81280A0
+ 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
+_08127FCC: .4byte gMapObjects
+_08127FD0: .4byte gSprites
+ thumb_func_end sub_8127F7C
+
+ thumb_func_start sub_8127FD4
+sub_8127FD4: @ 8127FD4
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r1, _08128008
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ adds r0, r4, 0
+ bl sub_8127F64
+ lsls r0, 24
+ cmp r0, 0
+ bne _08128000
+ ldrb r0, [r5, 0x18]
+ lsrs r0, 4
+ add r0, sp
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl StartSpriteAnimIfDifferent
+_08128000:
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08128008: .4byte gUnknown_08401E54
+ thumb_func_end sub_8127FD4
+
+ thumb_func_start sub_812800C
+sub_812800C: @ 812800C
+ 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 _08128094
+ mov r0, sp
+ movs r5, 0
+ ldrsh r2, [r0, r5]
+ movs r5, 0x3A
+ ldrsh r0, [r4, r5]
+ cmp r2, r0
+ bne _08128048
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r5, 0x3C
+ ldrsh r1, [r4, r5]
+ cmp r0, r1
+ beq _08128094
+_08128048:
+ 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
+_0812805A:
+ 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 _08128080
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ b _08128094
+_08128080:
+ 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 _0812805A
+_08128094:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812800C
+
+ thumb_func_start sub_81280A0
+sub_81280A0: @ 81280A0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r1, 0
+ adds r4, r2, 0
+ ldr r1, _08128104
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ bl sub_8127F5C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r0, 0
+ cmp r2, 0
+ beq _0812811A
+ 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 _081280E0
+ ldrh r0, [r4, 0x34]
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+_081280E0:
+ ldrh r1, [r4, 0x36]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ bne _081280F0
+ ldrh r0, [r4, 0x34]
+ negs r0, r0
+ strh r0, [r4, 0x34]
+_081280F0:
+ cmp r2, 0x2
+ beq _0812811A
+ adds r0, r4, 0
+ bl sub_8127F70
+ lsls r0, 24
+ cmp r0, 0
+ bne _08128108
+ ldrh r0, [r4, 0x26]
+ b _0812810E
+ .align 2, 0
+_08128104: .4byte gUnknown_08401E5A
+_08128108:
+ ldrh r0, [r4, 0x26]
+ ldrh r3, [r4, 0x30]
+ adds r0, r3
+_0812810E:
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r5, 0x22]
+ adds r0, 0x8
+ strh r0, [r4, 0x22]
+_0812811A:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81280A0
+
+ thumb_func_start sub_8128124
+sub_8128124: @ 8128124
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _08128168
+ 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, _0812816C
+ adds r2, r1
+ ldr r1, _08128170
+ 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
+_08128168: .4byte gDummySpriteTemplate
+_0812816C: .4byte gSprites
+_08128170: .4byte sub_8128174
+ thumb_func_end sub_8128124
+
+ thumb_func_start sub_8128174
+sub_8128174: @ 8128174
+ 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, _081281B0
+ 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 _0812819C
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r3, 0x26]
+ adds r0, r1
+ strh r0, [r3, 0x26]
+_0812819C:
+ ldrh r1, [r2, 0x32]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ bne _081281AC
+ ldrh r0, [r2, 0x30]
+ negs r0, r0
+ strh r0, [r2, 0x30]
+_081281AC:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081281B0: .4byte gSprites
+ thumb_func_end sub_8128174
+
+ thumb_func_start sub_81281B4
+sub_81281B4: @ 81281B4
+ push {r4,lr}
+ ldr r4, _08128218
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0xC
+ bl sub_8060470
+ ldr r0, _0812821C
+ 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 _08128210
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08128220
+ 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]
+_08128210:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08128218: .4byte gUnknown_0202FF84
+_0812821C: .4byte gFieldEffectObjectTemplatePointers
+_08128220: .4byte gSprites
+ thumb_func_end sub_81281B4
+
+ thumb_func_start sub_8128224
+sub_8128224: @ 8128224
+ push {r4-r7,lr}
+ ldr r7, _081282D0
+ 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, _081282D4
+ adds r6, r1, r0
+ ldr r0, _081282D8
+ 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 _081282C8
+ ldrb r0, [r6, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ adds r5, r0, 0
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ ldr r4, _081282DC
+ 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
+_081282C8:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081282D0: .4byte gUnknown_0202FF84
+_081282D4: .4byte gMapObjects
+_081282D8: .4byte gFieldEffectObjectTemplatePointers
+_081282DC: .4byte gSprites
+ thumb_func_end sub_8128224
+
+ thumb_func_start sub_81282E0
+sub_81282E0: @ 81282E0
+ 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 _0812831A
+ ldr r2, _08128324
+ 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 _08128328
+_0812831A:
+ adds r0, r4, 0
+ movs r1, 0x27
+ bl FieldEffectStop
+ b _0812839A
+ .align 2, 0
+_08128324: .4byte gMapObjects
+_08128328:
+ ldr r2, _081283A4
+ 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 _08128350
+ lsls r0, r5, 16
+ asrs r0, 16
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ beq _0812836A
+_08128350:
+ 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 _0812836A
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAnim
+_0812836A:
+ strh r6, [r4, 0x20]
+ strh r5, [r4, 0x22]
+ ldr r3, _081283A4
+ ldr r2, _081283A8
+ 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_806487C
+_0812839A:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081283A4: .4byte gSprites
+_081283A8: .4byte gMapObjects
+ thumb_func_end sub_81282E0
+
+ thumb_func_start sub_81283AC
+sub_81283AC: @ 81283AC
+ push {r4,lr}
+ ldr r4, _08128404
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0
+ bl sub_8060470
+ ldr r0, _08128408
+ 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 _081283FC
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _0812840C
+ 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]
+_081283FC:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08128404: .4byte gUnknown_0202FF84
+_08128408: .4byte gFieldEffectObjectTemplatePointers
+_0812840C: .4byte gSprites
+ thumb_func_end sub_81283AC
+
+ thumb_func_start sub_8128410
+sub_8128410: @ 8128410
+ 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_806487C
+ ldrh r1, [r4, 0x3E]
+ ldr r0, _0812844C
+ ands r0, r1
+ cmp r0, 0
+ beq _08128444
+ adds r0, r4, 0
+ movs r1, 0x35
+ bl FieldEffectStop
+_08128444:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812844C: .4byte 0x00001004
+ thumb_func_end sub_8128410
+
+ thumb_func_start sub_8128450
+sub_8128450: @ 8128450
+ push {r4,lr}
+ ldr r4, _081284B8
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x4
+ bl sub_8060470
+ ldr r0, _081284BC
+ ldr r0, [r0, 0x58]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r4, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _081284B0
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _081284C0
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ movs r1, 0xF
+ ands r0, r1
+ movs r1, 0x50
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ movs r0, 0x17
+ strh r0, [r2, 0x2E]
+_081284B0:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081284B8: .4byte gUnknown_0202FF84
+_081284BC: .4byte gFieldEffectObjectTemplatePointers
+_081284C0: .4byte gSprites
+ thumb_func_end sub_8128450
+
+ thumb_func_start ShowTreeDisguiseFieldEffect
+ShowTreeDisguiseFieldEffect: @ 81284C4
+ 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: @ 81284D4
+ 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: @ 81284E4
+ 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: @ 81284F4
+ 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, _08128528
+ ldrb r0, [r5]
+ ldrb r1, [r5, 0x4]
+ ldrb r2, [r5, 0x8]
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812852C
+ adds r0, r4, 0
+ bl FieldEffectActiveListRemove
+ movs r0, 0x40
+ b _08128598
+ .align 2, 0
+_08128528: .4byte gUnknown_0202FF84
+_0812852C:
+ ldr r1, _081285A4
+ 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 _08128594
+ mov r0, sp
+ ldrb r0, [r0]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _081285A8
+ 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]
+_08128594:
+ mov r0, sp
+ ldrb r0, [r0]
+_08128598:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081285A4: .4byte gFieldEffectObjectTemplatePointers
+_081285A8: .4byte gSprites
+ thumb_func_end ShowDisguiseFieldEffect
+
+ thumb_func_start sub_81285AC
+sub_81285AC: @ 81285AC
+ 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 _081285DC
+ ldrh r1, [r5, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl FieldEffectStop
+_081285DC:
+ ldr r4, _08128694
+ 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, _08128698
+ 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 _0812865C
+ adds r0, r1, 0x1
+ strh r0, [r5, 0x2E]
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+_0812865C:
+ movs r3, 0x2E
+ ldrsh r0, [r5, r3]
+ ldrh r2, [r5, 0x2E]
+ cmp r0, 0x2
+ bne _08128678
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08128678
+ movs r0, 0x1
+ strh r0, [r5, 0x3C]
+_08128678:
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _0812868C
+ ldrh r1, [r5, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl FieldEffectStop
+_0812868C:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08128694: .4byte gMapObjects
+_08128698: .4byte gSprites
+ thumb_func_end sub_81285AC
+
+ thumb_func_start sub_812869C
+sub_812869C: @ 812869C
+ push {lr}
+ adds r1, r0, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _081286BA
+ ldr r2, _081286C0
+ 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]
+_081286BA:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081286C0: .4byte gSprites
+ thumb_func_end sub_812869C
+
+ thumb_func_start sub_81286C4
+sub_81286C4: @ 81286C4
+ push {lr}
+ adds r2, r0, 0
+ adds r2, 0x21
+ ldrb r1, [r2]
+ cmp r1, 0x2
+ beq _081286FA
+ cmp r1, 0
+ beq _081286FA
+ ldrb r1, [r0, 0x1A]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _081286EC
+ adds r1, r0, r1
+ movs r3, 0x3C
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _081286F0
+ movs r0, 0
+ b _081286FC
+ .align 2, 0
+_081286EC: .4byte gSprites
+_081286F0:
+ movs r0, 0x2
+ strb r0, [r2]
+ ldrh r0, [r1, 0x2E]
+ adds r0, 0x1
+ strh r0, [r1, 0x2E]
+_081286FA:
+ movs r0, 0x1
+_081286FC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81286C4
+
+ thumb_func_start sub_8128700
+sub_8128700: @ 8128700
+ push {r4,lr}
+ ldr r4, _08128768
+ 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_8060470
+ ldr r0, _0812876C
+ 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 _08128760
+ ldr r0, _08128770
+ 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]
+_08128760:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08128768: .4byte gUnknown_0202FF84
+_0812876C: .4byte gFieldEffectObjectTemplatePointers
+_08128770: .4byte gSprites
+ thumb_func_end sub_8128700
+
+ thumb_func_start sub_8128774
+sub_8128774: @ 8128774
+ push {lr}
+ adds r2, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bne _081287A8
+ adds r0, r2, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _081287A0
+ 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]
+_081287A0:
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ beq _081287BE
+_081287A8:
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x22
+ ble _081287BE
+ adds r0, r2, 0
+ movs r1, 0x36
+ bl FieldEffectStop
+_081287BE:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8128774
+
+ thumb_func_start sub_81287C4
+sub_81287C4: @ 81287C4
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _081287E2
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldEffectStop
+ b _081287F8
+_081287E2:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_806487C
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetObjectSubpriorityByZCoord
+_081287F8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81287C4
+
+ thumb_func_start sub_8128800
+sub_8128800: @ 8128800
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0812881E
+ ldrh r1, [r2, 0x2E]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r2, 0
+ bl FieldEffectStop
+ b _08128826
+_0812881E:
+ adds r0, r2, 0
+ movs r1, 0
+ bl sub_806487C
+_08128826:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8128800
+
+ thumb_func_start sub_812882C
+sub_812882C: @ 812882C
+ 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
+_08128842:
+ lsls r0, r7, 3
+ adds r0, r7
+ lsls r0, 2
+ ldr r1, _081288DC
+ adds r4, r0, r1
+ ldrb r0, [r4]
+ lsls r0, 31
+ cmp r0, 0
+ beq _081288E4
+ ldrb r0, [r4, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _081288E0
+ 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 _081288E4
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r0, r2
+ ble _081288E4
+ 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 _081288BC
+ cmp r2, r0
+ bge _081288E4
+_081288BC:
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r0, r3
+ ble _081288E4
+ adds r2, r6, 0
+ adds r2, 0x43
+ adds r0, r5, 0
+ adds r0, 0x43
+ ldrb r1, [r0]
+ ldrb r0, [r2]
+ cmp r0, r1
+ bhi _081288E4
+ adds r0, r1, 0x2
+ strb r0, [r2]
+ b _081288EE
+ .align 2, 0
+_081288DC: .4byte gMapObjects
+_081288E0: .4byte gSprites
+_081288E4:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0xF
+ bls _08128842
+_081288EE:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812882C
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom_81258BC.s b/asm/rom_81258BC.s
index 96678e57e..8f74704b5 100644
--- a/asm/rom_81258BC.s
+++ b/asm/rom_81258BC.s
@@ -6,4346 +6,6 @@
.text
- thumb_func_start SetUpReflection
-SetUpReflection: @ 812680C
- 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, _081268BC
- adds r7, r1, r0
- ldr r0, _081268C0
- str r0, [r7, 0x1C]
- ldrb r1, [r7, 0x5]
- movs r0, 0xC
- orrs r1, r0
- strb r1, [r7, 0x5]
- ldr r2, _081268C4
- 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, _081268C8
- str r0, [r7, 0x8]
- adds r0, r7, 0
- movs r1, 0
- bl StartSpriteAnim
- ldr r0, _081268CC
- 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 _081268B2
- ldrb r0, [r7, 0x1]
- movs r1, 0x4
- negs r1, r1
- ands r1, r0
- movs r0, 0x1
- orrs r1, r0
- strb r1, [r7, 0x1]
-_081268B2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081268BC: .4byte gSprites
-_081268C0: .4byte sub_81269E0
-_081268C4: .4byte gUnknown_0830FD14
-_081268C8: .4byte gDummySpriteAnimTable
-_081268CC: .4byte gDummySpriteAffineAnimTable
- thumb_func_end SetUpReflection
-
- thumb_func_start sub_81268D0
-sub_81268D0: @ 81268D0
- 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_81268D0
-
- thumb_func_start npc_pal_op
-npc_pal_op: @ 81268E4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, _0812693C
- 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 _08126940
- ldrb r0, [r5, 0x1F]
- bl sub_8057450
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08126926
- ldrb r0, [r5, 0x1E]
- bl sub_8057450
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08126940
-_08126926:
- 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 _0812694A
- .align 2, 0
-_0812693C: .4byte gUnknown_08401E2C
-_08126940:
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- adds r0, r5, 0
- bl npc_pal_op_B
-_0812694A:
- 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: @ 8126954
- 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, _08126980
- cmp r1, r0
- beq _081269A8
- ldrb r0, [r2, 0xC]
- movs r1, 0xF
- ands r1, r0
- cmp r1, 0
- bne _08126984
- ldrh r0, [r2, 0x2]
- adds r1, r4, 0
- bl npc_load_two_palettes__no_record
- b _081269A2
- .align 2, 0
-_08126980: .4byte 0x000011ff
-_08126984:
- cmp r1, 0xA
- bne _08126992
- ldrh r0, [r2, 0x2]
- adds r1, r4, 0
- bl npc_load_two_palettes__and_record
- b _081269A2
-_08126992:
- adds r0, r4, 0
- bl npc_paltag_by_palslot
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl pal_patch_for_npc
-_081269A2:
- adds r0, r4, 0
- bl sub_807D78C
-_081269A8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end npc_pal_op_B
-
- thumb_func_start npc_pal_op_A
-npc_pal_op_A: @ 81269B0
- 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, _081269DC
- cmp r1, r0
- beq _081269D4
- adds r0, r1, 0
- adds r1, r4, 0
- bl pal_patch_for_npc
- adds r0, r4, 0
- bl sub_807D78C
-_081269D4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081269DC: .4byte 0x000011ff
- thumb_func_end npc_pal_op_A
-
- thumb_func_start sub_81269E0
-sub_81269E0: @ 81269E0
- 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, _08126A28
- adds r7, r0, r1
- ldrb r1, [r7, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126A2C
- adds r5, r0, r1
- ldr r0, [r7]
- ldr r1, _08126A30
- ands r0, r1
- cmp r0, r1
- bne _08126A18
- ldrb r1, [r7, 0x8]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r1, r0
- beq _08126A34
-_08126A18:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- b _08126B3E
- .align 2, 0
-_08126A28: .4byte gMapObjects
-_08126A2C: .4byte gSprites
-_08126A30: .4byte 0x00020001
-_08126A34:
- ldr r1, _08126B4C
- 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, _08126B50
- 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_81268D0
- 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 _08126B3E
- 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 _08126B3E
- movs r1, 0x2
- adds r0, r2, 0
- orrs r0, r1
- strb r0, [r4, 0x3]
-_08126B3E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08126B4C: .4byte gUnknown_0830FD14
-_08126B50: .4byte 0xfffffc00
- thumb_func_end sub_81269E0
-
- thumb_func_start sub_8126B54
-sub_8126B54: @ 8126B54
- push {r4,lr}
- ldr r0, _08126B9C
- 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 _08126B92
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08126BA0
- 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]
-_08126B92:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08126B9C: .4byte gFieldEffectObjectTemplatePointers
-_08126BA0: .4byte gSprites
- thumb_func_end sub_8126B54
-
- thumb_func_start objid_set_invisible
-objid_set_invisible: @ 8126BA4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08126BC0
- 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
-_08126BC0: .4byte gSprites
- thumb_func_end objid_set_invisible
-
- thumb_func_start sub_8126BC4
-sub_8126BC4: @ 8126BC4
- 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, _08126C68
- adds r2, r0, r1
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _08126C0E
- movs r0, 0x2E
- ldrsh r1, [r2, r0]
- lsls r0, r7, 16
- asrs r0, 16
- cmp r1, r0
- bne _08126C0E
- movs r0, 0x30
- ldrsh r1, [r2, r0]
- lsls r0, r6, 16
- asrs r0, 16
- cmp r1, r0
- beq _08126C5A
-_08126C0E:
- 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_80603CC
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r1, _08126C68
- 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
-_08126C5A:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08126C68: .4byte gSprites
- thumb_func_end sub_8126BC4
-
- thumb_func_start oei_shadow
-oei_shadow: @ 8126C6C
- push {r4,r5,lr}
- ldr r5, _08126CF8
- ldrb r0, [r5]
- ldrb r1, [r5, 0x4]
- ldrb r2, [r5, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08126CFC
- 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, _08126D00
- ldr r1, _08126D04
- 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 _08126CF0
- ldr r0, _08126D08
- 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, _08126D0C
- 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]
-_08126CF0:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08126CF8: .4byte gUnknown_0202FF84
-_08126CFC: .4byte gMapObjects
-_08126D00: .4byte gFieldEffectObjectTemplatePointers
-_08126D04: .4byte gUnknown_08401E32
-_08126D08: .4byte gSprites
-_08126D0C: .4byte gUnknown_08401E36
- thumb_func_end oei_shadow
-
- thumb_func_start oamc_shadow
-oamc_shadow: @ 8126D10
- 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 _08126D3E
- adds r0, r5, 0
- movs r1, 0x3
- bl FieldEffectStop
- b _08126DC4
-_08126D3E:
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126DCC
- adds r4, r0, r1
- ldrb r0, [r4, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08126DD0
- 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, _08126DD4
- ands r0, r1
- cmp r0, r1
- bne _08126DBC
- ldrb r0, [r4, 0x1E]
- bl sub_8056E14
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsReflective
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsReflective
- lsls r0, 24
- cmp r0, 0
- beq _08126DC4
-_08126DBC:
- adds r0, r5, 0
- movs r1, 0x3
- bl FieldEffectStop
-_08126DC4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08126DCC: .4byte gMapObjects
-_08126DD0: .4byte gSprites
-_08126DD4: .4byte 0x00400001
- thumb_func_end oamc_shadow
-
- thumb_func_start oei_grass_normal
-oei_grass_normal: @ 8126DD8
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _08126E70
- 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_8060470
- ldr r0, _08126E74
- 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 _08126E64
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126E78
- 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 _08126E64
- adds r0, r3, 0
- movs r1, 0x4
- bl SeekSpriteAnim
-_08126E64:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08126E70: .4byte gUnknown_0202FF84
-_08126E74: .4byte gFieldEffectObjectTemplatePointers
-_08126E78: .4byte gSprites
- thumb_func_end oei_grass_normal
-
- thumb_func_start unc_grass_normal
-unc_grass_normal: @ 8126E7C
- 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, _08126F24
- ldrb r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08126EC6
- ldr r2, _08126F28
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- cmp r0, r4
- bne _08126EAC
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- cmp r0, r7
- beq _08126EC6
-_08126EAC:
- 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]
-_08126EC6:
- 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 _08126F1A
- adds r0, r6, 0
- bl MetatileBehavior_IsTallGrass
- lsls r0, 24
- cmp r0, 0
- beq _08126F1A
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08126F2C
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08126F2C
-_08126F1A:
- adds r0, r5, 0
- movs r1, 0x4
- bl FieldEffectStop
- b _08126F70
- .align 2, 0
-_08126F24: .4byte gUnknown_0202E844
-_08126F28: .4byte gSaveBlock1
-_08126F2C:
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126F7C
- adds r2, r0, r1
- ldr r0, [r2, 0x10]
- ldr r1, [r5, 0x30]
- cmp r0, r1
- beq _08126F4C
- ldr r0, [r2, 0x14]
- cmp r0, r1
- beq _08126F4C
- movs r0, 0x1
- strh r0, [r5, 0x3C]
-_08126F4C:
- movs r6, 0
- adds r0, r5, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0
- bne _08126F5A
- movs r6, 0x4
-_08126F5A:
- adds r0, r5, 0
- movs r1, 0
- bl sub_806487C
- ldrh r1, [r5, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- adds r2, r6, 0
- bl sub_812882C
-_08126F70:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08126F7C: .4byte gMapObjects
- thumb_func_end unc_grass_normal
-
- thumb_func_start sub_8126F80
-sub_8126F80: @ 8126F80
- push {r4,lr}
- ldr r4, _08126FE4
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0xC
- bl sub_8060470
- ldr r0, _08126FE8
- 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 _08126FDC
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08126FEC
- 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]
-_08126FDC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08126FE4: .4byte gUnknown_0202FF84
-_08126FE8: .4byte gFieldEffectObjectTemplatePointers
-_08126FEC: .4byte gSprites
- thumb_func_end sub_8126F80
-
- thumb_func_start sub_8126FF0
-sub_8126FF0: @ 8126FF0
- 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, _08127060
- mov r8, r0
- lsls r3, 16
- asrs r3, 16
- lsls r4, 16
- asrs r4, 16
-_08127014:
- 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 _08127068
- ldr r1, [r2, 0x1C]
- ldr r0, _08127064
- cmp r1, r0
- bne _08127068
- movs r1, 0x30
- ldrsh r0, [r2, r1]
- cmp r3, r0
- bne _08127068
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r4, r0
- bne _08127068
- ldrh r1, [r2, 0x34]
- lsrs r0, r1, 8
- cmp r12, r0
- bne _08127068
- movs r0, 0xFF
- ands r0, r1
- cmp r7, r0
- bne _08127068
- movs r1, 0x36
- ldrsh r0, [r2, r1]
- cmp r6, r0
- bne _08127068
- adds r0, r5, 0
- b _08127074
- .align 2, 0
-_08127060: .4byte gSprites
-_08127064: .4byte unc_grass_normal
-_08127068:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3F
- bls _08127014
- movs r0, 0x40
-_08127074:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8126FF0
-
- thumb_func_start sub_8127080
-sub_8127080: @ 8127080
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _0812711C
- 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_8060470
- ldr r0, _08127120
- 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 _08127110
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127124
- 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 _08127110
- adds r0, r4, 0
- movs r1, 0x6
- bl SeekSpriteAnim
-_08127110:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812711C: .4byte gUnknown_0202FF84
-_08127120: .4byte gFieldEffectObjectTemplatePointers
-_08127124: .4byte gSprites
- thumb_func_end sub_8127080
-
- thumb_func_start unc_grass_tall
-unc_grass_tall: @ 8127128
- 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, _081271D0
- ldrb r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08127172
- ldr r2, _081271D4
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- cmp r0, r7
- bne _08127158
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- cmp r0, r6
- beq _08127172
-_08127158:
- 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]
-_08127172:
- 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 _081271C6
- adds r0, r4, 0
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _081271C6
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _081271D8
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081271D8
-_081271C6:
- adds r0, r5, 0
- movs r1, 0x11
- bl FieldEffectStop
- b _0812720E
- .align 2, 0
-_081271D0: .4byte gUnknown_0202E844
-_081271D4: .4byte gSaveBlock1
-_081271D8:
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812721C
- adds r2, r0, r1
- ldr r0, [r2, 0x10]
- ldr r1, [r5, 0x30]
- cmp r0, r1
- beq _081271F8
- ldr r0, [r2, 0x14]
- cmp r0, r1
- beq _081271F8
- movs r0, 0x1
- strh r0, [r5, 0x3C]
-_081271F8:
- adds r0, r5, 0
- movs r1, 0
- bl sub_806487C
- ldrh r1, [r5, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- movs r2, 0
- bl sub_812882C
-_0812720E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812721C: .4byte gMapObjects
- thumb_func_end unc_grass_tall
-
- thumb_func_start sub_8127220
-sub_8127220: @ 8127220
- push {r4,lr}
- ldr r4, _08127284
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127288
- 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 _0812727C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _0812728C
- 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]
-_0812727C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127284: .4byte gUnknown_0202FF84
-_08127288: .4byte gFieldEffectObjectTemplatePointers
-_0812728C: .4byte gSprites
- thumb_func_end sub_8127220
-
- thumb_func_start sub_8127290
-sub_8127290: @ 8127290
- push {r4-r6,lr}
- ldr r6, _08127324
- 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, _08127328
- adds r5, r1, r0
- ldr r0, _0812732C
- 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 _0812731C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r4, _08127330
- 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]
-_0812731C:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08127324: .4byte gUnknown_0202FF84
-_08127328: .4byte gMapObjects
-_0812732C: .4byte gFieldEffectObjectTemplatePointers
-_08127330: .4byte gSprites
- thumb_func_end sub_8127290
-
- thumb_func_start sub_8127334
-sub_8127334: @ 8127334
- 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 _08127372
- ldr r5, _0812737C
- 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 _08127380
-_08127372:
- adds r0, r4, 0
- movs r1, 0x29
- bl FieldEffectStop
- b _08127416
- .align 2, 0
-_0812737C: .4byte gMapObjects
-_08127380:
- 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, _08127424
- 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 _081273BC
- lsls r0, r5, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r0, r1
- beq _081273D6
-_081273BC:
- 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 _081273D6
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_081273D6:
- 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_806487C
-_08127416:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08127424: .4byte gSprites
- thumb_func_end sub_8127334
-
- thumb_func_start sub_8127428
-sub_8127428: @ 8127428
- push {r4,lr}
- ldr r4, _08127490
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127494
- 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 _08127486
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127498
- 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
-_08127486:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127490: .4byte gUnknown_0202FF84
-_08127494: .4byte gFieldEffectObjectTemplatePointers
-_08127498: .4byte gSprites
- thumb_func_end sub_8127428
-
- thumb_func_start sub_812749C
-sub_812749C: @ 812749C
- push {r4,r5,lr}
- ldr r4, _08127504
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127508
- 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 _081274FC
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812750C
- 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
-_081274FC:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127504: .4byte gUnknown_0202FF84
-_08127508: .4byte gFieldEffectObjectTemplatePointers
-_0812750C: .4byte gSprites
- thumb_func_end sub_812749C
-
- thumb_func_start sub_8127510
-sub_8127510: @ 8127510
- push {r4,r5,lr}
- ldr r4, _08127578
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _0812757C
- 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 _08127570
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127580
- 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
-_08127570:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127578: .4byte gUnknown_0202FF84
-_0812757C: .4byte gFieldEffectObjectTemplatePointers
-_08127580: .4byte gSprites
- thumb_func_end sub_8127510
-
- thumb_func_start sub_8127584
-sub_8127584: @ 8127584
- push {lr}
- ldr r2, _0812759C
- 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
-_0812759C: .4byte gUnknown_08401E40
- thumb_func_end sub_8127584
-
- thumb_func_start sub_81275A0
-sub_81275A0: @ 81275A0
- 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 _081275B6
- movs r0, 0x1
- strh r0, [r1, 0x2E]
-_081275B6:
- adds r0, r1, 0
- movs r1, 0
- bl sub_806487C
- pop {r0}
- bx r0
- thumb_func_end sub_81275A0
-
- thumb_func_start sub_81275C4
-sub_81275C4: @ 81275C4
- 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_806487C
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x38
- ble _08127608
- ldrh r1, [r4, 0x3C]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldEffectStop
-_08127608:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81275C4
-
- thumb_func_start sub_8127610
-sub_8127610: @ 8127610
- push {r4-r6,lr}
- ldr r6, _081276A4
- 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, _081276A8
- adds r5, r1, r0
- ldr r0, _081276AC
- 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 _0812769A
- ldrb r0, [r5, 0x5]
- bl GetFieldObjectGraphicsInfo
- lsls r3, r4, 4
- adds r3, r4
- lsls r3, 2
- ldr r4, _081276B0
- adds r3, r4
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- ldrb r1, [r1]
- movs r2, 0x2
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- ldrb r2, [r5, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrb r1, [r1, 0x5]
- movs r2, 0xC
- ands r2, r1
- ldrb r4, [r3, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r4
- orrs r1, r2
- strb r1, [r3, 0x5]
- ldr r1, [r6]
- strh r1, [r3, 0x2E]
- ldr r1, [r6, 0x4]
- strh r1, [r3, 0x30]
- ldr r1, [r6, 0x8]
- strh r1, [r3, 0x32]
- ldrh r0, [r0, 0xA]
- lsls r0, 16
- asrs r0, 17
- subs r0, 0x4
- strh r0, [r3, 0x26]
- movs r0, 0x46
- bl PlaySE
-_0812769A:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081276A4: .4byte gUnknown_0202FF84
-_081276A8: .4byte gMapObjects
-_081276AC: .4byte gFieldEffectObjectTemplatePointers
-_081276B0: .4byte gSprites
- thumb_func_end sub_8127610
-
- thumb_func_start sub_81276B4
-sub_81276B4: @ 81276B4
- 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 _081276E4
- 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 _081276EE
-_081276E4:
- adds r0, r4, 0
- movs r1, 0xF
- bl FieldEffectStop
- b _0812772E
-_081276EE:
- ldr r3, _08127738
- ldr r2, _0812773C
- 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_806487C
-_0812772E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08127738: .4byte gSprites
-_0812773C: .4byte gMapObjects
- thumb_func_end sub_81276B4
-
- thumb_func_start sub_8127740
-sub_8127740: @ 8127740
- push {r4,lr}
- ldr r4, _081277A4
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0xC
- bl sub_8060470
- ldr r0, _081277A8
- 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 _0812779C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081277AC
- 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]
-_0812779C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081277A4: .4byte gUnknown_0202FF84
-_081277A8: .4byte gFieldEffectObjectTemplatePointers
-_081277AC: .4byte gSprites
- thumb_func_end sub_8127740
-
- thumb_func_start oei_water_drop_tall
-oei_water_drop_tall: @ 81277B0
- push {r4,lr}
- ldr r4, _08127814
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127818
- 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 _0812780C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _0812781C
- 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]
-_0812780C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127814: .4byte gUnknown_0202FF84
-_08127818: .4byte gFieldEffectObjectTemplatePointers
-_0812781C: .4byte gSprites
- thumb_func_end oei_water_drop_tall
-
- thumb_func_start sub_8127820
-sub_8127820: @ 8127820
- push {r4-r7,lr}
- ldr r7, _081278C0
- 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, _081278C4
- adds r6, r1, r0
- ldr r0, _081278C8
- 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 _081278B6
- ldrb r0, [r6, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r4, r0, 0
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r3, _081278CC
- adds r0, r3
- ldr r1, _081278D0
- 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, _081278D4
- 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
-_081278B6:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081278C0: .4byte gUnknown_0202FF84
-_081278C4: .4byte gMapObjects
-_081278C8: .4byte gFieldEffectObjectTemplatePointers
-_081278CC: .4byte gSprites
-_081278D0: .4byte sub_81278D8
-_081278D4: .4byte 0x0000ffff
- thumb_func_end sub_8127820
-
- thumb_func_start sub_81278D8
-sub_81278D8: @ 81278D8
- 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 _08127912
- ldr r2, _0812791C
- 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 _08127920
-_08127912:
- adds r0, r4, 0
- movs r1, 0x22
- bl FieldEffectStop
- b _0812796A
- .align 2, 0
-_0812791C: .4byte gMapObjects
-_08127920:
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127974
- 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_806487C
- ldr r1, [r5, 0x10]
- ldr r0, [r4, 0x34]
- cmp r1, r0
- beq _0812796A
- 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 _0812796A
- movs r0, 0x46
- bl PlaySE
-_0812796A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08127974: .4byte gSprites
- thumb_func_end sub_81278D8
-
- thumb_func_start oei_ripples
-oei_ripples: @ 8127978
- push {r4,lr}
- ldr r0, _081279CC
- ldr r0, [r0, 0x14]
- ldr r4, _081279D0
- 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 _081279C4
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081279D4
- 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]
-_081279C4:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081279CC: .4byte gFieldEffectObjectTemplatePointers
-_081279D0: .4byte gUnknown_0202FF84
-_081279D4: .4byte gSprites
- thumb_func_end oei_ripples
-
- thumb_func_start sub_81279D8
-sub_81279D8: @ 81279D8
- push {r4-r6,lr}
- ldr r6, _08127A6C
- 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, _08127A70
- adds r5, r1, r0
- ldr r0, _08127A74
- 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 _08127A64
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r4, _08127A78
- 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]
-_08127A64:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08127A6C: .4byte gUnknown_0202FF84
-_08127A70: .4byte gMapObjects
-_08127A74: .4byte gFieldEffectObjectTemplatePointers
-_08127A78: .4byte gSprites
- thumb_func_end sub_81279D8
-
- thumb_func_start sub_8127A7C
-sub_8127A7C: @ 8127A7C
- 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 _08127AB6
- ldr r5, _08127AC0
- 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 _08127AC4
-_08127AB6:
- adds r0, r4, 0
- movs r1, 0x2A
- bl FieldEffectStop
- b _08127B08
- .align 2, 0
-_08127AC0: .4byte gMapObjects
-_08127AC4:
- 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, _08127B10
- 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_806487C
-_08127B08:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08127B10: .4byte gSprites
- thumb_func_end sub_8127A7C
-
- thumb_func_start sub_8127B14
-sub_8127B14: @ 8127B14
- push {r4,lr}
- ldr r4, _08127B74
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127B78
- 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 _08127B6C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127B7C
- 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]
-_08127B6C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127B74: .4byte gUnknown_0202FF84
-_08127B78: .4byte gFieldEffectObjectTemplatePointers
-_08127B7C: .4byte gSprites
- thumb_func_end sub_8127B14
-
- thumb_func_start sub_8127B80
-sub_8127B80: @ 8127B80
- push {r4,lr}
- ldr r4, _08127BE0
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127BE4
- 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 _08127BD8
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127BE8
- 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]
-_08127BD8:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127BE0: .4byte gUnknown_0202FF84
-_08127BE4: .4byte gFieldEffectObjectTemplatePointers
-_08127BE8: .4byte gSprites
- thumb_func_end sub_8127B80
-
- thumb_func_start sub_8127BEC
-sub_8127BEC: @ 8127BEC
- push {r4,lr}
- ldr r4, _08127C4C
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127C50
- 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 _08127C44
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127C54
- 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]
-_08127C44:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127C4C: .4byte gUnknown_0202FF84
-_08127C50: .4byte gFieldEffectObjectTemplatePointers
-_08127C54: .4byte gSprites
- thumb_func_end sub_8127BEC
-
- thumb_func_start sub_8127C58
-sub_8127C58: @ 8127C58
- push {r4,lr}
- ldr r4, _08127CB8
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127CBC
- 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 _08127CB0
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127CC0
- 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]
-_08127CB0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127CB8: .4byte gUnknown_0202FF84
-_08127CBC: .4byte gFieldEffectObjectTemplatePointers
-_08127CC0: .4byte gSprites
- thumb_func_end sub_8127C58
-
- thumb_func_start ash
-ash: @ 8127CC4
- push {r4,lr}
- lsls r2, 16
- lsrs r2, 16
- ldr r4, _08127CF4
- 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
-_08127CF4: .4byte gUnknown_0202FF84
- thumb_func_end ash
-
- thumb_func_start oei_ash
-oei_ash: @ 8127CF8
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _08127D78
- 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_8060470
- ldr r0, _08127D7C
- 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 _08127D6E
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127D80
- 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]
-_08127D6E:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127D78: .4byte gUnknown_0202FF84
-_08127D7C: .4byte gFieldEffectObjectTemplatePointers
-_08127D80: .4byte gSprites
- thumb_func_end oei_ash
-
- thumb_func_start sub_8127D84
-sub_8127D84: @ 8127D84
- push {lr}
- ldr r2, _08127D9C
- 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
-_08127D9C: .4byte gUnknown_08401E48
- thumb_func_end sub_8127D84
-
- thumb_func_start sub_8127DA0
-sub_8127DA0: @ 8127DA0
- 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 _08127DCA
- movs r0, 0x1
- strh r0, [r3, 0x2E]
-_08127DCA:
- pop {r0}
- bx r0
- thumb_func_end sub_8127DA0
-
- thumb_func_start sub_8127DD0
-sub_8127DD0: @ 8127DD0
- 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, _08127E28
- ldr r0, _08127E2C
- 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
-_08127E28: .4byte gMapObjects
-_08127E2C: .4byte gPlayerAvatar
- thumb_func_end sub_8127DD0
-
- thumb_func_start sub_8127E30
-sub_8127E30: @ 8127E30
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_806487C
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08127E50
- adds r0, r4, 0
- movs r1, 0x7
- bl FieldEffectStop
-_08127E50:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8127E30
-
- thumb_func_start sub_8127E58
-sub_8127E58: @ 8127E58
- push {r4,r5,lr}
- ldr r4, _08127EC0
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127EC4
- 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 _08127EB2
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08127EC8
- adds r1, r0
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r3]
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r1, 0x32]
- ldr r0, _08127ECC
- strh r0, [r1, 0x34]
- movs r0, 0x1
- negs r0, r0
- strh r0, [r1, 0x3A]
- strh r0, [r1, 0x3C]
-_08127EB2:
- movs r0, 0x8
- bl FieldEffectActiveListRemove
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127EC0: .4byte gUnknown_0202FF84
-_08127EC4: .4byte gFieldEffectObjectTemplatePointers
-_08127EC8: .4byte gSprites
-_08127ECC: .4byte 0x0000ffff
- thumb_func_end sub_8127E58
-
- thumb_func_start sub_8127ED0
-sub_8127ED0: @ 8127ED0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, _08127EF8
- 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
-_08127EF8: .4byte gSprites
- thumb_func_end sub_8127ED0
-
- thumb_func_start sub_8127EFC
-sub_8127EFC: @ 8127EFC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, _08127F24
- 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
-_08127F24: .4byte gSprites
- thumb_func_end sub_8127EFC
-
- thumb_func_start sub_8127F28
-sub_8127F28: @ 8127F28
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r4, _08127F54
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r3, r4
- ldrh r0, [r3, 0x2E]
- ldr r4, _08127F58
- 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
-_08127F54: .4byte gSprites
-_08127F58: .4byte 0xfffff0ff
- thumb_func_end sub_8127F28
-
- thumb_func_start sub_8127F5C
-sub_8127F5C: @ 8127F5C
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF
- ands r0, r1
- bx lr
- thumb_func_end sub_8127F5C
-
- thumb_func_start sub_8127F64
-sub_8127F64: @ 8127F64
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF0
- ands r0, r1
- lsrs r0, 4
- bx lr
- thumb_func_end sub_8127F64
-
- thumb_func_start sub_8127F70
-sub_8127F70: @ 8127F70
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF0
- lsls r0, 4
- ands r0, r1
- lsrs r0, 8
- bx lr
- thumb_func_end sub_8127F70
-
- thumb_func_start sub_8127F7C
-sub_8127F7C: @ 8127F7C
- 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, _08127FCC
- adds r4, r0
- ldrb r0, [r4, 0x4]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r0, _08127FD0
- adds r5, r0
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8127FD4
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_812800C
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl sub_81280A0
- 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
-_08127FCC: .4byte gMapObjects
-_08127FD0: .4byte gSprites
- thumb_func_end sub_8127F7C
-
- thumb_func_start sub_8127FD4
-sub_8127FD4: @ 8127FD4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, _08128008
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- adds r0, r4, 0
- bl sub_8127F64
- lsls r0, 24
- cmp r0, 0
- bne _08128000
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- add r0, sp
- ldrb r1, [r0]
- adds r0, r4, 0
- bl StartSpriteAnimIfDifferent
-_08128000:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08128008: .4byte gUnknown_08401E54
- thumb_func_end sub_8127FD4
-
- thumb_func_start sub_812800C
-sub_812800C: @ 812800C
- 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 _08128094
- mov r0, sp
- movs r5, 0
- ldrsh r2, [r0, r5]
- movs r5, 0x3A
- ldrsh r0, [r4, r5]
- cmp r2, r0
- bne _08128048
- lsls r0, r1, 16
- asrs r0, 16
- movs r5, 0x3C
- ldrsh r1, [r4, r5]
- cmp r0, r1
- beq _08128094
-_08128048:
- 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
-_0812805A:
- 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 _08128080
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _08128094
-_08128080:
- 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 _0812805A
-_08128094:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812800C
-
- thumb_func_start sub_81280A0
-sub_81280A0: @ 81280A0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r4, r2, 0
- ldr r1, _08128104
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- bl sub_8127F5C
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- cmp r2, 0
- beq _0812811A
- 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 _081280E0
- ldrh r0, [r4, 0x34]
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
-_081280E0:
- ldrh r1, [r4, 0x36]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _081280F0
- ldrh r0, [r4, 0x34]
- negs r0, r0
- strh r0, [r4, 0x34]
-_081280F0:
- cmp r2, 0x2
- beq _0812811A
- adds r0, r4, 0
- bl sub_8127F70
- lsls r0, 24
- cmp r0, 0
- bne _08128108
- ldrh r0, [r4, 0x26]
- b _0812810E
- .align 2, 0
-_08128104: .4byte gUnknown_08401E5A
-_08128108:
- ldrh r0, [r4, 0x26]
- ldrh r3, [r4, 0x30]
- adds r0, r3
-_0812810E:
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x20]
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x22]
- adds r0, 0x8
- strh r0, [r4, 0x22]
-_0812811A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81280A0
-
- thumb_func_start sub_8128124
-sub_8128124: @ 8128124
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08128168
- 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, _0812816C
- adds r2, r1
- ldr r1, _08128170
- 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
-_08128168: .4byte gDummySpriteTemplate
-_0812816C: .4byte gSprites
-_08128170: .4byte sub_8128174
- thumb_func_end sub_8128124
-
- thumb_func_start sub_8128174
-sub_8128174: @ 8128174
- 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, _081281B0
- 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 _0812819C
- ldrh r0, [r2, 0x30]
- ldrh r1, [r3, 0x26]
- adds r0, r1
- strh r0, [r3, 0x26]
-_0812819C:
- ldrh r1, [r2, 0x32]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _081281AC
- ldrh r0, [r2, 0x30]
- negs r0, r0
- strh r0, [r2, 0x30]
-_081281AC:
- pop {r0}
- bx r0
- .align 2, 0
-_081281B0: .4byte gSprites
- thumb_func_end sub_8128174
-
- thumb_func_start sub_81281B4
-sub_81281B4: @ 81281B4
- push {r4,lr}
- ldr r4, _08128218
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0xC
- bl sub_8060470
- ldr r0, _0812821C
- 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 _08128210
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08128220
- 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]
-_08128210:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128218: .4byte gUnknown_0202FF84
-_0812821C: .4byte gFieldEffectObjectTemplatePointers
-_08128220: .4byte gSprites
- thumb_func_end sub_81281B4
-
- thumb_func_start sub_8128224
-sub_8128224: @ 8128224
- push {r4-r7,lr}
- ldr r7, _081282D0
- 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, _081282D4
- adds r6, r1, r0
- ldr r0, _081282D8
- 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 _081282C8
- ldrb r0, [r6, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r5, r0, 0
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r4, _081282DC
- 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
-_081282C8:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081282D0: .4byte gUnknown_0202FF84
-_081282D4: .4byte gMapObjects
-_081282D8: .4byte gFieldEffectObjectTemplatePointers
-_081282DC: .4byte gSprites
- thumb_func_end sub_8128224
-
- thumb_func_start sub_81282E0
-sub_81282E0: @ 81282E0
- 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 _0812831A
- ldr r2, _08128324
- 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 _08128328
-_0812831A:
- adds r0, r4, 0
- movs r1, 0x27
- bl FieldEffectStop
- b _0812839A
- .align 2, 0
-_08128324: .4byte gMapObjects
-_08128328:
- ldr r2, _081283A4
- 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 _08128350
- lsls r0, r5, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r0, r1
- beq _0812836A
-_08128350:
- 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 _0812836A
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_0812836A:
- strh r6, [r4, 0x20]
- strh r5, [r4, 0x22]
- ldr r3, _081283A4
- ldr r2, _081283A8
- 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_806487C
-_0812839A:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081283A4: .4byte gSprites
-_081283A8: .4byte gMapObjects
- thumb_func_end sub_81282E0
-
- thumb_func_start sub_81283AC
-sub_81283AC: @ 81283AC
- push {r4,lr}
- ldr r4, _08128404
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0
- bl sub_8060470
- ldr r0, _08128408
- 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 _081283FC
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0812840C
- 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]
-_081283FC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128404: .4byte gUnknown_0202FF84
-_08128408: .4byte gFieldEffectObjectTemplatePointers
-_0812840C: .4byte gSprites
- thumb_func_end sub_81283AC
-
- thumb_func_start sub_8128410
-sub_8128410: @ 8128410
- 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_806487C
- ldrh r1, [r4, 0x3E]
- ldr r0, _0812844C
- ands r0, r1
- cmp r0, 0
- beq _08128444
- adds r0, r4, 0
- movs r1, 0x35
- bl FieldEffectStop
-_08128444:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812844C: .4byte 0x00001004
- thumb_func_end sub_8128410
-
- thumb_func_start sub_8128450
-sub_8128450: @ 8128450
- push {r4,lr}
- ldr r4, _081284B8
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x4
- bl sub_8060470
- ldr r0, _081284BC
- ldr r0, [r0, 0x58]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081284B0
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081284C0
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x50
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x17
- strh r0, [r2, 0x2E]
-_081284B0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081284B8: .4byte gUnknown_0202FF84
-_081284BC: .4byte gFieldEffectObjectTemplatePointers
-_081284C0: .4byte gSprites
- thumb_func_end sub_8128450
-
- thumb_func_start ShowTreeDisguiseFieldEffect
-ShowTreeDisguiseFieldEffect: @ 81284C4
- 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: @ 81284D4
- 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: @ 81284E4
- 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: @ 81284F4
- 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, _08128528
- ldrb r0, [r5]
- ldrb r1, [r5, 0x4]
- ldrb r2, [r5, 0x8]
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- beq _0812852C
- adds r0, r4, 0
- bl FieldEffectActiveListRemove
- movs r0, 0x40
- b _08128598
- .align 2, 0
-_08128528: .4byte gUnknown_0202FF84
-_0812852C:
- ldr r1, _081285A4
- 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 _08128594
- mov r0, sp
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081285A8
- 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]
-_08128594:
- mov r0, sp
- ldrb r0, [r0]
-_08128598:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081285A4: .4byte gFieldEffectObjectTemplatePointers
-_081285A8: .4byte gSprites
- thumb_func_end ShowDisguiseFieldEffect
-
- thumb_func_start sub_81285AC
-sub_81285AC: @ 81285AC
- 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 _081285DC
- ldrh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FieldEffectStop
-_081285DC:
- ldr r4, _08128694
- 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, _08128698
- 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 _0812865C
- adds r0, r1, 0x1
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_0812865C:
- movs r3, 0x2E
- ldrsh r0, [r5, r3]
- ldrh r2, [r5, 0x2E]
- cmp r0, 0x2
- bne _08128678
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08128678
- movs r0, 0x1
- strh r0, [r5, 0x3C]
-_08128678:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0812868C
- ldrh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FieldEffectStop
-_0812868C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08128694: .4byte gMapObjects
-_08128698: .4byte gSprites
- thumb_func_end sub_81285AC
-
- thumb_func_start sub_812869C
-sub_812869C: @ 812869C
- push {lr}
- adds r1, r0, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081286BA
- ldr r2, _081286C0
- 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]
-_081286BA:
- pop {r0}
- bx r0
- .align 2, 0
-_081286C0: .4byte gSprites
- thumb_func_end sub_812869C
-
- thumb_func_start sub_81286C4
-sub_81286C4: @ 81286C4
- push {lr}
- adds r2, r0, 0
- adds r2, 0x21
- ldrb r1, [r2]
- cmp r1, 0x2
- beq _081286FA
- cmp r1, 0
- beq _081286FA
- ldrb r1, [r0, 0x1A]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081286EC
- adds r1, r0, r1
- movs r3, 0x3C
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _081286F0
- movs r0, 0
- b _081286FC
- .align 2, 0
-_081286EC: .4byte gSprites
-_081286F0:
- movs r0, 0x2
- strb r0, [r2]
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
-_081286FA:
- movs r0, 0x1
-_081286FC:
- pop {r1}
- bx r1
- thumb_func_end sub_81286C4
-
- thumb_func_start sub_8128700
-sub_8128700: @ 8128700
- push {r4,lr}
- ldr r4, _08128768
- 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_8060470
- ldr r0, _0812876C
- 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 _08128760
- ldr r0, _08128770
- 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]
-_08128760:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128768: .4byte gUnknown_0202FF84
-_0812876C: .4byte gFieldEffectObjectTemplatePointers
-_08128770: .4byte gSprites
- thumb_func_end sub_8128700
-
- thumb_func_start sub_8128774
-sub_8128774: @ 8128774
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _081287A8
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081287A0
- 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]
-_081287A0:
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _081287BE
-_081287A8:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x22
- ble _081287BE
- adds r0, r2, 0
- movs r1, 0x36
- bl FieldEffectStop
-_081287BE:
- pop {r0}
- bx r0
- thumb_func_end sub_8128774
-
- thumb_func_start sub_81287C4
-sub_81287C4: @ 81287C4
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081287E2
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldEffectStop
- b _081287F8
-_081287E2:
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- movs r2, 0
- bl SetObjectSubpriorityByZCoord
-_081287F8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81287C4
-
- thumb_func_start sub_8128800
-sub_8128800: @ 8128800
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0812881E
- ldrh r1, [r2, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl FieldEffectStop
- b _08128826
-_0812881E:
- adds r0, r2, 0
- movs r1, 0
- bl sub_806487C
-_08128826:
- pop {r0}
- bx r0
- thumb_func_end sub_8128800
-
- thumb_func_start sub_812882C
-sub_812882C: @ 812882C
- 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
-_08128842:
- lsls r0, r7, 3
- adds r0, r7
- lsls r0, 2
- ldr r1, _081288DC
- adds r4, r0, r1
- ldrb r0, [r4]
- lsls r0, 31
- cmp r0, 0
- beq _081288E4
- ldrb r0, [r4, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081288E0
- 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 _081288E4
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, r2
- ble _081288E4
- 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 _081288BC
- cmp r2, r0
- bge _081288E4
-_081288BC:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, r3
- ble _081288E4
- adds r2, r6, 0
- adds r2, 0x43
- adds r0, r5, 0
- adds r0, 0x43
- ldrb r1, [r0]
- ldrb r0, [r2]
- cmp r0, r1
- bhi _081288E4
- adds r0, r1, 0x2
- strb r0, [r2]
- b _081288EE
- .align 2, 0
-_081288DC: .4byte gMapObjects
-_081288E0: .4byte gSprites
-_081288E4:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xF
- bls _08128842
-_081288EE:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812882C
-
thumb_func_start sub_81288F4
sub_81288F4: @ 81288F4
push {r4,r5,lr}
diff --git a/ld_script.txt b/ld_script.txt
index 26c79babb..b2af948ac 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -81,6 +81,7 @@ SECTIONS {
asm/rom6.o(.text);
src/save.o(.text);
asm/mystery_event_script.o(.text);
+ asm/field_effect_helpers.o(.text);
asm/rom_81258BC.o(.text);
src/intro.o(.text);
asm/rom_813BA94.o(.text);