summaryrefslogtreecommitdiff
path: root/src/field/field_special_scene.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-03-31 14:37:24 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-03-31 14:37:24 -0400
commit0015d6fe2c6a53c5f757599122ae9fd1a156a69f (patch)
tree81b7269c767da1ad4a5a9ac01e58ead5e92f0983 /src/field/field_special_scene.c
parent46bc01f0dd1a3435b3c6ce71e1be0d19b7aaa5bd (diff)
parent59f81c5f2a25ec77baf4a30c3da9ccb7675d1562 (diff)
Merge branch 'master' into contest_link_80C2020
Diffstat (limited to 'src/field/field_special_scene.c')
-rw-r--r--src/field/field_special_scene.c382
1 files changed, 0 insertions, 382 deletions
diff --git a/src/field/field_special_scene.c b/src/field/field_special_scene.c
deleted file mode 100644
index 67b652a57..000000000
--- a/src/field/field_special_scene.c
+++ /dev/null
@@ -1,382 +0,0 @@
-#include "global.h"
-#include "field_special_scene.h"
-#include "event_data.h"
-#include "field_camera.h"
-#include "field_fadetransition.h"
-#include "field_map_obj.h"
-#include "field_specials.h"
-#include "fieldmap.h"
-#include "main.h"
-#include "palette.h"
-#include "overworld.h"
-#include "script.h"
-#include "script_movement.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "sprite.h"
-#include "task.h"
-
-#define SECONDS(value) ((signed) (60.0 * value + 0.5))
-
-// TODO: Move somewhere else
-enum
-{
- STEP_17 = 0x17,
- STEP_18,
- STEP_END = 0xFE,
-};
-
-const u32 gMapObjectPic_MovingBox[] = INCBIN_U32("graphics/map_objects/pics/misc/moving_box.4bpp");
-const u16 gMapObjectPalette19[] = INCBIN_U16("graphics/map_objects/palettes/19.gbapal");
-
-static const s8 gTruckCamera_HorizontalTable[] =
-{
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 2,
- 2,
- 2,
- 2,
- 2,
- 2,
- -1,
- -1,
- -1,
- 0,
-};
-
-const u8 gUnknown_083D295F[] =
-{
- STEP_18,
- STEP_END,
-};
-
-const u8 gUnknown_083D2961[] =
-{
- STEP_17,
- STEP_END,
-};
-
-// porthole states
-enum
-{
- INIT_PORTHOLE,
- IDLE_CHECK,
- EXECUTE_MOVEMENT,
- EXIT_PORTHOLE,
-};
-
-s16 GetTruckCameraBobbingY(int a1)
-{
- if (!(a1 % 120))
- return -1;
- else if ((a1 % 10) <= 4)
- return 1;
-
- return 0;
-}
-
-s16 GetTruckBoxMovement(int a1) // for the box movement?
-{
- if (!((a1 + 120) % 180))
- return -1;
-
- return 0;
-}
-
-void Task_Truck1(u8 taskId)
-{
- s16 *data = gTasks[taskId].data;
- s16 cameraYpan, cameraXpan = 0;
- s16 box1, box2, box3;
-
- box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box.
- sub_805BD90(1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 3 - cameraXpan, box1 + 3);
- box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box.
- sub_805BD90(2, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -cameraXpan, box2 - 3);
- box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box.
- sub_805BD90(3, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -3 - cameraXpan, box3);
-
- if (++data[0] == SECONDS(500)) // this will never run
- data[0] = 0; // reset the timer if it gets stuck.
-
- // this also matches with directly calling GetTruckCameraBobbingY within SetCameraPanning, but this is consistent with a later function that requires a temp variable.
- cameraYpan = GetTruckCameraBobbingY(data[0]);
- SetCameraPanning(cameraXpan, cameraYpan);
-}
-
-void Task_Truck2(u8 taskId)
-{
- s16 *data = gTasks[taskId].data;
- s16 cameraYpan;
- s16 cameraXpan;
- s16 box1, box2, box3;
-
- data[0]++;
- data[2]++;
-
- if (data[0] > 5)
- {
- data[0] = 0;
- data[1]++;
- }
- if ((u16)data[1] == 19)
- {
- DestroyTask(taskId);
- }
- else
- {
- if (gTruckCamera_HorizontalTable[data[1]] == 2)
- gTasks[taskId].func = Task_Truck3;
-
- cameraXpan = gTruckCamera_HorizontalTable[data[1]];
- cameraYpan = GetTruckCameraBobbingY(data[2]);
- SetCameraPanning(cameraXpan, cameraYpan);
- box1 = GetTruckBoxMovement(data[2] + 30) * 4;
- sub_805BD90(1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 3 - cameraXpan, box1 + 3);
- box2 = GetTruckBoxMovement(data[2]) * 2;
- sub_805BD90(2, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -cameraXpan, box2 - 3);
- box3 = GetTruckBoxMovement(data[2]) * 4;
- sub_805BD90(3, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -3 - cameraXpan, box3);
- }
-}
-
-void Task_Truck3(u8 taskId)
-{
- s16 *data = gTasks[taskId].data;
- s16 cameraXpan;
- s16 cameraYpan;
-
- data[0]++;
-
- if (data[0] > 5)
- {
- data[0] = 0;
- data[1]++;
- }
-
- if ((u16)data[1] == 19)
- {
- DestroyTask(taskId);
- }
- else
- {
- cameraXpan = gTruckCamera_HorizontalTable[data[1]];
- cameraYpan = 0;
- SetCameraPanning(cameraXpan, cameraYpan);
- sub_805BD90(1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 3 - cameraXpan, cameraYpan + 3);
- sub_805BD90(2, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -cameraXpan, cameraYpan - 3);
- sub_805BD90(3, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -3 - cameraXpan, cameraYpan);
- }
-}
-
-void Task_HandleTruckSequence(u8 taskId)
-{
- s16 *data = gTasks[taskId].data;
-
- switch (data[0])
- {
- /*
- Each case has a timer which is handled with data[1], incrementing
- until it reaches the if function's condition, which sets the next task up.
- */
- case 0:
- data[1]++;
- if (data[1] == SECONDS(1.5))
- {
- SetCameraPanningCallback(0);
- data[1] = 0; // reset the timer.
- data[2] = CreateTask(Task_Truck1, 0xA);
- data[0] = 1; // run the next case.
- PlaySE(SE_TRACK_MOVE);
- }
- break;
- case 1:
- data[1]++;
- if (data[1] == SECONDS(2.5))
- {
- pal_fill_black();
- data[1] = 0;
- data[0] = 2;
- }
- break;
- case 2:
- data[1]++;
- if (!gPaletteFade.active && data[1] > SECONDS(5))
- {
- data[1] = 0;
- DestroyTask(data[2]);
- data[3] = CreateTask(Task_Truck2, 0xA);
- data[0] = 3;
- PlaySE(SE_TRACK_STOP);
- }
- break;
- case 3:
- if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?)
- {
- InstallCameraPanAheadCallback();
- data[1] = 0;
- data[0] = 4;
- }
- break;
- case 4:
- data[1]++;
- if (data[1] == 90)
- {
- PlaySE(SE_TRACK_HAIK);
- data[1] = 0;
- data[0] = 5;
- }
- break;
- case 5:
- data[1]++;
- if (data[1] == 120)
- {
- MapGridSetMetatileIdAt(11, 8, 520);
- MapGridSetMetatileIdAt(11, 9, 528);
- MapGridSetMetatileIdAt(11, 10, 536);
- DrawWholeMapView();
- PlaySE(SE_TRACK_DOOR);
- DestroyTask(taskId);
- ScriptContext2_Disable();
- }
- break;
- }
-}
-
-void ExecuteTruckSequence(void)
-{
- MapGridSetMetatileIdAt(11, 8, 525);
- MapGridSetMetatileIdAt(11, 9, 533);
- MapGridSetMetatileIdAt(11, 10, 541);
- DrawWholeMapView();
- ScriptContext2_Enable();
- CpuFastFill(0, gPlttBufferFaded, 0x400);
- CreateTask(Task_HandleTruckSequence, 0xA);
-}
-
-void EndTruckSequence(u8 taskId)
-{
- if (!FuncIsActiveTask(Task_HandleTruckSequence))
- {
- sub_805BD90(1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 3, 3);
- sub_805BD90(2, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 0, -3);
- sub_805BD90(3, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -3, 0);
- }
-}
-
-bool8 sub_80C7754(void)
-{
- s8 mapGroup, mapNum;
- s16 x, y;
-
- if (GetSSTidalLocation(&mapGroup, &mapNum, &x, &y))
- {
- return FALSE;
- }
- else
- {
- Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y);
- return TRUE;
- }
-}
-
-void Task_HandlePorthole(u8 taskId)
-{
- s16 *data = gTasks[taskId].data;
- u16 *var = GetVarPointer(VAR_PORTHOLE_STATE);
- struct WarpData *location = &gSaveBlock1.location;
-
- switch (data[0])
- {
- case INIT_PORTHOLE: // finish fading before making porthole finish.
- if (!gPaletteFade.active)
- {
- data[1] = 0;
- data[0] = EXECUTE_MOVEMENT; // execute movement before checking if should be exited. strange?
- }
- break;
- case IDLE_CHECK: // idle and move.
- if (gMain.newKeys & A_BUTTON)
- data[1] = 1;
- if (!ScriptMovement_IsObjectMovementFinished(0xFF, location->mapNum, location->mapGroup))
- return;
- if (CountSSTidalStep(1) == TRUE)
- {
- if (*var == 2)
- *var = 9;
- else
- *var = 10;
- data[0] = 3;
- return;
- }
- data[0] = 2;
- case EXECUTE_MOVEMENT: // execute movement.
- if (data[1])
- {
- data[0] = EXIT_PORTHOLE; // exit porthole.
- return;
- }
- // run this once.
- if (*var == 2) // which direction?
- {
- ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_083D295F);
- data[0] = IDLE_CHECK; // run case 1.
- }
- else
- {
- ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_083D2961);
- data[0] = IDLE_CHECK; // run case 1.
- }
- break;
- case EXIT_PORTHOLE: // exit porthole.
- FlagClear(FLAG_SPECIAL_FLAG_1);
- FlagClear(FLAG_SPECIAL_FLAG_0);
- copy_saved_warp2_bank_and_enter_x_to_warp1(0);
- sp13E_warp_to_last_warp();
- DestroyTask(taskId);
- break;
- }
-}
-
-void sub_80C78A0(void)
-{
- u8 spriteId = AddPseudoFieldObject(0x8C, SpriteCallbackDummy, 112, 80, 0);
-
- gSprites[spriteId].coordOffsetEnabled = FALSE;
-
- if (VarGet(VAR_PORTHOLE_STATE) == 2)
- {
- StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(4));
- }
- else
- {
- StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(3));
- }
-}
-
-void sub_80C791C(void)
-{
- sub_80C78A0();
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = TRUE;
- pal_fill_black();
- CreateTask(Task_HandlePorthole, 80);
- ScriptContext2_Enable();
-}
-
-void sub_80C7958(void)
-{
- FlagSet(FLAG_SYS_CRUISE_MODE);
- FlagSet(FLAG_SPECIAL_FLAG_1);
- FlagSet(FLAG_SPECIAL_FLAG_0);
- saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1);
- sub_80C7754();
- sub_8080F9C();
-}