summaryrefslogtreecommitdiff
path: root/src/ghost.c
diff options
context:
space:
mode:
authorThomas Winwood <twwinwood@gmail.com>2018-06-22 15:47:46 +0100
committerThomas Winwood <twwinwood@gmail.com>2018-06-22 15:47:46 +0100
commit6bf9718737e6863ee66336549a7da450233a8df9 (patch)
tree28317fa35dcda712688df8da8c84bcbf99b2f2bd /src/ghost.c
parentf9ea9e4fafb8b975bb3708fd2059c93f6d4d96f0 (diff)
Decompile sub_80DE2DC
Diffstat (limited to 'src/ghost.c')
-rw-r--r--src/ghost.c37
1 files changed, 37 insertions, 0 deletions
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