summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Willems (M17.1) <progreon@gmail.com>2018-01-09 18:43:52 +0100
committerMarco Willems (M17.1) <progreon@gmail.com>2018-01-09 18:43:52 +0100
commit66bf3cc2bbe16dd2b51bb76b2cae9e15272a6a34 (patch)
tree51264abd0076fa67bc9acd2dac4a96c8df55d3ae
parentee39862392cc263c3f3073c125cffcb449131643 (diff)
Started decompiling bug.s
-rwxr-xr-xasm/bug.s552
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle/anim/bug.c105
3 files changed, 382 insertions, 276 deletions
diff --git a/asm/bug.s b/asm/bug.s
index 83170e9a7..ddd8726db 100755
--- a/asm/bug.s
+++ b/asm/bug.s
@@ -7,285 +7,285 @@
@ bug
- thumb_func_start sub_80DC824
-sub_80DC824: @ 80DC824
- push {r4-r6,lr}
- adds r6, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DC850
- adds r0, r6, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r0, _080DC84C @ =gBattleAnimArgs
- ldrh r1, [r0, 0x4]
- negs r1, r1
- strh r1, [r0, 0x4]
- ldrh r1, [r0]
- negs r1, r1
- strh r1, [r0]
- b _080DC880
- .align 2, 0
-_080DC84C: .4byte gBattleAnimArgs
-_080DC850:
- ldr r0, _080DC8E4 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080DC880
- adds r0, r6, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r1, _080DC8E8 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080DC880:
- ldr r5, _080DC8E4 @ =gAnimBankTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8077EE4
- lsls r0, 24
- ldr r4, _080DC8E8 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8077EE4
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r6, 0x36]
- ldr r0, _080DC8EC @ =sub_8078B34
- str r0, [r6, 0x1C]
- ldr r1, _080DC8F0 @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DC8E4: .4byte gAnimBankTarget
-_080DC8E8: .4byte gBattleAnimArgs
-_080DC8EC: .4byte sub_8078B34
-_080DC8F0: .4byte DestroyAnimSprite
- thumb_func_end sub_80DC824
+# thumb_func_start sub_80DC824
+# sub_80DC824: @ 80DC824
+# push {r4-r6,lr}
+# adds r6, r0, 0
+# bl IsContest
+# lsls r0, 24
+# cmp r0, 0
+# beq _080DC850
+# adds r0, r6, 0
+# movs r1, 0x2
+# bl StartSpriteAffineAnim
+# ldr r0, _080DC84C @ =gBattleAnimArgs
+# ldrh r1, [r0, 0x4]
+# negs r1, r1
+# strh r1, [r0, 0x4]
+# ldrh r1, [r0]
+# negs r1, r1
+# strh r1, [r0]
+# b _080DC880
+# .align 2, 0
+# _080DC84C: .4byte gBattleAnimArgs
+# _080DC850:
+# ldr r0, _080DC8E4 @ =gAnimBankTarget
+# ldrb r0, [r0]
+# bl GetBankSide
+# lsls r0, 24
+# cmp r0, 0
+# bne _080DC880
+# adds r0, r6, 0
+# movs r1, 0x1
+# bl StartSpriteAffineAnim
+# ldr r1, _080DC8E8 @ =gBattleAnimArgs
+# ldrh r0, [r1, 0x2]
+# negs r0, r0
+# strh r0, [r1, 0x2]
+# ldrh r0, [r1, 0x4]
+# negs r0, r0
+# strh r0, [r1, 0x4]
+# ldrh r0, [r1, 0x6]
+# negs r0, r0
+# strh r0, [r1, 0x6]
+# ldrh r0, [r1]
+# negs r0, r0
+# strh r0, [r1]
+# _080DC880:
+# ldr r5, _080DC8E4 @ =gAnimBankTarget
+# ldrb r0, [r5]
+# movs r1, 0x2
+# bl sub_8077EE4
+# lsls r0, 24
+# ldr r4, _080DC8E8 @ =gBattleAnimArgs
+# lsrs r0, 24
+# ldrh r1, [r4]
+# adds r0, r1
+# strh r0, [r6, 0x20]
+# ldrb r0, [r5]
+# movs r1, 0x3
+# bl sub_8077EE4
+# lsls r0, 24
+# lsrs r0, 24
+# ldrh r1, [r4, 0x2]
+# adds r0, r1
+# strh r0, [r6, 0x22]
+# ldrh r0, [r4, 0x8]
+# strh r0, [r6, 0x2E]
+# ldrb r0, [r5]
+# movs r1, 0x2
+# bl GetBankPosition
+# lsls r0, 24
+# lsrs r0, 24
+# ldrh r1, [r4, 0x4]
+# adds r0, r1
+# strh r0, [r6, 0x32]
+# ldrb r0, [r5]
+# movs r1, 0x3
+# bl GetBankPosition
+# lsls r0, 24
+# lsrs r0, 24
+# ldrh r4, [r4, 0x6]
+# adds r0, r4
+# strh r0, [r6, 0x36]
+# ldr r0, _080DC8EC @ =sub_8078B34
+# str r0, [r6, 0x1C]
+# ldr r1, _080DC8F0 @ =DestroyAnimSprite
+# adds r0, r6, 0
+# bl StoreSpriteCallbackInData
+# pop {r4-r6}
+# pop {r0}
+# bx r0
+# .align 2, 0
+# _080DC8E4: .4byte gAnimBankTarget
+# _080DC8E8: .4byte gBattleAnimArgs
+# _080DC8EC: .4byte sub_8078B34
+# _080DC8F0: .4byte DestroyAnimSprite
+# thumb_func_end sub_80DC824
- thumb_func_start sub_80DC8F4
-sub_80DC8F4: @ 80DC8F4
- push {r4-r6,lr}
- adds r6, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DC918
- ldr r1, _080DC914 @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
- adds r0, r6, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- b _080DC934
- .align 2, 0
-_080DC914: .4byte gBattleAnimArgs
-_080DC918:
- ldr r0, _080DC990 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080DC934
- ldr r0, _080DC994 @ =gBattleAnimArgs
- ldrh r1, [r0, 0x2]
- negs r1, r1
- strh r1, [r0, 0x2]
- ldrh r1, [r0]
- negs r1, r1
- strh r1, [r0]
-_080DC934:
- ldr r5, _080DC990 @ =gAnimBankTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8077EE4
- lsls r0, 24
- ldr r4, _080DC994 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8077EE4
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x2E]
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x36]
- ldr r0, _080DC998 @ =sub_8078B34
- str r0, [r6, 0x1C]
- ldr r1, _080DC99C @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DC990: .4byte gAnimBankTarget
-_080DC994: .4byte gBattleAnimArgs
-_080DC998: .4byte sub_8078B34
-_080DC99C: .4byte DestroyAnimSprite
- thumb_func_end sub_80DC8F4
+# thumb_func_start sub_80DC8F4
+# sub_80DC8F4: @ 80DC8F4
+# push {r4-r6,lr}
+# adds r6, r0, 0
+# bl IsContest
+# lsls r0, 24
+# cmp r0, 0
+# beq _080DC918
+# ldr r1, _080DC914 @ =gBattleAnimArgs
+# ldrh r0, [r1]
+# negs r0, r0
+# strh r0, [r1]
+# adds r0, r6, 0
+# movs r1, 0x2
+# bl StartSpriteAffineAnim
+# b _080DC934
+# .align 2, 0
+# _080DC914: .4byte gBattleAnimArgs
+# _080DC918:
+# ldr r0, _080DC990 @ =gAnimBankTarget
+# ldrb r0, [r0]
+# bl GetBankSide
+# lsls r0, 24
+# cmp r0, 0
+# bne _080DC934
+# ldr r0, _080DC994 @ =gBattleAnimArgs
+# ldrh r1, [r0, 0x2]
+# negs r1, r1
+# strh r1, [r0, 0x2]
+# ldrh r1, [r0]
+# negs r1, r1
+# strh r1, [r0]
+# _080DC934:
+# ldr r5, _080DC990 @ =gAnimBankTarget
+# ldrb r0, [r5]
+# movs r1, 0x2
+# bl sub_8077EE4
+# lsls r0, 24
+# ldr r4, _080DC994 @ =gBattleAnimArgs
+# lsrs r0, 24
+# ldrh r1, [r4]
+# adds r0, r1
+# strh r0, [r6, 0x20]
+# ldrb r0, [r5]
+# movs r1, 0x3
+# bl sub_8077EE4
+# lsls r0, 24
+# lsrs r0, 24
+# ldrh r1, [r4, 0x2]
+# adds r0, r1
+# strh r0, [r6, 0x22]
+# ldrh r0, [r4, 0x4]
+# strh r0, [r6, 0x2E]
+# ldrb r0, [r5]
+# movs r1, 0x2
+# bl GetBankPosition
+# lsls r0, 24
+# lsrs r0, 24
+# strh r0, [r6, 0x32]
+# ldrb r0, [r5]
+# movs r1, 0x3
+# bl GetBankPosition
+# lsls r0, 24
+# lsrs r0, 24
+# strh r0, [r6, 0x36]
+# ldr r0, _080DC998 @ =sub_8078B34
+# str r0, [r6, 0x1C]
+# ldr r1, _080DC99C @ =DestroyAnimSprite
+# adds r0, r6, 0
+# bl StoreSpriteCallbackInData
+# pop {r4-r6}
+# pop {r0}
+# bx r0
+# .align 2, 0
+# _080DC990: .4byte gAnimBankTarget
+# _080DC994: .4byte gBattleAnimArgs
+# _080DC998: .4byte sub_8078B34
+# _080DC99C: .4byte DestroyAnimSprite
+# thumb_func_end sub_80DC8F4
- thumb_func_start sub_80DC9A0
-sub_80DC9A0: @ 80DC9A0
- push {r4,r5,lr}
- adds r5, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DC9BC
- ldr r0, _080DC9FC @ =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- strh r1, [r0, 0x4]
-_080DC9BC:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80787B0
- ldr r1, _080DC9FC @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080DCA04
- ldr r4, _080DCA00 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- b _080DCA16
- .align 2, 0
-_080DC9FC: .4byte gBattleAnimArgs
-_080DCA00: .4byte gAnimBankTarget
-_080DCA04:
- ldr r0, _080DCA2C @ =gAnimBankTarget
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl sub_807A3FC
-_080DCA16:
- adds r0, r5, 0
- bl sub_8078BD4
- ldr r0, _080DCA30 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x6]
- strh r0, [r5, 0x38]
- ldr r0, _080DCA34 @ =sub_80DCA38
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCA2C: .4byte gAnimBankTarget
-_080DCA30: .4byte gBattleAnimArgs
-_080DCA34: .4byte sub_80DCA38
- thumb_func_end sub_80DC9A0
+# thumb_func_start sub_80DC9A0
+# sub_80DC9A0: @ 80DC9A0
+# push {r4,r5,lr}
+# adds r5, r0, 0
+# bl IsContest
+# lsls r0, 24
+# cmp r0, 0
+# beq _080DC9BC
+# ldr r0, _080DC9FC @ =gBattleAnimArgs
+# movs r2, 0x4
+# ldrsh r1, [r0, r2]
+# lsrs r2, r1, 31
+# adds r1, r2
+# asrs r1, 1
+# strh r1, [r0, 0x4]
+# _080DC9BC:
+# adds r0, r5, 0
+# movs r1, 0x1
+# bl sub_80787B0
+# ldr r1, _080DC9FC @ =gBattleAnimArgs
+# ldrh r0, [r1, 0x4]
+# strh r0, [r5, 0x2E]
+# ldrh r0, [r5, 0x20]
+# strh r0, [r5, 0x30]
+# ldrh r0, [r5, 0x22]
+# strh r0, [r5, 0x34]
+# movs r2, 0x8
+# ldrsh r0, [r1, r2]
+# cmp r0, 0
+# bne _080DCA04
+# ldr r4, _080DCA00 @ =gAnimBankTarget
+# ldrb r0, [r4]
+# movs r1, 0x2
+# bl GetBankPosition
+# lsls r0, 24
+# lsrs r0, 24
+# strh r0, [r5, 0x32]
+# ldrb r0, [r4]
+# movs r1, 0x3
+# bl GetBankPosition
+# lsls r0, 24
+# lsrs r0, 24
+# strh r0, [r5, 0x36]
+# b _080DCA16
+# .align 2, 0
+# _080DC9FC: .4byte gBattleAnimArgs
+# _080DCA00: .4byte gAnimBankTarget
+# _080DCA04:
+# ldr r0, _080DCA2C @ =gAnimBankTarget
+# ldrb r0, [r0]
+# adds r2, r5, 0
+# adds r2, 0x32
+# adds r3, r5, 0
+# adds r3, 0x36
+# movs r1, 0x1
+# bl sub_807A3FC
+# _080DCA16:
+# adds r0, r5, 0
+# bl sub_8078BD4
+# ldr r0, _080DCA30 @ =gBattleAnimArgs
+# ldrh r0, [r0, 0x6]
+# strh r0, [r5, 0x38]
+# ldr r0, _080DCA34 @ =sub_80DCA38
+# str r0, [r5, 0x1C]
+# pop {r4,r5}
+# pop {r0}
+# bx r0
+# .align 2, 0
+# _080DCA2C: .4byte gAnimBankTarget
+# _080DCA30: .4byte gBattleAnimArgs
+# _080DCA34: .4byte sub_80DCA38
+# thumb_func_end sub_80DC9A0
- thumb_func_start sub_80DCA38
-sub_80DCA38: @ 80DCA38
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078B5C
- lsls r0, 24
- cmp r0, 0
- beq _080DCA4E
- adds r0, r4, 0
- bl DestroyAnimSprite
- b _080DCA6A
-_080DCA4E:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x3A]
- adds r0, 0xD
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
-_080DCA6A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DCA38
+# thumb_func_start sub_80DCA38
+# sub_80DCA38: @ 80DCA38
+# push {r4,lr}
+# adds r4, r0, 0
+# bl sub_8078B5C
+# lsls r0, 24
+# cmp r0, 0
+# beq _080DCA4E
+# adds r0, r4, 0
+# bl DestroyAnimSprite
+# b _080DCA6A
+# _080DCA4E:
+# movs r1, 0x3A
+# ldrsh r0, [r4, r1]
+# movs r2, 0x38
+# ldrsh r1, [r4, r2]
+# bl Sin
+# ldrh r1, [r4, 0x24]
+# adds r0, r1
+# strh r0, [r4, 0x24]
+# ldrh r0, [r4, 0x3A]
+# adds r0, 0xD
+# movs r1, 0xFF
+# ands r0, r1
+# strh r0, [r4, 0x3A]
+# _080DCA6A:
+# pop {r4}
+# pop {r0}
+# bx r0
+# thumb_func_end sub_80DCA38
thumb_func_start sub_80DCA70
sub_80DCA70: @ 80DCA70
diff --git a/ld_script.txt b/ld_script.txt
index 47e8297b2..ba0705659 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -292,6 +292,7 @@ SECTIONS {
src/battle/anim/poison.o(.text);
asm/flying.o(.text);
asm/psychic.o(.text);
+ src/battle/anim/bug.o(.text);
asm/bug.o(.text);
asm/rock.o(.text);
asm/ghost.o(.text);
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
new file mode 100644
index 000000000..e9372ed9e
--- /dev/null
+++ b/src/battle/anim/bug.c
@@ -0,0 +1,105 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "contest.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+// #include "util.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+static void sub_80DCA38(struct Sprite *sprite);
+
+// used in Move_MEGAHORN
+void sub_80DC824(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ StartSpriteAffineAnim(sprite, 2);
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+ else if (!GetBankSide(gAnimBankTarget))
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+
+ sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// used in Move_LEECH_LIFE
+void sub_80DC8F4(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ StartSpriteAffineAnim(sprite, 2);
+ }
+ else if (!GetBankSide(gAnimBankTarget))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+
+ sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// used in 2 moves:
+// Move_STRING_SHOT, Move_SPIDER_WEB
+void sub_80DC9A0(struct Sprite *sprite)
+{
+ if (IsContest())
+ gBattleAnimArgs[2] /= 2;
+
+ sub_80787B0(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+
+ if (!gBattleAnimArgs[4])
+ {
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ }
+ else
+ {
+ sub_807A3FC(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]);
+ }
+
+ sub_8078BD4(sprite);
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = sub_80DCA38;
+}
+
+static void sub_80DCA38(struct Sprite *sprite)
+{
+ if (sub_8078B5C(sprite))
+ {
+ DestroyAnimSprite(sprite);
+ return;
+ }
+
+ sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]);
+ sprite->data[6] = (sprite->data[6] + 13) & 0xFF;
+} \ No newline at end of file