Document first rayquaza scene
This commit is contained in:
+48
-34
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user