summaryrefslogtreecommitdiff
path: root/asm/rain.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/rain.s')
-rwxr-xr-xasm/rain.s124
1 files changed, 124 insertions, 0 deletions
diff --git a/asm/rain.s b/asm/rain.s
new file mode 100755
index 000000000..a057cb813
--- /dev/null
+++ b/asm/rain.s
@@ -0,0 +1,124 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ @ rain
+
+ thumb_func_start sub_80D30F0
+sub_80D30F0: @ 80D30F0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ ldr r1, _080D3178 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080D3118
+ ldr r1, _080D317C @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r5, 0xA]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0xC]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0xE]
+_080D3118:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ movs r2, 0x8
+ ldrsh r0, [r5, r2]
+ movs r2, 0xC
+ ldrsh r1, [r5, r2]
+ bl __modsi3
+ cmp r0, 0x1
+ bne _080D3160
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xF0
+ bl __umodsi3
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x50
+ bl __umodsi3
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r0, _080D3180 @ =gSpriteTemplate_83D9130
+ adds r1, r4, 0
+ movs r3, 0x4
+ bl CreateSprite
+_080D3160:
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ movs r2, 0xE
+ ldrsh r0, [r5, r2]
+ cmp r1, r0
+ bne _080D3172
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080D3172:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080D3178: .4byte gTasks
+_080D317C: .4byte gBattleAnimArgs
+_080D3180: .4byte gSpriteTemplate_83D9130
+ thumb_func_end sub_80D30F0
+
+ thumb_func_start sub_80D3184
+sub_80D3184: @ 80D3184
+ ldr r1, _080D318C @ =sub_80D3190
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_080D318C: .4byte sub_80D3190
+ thumb_func_end sub_80D3184
+
+ thumb_func_start sub_80D3190
+sub_80D3190: @ 80D3190
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ bgt _080D31AE
+ ldrh r0, [r2, 0x24]
+ adds r0, 0x1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x26]
+ adds r0, 0x4
+ strh r0, [r2, 0x26]
+_080D31AE:
+ adds r0, r2, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080D31C2
+ adds r0, r2, 0
+ bl DestroySprite
+_080D31C2:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80D3190
+
+ .align 2, 0 @ Don't pad with nop.