summaryrefslogtreecommitdiff
path: root/asm/fldeff_cut.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/fldeff_cut.s')
-rw-r--r--asm/fldeff_cut.s797
1 files changed, 797 insertions, 0 deletions
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s
new file mode 100644
index 000000000..530e8034f
--- /dev/null
+++ b/asm/fldeff_cut.s
@@ -0,0 +1,797 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start SetUpFieldMove_Cut
+SetUpFieldMove_Cut: @ 80A2504
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r0, 0x52
+ bl npc_before_player_of_type
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A2534
+ ldr r1, _080A2524 @ =gUnknown_0300485C
+ ldr r0, _080A2528 @ =sub_808AB90
+ str r0, [r1]
+ ldr r1, _080A252C @ =gUnknown_03005CE4
+ ldr r0, _080A2530 @ =sub_80A2634
+ b _080A25A8
+ .align 2, 0
+_080A2524: .4byte gUnknown_0300485C
+_080A2528: .4byte sub_808AB90
+_080A252C: .4byte gUnknown_03005CE4
+_080A2530: .4byte sub_80A2634
+_080A2534:
+ ldr r4, _080A25B0 @ =gUnknown_0203923C
+ adds r1, r4, 0x2
+ adds r0, r4, 0
+ bl PlayerGetDestCoords
+ movs r7, 0
+ mov r8, r4
+_080A2542:
+ ldr r1, _080A25B4 @ =0x0000ffff
+ adds r0, r7, r1
+ mov r2, r8
+ ldrh r2, [r2, 0x2]
+ adds r0, r2
+ movs r6, 0
+ lsls r0, 16
+ asrs r5, r0, 16
+_080A2552:
+ ldr r1, _080A25B4 @ =0x0000ffff
+ adds r0, r6, r1
+ mov r2, r8
+ ldrh r2, [r2]
+ adds r0, r2
+ lsls r0, 16
+ asrs r4, r0, 16
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl MapGridGetZCoordAt
+ lsls r0, 24
+ lsrs r0, 24
+ mov r2, r8
+ movs r1, 0x4
+ ldrsb r1, [r2, r1]
+ cmp r0, r1
+ bne _080A25C8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_8056E14
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _080A259E
+ adds r0, r4, 0
+ bl MetatileBehavior_IsAsh
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A25C8
+_080A259E:
+ ldr r1, _080A25B8 @ =gUnknown_0300485C
+ ldr r0, _080A25BC @ =sub_808AB90
+ str r0, [r1]
+ ldr r1, _080A25C0 @ =gUnknown_03005CE4
+ ldr r0, _080A25C4 @ =sub_80A25E8
+_080A25A8:
+ str r0, [r1]
+ movs r0, 0x1
+ b _080A25DE
+ .align 2, 0
+_080A25B0: .4byte gUnknown_0203923C
+_080A25B4: .4byte 0x0000ffff
+_080A25B8: .4byte gUnknown_0300485C
+_080A25BC: .4byte sub_808AB90
+_080A25C0: .4byte gUnknown_03005CE4
+_080A25C4: .4byte sub_80A25E8
+_080A25C8:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x2
+ bls _080A2552
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x2
+ bls _080A2542
+ movs r0, 0
+_080A25DE:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end SetUpFieldMove_Cut
+
+ thumb_func_start sub_80A25E8
+sub_80A25E8: @ 80A25E8
+ push {lr}
+ movs r0, 0x1
+ bl FieldEffectStart
+ ldr r0, _080A25FC @ =gUnknown_0202FF84
+ ldr r1, _080A2600 @ =gUnknown_03005CE0
+ ldrb r1, [r1]
+ str r1, [r0]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A25FC: .4byte gUnknown_0202FF84
+_080A2600: .4byte gUnknown_03005CE0
+ thumb_func_end sub_80A25E8
+
+ thumb_func_start FldEff_UseCutOnGrass
+FldEff_UseCutOnGrass: @ 80A2604
+ push {lr}
+ bl oei_task_add
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080A262C @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r2, _080A2630 @ =sub_80A2684
+ lsrs r0, r2, 16
+ strh r0, [r1, 0x18]
+ strh r2, [r1, 0x1A]
+ movs r0, 0x12
+ bl sav12_xor_increment
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080A262C: .4byte gTasks
+_080A2630: .4byte sub_80A2684
+ thumb_func_end FldEff_UseCutOnGrass
+
+ thumb_func_start sub_80A2634
+sub_80A2634: @ 80A2634
+ push {lr}
+ ldr r1, _080A2648 @ =gUnknown_0202FF84
+ ldr r0, _080A264C @ =gUnknown_03005CE0
+ ldrb r0, [r0]
+ str r0, [r1]
+ ldr r0, _080A2650 @ =UseCutScript
+ bl ScriptContext1_SetupScript
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2648: .4byte gUnknown_0202FF84
+_080A264C: .4byte gUnknown_03005CE0
+_080A2650: .4byte UseCutScript
+ thumb_func_end sub_80A2634
+
+ thumb_func_start FldEff_UseCutOnTree
+FldEff_UseCutOnTree: @ 80A2654
+ push {lr}
+ bl oei_task_add
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080A267C @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r2, _080A2680 @ =sub_80A2B00
+ lsrs r0, r2, 16
+ strh r0, [r1, 0x18]
+ strh r2, [r1, 0x1A]
+ movs r0, 0x12
+ bl sav12_xor_increment
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080A267C: .4byte gTasks
+_080A2680: .4byte sub_80A2B00
+ thumb_func_end FldEff_UseCutOnTree
+
+ thumb_func_start sub_80A2684
+sub_80A2684: @ 80A2684
+ push {lr}
+ movs r0, 0x1
+ bl FieldEffectActiveListRemove
+ movs r0, 0x3A
+ bl FieldEffectStart
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A2684
+
+ thumb_func_start FldEff_CutGrass
+FldEff_CutGrass: @ 80A2698
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r7, 0
+ movs r0, 0x80
+ bl PlaySE
+ ldr r4, _080A2790 @ =gUnknown_0203923C
+ adds r1, r4, 0x2
+ adds r0, r4, 0
+ bl PlayerGetDestCoords
+ mov r8, r4
+_080A26B2:
+ ldr r1, _080A2794 @ =0x0000ffff
+ adds r0, r7, r1
+ mov r2, r8
+ ldrh r2, [r2, 0x2]
+ adds r0, r2
+ movs r6, 0
+ lsls r0, 16
+ asrs r5, r0, 16
+_080A26C2:
+ ldr r1, _080A2794 @ =0x0000ffff
+ adds r0, r6, r1
+ mov r2, r8
+ ldrh r2, [r2]
+ adds r0, r2
+ lsls r0, 16
+ asrs r4, r0, 16
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl MapGridGetZCoordAt
+ lsls r0, 24
+ lsrs r0, 24
+ mov r2, r8
+ movs r1, 0x4
+ ldrsb r1, [r2, r1]
+ cmp r0, r1
+ bne _080A270E
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80578F8
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A270E
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80A27A8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_805BCC0
+_080A270E:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x2
+ bls _080A26C2
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x2
+ bls _080A26B2
+ ldr r1, _080A2790 @ =gUnknown_0203923C
+ ldrh r0, [r1]
+ subs r0, 0x1
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r1, [r1, 0x2]
+ subs r1, 0x2
+ lsls r1, 16
+ asrs r1, 16
+ bl sub_80A28F4
+ bl DrawWholeMapView
+ movs r7, 0
+ ldr r4, _080A2798 @ =gSprites
+_080A2740:
+ ldr r0, _080A279C @ =gPlayerAvatar
+ ldrb r1, [r0, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r0, 0x2]
+ lsls r1, 23
+ lsrs r1, 7
+ movs r2, 0x80
+ lsls r2, 12
+ adds r1, r2
+ asrs r1, 16
+ ldrb r2, [r0]
+ adds r2, 0x14
+ ldr r0, _080A27A0 @ =gSpriteTemplate_CutGrass
+ movs r3, 0
+ bl CreateSprite
+ ldr r1, _080A27A4 @ =0x0201fff0
+ adds r1, r7, r1
+ strb r0, [r1]
+ ldrb r1, [r1]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ lsls r1, r7, 5
+ strh r1, [r0, 0x32]
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080A2740
+ movs r0, 0
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080A2790: .4byte gUnknown_0203923C
+_080A2794: .4byte 0x0000ffff
+_080A2798: .4byte gSprites
+_080A279C: .4byte gPlayerAvatar
+_080A27A0: .4byte gSpriteTemplate_CutGrass
+_080A27A4: .4byte 0x0201fff0
+ thumb_func_end FldEff_CutGrass
+
+ thumb_func_start sub_80A27A8
+sub_80A27A8: @ 80A27A8
+ push {r4-r7,lr}
+ lsls r0, 16
+ lsls r1, 16
+ lsrs r6, r0, 16
+ asrs r4, r0, 16
+ lsrs r7, r1, 16
+ asrs r5, r1, 16
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl MapGridGetMetatileIdAt
+ adds r1, r0, 0
+ ldr r0, _080A27E0 @ =0x00000207
+ cmp r1, r0
+ bgt _080A27F4
+ subs r0, 0x1
+ cmp r1, r0
+ bge _080A286C
+ cmp r1, 0x25
+ beq _080A288E
+ cmp r1, 0x25
+ bgt _080A27E4
+ cmp r1, 0xD
+ beq _080A2834
+ cmp r1, 0x15
+ beq _080A2834
+ b _080A2898
+ .align 2, 0
+_080A27E0: .4byte 0x00000207
+_080A27E4:
+ movs r0, 0xE3
+ lsls r0, 1
+ cmp r1, r0
+ beq _080A2844
+ adds r0, 0x1
+ cmp r1, r0
+ beq _080A284A
+ b _080A2898
+_080A27F4:
+ ldr r0, _080A280C @ =0x00000212
+ cmp r1, r0
+ beq _080A287C
+ cmp r1, r0
+ bgt _080A2810
+ subs r0, 0xA
+ cmp r1, r0
+ beq _080A2834
+ adds r0, 0x2
+ cmp r1, r0
+ beq _080A287C
+ b _080A2898
+ .align 2, 0
+_080A280C: .4byte 0x00000212
+_080A2810:
+ ldr r0, _080A2824 @ =0x00000282
+ cmp r1, r0
+ beq _080A285C
+ cmp r1, r0
+ bgt _080A2828
+ subs r0, 0x1
+ cmp r1, r0
+ beq _080A2854
+ b _080A2898
+ .align 2, 0
+_080A2824: .4byte 0x00000282
+_080A2828:
+ ldr r0, _080A2830 @ =0x00000283
+ cmp r1, r0
+ beq _080A2864
+ b _080A2898
+ .align 2, 0
+_080A2830: .4byte 0x00000283
+_080A2834:
+ lsls r0, r6, 16
+ asrs r0, 16
+ lsls r1, r7, 16
+ asrs r1, 16
+ movs r2, 0x1
+ bl MapGridSetMetatileIdAt
+ b _080A2898
+_080A2844:
+ movs r2, 0xE7
+ lsls r2, 1
+ b _080A286E
+_080A284A:
+ ldr r2, _080A2850 @ =0x000001cf
+ b _080A286E
+ .align 2, 0
+_080A2850: .4byte 0x000001cf
+_080A2854:
+ ldr r2, _080A2858 @ =0x00000279
+ b _080A286E
+ .align 2, 0
+_080A2858: .4byte 0x00000279
+_080A285C:
+ ldr r2, _080A2860 @ =0x0000027a
+ b _080A286E
+ .align 2, 0
+_080A2860: .4byte 0x0000027a
+_080A2864:
+ ldr r2, _080A2868 @ =0x0000027b
+ b _080A286E
+ .align 2, 0
+_080A2868: .4byte 0x0000027b
+_080A286C:
+ ldr r2, _080A2878 @ =0x00000271
+_080A286E:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl MapGridSetMetatileIdAt
+ b _080A2898
+ .align 2, 0
+_080A2878: .4byte 0x00000271
+_080A287C:
+ lsls r0, r6, 16
+ asrs r0, 16
+ lsls r1, r7, 16
+ asrs r1, 16
+ movs r2, 0x86
+ lsls r2, 2
+ bl MapGridSetMetatileIdAt
+ b _080A2898
+_080A288E:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0xE
+ bl MapGridSetMetatileIdAt
+_080A2898:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A27A8
+
+ thumb_func_start sub_80A28A0
+sub_80A28A0: @ 80A28A0
+ push {lr}
+ lsls r0, 16
+ asrs r0, 16
+ lsls r1, 16
+ asrs r1, 16
+ bl MapGridGetMetatileIdAt
+ lsls r0, 16
+ lsrs r1, r0, 16
+ adds r2, r1, 0
+ cmp r1, 0x1
+ bne _080A28BC
+ movs r0, 0x1
+ b _080A28EE
+_080A28BC:
+ ldr r0, _080A28C8 @ =0x00000279
+ cmp r1, r0
+ bne _080A28CC
+ movs r0, 0x2
+ b _080A28EE
+ .align 2, 0
+_080A28C8: .4byte 0x00000279
+_080A28CC:
+ ldr r0, _080A28D8 @ =0x0000027a
+ cmp r1, r0
+ bne _080A28DC
+ movs r0, 0x3
+ b _080A28EE
+ .align 2, 0
+_080A28D8: .4byte 0x0000027a
+_080A28DC:
+ ldr r0, _080A28E8 @ =0x0000027b
+ cmp r2, r0
+ beq _080A28EC
+ movs r0, 0
+ b _080A28EE
+ .align 2, 0
+_080A28E8: .4byte 0x0000027b
+_080A28EC:
+ movs r0, 0x4
+_080A28EE:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A28A0
+
+ thumb_func_start sub_80A28F4
+sub_80A28F4: @ 80A28F4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 16
+ lsrs r0, 16
+ mov r10, r0
+ lsls r1, 16
+ movs r2, 0xC0
+ lsls r2, 10
+ adds r0, r1, r2
+ lsrs r0, 16
+ mov r9, r0
+ movs r4, 0
+ asrs r7, r1, 16
+_080A2914:
+ mov r1, r10
+ lsls r0, r1, 16
+ asrs r0, 16
+ lsls r4, 16
+ asrs r1, r4, 16
+ adds r0, r1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ asrs r5, r0, 16
+ adds r0, r5, 0
+ adds r1, r7, 0
+ bl MapGridGetMetatileIdAt
+ mov r8, r4
+ cmp r0, 0x15
+ bne _080A2996
+ adds r4, r7, 0x1
+ lsls r1, r4, 16
+ asrs r1, 16
+ adds r0, r5, 0
+ bl sub_80A28A0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ beq _080A296A
+ cmp r0, 0x2
+ bgt _080A2952
+ cmp r0, 0x1
+ beq _080A295C
+ b _080A2996
+_080A2952:
+ cmp r0, 0x3
+ beq _080A297C
+ cmp r0, 0x4
+ beq _080A298C
+ b _080A2996
+_080A295C:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x82
+ lsls r2, 2
+ bl MapGridSetMetatileIdAt
+ b _080A2996
+_080A296A:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ ldr r2, _080A2978 @ =0x00000281
+ bl MapGridSetMetatileIdAt
+ b _080A2996
+ .align 2, 0
+_080A2978: .4byte 0x00000281
+_080A297C:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ ldr r2, _080A2988 @ =0x00000282
+ bl MapGridSetMetatileIdAt
+ b _080A2996
+ .align 2, 0
+_080A2988: .4byte 0x00000282
+_080A298C:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ ldr r2, _080A2A30 @ =0x00000283
+ bl MapGridSetMetatileIdAt
+_080A2996:
+ lsls r0, r6, 16
+ asrs r5, r0, 16
+ mov r2, r9
+ lsls r0, r2, 16
+ asrs r4, r0, 16
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl MapGridGetMetatileIdAt
+ cmp r0, 0x1
+ bne _080A2A10
+ adds r4, 0x1
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl MapGridGetMetatileIdAt
+ movs r1, 0x82
+ lsls r1, 2
+ cmp r0, r1
+ bne _080A29C8
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl MapGridSetMetatileIdAt
+_080A29C8:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl MapGridGetMetatileIdAt
+ ldr r1, _080A2A34 @ =0x00000281
+ cmp r0, r1
+ bne _080A29E0
+ adds r0, r5, 0
+ adds r1, r4, 0
+ ldr r2, _080A2A38 @ =0x00000279
+ bl MapGridSetMetatileIdAt
+_080A29E0:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl MapGridGetMetatileIdAt
+ ldr r1, _080A2A3C @ =0x00000282
+ cmp r0, r1
+ bne _080A29F8
+ adds r0, r5, 0
+ adds r1, r4, 0
+ ldr r2, _080A2A40 @ =0x0000027a
+ bl MapGridSetMetatileIdAt
+_080A29F8:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl MapGridGetMetatileIdAt
+ ldr r1, _080A2A30 @ =0x00000283
+ cmp r0, r1
+ bne _080A2A10
+ adds r0, r5, 0
+ adds r1, r4, 0
+ ldr r2, _080A2A44 @ =0x0000027b
+ bl MapGridSetMetatileIdAt
+_080A2A10:
+ movs r0, 0x80
+ lsls r0, 9
+ add r0, r8
+ lsrs r4, r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bgt _080A2A20
+ b _080A2914
+_080A2A20:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2A30: .4byte 0x00000283
+_080A2A34: .4byte 0x00000281
+_080A2A38: .4byte 0x00000279
+_080A2A3C: .4byte 0x00000282
+_080A2A40: .4byte 0x0000027a
+_080A2A44: .4byte 0x0000027b
+ thumb_func_end sub_80A28F4
+
+ thumb_func_start sub_80A2A48
+sub_80A2A48: @ 80A2A48
+ movs r2, 0
+ movs r1, 0x8
+ strh r1, [r0, 0x2E]
+ strh r2, [r0, 0x30]
+ strh r2, [r0, 0x34]
+ ldr r1, _080A2A58 @ =objc_8097BBC
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_080A2A58: .4byte objc_8097BBC
+ thumb_func_end sub_80A2A48
+
+ thumb_func_start objc_8097BBC
+objc_8097BBC: @ 80A2A5C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x8
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x32]
+ ldrh r1, [r4, 0x2E]
+ adds r1, 0x1
+ ldrh r2, [r4, 0x34]
+ lsls r0, r2, 16
+ asrs r0, 18
+ adds r1, r0
+ strh r1, [r4, 0x2E]
+ adds r2, 0x1
+ strh r2, [r4, 0x34]
+ ldrh r1, [r4, 0x30]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x1C
+ beq _080A2AA8
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ b _080A2AAC
+_080A2AA8:
+ ldr r0, _080A2AB4 @ =sub_80A2AB8
+ str r0, [r4, 0x1C]
+_080A2AAC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2AB4: .4byte sub_80A2AB8
+ thumb_func_end objc_8097BBC
+
+ thumb_func_start sub_80A2AB8
+sub_80A2AB8: @ 80A2AB8
+ push {r4-r6,lr}
+ movs r4, 0x1
+_080A2ABC:
+ ldr r6, _080A2AF8 @ =0x0201fff0
+ adds r0, r4, r6
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r5, _080A2AFC @ =gSprites
+ adds r0, r5
+ bl DestroySprite
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x7
+ bls _080A2ABC
+ ldrb r1, [r6]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ movs r1, 0x3A
+ bl FieldEffectStop
+ bl sub_8064E2C
+ bl ScriptContext2_Disable
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2AF8: .4byte 0x0201fff0
+_080A2AFC: .4byte gSprites
+ thumb_func_end sub_80A2AB8
+
+ thumb_func_start sub_80A2B00
+sub_80A2B00: @ 80A2B00
+ push {lr}
+ movs r0, 0x80
+ bl PlaySE
+ movs r0, 0x2
+ bl FieldEffectActiveListRemove
+ bl EnableBothScriptContexts
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A2B00
+
+ .align 2, 0 @ Don't pad with nop.