summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Winwood <twwinwood@gmail.com>2018-06-18 15:13:35 +0100
committerThomas Winwood <twwinwood@gmail.com>2018-06-18 15:13:35 +0100
commit3237628ea71fdf645160481e62ed52a5579c3d74 (patch)
tree10e03197d3e638954b602931feb7e814103ed74a
parenta08baefa117414a69afa7dcff41c740c1ae59715 (diff)
Decompile sub_80DDDF0
-rw-r--r--asm/ghost.s67
-rw-r--r--src/ghost.c16
2 files changed, 16 insertions, 67 deletions
diff --git a/asm/ghost.s b/asm/ghost.s
index 2e1b27cd4..d04599b70 100644
--- a/asm/ghost.s
+++ b/asm/ghost.s
@@ -7,73 +7,6 @@
@ ghost
- thumb_func_start sub_80DDDF0
-sub_80DDDF0: @ 80DDDF0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _080DDE68 @ =REG_BLDCNT
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r2, 0x80
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- bl GetAnimBattlerSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8078E70
- adds r0, r4, 0
- movs r1, 0x80
- movs r2, 0x80
- movs r3, 0
- bl obj_id_set_rotscale
- ldr r1, _080DDE6C @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r1, _080DDE70 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0x80
- strh r1, [r0, 0x8]
- ldr r1, _080DDE74 @ =gBattleAnimArgs
- ldrh r1, [r1]
- strh r1, [r0, 0xA]
- strh r2, [r0, 0xC]
- movs r1, 0x10
- strh r1, [r0, 0xE]
- ldr r1, _080DDE78 @ =sub_80DDE7C
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DDE68: .4byte REG_BLDCNT
-_080DDE6C: .4byte gSprites
-_080DDE70: .4byte gTasks
-_080DDE74: .4byte gBattleAnimArgs
-_080DDE78: .4byte sub_80DDE7C
- thumb_func_end sub_80DDDF0
-
thumb_func_start sub_80DDE7C
sub_80DDE7C: @ 80DDE7C
push {lr}
diff --git a/src/ghost.c b/src/ghost.c
index a78ac7de3..6591ad5af 100644
--- a/src/ghost.c
+++ b/src/ghost.c
@@ -12,6 +12,7 @@ void sub_80DDBD8(struct Sprite *);
void sub_80DDC4C(struct Sprite *);
void sub_80DDCC8(struct Sprite *);
void sub_80DDD78(struct Sprite *);
+void sub_80DDE7C(u8 taskId);
void sub_80DDB6C(struct Sprite *sprite) {
InitAnimSpritePos(sprite, 1);
@@ -135,4 +136,19 @@ void sub_80DDD78(struct Sprite *sprite) {
if (sprite->data[7] == 0x3D) {
DestroyAnimSprite(sprite);
}
+}
+
+void sub_80DDDF0(u8 r5) {
+ u8 r4;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x1000;
+ r4 = GetAnimBattlerSpriteId(0);
+ sub_8078E70(r4, 1);
+ obj_id_set_rotscale(r4, 0x80, 0x80, 0);
+ gSprites[r4].invisible = FALSE;
+ gTasks[r5].data[0] = 0x80;
+ gTasks[r5].data[1] = *gBattleAnimArgs;
+ gTasks[r5].data[2] = 0;
+ gTasks[r5].data[3] = 0x10;
+ gTasks[r5].func = &sub_80DDE7C;
} \ No newline at end of file