diff options
author | Marcus Huderle <huderlem@gmail.com> | 2019-03-23 09:39:46 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2019-03-23 09:39:46 -0500 |
commit | 65391a1eb2979dc050dd4a98afea02bb0ef310ea (patch) | |
tree | e31a90d0966cec7e8713ead9ca8083d439c8d9b5 /src/intro.c | |
parent | eb48cc2f7eefc1e56c2dcec21c38381b4534b897 (diff) | |
parent | abe56579c107af58e6f3a43968ba2257ff358189 (diff) |
Merge remote-tracking branch 'upstream/master' into use_pokeblock
# Conflicts:
# src/use_pokeblock.c
Diffstat (limited to 'src/intro.c')
-rw-r--r-- | src/intro.c | 476 |
1 files changed, 269 insertions, 207 deletions
diff --git a/src/intro.c b/src/intro.c index 18a899fb0..e97fbedb0 100644 --- a/src/intro.c +++ b/src/intro.c @@ -27,14 +27,75 @@ #include "constants/rgb.h" #include "constants/battle_anim.h" +/* + * Intro animation sequence state machine + * -------------------------------------- + * + * Entry Point: CB2_InitCopyrightScreenAfterBootup + * + * Note: States advance sequentially unless otherwise stated. + * + * CB2_InitCopyrightScreenAfterBootup + * - Registers a serial interrupt handler that listens for a GameCube. + * - Waits for 140 frames, and then until palette fading completes. + * - Stops looking for a GameCube for dualboot. + * - Check the save file for corruption + * - Setup global pointers to save file + * - Initialize gHeap + * + * MainCB2_Intro + * - Spawn Task_IntroLoadPart1Graphics + * - If any keys are pressed during the intro, advance to + * MainCB2_EndIntro (which will then kill all tasks). + * + * Task_IntroLoadPart1Graphics + * Task_IntroFadeIn (frame counter starts at 0 here) + * Task_IntroWaterDrops + * - At frame 128 of this state, spawn Task_IntroWaterDrops_1 + * - At frame 256 of this state, spawn Task_IntroWaterDrops_2 + * - At frame 560 of this state, spawn Task_IntroWaterDrops_3 + * Task_IntroScrollDownAndShowFlygon + * Task_IntroWaitToSetupPart2 + * Task_IntroLoadPart2Graphics + * Task_IntroStartBikeRide + * - Spawn Task_AdvanceBicycleAnimation + * Task_IntroHandleBikeAndFlygonMovement + * - At frame 1856, kills the bicycle animation task + * Task_IntroWaitToSetupPart3 + * Task_IntroLoadPart3Graphics (frame counter resets to 0 here) + * Task_IntroSpinAndZoomPokeball + * - Continues until the zoom reaches a certain point + * Task_IntroWaitToSetupPart3LegendsFight + * Task_IntroLoadGroudonScene + * Task_IntroLoadPart3Graphics1 + * Task_IntroLoadPart3Graphics2 + * Task_IntroLoadPart3Graphics3 + * Task_IntroLoadPart3Graphics4 + * Task_IntroGroudonScene + * Task_IntroLoadKyogreScene + * Task_IntroKyogreScene + * Task_IntroLoadClouds1 + * Task_IntroLoadClouds2 + * Task_IntroLoadClouds3 + * Task_IntroCloudsScene + * Task_IntroLoadRayquazaLightningScene + * Task_IntroRayquazaLightningScene + * Task_IntroLoadRayquazaGlowScene + * Task_IntroRayquazaGlowScene_0 + * - Runs concurrently with Task_IntroRayquazaGlowScene_1 + * Task_EndIntroMovie + * MainCB2_EndIntro + * - Advances to CB2_InitTitleScreen + */ + extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; extern const struct SpriteTemplate gUnknown_08596C10[]; //ewram -EWRAM_DATA u16 gUnknown_0203BCC8 = 0; +EWRAM_DATA u16 gIntroCharacterGender = 0; EWRAM_DATA u16 gUnknown_0203BCCA = 0; -EWRAM_DATA u16 gUnknown_0203BCCC = 0; +EWRAM_DATA u16 gIntroGraphicsFlygonYOffset = 0; //iwram u32 gIntroFrameCounter; @@ -67,12 +128,12 @@ static const u8 sUnknownBytes[] = { 0x10, 0x11, 0x12, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x02, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x00 }; -static const struct CompressedSpriteSheet gUnknown_085E4A74[] = +static const struct CompressedSpriteSheet gIntroSpriteSheet_Sparkle[] = { {gIntro1SparkleGfx, 0x400, 1505}, {NULL}, }; -static const struct SpritePalette gUnknown_085E4A84[] = +static const struct SpritePalette gIntroPalette_Lightning[] = { {gIntro3LightningPal, 1505}, {NULL}, @@ -84,10 +145,10 @@ static const struct OamData gUnknown_085E4A94 = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 0, + .shape = SPRITE_SHAPE(16x16), .x = 0, .matrixNum = 0, - .size = 1, + .size = SPRITE_SIZE(16x16), .tileNum = 0, .priority = 1, .paletteNum = 0, @@ -132,14 +193,14 @@ static const u8 gUnknown_085E4AD0[][2] = {0xD0, 0x26}, {0x00, 0x00}, }; -static const struct CompressedSpriteSheet gUnknown_085E4AE8[] = +static const struct CompressedSpriteSheet gIntroPokemonRunningSpriteSheet[] = { {gIntro2VolbeatGfx, 0x400, 1500}, {gIntro2TorchicGfx, 0xC00, 1501}, {gIntro2ManectricGfx, 0x2000, 1502}, {NULL}, }; -static const struct SpritePalette gUnknown_085E4B08[] = +static const struct SpritePalette gIntroPokemonRunningPalette[] = { {gIntro2VolbeatPal, 1500}, {gIntro2TorchicPal, 1501}, @@ -153,10 +214,10 @@ static const struct OamData gUnknown_085E4B28 = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 0, + .shape = SPRITE_SHAPE(32x32), .x = 0, .matrixNum = 0, - .size = 2, + .size = SPRITE_SIZE(32x32), .tileNum = 0, .priority = 1, .paletteNum = 0, @@ -190,10 +251,10 @@ static const struct OamData gUnknown_085E4B58 = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 0, + .shape = SPRITE_SHAPE(32x32), .x = 0, .matrixNum = 0, - .size = 2, + .size = SPRITE_SIZE(32x32), .tileNum = 0, .priority = 1, .paletteNum = 0, @@ -246,10 +307,10 @@ static const struct OamData gUnknown_085E4BBC = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 0, + .shape = SPRITE_SHAPE(64x64), .x = 0, .matrixNum = 0, - .size = 3, + .size = SPRITE_SIZE(64x64), .tileNum = 0, .priority = 1, .paletteNum = 0, @@ -278,12 +339,12 @@ static const struct SpriteTemplate gUnknown_085E4BDC = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_816DAE8, }; -static const struct CompressedSpriteSheet gUnknown_085E4BF4[] = +static const struct CompressedSpriteSheet gIntroRayquazaLightningSpriteSheet[] = { {gIntro3LightningGfx, 0xC00, 1503}, {NULL}, }; -static const struct SpritePalette gUnknown_085E4C04[] = +static const struct SpritePalette gIntroRayquazaLightningPalette[] = { {gIntro3LightningPal, 1503}, {NULL}, @@ -295,10 +356,10 @@ static const struct OamData gUnknown_085E4C14 = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 0, + .shape = SPRITE_SHAPE(32x32), .x = 0, .matrixNum = 0, - .size = 2, + .size = SPRITE_SIZE(32x32), .tileNum = 0, .priority = 0, .paletteNum = 0, @@ -328,8 +389,8 @@ static const union AnimCmd *const gUnknown_085E4C40[] = gUnknown_085E4C28, gUnknown_085E4C34, }; -static void sub_816EC6C(struct Sprite *sprite); -static const struct SpriteTemplate gUnknown_085E4C4C = +static void SpriteCB_IntroRayquazaLightning(struct Sprite *sprite); +static const struct SpriteTemplate gIntroLightningSprite = { .tileTag = 1503, .paletteTag = 1503, @@ -337,9 +398,9 @@ static const struct SpriteTemplate gUnknown_085E4C4C = .anims = gUnknown_085E4C40, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_816EC6C, + .callback = SpriteCB_IntroRayquazaLightning, }; -static const s16 gUnknown_085E4C64[][3] = +static const s16 gIntroGroudonRockData[][3] = { {0x68, 0x00, 0x0C0}, {0x8E, 0x03, 0x280}, @@ -358,7 +419,7 @@ static const struct SpritePalette gUnknown_085E4C98[] = {gIntro2BubblesPal, 1504}, {NULL}, }; -static const s16 gUnknown_085E4CA8[][3] = +static const s16 gIntroKyogreBubbleData[][3] = { {0x42, 0x40, 0x1}, {0x60, 0x60, 0x8}, @@ -380,10 +441,10 @@ static const struct OamData gUnknown_085E4CF0 = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 2, + .shape = SPRITE_SHAPE(16x32), .x = 0, .matrixNum = 0, - .size = 2, + .size = SPRITE_SIZE(16x32), .tileNum = 0, .priority = 0, .paletteNum = 0, @@ -402,7 +463,7 @@ static const union AnimCmd *const gUnknown_085E4D10[] = { gUnknown_085E4CF8, }; -static void sub_816E7B4(struct Sprite *sprite); +static void SpriteCB_IntroKyogreBubbles(struct Sprite *sprite); static const struct SpriteTemplate gUnknown_085E4D14 = { .tileTag = 1504, @@ -411,7 +472,7 @@ static const struct SpriteTemplate gUnknown_085E4D14 = .anims = gUnknown_085E4D10, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_816E7B4, + .callback = SpriteCB_IntroKyogreBubbles, }; static const struct OamData gUnknown_085E4D2C = { @@ -420,10 +481,10 @@ static const struct OamData gUnknown_085E4D2C = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 0, + .shape = SPRITE_SHAPE(32x32), .x = 0, .matrixNum = 0, - .size = 2, + .size = SPRITE_SIZE(32x32), .tileNum = 0, .priority = 0, .paletteNum = 0, @@ -457,7 +518,7 @@ static const union AnimCmd *const gUnknown_085E4D54[] = gUnknown_085E4D4C, }; static void sub_816F454(struct Sprite *sprite); -static const struct SpriteTemplate gUnknown_085E4D64 = +static const struct SpriteTemplate gIntroWaterDropSprite = { .tileTag = 2000, .paletteTag = 2000, @@ -497,7 +558,7 @@ static const union AnimCmd gUnknown_085E4DB4[] = ANIMCMD_FRAME(256, 16), ANIMCMD_END, }; -static const union AnimCmd *const gUnknown_085E4DC4[] = +static const union AnimCmd *const gIntroBicycleAnimationCommands[] = { gUnknown_085E4D7C, gUnknown_085E4D90, @@ -511,10 +572,10 @@ static const struct OamData gUnknown_085E4DD4 = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 0, + .shape = SPRITE_SHAPE(16x16), .x = 0, .matrixNum = 0, - .size = 1, + .size = SPRITE_SIZE(16x16), .tileNum = 0, .priority = 0, .paletteNum = 0, @@ -527,10 +588,10 @@ static const struct OamData gUnknown_085E4DDC = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 0, + .shape = SPRITE_SHAPE(8x8), .x = 0, .matrixNum = 0, - .size = 0, + .size = SPRITE_SIZE(8x8), .tileNum = 0, .priority = 0, .paletteNum = 0, @@ -543,10 +604,10 @@ static const struct OamData gUnknown_085E4DE4 = .objMode = 1, .mosaic = 0, .bpp = 0, - .shape = 2, + .shape = SPRITE_SHAPE(32x64), .x = 0, .matrixNum = 0, - .size = 3, + .size = SPRITE_SIZE(32x64), .tileNum = 0, .priority = 0, .paletteNum = 0, @@ -743,10 +804,10 @@ static const struct OamData gUnknown_085E4FB0 = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 1, + .shape = SPRITE_SHAPE(64x32), .x = 0, .matrixNum = 0, - .size = 3, + .size = SPRITE_SIZE(64x32), .tileNum = 0, .priority = 0, .paletteNum = 0, @@ -772,17 +833,17 @@ static const struct SpriteTemplate gUnknown_085E4FC4 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_816FEDC, }; -static const struct CompressedSpriteSheet gUnknown_085E4FDC[] = +static const struct CompressedSpriteSheet gIntroSpriteSheet_WaterDropAndLogo[] = { {gIntroTiles, 0x1400, 2000}, {NULL}, }; -static const struct CompressedSpriteSheet gUnknown_085E4FEC[] = +static const struct CompressedSpriteSheet gIntroSpriteSheet_Flygon[] = { {gIntro1FlygonGfx, 0x400, 2002}, {NULL}, }; -static const struct SpritePalette gUnknown_085E4FFC[] = +static const struct SpritePalette gIntroPalette_DropLogoFlygon[] = { {gIntro1DropsPal, 2000}, {gIntro1GFLogoPal, 2001}, @@ -796,10 +857,10 @@ static const struct OamData gUnknown_085E501C = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 0, + .shape = SPRITE_SHAPE(64x64), .x = 0, .matrixNum = 0, - .size = 3, + .size = SPRITE_SIZE(64x64), .tileNum = 0, .priority = 0, .paletteNum = 0, @@ -814,8 +875,8 @@ static const union AnimCmd *const gUnknown_085E502C[] = { gUnknown_085E5024, }; -static void sub_8170040(struct Sprite *sprite); -static const struct SpriteTemplate gUnknown_085E5030 = +static void SpriteCB_IntroRayquazaHyperbeam(struct Sprite *sprite); +static const struct SpriteTemplate gIntroRayquazaHyperbeamSprite = { .tileTag = 2003, .paletteTag = 2003, @@ -823,14 +884,14 @@ static const struct SpriteTemplate gUnknown_085E5030 = .anims = gUnknown_085E502C, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8170040, + .callback = SpriteCB_IntroRayquazaHyperbeam, }; -static const struct CompressedSpriteSheet gUnknown_085E5048[] = +static const struct CompressedSpriteSheet gIntroRayquazaGlowSpriteSheet[] = { {gIntro3MiscTiles, 0xA00, 2003}, {NULL}, }; -static const struct SpritePalette gUnknown_085E5058[] = +static const struct SpritePalette gIntroRayquazaGlowPalette[] = { {gIntro3Misc1Palette, 2003}, {NULL}, @@ -855,36 +916,36 @@ static void Task_IntroWaitToSetupPart3(u8); static void Task_IntroLoadPart3Graphics(u8); static void Task_IntroSpinAndZoomPokeball(u8); static void Task_IntroWaitToSetupPart3LegendsFight(u8); -static void Task_IntroLoadPart1Graphics3(u8); -static void Task_IntroLoadPart1Graphics4(u8); -static void Task_IntroLoadPart1Graphics5(u8); -static void Task_IntroLoadPart1Graphics6(u8); -static void Task_IntroLoadPart1Graphics7(u8); -static void Task_IntroLoadPart1Graphics8(u8); -static void Task_IntroLoadPart1Graphics9(u8); -static void Task_IntroFadeIn0(u8); -static void Task_IntroFadeIn1(u8); -static void Task_IntroFadeIn2(u8); -static void Task_IntroFadeIn3(u8); -static void Task_IntroFadeIn4(u8); -static void Task_IntroFadeIn5(u8); -static void Task_IntroFadeIn6(u8); -static void Task_IntroFadeIn7(u8); -static void Task_IntroFadeIn8(u8); -static void Task_IntroFadeIn9(u8); -static void sub_816E190(u8); -static void sub_816E1F8(struct Sprite *); -static void sub_816E6D4(u8); -static void sub_816E74C(void); -static void sub_816EEA8(u8); +static void Task_IntroLoadGroudonScene(u8); +static void Task_IntroLoadPart3Graphics1(u8); +static void Task_IntroLoadPart3Graphics2(u8); +static void Task_IntroLoadPart3Graphics3(u8); +static void Task_IntroLoadPart3Graphics4(u8); +static void Task_IntroGroudonScene(u8); +static void Task_IntroLoadKyogreScene(u8); +static void Task_IntroKyogreScene(u8); +static void Task_IntroLoadClouds1(u8); +static void Task_IntroLoadClouds2(u8); +static void Task_IntroLoadClouds3(u8); +static void Task_IntroCloudScene(u8); +static void Task_IntroLoadRayquazaLightningScene(u8); +static void Task_IntroRayquazaLightningScene(u8); +static void Task_IntroLoadRayquazaGlowScene(u8); +static void Task_IntroRayquazaGlowScene_0(u8); +static void Task_EndIntroMovie(u8); +static void CreateGroudonRockSprites(u8); +static void SpriteCB_IntroGroudonRocks(struct Sprite *); +static void CreateKyogreBubbleSprites_0(u8); +static void CreateKyogreBubbleSprites_1(void); +static void Task_IntroRayquazaGlowScene_1(u8); static void sub_816F46C(struct Sprite *); static void sub_816F5B4(struct Sprite *); static void sub_816F660(struct Sprite *); static void SpriteCB_WaterDropFall(struct Sprite *); static void sub_816F318(struct Sprite *); -static void sub_816F9D4(struct Sprite *); -static void sub_816FAB0(struct Sprite *); -static u8 sub_816FDB8(s16, s16, s16); +static void SpriteCB_IntroGraphicsBicycle(struct Sprite *); +static void SpriteCB_IntroGraphicsFlygon(struct Sprite *); +static u8 CreatePart1Animations(s16, s16, s16); static void VBlankCB_Intro(void) { @@ -1006,7 +1067,7 @@ void CB2_InitCopyrightScreenAfterBootup(void) if (!SetUpCopyrightScreen()) { SetSaveBlocksPointers(sub_815355C()); - sub_808447C(); + ResetMenuAndMonGlobals(); Save_ResetSaveCounters(); Save_LoadGameData(SAVE_NORMAL); if (gSaveFileStatus == 0 || gSaveFileStatus == 2) @@ -1024,31 +1085,31 @@ void CB2_InitCopyrightScreenAfterTitleScreen(void) static void Task_IntroLoadPart1Graphics(u8 taskId) { SetVBlankCallback(NULL); - gUnknown_0203BCC8 = Random() & 1; + gIntroCharacterGender = Random() & 1; intro_reset_and_hide_bgs(); SetGpuReg(REG_OFFSET_BG3VOFS, 0); SetGpuReg(REG_OFFSET_BG2VOFS, 0x50); SetGpuReg(REG_OFFSET_BG1VOFS, 0x18); SetGpuReg(REG_OFFSET_BG0VOFS, 0x28); LZ77UnCompVram(gIntro1BGLeavesGfx, (void *)VRAM); - LZ77UnCompVram(gIntro1BG0_Tilemap, (void *)(VRAM + 0x8000)); - DmaClear16(3, VRAM + 0x8800, 0x800); - LZ77UnCompVram(gIntro1BG1_Tilemap, (void *)(VRAM + 0x9000)); - DmaClear16(3, VRAM + 0x9800, 0x800); - LZ77UnCompVram(gIntro1BG2_Tilemap, (void *)(VRAM + 0xA000)); - DmaClear16(3, VRAM + 0xA800, 0x800); - LZ77UnCompVram(gIntro1BG3_Tilemap, (void *)(VRAM + 0xB000)); - DmaClear16(3, VRAM + 0xB800, 0x800); + LZ77UnCompVram(gIntro1BG0_Tilemap, (void *)(BG_CHAR_ADDR(2))); + DmaClear16(3, BG_SCREEN_ADDR(17), 0x800); + LZ77UnCompVram(gIntro1BG1_Tilemap, (void *)(BG_SCREEN_ADDR(18))); + DmaClear16(3, BG_SCREEN_ADDR(19), 0x800); + LZ77UnCompVram(gIntro1BG2_Tilemap, (void *)(BG_SCREEN_ADDR(20))); + DmaClear16(3, BG_SCREEN_ADDR(21), 0x800); + LZ77UnCompVram(gIntro1BG3_Tilemap, (void *)(BG_SCREEN_ADDR(22))); + DmaClear16(3, BG_SCREEN_ADDR(23), 0x800); LoadPalette(gIntro1BGPals, 0, sizeof(gIntro1BGPals)); SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(22) | BGCNT_16COLOR | BGCNT_TXT256x512); SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(20) | BGCNT_16COLOR | BGCNT_TXT256x512); SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(18) | BGCNT_16COLOR | BGCNT_TXT256x512); SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(16) | BGCNT_16COLOR | BGCNT_TXT256x512); - LoadCompressedSpriteSheet(gUnknown_085E4FDC); - LoadCompressedSpriteSheet(gUnknown_085E4FEC); - LoadSpritePalettes(gUnknown_085E4FFC); - LoadCompressedSpriteSheet(gUnknown_085E4A74); - LoadSpritePalettes(gUnknown_085E4A84); + LoadCompressedSpriteSheet(gIntroSpriteSheet_WaterDropAndLogo); + LoadCompressedSpriteSheet(gIntroSpriteSheet_Flygon); + LoadSpritePalettes(gIntroPalette_DropLogoFlygon); + LoadCompressedSpriteSheet(gIntroSpriteSheet_Sparkle); + LoadSpritePalettes(gIntroPalette_Lightning); CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1F0, 0x20); CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1E1, 0x1E); CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1D2, 0x1C); @@ -1056,7 +1117,7 @@ static void Task_IntroLoadPart1Graphics(u8 taskId) CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1B4, 0x18); CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1A5, 0x16); CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x196, 0x14); - sub_816FDB8(0x78, 0x50, 0); + CreatePart1Animations(0x78, 0x50, 0); gTasks[taskId].data[0] = CreateWaterDrop(236, -14, 0x200, 1, 0x78, FALSE); gTasks[taskId].func = Task_IntroFadeIn; } @@ -1194,7 +1255,7 @@ static void Task_IntroLoadPart2Graphics(u8 taskId) FreeAllSpritePalettes(); gUnknown_0203BD24 = 0; gUnknown_0203BD26 = 0; - gUnknown_0203BCCC = 0; + gIntroGraphicsFlygonYOffset = 0; load_intro_part2_graphics(1); gTasks[taskId].func = Task_IntroStartBikeRide; } @@ -1203,7 +1264,7 @@ static void Task_IntroStartBikeRide(u8 taskId) { u8 spriteId; - if (gUnknown_0203BCC8 == 0) + if (gIntroCharacterGender == 0) LoadCompressedSpriteSheet(gIntro2BrendanSpriteSheet); else LoadCompressedSpriteSheet(gIntro2MaySpriteSheet); @@ -1213,29 +1274,29 @@ static void Task_IntroStartBikeRide(u8 taskId) for (spriteId = 0; spriteId < 3; spriteId++) { - LoadCompressedSpriteSheet(&gUnknown_085E4AE8[spriteId]); + LoadCompressedSpriteSheet(&gIntroPokemonRunningSpriteSheet[spriteId]); } - LoadSpritePalettes(gUnknown_085F530C); - LoadSpritePalettes(gUnknown_085E4B08); + LoadSpritePalettes(gIntroBikeAndFlygonPalette); + LoadSpritePalettes(gIntroPokemonRunningPalette); CreateSprite(&gUnknown_085E4BDC, 0x110, 0x80, 0); CreateSprite(&gUnknown_085E4BA4, 0x120, 0x6E, 1); - if (gUnknown_0203BCC8 == 0) + if (gIntroCharacterGender == 0) spriteId = intro_create_brendan_sprite(0x110, 100); else spriteId = intro_create_may_sprite(0x110, 100); - gSprites[spriteId].callback = sub_816F9D4; - gSprites[spriteId].anims = gUnknown_085E4DC4; + gSprites[spriteId].callback = SpriteCB_IntroGraphicsBicycle; + gSprites[spriteId].anims = gIntroBicycleAnimationCommands; gTasks[taskId].data[1] = spriteId; CreateSprite(&gUnknown_085E4B40, 0x110, 0x50, 0x4); spriteId = intro_create_flygon_sprite(-0x40, 0x3C); - gSprites[spriteId].callback = sub_816FAB0; + gSprites[spriteId].callback = SpriteCB_IntroGraphicsFlygon; gTasks[taskId].data[2] = spriteId; BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_WHITEALPHA); SetVBlankCallback(VBlankCB_Intro); - gTasks[taskId].data[0] = sub_817B3DC(1, 0x4000, 0x400, 0x10); + gTasks[taskId].data[0] = CreateBicycleAnimationTask(1, 0x4000, 0x400, 0x10); sub_817B150(1); gTasks[taskId].func = Task_IntroHandleBikeAndFlygonMovement; } @@ -1243,11 +1304,12 @@ static void Task_IntroStartBikeRide(u8 taskId) static void Task_IntroHandleBikeAndFlygonMovement(u8 taskId) { s16 a; - u16 sine; + u16 offset; if (gIntroFrameCounter == 1856) { gUnknown_0203BD28 = 2; + // Destroys the CreateBicycleAnimationTask created earlier. DestroyTask(gTasks[taskId].data[0]); } if (gIntroFrameCounter > 1946) @@ -1268,8 +1330,8 @@ static void Task_IntroHandleBikeAndFlygonMovement(u8 taskId) if (gIntroFrameCounter == 1727) gSprites[gTasks[taskId].data[1]].data[0] = 4; - sine = Sin(gTasks[taskId].data[3] >> 2 & 0x7F, 48); - gUnknown_0203BCCC = sine; + offset = Sin(gTasks[taskId].data[3] >> 2 & 0x7F, 48); + gIntroGraphicsFlygonYOffset = offset; if (gTasks[taskId].data[3] < 512) gTasks[taskId].data[3]++; sub_817B540(0); @@ -1487,13 +1549,13 @@ static void Task_IntroLoadPart3Graphics(u8 taskId) { intro_reset_and_hide_bgs(); LZ77UnCompVram(gIntro3Pokeball_Gfx, (void *)VRAM); - LZ77UnCompVram(gIntro3Pokeball_Tilemap, (void *)(VRAM + 0x4000)); + LZ77UnCompVram(gIntro3Pokeball_Tilemap, (void *)(BG_CHAR_ADDR(1))); LoadPalette(gIntro3PokeballPal, 0, 0x200); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = 0; gTasks[taskId].data[3] = 0; - sub_816F2A8(0x78, 0x50, 0, 0); + PanFadeAndZoomScreen(0x78, 0x50, 0, 0); ResetSpriteData(); FreeAllSpritePalettes(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_WHITEALPHA); @@ -1518,7 +1580,7 @@ static void Task_IntroSpinAndZoomPokeball(u8 taskId) gTasks[taskId].func = Task_IntroWaitToSetupPart3LegendsFight; } - sub_816F2A8(0x78, 0x50, 0x10000 / gTasks[taskId].data[1], gTasks[taskId].data[0]); + PanFadeAndZoomScreen(0x78, 0x50, 0x10000 / gTasks[taskId].data[1], gTasks[taskId].data[0]); if (gIntroFrameCounter == 28) BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_WHITEALPHA); @@ -1527,10 +1589,10 @@ static void Task_IntroSpinAndZoomPokeball(u8 taskId) static void Task_IntroWaitToSetupPart3LegendsFight(u8 taskId) { if (gIntroFrameCounter > 43) - gTasks[taskId].func = Task_IntroLoadPart1Graphics3; + gTasks[taskId].func = Task_IntroLoadGroudonScene; } -static void Task_IntroLoadPart1Graphics3(u8 taskId) +static void Task_IntroLoadGroudonScene(u8 taskId) { if (!gPaletteFade.active) { @@ -1539,17 +1601,17 @@ static void Task_IntroLoadPart1Graphics3(u8 taskId) FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; LZDecompressVram(gIntro3GroudonGfx, (void *)VRAM); - LZDecompressVram(gIntro3GroudonTilemap, (void *)(VRAM + 0xC000)); - LZDecompressVram(gIntro3LegendBgGfx, (void *)(VRAM + 0x4000)); - LZDecompressVram(gIntro3GroudonBgTilemap, (void *)(VRAM + 0xE000)); + LZDecompressVram(gIntro3GroudonTilemap, (void *)(BG_CHAR_ADDR(3))); + LZDecompressVram(gIntro3LegendBgGfx, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(gIntro3GroudonBgTilemap, (void *)(BG_SCREEN_ADDR(28))); LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]); LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]); CpuCopy16(gIntro3BgPal, gPlttBufferUnfaded, sizeof(gIntro3BgPal)); - gTasks[taskId].func = Task_IntroLoadPart1Graphics4; + gTasks[taskId].func = Task_IntroLoadPart3Graphics1; } } -static void Task_IntroLoadPart1Graphics4(u8 taskId) +static void Task_IntroLoadPart3Graphics1(u8 taskId) { SetGpuReg(REG_OFFSET_WIN0H, 0xF0); SetGpuReg(REG_OFFSET_WIN0V, 0xA0); @@ -1577,11 +1639,11 @@ static void Task_IntroLoadPart1Graphics4(u8 taskId) gTasks[taskId].data[1] = 0xFFA0; gTasks[taskId].data[2] = 0xFF51; gTasks[taskId].data[3] = 0x100; - sub_816F2A8(0xFFA0, 0xFF51, 0x100, 0); - gTasks[taskId].func = Task_IntroLoadPart1Graphics5; + PanFadeAndZoomScreen(0xFFA0, 0xFF51, 0x100, 0); + gTasks[taskId].func = Task_IntroLoadPart3Graphics2; } -static void Task_IntroLoadPart1Graphics5(u8 taskId) +static void Task_IntroLoadPart3Graphics2(u8 taskId) { if (gTasks[taskId].data[0] != 32) { @@ -1591,30 +1653,30 @@ static void Task_IntroLoadPart1Graphics5(u8 taskId) else { SetGpuReg(REG_OFFSET_WIN0V, 0x2080); - gTasks[taskId].func = Task_IntroLoadPart1Graphics6; + gTasks[taskId].func = Task_IntroLoadPart3Graphics3; } } -static void Task_IntroLoadPart1Graphics6(u8 taskId) +static void Task_IntroLoadPart3Graphics3(u8 taskId) { - gTasks[taskId].func = Task_IntroLoadPart1Graphics7; + gTasks[taskId].func = Task_IntroLoadPart3Graphics4; } -static void Task_IntroLoadPart1Graphics7(u8 taskId) +static void Task_IntroLoadPart3Graphics4(u8 taskId) { gTasks[taskId].data[0] = 0; - gTasks[taskId].func = Task_IntroLoadPart1Graphics8; + gTasks[taskId].func = Task_IntroGroudonScene; ScanlineEffect_InitWave(0, 0xA0, 0x4, 4, 1, 4, 0); } -static void Task_IntroLoadPart1Graphics8(u8 taskId) +static void Task_IntroGroudonScene(u8 taskId) { s16 *data = gTasks[taskId].data; data[5]++; if ((u16)(data[0] - 1) < 7 && data[5] % 2 == 0) data[4] ^= 3; - sub_816F2A8(data[1], data[2] + data[4], data[3], 0); + PanFadeAndZoomScreen(data[1], data[2] + data[4], data[3], 0); switch (data[0]) { case 0: @@ -1624,7 +1686,7 @@ static void Task_IntroLoadPart1Graphics8(u8 taskId) data[0]++; data[6] = 2; data[7] = 0x1E2; - sub_816E190(taskId); + CreateGroudonRockSprites(taskId); } break; case 1: @@ -1706,30 +1768,30 @@ static void Task_IntroLoadPart1Graphics8(u8 taskId) case 9: if (!gPaletteFade.active) { - gTasks[taskId].func = Task_IntroLoadPart1Graphics9; + gTasks[taskId].func = Task_IntroLoadKyogreScene; gScanlineEffect.state = 3; } break; } } -static void sub_816E190(u8 a0) +static void CreateGroudonRockSprites(u8 a0) { int i; u8 spriteId; for (i = 0; i < 6; i++) { - spriteId = CreateSprite(gUnknown_08596C10, gUnknown_085E4C64[i][0], 0xA0, i); - gSprites[spriteId].callback = sub_816E1F8; + spriteId = CreateSprite(gUnknown_08596C10, gIntroGroudonRockData[i][0], 0xA0, i); + gSprites[spriteId].callback = SpriteCB_IntroGroudonRocks; gSprites[spriteId].oam.priority = 0; gSprites[spriteId].data[1] = i; gSprites[spriteId].data[4] = a0; - StartSpriteAnim(&gSprites[spriteId], gUnknown_085E4C64[i][1]); + StartSpriteAnim(&gSprites[spriteId], gIntroGroudonRockData[i][1]); } } -static void sub_816E1F8(struct Sprite *sprite) +static void SpriteCB_IntroGroudonRocks(struct Sprite *sprite) { sprite->data[3]++; if (sprite->data[3] % 2 == 0) @@ -1738,7 +1800,7 @@ static void sub_816E1F8(struct Sprite *sprite) switch(sprite->data[0]) { case 0: - sprite->data[2] += gUnknown_085E4C64[sprite->data[1]][2]; + sprite->data[2] += gIntroGroudonRockData[sprite->data[1]][2]; sprite->pos1.y -= (sprite->data[2] & 0xFF00) >> 8; sprite->data[2] &= 0xFF; if (gTasks[sprite->data[4]].data[0] > 7) @@ -1758,30 +1820,30 @@ static void sub_816E1F8(struct Sprite *sprite) } } -static void Task_IntroLoadPart1Graphics9(u8 taskId) +static void Task_IntroLoadKyogreScene(u8 taskId) { ResetSpriteData(); LZDecompressVram(gIntro3KyogreGfx, (void *)VRAM); - LZDecompressVram(gIntro3KyogreTilemap, (void *)(VRAM + 0xC000)); - LZDecompressVram(gIntro3KyogreBgTilemap, (void *)(VRAM + 0xE000)); + LZDecompressVram(gIntro3KyogreTilemap, (void *)(BG_CHAR_ADDR(3))); + LZDecompressVram(gIntro3KyogreBgTilemap, (void *)(BG_SCREEN_ADDR(28))); LoadCompressedSpriteSheet(gUnknown_085E4C88); LoadSpritePalette(gUnknown_085E4C98); BeginNormalPaletteFade(0xFFFFFFFE, 0, 0x10, 0, RGB_WHITEALPHA); - gTasks[taskId].func = Task_IntroFadeIn0; + gTasks[taskId].func = Task_IntroKyogreScene; gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0x150; gTasks[taskId].data[2] = 0x50; gTasks[taskId].data[6] = 0x10; gTasks[taskId].data[3] = 0x100; - sub_816F2A8(0x150, 0x50, 0x100, 0); + PanFadeAndZoomScreen(0x150, 0x50, 0x100, 0); ScanlineEffect_InitWave(0, 0xA0, 4, 4, 1, 6, 0); } -static void Task_IntroFadeIn0(u8 taskId) +static void Task_IntroKyogreScene(u8 taskId) { s16 *data = gTasks[taskId].data; - sub_816F2A8(data[1], data[2], data[3], 0); + PanFadeAndZoomScreen(data[1], data[2], data[3], 0); switch (data[0]) { @@ -1798,7 +1860,7 @@ static void Task_IntroFadeIn0(u8 taskId) data[6] = 0x19; data[7] = 1; data[0]++; - sub_816E6D4(0); + CreateKyogreBubbleSprites_0(0); } break; case 2: @@ -1808,8 +1870,8 @@ static void Task_IntroFadeIn0(u8 taskId) gTasks[taskId].data[2] -= 0x102; data[6] = 8; data[0]++; - sub_816E6D4(0); - sub_816E74C(); + CreateKyogreBubbleSprites_0(0); + CreateKyogreBubbleSprites_1(); } break; case 3: @@ -1891,7 +1953,7 @@ static void Task_IntroFadeIn0(u8 taskId) { data[6] = 0; data[0]++; - sub_816E6D4(taskId); + CreateKyogreBubbleSprites_0(taskId); } break; case 11: @@ -1914,43 +1976,43 @@ static void Task_IntroFadeIn0(u8 taskId) case 13: if (!gPaletteFade.active) { - gTasks[taskId].func = Task_IntroFadeIn1; + gTasks[taskId].func = Task_IntroLoadClouds1; gScanlineEffect.state = 3; } break; } } -static void sub_816E6D4(u8 a0) +static void CreateKyogreBubbleSprites_0(u8 taskId) { int i; u8 spriteId; for (i = 0; i < 6; i++) { - spriteId = CreateSprite(&gUnknown_085E4D14, gUnknown_085E4CA8[i][0], gUnknown_085E4CA8[i][1], i); + spriteId = CreateSprite(&gUnknown_085E4D14, gIntroKyogreBubbleData[i][0], gIntroKyogreBubbleData[i][1], i); gSprites[spriteId].invisible = TRUE; - gSprites[spriteId].data[5] = a0; - gSprites[spriteId].data[6] = gUnknown_085E4CA8[i][2]; + gSprites[spriteId].data[5] = taskId; + gSprites[spriteId].data[6] = gIntroKyogreBubbleData[i][2]; gSprites[spriteId].data[7] = 0x40; } } -static void sub_816E74C(void) +static void CreateKyogreBubbleSprites_1(void) { int i; u8 spriteId; for (i = 0; i < 6; i++) { - spriteId = CreateSprite(&gUnknown_085E4D14, gUnknown_085E4CA8[i + 6][0], gUnknown_085E4CA8[i + 6][1], i); + spriteId = CreateSprite(&gUnknown_085E4D14, gIntroKyogreBubbleData[i + 6][0], gIntroKyogreBubbleData[i + 6][1], i); gSprites[spriteId].invisible = TRUE; - gSprites[spriteId].data[6] = gUnknown_085E4CA8[i][2]; + gSprites[spriteId].data[6] = gIntroKyogreBubbleData[i][2]; gSprites[spriteId].data[7] = 0x40; } } -static void sub_816E7B4(struct Sprite *sprite) +static void SpriteCB_IntroKyogreBubbles(struct Sprite *sprite) { switch(sprite->data[0]) { @@ -1988,7 +2050,7 @@ static void sub_816E7B4(struct Sprite *sprite) } } -static void Task_IntroFadeIn1(u8 taskId) +static void Task_IntroLoadClouds1(u8 taskId) { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 @@ -2025,29 +2087,29 @@ static void Task_IntroFadeIn1(u8 taskId) SetGpuReg(REG_OFFSET_BG2HOFS, 0); SetGpuReg(REG_OFFSET_BG2VOFS, 0); LZDecompressVram(gIntro3CloudsGfx, (void *)VRAM); - LZDecompressVram(gIntro3CloudsGfx, (void *)(VRAM + 0x4000)); - LZDecompressVram(gIntro3Clouds3Tilemap, (void *)(VRAM + 0xE000)); - gTasks[taskId].func = Task_IntroFadeIn2; + LZDecompressVram(gIntro3CloudsGfx, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(gIntro3Clouds3Tilemap, (void *)(BG_SCREEN_ADDR(28))); + gTasks[taskId].func = Task_IntroLoadClouds2; } -static void Task_IntroFadeIn2(u8 taskId) +static void Task_IntroLoadClouds2(u8 taskId) { - LZDecompressVram(gIntro3Clouds1Tilemap, (void *)(VRAM + 0xC000)); - LZDecompressVram(gIntro3Clouds2Tilemap, (void *)(VRAM + 0xD000)); - gTasks[taskId].func = Task_IntroFadeIn3; + LZDecompressVram(gIntro3Clouds1Tilemap, (void *)(BG_CHAR_ADDR(3))); + LZDecompressVram(gIntro3Clouds2Tilemap, (void *)(BG_SCREEN_ADDR(26))); + gTasks[taskId].func = Task_IntroLoadClouds3; } -static void Task_IntroFadeIn3(u8 taskId) +static void Task_IntroLoadClouds3(u8 taskId) { SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); SetGpuReg(REG_OFFSET_BLDY, 0); - gTasks[taskId].func = Task_IntroFadeIn4; + gTasks[taskId].func = Task_IntroCloudScene; gTasks[taskId].data[0] = 0; gTasks[taskId].data[6] = 16; } -static void Task_IntroFadeIn4(u8 taskId) +static void Task_IntroCloudScene(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -2071,16 +2133,16 @@ static void Task_IntroFadeIn4(u8 taskId) if (data[6] != 0) data[6] -= 0x80; else if (!gPaletteFade.active) - gTasks[taskId].func = Task_IntroFadeIn5; + gTasks[taskId].func = Task_IntroLoadRayquazaLightningScene; break; } } -static void Task_IntroFadeIn5(u8 taskId) +static void Task_IntroLoadRayquazaLightningScene(u8 taskId) { - LZDecompressVram(gIntro3RayquazaTilemap, (void *)(VRAM + 0xE000)); - LZDecompressVram(gIntro3Clouds4Tilemap, (void *)(VRAM + 0xC000)); - LZDecompressVram(gIntro3RayquazaGfx, (void *)(VRAM + 0x4000)); + LZDecompressVram(gIntro3RayquazaTilemap, (void *)(BG_SCREEN_ADDR(28))); + LZDecompressVram(gIntro3Clouds4Tilemap, (void *)(BG_CHAR_ADDR(3))); + LZDecompressVram(gIntro3RayquazaGfx, (void *)(BG_CHAR_ADDR(1))); LZDecompressVram(gIntro3Clouds2Gfx, (void *)VRAM); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP @@ -2088,15 +2150,15 @@ static void Task_IntroFadeIn5(u8 taskId) | DISPCNT_BG2_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON); - gTasks[taskId].func = Task_IntroFadeIn6; + gTasks[taskId].func = Task_IntroRayquazaLightningScene; gTasks[taskId].data[0] = 0; gTasks[taskId].data[6] = 1; gTasks[taskId].data[7] = 0; - LoadCompressedSpriteSheetUsingHeap(gUnknown_085E4BF4); - LoadSpritePalettes(gUnknown_085E4C04); + LoadCompressedSpriteSheetUsingHeap(gIntroRayquazaLightningSpriteSheet); + LoadSpritePalettes(gIntroRayquazaLightningPalette); } -static void Task_IntroFadeIn6(u8 taskId) +static void Task_IntroRayquazaLightningScene(u8 taskId) { s16 *data = gTasks[taskId].data; u8 spriteId; @@ -2106,10 +2168,10 @@ static void Task_IntroFadeIn6(u8 taskId) case 0: if (--data[6] == 0) { - CreateSprite(&gUnknown_085E4C4C, 200, 48, 0); - spriteId = CreateSprite(&gUnknown_085E4C4C, 200, 80, 1); + CreateSprite(&gIntroLightningSprite, 200, 48, 0); + spriteId = CreateSprite(&gIntroLightningSprite, 200, 80, 1); StartSpriteAnim(&gSprites[spriteId], 1); - spriteId = CreateSprite(&gUnknown_085E4C4C, 200, 112, 2); + spriteId = CreateSprite(&gIntroLightningSprite, 200, 112, 2); StartSpriteAnim(&gSprites[spriteId], 2); data[0]++; data[6] = 72; @@ -2118,10 +2180,10 @@ static void Task_IntroFadeIn6(u8 taskId) case 1: if (--data[6] == 0) { - CreateSprite(&gUnknown_085E4C4C, 40, 48, 0); - spriteId = CreateSprite(&gUnknown_085E4C4C, 40, 80, 1); + CreateSprite(&gIntroLightningSprite, 40, 48, 0); + spriteId = CreateSprite(&gIntroLightningSprite, 40, 80, 1); StartSpriteAnim(&gSprites[spriteId], 1); - spriteId = CreateSprite(&gUnknown_085E4C4C, 40, 112, 2); + spriteId = CreateSprite(&gIntroLightningSprite, 40, 112, 2); StartSpriteAnim(&gSprites[spriteId], 2); data[0]++; data[6] = 48; @@ -2129,12 +2191,12 @@ static void Task_IntroFadeIn6(u8 taskId) break; case 2: if (--data[6] == 0) - gTasks[taskId].func = Task_IntroFadeIn7; + gTasks[taskId].func = Task_IntroLoadRayquazaGlowScene; break; } } -static void sub_816EC6C(struct Sprite *sprite) +static void SpriteCB_IntroRayquazaLightning(struct Sprite *sprite) { if (sprite->animEnded) sprite->invisible = TRUE; @@ -2165,30 +2227,30 @@ static void sub_816EC6C(struct Sprite *sprite) } } -static void Task_IntroFadeIn7(u8 taskId) +static void Task_IntroLoadRayquazaGlowScene(u8 taskId) { u8 newTaskId; - LoadCompressedSpriteSheet(gUnknown_085E5048); - LoadSpritePalettes(gUnknown_085E5058); + LoadCompressedSpriteSheet(gIntroRayquazaGlowSpriteSheet); + LoadSpritePalettes(gIntroRayquazaGlowPalette); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON); - gTasks[taskId].func = Task_IntroFadeIn8; + gTasks[taskId].func = Task_IntroRayquazaGlowScene_0; BeginNormalPaletteFade(0x0000FFDE, 0, 16, 0, RGB(9, 10, 10)); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0xA8; gTasks[taskId].data[2] = -0x10; gTasks[taskId].data[3] = -0x88; gTasks[taskId].data[4] = -0x10; - newTaskId = CreateTask(sub_816EEA8, 0); + newTaskId = CreateTask(Task_IntroRayquazaGlowScene_1, 0); gTasks[newTaskId].data[4] = taskId; } -static void Task_IntroFadeIn8(u8 taskId) +static void Task_IntroRayquazaGlowScene_0(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -2230,22 +2292,22 @@ static void Task_IntroFadeIn8(u8 taskId) break; case 3: if (--data[5] == 0) - gTasks[taskId].func = Task_IntroFadeIn9; + gTasks[taskId].func = Task_EndIntroMovie; break; } } -static void Task_IntroFadeIn9(u8 taskId) +static void Task_EndIntroMovie(u8 taskId) { DestroyTask(taskId); SetMainCallback2(MainCB2_EndIntro); } -static void sub_816EEA8(u8 taskId) +static void Task_IntroRayquazaGlowScene_1(u8 taskId) { + // Note: data[4] contains the taskId of Task_IntroRayquazaGlowScene_0 u8 spriteId; s16 *data = gTasks[taskId].data; - data[2]++; switch(data[0]) @@ -2292,7 +2354,7 @@ static void sub_816EEA8(u8 taskId) } if (data[1] == 6) { - spriteId = CreateSprite(&gUnknown_085E5030, 120, 88, 15); + spriteId = CreateSprite(&gIntroRayquazaHyperbeamSprite, 120, 88, 15); PlaySE(SE_OP_BASYU); gSprites[spriteId].invisible = TRUE; gSprites[spriteId].data[3] = data[4]; @@ -2365,7 +2427,7 @@ static void Task_IntroWaterDrops_1(u8 taskId) | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); - SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[31]); + SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[31]); SetGpuReg(REG_OFFSET_BLDY, 0); gTasks[taskId].data[1] = 0x40; gTasks[taskId].data[0]++; @@ -2377,11 +2439,11 @@ static void Task_IntroWaterDrops_1(u8 taskId) gTasks[taskId].data[1]--; tmp = gTasks[taskId].data[1] / 2; - SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[tmp]); + SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[tmp]); } else { - SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[0]); + SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[0]); gTasks[taskId].data[1] = 0x10; gTasks[taskId].data[0]++; } @@ -2408,7 +2470,7 @@ static void Task_IntroWaterDrops_2(u8 taskId) | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); - SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[0]); + SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[0]); SetGpuReg(REG_OFFSET_BLDY, 0); gTasks[taskId].data[1] = 0; gTasks[taskId].data[0]++; @@ -2420,11 +2482,11 @@ static void Task_IntroWaterDrops_2(u8 taskId) gTasks[taskId].data[1]++; tmp = gTasks[taskId].data[1] / 2; - SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[tmp]); + SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[tmp]); } else { - SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[31]); + SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[31]); gTasks[taskId].data[1] = 0x10; gTasks[taskId].data[0]++; } @@ -2445,15 +2507,15 @@ static void Task_IntroWaterDrops_2(u8 taskId) } } -void sub_816F2A8(u16 scrX, u16 scrY, u16 zoom, u16 alpha) +void PanFadeAndZoomScreen(u16 screenX, u16 screenY, u16 zoom, u16 alpha) { struct BgAffineSrcData src; struct BgAffineDstData dest; src.texX = 0x8000; src.texY = 0x8000; - src.scrX = scrX; - src.scrY = scrY; + src.scrX = screenX; + src.scrY = screenY; src.sx = zoom; src.sy = zoom; src.alpha = alpha; @@ -2662,7 +2724,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately) u8 spriteId; u8 oldSpriteId; - spriteId = CreateSprite(&gUnknown_085E4D64, x, y, 1); + spriteId = CreateSprite(&gIntroWaterDropSprite, x, y, 1); gSprites[spriteId].data[0] = 0; gSprites[spriteId].data[7] = 0; gSprites[spriteId].data[1] = d; @@ -2680,7 +2742,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately) gSprites[spriteId].callback = SpriteCB_WaterDropFall_2; oldSpriteId = spriteId; - spriteId = CreateSprite(&gUnknown_085E4D64, x, y, 1); + spriteId = CreateSprite(&gIntroWaterDropSprite, x, y, 1); gSprites[spriteId].data[7] = oldSpriteId; gSprites[spriteId].data[1] = d + 1; gSprites[spriteId].oam.affineMode = 3; @@ -2688,7 +2750,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately) CalcCenterToCornerVec(&gSprites[spriteId], 0, 2, 2); gSprites[spriteId].callback = sub_816F3A4; - spriteId = CreateSprite(&gUnknown_085E4D64, x, y, 1); + spriteId = CreateSprite(&gIntroWaterDropSprite, x, y, 1); gSprites[spriteId].data[7] = oldSpriteId; gSprites[spriteId].data[1] = d + 2; StartSpriteAnim(&gSprites[spriteId], 1); @@ -2704,7 +2766,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately) return oldSpriteId; } -static void sub_816F9D4(struct Sprite *sprite) +static void SpriteCB_IntroGraphicsBicycle(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -2753,7 +2815,7 @@ static void sub_816F9D4(struct Sprite *sprite) } } -static void sub_816FAB0(struct Sprite *sprite) +static void SpriteCB_IntroGraphicsFlygon(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -2776,7 +2838,7 @@ static void sub_816FAB0(struct Sprite *sprite) sprite->pos2.x -= 2; break; } - sprite->pos2.y = Sin((u8)sprite->data[1], 8) - gUnknown_0203BCCC; + sprite->pos2.y = Sin((u8)sprite->data[1], 8) - gIntroGraphicsFlygonYOffset; sprite->data[1] += 4; } @@ -2896,7 +2958,7 @@ static void sub_816FD44(struct Sprite *sprite) } } -static u8 sub_816FDB8(s16 a0, s16 a1, s16 a2) +static u8 CreatePart1Animations(s16 a0, s16 a1, s16 a2) { u16 i; u8 spriteId; @@ -2981,7 +3043,7 @@ static void sub_816FEDC(struct Sprite *sprite) } } -static void sub_8170040(struct Sprite *sprite) +static void SpriteCB_IntroRayquazaHyperbeam(struct Sprite *sprite) { u16 foo; |