diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-28 22:15:12 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-28 22:15:12 -0400 |
commit | a027218bc68f3951e438da078419aaa09048c885 (patch) | |
tree | aef990bed126fa18efd322dcab43ab187272c08a | |
parent | 935fd18898df4ac8c84162401d65146da2cb3f4e (diff) |
Credits overworld pan sequence doc
-rw-r--r-- | include/credits.h | 16 | ||||
-rw-r--r-- | src/credits.c | 92 | ||||
-rw-r--r-- | src/overworld.c | 93 |
3 files changed, 104 insertions, 97 deletions
diff --git a/include/credits.h b/include/credits.h index 763abd77f..8207b703c 100644 --- a/include/credits.h +++ b/include/credits.h @@ -3,4 +3,20 @@ extern bool8 gHasHallOfFameRecords; +#define CREDITSOVWLDCMD_FB 0xFB +#define CREDITSOVWLDCMD_FC 0xFC +#define CREDITSOVWLDCMD_END 0xFD +#define CREDITSOVWLDCMD_LOADMAP 0xFE +#define CREDITSOVWLDCMD_FF 0xFF + +#define CREDITSOVWLDLOADMAP(_map, _x, _y, _delay) \ + { CREDITSOVWLDCMD_LOADMAP, MAP_GROUP(_map), MAP_NUM(_map) }, \ + { _x, _y, _delay } + +#define CREDITSOVWLDSCROLL(_xspeed, _yspeed, _length) \ + { _xspeed, _yspeed, _length } + +#define CREDITSOVWLDEND \ + { CREDITSOVWLDCMD_END, CREDITSOVWLDCMD_END, CREDITSOVWLDCMD_END } + #endif //GUARD_CREDITS_H diff --git a/src/credits.c b/src/credits.c index 4d7bbd67b..12240c98f 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1,6 +1,7 @@ #include "global.h" #include "malloc.h" #include "bg.h" +#include "credits.h" #include "palette.h" #include "gpu_regs.h" #include "task.h" @@ -563,94 +564,81 @@ static const struct SpriteTemplate sGroundSpriteTemplate_Static = { }; static const struct CreditsOverworldCmd sOverworldCmd_Route23[] = { - { 0x00fe, MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23) }, - { 0x000b, 0x006b, 0x0001 }, - { 0x0000, 0x0001, 0x0500 }, // Scroll down - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(ROUTE23, 11, 107, 1), + CREDITSOVWLDSCROLL(0, 1, 0x0500), // Scroll down + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_ViridianCity[] = { - { 0x00fe, MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY) }, - { 0x001e, 0x0022, 0x0001 }, - { 0x0000, 0xffff, 0x0500 }, // Scroll up - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(VIRIDIAN_CITY, 30, 34, 1), + CREDITSOVWLDSCROLL(0, -1, 0x0500), // Scroll up + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_PewterCity[] = { - { 0x00fe, MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY) }, - { 0x0014, 0x001a, 0x0001 }, - { 0x0000, 0xffff, 0x0500 }, // Scroll up - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(PEWTER_CITY, 20, 26, 1), + CREDITSOVWLDSCROLL(0, -1, 0x0500), // Scroll up + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_CeruleanCity[] = { - { 0x00fe, MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY) }, - { 0x0008, 0x0006, 0x0001 }, - { 0x0001, 0x0001, 0x0500 }, // Scroll right and down - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(CERULEAN_CITY, 8, 6, 1), + CREDITSOVWLDSCROLL(1, 1, 0x0500), // Scroll right and down + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_Route25[] = { - { 0x00fe, MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) }, - { 0x0019, 0x0006, 0x0001 }, - { 0x0001, 0x0000, 0x0500 }, // Scroll right - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(ROUTE25, 25, 6, 1), + CREDITSOVWLDSCROLL(1, 0, 0x0500), // Scroll right + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_VermilionCity[] = { - { 0x00fe, MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY) }, - { 0x0009, 0x0007, 0x0001 }, - { 0x0001, 0x0001, 0x0500 }, // Scroll right and down - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(VERMILION_CITY, 9, 7, 1), + CREDITSOVWLDSCROLL(1, 1, 0x0500), // Scroll right and down + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_Route10[] = { - { 0x00fe, MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10) }, - { 0x000b, 0x0044, 0x0001 }, - { 0x0000, 0x0001, 0x0500 }, // Scroll down - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(ROUTE10, 11, 68, 1), + CREDITSOVWLDSCROLL(0, 1, 0x0500), // Scroll down + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_CeladonCity[] = { - { 0x00fe, MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY) }, - { 0x0030, 0x0010, 0x0001 }, - { 0xffff, 0x0000, 0x0500 }, // Scroll left - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(CELADON_CITY, 48, 16, 1), + CREDITSOVWLDSCROLL(-1, 0, 0x0500), // Scroll left + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_SaffronCity[] = { - { 0x00fe, MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY) }, - { 0x0027, 0x0005, 0x0001 }, - { 0x0000, 0x0001, 0x0500 }, // Scroll down - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(SAFFRON_CITY, 39, 5, 1), + CREDITSOVWLDSCROLL(0, 1, 0x0500), // Scroll down + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_Route17[] = { - { 0x00fe, MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) }, - { 0x0007, 0x002b, 0x0001 }, - { 0x0000, 0x0001, 0x0500 }, // Scroll down - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(ROUTE17, 7, 43, 1), + CREDITSOVWLDSCROLL(0, 1, 0x0500), // Scroll down + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_FuchsiaCity[] = { - { 0x00fe, MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY) }, - { 0x001c, 0x0005, 0x0001 }, - { 0x0000, 0x0001, 0x0500 }, // Scroll down - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(FUCHSIA_CITY, 28, 5, 1), + CREDITSOVWLDSCROLL(0, 1, 0x0500), // Scroll down + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_CinnabarIsland[] = { - { 0x00fe, MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND) }, - { 0x000d, 0x0011, 0x0001 }, - { 0x0000, 0xffff, 0x0500 }, // Scroll up - { 0x00fd, 0x00fd, 0x00fd } + CREDITSOVWLDLOADMAP(CINNABAR_ISLAND, 13, 17, 1), + CREDITSOVWLDSCROLL(0, -1, 0x0500), // Scroll up + CREDITSOVWLDEND }; static const struct CreditsOverworldCmd sOverworldCmd_Route21[] = { - { 0x00fe, MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) }, - { 0x0008, 0x0014, 0x0001 }, - { 0x0000, 0xffff, 0x0500 }, // Scroll up - { 0x00fd, 0x00fd, 0x00fd }, + CREDITSOVWLDLOADMAP(ROUTE21_NORTH, 8, 20, 1), + CREDITSOVWLDSCROLL(0, -1, 0x0500), // Scroll up + CREDITSOVWLDEND, }; static const struct CreditsOverworldCmd *const sOverworldMapScenes[] = { diff --git a/src/overworld.c b/src/overworld.c index cb2403a78..f0f4f0e31 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2,6 +2,7 @@ #include "gflib.h" #include "bg_regs.h" #include "cable_club.h" +#include "credits.h" #include "event_data.h" #include "event_object_movement.h" #include "event_scripts.h" @@ -101,9 +102,9 @@ static EWRAM_DATA bool8 sIsAmbientCryWaterMon = FALSE; // File boundary perhaps? ALIGNED(4) EWRAM_DATA bool8 gUnknown_2031DE0 = FALSE; -static EWRAM_DATA const struct CreditsOverworldCmd *gUnknown_2031DE4 = NULL; -static EWRAM_DATA s16 gUnknown_2031DE8 = 0; -static EWRAM_DATA s16 gUnknown_2031DEA = 0; +static EWRAM_DATA const struct CreditsOverworldCmd *sCreditsOverworld_Script = NULL; +static EWRAM_DATA s16 sCreditsOverworld_CmdLength = 0; +static EWRAM_DATA s16 sCreditsOverworld_CmdIndex = 0; // File boundary perhaps? EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {}; @@ -162,11 +163,11 @@ static void CreateLinkPlayerSprites(void); static void sub_80572D8(void); static void sub_8057300(u8 *state); static bool32 sub_8057314(u8 *state); -static bool32 sub_8057528(u8 *state, u8 unused); -static bool8 sub_8057650(void); -static void sub_8057748(struct CameraObject * camera); -static void sub_805781C(u8 taskId); -static void sub_8057854(u8 taskId); +static bool32 SetUpScrollSceneForCredits(u8 *state, u8 unused); +static bool8 MapLdr_Credits(void); +static void CameraCB_CreditsPan(struct CameraObject * camera); +static void Task_OvwldCredits_FadeOut(u8 taskId); +static void Task_OvwldCredits_WaitFade(u8 taskId); static void CB1_UpdateLinkState(void); static void ResetAllMultiplayerState(void); @@ -2202,7 +2203,7 @@ static void CreateLinkPlayerSprites(void) CreateLinkPlayerSprite(i, gLinkPlayers[i].version); } -// Credits +// Quest Log void sub_805726C(void) { @@ -2252,12 +2253,12 @@ static bool32 sub_8057314(u8 *state) sub_8111438(); if (sub_8110AC8() == 2) { - gUnknown_2031DE0 = 0; + gUnknown_2031DE0 = FALSE; mli0_load_map(FALSE); } else { - gUnknown_2031DE0 = 1; + gUnknown_2031DE0 = TRUE; sub_80559A8(); } (*state)++; @@ -2344,6 +2345,8 @@ void sub_8057430(void) } } +// Credits + void Overworld_CreditsMainCB(void) { bool8 fading = !!gPaletteFade.active; @@ -2361,7 +2364,7 @@ void Overworld_CreditsMainCB(void) SetFieldVBlankCallback(); } -static bool8 sub_80574EC(void) +static bool8 FieldCB2_Credits_WaitFade(void) { if (gPaletteFade.active) return TRUE; @@ -2371,48 +2374,48 @@ static bool8 sub_80574EC(void) bool32 Overworld_DoScrollSceneForCredits(u8 *state_p, const struct CreditsOverworldCmd * script, u8 a2) { - gUnknown_2031DE4 = script; + sCreditsOverworld_Script = script; gUnknown_2036E28 = a2; - return sub_8057528(state_p, 0); + return SetUpScrollSceneForCredits(state_p, 0); } -static bool32 sub_8057528(u8 *state, u8 unused) +static bool32 SetUpScrollSceneForCredits(u8 *state, u8 unused) { struct WarpData warp; switch (*state) { case 0: - gUnknown_2031DEA = 0; - gUnknown_2031DE8 = 0; + sCreditsOverworld_CmdIndex = 0; + sCreditsOverworld_CmdLength = 0; (*state)++; return FALSE; case 1: - warp.mapGroup = gUnknown_2031DE4[gUnknown_2031DEA].unk_2; - warp.mapNum = gUnknown_2031DE4[gUnknown_2031DEA].unk_4; + warp.mapGroup = sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_2; + warp.mapNum = sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_4; warp.warpId = -1; - gUnknown_2031DEA++; - warp.x = gUnknown_2031DE4[gUnknown_2031DEA].unk_0; - warp.y = gUnknown_2031DE4[gUnknown_2031DEA].unk_2; + sCreditsOverworld_CmdIndex++; + warp.x = sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_0; + warp.y = sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_2; sWarpDestination = warp; - gUnknown_2031DE8 = gUnknown_2031DE4[gUnknown_2031DEA].unk_4; + sCreditsOverworld_CmdLength = sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_4; WarpIntoMap(); gPaletteFade.bufferTransferDisabled = TRUE; ScriptContext1_Init(); ScriptContext2_Disable(); SetMainCallback1(NULL); - gFieldCallback2 = sub_80574EC; + gFieldCallback2 = FieldCB2_Credits_WaitFade; gMain.state = 0; (*state)++; return FALSE; case 2: - if (sub_8057650()) + if (MapLdr_Credits()) { (*state)++; return FALSE; } break; case 3: - gFieldCamera.callback = sub_8057748; + gFieldCamera.callback = CameraCB_CreditsPan; SetFieldVBlankCallback(); *state = 0; return TRUE; @@ -2420,7 +2423,7 @@ static bool32 sub_8057528(u8 *state, u8 unused) return FALSE; } -static bool8 sub_8057650(void) +static bool8 MapLdr_Credits(void) { u8 *state = &gMain.state; switch (*state) @@ -2482,55 +2485,55 @@ static bool8 sub_8057650(void) return FALSE; } -static void sub_8057748(struct CameraObject * camera) +static void CameraCB_CreditsPan(struct CameraObject * camera) { - if (gUnknown_2031DE8 == 0) + if (sCreditsOverworld_CmdLength == 0) { - gUnknown_2031DEA++; - switch (gUnknown_2031DE4[gUnknown_2031DEA].unk_0) + sCreditsOverworld_CmdIndex++; + switch (sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_0) { - case 0xFC: - case 0xFE: + case CREDITSOVWLDCMD_FC: + case CREDITSOVWLDCMD_LOADMAP: return; - case 0xFF: + case CREDITSOVWLDCMD_FF: camera->movementSpeedX = 0; camera->movementSpeedY = 0; camera->callback = NULL; - CreateTask(sub_805781C, 0); + CreateTask(Task_OvwldCredits_FadeOut, 0); return; - case 0xFB: + case CREDITSOVWLDCMD_FB: camera->movementSpeedX = 0; camera->movementSpeedY = 0; camera->callback = NULL; break; - case 0xFD: + case CREDITSOVWLDCMD_END: camera->movementSpeedX = 0; camera->movementSpeedY = 0; camera->callback = NULL; return; default: - gUnknown_2031DE8 = gUnknown_2031DE4[gUnknown_2031DEA].unk_4; - camera->movementSpeedX = gUnknown_2031DE4[gUnknown_2031DEA].unk_0; - camera->movementSpeedY = gUnknown_2031DE4[gUnknown_2031DEA].unk_2; + sCreditsOverworld_CmdLength = sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_4; + camera->movementSpeedX = sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_0; + camera->movementSpeedY = sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_2; break; } } - if (gUnknown_2031DE4[gUnknown_2031DEA].unk_0 == 0xFF) + if (sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_0 == 0xFF) { camera->movementSpeedX = 0; camera->movementSpeedY = 0; } else - gUnknown_2031DE8--; + sCreditsOverworld_CmdLength--; } -static void sub_805781C(u8 taskId) +static void Task_OvwldCredits_FadeOut(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gTasks[taskId].func = sub_8057854; + gTasks[taskId].func = Task_OvwldCredits_WaitFade; } -static void sub_8057854(u8 taskId) +static void Task_OvwldCredits_WaitFade(u8 taskId) { if (!gPaletteFade.active) { |