summaryrefslogtreecommitdiff
path: root/asm/fldeff_groundshake.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/fldeff_groundshake.s')
-rwxr-xr-xasm/fldeff_groundshake.s596
1 files changed, 596 insertions, 0 deletions
diff --git a/asm/fldeff_groundshake.s b/asm/fldeff_groundshake.s
new file mode 100755
index 000000000..cb0d2e2d8
--- /dev/null
+++ b/asm/fldeff_groundshake.s
@@ -0,0 +1,596 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_81BE66C
+sub_81BE66C: @ 81BE66C
+ push {lr}
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrh r1, [r0, 0x4]
+ movs r0, 0xD0
+ lsls r0, 5
+ cmp r1, r0
+ bne _081BE690
+ movs r0, 0xA7
+ lsls r0, 1
+ bl FlagGet
+ lsls r0, 24
+ lsrs r0, 24
+ b _081BE692
+ .pool
+_081BE690:
+ movs r0, 0
+_081BE692:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81BE66C
+
+ thumb_func_start sub_81BE698
+sub_81BE698: @ 81BE698
+ push {lr}
+ ldr r0, =gUnknown_0203CF18
+ ldr r0, [r0]
+ adds r0, 0x4
+ bl sub_8151E50
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BE698
+
+ thumb_func_start sub_81BE6AC
+sub_81BE6AC: @ 81BE6AC
+ ldr r1, =gUnknown_0203CF18
+ movs r0, 0
+ str r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end sub_81BE6AC
+
+ thumb_func_start sub_81BE6B8
+sub_81BE6B8: @ 81BE6B8
+ push {r4,lr}
+ ldr r4, =gUnknown_0203CF18
+ ldr r0, [r4]
+ cmp r0, 0
+ beq _081BE6CC
+ movs r0, 0
+ str r0, [r4]
+ b _081BE718
+ .pool
+_081BE6CC:
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrh r1, [r0, 0x4]
+ movs r0, 0xD0
+ lsls r0, 5
+ cmp r1, r0
+ bne _081BE718
+ movs r0, 0xA7
+ lsls r0, 1
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _081BE718
+ movs r0, 0xC8
+ bl AllocZeroed
+ str r0, [r4]
+ adds r0, 0x4
+ bl sub_8151B3C
+ ldr r0, [r4]
+ adds r0, 0x4
+ ldr r1, =gUnknown_08617E18
+ bl sub_8151B68
+ ldr r0, [r4]
+ adds r0, 0x4
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_8151CA8
+ ldr r0, =sub_81BE698
+ movs r1, 0xFF
+ bl CreateTask
+ ldr r1, [r4]
+ strb r0, [r1]
+_081BE718:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BE6B8
+
+ thumb_func_start sub_81BE72C
+sub_81BE72C: @ 81BE72C
+ push {r4,lr}
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrh r1, [r0, 0x4]
+ movs r0, 0xD0
+ lsls r0, 5
+ cmp r1, r0
+ bne _081BE788
+ movs r0, 0xA7
+ lsls r0, 1
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _081BE788
+ ldr r4, =gUnknown_0203CF18
+ ldr r0, [r4]
+ cmp r0, 0
+ beq _081BE788
+ ldr r0, =sub_81BE698
+ bl FuncIsActiveTask
+ lsls r0, 24
+ cmp r0, 0
+ beq _081BE766
+ ldr r0, [r4]
+ ldrb r0, [r0]
+ bl DestroyTask
+_081BE766:
+ ldr r0, [r4]
+ adds r0, 0x4
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_8151D28
+ ldr r0, [r4]
+ adds r0, 0x4
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_8151C50
+ ldr r0, [r4]
+ bl Free
+ movs r0, 0
+ str r0, [r4]
+_081BE788:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BE72C
+
+ thumb_func_start sub_81BE79C
+sub_81BE79C: @ 81BE79C
+ push {r4,lr}
+ ldr r0, =0x000040cb
+ bl VarGet
+ lsls r0, 16
+ cmp r0, 0
+ beq _081BE7B8
+ movs r0, 0xA7
+ lsls r0, 1
+ bl FlagReset
+ b _081BE7EE
+ .pool
+_081BE7B8:
+ bl Random
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0x1
+ ands r4, r0
+ movs r0, 0x9D
+ bl FlagGet
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _081BE7D4
+ movs r4, 0x1
+_081BE7D4:
+ cmp r4, 0
+ beq _081BE7E6
+ movs r0, 0xA7
+ lsls r0, 1
+ bl FlagSet
+ bl sub_81BE6B8
+ b _081BE7EE
+_081BE7E6:
+ movs r0, 0xA7
+ lsls r0, 1
+ bl FlagReset
+_081BE7EE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81BE79C
+
+ thumb_func_start sub_81BE7F4
+sub_81BE7F4: @ 81BE7F4
+ push {lr}
+ ldr r0, =sub_81BE808
+ movs r1, 0x8
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BE7F4
+
+ thumb_func_start sub_81BE808
+sub_81BE808: @ 81BE808
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ movs r0, 0x2D
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ mov r0, sp
+ ldrb r0, [r0]
+ lsls r2, r0, 3
+ adds r2, r0
+ lsls r2, 2
+ ldr r4, =gMapObjects
+ adds r2, r4
+ ldr r3, =gSprites
+ ldrb r1, [r2, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r0, 0x26]
+ adds r1, 0x4
+ strh r1, [r0, 0x26]
+ ldr r0, =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrb r2, [r2, 0x4]
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r3
+ movs r4, 0x22
+ ldrsh r2, [r0, r4]
+ movs r4, 0x26
+ ldrsh r0, [r0, r4]
+ adds r2, r0
+ ldrb r1, [r1, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ movs r3, 0x22
+ ldrsh r1, [r0, r3]
+ movs r4, 0x26
+ ldrsh r0, [r0, r4]
+ adds r1, r0
+ cmp r2, r1
+ blt _081BE882
+ adds r0, r5, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+_081BE882:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BE808
+
+ thumb_func_start sp136_strengh_sound
+sp136_strengh_sound: @ 81BE89C
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ mov r8, r0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ adds r6, r3, 0
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r0, =sub_81BE900
+ movs r1, 0x9
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r0, 0
+ strh r4, [r1, 0x8]
+ strh r0, [r1, 0xA]
+ strh r5, [r1, 0xC]
+ strh r6, [r1, 0xE]
+ mov r0, r8
+ strh r0, [r1, 0x10]
+ movs r0, 0
+ bl SetCameraPanningCallback
+ movs r0, 0xD6
+ bl PlaySE
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sp136_strengh_sound
+
+ thumb_func_start sub_81BE900
+sub_81BE900: @ 81BE900
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, =gTasks + 0x8
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x2]
+ adds r0, 0x1
+ strh r0, [r4, 0x2]
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ movs r2, 0x6
+ ldrsh r1, [r4, r2]
+ bl __modsi3
+ cmp r0, 0
+ bne _081BE95C
+ strh r0, [r4, 0x2]
+ ldrh r0, [r4, 0x4]
+ subs r0, 0x1
+ strh r0, [r4, 0x4]
+ ldrh r0, [r4]
+ negs r0, r0
+ strh r0, [r4]
+ ldrh r0, [r4, 0x8]
+ negs r0, r0
+ strh r0, [r4, 0x8]
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ movs r2, 0x8
+ ldrsh r1, [r4, r2]
+ bl SetCameraPanning
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _081BE95C
+ bl sub_81BE968
+ adds r0, r5, 0
+ bl DestroyTask
+ bl InstallCameraPanAheadCallback
+_081BE95C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BE900
+
+ thumb_func_start sub_81BE968
+sub_81BE968: @ 81BE968
+ push {lr}
+ ldr r0, =sub_81BE9C0
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xFF
+ beq _081BE988
+ ldr r0, =gTasks
+ lsls r1, r2, 2
+ adds r1, r2
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+_081BE988:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BE968
+
+ thumb_func_start sub_81BE994
+sub_81BE994: @ 81BE994
+ push {lr}
+ ldr r0, =gUnknown_08617D94
+ bl LoadSpriteSheets
+ bl sub_81BEA20
+ ldr r0, =sub_81BE9C0
+ movs r1, 0x8
+ bl CreateTask
+ movs r0, 0x2
+ movs r1, 0x1
+ movs r2, 0x10
+ movs r3, 0x3
+ bl sp136_strengh_sound
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BE994
+
+ thumb_func_start sub_81BE9C0
+sub_81BE9C0: @ 81BE9C0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r3, r1, 3
+ ldr r4, =gTasks + 0x8
+ adds r2, r3, r4
+ ldrh r0, [r2, 0x2]
+ adds r0, 0x1
+ strh r0, [r2, 0x2]
+ lsls r0, 16
+ movs r1, 0xFA
+ lsls r1, 18
+ cmp r0, r1
+ beq _081BE9E6
+ ldrh r0, [r2]
+ cmp r0, 0x11
+ bne _081BE9F0
+_081BE9E6:
+ adds r0, r4, 0
+ subs r0, 0x8
+ adds r0, r3, r0
+ ldr r1, =sub_81BEA00
+ str r1, [r0]
+_081BE9F0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BE9C0
+
+ thumb_func_start sub_81BEA00
+sub_81BEA00: @ 81BEA00
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0xFA
+ lsls r0, 4
+ bl FreeSpriteTilesByTag
+ adds r0, r4, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81BEA00
+
+ thumb_func_start sub_81BEA20
+sub_81BEA20: @ 81BEA20
+ push {r4-r7,lr}
+ movs r4, 0
+ ldr r5, =gUnknown_08617D64
+ adds r7, r5, 0x2
+ ldr r6, =gSprites
+_081BEA2A:
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 1
+ adds r1, r0, r5
+ ldrh r1, [r1]
+ adds r1, 0x78
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r7
+ movs r3, 0
+ ldrsh r2, [r0, r3]
+ ldr r0, =gUnknown_08617E60
+ movs r3, 0x8
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r1, r0, 24
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldrb r2, [r0, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r2, r1
+ movs r1, 0xF
+ ands r2, r1
+ strb r2, [r0, 0x5]
+ strh r4, [r0, 0x2E]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x7
+ bls _081BEA2A
+ movs r4, 0
+ ldr r5, =gUnknown_08617D64
+ adds r7, r5, 0x2
+ ldr r6, =gSprites
+_081BEA78:
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 1
+ adds r1, r0, r5
+ ldrh r1, [r1]
+ adds r1, 0x73
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r7
+ ldrh r2, [r0]
+ subs r2, 0x3
+ lsls r2, 16
+ asrs r2, 16
+ ldr r0, =gUnknown_08617E34
+ movs r3, 0x8
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r1, r0, 24
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldrb r2, [r0, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r2, r1
+ movs r1, 0xF
+ ands r2, r1
+ strb r2, [r0, 0x5]
+ strh r4, [r0, 0x2E]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x7
+ bls _081BEA78
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BEA20
+
+ thumb_func_start sub_81BEAD8
+sub_81BEAD8: @ 81BEAD8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x2
+ strh r0, [r4, 0x30]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r4, 0x26]
+ movs r0, 0x22
+ ldrsh r3, [r4, r0]
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ adds r3, r0
+ ldr r2, =gUnknown_08617D64
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 1
+ adds r2, 0x4
+ adds r0, r2
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r3, r0
+ ble _081BEB1A
+ adds r0, r4, 0
+ bl DestroySprite
+ bl sub_81BE968
+_081BEB1A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81BEAD8
+
+ .align 2, 0 @ Don't pad with nop.