diff options
Diffstat (limited to 'asm/field_effect_helpers.s')
-rw-r--r-- | asm/field_effect_helpers.s | 4349 |
1 files changed, 4349 insertions, 0 deletions
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. |