Merge pull request #822 from GriffinRichards/document-fieldspecials

Document a few field specials
This commit is contained in:
PikalaxALT
2019-10-02 09:22:09 -04:00
committed by GitHub
19 changed files with 203 additions and 185 deletions
+54 -36
View File
@@ -103,8 +103,8 @@ static void PCTurnOnEffect_1(s16, s8, s8);
static void PCTurnOffEffect(void);
static void Task_LotteryCornerComputerEffect(u8);
static void LotteryCornerComputerEffect(struct Task *);
static void sub_81395BC(u8 taskId);
static void sub_8139620(u8 taskId);
static void Task_ShakeCamera(u8 taskId);
static void StopCameraShake(u8 taskId);
static void Task_MoveElevator(u8 taskId);
static void MoveElevatorWindowLights(u16 floorDelta, bool8 descending);
static void Task_MoveElevatorWindowLights(u8 taskId);
@@ -126,8 +126,8 @@ static void Task_DeoxysRockInteraction(u8 taskId);
static void ChangeDeoxysRockLevel(u8 a0);
static void WaitForDeoxysRockMovement(u8 taskId);
static void sub_813B57C(u8 taskId);
static void sub_813B824(u8 taskId);
static void _fwalk(u8 taskId);
static void Task_LoopWingFlapSE(u8 taskId);
static void Task_CloseBattlePikeCurtain(u8 taskId);
static u8 sub_813BF44(void);
static void sub_813BD84(void);
static u16 sub_813BB74(void);
@@ -1493,44 +1493,56 @@ bool8 IsPokerusInParty(void)
return TRUE;
}
void sub_8139560(void)
#define horizontalPan data[0]
#define delayCounter data[1]
#define numShakes data[2]
#define delay data[3]
#define verticalPan data[4]
void ShakeCamera(void)
{
u8 taskId = CreateTask(sub_81395BC, 9);
gTasks[taskId].data[0] = gSpecialVar_0x8005;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = gSpecialVar_0x8006;
gTasks[taskId].data[3] = gSpecialVar_0x8007;
gTasks[taskId].data[4] = gSpecialVar_0x8004;
u8 taskId = CreateTask(Task_ShakeCamera, 9);
gTasks[taskId].horizontalPan = gSpecialVar_0x8005;
gTasks[taskId].delayCounter = 0;
gTasks[taskId].numShakes = gSpecialVar_0x8006;
gTasks[taskId].delay = gSpecialVar_0x8007;
gTasks[taskId].verticalPan = gSpecialVar_0x8004;
SetCameraPanningCallback(NULL);
PlaySE(SE_W070);
}
static void sub_81395BC(u8 taskId)
static void Task_ShakeCamera(u8 taskId)
{
s16 *data = gTasks[taskId].data;
data[1]++;
if (data[1] % data[3] == 0)
delayCounter++;
if (delayCounter % delay == 0)
{
data[1] = 0;
data[2]--;
data[0] = -data[0];
data[4] = -data[4];
SetCameraPanning(data[0], data[4]);
if (data[2] == 0)
delayCounter = 0;
numShakes--;
horizontalPan = -horizontalPan;
verticalPan = -verticalPan;
SetCameraPanning(horizontalPan, verticalPan);
if (numShakes == 0)
{
sub_8139620(taskId);
StopCameraShake(taskId);
InstallCameraPanAheadCallback();
}
}
}
static void sub_8139620(u8 taskId)
static void StopCameraShake(u8 taskId)
{
DestroyTask(taskId);
EnableBothScriptContexts();
}
#undef horizontalPan
#undef delayCounter
#undef numShakes
#undef delay
#undef verticalPan
bool8 FoundBlackGlasses(void)
{
return FlagGet(FLAG_HIDDEN_ITEM_ROUTE_116_BLACK_GLASSES);
@@ -1699,7 +1711,7 @@ bool8 InMultiBattleRoom(void)
return FALSE;
}
void sub_8139980(void)
void OffsetCameraForBattle(void)
{
SetCameraPanningCallback(NULL);
SetCameraPanning(8, 0);
@@ -3713,7 +3725,7 @@ u32 GetMartEmployeeObjectEventId(void)
return 1;
}
bool32 sub_813B4E0(void)
bool32 IsTrainerRegistered(void)
{
int index = GetRematchIdxByTrainerIdx(gSpecialVar_0x8004);
if (index >= 0)
@@ -3889,40 +3901,46 @@ void Script_DoRayquazaScene(void)
}
}
void sub_813B80C(void)
#define playCount data[0]
#define delay data[1]
void LoopWingFlapSE(void)
{
CreateTask(sub_813B824, 8);
CreateTask(Task_LoopWingFlapSE, 8);
PlaySE(SE_W017);
}
static void sub_813B824(u8 taskId)
static void Task_LoopWingFlapSE(u8 taskId)
{
s16 *data = gTasks[taskId].data;
data[1]++;
if (data[1] == gSpecialVar_0x8005)
delay++;
if (delay == gSpecialVar_0x8005)
{
data[0]++;
data[1] = 0;
playCount++;
delay = 0;
PlaySE(SE_W017);
}
if (data[0] == gSpecialVar_0x8004 - 1)
if (playCount == gSpecialVar_0x8004 - 1)
{
DestroyTask(taskId);
}
}
void sub_813B880(void)
#undef playCount
#undef delay
void CloseBattlePikeCurtain(void)
{
u8 taskId = CreateTask(_fwalk, 8);
u8 taskId = CreateTask(Task_CloseBattlePikeCurtain, 8);
gTasks[taskId].data[0] = 4;
gTasks[taskId].data[1] = 4;
gTasks[taskId].data[2] = 4;
gTasks[taskId].data[3] = 0;
}
static void _fwalk(u8 taskId)
static void Task_CloseBattlePikeCurtain(u8 taskId)
{
u8 x, y;
s16 *data = gTasks[taskId].data;
@@ -3934,7 +3952,7 @@ static void _fwalk(u8 taskId)
{
for (x = 0; x < 3; x++)
{
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + x + 6, gSaveBlock1Ptr->pos.y + y + 4, x + 0x201 + y * 8 + data[3] * 32);
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + x + 6, gSaveBlock1Ptr->pos.y + y + 4, x + 513 + y * 8 + data[3] * 32);
}
}
DrawWholeMapView();