diff options
Diffstat (limited to 'src/record_mixing.c')
-rw-r--r-- | src/record_mixing.c | 407 |
1 files changed, 204 insertions, 203 deletions
diff --git a/src/record_mixing.c b/src/record_mixing.c index 12b87b2b1..57a6790f1 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -1,6 +1,7 @@ #include "global.h" #include "record_mixing.h" #include "asm.h" +#include "event_data.h" #include "link.h" #include "menu.h" #include "rom4.h" @@ -9,7 +10,7 @@ #include "sound.h" #include "string_util.h" #include "task.h" -#include "event_data.h" +#include "dewford_trend.h" extern void *recordMixingSecretBases; extern void *recordMixingTvShows; @@ -59,7 +60,7 @@ void sub_80B92AC(void) { sub_80BC300(); sub_80C045C(); - + memcpy(unk_2018000.secretBases, recordMixingSecretBases, sizeof(unk_2018000.secretBases)); memcpy(unk_2018000.tvShows, recordMixingTvShows, sizeof(unk_2018000.tvShows)); memcpy(unk_2018000.filler1004, gUnknown_083D0274, 0x40); @@ -70,8 +71,8 @@ void sub_80B92AC(void) sub_8041324(gSaveBlock1.filler_2F9C, gUnknown_02038738); memcpy(unk_2018000.filler10AC, gUnknown_083D0280, 0x78); memcpy(unk_2018000.filler1124, gUnknown_083D0284, 0xA4); - - if(GetMultiplayerId() == 0) + + if (GetMultiplayerId() == 0) unk_2018000.filler11C8[0] = sub_8126338(); } #else @@ -80,84 +81,84 @@ void sub_80B92AC(void) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ - bl sub_80BC300\n\ - bl sub_80C045C\n\ - ldr r6, _080B9364 @ =0x02018000\n\ - ldr r0, _080B9368 @ =recordMixingSecretBases\n\ - ldr r1, [r0]\n\ - movs r2, 0xC8\n\ - lsls r2, 4\n\ - adds r0, r6, 0\n\ - bl memcpy\n\ - movs r1, 0xC8\n\ - lsls r1, 4\n\ - adds r0, r6, r1\n\ - ldr r1, _080B936C @ =recordMixingTvShows\n\ - ldr r1, [r1]\n\ - movs r2, 0xE1\n\ - lsls r2, 2\n\ - bl memcpy\n\ - ldr r2, _080B9370 @ =0x00001004\n\ - adds r0, r6, r2\n\ - ldr r1, _080B9374 @ =gUnknown_083D0274\n\ - ldr r1, [r1]\n\ - movs r2, 0x40\n\ - bl memcpy\n\ - ldr r1, _080B9378 @ =0x00001044\n\ - adds r0, r6, r1\n\ - ldr r1, _080B937C @ =gUnknown_083D0278\n\ - ldr r1, [r1]\n\ - movs r2, 0x40\n\ - bl memcpy\n\ - ldr r2, _080B9380 @ =0x00001084\n\ - adds r0, r6, r2\n\ - ldr r1, _080B9384 @ =recordMixingEasyChatPairs\n\ - ldr r1, [r1]\n\ - movs r2, 0x28\n\ - bl memcpy\n\ - ldr r5, _080B9388 @ =gUnknown_02038738\n\ - ldr r4, _080B938C @ =gSaveBlock1\n\ - ldr r0, _080B9390 @ =0x0000303c\n\ - adds r1, r4, r0\n\ - adds r0, r5, 0\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - ldr r2, _080B9394 @ =0x00003074\n\ - adds r1, r4, r2\n\ - adds r0, r5, 0\n\ - adds r0, 0x38\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - ldr r0, _080B9398 @ =0x00002f9c\n\ - adds r4, r0\n\ - adds r0, r4, 0\n\ - adds r1, r5, 0\n\ - bl sub_8041324\n\ - ldr r1, _080B939C @ =0x000010ac\n\ - adds r0, r6, r1\n\ - ldr r1, _080B93A0 @ =gUnknown_083D0280\n\ - ldr r1, [r1]\n\ - movs r2, 0x78\n\ - bl memcpy\n\ - ldr r2, _080B93A4 @ =0x00001124\n\ - adds r0, r6, r2\n\ - ldr r1, _080B93A8 @ =gUnknown_083D0284\n\ - ldr r1, [r1]\n\ - movs r2, 0xA4\n\ - bl memcpy\n\ - bl GetMultiplayerId\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080B935C\n\ - bl sub_8126338\n\ - ldr r2, _080B93AC @ =0x000011c8\n\ - adds r1, r6, r2\n\ - strh r0, [r1]\n\ + bl sub_80BC300\n\ + bl sub_80C045C\n\ + ldr r6, _080B9364 @ =0x02018000\n\ + ldr r0, _080B9368 @ =recordMixingSecretBases\n\ + ldr r1, [r0]\n\ + movs r2, 0xC8\n\ + lsls r2, 4\n\ + adds r0, r6, 0\n\ + bl memcpy\n\ + movs r1, 0xC8\n\ + lsls r1, 4\n\ + adds r0, r6, r1\n\ + ldr r1, _080B936C @ =recordMixingTvShows\n\ + ldr r1, [r1]\n\ + movs r2, 0xE1\n\ + lsls r2, 2\n\ + bl memcpy\n\ + ldr r2, _080B9370 @ =0x00001004\n\ + adds r0, r6, r2\n\ + ldr r1, _080B9374 @ =gUnknown_083D0274\n\ + ldr r1, [r1]\n\ + movs r2, 0x40\n\ + bl memcpy\n\ + ldr r1, _080B9378 @ =0x00001044\n\ + adds r0, r6, r1\n\ + ldr r1, _080B937C @ =gUnknown_083D0278\n\ + ldr r1, [r1]\n\ + movs r2, 0x40\n\ + bl memcpy\n\ + ldr r2, _080B9380 @ =0x00001084\n\ + adds r0, r6, r2\n\ + ldr r1, _080B9384 @ =recordMixingEasyChatPairs\n\ + ldr r1, [r1]\n\ + movs r2, 0x28\n\ + bl memcpy\n\ + ldr r5, _080B9388 @ =gUnknown_02038738\n\ + ldr r4, _080B938C @ =gSaveBlock1\n\ + ldr r0, _080B9390 @ =0x0000303c\n\ + adds r1, r4, r0\n\ + adds r0, r5, 0\n\ + movs r2, 0x38\n\ + bl memcpy\n\ + ldr r2, _080B9394 @ =0x00003074\n\ + adds r1, r4, r2\n\ + adds r0, r5, 0\n\ + adds r0, 0x38\n\ + movs r2, 0x38\n\ + bl memcpy\n\ + ldr r0, _080B9398 @ =0x00002f9c\n\ + adds r4, r0\n\ + adds r0, r4, 0\n\ + adds r1, r5, 0\n\ + bl sub_8041324\n\ + ldr r1, _080B939C @ =0x000010ac\n\ + adds r0, r6, r1\n\ + ldr r1, _080B93A0 @ =gUnknown_083D0280\n\ + ldr r1, [r1]\n\ + movs r2, 0x78\n\ + bl memcpy\n\ + ldr r2, _080B93A4 @ =0x00001124\n\ + adds r0, r6, r2\n\ + ldr r1, _080B93A8 @ =gUnknown_083D0284\n\ + ldr r1, [r1]\n\ + movs r2, 0xA4\n\ + bl memcpy\n\ + bl GetMultiplayerId\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080B935C\n\ + bl sub_8126338\n\ + ldr r2, _080B93AC @ =0x000011c8\n\ + adds r1, r6, r2\n\ + strh r0, [r1]\n\ _080B935C:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _080B9364: .4byte 0x02018000\n\ _080B9368: .4byte recordMixingSecretBases\n\ _080B936C: .4byte recordMixingTvShows\n\ @@ -199,7 +200,7 @@ void sub_80B93B0(u32 a) void sub_80B9450(u8 taskId) { gTasks[taskId].data[0]++; - if(gTasks[taskId].data[0] == 50) + if (gTasks[taskId].data[0] == 50) { PlaySE(SE_W213); gTasks[taskId].data[0] = 0; @@ -211,8 +212,8 @@ void sub_80B9450(u8 taskId) void sub_80B9484(u8 taskId) { s16 *taskData = gTasks[taskId].data; - - switch(taskData[TD_STATE]) + + switch (taskData[TD_STATE]) { case 0: sub_8007270(gSpecialVar_0x8005); @@ -225,7 +226,7 @@ void sub_80B9484(u8 taskId) taskData[15] = CreateTask(sub_80B9450, 0x51); break; case 1: - if(!gTasks[taskData[10]].isActive) + if (!gTasks[taskData[10]].isActive) { taskData[TD_STATE] = 2; FlagSet(SYS_MIX_RECORD); @@ -239,7 +240,7 @@ void sub_80B9484(u8 taskId) PlaySE(SE_W226); break; case 3: - if(!gTasks[taskData[10]].isActive) + if (!gTasks[taskData[10]].isActive) { taskData[TD_STATE] = 4; taskData[10] = sub_8083664(); @@ -250,11 +251,11 @@ void sub_80B9484(u8 taskId) break; case 4: taskData[8]++; - if(taskData[8] > 60) + if (taskData[8] > 60) taskData[TD_STATE] = 5; break; case 5: - if(!gTasks[taskData[10]].isActive) + if (!gTasks[taskData[10]].isActive) { sub_8055588(); MenuZeroFillScreen(); @@ -268,8 +269,8 @@ void sub_80B9484(u8 taskId) void sub_80B95F0(u8 taskId) { struct Task *task = &gTasks[taskId]; - - switch(task->data[TD_STATE]) + + switch (task->data[TD_STATE]) { case 0: sub_80B9A78(); @@ -281,7 +282,7 @@ void sub_80B95F0(u8 taskId) break; case 100: task->data[12]++; - if(task->data[12] > 20) + if (task->data[12] > 20) { task->data[12] = 0; task->data[TD_STATE] = 101; @@ -290,10 +291,10 @@ void sub_80B95F0(u8 taskId) case 101: { u8 players = GetLinkPlayerCount_2(); - - if(IsLinkMaster() == 1) + + if (IsLinkMaster() == 1) { - if(players == sub_800820C()) + if (players == sub_800820C()) { PlaySE(0x15); task->data[TD_STATE] = 201; @@ -308,9 +309,9 @@ void sub_80B95F0(u8 taskId) break; } case 201: - if(sub_800820C() == GetLinkPlayerCount_2()) + if (sub_800820C() == GetLinkPlayerCount_2()) { - if(++task->data[12] > GetLinkPlayerCount_2() * 30) + if (++task->data[12] > GetLinkPlayerCount_2() * 30) { sub_8007F4C(); task->data[TD_STATE] = 1; @@ -318,19 +319,19 @@ void sub_80B95F0(u8 taskId) } break; case 301: - if(sub_800820C() == GetLinkPlayerCount_2()) + if (sub_800820C() == GetLinkPlayerCount_2()) task->data[TD_STATE] = 1; break; case 400: task->data[12]++; - if(task->data[12] > 20) + if (task->data[12] > 20) { task->data[TD_STATE] = 1; task->data[12] = 0; } break; case 1: - if(gReceivedRemoteLinkPlayers) + if (gReceivedRemoteLinkPlayers) { ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), 2, 2); task->data[TD_STATE] = 5; @@ -339,7 +340,7 @@ void sub_80B95F0(u8 taskId) case 2: { u8 subTaskId; - + task->data[6] = GetLinkPlayerCount_2(); task->data[TD_STATE] = 0; task->data[5] = GetMultiplayerId_(); @@ -354,7 +355,7 @@ void sub_80B95F0(u8 taskId) } case 5: task->data[10]++; - if(task->data[10] > 60) + if (task->data[10] > 60) { task->data[10] = 0; task->data[TD_STATE] = 2; @@ -366,19 +367,19 @@ void sub_80B95F0(u8 taskId) void sub_80B97DC(u8 taskId) { struct Task *task = &gTasks[taskId]; - - switch(task->data[TD_STATE]) + + switch (task->data[TD_STATE]) { case 0: //Copy record data to send buffer { void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4]; - + memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE); task->data[TD_STATE]++; break; } case 1: - if(GetMultiplayerId() == 0) + if (GetMultiplayerId() == 0) sub_8007E9C(1); task->data[TD_STATE]++; break; @@ -386,13 +387,13 @@ void sub_80B97DC(u8 taskId) break; case 3: task->data[4]++; - if((u16)task->data[4] == 24) + if ((u16)task->data[4] == 24) task->data[TD_STATE]++; else task->data[TD_STATE] = 0; break; case 4: - if(!gTasks[task->data[10]].isActive) + if (!gTasks[task->data[10]].isActive) task->func = sub_80B9A1C; } } @@ -402,31 +403,31 @@ void Task_CopyRecvBuffer(u8 taskId) struct Task *task = &gTasks[taskId]; s32 recvStatus = GetBlockReceivedStatus(); u32 sp8 = 0; - - if(recvStatus == sub_8008198()) + + if (recvStatus == sub_8008198()) { u8 player; - - for(player = 0; player < GetLinkPlayerCount(); player++) + + for (player = 0; player < GetLinkPlayerCount(); player++) { //_080B98D4 u8 *ptr; void *src; u8 *dst; - - if((recvStatus >> player) & 1) + + if ((recvStatus >> player) & 1) { ptr = LoadPtrFromTaskData(&task->data[5]); dst = ptr + task->data[player + 1] * BUFFER_CHUNK_SIZE + player * sizeof(struct PlayerRecords); src = GetPlayerRecvBuffer(player); - if((u32)(task->data[player + 1] + 1) * BUFFER_CHUNK_SIZE > sizeof(struct PlayerRecords)) + if ((u32)(task->data[player + 1] + 1) * BUFFER_CHUNK_SIZE > sizeof(struct PlayerRecords)) memcpy(dst, src, sizeof(struct PlayerRecords) - task->data[player + 1] * BUFFER_CHUNK_SIZE); else memcpy(dst, src, BUFFER_CHUNK_SIZE); //_080B993C ResetBlockReceivedFlag(player); task->data[player + 1]++; - if((u16)task->data[player + 1] == 0x18) + if ((u16)task->data[player + 1] == 0x18) sp8 = (u8)(sp8 + 1); } } @@ -434,24 +435,24 @@ void Task_CopyRecvBuffer(u8 taskId) gTasks[task->data[0]].data[0]++; } //_080B998A - if(sp8 == GetLinkPlayerCount()) + if (sp8 == GetLinkPlayerCount()) DestroyTask(taskId); } void sub_80B99B4(u8 taskId) { struct Task *task = &gTasks[taskId]; - - if(!gTasks[task->data[10]].isActive) + + if (!gTasks[task->data[10]].isActive) DestroyTask(taskId); } void sub_80B99E8(u8 taskId) { struct Task *task = &gTasks[taskId]; - + task->func = sub_80B99B4; - if(gUnknown_03000718 == 1) + if (gUnknown_03000718 == 1) sub_80B93B0(task->data[5]); } @@ -492,21 +493,21 @@ void sub_80B9A88(u8 *a) u32 i; u32 id; u32 players = GetLinkPlayerCount(); - - switch(players) + + switch (players) { case 2: - for(i = 0; i < 2; i++) + for (i = 0; i < 2; i++) a[i] = gUnknown_083D0288[i]; break; case 3: id = GetLinkPlayerTrainerId(0) % 2; - for(i = 0; i < 3; i++) + for (i = 0; i < 3; i++) a[i] = gUnknown_083D028A[id][i]; break; case 4: id = GetLinkPlayerTrainerId(0) % 9; - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) a[i] = gUnknown_083D0290[id][i]; break; default: @@ -518,7 +519,7 @@ void sub_80B9B1C(u8 *a, size_t size, u8 index) { u8 arr[4]; u8 *ptr; - + sub_80B9A88(arr); //Probably not how it was originally written, but this matches. memcpy(a + index * size, (ptr = gUnknown_083D0278), 0x40); @@ -551,70 +552,70 @@ void sub_80B9BC4(u32 a, u32 b, u32 c, u32 d) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ - mov r6, r10\n\ - mov r5, r9\n\ - mov r4, r8\n\ - push {r4-r6}\n\ - sub sp, 0x38\n\ - mov r8, r0\n\ - mov r10, r1\n\ - mov r9, r2\n\ - adds r4, r3, 0\n\ - ldr r5, [sp, 0x54]\n\ - lsls r4, 24\n\ - lsls r5, 24\n\ - lsrs r5, 24\n\ - lsrs r4, 23\n\ - add r4, r9\n\ - ldrb r0, [r4]\n\ - mov r6, r10\n\ - muls r6, r0\n\ - add r6, r8\n\ - ldrb r0, [r4, 0x1]\n\ - lsls r1, r0, 3\n\ - subs r1, r0\n\ - lsls r1, 3\n\ - adds r1, r6, r1\n\ - mov r0, sp\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - lsls r5, 1\n\ - add r5, r9\n\ - ldrb r0, [r5]\n\ - mov r1, r10\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - add r8, r0\n\ - ldrb r1, [r4, 0x1]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - lsls r0, 3\n\ - adds r6, r0\n\ - ldrb r0, [r5, 0x1]\n\ - lsls r1, r0, 3\n\ - subs r1, r0\n\ - lsls r1, 3\n\ - add r1, r8\n\ - adds r0, r6, 0\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - ldrb r1, [r5, 0x1]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - lsls r0, 3\n\ - add r8, r0\n\ - mov r0, r8\n\ - mov r1, sp\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - add sp, 0x38\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ + mov r6, r10\n\ + mov r5, r9\n\ + mov r4, r8\n\ + push {r4-r6}\n\ + sub sp, 0x38\n\ + mov r8, r0\n\ + mov r10, r1\n\ + mov r9, r2\n\ + adds r4, r3, 0\n\ + ldr r5, [sp, 0x54]\n\ + lsls r4, 24\n\ + lsls r5, 24\n\ + lsrs r5, 24\n\ + lsrs r4, 23\n\ + add r4, r9\n\ + ldrb r0, [r4]\n\ + mov r6, r10\n\ + muls r6, r0\n\ + add r6, r8\n\ + ldrb r0, [r4, 0x1]\n\ + lsls r1, r0, 3\n\ + subs r1, r0\n\ + lsls r1, 3\n\ + adds r1, r6, r1\n\ + mov r0, sp\n\ + movs r2, 0x38\n\ + bl memcpy\n\ + lsls r5, 1\n\ + add r5, r9\n\ + ldrb r0, [r5]\n\ + mov r1, r10\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + add r8, r0\n\ + ldrb r1, [r4, 0x1]\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + lsls r0, 3\n\ + adds r6, r0\n\ + ldrb r0, [r5, 0x1]\n\ + lsls r1, r0, 3\n\ + subs r1, r0\n\ + lsls r1, 3\n\ + add r1, r8\n\ + adds r0, r6, 0\n\ + movs r2, 0x38\n\ + bl memcpy\n\ + ldrb r1, [r5, 0x1]\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + lsls r0, 3\n\ + add r8, r0\n\ + mov r0, r8\n\ + mov r1, sp\n\ + movs r2, 0x38\n\ + bl memcpy\n\ + add sp, 0x38\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ .syntax divided\n"); } #endif @@ -623,8 +624,8 @@ u8 sub_80B9C4C(u8 *a) { int i; u8 r2 = 0; - - for(i = 0; i < 0x100; i++) + + for (i = 0; i < 0x100; i++) r2 += a[i]; return r2; } @@ -647,7 +648,7 @@ struct UnkStruct1 u32 unk48; u32 unk4C; u32 unk50; - + }; /* @@ -657,7 +658,7 @@ extern void sub_80B9C6C(void *a, u32 b, u8 c, void *d) struct UnkStruct1 s; u16 r8; u16 r3; - + s.unk2C = a; s.unk30 = b; s.unk38 = d; @@ -666,15 +667,15 @@ extern void sub_80B9C6C(void *a, u32 b, u8 c, void *d) SeedRng(gLinkPlayers[0].trainerId); r8 = GetLinkPlayerCount(); r3 = 0; - + s.unk4C = 12; - - while(r3 < 4) + + while (r3 < 4) { s.unk4[r3] |= 0xFF; s.unk8[r3] = 0; - + s.unk1C[r3][0] = 0; s.unk1C[r3][1] = 0; r3++; @@ -683,19 +684,19 @@ extern void sub_80B9C6C(void *a, u32 b, u8 c, void *d) r3 = 0; s.unk50 = r8 << 16; s.unk48 = s.unk30 * s.unk34; - - if(s.unk3C < r8) + + if (s.unk3C < r8) { do //_080B9D00 { u32 *r6 = (u32 *)(s.unk2C + s.unk30 * r3); - if(r6[0x1C] != 0 && r6[0x1C] > 0) + if (r6[0x1C] != 0 && r6[0x1C] > 0) { - + } //_080B9D3C } - while(r3 < r8); + while (r3 < r8); } //_080B9D46 } |