diff options
author | YamaArashi <shadow962@live.com> | 2016-11-01 10:08:48 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-11-01 10:16:34 -0700 |
commit | 6f0e42a91aeeedd64725ce57e3dad6a38421d8e9 (patch) | |
tree | dcea69ec49430f004c17ff71b77587cafd78c69a /asm/field_effect_helpers.s | |
parent | fef81187dce23adc635d7f4b7fd82298eab09ec2 (diff) |
split asm files
Diffstat (limited to 'asm/field_effect_helpers.s')
-rw-r--r-- | asm/field_effect_helpers.s | 4603 |
1 files changed, 4603 insertions, 0 deletions
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s new file mode 100644 index 000000000..28c4c5e9d --- /dev/null +++ b/asm/field_effect_helpers.s @@ -0,0 +1,4603 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start SetUpReflection +SetUpReflection: @ 8153ED4 + 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, =0x02020630 + adds r7, r1, r0 + ldr r0, =objc_reflection_maybe + str r0, [r7, 0x1C] + ldrb r1, [r7, 0x5] + movs r0, 0xC + orrs r1, r0 + strb r1, [r7, 0x5] + ldr r2, =gUnknown_084975C4 + 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, =gDummyObjectImageAnimTable + str r0, [r7, 0x8] + adds r0, r7, 0 + movs r1, 0 + bl StartObjectImageAnim + ldr r0, =gDummyObjectRotScalAnimTable + 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 _08153F7A + ldrb r0, [r7, 0x1] + movs r1, 0x4 + negs r1, r1 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strb r1, [r7, 0x1] +_08153F7A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end SetUpReflection + + thumb_func_start sub_8153F98 +sub_8153F98: @ 8153F98 + 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_8153F98 + + thumb_func_start npc_pal_op +@ void npc_pal_op(struct npc_state *npcState, struct obj *obj) +npc_pal_op: @ 8153FAC + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, =gUnknown_085CDC38 + 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 _08154008 + ldrb r0, [r5, 0x1F] + bl sub_80894D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08153FEE + ldrb r0, [r5, 0x1E] + bl sub_80894D4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08154008 +_08153FEE: + 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 _08154012 + .pool +_08154008: + ldrb r1, [r4, 0x5] + lsrs r1, 4 + adds r0, r5, 0 + bl npc_pal_op_B +_08154012: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end npc_pal_op + + thumb_func_start npc_pal_op_B +@ void npc_pal_op_B(void *a1, u8 slot) +npc_pal_op_B: @ 815401C + 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, =0x000011ff + cmp r1, r0 + beq _08154070 + ldrb r0, [r2, 0xC] + movs r1, 0xF + ands r1, r0 + cmp r1, 0 + bne _0815404C + ldrh r0, [r2, 0x2] + adds r1, r4, 0 + bl npc_load_two_palettes__no_record + b _0815406A + .pool +_0815404C: + cmp r1, 0xA + bne _0815405A + ldrh r0, [r2, 0x2] + adds r1, r4, 0 + bl npc_load_two_palettes__and_record + b _0815406A +_0815405A: + adds r0, r4, 0 + bl npc_paltag_by_palslot + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl pal_patch_for_npc +_0815406A: + adds r0, r4, 0 + bl sub_80ABE18 +_08154070: + pop {r4} + pop {r0} + bx r0 + thumb_func_end npc_pal_op_B + + thumb_func_start npc_pal_op_A +npc_pal_op_A: @ 8154078 + 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, =0x000011ff + cmp r1, r0 + beq _0815409C + adds r0, r1, 0 + adds r1, r4, 0 + bl pal_patch_for_npc + adds r0, r4, 0 + bl sub_80ABE18 +_0815409C: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end npc_pal_op_A + + thumb_func_start objc_reflection_maybe +@ void objc_reflection_maybe(struct obj *object) +objc_reflection_maybe: @ 81540A8 + 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, =0x02037350 + adds r7, r0, r1 + ldrb r1, [r7, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + adds r5, r0, r1 + ldr r0, [r7] + ldr r1, =0x00020001 + ands r0, r1 + cmp r0, r1 + bne _081540E0 + ldrb r1, [r7, 0x8] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _081540FC +_081540E0: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + b _08154214 + .pool +_081540FC: + ldr r1, =gUnknown_084975C4 + 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, =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r0, [r5, 0x18] + str r0, [r4, 0x18] + adds r0, r5, 0 + adds r0, 0x42 + ldrb r0, [r0] + lsls r0, 26 + lsrs r0, 26 + adds r2, r4, 0 + adds r2, 0x42 + ands r3, r0 + ldrb r1, [r2] + movs r0, 0x40 + negs r0, r0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + movs r0, 0x3E + adds r0, r5 + mov r8, r0 + ldrb r0, [r0] + adds r6, r4, 0 + adds r6, 0x3E + movs r1, 0x4 + ands r1, r0 + ldrb r2, [r6] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6] + ldrh r0, [r5, 0x20] + strh r0, [r4, 0x20] + adds r0, r7, 0 + bl sub_8153F98 + 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 r1, [r2] + movs r0, 0x2 + ands r0, r1 + ldrb r1, [r6] + movs r2, 0x3 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r6] + ldrb r0, [r7, 0x3] + lsls r0, 28 + cmp r0, 0 + bge _081541EE + movs r0, 0x4 + orrs r2, r0 + strb r2, [r6] +_081541EE: + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08154214 + 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 _08154214 + movs r1, 0x2 + adds r0, r2, 0 + orrs r0, r1 + strb r0, [r4, 0x3] +_08154214: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end objc_reflection_maybe + + thumb_func_start sub_8154228 +sub_8154228: @ 8154228 + push {r4,lr} + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x20] + movs r1, 0 + movs r2, 0 + movs r3, 0x52 + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + cmp r0, 0x40 + beq _08154266 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, =0x02020630 + 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] +_08154266: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8154228 + + thumb_func_start objid_set_invisible +objid_set_invisible: @ 8154278 + lsls r0, 24 + lsrs r0, 24 + ldr r2, =0x02020630 + 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 + .pool + thumb_func_end objid_set_invisible + + thumb_func_start sub_8154298 +sub_8154298: @ 8154298 + 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, =0x02020630 + adds r2, r0, r1 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _081542E2 + movs r0, 0x2E + ldrsh r1, [r2, r0] + lsls r0, r7, 16 + asrs r0, 16 + cmp r1, r0 + bne _081542E2 + movs r0, 0x30 + ldrsh r1, [r2, r0] + lsls r0, r6, 16 + asrs r0, 16 + cmp r1, r0 + beq _0815432E +_081542E2: + 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_8093038 + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + ldr r1, =0x02020630 + 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 StartObjectImageAnim +_0815432E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8154298 + + thumb_func_start oei_shadow +oei_shadow: @ 8154340 + push {r4,r5,lr} + ldr r5, =0x02038c08 + ldrb r0, [r5] + ldrb r1, [r5, 0x4] + ldrb r2, [r5, 0x8] + bl GetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + lsrs r0, 24 + ldr r2, =0x02037350 + 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, =gFieldEffectObjectTemplatePointers + ldr r1, =gUnknown_085CDC3E + 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 AddObjectToBack + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _081543C4 + ldr r0, =0x02020630 + 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, =gUnknown_085CDC42 + 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] +_081543C4: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end oei_shadow + + thumb_func_start oamc_shadow +oamc_shadow: @ 81543E4 + 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 _08154412 + adds r0, r5, 0 + movs r1, 0x3 + bl FieldEffectStop + b _08154498 +_08154412: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r4, r0, r1 + ldrb r0, [r4, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, =0x02020630 + 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, =0x00400001 + ands r0, r1 + cmp r0, r1 + bne _08154490 + ldrb r0, [r4, 0x1E] + bl sub_8088E64 + lsls r0, 24 + cmp r0, 0 + bne _08154490 + ldrb r0, [r4, 0x1E] + bl MetatileBehavior_IsSurfableWaterOrUnderwater + lsls r0, 24 + cmp r0, 0 + bne _08154490 + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsSurfableWaterOrUnderwater + lsls r0, 24 + cmp r0, 0 + bne _08154490 + ldrb r0, [r4, 0x1E] + bl MetatileBehavior_IsReflective + lsls r0, 24 + cmp r0, 0 + bne _08154490 + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsReflective + lsls r0, 24 + cmp r0, 0 + beq _08154498 +_08154490: + adds r0, r5, 0 + movs r1, 0x3 + bl FieldEffectStop +_08154498: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end oamc_shadow + + thumb_func_start oei_grass_normal +oei_grass_normal: @ 81544AC + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, =0x02038c08 + ldrh r1, [r5] + mov r0, sp + strh r1, [r0] + ldrh r0, [r5, 0x4] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + mov r0, sp + adds r1, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x10] + mov r1, sp + movs r2, 0 + ldrsh r1, [r1, r2] + movs r3, 0 + ldrsh r2, [r4, r3] + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _08154538 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + 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 _08154538 + adds r0, r3, 0 + movs r1, 0x4 + bl SeekObjectImageAnim +_08154538: + movs r0, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end oei_grass_normal + + thumb_func_start unc_grass_normal +unc_grass_normal: @ 8154550 + 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, =0x02037334 + ldrb r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0815459C + ldr r0, =0x03005d8c + ldr r2, [r0] + movs r0, 0x5 + ldrsb r0, [r2, r0] + cmp r0, r4 + bne _08154582 + movs r0, 0x4 + ldrsb r0, [r2, r0] + cmp r0, r7 + beq _0815459C +_08154582: + 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] +_0815459C: + 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 _081545F0 + adds r0, r6, 0 + bl MetatileBehavior_IsTallGrass + lsls r0, 24 + cmp r0, 0 + beq _081545F0 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08154604 + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08154604 +_081545F0: + adds r0, r5, 0 + movs r1, 0x4 + bl FieldEffectStop + b _08154648 + .pool +_08154604: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r2, r0, r1 + ldr r0, [r2, 0x10] + ldr r1, [r5, 0x30] + cmp r0, r1 + beq _08154624 + ldr r0, [r2, 0x14] + cmp r0, r1 + beq _08154624 + movs r0, 0x1 + strh r0, [r5, 0x3C] +_08154624: + movs r6, 0 + adds r0, r5, 0 + adds r0, 0x2B + ldrb r0, [r0] + cmp r0, 0 + bne _08154632 + movs r6, 0x4 +_08154632: + adds r0, r5, 0 + movs r1, 0 + bl sub_80979D4 + ldrh r1, [r5, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + adds r2, r6, 0 + bl sub_81561FC +_08154648: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end unc_grass_normal + + thumb_func_start sub_8154658 +sub_8154658: @ 8154658 + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0xC + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x28] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _081546B4 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + 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] +_081546B4: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8154658 + + thumb_func_start sub_81546C8 +sub_81546C8: @ 81546C8 + 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, =0x02020630 + mov r8, r0 + lsls r3, 16 + asrs r3, 16 + lsls r4, 16 + asrs r4, 16 +_081546EC: + 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 _08154740 + ldr r1, [r2, 0x1C] + ldr r0, =unc_grass_normal + cmp r1, r0 + bne _08154740 + movs r1, 0x30 + ldrsh r0, [r2, r1] + cmp r3, r0 + bne _08154740 + movs r1, 0x32 + ldrsh r0, [r2, r1] + cmp r4, r0 + bne _08154740 + ldrh r1, [r2, 0x34] + lsrs r0, r1, 8 + cmp r12, r0 + bne _08154740 + movs r0, 0xFF + ands r0, r1 + cmp r7, r0 + bne _08154740 + movs r1, 0x36 + ldrsh r0, [r2, r1] + cmp r6, r0 + bne _08154740 + adds r0, r5, 0 + b _0815474C + .pool +_08154740: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3F + bls _081546EC + movs r0, 0x40 +_0815474C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81546C8 + + thumb_func_start sub_8154758 +sub_8154758: @ 8154758 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, =0x02038c08 + ldrh r1, [r5] + mov r0, sp + strh r1, [r0] + ldrh r0, [r5, 0x4] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + mov r0, sp + adds r1, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x3C] + mov r1, sp + movs r2, 0 + ldrsh r1, [r1, r2] + movs r3, 0 + ldrsh r2, [r4, r3] + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _081547E8 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + 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 _081547E8 + adds r0, r4, 0 + movs r1, 0x6 + bl SeekObjectImageAnim +_081547E8: + movs r0, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8154758 + + thumb_func_start unc_grass_tall +unc_grass_tall: @ 8154800 + 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, =0x02037334 + ldrb r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0815484C + ldr r0, =0x03005d8c + ldr r2, [r0] + movs r0, 0x5 + ldrsb r0, [r2, r0] + cmp r0, r7 + bne _08154832 + movs r0, 0x4 + ldrsb r0, [r2, r0] + cmp r0, r6 + beq _0815484C +_08154832: + 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] +_0815484C: + 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 _081548A0 + adds r0, r4, 0 + bl MetatileBehavior_IsLongGrass + lsls r0, 24 + cmp r0, 0 + beq _081548A0 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _081548B4 + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _081548B4 +_081548A0: + adds r0, r5, 0 + movs r1, 0x11 + bl FieldEffectStop + b _081548EA + .pool +_081548B4: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r2, r0, r1 + ldr r0, [r2, 0x10] + ldr r1, [r5, 0x30] + cmp r0, r1 + beq _081548D4 + ldr r0, [r2, 0x14] + cmp r0, r1 + beq _081548D4 + movs r0, 0x1 + strh r0, [r5, 0x3C] +_081548D4: + adds r0, r5, 0 + movs r1, 0 + bl sub_80979D4 + ldrh r1, [r5, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + movs r2, 0 + bl sub_81561FC +_081548EA: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end unc_grass_tall + + thumb_func_start sub_81548FC +sub_81548FC: @ 81548FC + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x40] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08154958 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + 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] +_08154958: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_81548FC + + thumb_func_start sub_815496C +sub_815496C: @ 815496C + push {r4-r6,lr} + ldr r6, =0x02038c08 + 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, =0x02037350 + adds r5, r1, r0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x78] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _081549F8 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r4, =0x02020630 + 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] +_081549F8: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end sub_815496C + + thumb_func_start sub_8154A10 +sub_8154A10: @ 8154A10 + 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 _08154A4E + ldr r5, =0x02037350 + 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 _08154A5C +_08154A4E: + adds r0, r4, 0 + movs r1, 0x29 + bl FieldEffectStop + b _08154AF2 + .pool +_08154A5C: + 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, =0x02020630 + 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 _08154A98 + lsls r0, r5, 16 + asrs r0, 16 + movs r2, 0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + beq _08154AB2 +_08154A98: + 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 _08154AB2 + adds r0, r4, 0 + movs r1, 0 + bl StartObjectImageAnim +_08154AB2: + 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_80979D4 +_08154AF2: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8154A10 + + thumb_func_start sub_8154B04 +sub_8154B04: @ 8154B04 + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x2C] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl AddObjectToBack + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _08154B62 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + 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 StartObjectImageAnim +_08154B62: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8154B04 + + thumb_func_start sub_8154B78 +sub_8154B78: @ 8154B78 + push {r4,r5,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x5C] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl AddObjectToBack + lsls r0, 24 + lsrs r1, r0, 24 + adds r5, r1, 0 + cmp r1, 0x40 + beq _08154BD8 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + 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 StartObjectImageAnim +_08154BD8: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8154B78 + + thumb_func_start sub_8154BEC +sub_8154BEC: @ 8154BEC + push {r4,r5,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x6C] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl AddObjectToBack + lsls r0, 24 + lsrs r1, r0, 24 + adds r5, r1, 0 + cmp r1, 0x40 + beq _08154C4C + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + 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 StartObjectImageAnim +_08154C4C: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8154BEC + + thumb_func_start sub_8154C60 +sub_8154C60: @ 8154C60 + push {lr} + ldr r2, =gUnknown_085CDC4C + movs r3, 0x2E + ldrsh r1, [r0, r3] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .pool + thumb_func_end sub_8154C60 + + thumb_func_start sub_8154C7C +sub_8154C7C: @ 8154C7C + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _08154C92 + movs r0, 0x1 + strh r0, [r1, 0x2E] +_08154C92: + adds r0, r1, 0 + movs r1, 0 + bl sub_80979D4 + pop {r0} + bx r0 + thumb_func_end sub_8154C7C + + thumb_func_start sub_8154CA0 +sub_8154CA0: @ 8154CA0 + push {r4,lr} + adds r4, r0, 0 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + ldrb r1, [r3] + lsls r1, 29 + lsrs r1, 31 + adds r0, r4, 0 + bl sub_80979D4 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x38 + ble _08154CE4 + ldrh r1, [r4, 0x3C] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldEffectStop +_08154CE4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8154CA0 + + thumb_func_start sub_8154CEC +sub_8154CEC: @ 8154CEC + push {r4-r6,lr} + ldr r6, =0x02038c08 + 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, =0x02037350 + adds r5, r1, r0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x34] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x40 + beq _08154D76 + ldrb r0, [r5, 0x5] + bl GetFieldObjectGraphicsInfo + lsls r3, r4, 4 + adds r3, r4 + lsls r3, 2 + ldr r4, =0x02020630 + 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 audio_play +_08154D76: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8154CEC + + thumb_func_start sub_8154D90 +sub_8154D90: @ 8154D90 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _08154DC0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + beq _08154DCA +_08154DC0: + adds r0, r4, 0 + movs r1, 0xF + bl FieldEffectStop + b _08154E0A +_08154DCA: + ldr r3, =0x02020630 + ldr r2, =0x02037350 + 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_80979D4 +_08154E0A: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8154D90 + + thumb_func_start sub_8154E1C +sub_8154E1C: @ 8154E1C + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0xC + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x38] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08154E78 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r4, 0x8] + strh r0, [r2, 0x2E] + movs r0, 0x10 + strh r0, [r2, 0x30] +_08154E78: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8154E1C + + thumb_func_start oei_water_drop_tall +oei_water_drop_tall: @ 8154E8C + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x30] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08154EE8 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r4, 0x8] + strh r0, [r2, 0x2E] + movs r0, 0xE + strh r0, [r2, 0x30] +_08154EE8: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end oei_water_drop_tall + + thumb_func_start sub_8154EFC +sub_8154EFC: @ 8154EFC + push {r4-r7,lr} + ldr r7, =0x02038c08 + 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, =0x02037350 + adds r6, r1, r0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x34] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _08154F92 + ldrb r0, [r6, 0x5] + bl GetFieldObjectGraphicsInfo + adds r4, r0, 0 + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + ldr r3, =0x02020630 + adds r0, r3 + ldr r1, =sub_8154FB4 + str r1, [r0, 0x1C] + adds r5, r0, 0 + adds r5, 0x3E + ldrb r1, [r5] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r5] + ldrb r2, [r6, 0x4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + ldrb r1, [r1, 0x5] + movs r2, 0xC + ands r2, r1 + ldrb r3, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x5] + ldr r1, [r7] + strh r1, [r0, 0x2E] + ldr r1, [r7, 0x4] + strh r1, [r0, 0x30] + ldr r1, [r7, 0x8] + strh r1, [r0, 0x32] + ldr r1, =0x0000ffff + strh r1, [r0, 0x34] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x36] + ldrh r1, [r4, 0xA] + lsls r1, 16 + asrs r1, 17 + subs r1, 0x4 + strh r1, [r0, 0x26] + movs r1, 0x1 + bl StartObjectImageAnim +_08154F92: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8154EFC + + thumb_func_start sub_8154FB4 +sub_8154FB4: @ 8154FB4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _08154FEE + ldr r2, =0x02037350 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r5, r0, r2 + ldrb r0, [r5, 0x2] + lsls r0, 28 + cmp r0, 0 + blt _08154FFC +_08154FEE: + adds r0, r4, 0 + movs r1, 0x22 + bl FieldEffectStop + b _08155046 + .pool +_08154FFC: + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + 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_80979D4 + ldr r1, [r5, 0x10] + ldr r0, [r4, 0x34] + cmp r1, r0 + beq _08155046 + ldrh r0, [r5, 0x10] + strh r0, [r4, 0x34] + ldrh r0, [r5, 0x12] + strh r0, [r4, 0x36] + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08155046 + movs r0, 0x46 + bl audio_play +_08155046: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8154FB4 + + thumb_func_start oei_ripples +oei_ripples: @ 8155054 + push {r4,lr} + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x14] + ldr r4, =0x02038c08 + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _081550A0 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x5 + strh r0, [r2, 0x2E] +_081550A0: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end oei_ripples + + thumb_func_start sub_81550B4 +sub_81550B4: @ 81550B4 + push {r4-r6,lr} + ldr r6, =0x02038c08 + 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, =0x02037350 + adds r5, r1, r0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x7C] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08155140 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r4, =0x02020630 + adds r2, r4 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x5] + movs r1, 0xC + ands r1, r0 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r6] + strh r0, [r2, 0x2E] + ldr r0, [r6, 0x4] + strh r0, [r2, 0x30] + ldr r0, [r6, 0x8] + strh r0, [r2, 0x32] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x20] + strh r0, [r2, 0x34] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r0, [r0, 0x22] + strh r0, [r2, 0x36] +_08155140: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end sub_81550B4 + + thumb_func_start sub_8155158 +sub_8155158: @ 8155158 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _08155192 + ldr r5, =0x02037350 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r5 + ldrb r0, [r1, 0x2] + lsls r0, 26 + cmp r0, 0 + blt _081551A0 +_08155192: + adds r0, r4, 0 + movs r1, 0x2A + bl FieldEffectStop + b _081551E4 + .pool +_081551A0: + ldrb r0, [r1, 0x5] + bl 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, =0x02020630 + 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_80979D4 +_081551E4: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8155158 + + thumb_func_start sub_81551F0 +sub_81551F0: @ 81551F0 + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x44] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08155248 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x13 + strh r0, [r2, 0x2E] +_08155248: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_81551F0 + + thumb_func_start sub_815525C +sub_815525C: @ 815525C + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x48] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _081552B4 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x14 + strh r0, [r2, 0x2E] +_081552B4: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_815525C + + thumb_func_start sub_81552C8 +sub_81552C8: @ 81552C8 + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x4C] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08155320 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x15 + strh r0, [r2, 0x2E] +_08155320: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_81552C8 + + thumb_func_start sub_8155334 +sub_8155334: @ 8155334 + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x50] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0815538C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x16 + strh r0, [r2, 0x2E] +_0815538C: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8155334 + + thumb_func_start ash +ash: @ 81553A0 + push {r4,lr} + lsls r2, 16 + lsrs r2, 16 + ldr r4, =0x02038c08 + lsls r0, 16 + asrs r0, 16 + str r0, [r4] + lsls r1, 16 + asrs r1, 16 + str r1, [r4, 0x4] + movs r0, 0x52 + str r0, [r4, 0x8] + movs r0, 0x1 + str r0, [r4, 0xC] + str r2, [r4, 0x10] + lsls r3, 16 + asrs r3, 16 + str r3, [r4, 0x14] + movs r0, 0x7 + bl FieldEffectStart + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end ash + + thumb_func_start oei_ash +oei_ash: @ 81553D4 + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, =0x02038c08 + ldrh r1, [r5] + mov r0, sp + strh r1, [r0] + ldrh r0, [r5, 0x4] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + mov r0, sp + adds r1, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x18] + mov r1, sp + movs r2, 0 + ldrsh r1, [r1, r2] + movs r3, 0 + ldrsh r2, [r4, r3] + ldrb r3, [r5, 0x8] + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0815544A + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r5, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r5] + strh r0, [r2, 0x30] + ldr r0, [r5, 0x4] + strh r0, [r2, 0x32] + ldr r0, [r5, 0x10] + strh r0, [r2, 0x34] + ldr r0, [r5, 0x14] + strh r0, [r2, 0x36] +_0815544A: + movs r0, 0 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end oei_ash + + thumb_func_start sub_8155460 +sub_8155460: @ 8155460 + push {lr} + ldr r2, =gUnknown_085CDC54 + movs r3, 0x2E + ldrsh r1, [r0, r3] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .pool + thumb_func_end sub_8155460 + + thumb_func_start sub_815547C +sub_815547C: @ 815547C + push {lr} + adds r3, r0, 0 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + subs r2, 0x12 + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r3, 0x36] + subs r0, 0x1 + strh r0, [r3, 0x36] + lsls r0, 16 + cmp r0, 0 + bne _081554A6 + movs r0, 0x1 + strh r0, [r3, 0x2E] +_081554A6: + pop {r0} + bx r0 + thumb_func_end sub_815547C + + thumb_func_start sub_81554AC +sub_81554AC: @ 81554AC + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + subs r2, 0x12 + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + ldrh r2, [r4, 0x34] + bl MapGridSetMetatileIdAt + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl CurrentMapDrawMetatileAt + ldr r2, =0x02037350 + ldr r0, =0x02037590 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + movs r0, 0x2 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81554AC + + thumb_func_start sub_815550C +sub_815550C: @ 815550C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_80979D4 + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0815552C + adds r0, r4, 0 + movs r1, 0x7 + bl FieldEffectStop +_0815552C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_815550C + + thumb_func_start sub_8155534 +sub_8155534: @ 8155534 + push {r4,r5,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x1C] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0x96 + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + cmp r0, 0x40 + beq _0815558E + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, =0x02020630 + adds r1, r0 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r3] + ldrb r2, [r1, 0x5] + movs r0, 0xF + ands r0, r2 + strb r0, [r1, 0x5] + ldr r0, [r4, 0x8] + strh r0, [r1, 0x32] + ldr r0, =0x0000ffff + strh r0, [r1, 0x34] + movs r0, 0x1 + negs r0, r0 + strh r0, [r1, 0x3A] + strh r0, [r1, 0x3C] +_0815558E: + movs r0, 0x8 + bl FieldEffectActiveListRemove + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8155534 + + thumb_func_start sub_81555AC +sub_81555AC: @ 81555AC + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r3, =0x02020630 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrh r0, [r2, 0x2E] + movs r3, 0x10 + negs r3, r3 + ands r3, r0 + movs r0, 0xF0 + lsls r0, 20 + ands r0, r1 + lsrs r0, 24 + orrs r0, r3 + strh r0, [r2, 0x2E] + bx lr + .pool + thumb_func_end sub_81555AC + + thumb_func_start sub_81555D8 +sub_81555D8: @ 81555D8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r3, =0x02020630 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrh r0, [r2, 0x2E] + movs r3, 0xF1 + negs r3, r3 + ands r3, r0 + movs r0, 0xF0 + lsls r0, 20 + ands r0, r1 + lsrs r0, 20 + orrs r3, r0 + strh r3, [r2, 0x2E] + bx lr + .pool + thumb_func_end sub_81555D8 + + thumb_func_start sub_8155604 +sub_8155604: @ 8155604 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + ldr r4, =0x02020630 + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + adds r3, r4 + ldrh r0, [r3, 0x2E] + ldr r4, =0xfffff0ff + ands r4, r0 + movs r0, 0xF0 + lsls r0, 20 + ands r0, r1 + lsrs r0, 16 + orrs r4, r0 + strh r4, [r3, 0x2E] + strh r2, [r3, 0x30] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8155604 + + thumb_func_start sub_8155638 +sub_8155638: @ 8155638 + ldrh r1, [r0, 0x2E] + movs r0, 0xF + ands r0, r1 + bx lr + thumb_func_end sub_8155638 + + thumb_func_start sub_8155640 +sub_8155640: @ 8155640 + ldrh r1, [r0, 0x2E] + movs r0, 0xF0 + ands r0, r1 + lsrs r0, 4 + bx lr + thumb_func_end sub_8155640 + + thumb_func_start sub_815564C +sub_815564C: @ 815564C + ldrh r1, [r0, 0x2E] + movs r0, 0xF0 + lsls r0, 4 + ands r0, r1 + lsrs r0, 8 + bx lr + thumb_func_end sub_815564C + + thumb_func_start sub_8155658 +sub_8155658: @ 8155658 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x32 + ldrsh r0, [r6, r1] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, =0x02037350 + adds r4, r0 + ldrb r0, [r4, 0x4] + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + ldr r0, =0x02020630 + adds r5, r0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_81556B0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_81556E8 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_815577C + ldrb r0, [r5, 0x5] + movs r1, 0xC + ands r1, r0 + ldrb r2, [r6, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, 0x5] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8155658 + + thumb_func_start sub_81556B0 +sub_81556B0: @ 81556B0 + push {r4,r5,lr} + sub sp, 0xC + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, =gUnknown_085CDC60 + mov r0, sp + movs r2, 0x9 + bl memcpy + adds r0, r4, 0 + bl sub_8155640 + lsls r0, 24 + cmp r0, 0 + bne _081556DC + ldrb r0, [r5, 0x18] + lsrs r0, 4 + add r0, sp + ldrb r1, [r0] + adds r0, r4, 0 + bl StartObjectImageAnimIfDifferent +_081556DC: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81556B0 + + thumb_func_start sub_81556E8 +sub_81556E8: @ 81556E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r1, 0 + ldrh r2, [r0, 0x10] + mov r1, sp + strh r2, [r1] + ldrh r1, [r0, 0x12] + mov r0, sp + adds r0, 0x2 + strh r1, [r0] + movs r2, 0x26 + ldrsh r3, [r4, r2] + mov r8, r0 + cmp r3, 0 + bne _08155770 + mov r0, sp + movs r5, 0 + ldrsh r2, [r0, r5] + movs r5, 0x3A + ldrsh r0, [r4, r5] + cmp r2, r0 + bne _08155724 + lsls r0, r1, 16 + asrs r0, 16 + movs r5, 0x3C + ldrsh r1, [r4, r5] + cmp r0, r1 + beq _08155770 +_08155724: + strh r3, [r4, 0x38] + strh r2, [r4, 0x3A] + mov r1, r8 + movs r2, 0 + ldrsh r0, [r1, r2] + strh r0, [r4, 0x3C] + movs r5, 0x1 + mov r7, r8 + mov r6, sp +_08155736: + adds r0, r5, 0 + mov r1, sp + adds r2, r7, 0 + bl MoveCoords + movs r1, 0 + ldrsh r0, [r6, r1] + movs r2, 0 + ldrsh r1, [r7, r2] + bl MapGridGetZCoordAt + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0815575C + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + b _08155770 +_0815575C: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r4, 0x3A] + strh r0, [r6] + ldrh r0, [r4, 0x3C] + mov r1, r8 + strh r0, [r1] + cmp r5, 0x4 + bls _08155736 +_08155770: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81556E8 + + thumb_func_start sub_815577C +sub_815577C: @ 815577C + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r1, 0 + adds r4, r2, 0 + ldr r1, =gUnknown_085CDC6A + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + bl sub_8155638 + lsls r0, 24 + lsrs r0, 24 + adds r2, r0, 0 + cmp r2, 0 + beq _081557F6 + ldrh r1, [r4, 0x36] + adds r1, 0x1 + strh r1, [r4, 0x36] + movs r3, 0x38 + ldrsh r0, [r4, r3] + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _081557BC + ldrh r0, [r4, 0x34] + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] +_081557BC: + ldrh r1, [r4, 0x36] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _081557CC + ldrh r0, [r4, 0x34] + negs r0, r0 + strh r0, [r4, 0x34] +_081557CC: + cmp r2, 0x2 + beq _081557F6 + adds r0, r4, 0 + bl sub_815564C + lsls r0, 24 + cmp r0, 0 + bne _081557E4 + ldrh r0, [r4, 0x26] + b _081557EA + .pool +_081557E4: + ldrh r0, [r4, 0x26] + ldrh r3, [r4, 0x30] + adds r0, r3 +_081557EA: + strh r0, [r5, 0x26] + ldrh r0, [r5, 0x20] + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r4, 0x22] +_081557F6: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_815577C + + thumb_func_start sub_8155800 +sub_8155800: @ 8155800 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, =gUnknown_082EC6AC + movs r1, 0 + movs r2, 0 + movs r3, 0xFF + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r1, =0x02020630 + adds r2, r1 + ldr r1, =sub_8155850 + str r1, [r2, 0x1C] + movs r1, 0x3E + adds r1, r2 + mov r12, r1 + ldrb r1, [r1] + movs r3, 0x4 + orrs r1, r3 + mov r3, r12 + strb r1, [r3] + strh r4, [r2, 0x2E] + movs r1, 0x1 + strh r1, [r2, 0x30] + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8155800 + + thumb_func_start sub_8155850 +sub_8155850: @ 8155850 + push {lr} + adds r2, r0, 0 + movs r0, 0x2E + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + adds r3, r0, r1 + ldrh r1, [r2, 0x32] + adds r0, r1, 0x1 + strh r0, [r2, 0x32] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08155878 + ldrh r0, [r2, 0x30] + ldrh r1, [r3, 0x26] + adds r0, r1 + strh r0, [r3, 0x26] +_08155878: + ldrh r1, [r2, 0x32] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _08155888 + ldrh r0, [r2, 0x30] + negs r0, r0 + strh r0, [r2, 0x30] +_08155888: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8155850 + + thumb_func_start sub_8155890 +sub_8155890: @ 8155890 + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0xC + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x24] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _081558EC + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldr r0, [r4, 0x8] + strh r0, [r2, 0x2E] + movs r0, 0xA + strh r0, [r2, 0x30] +_081558EC: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8155890 + + thumb_func_start sub_8155900 +sub_8155900: @ 8155900 + push {r4-r7,lr} + ldr r7, =0x02038c08 + 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, =0x02037350 + adds r6, r1, r0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x74] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x40 + beq _081559A4 + ldrb r0, [r6, 0x5] + bl GetFieldObjectGraphicsInfo + adds r5, r0, 0 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r4, =0x02020630 + 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 SeekObjectImageAnim +_081559A4: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8155900 + + thumb_func_start sub_81559BC +sub_81559BC: @ 81559BC + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x32] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _081559F6 + ldr r2, =0x02037350 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + ldrb r0, [r1, 0x2] + lsls r0, 27 + cmp r0, 0 + blt _08155A04 +_081559F6: + adds r0, r4, 0 + movs r1, 0x27 + bl FieldEffectStop + b _08155A76 + .pool +_08155A04: + ldr r2, =0x02020630 + ldrb r1, [r1, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r5, [r0, 0x22] + ldrh r6, [r0, 0x20] + movs r2, 0x20 + ldrsh r1, [r0, r2] + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08155A2C + lsls r0, r5, 16 + asrs r0, 16 + movs r2, 0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + beq _08155A46 +_08155A2C: + strh r6, [r4, 0x34] + strh r5, [r4, 0x36] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08155A46 + adds r0, r4, 0 + movs r1, 0 + bl StartObjectImageAnim +_08155A46: + strh r6, [r4, 0x20] + strh r5, [r4, 0x22] + ldr r3, =0x02020630 + ldr r2, =0x02037350 + 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_80979D4 +_08155A76: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81559BC + + thumb_func_start sub_8155A88 +sub_8155A88: @ 8155A88 + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + adds r0, 0x88 + ldr r0, [r0] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0x52 + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08155AD8 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, =0x02020630 + adds r1, r0 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r3] + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1, 0x5] +_08155AD8: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8155A88 + + thumb_func_start sub_8155AEC +sub_8155AEC: @ 8155AEC + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + movs r1, 0x80 + lsls r1, 1 + ands r0, r1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x22] + subs r1, r0 + strh r1, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0 + bl sub_80979D4 + ldrh r1, [r4, 0x3E] + ldr r0, =0x00001004 + ands r0, r1 + cmp r0, 0 + beq _08155B20 + adds r0, r4, 0 + movs r1, 0x35 + bl FieldEffectStop +_08155B20: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8155AEC + + thumb_func_start sub_8155B2C +sub_8155B2C: @ 8155B2C + push {r4,lr} + ldr r4, =0x02038c08 + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x4 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x58] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0x8] + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08155B8C + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + movs r0, 0x3 + ldrb r1, [r4, 0xC] + ands r1, r0 + lsls r1, 2 + ldrb r3, [r2, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + movs r1, 0xF + ands r0, r1 + movs r1, 0x50 + orrs r0, r1 + strb r0, [r2, 0x5] + movs r0, 0x17 + strh r0, [r2, 0x2E] +_08155B8C: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8155B2C + + thumb_func_start ShowTreeDisguiseFieldEffect +@ u8 ShowTreeDisguiseFieldEffect() +ShowTreeDisguiseFieldEffect: @ 8155BA0 + push {lr} + movs r0, 0x1C + movs r1, 0x18 + movs r2, 0x4 + bl ShowDisguiseFieldEffect + pop {r1} + bx r1 + thumb_func_end ShowTreeDisguiseFieldEffect + + thumb_func_start ShowMountainDisguiseFieldEffect +@ u8 ShowMountainDisguiseFieldEffect() +ShowMountainDisguiseFieldEffect: @ 8155BB0 + push {lr} + movs r0, 0x1D + movs r1, 0x19 + movs r2, 0x3 + bl ShowDisguiseFieldEffect + pop {r1} + bx r1 + thumb_func_end ShowMountainDisguiseFieldEffect + + thumb_func_start ShowSandDisguiseFieldEffect +@ u8 ShowSandDisguiseFieldEffect() +ShowSandDisguiseFieldEffect: @ 8155BC0 + push {lr} + movs r0, 0x24 + movs r1, 0x1C + movs r2, 0x2 + bl ShowDisguiseFieldEffect + pop {r1} + bx r1 + thumb_func_end ShowSandDisguiseFieldEffect + + thumb_func_start ShowDisguiseFieldEffect +@ u8 ShowDisguiseFieldEffect(u8 fieldEffectId, u8 fieldEffectObjectId, u8 paletteSlot) +ShowDisguiseFieldEffect: @ 8155BD0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + mov r8, r4 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r7, r2, 24 + ldr r5, =0x02038c08 + ldrb r0, [r5] + ldrb r1, [r5, 0x4] + ldrb r2, [r5, 0x8] + mov r3, sp + bl TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + beq _08155C08 + adds r0, r4, 0 + bl FieldEffectActiveListRemove + movs r0, 0x40 + b _08155C74 + .pool +_08155C08: + ldr r1, =gFieldEffectObjectTemplatePointers + lsls r0, r6, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AddObjectToBack + mov r1, sp + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _08155C70 + mov r0, sp + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02020630 + adds r2, r0 + movs r0, 0x3E + adds r0, r2 + mov r12, r0 + ldrb r3, [r0] + lsls r1, r3, 30 + lsrs r1, 31 + adds r1, 0x1 + movs r0, 0x1 + ands r1, r0 + lsls r1, 1 + movs r0, 0x3 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + lsls r3, r7, 4 + ldrb r1, [r2, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r3 + strb r0, [r2, 0x5] + mov r0, r8 + strh r0, [r2, 0x30] + ldr r0, [r5] + strh r0, [r2, 0x32] + ldr r0, [r5, 0x4] + strh r0, [r2, 0x34] + ldr r0, [r5, 0x8] + strh r0, [r2, 0x36] +_08155C70: + mov r0, sp + ldrb r0, [r0] +_08155C74: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end ShowDisguiseFieldEffect + + thumb_func_start sub_8155C88 +sub_8155C88: @ 8155C88 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r0, [r5, 0x32] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x34] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r5, 0x36] + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + beq _08155CB8 + ldrh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl FieldEffectStop +_08155CB8: + ldr r4, =0x02037350 + 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, =0x02020630 + adds r2, r1 + adds r1, r2, 0 + adds r1, 0x3E + ldrb r1, [r1] + movs r3, 0x3E + adds r3, r5 + mov r12, r3 + movs r3, 0x4 + ands r3, r1 + mov r1, r12 + ldrb r4, [r1] + movs r1, 0x5 + negs r1, r1 + ands r1, r4 + orrs r1, r3 + mov r3, r12 + strb r1, [r3] + ldrh r1, [r2, 0x20] + strh r1, [r5, 0x20] + ldrh r0, [r0, 0xA] + lsls r0, 16 + asrs r0, 17 + ldrh r1, [r2, 0x22] + adds r0, r1 + subs r0, 0x10 + strh r0, [r5, 0x22] + adds r2, 0x43 + ldrb r0, [r2] + subs r0, 0x1 + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r1, [r5, 0x2E] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0x1 + bne _08155D38 + adds r0, r1, 0x1 + strh r0, [r5, 0x2E] + adds r0, r5, 0 + movs r1, 0x1 + bl StartObjectImageAnim +_08155D38: + movs r3, 0x2E + ldrsh r0, [r5, r3] + ldrh r2, [r5, 0x2E] + cmp r0, 0x2 + bne _08155D54 + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08155D54 + movs r0, 0x1 + strh r0, [r5, 0x3C] +_08155D54: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _08155D68 + ldrh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl FieldEffectStop +_08155D68: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8155C88 + + thumb_func_start sub_8155D78 +sub_8155D78: @ 8155D78 + push {lr} + adds r1, r0, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x1 + bne _08155D96 + ldr r2, =0x02020630 + ldrb r1, [r1, 0x1A] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x2E] + adds r1, 0x1 + strh r1, [r0, 0x2E] +_08155D96: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8155D78 + + thumb_func_start sub_8155DA0 +sub_8155DA0: @ 8155DA0 + push {lr} + adds r2, r0, 0 + adds r2, 0x21 + ldrb r1, [r2] + cmp r1, 0x2 + beq _08155DD6 + cmp r1, 0 + beq _08155DD6 + ldrb r1, [r0, 0x1A] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + adds r1, r0, r1 + movs r3, 0x3C + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _08155DCC + movs r0, 0 + b _08155DD8 + .pool +_08155DCC: + movs r0, 0x2 + strb r0, [r2] + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] +_08155DD6: + movs r0, 0x1 +_08155DD8: + pop {r1} + bx r1 + thumb_func_end sub_8155DA0 + + thumb_func_start sub_8155DDC +sub_8155DDC: @ 8155DDC + push {r4,lr} + ldr r4, =0x02038c08 + ldr r0, [r4] + adds r0, 0x7 + str r0, [r4] + ldr r0, [r4, 0x4] + adds r0, 0x7 + str r0, [r4, 0x4] + adds r1, r4, 0x4 + adds r0, r4, 0 + movs r2, 0x8 + movs r3, 0x8 + bl sub_80930E0 + ldr r0, =gFieldEffectObjectTemplatePointers + adds r0, 0x8C + ldr r0, [r0] + movs r2, 0 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r3, 0x52 + bl AddObjectToBack + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _08155E3C + ldr r0, =0x02020630 + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + movs r0, 0x3 + ldrb r2, [r4, 0x8] + ands r2, r0 + lsls r2, 2 + ldrb r3, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1] +_08155E3C: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8155DDC + + thumb_func_start sub_8155E50 +sub_8155E50: @ 8155E50 + push {lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _08155E84 + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08155E7C + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] +_08155E7C: + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _08155E9A +_08155E84: + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x22 + ble _08155E9A + adds r0, r2, 0 + movs r1, 0x36 + bl FieldEffectStop +_08155E9A: + pop {r0} + bx r0 + thumb_func_end sub_8155E50 + + thumb_func_start sub_8155EA0 +sub_8155EA0: @ 8155EA0 + movs r1, 0 + strh r1, [r0, 0x3A] + strh r1, [r0, 0x3C] + bx lr + thumb_func_end sub_8155EA0 + + thumb_func_start sub_8155EA8 +sub_8155EA8: @ 8155EA8 + push {r4-r6,lr} + adds r5, r0, 0 + movs r6, 0 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _08155EDE + cmp r0, 0x1 + bgt _08155EC0 + cmp r0, 0 + beq _08155ECA + b _08155F42 +_08155EC0: + cmp r0, 0x2 + beq _08155F06 + cmp r0, 0x3 + beq _08155F1A + b _08155F42 +_08155ECA: + movs r2, 0x3A + ldrsh r0, [r5, r2] + bl sub_809773C + ldrh r1, [r5, 0x24] + adds r0, r1 + strh r0, [r5, 0x24] + movs r2, 0x3A + ldrsh r0, [r5, r2] + b _08155F38 +_08155EDE: + ldrh r0, [r5, 0x3A] + movs r4, 0x47 + subs r0, r4, r0 + lsls r0, 16 + asrs r0, 16 + bl sub_809773C + ldrh r1, [r5, 0x24] + subs r1, r0 + strh r1, [r5, 0x24] + ldrh r0, [r5, 0x3A] + subs r4, r0 + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + bl sub_8097728 + ldrh r2, [r5, 0x26] + adds r0, r2 + b _08155F40 +_08155F06: + movs r1, 0x3A + ldrsh r0, [r5, r1] + bl sub_809773C + ldrh r1, [r5, 0x24] + subs r1, r0 + strh r1, [r5, 0x24] + movs r2, 0x3A + ldrsh r0, [r5, r2] + b _08155F38 +_08155F1A: + ldrh r0, [r5, 0x3A] + movs r4, 0x47 + subs r0, r4, r0 + lsls r0, 16 + asrs r0, 16 + bl sub_809773C + ldrh r2, [r5, 0x24] + adds r0, r2 + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x3A] + subs r4, r0 + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 +_08155F38: + bl sub_8097728 + ldrh r1, [r5, 0x26] + adds r0, r1 +_08155F40: + strh r0, [r5, 0x26] +_08155F42: + ldrh r1, [r5, 0x24] + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x10 + bl SetGpuReg + ldrh r0, [r5, 0x3A] + adds r0, 0x1 + movs r1, 0 + strh r0, [r5, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x48 + bne _08155F68 + strh r1, [r5, 0x3A] + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] +_08155F68: + movs r2, 0x3C + ldrsh r0, [r5, r2] + cmp r0, 0x4 + bne _08155F76 + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + movs r6, 0x1 +_08155F76: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8155EA8 + + thumb_func_start sub_8155F80 +sub_8155F80: @ 8155F80 + push {r4-r7,lr} + adds r5, r0, 0 + movs r1, 0x32 + ldrsh r0, [r5, r1] + cmp r0, 0x8 + bls _08155F8E + b _08156156 +_08155F8E: + lsls r0, 2 + ldr r1, =_08155F9C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08155F9C: + .4byte _08155FC0 + .4byte _08156034 + .4byte _0815606C + .4byte _08156090 + .4byte _081560C0 + .4byte _081560D4 + .4byte _081560E0 + .4byte _0815610E + .4byte _08156120 +_08155FC0: + movs r2, 0x2E + ldrsh r0, [r5, r2] + movs r1, 0x3 + bl __divsi3 + movs r1, 0x78 + subs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x12 + bl SetGpuReg + movs r3, 0x2E + ldrsh r0, [r5, r3] + cmp r0, 0x60 + bne _08156016 + movs r1, 0 + ldr r4, =0x0600f800 + mov r12, r4 + ldr r0, =0x0000bff4 + adds r7, r0, 0 +_08155FEA: + movs r2, 0xC + lsls r0, r1, 1 + adds r3, r1, 0x1 + lsls r6, r1, 5 + adds r0, r1 + lsls r4, r0, 1 +_08155FF6: + adds r0, r6, r2 + lsls r0, 1 + add r0, r12 + adds r1, r2, r7 + adds r1, r4, r1 + adds r1, 0x1 + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x11 + bls _08155FF6 + lsls r0, r3, 24 + lsrs r1, r0, 24 + cmp r1, 0x2 + bls _08155FEA +_08156016: + movs r2, 0x2E + ldrsh r1, [r5, r2] + ldr r0, =0x00000137 + cmp r1, r0 + bgt _08156022 + b _08156156 +_08156022: + movs r1, 0 + movs r0, 0x1 + b _0815611A + .pool +_08156034: + ldr r4, =gUnknown_08329F40 + movs r3, 0x2E + ldrsh r0, [r5, r3] + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + asrs r0, 15 + adds r0, r4 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 18 + ldrh r4, [r5, 0x36] + adds r0, r4 + movs r1, 0 + strh r0, [r5, 0x22] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0xBD + bne _08156156 + movs r0, 0x2 + strh r0, [r5, 0x32] + strh r1, [r5, 0x38] + strh r1, [r5, 0x2E] + b _08156156 + .pool +_0815606C: + movs r3, 0x2E + ldrsh r0, [r5, r3] + cmp r0, 0x3C + bne _0815607E + ldrh r0, [r5, 0x38] + adds r0, 0x1 + movs r1, 0 + strh r0, [r5, 0x38] + strh r1, [r5, 0x2E] +_0815607E: + movs r4, 0x38 + ldrsh r0, [r5, r4] + cmp r0, 0x7 + bne _08156156 + movs r0, 0 + strh r0, [r5, 0x38] + movs r0, 0x3 + strh r0, [r5, 0x32] + b _08156156 +_08156090: + ldrh r2, [r5, 0x26] + movs r0, 0x26 + ldrsh r1, [r5, r0] + adds r3, r2, 0 + cmp r1, 0 + bne _081560A4 + strh r1, [r5, 0x2E] + ldrh r0, [r5, 0x32] + adds r0, 0x1 + strh r0, [r5, 0x32] +_081560A4: + movs r4, 0x2E + ldrsh r0, [r5, r4] + cmp r0, 0x5 + bne _08156156 + movs r0, 0 + strh r0, [r5, 0x2E] + cmp r1, 0 + ble _081560BA + subs r0, r3, 0x1 + strh r0, [r5, 0x26] + b _08156156 +_081560BA: + adds r0, r2, 0x1 + strh r0, [r5, 0x26] + b _08156156 +_081560C0: + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x3C + bne _08156156 + movs r1, 0 + movs r0, 0x5 + strh r0, [r5, 0x32] + strh r1, [r5, 0x2E] + strh r1, [r5, 0x38] + b _08156156 +_081560D4: + adds r0, r5, 0 + bl sub_8155EA0 + movs r1, 0 + movs r0, 0x6 + b _0815611A +_081560E0: + adds r0, r5, 0 + bl sub_8155EA8 + lsls r0, 24 + cmp r0, 0 + beq _08156156 + movs r1, 0 + strh r1, [r5, 0x2E] + ldrh r0, [r5, 0x38] + adds r0, 0x1 + strh r0, [r5, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bgt _08156106 + adds r0, r5, 0 + bl sub_8155EA0 + b _08156156 +_08156106: + strh r1, [r5, 0x38] + movs r0, 0x7 + strh r0, [r5, 0x32] + b _08156156 +_0815610E: + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0x1E + bne _08156156 + movs r1, 0 + movs r0, 0x8 +_0815611A: + strh r0, [r5, 0x32] + strh r1, [r5, 0x2E] + b _08156156 +_08156120: + movs r1, 0 + ldr r6, =0x0600f800 + movs r4, 0 +_08156126: + movs r2, 0xC + adds r3, r1, 0x1 + lsls r1, 5 +_0815612C: + adds r0, r1, r2 + lsls r0, 1 + adds r0, r6 + strh r4, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x11 + bls _0815612C + lsls r0, r3, 24 + lsrs r1, r0, 24 + cmp r1, 0xE + bls _08156126 + movs r0, 0x12 + movs r1, 0 + bl SetGpuReg + adds r0, r5, 0 + movs r1, 0x40 + bl FieldEffectStop +_08156156: + movs r3, 0x32 + ldrsh r0, [r5, r3] + cmp r0, 0x1 + bne _08156184 + ldrh r1, [r5, 0x30] + movs r0, 0x7 + ands r0, r1 + adds r2, r1, 0 + cmp r0, 0 + bne _08156172 + ldrh r0, [r5, 0x34] + ldrh r4, [r5, 0x26] + adds r0, r4 + strh r0, [r5, 0x26] +_08156172: + movs r0, 0xF + ands r0, r2 + cmp r0, 0 + bne _08156180 + ldrh r0, [r5, 0x34] + negs r0, r0 + strh r0, [r5, 0x34] +_08156180: + adds r0, r1, 0x1 + strh r0, [r5, 0x30] +_08156184: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8155F80 + + thumb_func_start sub_8156194 +sub_8156194: @ 8156194 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _081561B2 + ldrh r1, [r4, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldEffectStop + b _081561C8 +_081561B2: + adds r0, r4, 0 + movs r1, 0 + bl sub_80979D4 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + movs r2, 0 + bl SetObjectSubpriorityByZCoord +_081561C8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8156194 + + thumb_func_start sub_81561D0 +sub_81561D0: @ 81561D0 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _081561EE + ldrh r1, [r2, 0x2E] + lsls r1, 24 + lsrs r1, 24 + adds r0, r2, 0 + bl FieldEffectStop + b _081561F6 +_081561EE: + adds r0, r2, 0 + movs r1, 0 + bl sub_80979D4 +_081561F6: + pop {r0} + bx r0 + thumb_func_end sub_81561D0 + + thumb_func_start sub_81561FC +sub_81561FC: @ 81561FC + push {r4-r7,lr} + adds r6, r0, 0 + adds r0, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r2, 24 + lsrs r2, 24 + adds r1, r6, 0 + bl SetObjectSubpriorityByZCoord + movs r7, 0 +_08156212: + lsls r0, r7, 3 + adds r0, r7 + lsls r0, 2 + ldr r1, =0x02037350 + adds r4, r0, r1 + ldrb r0, [r4] + lsls r0, 31 + cmp r0, 0 + beq _081562B4 + ldrb r0, [r4, 0x5] + bl GetFieldObjectGraphicsInfo + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + adds r5, r0, r1 + adds r0, r6, 0 + adds r0, 0x28 + movs r2, 0 + ldrsb r2, [r0, r2] + ldrh r0, [r6, 0x20] + adds r1, r0, r2 + subs r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + asrs r1, 16 + movs r0, 0x20 + ldrsh r2, [r5, r0] + cmp r1, r2 + bge _081562B4 + lsls r0, r4, 16 + asrs r0, 16 + cmp r0, r2 + ble _081562B4 + adds r0, r5, 0 + adds r0, 0x29 + movs r3, 0 + ldrsb r3, [r0, r3] + ldrh r2, [r5, 0x22] + adds r2, r3 + ldrh r4, [r5, 0x22] + adds r0, r6, 0 + adds r0, 0x29 + movs r1, 0 + ldrsb r1, [r0, r1] + ldrh r0, [r6, 0x22] + subs r0, r1 + lsls r0, 16 + asrs r0, 16 + adds r3, r0, r3 + lsls r2, 16 + asrs r2, 16 + lsls r3, 16 + asrs r3, 16 + cmp r2, r3 + blt _0815628C + cmp r2, r0 + bge _081562B4 +_0815628C: + lsls r0, r4, 16 + asrs r0, 16 + cmp r0, r3 + ble _081562B4 + adds r2, r6, 0 + adds r2, 0x43 + adds r0, r5, 0 + adds r0, 0x43 + ldrb r1, [r0] + ldrb r0, [r2] + cmp r0, r1 + bhi _081562B4 + adds r0, r1, 0x2 + strb r0, [r2] + b _081562BE + .pool +_081562B4: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0xF + bls _08156212 +_081562BE: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_81561FC + + .align 2, 0 @ Don't pad with nop. |