From 1ebc745b7fc598feb758dbe5b32d5716a474fa37 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Sun, 17 Jun 2018 22:42:19 +0100 Subject: Decompile sub_80DDB6C --- src/ghost.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/ghost.c (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c new file mode 100644 index 000000000..07a9061c6 --- /dev/null +++ b/src/ghost.c @@ -0,0 +1,21 @@ +#include "global.h" +#include "rom_8077ABC.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankTarget; + +void sub_80DDBD8(struct Sprite *); + +void sub_80DDB6C(struct Sprite *sprite) { + InitAnimSpritePos(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); + sub_8078BD4(sprite); + sprite->callback = sub_80DDBD8; + sprite->data[6] = 0x10; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = sprite->data[6]; +} \ No newline at end of file -- cgit v1.2.3 From ba16882b301fa964207257648b2522bec6458341 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Mon, 18 Jun 2018 00:49:11 +0100 Subject: Decompile sub_80DDBD8 --- src/ghost.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index 07a9061c6..6c3f11f61 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -1,10 +1,15 @@ #include "global.h" #include "rom_8077ABC.h" +#include "sound.h" +#include "trig.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankTarget; +extern u8 gUnknown_0202F7D2; void sub_80DDBD8(struct Sprite *); +void sub_80DDC4C(struct Sprite *); +void sub_80DDCC8(struct Sprite *); void sub_80DDB6C(struct Sprite *sprite) { InitAnimSpritePos(sprite, 1); @@ -18,4 +23,26 @@ void sub_80DDB6C(struct Sprite *sprite) { sprite->data[6] = 0x10; REG_BLDCNT = 0x3F40; REG_BLDALPHA = sprite->data[6]; +} + +void sub_80DDBD8(struct Sprite *sprite) { + s16 r0; + s16 r2; + sub_80DDCC8(sprite); + if (TranslateAnimSpriteByDeltas(sprite)) { + sprite->callback = sub_80DDC4C; + return; + } + sprite->pos2.x += Sin(sprite->data[5], 10); + sprite->pos2.y += Cos(sprite->data[5], 15); + r2 = sprite->data[5]; + sprite->data[5] = (sprite->data[5] + 5) & 0xFF; + r0 = sprite->data[5]; + if (r2 != 0) { + if (r2 <= 0xC4) + return; + } + if (r0 <= 0) + return; + PlaySE12WithPanning(0xC4, gUnknown_0202F7D2); } \ No newline at end of file -- cgit v1.2.3 From 093d767eb6a943a5ef19fee69ab24398c3f7fa7b Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Mon, 18 Jun 2018 07:14:06 +0100 Subject: Decompile sub_80DDC4C (I didn't actually do this one, shinny did) --- src/ghost.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index 6c3f11f61..042707bfb 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -45,4 +45,32 @@ void sub_80DDBD8(struct Sprite *sprite) { if (r0 <= 0) return; PlaySE12WithPanning(0xC4, gUnknown_0202F7D2); +} + +void sub_80DDC4C(struct Sprite *sprite) +{ + s16 r2; + s16 r0; + sprite->data[0] = 1; + TranslateAnimSpriteByDeltas(sprite); + sprite->pos2.x += Sin(sprite->data[5],10); + sprite->pos2.y += Cos(sprite->data[5],15); + + r2 = sprite->data[5]; + sprite->data[5] = (sprite->data[5] + 5) & 0xFF; + r0 = sprite->data[5]; + + if(r2 == 0 || r2 > 0xC4) + { + if(r0 > 0) + PlaySE(0xC4); + } + + if(sprite->data[6] == 0) + { + sprite->invisible = TRUE; + sprite->callback = sub_807861C; + } + else + sub_80DDCC8(sprite); } \ No newline at end of file -- cgit v1.2.3 From 346b9deadcbbd1f11a1e1081dca540211e1bc0fa Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Mon, 18 Jun 2018 07:15:14 +0100 Subject: Decompile sub_80DDCC8 (I didn't actually do this one, shinny did) --- src/ghost.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index 042707bfb..6c7e36190 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -73,4 +73,38 @@ void sub_80DDC4C(struct Sprite *sprite) } else sub_80DDCC8(sprite); +} + +void sub_80DDCC8(struct Sprite *sprite) +{ + + s16 r0; + if(sprite->data[6] > 0xFF) + { + if(++sprite->data[6] == 0x10d) + sprite->data[6] = 0; + return; + } + + r0 = sprite->data[7]; + sprite->data[7]++; + + if((r0 & 0xFF) == 0) + { + sprite->data[7] &= 0xff00; + if((sprite->data[7] & 0x100) != 0) + sprite->data[6]++; + else + sprite->data[6]--; + } + else + return; + + REG_BLDALPHA = ((16 - sprite->data[6]) << 8) | sprite->data[6]; + if(sprite->data[6] == 0 || sprite->data[6] == 16) + { + sprite->data[7] ^= 0x100; + } + if(sprite->data[6] == 0) + sprite->data[6] = 0x100; } \ No newline at end of file -- cgit v1.2.3 From 67c8820a607da664acb4d1513f2fa6db8941548c Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Mon, 18 Jun 2018 07:17:19 +0100 Subject: Decompile sub_80DDD58 (I didn't actually do this one, shinny did) --- src/ghost.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index 6c7e36190..c14a60fdf 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -10,6 +10,7 @@ extern u8 gUnknown_0202F7D2; void sub_80DDBD8(struct Sprite *); void sub_80DDC4C(struct Sprite *); void sub_80DDCC8(struct Sprite *); +void sub_80DDD78(struct Sprite *); void sub_80DDB6C(struct Sprite *sprite) { InitAnimSpritePos(sprite, 1); @@ -107,4 +108,11 @@ void sub_80DDCC8(struct Sprite *sprite) } if(sprite->data[6] == 0) sprite->data[6] = 0x100; +} + +void sub_80DDD58(struct Sprite *sprite) +{ + sub_8078764(sprite, 1); + sprite->callback = sub_80DDD78; + sub_80DDD78(sprite); } \ No newline at end of file -- cgit v1.2.3 From a08baefa117414a69afa7dcff41c740c1ae59715 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Mon, 18 Jun 2018 09:45:40 +0100 Subject: Decompile sub_80DDD78 --- src/ghost.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index c14a60fdf..a78ac7de3 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -1,4 +1,5 @@ #include "global.h" +#include "battle_anim.h" #include "rom_8077ABC.h" #include "sound.h" #include "trig.h" @@ -115,4 +116,23 @@ void sub_80DDD58(struct Sprite *sprite) sub_8078764(sprite, 1); sprite->callback = sub_80DDD78; sub_80DDD78(sprite); +} + +void sub_80DDD78(struct Sprite *sprite) { + u16 temp1; + sprite->pos2.x = Sin(sprite->data[0], 32); + sprite->pos2.y = Cos(sprite->data[0], 8); + temp1 = sprite->data[0] - 65; + if (temp1 <= 130) { + sprite->oam.priority = 2; + } else { + sprite->oam.priority = 1; + } + sprite->data[0] = (sprite->data[0] + 0x13) & 0xFF; + sprite->data[2] += 80; + sprite->pos2.y += sprite->data[2] >> 8; + sprite->data[7] += 1; + if (sprite->data[7] == 0x3D) { + DestroyAnimSprite(sprite); + } } \ No newline at end of file -- cgit v1.2.3 From 3237628ea71fdf645160481e62ed52a5579c3d74 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Mon, 18 Jun 2018 15:13:35 +0100 Subject: Decompile sub_80DDDF0 --- src/ghost.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') 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 -- cgit v1.2.3 From 41a5fc73fd85701aa761b22f7068e590d926bea0 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Mon, 18 Jun 2018 15:34:48 +0100 Subject: Decompile sub_80DDE7C --- src/ghost.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index 6591ad5af..e77f26fb1 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -13,6 +13,7 @@ void sub_80DDC4C(struct Sprite *); void sub_80DDCC8(struct Sprite *); void sub_80DDD78(struct Sprite *); void sub_80DDE7C(u8 taskId); +void sub_80DDED0(u8 taskId); void sub_80DDB6C(struct Sprite *sprite) { InitAnimSpritePos(sprite, 1); @@ -151,4 +152,17 @@ void sub_80DDDF0(u8 r5) { gTasks[r5].data[2] = 0; gTasks[r5].data[3] = 0x10; gTasks[r5].func = &sub_80DDE7C; +} + +void sub_80DDE7C(u8 taskId) { + gTasks[taskId].data[10] += 1; + if (gTasks[taskId].data[10] == 3) { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[2] += 1; + gTasks[taskId].data[3] -= 1; + REG_BLDALPHA = gTasks[taskId].data[3] << 8 | gTasks[taskId].data[2]; + if (gTasks[taskId].data[2] != 9) + return; + gTasks[taskId].func = &sub_80DDED0; + } } \ No newline at end of file -- cgit v1.2.3 From ef31712404dc6336569b273e01f44d0ebdd31860 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Wed, 20 Jun 2018 11:45:16 +0100 Subject: Decompile sub_80DDED0 --- src/ghost.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index e77f26fb1..092677523 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -165,4 +165,22 @@ void sub_80DDE7C(u8 taskId) { return; gTasks[taskId].func = &sub_80DDED0; } +} + +void sub_80DDED0(u8 taskId) { + u8 r1; + if (gTasks[taskId].data[1] > 0) { + gTasks[taskId].data[1] -= 1; + return; + } + r1 = GetAnimBattlerSpriteId(0); + gTasks[taskId].data[0] += 8; + if (gTasks[taskId].data[0] <= 0xFF) { + obj_id_set_rotscale(r1, gTasks[taskId].data[0], gTasks[taskId].data[0], 0); + return; + } + sub_8078F40(r1); + DestroyAnimVisualTask(taskId); + REG_BLDCNT = 0; + REG_BLDALPHA = 0; } \ No newline at end of file -- cgit v1.2.3 From 6afdc9b4b1ec9215e58d562bd5db2b8dfd3df466 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Wed, 20 Jun 2018 12:37:55 +0100 Subject: Decompile sub_80DDF40 --- src/ghost.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index 092677523..e854036f0 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -7,6 +7,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankTarget; extern u8 gUnknown_0202F7D2; +extern u8 gAnimBankAttacker; void sub_80DDBD8(struct Sprite *); void sub_80DDC4C(struct Sprite *); @@ -14,6 +15,7 @@ void sub_80DDCC8(struct Sprite *); void sub_80DDD78(struct Sprite *); void sub_80DDE7C(u8 taskId); void sub_80DDED0(u8 taskId); +void sub_80DDFE8(struct Sprite *); void sub_80DDB6C(struct Sprite *sprite) { InitAnimSpritePos(sprite, 1); @@ -183,4 +185,21 @@ void sub_80DDED0(u8 taskId) { DestroyAnimVisualTask(taskId); REG_BLDCNT = 0; REG_BLDALPHA = 0; +} + +void sub_80DDF40(struct Sprite *sprite) { + u16 r5, r6; + r5 = sprite->pos1.x; + r6 = sprite->pos1.y; + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[3] = gBattleAnimArgs[2]; + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sprite->data[6] = (((s16)r5 - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1); + sprite->data[7] = (((s16)r6 - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1); + sprite->callback = &sub_80DDFE8; } \ No newline at end of file -- cgit v1.2.3 From 195d759f7c24910512c7758b2927cef943f83444 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Wed, 20 Jun 2018 16:12:12 +0100 Subject: Decompile sub_80DDFE8 --- src/ghost.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index e854036f0..d44df6818 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -202,4 +202,45 @@ void sub_80DDF40(struct Sprite *sprite) { sprite->data[6] = (((s16)r5 - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1); sprite->data[7] = (((s16)r6 - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1); sprite->callback = &sub_80DDFE8; +} + +void sub_80DDFE8(struct Sprite *sprite) { + switch (sprite->data[0]) { + case 0: + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + sprite->data[1] -= 1; + if (sprite->data[1] > 0) + break; + sprite->data[0] += 1; + break; + case 1: + sprite->data[2] -= 1; + if (sprite->data[2] > 0) + break; + sprite->data[1] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 3); + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sprite->data[6] = ((sprite->data[1] - sprite->pos1.x) << 4) / sprite->data[3]; + sprite->data[7] = ((sprite->data[2] - sprite->pos1.y) << 4) / sprite->data[3]; + sprite->data[0] += 1; + break; + case 2: + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + sprite->data[3] -= 1; + if (sprite->data[3] > 0) + break; + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3); + sprite->data[0] += 1; + break; + case 3: + move_anim_8074EE0(sprite); + } } \ No newline at end of file -- cgit v1.2.3 From 413b8dbd46d992cd50a267fcac3767ce16e9bd3b Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Wed, 20 Jun 2018 16:14:56 +0100 Subject: Decompile sub_80DE0FC --- src/ghost.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index d44df6818..fdb2e52fa 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -16,6 +16,7 @@ void sub_80DDD78(struct Sprite *); void sub_80DDE7C(u8 taskId); void sub_80DDED0(u8 taskId); void sub_80DDFE8(struct Sprite *); +void sub_80DE114(struct Sprite *); void sub_80DDB6C(struct Sprite *sprite) { InitAnimSpritePos(sprite, 1); @@ -243,4 +244,9 @@ void sub_80DDFE8(struct Sprite *sprite) { case 3: move_anim_8074EE0(sprite); } +} + +void sub_80DE0FC(struct Sprite *sprite) { + sub_8078764(sprite, 1); + sprite->callback = &sub_80DE114; } \ No newline at end of file -- cgit v1.2.3 From d291ac9053837459191a55a8a48d4537d831648b Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Fri, 22 Jun 2018 13:53:44 +0100 Subject: Nonmatch sub_80DE114 --- src/ghost.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index fdb2e52fa..16f4241c0 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -249,4 +249,97 @@ void sub_80DDFE8(struct Sprite *sprite) { void sub_80DE0FC(struct Sprite *sprite) { sub_8078764(sprite, 1); sprite->callback = &sub_80DE114; -} \ No newline at end of file +} + +#ifdef NONMATCHING /* I couldn't do this one. */ +void sub_80DE114(struct Sprite *sprite) {} +#else +NAKED +void sub_80DE114(struct Sprite *sprite) { + asm_unified("\tpush {r4-r6,lr}\n" + "\tadds r3, r0, 0\n" + "\tmovs r5, 0\n" + "\tmovs r6, 0\n" + "\tadds r0, 0x3F\n" + "\tldrb r1, [r0]\n" + "\tmovs r0, 0x10\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080DE1AA\n" + "\tadds r1, r3, 0\n" + "\tadds r1, 0x3E\n" + "\tldrb r2, [r1]\n" + "\tmovs r0, 0x4\n" + "\tands r0, r2\n" + "\tadds r4, r1, 0\n" + "\tcmp r0, 0\n" + "\tbne _080DE13E\n" + "\tmovs r0, 0x4\n" + "\torrs r0, r2\n" + "\tstrb r0, [r4]\n" + "_080DE13E:\n" + "\tmovs r1, 0x2E\n" + "\tldrsh r0, [r3, r1]\n" + "\tcmp r0, 0\n" + "\tbeq _080DE14E\n" + "\tcmp r0, 0x1\n" + "\tbeq _080DE158\n" + "\tmovs r6, 0x1\n" + "\tb _080DE162\n" + "_080DE14E:\n" + "\tmovs r1, 0x30\n" + "\tldrsh r0, [r3, r1]\n" + "\tcmp r0, 0x2\n" + "\tbne _080DE162\n" + "\tb _080DE166\n" + "_080DE158:\n" + "\tmovs r1, 0x30\n" + "\tldrsh r0, [r3, r1]\n" + "\tcmp r0, 0x4\n" + "\tbne _080DE162\n" + "\tmovs r5, 0x1\n" + "_080DE162:\n" + "\tcmp r5, 0\n" + "\tbeq _080DE198\n" + "_080DE166:\n" + "\tldrb r2, [r4]\n" + "\tlsls r0, r2, 29\n" + "\tlsrs r0, 31\n" + "\tmovs r1, 0x1\n" + "\teors r1, r0\n" + "\tlsls r1, 2\n" + "\tmovs r0, 0x5\n" + "\tnegs r0, r0\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r4]\n" + "\tldrh r0, [r3, 0x32]\n" + "\tadds r0, 0x1\n" + "\tmovs r1, 0\n" + "\tstrh r0, [r3, 0x32]\n" + "\tstrh r1, [r3, 0x30]\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x5\n" + "\tbne _080DE1AA\n" + "\tstrh r1, [r3, 0x32]\n" + "\tldrh r0, [r3, 0x2E]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r3, 0x2E]\n" + "\tb _080DE1AA\n" + "_080DE198:\n" + "\tcmp r6, 0\n" + "\tbeq _080DE1A4\n" + "\tadds r0, r3, 0\n" + "\tbl DestroyAnimSprite\n" + "\tb _080DE1AA\n" + "_080DE1A4:\n" + "\tldrh r0, [r3, 0x30]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r3, 0x30]\n" + "_080DE1AA:\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n"); +} +#endif \ No newline at end of file -- cgit v1.2.3 From f9ea9e4fafb8b975bb3708fd2059c93f6d4d96f0 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Fri, 22 Jun 2018 14:29:43 +0100 Subject: Decompile sub_80DE1B0 --- src/ghost.c | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index 16f4241c0..0c547a43f 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -17,6 +17,7 @@ void sub_80DDE7C(u8 taskId); void sub_80DDED0(u8 taskId); void sub_80DDFE8(struct Sprite *); void sub_80DE114(struct Sprite *); +void sub_80DE2DC(u8 taskId); void sub_80DDB6C(struct Sprite *sprite) { InitAnimSpritePos(sprite, 1); @@ -342,4 +343,34 @@ void sub_80DE114(struct Sprite *sprite) { "\tpop {r0}\n" "\tbx r0\n"); } -#endif \ No newline at end of file +#endif + +void sub_80DE1B0(u8 taskId) { + struct Task *task; + + task = &gTasks[taskId]; + task->data[0] = duplicate_obj_of_side_rel2move_in_transparent_mode(1); + if (task->data[0] < 0) { + DestroyAnimVisualTask(taskId); + return; + } + task->data[1] = 0; + task->data[2] = 15; + task->data[3] = 2; + task->data[4] = 0; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = (task->data[3] << 8) | task->data[2]; + gSprites[task->data[0]].data[0] = 80; + if (GetBattlerSide(gAnimBankTarget) == 0) { + gSprites[task->data[0]].data[1] = 0xff70; + gSprites[task->data[0]].data[2] = 0x70; + } else { + gSprites[task->data[0]].data[1] = 0x90; + gSprites[task->data[0]].data[2] = 0xff90; + } + gSprites[task->data[0]].data[3] = 0; + gSprites[task->data[0]].data[4] = 0; + StoreSpriteCallbackInData(&gSprites[task->data[0]], SpriteCallbackDummy); + gSprites[task->data[0]].callback = &sub_8078394; + task->func = &sub_80DE2DC; +} \ No newline at end of file -- cgit v1.2.3 From 6bf9718737e6863ee66336549a7da450233a8df9 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Fri, 22 Jun 2018 15:47:46 +0100 Subject: Decompile sub_80DE2DC --- src/ghost.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index 0c547a43f..3a13f0b7c 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -373,4 +373,41 @@ void sub_80DE1B0(u8 taskId) { StoreSpriteCallbackInData(&gSprites[task->data[0]], SpriteCallbackDummy); gSprites[task->data[0]].callback = &sub_8078394; task->func = &sub_80DE2DC; +} + +void sub_80DE2DC(u8 taskId) { + struct Task *task; + + task = &gTasks[taskId]; + switch (task->data[4]) { + case 0: + task->data[1] += 1; + task->data[5] = task->data[1] & 3; + if (task->data[5] == 1) { + if (task->data[2] > 0) + task->data[2] -= 1; + } + if (task->data[5] == 3) { + if (task->data[3] <= 15) + task->data[3] += 1; + } + REG_BLDALPHA = (task->data[3] << 8) | task->data[2]; + if (task->data[3] != 16 || task->data[2] != 0) + break; + if (task->data[1] <= 80) + break; + obj_delete_but_dont_free_vram(&gSprites[task->data[0]]); + task->data[4] = 1; + break; + case 1: + task->data[6] += 1; + if (task->data[6] <= 1) + break; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + task->data[4] += 1; + break; + case 2: + DestroyAnimVisualTask(taskId); + } } \ No newline at end of file -- cgit v1.2.3 From 7f185ce187271334796162b95e1a378d0edabbd3 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Fri, 22 Jun 2018 15:54:01 +0100 Subject: Decompile sub_80DE3AC --- src/ghost.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/ghost.c b/src/ghost.c index 3a13f0b7c..c5d19e082 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -18,6 +18,7 @@ void sub_80DDED0(u8 taskId); void sub_80DDFE8(struct Sprite *); void sub_80DE114(struct Sprite *); void sub_80DE2DC(u8 taskId); +void sub_80DE3D4(u8 taskId); void sub_80DDB6C(struct Sprite *sprite) { InitAnimSpritePos(sprite, 1); @@ -410,4 +411,13 @@ void sub_80DE2DC(u8 taskId) { case 2: DestroyAnimVisualTask(taskId); } +} + +void sub_80DE3AC(u8 taskId) { + struct Task *task; + + task = &gTasks[taskId]; + task->data[15] = 0; + task->func = &sub_80DE3D4; + sub_80DE3D4(taskId); } \ No newline at end of file -- cgit v1.2.3 From 9542764ca1ba1a698a7fcb5e2efe7f975eeaba3f Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Sat, 23 Jun 2018 17:08:29 +0100 Subject: Move everything into battle/anim/ghost.c --- src/battle/anim/ghost.c | 415 +++++++++++++++++++++++++++++++++++++++++++++++ src/ghost.c | 423 ------------------------------------------------ 2 files changed, 415 insertions(+), 423 deletions(-) delete mode 100644 src/ghost.c (limited to 'src') diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c index fd33d4782..c83f5f444 100755 --- a/src/battle/anim/ghost.c +++ b/src/battle/anim/ghost.c @@ -1,15 +1,28 @@ #include "global.h" +#include "sound.h" +#include "trig.h" #include "rom_8077ABC.h" #include "battle_anim.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; +extern u8 gUnknown_0202F7D2; void sub_80DDB6C(struct Sprite *sprite); +void sub_80DDBD8(struct Sprite *); +void sub_80DDC4C(struct Sprite *); +void sub_80DDCC8(struct Sprite *); void sub_80DDD58(struct Sprite *sprite); +void sub_80DDD78(struct Sprite *); +void sub_80DDE7C(u8 taskId); +void sub_80DDED0(u8 taskId); void sub_80DDF40(struct Sprite *sprite); +void sub_80DDFE8(struct Sprite *); void sub_80DE0FC(struct Sprite *sprite); +void sub_80DE114(struct Sprite *); +void sub_80DE2DC(u8 taskId); +void sub_80DE3D4(u8 taskId); void sub_80DE7B8(struct Sprite *sprite); void sub_80DEF3C(struct Sprite *sprite); void sub_80DF0B8(struct Sprite *sprite); @@ -189,3 +202,405 @@ const struct SpriteTemplate gSpriteTemplate_83DAF98 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_80DF49C, }; + +void sub_80DDB6C(struct Sprite *sprite) { + InitAnimSpritePos(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); + sub_8078BD4(sprite); + sprite->callback = sub_80DDBD8; + sprite->data[6] = 0x10; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = sprite->data[6]; +} + +void sub_80DDBD8(struct Sprite *sprite) { + s16 r0; + s16 r2; + sub_80DDCC8(sprite); + if (TranslateAnimSpriteByDeltas(sprite)) { + sprite->callback = sub_80DDC4C; + return; + } + sprite->pos2.x += Sin(sprite->data[5], 10); + sprite->pos2.y += Cos(sprite->data[5], 15); + r2 = sprite->data[5]; + sprite->data[5] = (sprite->data[5] + 5) & 0xFF; + r0 = sprite->data[5]; + if (r2 != 0) { + if (r2 <= 0xC4) + return; + } + if (r0 <= 0) + return; + PlaySE12WithPanning(0xC4, gUnknown_0202F7D2); +} + +void sub_80DDC4C(struct Sprite *sprite) +{ + s16 r2; + s16 r0; + sprite->data[0] = 1; + TranslateAnimSpriteByDeltas(sprite); + sprite->pos2.x += Sin(sprite->data[5],10); + sprite->pos2.y += Cos(sprite->data[5],15); + + r2 = sprite->data[5]; + sprite->data[5] = (sprite->data[5] + 5) & 0xFF; + r0 = sprite->data[5]; + + if(r2 == 0 || r2 > 0xC4) + { + if(r0 > 0) + PlaySE(0xC4); + } + + if(sprite->data[6] == 0) + { + sprite->invisible = TRUE; + sprite->callback = sub_807861C; + } + else + sub_80DDCC8(sprite); +} + +void sub_80DDCC8(struct Sprite *sprite) +{ + + s16 r0; + if(sprite->data[6] > 0xFF) + { + if(++sprite->data[6] == 0x10d) + sprite->data[6] = 0; + return; + } + + r0 = sprite->data[7]; + sprite->data[7]++; + + if((r0 & 0xFF) == 0) + { + sprite->data[7] &= 0xff00; + if((sprite->data[7] & 0x100) != 0) + sprite->data[6]++; + else + sprite->data[6]--; + } + else + return; + + REG_BLDALPHA = ((16 - sprite->data[6]) << 8) | sprite->data[6]; + if(sprite->data[6] == 0 || sprite->data[6] == 16) + { + sprite->data[7] ^= 0x100; + } + if(sprite->data[6] == 0) + sprite->data[6] = 0x100; +} + +void sub_80DDD58(struct Sprite *sprite) +{ + sub_8078764(sprite, 1); + sprite->callback = sub_80DDD78; + sub_80DDD78(sprite); +} + +void sub_80DDD78(struct Sprite *sprite) { + u16 temp1; + sprite->pos2.x = Sin(sprite->data[0], 32); + sprite->pos2.y = Cos(sprite->data[0], 8); + temp1 = sprite->data[0] - 65; + if (temp1 <= 130) { + sprite->oam.priority = 2; + } else { + sprite->oam.priority = 1; + } + sprite->data[0] = (sprite->data[0] + 0x13) & 0xFF; + sprite->data[2] += 80; + sprite->pos2.y += sprite->data[2] >> 8; + sprite->data[7] += 1; + 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; +} + +void sub_80DDE7C(u8 taskId) { + gTasks[taskId].data[10] += 1; + if (gTasks[taskId].data[10] == 3) { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[2] += 1; + gTasks[taskId].data[3] -= 1; + REG_BLDALPHA = gTasks[taskId].data[3] << 8 | gTasks[taskId].data[2]; + if (gTasks[taskId].data[2] != 9) + return; + gTasks[taskId].func = &sub_80DDED0; + } +} + +void sub_80DDED0(u8 taskId) { + u8 r1; + if (gTasks[taskId].data[1] > 0) { + gTasks[taskId].data[1] -= 1; + return; + } + r1 = GetAnimBattlerSpriteId(0); + gTasks[taskId].data[0] += 8; + if (gTasks[taskId].data[0] <= 0xFF) { + obj_id_set_rotscale(r1, gTasks[taskId].data[0], gTasks[taskId].data[0], 0); + return; + } + sub_8078F40(r1); + DestroyAnimVisualTask(taskId); + REG_BLDCNT = 0; + REG_BLDALPHA = 0; +} + +void sub_80DDF40(struct Sprite *sprite) { + u16 r5, r6; + r5 = sprite->pos1.x; + r6 = sprite->pos1.y; + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[3] = gBattleAnimArgs[2]; + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sprite->data[6] = (((s16)r5 - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1); + sprite->data[7] = (((s16)r6 - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1); + sprite->callback = &sub_80DDFE8; +} + +void sub_80DDFE8(struct Sprite *sprite) { + switch (sprite->data[0]) { + case 0: + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + sprite->data[1] -= 1; + if (sprite->data[1] > 0) + break; + sprite->data[0] += 1; + break; + case 1: + sprite->data[2] -= 1; + if (sprite->data[2] > 0) + break; + sprite->data[1] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 3); + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sprite->data[6] = ((sprite->data[1] - sprite->pos1.x) << 4) / sprite->data[3]; + sprite->data[7] = ((sprite->data[2] - sprite->pos1.y) << 4) / sprite->data[3]; + sprite->data[0] += 1; + break; + case 2: + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + sprite->data[3] -= 1; + if (sprite->data[3] > 0) + break; + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3); + sprite->data[0] += 1; + break; + case 3: + move_anim_8074EE0(sprite); + } +} + +void sub_80DE0FC(struct Sprite *sprite) { + sub_8078764(sprite, 1); + sprite->callback = &sub_80DE114; +} + +#ifdef NONMATCHING /* I couldn't do this one. */ +void sub_80DE114(struct Sprite *sprite) {} +#else +NAKED +void sub_80DE114(struct Sprite *sprite) { + asm_unified("\tpush {r4-r6,lr}\n" + "\tadds r3, r0, 0\n" + "\tmovs r5, 0\n" + "\tmovs r6, 0\n" + "\tadds r0, 0x3F\n" + "\tldrb r1, [r0]\n" + "\tmovs r0, 0x10\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080DE1AA\n" + "\tadds r1, r3, 0\n" + "\tadds r1, 0x3E\n" + "\tldrb r2, [r1]\n" + "\tmovs r0, 0x4\n" + "\tands r0, r2\n" + "\tadds r4, r1, 0\n" + "\tcmp r0, 0\n" + "\tbne _080DE13E\n" + "\tmovs r0, 0x4\n" + "\torrs r0, r2\n" + "\tstrb r0, [r4]\n" + "_080DE13E:\n" + "\tmovs r1, 0x2E\n" + "\tldrsh r0, [r3, r1]\n" + "\tcmp r0, 0\n" + "\tbeq _080DE14E\n" + "\tcmp r0, 0x1\n" + "\tbeq _080DE158\n" + "\tmovs r6, 0x1\n" + "\tb _080DE162\n" + "_080DE14E:\n" + "\tmovs r1, 0x30\n" + "\tldrsh r0, [r3, r1]\n" + "\tcmp r0, 0x2\n" + "\tbne _080DE162\n" + "\tb _080DE166\n" + "_080DE158:\n" + "\tmovs r1, 0x30\n" + "\tldrsh r0, [r3, r1]\n" + "\tcmp r0, 0x4\n" + "\tbne _080DE162\n" + "\tmovs r5, 0x1\n" + "_080DE162:\n" + "\tcmp r5, 0\n" + "\tbeq _080DE198\n" + "_080DE166:\n" + "\tldrb r2, [r4]\n" + "\tlsls r0, r2, 29\n" + "\tlsrs r0, 31\n" + "\tmovs r1, 0x1\n" + "\teors r1, r0\n" + "\tlsls r1, 2\n" + "\tmovs r0, 0x5\n" + "\tnegs r0, r0\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r4]\n" + "\tldrh r0, [r3, 0x32]\n" + "\tadds r0, 0x1\n" + "\tmovs r1, 0\n" + "\tstrh r0, [r3, 0x32]\n" + "\tstrh r1, [r3, 0x30]\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x5\n" + "\tbne _080DE1AA\n" + "\tstrh r1, [r3, 0x32]\n" + "\tldrh r0, [r3, 0x2E]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r3, 0x2E]\n" + "\tb _080DE1AA\n" + "_080DE198:\n" + "\tcmp r6, 0\n" + "\tbeq _080DE1A4\n" + "\tadds r0, r3, 0\n" + "\tbl DestroyAnimSprite\n" + "\tb _080DE1AA\n" + "_080DE1A4:\n" + "\tldrh r0, [r3, 0x30]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r3, 0x30]\n" + "_080DE1AA:\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n"); +} +#endif + +void sub_80DE1B0(u8 taskId) { + struct Task *task; + + task = &gTasks[taskId]; + task->data[0] = duplicate_obj_of_side_rel2move_in_transparent_mode(1); + if (task->data[0] < 0) { + DestroyAnimVisualTask(taskId); + return; + } + task->data[1] = 0; + task->data[2] = 15; + task->data[3] = 2; + task->data[4] = 0; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = (task->data[3] << 8) | task->data[2]; + gSprites[task->data[0]].data[0] = 80; + if (GetBattlerSide(gAnimBankTarget) == 0) { + gSprites[task->data[0]].data[1] = 0xff70; + gSprites[task->data[0]].data[2] = 0x70; + } else { + gSprites[task->data[0]].data[1] = 0x90; + gSprites[task->data[0]].data[2] = 0xff90; + } + gSprites[task->data[0]].data[3] = 0; + gSprites[task->data[0]].data[4] = 0; + StoreSpriteCallbackInData(&gSprites[task->data[0]], SpriteCallbackDummy); + gSprites[task->data[0]].callback = &sub_8078394; + task->func = &sub_80DE2DC; +} + +void sub_80DE2DC(u8 taskId) { + struct Task *task; + + task = &gTasks[taskId]; + switch (task->data[4]) { + case 0: + task->data[1] += 1; + task->data[5] = task->data[1] & 3; + if (task->data[5] == 1) { + if (task->data[2] > 0) + task->data[2] -= 1; + } + if (task->data[5] == 3) { + if (task->data[3] <= 15) + task->data[3] += 1; + } + REG_BLDALPHA = (task->data[3] << 8) | task->data[2]; + if (task->data[3] != 16 || task->data[2] != 0) + break; + if (task->data[1] <= 80) + break; + obj_delete_but_dont_free_vram(&gSprites[task->data[0]]); + task->data[4] = 1; + break; + case 1: + task->data[6] += 1; + if (task->data[6] <= 1) + break; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + task->data[4] += 1; + break; + case 2: + DestroyAnimVisualTask(taskId); + } +} + +void sub_80DE3AC(u8 taskId) { + struct Task *task; + + task = &gTasks[taskId]; + task->data[15] = 0; + task->func = &sub_80DE3D4; + sub_80DE3D4(taskId); +} diff --git a/src/ghost.c b/src/ghost.c deleted file mode 100644 index c5d19e082..000000000 --- a/src/ghost.c +++ /dev/null @@ -1,423 +0,0 @@ -#include "global.h" -#include "battle_anim.h" -#include "rom_8077ABC.h" -#include "sound.h" -#include "trig.h" - -extern s16 gBattleAnimArgs[]; -extern u8 gAnimBankTarget; -extern u8 gUnknown_0202F7D2; -extern u8 gAnimBankAttacker; - -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_80DDED0(u8 taskId); -void sub_80DDFE8(struct Sprite *); -void sub_80DE114(struct Sprite *); -void sub_80DE2DC(u8 taskId); -void sub_80DE3D4(u8 taskId); - -void sub_80DDB6C(struct Sprite *sprite) { - InitAnimSpritePos(sprite, 1); - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); - sub_8078BD4(sprite); - sprite->callback = sub_80DDBD8; - sprite->data[6] = 0x10; - REG_BLDCNT = 0x3F40; - REG_BLDALPHA = sprite->data[6]; -} - -void sub_80DDBD8(struct Sprite *sprite) { - s16 r0; - s16 r2; - sub_80DDCC8(sprite); - if (TranslateAnimSpriteByDeltas(sprite)) { - sprite->callback = sub_80DDC4C; - return; - } - sprite->pos2.x += Sin(sprite->data[5], 10); - sprite->pos2.y += Cos(sprite->data[5], 15); - r2 = sprite->data[5]; - sprite->data[5] = (sprite->data[5] + 5) & 0xFF; - r0 = sprite->data[5]; - if (r2 != 0) { - if (r2 <= 0xC4) - return; - } - if (r0 <= 0) - return; - PlaySE12WithPanning(0xC4, gUnknown_0202F7D2); -} - -void sub_80DDC4C(struct Sprite *sprite) -{ - s16 r2; - s16 r0; - sprite->data[0] = 1; - TranslateAnimSpriteByDeltas(sprite); - sprite->pos2.x += Sin(sprite->data[5],10); - sprite->pos2.y += Cos(sprite->data[5],15); - - r2 = sprite->data[5]; - sprite->data[5] = (sprite->data[5] + 5) & 0xFF; - r0 = sprite->data[5]; - - if(r2 == 0 || r2 > 0xC4) - { - if(r0 > 0) - PlaySE(0xC4); - } - - if(sprite->data[6] == 0) - { - sprite->invisible = TRUE; - sprite->callback = sub_807861C; - } - else - sub_80DDCC8(sprite); -} - -void sub_80DDCC8(struct Sprite *sprite) -{ - - s16 r0; - if(sprite->data[6] > 0xFF) - { - if(++sprite->data[6] == 0x10d) - sprite->data[6] = 0; - return; - } - - r0 = sprite->data[7]; - sprite->data[7]++; - - if((r0 & 0xFF) == 0) - { - sprite->data[7] &= 0xff00; - if((sprite->data[7] & 0x100) != 0) - sprite->data[6]++; - else - sprite->data[6]--; - } - else - return; - - REG_BLDALPHA = ((16 - sprite->data[6]) << 8) | sprite->data[6]; - if(sprite->data[6] == 0 || sprite->data[6] == 16) - { - sprite->data[7] ^= 0x100; - } - if(sprite->data[6] == 0) - sprite->data[6] = 0x100; -} - -void sub_80DDD58(struct Sprite *sprite) -{ - sub_8078764(sprite, 1); - sprite->callback = sub_80DDD78; - sub_80DDD78(sprite); -} - -void sub_80DDD78(struct Sprite *sprite) { - u16 temp1; - sprite->pos2.x = Sin(sprite->data[0], 32); - sprite->pos2.y = Cos(sprite->data[0], 8); - temp1 = sprite->data[0] - 65; - if (temp1 <= 130) { - sprite->oam.priority = 2; - } else { - sprite->oam.priority = 1; - } - sprite->data[0] = (sprite->data[0] + 0x13) & 0xFF; - sprite->data[2] += 80; - sprite->pos2.y += sprite->data[2] >> 8; - sprite->data[7] += 1; - 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; -} - -void sub_80DDE7C(u8 taskId) { - gTasks[taskId].data[10] += 1; - if (gTasks[taskId].data[10] == 3) { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[2] += 1; - gTasks[taskId].data[3] -= 1; - REG_BLDALPHA = gTasks[taskId].data[3] << 8 | gTasks[taskId].data[2]; - if (gTasks[taskId].data[2] != 9) - return; - gTasks[taskId].func = &sub_80DDED0; - } -} - -void sub_80DDED0(u8 taskId) { - u8 r1; - if (gTasks[taskId].data[1] > 0) { - gTasks[taskId].data[1] -= 1; - return; - } - r1 = GetAnimBattlerSpriteId(0); - gTasks[taskId].data[0] += 8; - if (gTasks[taskId].data[0] <= 0xFF) { - obj_id_set_rotscale(r1, gTasks[taskId].data[0], gTasks[taskId].data[0], 0); - return; - } - sub_8078F40(r1); - DestroyAnimVisualTask(taskId); - REG_BLDCNT = 0; - REG_BLDALPHA = 0; -} - -void sub_80DDF40(struct Sprite *sprite) { - u16 r5, r6; - r5 = sprite->pos1.x; - r6 = sprite->pos1.y; - sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); - sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); - sprite->data[0] = 0; - sprite->data[1] = gBattleAnimArgs[0]; - sprite->data[2] = gBattleAnimArgs[1]; - sprite->data[3] = gBattleAnimArgs[2]; - sprite->data[4] = sprite->pos1.x << 4; - sprite->data[5] = sprite->pos1.y << 4; - sprite->data[6] = (((s16)r5 - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1); - sprite->data[7] = (((s16)r6 - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1); - sprite->callback = &sub_80DDFE8; -} - -void sub_80DDFE8(struct Sprite *sprite) { - switch (sprite->data[0]) { - case 0: - sprite->data[4] += sprite->data[6]; - sprite->data[5] += sprite->data[7]; - sprite->pos1.x = sprite->data[4] >> 4; - sprite->pos1.y = sprite->data[5] >> 4; - sprite->data[1] -= 1; - if (sprite->data[1] > 0) - break; - sprite->data[0] += 1; - break; - case 1: - sprite->data[2] -= 1; - if (sprite->data[2] > 0) - break; - sprite->data[1] = GetBattlerSpriteCoord(gAnimBankTarget, 2); - sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 3); - sprite->data[4] = sprite->pos1.x << 4; - sprite->data[5] = sprite->pos1.y << 4; - sprite->data[6] = ((sprite->data[1] - sprite->pos1.x) << 4) / sprite->data[3]; - sprite->data[7] = ((sprite->data[2] - sprite->pos1.y) << 4) / sprite->data[3]; - sprite->data[0] += 1; - break; - case 2: - sprite->data[4] += sprite->data[6]; - sprite->data[5] += sprite->data[7]; - sprite->pos1.x = sprite->data[4] >> 4; - sprite->pos1.y = sprite->data[5] >> 4; - sprite->data[3] -= 1; - if (sprite->data[3] > 0) - break; - sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2); - sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3); - sprite->data[0] += 1; - break; - case 3: - move_anim_8074EE0(sprite); - } -} - -void sub_80DE0FC(struct Sprite *sprite) { - sub_8078764(sprite, 1); - sprite->callback = &sub_80DE114; -} - -#ifdef NONMATCHING /* I couldn't do this one. */ -void sub_80DE114(struct Sprite *sprite) {} -#else -NAKED -void sub_80DE114(struct Sprite *sprite) { - asm_unified("\tpush {r4-r6,lr}\n" - "\tadds r3, r0, 0\n" - "\tmovs r5, 0\n" - "\tmovs r6, 0\n" - "\tadds r0, 0x3F\n" - "\tldrb r1, [r0]\n" - "\tmovs r0, 0x10\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _080DE1AA\n" - "\tadds r1, r3, 0\n" - "\tadds r1, 0x3E\n" - "\tldrb r2, [r1]\n" - "\tmovs r0, 0x4\n" - "\tands r0, r2\n" - "\tadds r4, r1, 0\n" - "\tcmp r0, 0\n" - "\tbne _080DE13E\n" - "\tmovs r0, 0x4\n" - "\torrs r0, r2\n" - "\tstrb r0, [r4]\n" - "_080DE13E:\n" - "\tmovs r1, 0x2E\n" - "\tldrsh r0, [r3, r1]\n" - "\tcmp r0, 0\n" - "\tbeq _080DE14E\n" - "\tcmp r0, 0x1\n" - "\tbeq _080DE158\n" - "\tmovs r6, 0x1\n" - "\tb _080DE162\n" - "_080DE14E:\n" - "\tmovs r1, 0x30\n" - "\tldrsh r0, [r3, r1]\n" - "\tcmp r0, 0x2\n" - "\tbne _080DE162\n" - "\tb _080DE166\n" - "_080DE158:\n" - "\tmovs r1, 0x30\n" - "\tldrsh r0, [r3, r1]\n" - "\tcmp r0, 0x4\n" - "\tbne _080DE162\n" - "\tmovs r5, 0x1\n" - "_080DE162:\n" - "\tcmp r5, 0\n" - "\tbeq _080DE198\n" - "_080DE166:\n" - "\tldrb r2, [r4]\n" - "\tlsls r0, r2, 29\n" - "\tlsrs r0, 31\n" - "\tmovs r1, 0x1\n" - "\teors r1, r0\n" - "\tlsls r1, 2\n" - "\tmovs r0, 0x5\n" - "\tnegs r0, r0\n" - "\tands r0, r2\n" - "\torrs r0, r1\n" - "\tstrb r0, [r4]\n" - "\tldrh r0, [r3, 0x32]\n" - "\tadds r0, 0x1\n" - "\tmovs r1, 0\n" - "\tstrh r0, [r3, 0x32]\n" - "\tstrh r1, [r3, 0x30]\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x5\n" - "\tbne _080DE1AA\n" - "\tstrh r1, [r3, 0x32]\n" - "\tldrh r0, [r3, 0x2E]\n" - "\tadds r0, 0x1\n" - "\tstrh r0, [r3, 0x2E]\n" - "\tb _080DE1AA\n" - "_080DE198:\n" - "\tcmp r6, 0\n" - "\tbeq _080DE1A4\n" - "\tadds r0, r3, 0\n" - "\tbl DestroyAnimSprite\n" - "\tb _080DE1AA\n" - "_080DE1A4:\n" - "\tldrh r0, [r3, 0x30]\n" - "\tadds r0, 0x1\n" - "\tstrh r0, [r3, 0x30]\n" - "_080DE1AA:\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0\n"); -} -#endif - -void sub_80DE1B0(u8 taskId) { - struct Task *task; - - task = &gTasks[taskId]; - task->data[0] = duplicate_obj_of_side_rel2move_in_transparent_mode(1); - if (task->data[0] < 0) { - DestroyAnimVisualTask(taskId); - return; - } - task->data[1] = 0; - task->data[2] = 15; - task->data[3] = 2; - task->data[4] = 0; - REG_BLDCNT = 0x3F40; - REG_BLDALPHA = (task->data[3] << 8) | task->data[2]; - gSprites[task->data[0]].data[0] = 80; - if (GetBattlerSide(gAnimBankTarget) == 0) { - gSprites[task->data[0]].data[1] = 0xff70; - gSprites[task->data[0]].data[2] = 0x70; - } else { - gSprites[task->data[0]].data[1] = 0x90; - gSprites[task->data[0]].data[2] = 0xff90; - } - gSprites[task->data[0]].data[3] = 0; - gSprites[task->data[0]].data[4] = 0; - StoreSpriteCallbackInData(&gSprites[task->data[0]], SpriteCallbackDummy); - gSprites[task->data[0]].callback = &sub_8078394; - task->func = &sub_80DE2DC; -} - -void sub_80DE2DC(u8 taskId) { - struct Task *task; - - task = &gTasks[taskId]; - switch (task->data[4]) { - case 0: - task->data[1] += 1; - task->data[5] = task->data[1] & 3; - if (task->data[5] == 1) { - if (task->data[2] > 0) - task->data[2] -= 1; - } - if (task->data[5] == 3) { - if (task->data[3] <= 15) - task->data[3] += 1; - } - REG_BLDALPHA = (task->data[3] << 8) | task->data[2]; - if (task->data[3] != 16 || task->data[2] != 0) - break; - if (task->data[1] <= 80) - break; - obj_delete_but_dont_free_vram(&gSprites[task->data[0]]); - task->data[4] = 1; - break; - case 1: - task->data[6] += 1; - if (task->data[6] <= 1) - break; - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - task->data[4] += 1; - break; - case 2: - DestroyAnimVisualTask(taskId); - } -} - -void sub_80DE3AC(u8 taskId) { - struct Task *task; - - task = &gTasks[taskId]; - task->data[15] = 0; - task->func = &sub_80DE3D4; - sub_80DE3D4(taskId); -} \ No newline at end of file -- cgit v1.2.3 From 5bce0fec056737c1a562cc2be738a868e02117ba Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Sat, 23 Jun 2018 19:06:06 +0100 Subject: Remove clothing from sub_80DE114 --- src/battle/anim/ghost.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src') diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c index c83f5f444..98710c679 100755 --- a/src/battle/anim/ghost.c +++ b/src/battle/anim/ghost.c @@ -436,9 +436,7 @@ void sub_80DE0FC(struct Sprite *sprite) { sprite->callback = &sub_80DE114; } -#ifdef NONMATCHING /* I couldn't do this one. */ -void sub_80DE114(struct Sprite *sprite) {} -#else +/* NONMATCHING */ NAKED void sub_80DE114(struct Sprite *sprite) { asm_unified("\tpush {r4-r6,lr}\n" @@ -527,7 +525,6 @@ void sub_80DE114(struct Sprite *sprite) { "\tpop {r0}\n" "\tbx r0\n"); } -#endif void sub_80DE1B0(u8 taskId) { struct Task *task; -- cgit v1.2.3 From 31c322c77b2e5628ebe5c5c9c4b34c8beb8f40cb Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Sun, 24 Jun 2018 16:11:22 +0100 Subject: Respond to formatting feedback --- src/battle/anim/ghost.c | 156 ++++++++++++++++++++++++++---------------------- 1 file changed, 85 insertions(+), 71 deletions(-) (limited to 'src') diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c index 98710c679..85879c86c 100755 --- a/src/battle/anim/ghost.c +++ b/src/battle/anim/ghost.c @@ -1,5 +1,6 @@ #include "global.h" #include "sound.h" +#include "constants/songs.h" #include "trig.h" #include "rom_8077ABC.h" #include "battle_anim.h" @@ -203,7 +204,8 @@ const struct SpriteTemplate gSpriteTemplate_83DAF98 = .callback = sub_80DF49C, }; -void sub_80DDB6C(struct Sprite *sprite) { +void sub_80DDB6C(struct Sprite *sprite) +{ InitAnimSpritePos(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = sprite->pos1.x; @@ -212,16 +214,18 @@ void sub_80DDB6C(struct Sprite *sprite) { sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); sub_8078BD4(sprite); sprite->callback = sub_80DDBD8; - sprite->data[6] = 0x10; + sprite->data[6] = 16; REG_BLDCNT = 0x3F40; REG_BLDALPHA = sprite->data[6]; } -void sub_80DDBD8(struct Sprite *sprite) { +void sub_80DDBD8(struct Sprite *sprite) +{ s16 r0; s16 r2; sub_80DDCC8(sprite); - if (TranslateAnimSpriteByDeltas(sprite)) { + if (TranslateAnimSpriteByDeltas(sprite)) + { sprite->callback = sub_80DDC4C; return; } @@ -230,13 +234,11 @@ void sub_80DDBD8(struct Sprite *sprite) { r2 = sprite->data[5]; sprite->data[5] = (sprite->data[5] + 5) & 0xFF; r0 = sprite->data[5]; - if (r2 != 0) { - if (r2 <= 0xC4) - return; - } + if (r2 != 0 && r2 <= 196) + return; if (r0 <= 0) return; - PlaySE12WithPanning(0xC4, gUnknown_0202F7D2); + PlaySE12WithPanning(SE_W109, gUnknown_0202F7D2); } void sub_80DDC4C(struct Sprite *sprite) @@ -252,11 +254,9 @@ void sub_80DDC4C(struct Sprite *sprite) sprite->data[5] = (sprite->data[5] + 5) & 0xFF; r0 = sprite->data[5]; - if(r2 == 0 || r2 > 0xC4) - { + if(r2 == 0 || r2 > 196) if(r0 > 0) - PlaySE(0xC4); - } + PlaySE(SE_W109); if(sprite->data[6] == 0) { @@ -292,11 +292,9 @@ void sub_80DDCC8(struct Sprite *sprite) else return; - REG_BLDALPHA = ((16 - sprite->data[6]) << 8) | sprite->data[6]; + REG_BLDALPHA = BLDALPHA_BLEND(sprite->data[6], 16 - sprite->data[6]); if(sprite->data[6] == 0 || sprite->data[6] == 16) - { sprite->data[7] ^= 0x100; - } if(sprite->data[6] == 0) sprite->data[6] = 0x100; } @@ -308,72 +306,78 @@ void sub_80DDD58(struct Sprite *sprite) sub_80DDD78(sprite); } -void sub_80DDD78(struct Sprite *sprite) { +void sub_80DDD78(struct Sprite *sprite) +{ u16 temp1; sprite->pos2.x = Sin(sprite->data[0], 32); sprite->pos2.y = Cos(sprite->data[0], 8); temp1 = sprite->data[0] - 65; - if (temp1 <= 130) { + if (temp1 <= 130) sprite->oam.priority = 2; - } else { + else sprite->oam.priority = 1; - } - sprite->data[0] = (sprite->data[0] + 0x13) & 0xFF; + sprite->data[0] = (sprite->data[0] + 19) & 0xFF; sprite->data[2] += 80; sprite->pos2.y += sprite->data[2] >> 8; sprite->data[7] += 1; - if (sprite->data[7] == 0x3D) { + if (sprite->data[7] == 61) DestroyAnimSprite(sprite); - } } -void sub_80DDDF0(u8 r5) { - u8 r4; +void sub_80DDDF0(u8 taskId) +{ + u8 spriteId; 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; + spriteId = GetAnimBattlerSpriteId(0); + sub_8078E70(spriteId, 1); + obj_id_set_rotscale(spriteId, 128, 128, 0); + gSprites[spriteId].invisible = FALSE; + gTasks[taskId].data[0] = 128; + gTasks[taskId].data[1] = *gBattleAnimArgs; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 16; + gTasks[taskId].func = sub_80DDE7C; } -void sub_80DDE7C(u8 taskId) { +void sub_80DDE7C(u8 taskId) +{ gTasks[taskId].data[10] += 1; - if (gTasks[taskId].data[10] == 3) { + if (gTasks[taskId].data[10] == 3) + { gTasks[taskId].data[10] = 0; gTasks[taskId].data[2] += 1; gTasks[taskId].data[3] -= 1; REG_BLDALPHA = gTasks[taskId].data[3] << 8 | gTasks[taskId].data[2]; if (gTasks[taskId].data[2] != 9) return; - gTasks[taskId].func = &sub_80DDED0; + gTasks[taskId].func = sub_80DDED0; } } -void sub_80DDED0(u8 taskId) { - u8 r1; - if (gTasks[taskId].data[1] > 0) { +void sub_80DDED0(u8 taskId) +{ + u8 spriteId; + if (gTasks[taskId].data[1] > 0) + { gTasks[taskId].data[1] -= 1; return; } - r1 = GetAnimBattlerSpriteId(0); + spriteId = GetAnimBattlerSpriteId(0); gTasks[taskId].data[0] += 8; - if (gTasks[taskId].data[0] <= 0xFF) { - obj_id_set_rotscale(r1, gTasks[taskId].data[0], gTasks[taskId].data[0], 0); + if (gTasks[taskId].data[0] <= 0xFF) + { + obj_id_set_rotscale(spriteId, gTasks[taskId].data[0], gTasks[taskId].data[0], 0); return; } - sub_8078F40(r1); + sub_8078F40(spriteId); DestroyAnimVisualTask(taskId); REG_BLDCNT = 0; REG_BLDALPHA = 0; } -void sub_80DDF40(struct Sprite *sprite) { +void sub_80DDF40(struct Sprite *sprite) +{ u16 r5, r6; r5 = sprite->pos1.x; r6 = sprite->pos1.y; @@ -387,11 +391,13 @@ void sub_80DDF40(struct Sprite *sprite) { sprite->data[5] = sprite->pos1.y << 4; sprite->data[6] = (((s16)r5 - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1); sprite->data[7] = (((s16)r6 - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1); - sprite->callback = &sub_80DDFE8; + sprite->callback = sub_80DDFE8; } -void sub_80DDFE8(struct Sprite *sprite) { - switch (sprite->data[0]) { +void sub_80DDFE8(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { case 0: sprite->data[4] += sprite->data[6]; sprite->data[5] += sprite->data[7]; @@ -428,17 +434,20 @@ void sub_80DDFE8(struct Sprite *sprite) { break; case 3: move_anim_8074EE0(sprite); + break; } } -void sub_80DE0FC(struct Sprite *sprite) { +void sub_80DE0FC(struct Sprite *sprite) +{ sub_8078764(sprite, 1); - sprite->callback = &sub_80DE114; + sprite->callback = sub_80DE114; } /* NONMATCHING */ NAKED -void sub_80DE114(struct Sprite *sprite) { +void sub_80DE114(struct Sprite *sprite) +{ asm_unified("\tpush {r4-r6,lr}\n" "\tadds r3, r0, 0\n" "\tmovs r5, 0\n" @@ -526,12 +535,14 @@ void sub_80DE114(struct Sprite *sprite) { "\tbx r0\n"); } -void sub_80DE1B0(u8 taskId) { +void sub_80DE1B0(u8 taskId) +{ struct Task *task; task = &gTasks[taskId]; task->data[0] = duplicate_obj_of_side_rel2move_in_transparent_mode(1); - if (task->data[0] < 0) { + if (task->data[0] < 0) + { DestroyAnimVisualTask(taskId); return; } @@ -542,36 +553,39 @@ void sub_80DE1B0(u8 taskId) { REG_BLDCNT = 0x3F40; REG_BLDALPHA = (task->data[3] << 8) | task->data[2]; gSprites[task->data[0]].data[0] = 80; - if (GetBattlerSide(gAnimBankTarget) == 0) { - gSprites[task->data[0]].data[1] = 0xff70; - gSprites[task->data[0]].data[2] = 0x70; - } else { - gSprites[task->data[0]].data[1] = 0x90; - gSprites[task->data[0]].data[2] = 0xff90; + if (GetBattlerSide(gAnimBankTarget) == 0) + { + gSprites[task->data[0]].data[1] = -144; + gSprites[task->data[0]].data[2] = 112; + } + else + { + gSprites[task->data[0]].data[1] = 144; + gSprites[task->data[0]].data[2] = -112; } gSprites[task->data[0]].data[3] = 0; gSprites[task->data[0]].data[4] = 0; StoreSpriteCallbackInData(&gSprites[task->data[0]], SpriteCallbackDummy); - gSprites[task->data[0]].callback = &sub_8078394; - task->func = &sub_80DE2DC; + gSprites[task->data[0]].callback = sub_8078394; + task->func = sub_80DE2DC; } -void sub_80DE2DC(u8 taskId) { +void sub_80DE2DC(u8 taskId) +{ struct Task *task; task = &gTasks[taskId]; - switch (task->data[4]) { + switch (task->data[4]) + { case 0: task->data[1] += 1; task->data[5] = task->data[1] & 3; - if (task->data[5] == 1) { + if (task->data[5] == 1) if (task->data[2] > 0) task->data[2] -= 1; - } - if (task->data[5] == 3) { + if (task->data[5] == 3) if (task->data[3] <= 15) task->data[3] += 1; - } REG_BLDALPHA = (task->data[3] << 8) | task->data[2]; if (task->data[3] != 16 || task->data[2] != 0) break; @@ -581,8 +595,7 @@ void sub_80DE2DC(u8 taskId) { task->data[4] = 1; break; case 1: - task->data[6] += 1; - if (task->data[6] <= 1) + if (++task->data[6] <= 1) break; REG_BLDCNT = 0; REG_BLDALPHA = 0; @@ -593,11 +606,12 @@ void sub_80DE2DC(u8 taskId) { } } -void sub_80DE3AC(u8 taskId) { +void sub_80DE3AC(u8 taskId) +{ struct Task *task; task = &gTasks[taskId]; task->data[15] = 0; - task->func = &sub_80DE3D4; + task->func = sub_80DE3D4; sub_80DE3D4(taskId); } -- cgit v1.2.3