diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2021-04-27 15:46:09 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2021-04-27 15:47:09 -0400 |
commit | 5a2da388cc32529f5be46f7b454e9c9792b75679 (patch) | |
tree | a8f3ce17aacee5aa865e586b2c4ec9f17b34d0a6 /src | |
parent | d21090cf044c3693f020f9580fa1dbefe3d4556f (diff) |
Sync task.c from Emerald
Diffstat (limited to 'src')
-rw-r--r-- | src/task.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/src/task.c b/src/task.c index 83800a440..672d200fe 100644 --- a/src/task.c +++ b/src/task.c @@ -139,32 +139,20 @@ void TaskDummy(u8 taskId) { } -#define TASK_DATA_OP(taskId, offset, op) \ -{ \ - u32 tasksAddr = (u32)gTasks; \ - u32 addr = taskId * sizeof(struct Task) + offset; \ - u32 dataAddr = tasksAddr + offsetof(struct Task, data); \ - addr += dataAddr; \ - op; \ -} - void SetTaskFuncWithFollowupFunc(u8 taskId, TaskFunc func, TaskFunc followupFunc) { - TASK_DATA_OP(taskId, 28, *((u16 *)addr) = (u32)followupFunc) - TASK_DATA_OP(taskId, 30, *((u16 *)addr) = (u32)followupFunc >> 16) + u8 followupFuncIndex = NUM_TASK_DATA - 2; // Should be const. + + gTasks[taskId].data[followupFuncIndex] = (s16)((u32)followupFunc); + gTasks[taskId].data[followupFuncIndex + 1] = (s16)((u32)followupFunc >> 16); // Store followupFunc as two half-words in the data array. gTasks[taskId].func = func; } void SwitchTaskToFollowupFunc(u8 taskId) { - s32 func; - - gTasks[taskId].func = NULL; - - TASK_DATA_OP(taskId, 28, func = *((u16 *)addr)) - TASK_DATA_OP(taskId, 30, func |= *((s16 *)addr) << 16) + u8 followupFuncIndex = NUM_TASK_DATA - 2; // Should be const. - gTasks[taskId].func = (TaskFunc)func; + gTasks[taskId].func = (TaskFunc)((u16)(gTasks[taskId].data[followupFuncIndex]) | (gTasks[taskId].data[followupFuncIndex + 1] << 16)); } bool8 FuncIsActiveTask(TaskFunc func) |