From ba13e9ec959a2d1375a303587ec94ceab0eaa0d1 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 26 Aug 2020 16:31:37 -0400 Subject: Document first rayquaza scene --- src/palette.c | 82 ++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 48 insertions(+), 34 deletions(-) (limited to 'src/palette.c') diff --git a/src/palette.c b/src/palette.c index eb49ce4c6..5d605494c 100644 --- a/src/palette.c +++ b/src/palette.c @@ -940,46 +940,62 @@ void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 b } } -void sub_80A2C44(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7) +#define tCoeff data[0] +#define tCoeffTarget data[1] +#define tCoeffDelta data[2] +#define tDelay data[3] +#define tDelayTimer data[4] +#define tPalettes 5 // data[5] and data[6], set/get via Set/GetWordTaskArg +#define tColor data[7] +#define tId data[8] + +// Blend the selected palettes in a series of steps toward or away from the color. +// Only used by the Groudon/Kyogre fight scene to flash the screen for lightning +// One call is used to fade the bg from white, while another fades the duo from black +void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id) { u8 taskId; - taskId = CreateTask((void *)sub_80A2D54, a6); - gTasks[taskId].data[0] = a3; - gTasks[taskId].data[1] = a4; + taskId = CreateTask((void *)sub_80A2D54, priority); + gTasks[taskId].tCoeff = coeff; + gTasks[taskId].tCoeffTarget = coeffTarget; - if (a2 >= 0) + if (delay >= 0) { - gTasks[taskId].data[3] = a2; - gTasks[taskId].data[2] = 1; + gTasks[taskId].tDelay = delay; + gTasks[taskId].tCoeffDelta = 1; } else { - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[2] = -a2 + 1; + gTasks[taskId].tDelay = 0; + gTasks[taskId].tCoeffDelta = -delay + 1; } - if (a4 < a3) - gTasks[taskId].data[2] *= -1; + if (coeffTarget < coeff) + gTasks[taskId].tCoeffDelta *= -1; - SetWordTaskArg(taskId, 5, a1); - gTasks[taskId].data[7] = a5; - gTasks[taskId].data[8] = a7; + SetWordTaskArg(taskId, tPalettes, selectedPalettes); + gTasks[taskId].tColor = color; + gTasks[taskId].tId = id; gTasks[taskId].func(taskId); } -bool32 sub_80A2CF8(u8 var) +// Unused +static bool32 sub_80A2CF8(u8 id) { int i; - for (i = 0; i < NUM_TASKS; i++) // check all the tasks. - if ((gTasks[i].isActive == TRUE) && (gTasks[i].func == sub_80A2D54) && (gTasks[i].data[8] == var)) + for (i = 0; i < NUM_TASKS; i++) + if ((gTasks[i].isActive == TRUE) + && (gTasks[i].func == sub_80A2D54) + && (gTasks[i].tId == id)) return TRUE; return FALSE; } -void sub_80A2D34(void) +// Unused +static void sub_80A2D34(void) { u8 taskId; @@ -992,39 +1008,37 @@ void sub_80A2D34(void) } } -void sub_80A2D54(u8 taskId) +static void sub_80A2D54(u8 taskId) { - u32 wordVar; + u32 palettes; s16 *data; - s16 temp; + s16 target; data = gTasks[taskId].data; - wordVar = GetWordTaskArg(taskId, 5); + palettes = GetWordTaskArg(taskId, tPalettes); - if (++data[4] > data[3]) + if (++tDelayTimer > tDelay) { - data[4] = 0; - BlendPalettes(wordVar, data[0], data[7]); - temp = data[1]; - if (data[0] == temp) + tDelayTimer = 0; + BlendPalettes(palettes, tCoeff, tColor); + target = tCoeffTarget; + if (tCoeff == target) { DestroyTask(taskId); } else { - data[0] += data[2]; - if (data[2] >= 0) + tCoeff += tCoeffDelta; + if (tCoeffDelta >= 0) { - if (data[0] < temp) - { + if (tCoeff < target) return; - } } - else if (data[0] > temp) + else if (tCoeff > target) { return; } - data[0] = temp; + tCoeff = target; } } } -- cgit v1.2.3 From 38d4fc9c17467bfbb206116e4bef4648cedfe3d4 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 27 Aug 2020 15:36:48 -0400 Subject: Clean up rayquaza scene documentation --- src/palette.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/palette.c') diff --git a/src/palette.c b/src/palette.c index 5d605494c..320e11ecc 100644 --- a/src/palette.c +++ b/src/palette.c @@ -52,7 +52,7 @@ static u8 UpdateFastPaletteFade(void); static u8 UpdateHardwarePaletteFade(void); static void UpdateBlendRegisters(void); static bool8 IsSoftwarePaletteFadeFinishing(void); -static void sub_80A2D54(u8 taskId); +static void Task_BlendPalettesGradually(u8 taskId); // palette buffers require alignment with agbcc because // unaligned word reads are issued in BlendPalette otherwise @@ -956,7 +956,7 @@ void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTa { u8 taskId; - taskId = CreateTask((void *)sub_80A2D54, priority); + taskId = CreateTask((void *)Task_BlendPalettesGradually, priority); gTasks[taskId].tCoeff = coeff; gTasks[taskId].tCoeffTarget = coeffTarget; @@ -981,13 +981,13 @@ void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTa } // Unused -static bool32 sub_80A2CF8(u8 id) +static bool32 IsBlendPalettesGraduallyTaskActive(u8 id) { int i; for (i = 0; i < NUM_TASKS; i++) if ((gTasks[i].isActive == TRUE) - && (gTasks[i].func == sub_80A2D54) + && (gTasks[i].func == Task_BlendPalettesGradually) && (gTasks[i].tId == id)) return TRUE; @@ -995,20 +995,20 @@ static bool32 sub_80A2CF8(u8 id) } // Unused -static void sub_80A2D34(void) +static void DestroyBlendPalettesGraduallyTask(void) { u8 taskId; while (1) { - taskId = FindTaskIdByFunc(sub_80A2D54); + taskId = FindTaskIdByFunc(Task_BlendPalettesGradually); if (taskId == 0xFF) break; DestroyTask(taskId); } } -static void sub_80A2D54(u8 taskId) +static void Task_BlendPalettesGradually(u8 taskId) { u32 palettes; s16 *data; -- cgit v1.2.3