diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-11-04 11:39:23 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-11-04 11:39:23 -0400 |
commit | d921e555d20151c420eb0dab03913125a7bbf1fb (patch) | |
tree | a3f3a0faf18dac71288058d32bd81b35aec08484 /src | |
parent | 6c746425ed48ba6d4d6519959b13914192da95b7 (diff) |
sub_80E7630
Diffstat (limited to 'src')
-rw-r--r-- | src/record_mixing.c | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/src/record_mixing.c b/src/record_mixing.c index 9dd3be0fe..d00634212 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -67,10 +67,11 @@ EWRAM_DATA struct PlayerRecords *gUnknown_0203A018 = NULL; static void sub_80E715C(u8 taskId); static void sub_80E7324(u8 taskId); static void sub_80E756C(u8 taskId); -void sub_80E7630(u8 taskId); +static void sub_80E7630(u8 taskId); void sub_80E77D4(u8 taskId); void *sub_80E77FC(s16 *asShort); u8 sub_80E7810(void); +void *sub_80E7820(u8); void sub_80E7808(struct PlayerRecords *records, s16 *a1); void sub_80E78C4(OldMan *, size_t, u8); void sub_80E7948(void *, size_t, u8); @@ -445,3 +446,47 @@ static void sub_80E756C(u8 taskId) break; } } + +static void sub_80E7630(u8 taskId) +{ + struct Task *task; + u8 status; + u8 counter; + u8 i; + void *dest; + void *src; + + task = &gTasks[taskId]; + status = GetBlockReceivedStatus(); + counter = 0; + if (status == sub_800A9D8()) + { + for (i = 0; i < GetLinkPlayerCount(); i ++) + { + if ((status >> i) & 0x01) + { + dest = sub_80E77FC(&task->data[5]) + task->data[i + 1] * 200 + gUnknown_0300115C * i; + src = sub_80E7820(i); + if ((task->data[i + 1] + 1) * 200 > gUnknown_0300115C) + { + memcpy(dest, src, gUnknown_0300115C - task->data[i + 1] * 200); + } + else + { + memcpy(dest, src, 200); + } + ResetBlockReceivedFlag(i); + task->data[i + 1] ++; + if (task->data[i + 1] == gUnknown_0300115C / 200 + 1) + { + counter ++; + } + } + } + gTasks[task->data[0]].data[0] ++; + } + if (counter == GetLinkPlayerCount()) + { + DestroyTask(taskId); + } +} |