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