diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2021-05-11 12:06:00 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2021-05-11 12:06:00 -0400 |
commit | b1603bba92dac95fd1621978f21ee9bf107f7b6a (patch) | |
tree | 9d86f2a2aed82e2dcbefebe7c5dbdecf3aed607e /src/task.c | |
parent | 44dc1a473c8a4ff1c73b776889f2002136c7787d (diff) | |
parent | 4767019e4f541a19577a9bfd09851a94b2e3c745 (diff) |
Merge remote-tracking branch 'origin/master' into modern_ld
Diffstat (limited to 'src/task.c')
-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) |