From 1d399a41dd6250d5af49449308537488ec1aea85 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Apr 2020 08:57:03 -0400 Subject: Fix intro gfx and start doccing intro methods --- src/intro.c | 800 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 403 insertions(+), 397 deletions(-) (limited to 'src/intro.c') diff --git a/src/intro.c b/src/intro.c index 837d4f905..6a86144a6 100644 --- a/src/intro.c +++ b/src/intro.c @@ -21,29 +21,33 @@ #include "constants/songs.h" #include "constants/species.h" +struct IntroSequenceData; + +typedef void (*IntroCallback)(struct IntroSequenceData *); + struct IntroSequenceData { - void (*field_0000)(struct IntroSequenceData *); - u8 field_0004; + IntroCallback callback; + u8 state; u8 field_0005; u8 field_0006; u16 field_0008; u16 field_000A; u8 filler_000C[6]; - u16 field_0012; - struct Sprite * field_0014; - struct Sprite * field_0018; - struct Sprite * field_001C; - struct Sprite * field_0020; - struct Sprite * field_0024; - struct Sprite * field_0028[4]; + u16 timer; + struct Sprite * gameFreakLogoArtSprite; + struct Sprite * nidorinoAnimSprite; + struct Sprite * gengarStaticSprite; + struct Sprite * nidorinoStaticSprite; + struct Sprite * grassSprite; + struct Sprite * gengarBackSpriteArray[4]; u8 filler_0038[0x4]; u8 field_003C[0x400]; u8 field_043C[0x400]; u8 filler_083C[0x2080]; }; // size: 0x28BC -static EWRAM_DATA struct GcmbStruct gUnknown_203AAD4 = {0}; +static EWRAM_DATA struct GcmbStruct sGcmb = {0}; static EWRAM_DATA u16 gUnknown_203AB00 = 0; static EWRAM_DATA u16 gUnknown_203AB02 = 0; static EWRAM_DATA u16 gUnknown_203AB04 = 0; @@ -69,43 +73,43 @@ static EWRAM_DATA s16 gUnknown_203AB2C = 0; static EWRAM_DATA u16 gUnknown_203AB2E = 0; static EWRAM_DATA u32 gUnknown_203AB30 = 0; -static void sub_80EC870(void); -static void sub_80EC9D4(void); -static void sub_80EC9EC(void); -static void sub_80ECA00(void); -static void sub_80ECA70(void); -static void sub_80ECAB0(u8 taskId); -static void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *)); -static void sub_80ECAF0(struct IntroSequenceData * ptr); -static void sub_80ECB98(struct IntroSequenceData * ptr); -static void sub_80ECC3C(struct IntroSequenceData * ptr); -static void sub_80ECCA8(struct IntroSequenceData * ptr); -static void sub_80ECD60(struct IntroSequenceData * ptr); -static void sub_80ECEA4(struct IntroSequenceData * ptr); +static void CB2_SetUpIntro(void); +static void CB2_Intro(void); +static void VBlankCB_Intro(void); +static void Intro_ResetGpuRegs(void); +static void StartIntroSequence(void); +static void Task_CallIntroCallback(u8 taskId); +static void SetIntroCB(struct IntroSequenceData * ptr, IntroCallback cb); +static void IntroCB_Init(struct IntroSequenceData * ptr); +static void IntroCB_OpenWin1ToTheaterDimensions(struct IntroSequenceData * ptr); +static void IntroCB_GameFreakStar(struct IntroSequenceData * ptr); +static void IntroCB_GameFreakScene_RevealGameFreakText(struct IntroSequenceData * ptr); +static void IntroCB_GameFreakScene_CreateGameFreakLogo(struct IntroSequenceData * ptr); +static void IntroCB_FightScene1_Init(struct IntroSequenceData * ptr); static void sub_80ED0AC(u8 taskId); static void sub_80ED118(void); static void sub_80ED140(u8 taskId); static void sub_80ED188(struct IntroSequenceData * ptr); static void sub_80ED40C(u8 taskId); static void sub_80ED428(u8 taskId); -static void sub_80ED444(struct IntroSequenceData * ptr); +static void CreateMonStaticSprites(struct IntroSequenceData * ptr); static void sub_80ED4A0(struct IntroSequenceData * ptr); static void sub_80ED4C0(struct IntroSequenceData * ptr); static void sub_80ED6D8(void); static void sub_80ED714(u8 taskId); -static void sub_80ED7D4(struct IntroSequenceData * ptr); -static void sub_80ED818(struct Sprite * sprite); +static void CreateGrassSprite(struct IntroSequenceData * ptr); +static void SpriteCB_Grass(struct Sprite * sprite); static void sub_80ED898(struct IntroSequenceData * ptr); -static void sub_80EDAF0(struct IntroSequenceData * ptr); +static void CreateGengarBackSprite(struct IntroSequenceData * ptr); static void sub_80EDB70(struct IntroSequenceData * ptr); static void sub_80EDBAC(struct IntroSequenceData * ptr); static void sub_80EDBE8(struct IntroSequenceData * ptr); -static void sub_80EDC40(void); -static void sub_80EDDF0(void); -static void sub_80EDE04(u8 taskId); -static void sub_80EDED8(void); -static void sub_80EDEEC(u8 taskId); -static struct Sprite * sub_80EDF68(void); +static void GameFreakScene_LoadGfxCreateStar(void); +static void GameFreakScene_StartTrailingSparkleSpawner(void); +static void Task_GameFreakScene_TrailingSparkleSpawner(u8 taskId); +static void GameFreakScene_StartRevealGameFreakTextSparklesSpawner(void); +static void Task_RevealGameFreakTextSparklesSpawner(u8 taskId); +static struct Sprite * CreateGameFreakLogoArtSprite(void); static void sub_80EDF94(struct IntroSequenceData * ptr); static void sub_80EE024(u8 taskId); static void sub_80EE160(void); @@ -115,7 +119,7 @@ static void sub_80EE29C(struct Sprite * sprite); static void sub_80EE350(struct Sprite * sprite); static void sub_80EE40C(struct Sprite * sprite); static void sub_80EE4DC(struct Sprite * sprite); -static void sub_80EE4F8(struct IntroSequenceData * ptr); +static void CreateNidorinoAnimSprite(struct IntroSequenceData * ptr); static void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3); static void sub_80EE580(struct Sprite * sprite); static bool32 sub_80EE5C8(struct IntroSequenceData * ptr); @@ -124,7 +128,7 @@ static void sub_80EE610(struct Sprite * sprite); static void sub_80EE6A4(struct IntroSequenceData * ptr); static void sub_80EE704(struct Sprite * sprite); static bool8 sub_80EE850(struct IntroSequenceData * ptr); -static void sub_80EE864(s16 a1, s16 a2, s16 a3); +static void CreateNidorinoRecoilDustSprites(s16 a1, s16 a2, s16 a3); static void sub_80EE8E4(struct Sprite * sprite); static void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3); static void sub_80EE9D4(struct Sprite * sprite); @@ -132,28 +136,28 @@ static void sub_80EEA94(struct IntroSequenceData * ptr); static void sub_80EEB08(struct Sprite * sprite); static void sub_80EEBE4(void); #if REVISION >= 1 -static void sub_rev1_80EDFAC(void); +static void Rev1_GameFreakScene_CreatePresentsText(void); #else -#define sub_rev1_80EDFAC() +#define Rev1_GameFreakScene_CreatePresentsText() #endif extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; -static const u16 gUnknown_8402260[] = INCBIN_U16("graphics/intro/unk_8402260.gbapal"); -static const u8 gUnknown_8402280[] = INCBIN_U8("graphics/intro/unk_8402280.4bpp.lz"); -static const u8 gUnknown_84024E4[] = INCBIN_U8("graphics/intro/unk_84024E4.bin.lz"); +static const u16 sCopyrightGraphicsPal[] = INCBIN_U16("graphics/intro/unk_8402260.gbapal"); +static const u8 sCopyrightGraphicsTiles[] = INCBIN_U8("graphics/intro/unk_8402280.4bpp.lz"); +static const u8 sCopyrightGraphicsMap[] = INCBIN_U8("graphics/intro/unk_84024E4.bin.lz"); static const u16 gUnknown_8402630[] = INCBIN_U16("graphics/intro/unk_8402630.gbapal"); static const u8 gUnknown_8402650[] = INCBIN_U8("graphics/intro/unk_8402650.4bpp.lz"); static const u8 gUnknown_8402668[] = INCBIN_U8("graphics/intro/unk_8402668.bin.lz"); -static const u16 gUnknown_840270C[] = INCBIN_U16("graphics/intro/unk_840270C.gbapal"); +static const u16 sSpritePals_GameFreakPresents[] = INCBIN_U16("graphics/intro/unk_840270C.gbapal"); static const u8 gUnknown_840272C[] = INCBIN_U8("graphics/intro/unk_840272C.4bpp.lz"); -static const u32 gUnknown_84028F8[] = INCBIN_U32("graphics/intro/unk_84028F8.bin.lz"); -static const u16 gUnknown_8402A44[] = INCBIN_U16("graphics/intro/unk_8402A64.gbapal"); -static const u32 gUnknown_8402A64[] = INCBIN_U32("graphics/intro/unk_8402A64.4bpp.lz"); -static const u16 gUnknown_8402ABC[] = INCBIN_U16("graphics/intro/unk_8402ADC.gbapal"); -static const u32 gUnknown_8402ADC[] = INCBIN_U32("graphics/intro/unk_8402ADC.4bpp.lz"); -static const u32 gUnknown_8402B2C[] = INCBIN_U32("graphics/intro/unk_8402B2C.4bpp.lz"); -static const u32 gUnknown_8402CD4[] = INCBIN_U32("graphics/intro/unk_8402CD4.4bpp.lz"); +static const u32 sSpriteTiles_GameFreakLogoArt[] = INCBIN_U32("graphics/intro/unk_84028F8.4bpp.lz"); +static const u16 sSpritePals_LargeStar[] = INCBIN_U16("graphics/intro/unk_8402A64.gbapal"); +static const u32 sSpriteTiles_LargeStar[] = INCBIN_U32("graphics/intro/unk_8402A64.4bpp.lz"); +static const u16 sSpritePals_Sparkles[] = INCBIN_U16("graphics/intro/unk_8402ADC.gbapal"); +static const u32 sSpriteTiles_TrailingSparkles[] = INCBIN_U32("graphics/intro/unk_8402ADC.4bpp.lz"); +static const u32 sSpriteTiles_RevealGameFreakTextSparkles[] = INCBIN_U32("graphics/intro/unk_8402B2C.4bpp.lz"); +static const u32 sSpriteTiles_PresentsText[] = INCBIN_U32("graphics/intro/unk_8402CD4.4bpp.lz"); static const u16 gUnknown_8402D34[] = INCBIN_U16("graphics/intro/unk_8402D34.gbapal"); static const u8 gUnknown_8402D54[] = INCBIN_U8("graphics/intro/unk_8402D54.4bpp.lz"); static const u8 gUnknown_8403FE8[] = INCBIN_U8("graphics/intro/unk_8403FE8.bin.lz"); @@ -166,7 +170,7 @@ static const u8 gUnknown_8405890[] = INCBIN_U8("graphics/intro/unk_8405890.bin.l static const u16 gUnknown_8405B08[] = INCBIN_U16("graphics/intro/unk_8405B08.gbapal"); static const u8 gUnknown_8405B28[] = INCBIN_U8("graphics/intro/unk_8405B28.4bpp.lz"); static const u8 gUnknown_8405CDC[] = INCBIN_U8("graphics/intro/unk_8405CDC.bin.lz"); -static const u16 gUnknown_8405DA4[] = INCBIN_U16("graphics/intro/unk_8405DA4.gbapal"); +static const u16 sSpritePals_Gengar[] = INCBIN_U16("graphics/intro/unk_8405DA4.gbapal"); static const u8 gUnknown_8405DC4[] = INCBIN_U8("graphics/intro/unk_8405DC4.4bpp.lz"); static const u8 gUnknown_840644C[] = INCBIN_U8("graphics/intro/unk_840644C.bin.lz"); static const u16 gUnknown_8406634[] = INCBIN_U16("graphics/intro/unk_8406634.gbapal"); @@ -177,24 +181,24 @@ static const u8 gUnknown_8407470[] = INCBIN_U8("graphics/intro/unk_8407470.4bpp. static const u8 gUnknown_8407A50[] = INCBIN_U8("graphics/intro/unk_8407A50.bin.lz"); static const u8 gUnknown_8407B9C[] = INCBIN_U8("graphics/intro/unk_8407B9C.4bpp.lz"); static const u8 gUnknown_8408D98[] = INCBIN_U8("graphics/intro/unk_8408D98.bin.lz"); -static const u32 gUnknown_840926C[] = INCBIN_U32("graphics/intro/unk_840926C.4bpp.lz"); -static const u16 gUnknown_84096AC[] = INCBIN_U16("graphics/intro/unk_84096AC.gbapal"); -static const u32 gUnknown_84096CC[] = INCBIN_U32("graphics/intro/unk_84096CC.4bpp.lz"); -static const u16 gUnknown_8409A1C[] = INCBIN_U16("graphics/intro/unk_8409A1C.gbapal"); -static const u32 gUnknown_8409A3C[] = INCBIN_U32("graphics/intro/unk_8409A3C.4bpp.lz"); -static const u32 gUnknown_8409D20[] = INCBIN_U32("graphics/intro/unk_8409D20.4bpp.lz"); -static const u32 gUnknown_840A3E4[] = INCBIN_U32("graphics/intro/unk_840A3E4.4bpp.lz"); -static const u16 gUnknown_840B834[] = INCBIN_U16("graphics/intro/unk_840B834.gbapal"); -static const u16 gUnknown_840B854[] = INCBIN_U16("graphics/intro/unk_840B854.gbapal"); -static const u32 gUnknown_840B874[] = INCBIN_U32("graphics/intro/unk_840B874.4bpp.lz"); -static const u32 gUnknown_840BAE0[] = INCBIN_U32("graphics/intro/unk_840BAE0.4bpp.lz"); - -static const struct BgTemplate gUnknown_840BB80[] = { +static const u32 sSpriteTiles_GengarStatic[] = INCBIN_U32("graphics/intro/unk_840926C.4bpp.lz"); +static const u16 sSpritePals_Nidorino[] = INCBIN_U16("graphics/intro/unk_84096AC.gbapal"); +static const u32 sSpriteTiles_NidorinoStatic[] = INCBIN_U32("graphics/intro/unk_84096CC.4bpp.lz"); +static const u16 sSpritePals_Grass[] = INCBIN_U16("graphics/intro/unk_8409A1C.gbapal"); +static const u32 sSpriteTiles_Grass[] = INCBIN_U32("graphics/intro/unk_8409A3C.4bpp.lz"); +static const u32 sSpriteTiles_GengarBack[] = INCBIN_U32("graphics/intro/unk_8409D20.4bpp.lz"); +static const u32 sSpriteTiles_NidorinoAnim[] = INCBIN_U32("graphics/intro/unk_840A3E4.4bpp.lz"); +static const u16 sSpritePals_GengarSwipe[] = INCBIN_U16("graphics/intro/unk_840B834.gbapal"); +static const u16 sSpritePals_NidorinoRecoilDust[] = INCBIN_U16("graphics/intro/unk_840B854.gbapal"); +static const u32 sSpriteTiles_GengarSwipe[] = INCBIN_U32("graphics/intro/unk_840B874.4bpp.lz"); +static const u32 sSpriteTiles_NidorinoRecoilDust[] = INCBIN_U32("graphics/intro/unk_840BAE0.4bpp.lz"); + +static const struct BgTemplate sBgTemplates_GameFreakScene[] = { { 3, 3, 31, 0, 0, 3, 0x000 }, { 2, 3, 30, 0, 0, 2, 0x010 } }; -static const struct BgTemplate gUnknown_840BB88[] = { +static const struct BgTemplate sBgTemplates_FightScene1[] = { { 0, 0, 28, 2, 0, 0, 0x000 }, { 1, 1, 30, 2, 0, 0, 0x000 } }; @@ -211,7 +215,7 @@ static const struct BgTemplate gUnknown_840BBA0[] = { { 0, 1, 30, 2, 0, 0, 0x000 } }; -static const struct WindowTemplate gUnknown_840BBA8[] = { +static const struct WindowTemplate sWindowTemplate[] = { { 2, 6, 4, 18, 9, 0xD, 0x000 }, DUMMY_WIN_TEMPLATE }; @@ -223,22 +227,22 @@ static const u8 gUnknown_840BBB8[][2] = { {0x00, 0x00} }; -static const struct CompressedSpriteSheet gUnknown_840BBC0[] = { - {gUnknown_8402A64, 0x0080, 0}, - {gUnknown_8402ADC, 0x0080, 1}, - {gUnknown_8402B2C, 0x0800, 2}, - {gUnknown_84028F8, 0x0400, 3}, - {gUnknown_8402CD4, 0x0100, 4} +static const struct CompressedSpriteSheet sSpriteSheets_GameFreakScene[] = { + {sSpriteTiles_LargeStar, 0x0080, 0}, + {sSpriteTiles_TrailingSparkles, 0x0080, 1}, + {sSpriteTiles_RevealGameFreakTextSparkles, 0x0800, 2}, + {sSpriteTiles_GameFreakLogoArt, 0x0400, 3}, + {sSpriteTiles_PresentsText, 0x0100, 4} }; -static const struct SpritePalette gUnknown_840BBE8[] = { - {gUnknown_8402A44, 0}, - {gUnknown_8402ABC, 1}, - {gUnknown_840270C, 3}, +static const struct SpritePalette sSpritePalettes_GameFreakScene[] = { + {sSpritePals_LargeStar, 0}, + {sSpritePals_Sparkles, 1}, + {sSpritePals_GameFreakPresents, 3}, {0} }; -static const struct Coords16 gUnknown_840BC08[] = { +static const struct Coords16 sTrailingSparkleCoords[] = { {0x0048, 0x0050}, {0x0088, 0x004a}, {0x00a8, 0x0050}, @@ -275,9 +279,9 @@ static const union AnimCmd *const gAnimCmdTable_840BC64[] = { gAnimCmd_840BC50 }; -static const struct SpriteTemplate gUnknown_840BC6C = {0, 0, &gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80EE29C}; +static const struct SpriteTemplate sSpriteTemplate_LargeStar = {0, 0, &gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80EE29C}; -static const struct SpriteTemplate gUnknown_840BC84 = {1, 1, &gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, sub_80EE350}; +static const struct SpriteTemplate sSpriteTemplate_TrailingSparkles = {1, 1, &gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, sub_80EE350}; static const struct OamData gOamData_840BC9C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_2, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; @@ -293,15 +297,15 @@ static const union AnimCmd *const gAnimCmdTable_840BCB8[] = { gAnimCmd_840BCA4 }; -static const struct SpriteTemplate gUnknown_840BCBC = {2, 1, &gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, sub_80EE4DC}; +static const struct SpriteTemplate sSpriteTemplate_RevealGameFreakTextSparkles = {2, 1, &gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, sub_80EE4DC}; static const struct OamData gOamData_840BCD4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; -static const struct SpriteTemplate gUnknown_840BCDC = {3, 3, &gOamData_840BCD4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_GameFreakLogoArt = {3, 3, &gOamData_840BCD4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; static const struct OamData gOamData_840BCF4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; -static const struct SpriteTemplate gUnknown_840BCFC = {4, 3, &gOamData_840BCF4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_PresentsText = {4, 3, &gOamData_840BCF4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; static const struct OamData gOamData_840BD14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; @@ -354,13 +358,13 @@ static const union AffineAnimCmd *const gAffineAnimCmdTable_840BD80[] = { gAffineAnimCmd_840BD68 }; -static const struct SpriteTemplate gUnknown_840BD88 = {5, 7, &gOamData_840BD14, gAnimCmdTable_840BD44, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoAnim = {5, 7, &gOamData_840BD14, gAnimCmdTable_840BD44, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; static const struct OamData gOamData_840BDA0 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; -static const struct SpriteTemplate gUnknown_840BDA8 = {7, 7, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoStatic = {7, 7, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; -static const struct SpriteTemplate gUnknown_840BDC0 = {6, 6, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_GengarStatic = {6, 6, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; static const struct OamData gOamData_840BDD8 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 0, .paletteNum = 0 }; @@ -380,7 +384,7 @@ static const union AnimCmd *const gAnimCmdTable_840BDF4[] = { gAnimCmds_840BDE8 }; -static const struct SpriteTemplate gUnknown_840BDFC = {8, 8, &gOamData_840BDD8, gAnimCmdTable_840BDF4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_Grass = {8, 8, &gOamData_840BDD8, gAnimCmdTable_840BDF4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; static const struct OamData gOamData_840BE14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; @@ -411,7 +415,7 @@ static const union AnimCmd *const gAnimCmdTable_840BE3C[] = { gAnimCmd_840BE34 }; -static const struct SpriteTemplate gUnknown_840BE4C = {9, 6, &gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_GengarBack = {9, 6, &gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; static const struct OamData gOamData_840BE64 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; @@ -432,7 +436,7 @@ static const union AnimCmd *const gAnimCmdTable_840BE84[] = { gAnimCmd_840BE78 }; -static const struct SpriteTemplate gUnknown_840BE8C = {10, 10, &gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, sub_80EE1C4}; +static const struct SpriteTemplate sSpriteTemplate_GengarSwipe = {10, 10, &gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, sub_80EE1C4}; static const struct OamData gOamData_840BEA4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; @@ -448,16 +452,16 @@ static const union AnimCmd *const gAnimCmdTable_840BEC0[] = { gAnimCmd_840BEAC }; -static const struct SpriteTemplate gUnknown_840BEC4 = {11, 11, &gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, sub_80EE8E4}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoRecoilDust = {11, 11, &gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, sub_80EE8E4}; -static const struct CompressedSpriteSheet gUnknown_840BEDC[] = { - {gUnknown_840926C, 0x0800, 6}, - {gUnknown_84096CC, 0x0800, 7}, - {gUnknown_840A3E4, 0x2800, 5}, - {gUnknown_8409A3C, 0x0800, 8}, - {gUnknown_8409D20, 0x1800, 9}, - {gUnknown_840B874, 0x0a00, 10}, - {gUnknown_840BAE0, 0x0200, 11} +static const struct CompressedSpriteSheet sFightSceneSpriteSheets[] = { + {sSpriteTiles_GengarStatic, 0x0800, 6}, + {sSpriteTiles_NidorinoStatic, 0x0800, 7}, + {sSpriteTiles_NidorinoAnim, 0x2800, 5}, + {sSpriteTiles_Grass, 0x0800, 8}, + {sSpriteTiles_GengarBack, 0x1800, 9}, + {sSpriteTiles_GengarSwipe, 0x0a00, 10}, + {sSpriteTiles_NidorinoRecoilDust, 0x0200, 11} }; // POTENTIAL UB @@ -465,12 +469,12 @@ static const struct CompressedSpriteSheet gUnknown_840BEDC[] = { // LoadSpritePalettes uses a {0} entry to signal end of array. // Because such an entry is absent in this case, the function // continues reading into the next .rodata section. -static const struct SpritePalette gUnknown_840BF14[] = { - {gUnknown_8405DA4, 6}, - {gUnknown_84096AC, 7}, - {gUnknown_8409A1C, 8}, - {gUnknown_840B834, 10}, - {gUnknown_840B854, 11}, +static const struct SpritePalette sFightSceneSpritePalettes[] = { + {sSpritePals_Gengar, 6}, + {sSpritePals_Nidorino, 7}, + {sSpritePals_Grass, 8}, + {sSpritePals_GengarSwipe, 10}, + {sSpritePals_NidorinoRecoilDust, 11}, // {0} }; @@ -481,25 +485,25 @@ static void sub_80EC5A4(void) TransferPlttBuffer(); } -static void sub_80EC5B8(void) +static void CB2_WaitFadeBeforeSetUpIntro(void) { if (!UpdatePaletteFade()) - SetMainCallback2(sub_80EC870); + SetMainCallback2(CB2_SetUpIntro); } -static void load_copyright_graphics(u16 a, u16 b, u16 c) +static void load_copyright_graphics(u16 charBase, u16 screenBase, u16 palOffset) { - LZ77UnCompVram(gUnknown_8402280, (void *)BG_VRAM + a); - LZ77UnCompVram(gUnknown_84024E4, (void *)BG_VRAM + b); - LoadPalette(gUnknown_8402260, c, 0x20); + LZ77UnCompVram(sCopyrightGraphicsTiles, (void *)BG_VRAM + charBase); + LZ77UnCompVram(sCopyrightGraphicsMap, (void *)BG_VRAM + screenBase); + LoadPalette(sCopyrightGraphicsPal, palOffset, 0x20); } static void SerialCb_CopyrightScreen(void) { - GameCubeMultiBoot_HandleSerialInterrupt(&gUnknown_203AAD4); + GameCubeMultiBoot_HandleSerialInterrupt(&sGcmb); } -static bool8 sub_80EC62C(void) +static bool8 RunCopyrightScreen(void) { switch (gMain.state) { @@ -516,26 +520,26 @@ static bool8 sub_80EC62C(void) DmaFill32(3, 0, OAM, OAM_SIZE); DmaFill16(3, 0, PLTT + sizeof(vu16), PLTT_SIZE - sizeof(vu16)); ResetPaletteFade(); - load_copyright_graphics(0, 0x3800, 0); + load_copyright_graphics(0 * BG_CHAR_SIZE, 7 * BG_SCREEN_SIZE, 0); ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes();BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF); - SetGpuReg(REG_OFFSET_BG0CNT, 0x700); + SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(7)); EnableInterrupts(INTR_FLAG_VBLANK); SetVBlankCallback(sub_80EC5A4); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON); SetSerialCallback(SerialCb_CopyrightScreen); - GameCubeMultiBoot_Init(&gUnknown_203AAD4); + GameCubeMultiBoot_Init(&sGcmb); // fallthrough default: UpdatePaletteFade(); gMain.state++; - GameCubeMultiBoot_Main(&gUnknown_203AAD4); + GameCubeMultiBoot_Main(&sGcmb); break; case 140: - GameCubeMultiBoot_Main(&gUnknown_203AAD4); - if (gUnknown_203AAD4.gcmb_field_2 != 1) + GameCubeMultiBoot_Main(&sGcmb); + if (sGcmb.gcmb_field_2 != 1) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); gMain.state++; @@ -545,16 +549,17 @@ static bool8 sub_80EC62C(void) if (!UpdatePaletteFade()) { gMain.state++; - if (gUnknown_203AAD4.gcmb_field_2 != 0) + if (sGcmb.gcmb_field_2 != 0) { - if (gUnknown_203AAD4.gcmb_field_2 == 2) + if (sGcmb.gcmb_field_2 == 2) { + // Gc6e if (*((u32 *)0x020000AC) == 0x65366347) { CpuCopy16(gMultiBootProgram_PokemonColosseum_Start, (void *)EWRAM_START, 0x28000); *((u32 *)0x020000AC) = 0x65366347; } - GameCubeMultiBoot_ExecuteProgram(&gUnknown_203AAD4); + GameCubeMultiBoot_ExecuteProgram(&sGcmb); } } else @@ -567,7 +572,7 @@ static bool8 sub_80EC62C(void) break; case 142: ResetSerial(); - SetMainCallback2(sub_80EC5B8); + SetMainCallback2(CB2_WaitFadeBeforeSetUpIntro); break; } return TRUE; @@ -575,7 +580,7 @@ static bool8 sub_80EC62C(void) void c2_copyright_1(void) { - if (!sub_80EC62C()) + if (!RunCopyrightScreen()) { ResetMenuAndMonGlobals(); Save_ResetSaveCounters(); @@ -586,12 +591,12 @@ void c2_copyright_1(void) } } -void sub_80EC864(void) +void CB2_CopyrightScreen(void) { - sub_80EC62C(); + RunCopyrightScreen(); } -static void sub_80EC870(void) +static void CB2_SetUpIntro(void) { switch (gMain.state) { @@ -606,34 +611,34 @@ static void sub_80EC870(void) ResetSpriteData(); ResetPaletteFade(); ResetTempTileDataBuffers(); - sub_80ECA00(); + Intro_ResetGpuRegs(); DmaFill16(3, 0, VRAM, VRAM_SIZE); DmaFill32(3, 0, OAM, OAM_SIZE); DmaFill16(3, 0, PLTT, PLTT_SIZE); FillPalette(0, 0, 0x400); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_840BB80, NELEMS(gUnknown_840BB80)); + InitBgsFromTemplates(0, sBgTemplates_GameFreakScene, NELEMS(sBgTemplates_GameFreakScene)); break; case 1: LoadPalette(gUnknown_8402630, 0x00, 0x20); DecompressAndCopyTileDataToVram(3, gUnknown_8402650, 0, 0, 0); DecompressAndCopyTileDataToVram(3, gUnknown_8402668, 0, 0, 1); - LoadPalette(gUnknown_840270C, 0xD0, 0x20); + LoadPalette(sSpritePals_GameFreakPresents, 0xD0, 0x20); break; case 2: if (!FreeTempTileDataBuffersIfPossible()) { - sub_80ECA70(); + StartIntroSequence(); BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); - SetMainCallback2(sub_80EC9D4); - SetVBlankCallback(sub_80EC9EC); + SetMainCallback2(CB2_Intro); + SetVBlankCallback(VBlankCB_Intro); } return; } gMain.state++; } -static void sub_80EC9D4(void) +static void CB2_Intro(void) { RunTasks(); AnimateSprites(); @@ -641,14 +646,14 @@ static void sub_80EC9D4(void) UpdatePaletteFade(); } -static void sub_80EC9EC(void) +static void VBlankCB_Intro(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -static void sub_80ECA00(void) +static void Intro_ResetGpuRegs(void) { SetGpuReg(REG_OFFSET_DISPCNT, 0); SetGpuReg(REG_OFFSET_BLDCNT, 0); @@ -665,53 +670,53 @@ static void sub_80ECA00(void) SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); } -static void sub_80ECA70(void) +static void StartIntroSequence(void) { struct IntroSequenceData * ptr = Alloc(sizeof(struct IntroSequenceData)); - sub_80ECAA8(ptr, sub_80ECAF0); - ptr->field_0005 = CreateTask(sub_80ECAB0, 3); + SetIntroCB(ptr, IntroCB_Init); + ptr->field_0005 = CreateTask(Task_CallIntroCallback, 3); SetWordTaskArg(ptr->field_0005, 0, (uintptr_t)ptr); } -static void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *)) +static void SetIntroCB(struct IntroSequenceData * ptr, IntroCallback cb) { - ptr->field_0000 = cb; - ptr->field_0004 = 0; + ptr->callback = cb; + ptr->state = 0; } -static void sub_80ECAB0(u8 taskId) +static void Task_CallIntroCallback(u8 taskId) { struct IntroSequenceData * ptr = (void *)GetWordTaskArg(taskId, 0); - if (JOY_NEW(A_BUTTON | START_BUTTON | SELECT_BUTTON) && ptr->field_0000 != sub_80EDBE8) - sub_80ECAA8(ptr, sub_80EDBE8); - ptr->field_0000(ptr); + if (JOY_NEW(A_BUTTON | START_BUTTON | SELECT_BUTTON) && ptr->callback != sub_80EDBE8) + SetIntroCB(ptr, sub_80EDBE8); + ptr->callback(ptr); } -static void sub_80ECAF0(struct IntroSequenceData * this) +static void IntroCB_Init(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: - InitWindows(gUnknown_840BBA8); + InitWindows(sWindowTemplate); LZ77UnCompWram(gUnknown_840272C, this->field_043C); - LZ77UnCompWram(gUnknown_84028F8, this->field_003C); + LZ77UnCompWram(sSpriteTiles_GameFreakLogoArt, this->field_003C); FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11); FillWindowPixelBuffer(0, 0x00); BlitBitmapToWindow(0, this->field_043C, 0, 40, 144, 16); PutWindowTilemap(0); CopyWindowToVram(0, 3); - this->field_0004++; + this->state++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) - sub_80ECAA8(this, sub_80ECB98); + SetIntroCB(this, IntroCB_OpenWin1ToTheaterDimensions); break; } } -static void sub_80ECB98(struct IntroSequenceData * this) +static void IntroCB_OpenWin1ToTheaterDimensions(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); @@ -719,106 +724,106 @@ static void sub_80ECB98(struct IntroSequenceData * this) SetGpuReg(REG_OFFSET_WINOUT, 0x0000); SetGpuReg(REG_OFFSET_WIN1H, 0x00F0); SetGpuReg(REG_OFFSET_WIN1V, 0x0000); - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; break; case 1: ShowBg(3); BlendPalettes(0xFFFFFFFF, 0x00, RGB_BLACK); - this->field_0004++; + this->state++; break; case 2: - this->field_0012 += 8; - if (this->field_0012 >= 0x30) - this->field_0012 = 0x30; - SetGpuReg(REG_OFFSET_WIN1V, ((0x50 - this->field_0012) << 8) | (0x50 + this->field_0012)); - if (this->field_0012 == 0x30) - sub_80ECAA8(this, sub_80ECC3C); + this->timer += 8; + if (this->timer >= 0x30) + this->timer = 0x30; + SetGpuReg(REG_OFFSET_WIN1V, ((0x50 - this->timer) << 8) | (0x50 + this->timer)); + if (this->timer == 0x30) + SetIntroCB(this, IntroCB_GameFreakStar); break; } } -static void sub_80ECC3C(struct IntroSequenceData * this) +static void IntroCB_GameFreakStar(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: PlaySE(MUS_TITLEROG); - sub_80EDC40(); - this->field_0012 = 0; - this->field_0004++; + GameFreakScene_LoadGfxCreateStar(); + this->timer = 0; + this->state++; break; case 1: - this->field_0012++; - if (this->field_0012 == 30) + this->timer++; + if (this->timer == 30) { - sub_80EDDF0(); - this->field_0012 = 0; - this->field_0004++; + GameFreakScene_StartTrailingSparkleSpawner(); + this->timer = 0; + this->state++; } break; case 2: - this->field_0012++; - if (this->field_0012 == 90) - sub_80ECAA8(this, sub_80ECCA8); + this->timer++; + if (this->timer == 90) + SetIntroCB(this, IntroCB_GameFreakScene_RevealGameFreakText); break; } } -static void sub_80ECCA8(struct IntroSequenceData * this) +static void IntroCB_GameFreakScene_RevealGameFreakText(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: - sub_80EDED8(); - this->field_0012 = 0; - this->field_0004++; + GameFreakScene_StartRevealGameFreakTextSparklesSpawner(); + this->timer = 0; + this->state++; break; case 1: - this->field_0012++; - if (this->field_0012 >= 40) - this->field_0004++; + this->timer++; + if (this->timer >= 40) + this->state++; break; case 2: SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); StartBlendTask(0, 16, 16, 0, 48, 0); - this->field_0004++; + this->state++; break; case 3: ShowBg(2); - this->field_0004++; + this->state++; break; case 4: if (!IsBlendTaskActive()) { SetGpuReg(REG_OFFSET_BLDCNT, 0); - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 5: - this->field_0012++; - if (this->field_0012 > 50) - sub_80ECAA8(this, sub_80ECD60); + this->timer++; + if (this->timer > 50) + SetIntroCB(this, IntroCB_GameFreakScene_CreateGameFreakLogo); break; } } -static void sub_80ECD60(struct IntroSequenceData * this) +static void IntroCB_GameFreakScene_CreateGameFreakLogo(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); StartBlendTask(0, 16, 16, 0, 16, 0); this->field_0008 = 0; this->field_000A = 16; - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; break; case 1: - this->field_0014 = sub_80EDF68(); - this->field_0004++; + this->gameFreakLogoArtSprite = CreateGameFreakLogoArtSprite(); + this->state++; break; case 2: if (!IsBlendTaskActive()) @@ -826,61 +831,61 @@ static void sub_80ECD60(struct IntroSequenceData * this) BlitBitmapToWindow(0, this->field_003C, 0x38, 0x06, 0x20, 0x40); BlitBitmapToWindow(0, this->field_043C, 0x00, 0x28, 0x90, 0x10); CopyWindowToVram(0, 2); - this->field_0004++; + this->state++; } break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) { - DestroySprite(this->field_0014); - sub_rev1_80EDFAC(); - this->field_0012 = 0; - this->field_0004++; + DestroySprite(this->gameFreakLogoArtSprite); + Rev1_GameFreakScene_CreatePresentsText(); + this->timer = 0; + this->state++; } break; case 4: - this->field_0012++; - if (this->field_0012 > 90) + this->timer++; + if (this->timer > 90) { SetGpuRegBits(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2); StartBlendTask(16, 0, 0, 16, 20, 0); - this->field_0004++; + this->state++; } break; case 5: if (!IsBlendTaskActive()) { HideBg(2); - this->field_0004++; + this->state++; } break; case 6: ResetSpriteData(); FreeAllSpritePalettes(); - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; break; case 7: - this->field_0012++; - if (this->field_0012 > 20) + this->timer++; + if (this->timer > 20) { SetGpuReg(REG_OFFSET_BLDCNT, 0); - sub_80ECAA8(this, sub_80ECEA4); + SetIntroCB(this, IntroCB_FightScene1_Init); } break; } } -static void sub_80ECEA4(struct IntroSequenceData * this) +static void IntroCB_FightScene1_Init(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: SetVBlankCallback(NULL); LoadPalette(gUnknown_8402D34, 0x10, 0x20); LoadPalette(gUnknown_84048CC, 0x20, 0x20); BlendPalettes(0x06, 0x10, RGB_WHITE); - InitBgsFromTemplates(0, gUnknown_840BB88, NELEMS(gUnknown_840BB88)); + InitBgsFromTemplates(0, sBgTemplates_FightScene1, NELEMS(sBgTemplates_FightScene1)); DecompressAndCopyTileDataToVram(1, gUnknown_84048EC, 0, 0, 0); DecompressAndCopyTileDataToVram(1, gUnknown_8404F7C, 0, 0, 1); ShowBg(1); @@ -888,8 +893,8 @@ static void sub_80ECEA4(struct IntroSequenceData * this) HideBg(2); HideBg(3); sub_80EEBE4(); - SetVBlankCallback(sub_80EC9EC); - this->field_0004++; + SetVBlankCallback(VBlankCB_Intro); + this->state++; break; case 1: if (!FreeTempTileDataBuffersIfPossible()) @@ -898,7 +903,7 @@ static void sub_80ECEA4(struct IntroSequenceData * this) DecompressAndCopyTileDataToVram(0, gUnknown_8403FE8, 0, 0, 1); ResetBgPositions(); ShowBg(1); - this->field_0004++; + this->state++; } break; case 2: @@ -907,30 +912,30 @@ static void sub_80ECEA4(struct IntroSequenceData * this) ShowBg(0); CreateTask(sub_80ED0AC, 0); BeginNormalPaletteFade(0x00000006, -2, 16, 0, RGB_WHITE); - this->field_0004++; + this->state++; } break; case 3: if (!gPaletteFade.active) { m4aSongNumStart(MUS_DEMO); - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 4: - this->field_0012++; - if (this->field_0012 == 20) + this->timer++; + if (this->timer == 20) { CreateTask(sub_80ED140, 0); sub_80ED118(); } - if (this->field_0012 >= 30) + if (this->timer >= 30) { BlendPalettes(-2, 16, RGB_WHITE); DestroyTask(FindTaskIdByFunc(sub_80ED0AC)); DestroyTask(FindTaskIdByFunc(sub_80ED140)); - sub_80ECAA8(this, sub_80ED188); + SetIntroCB(this, sub_80ED188); } break; case 5: @@ -938,7 +943,7 @@ static void sub_80ECEA4(struct IntroSequenceData * this) { DestroyTask(FindTaskIdByFunc(sub_80ED0AC)); DestroyTask(FindTaskIdByFunc(sub_80ED140)); - sub_80ECAA8(this, sub_80ED188); + SetIntroCB(this, sub_80ED188); } break; } @@ -986,7 +991,7 @@ static void sub_80ED140(u8 taskId) static void sub_80ED188(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); @@ -994,14 +999,14 @@ static void sub_80ED188(struct IntroSequenceData * this) DecompressAndCopyTileDataToVram(3, gUnknown_8405414, 0, 0, 0); DecompressAndCopyTileDataToVram(3, gUnknown_8405890, 0, 0, 1); ShowBg(3); - this->field_0004++; + this->state++; break; case 1: if (!FreeTempTileDataBuffersIfPossible()) { SetVBlankCallback(NULL); LoadPalette(gUnknown_84053B4, 0x10, 0x60); - LoadPalette(gUnknown_8405DA4, 0x50, 0x20); + LoadPalette(sSpritePals_Gengar, 0x50, 0x20); LoadPalette(gUnknown_8406634, 0x60, 0x20); BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); DecompressAndCopyTileDataToVram(0, gUnknown_8405B28, 0, 0, 0); @@ -1017,31 +1022,31 @@ static void sub_80ED188(struct IntroSequenceData * this) ChangeBgY(2, 0x0001CE00, 0); ChangeBgY(1, 0x00002800, 0); CreateTask(sub_80ED40C, 0); - sub_80ED444(this); + CreateMonStaticSprites(this); BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); - SetVBlankCallback(sub_80EC9EC); - this->field_0004++; + SetVBlankCallback(VBlankCB_Intro); + this->state++; } break; case 2: if (!FreeTempTileDataBuffersIfPossible()) { BeginNormalPaletteFade(0xFFFFFFFE, -2, 16, 0, RGB_WHITE); - this->field_0004++; + this->state++; } break; case 3: if (!gPaletteFade.active) { - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 4: - this->field_0012++; - if (this->field_0012 >= 60) + this->timer++; + if (this->timer >= 60) { - this->field_0012 = 0; + this->timer = 0; DestroyTask(FindTaskIdByFunc(sub_80ED40C)); sub_80ED4A0(this); CreateTask(sub_80ED428, 0); @@ -1050,22 +1055,22 @@ static void sub_80ED188(struct IntroSequenceData * this) ShowBg(3); ShowBg(1); ShowBg(2); - this->field_0004++; + this->state++; } break; case 5: if (!IsDma3ManagerBusyWithBgCopy()) { - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 6: - this->field_0012++; - if (this->field_0012 >= 60) + this->timer++; + if (this->timer >= 60) { DestroyTask(FindTaskIdByFunc(sub_80ED428)); - sub_80ECAA8(this, sub_80ED4C0); + SetIntroCB(this, sub_80ED4C0); } break; } @@ -1083,37 +1088,37 @@ static void sub_80ED428(u8 taskId) ChangeBgY(1, 0x024, 2); } -static void sub_80ED444(struct IntroSequenceData * this) +static void CreateMonStaticSprites(struct IntroSequenceData * this) { u8 spriteId; - this->field_001C = NULL; - this->field_0020 = NULL; + this->gengarStaticSprite = NULL; + this->nidorinoStaticSprite = NULL; - spriteId = CreateSprite(&gUnknown_840BDA8, 168, 80, 11); + spriteId = CreateSprite(&sSpriteTemplate_NidorinoStatic, 168, 80, 11); if (spriteId != MAX_SPRITES) - this->field_0020 = &gSprites[spriteId]; + this->nidorinoStaticSprite = &gSprites[spriteId]; - spriteId = CreateSprite(&gUnknown_840BDC0, 72, 80, 12); + spriteId = CreateSprite(&sSpriteTemplate_GengarStatic, 72, 80, 12); if (spriteId != MAX_SPRITES) - this->field_001C = &gSprites[spriteId]; + this->gengarStaticSprite = &gSprites[spriteId]; } static void sub_80ED4A0(struct IntroSequenceData * this) { - if (this->field_001C != NULL) - DestroySprite(this->field_001C); - if (this->field_0020 != NULL) - DestroySprite(this->field_0020); + if (this->gengarStaticSprite != NULL) + DestroySprite(this->gengarStaticSprite); + if (this->nidorinoStaticSprite != NULL) + DestroySprite(this->nidorinoStaticSprite); } static void sub_80ED4C0(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: LoadPalette(gUnknown_8407430, 0x10, 0x40); - LoadPalette(gUnknown_8405DA4, 0x50, 0x20); + LoadPalette(sSpritePals_Gengar, 0x50, 0x20); BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); InitBgsFromTemplates(0, gUnknown_840BBA0, NELEMS(gUnknown_840BBA0)); DecompressAndCopyTileDataToVram(1, gUnknown_8407470, 0, 0, 0); @@ -1123,7 +1128,7 @@ static void sub_80ED4C0(struct IntroSequenceData * this) HideBg(2); HideBg(3); ResetBgPositions(); - this->field_0004++; + this->state++; SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); SetGpuRegBits(REG_OFFSET_WININ, 0x12); ClearGpuRegBits(REG_OFFSET_WININ, 0x01); @@ -1140,7 +1145,7 @@ static void sub_80ED4C0(struct IntroSequenceData * this) gUnknown_203AB02 = 52; ChangeBgX(0, 0x00001800, 0); ChangeBgY(0, 0x0001F000, 0); - this->field_0004++; + this->state++; } break; case 2: @@ -1149,20 +1154,20 @@ static void sub_80ED4C0(struct IntroSequenceData * this) BlendPalettes(0xFFFFFFFE, 0, RGB_WHITE); ShowBg(0); CreateTask(sub_80ED714, 0); - sub_80EE4F8(this); - sub_80EE528(this->field_0018, 0, 0xB4, 0x34); + CreateNidorinoAnimSprite(this); + sub_80EE528(this->nidorinoAnimSprite, 0, 0xB4, 0x34); CreateTask(sub_80EE200, 0); sub_80ED6D8(); - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 3: - this->field_0012++; - if (this->field_0012 == 16) - sub_80ED7D4(this); + this->timer++; + if (this->timer == 16) + CreateGrassSprite(this); if (!sub_80EE5C8(this) && !FuncIsActiveTask(sub_80EE200)) - sub_80ECAA8(this, sub_80ED898); + SetIntroCB(this, sub_80ED898); break; } } @@ -1219,19 +1224,19 @@ static u8 sub_80ED7B0(void) return gTasks[taskId].data[2]; } -static void sub_80ED7D4(struct IntroSequenceData * this) +static void CreateGrassSprite(struct IntroSequenceData * this) { - u8 spriteId = CreateSprite(&gUnknown_840BDFC, 296, 112, 7); + u8 spriteId = CreateSprite(&sSpriteTemplate_Grass, 296, 112, 7); if (spriteId != MAX_SPRITES) { - this->field_0024 = &gSprites[spriteId]; - this->field_0024->callback = sub_80ED818; + this->grassSprite = &gSprites[spriteId]; + this->grassSprite->callback = SpriteCB_Grass; } else - this->field_0024 = NULL; + this->grassSprite = NULL; } -static void sub_80ED818(struct Sprite * sprite) +static void SpriteCB_Grass(struct Sprite * sprite) { s16 * data = sprite->data; @@ -1266,137 +1271,137 @@ static void sub_80ED818(struct Sprite * sprite) static void sub_80ED898(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; break; case 1: - this->field_0012++; - if (this->field_0012 > 30) + this->timer++; + if (this->timer > 30) { sub_80EE5E4(this); - this->field_0004++; + this->state++; } break; case 2: if (!sub_80EE850(this)) { - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 3: - this->field_0012++; - if (this->field_0012 > 30) + this->timer++; + if (this->timer > 30) { sub_80ED760(); sub_80EDF94(this); - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 4: if (this->field_0006) { sub_80EE6A4(this); - this->field_0004++; + this->state++; } break; case 5: if (!sub_80EE850(this)) { sub_80ED788(); - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 6: - this->field_0012++; - if (this->field_0012 > 16) + this->timer++; + if (this->timer > 16) { - sub_80EE970(this->field_0018, 8, 12, 5); - this->field_0004++; + sub_80EE970(this->nidorinoAnimSprite, 8, 12, 5); + this->state++; } break; case 7: if (!sub_80EE850(this)) { - sub_80EE970(this->field_0018, 8, 12, 5); - this->field_0004++; + sub_80EE970(this->nidorinoAnimSprite, 8, 12, 5); + this->state++; } break; case 8: if (!sub_80EE850(this)) { - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 9: - this->field_0012++; - if (this->field_0012 > 20) + this->timer++; + if (this->timer > 20) { sub_80EEA94(this); - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 10: if (!sub_80ED7B0()) { sub_80ED760(); - sub_80EDAF0(this); - this->field_0004++; + CreateGengarBackSprite(this); + this->state++; } break; case 11: HideBg(0); - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; break; case 12: - this->field_0012++; - if (this->field_0012 == 48) + this->timer++; + if (this->timer == 48) BeginNormalPaletteFade(0x00000006, 2, 0, 16, RGB_WHITE); - if (this->field_0012 > 120) + if (this->timer > 120) { sub_80EDB70(this); sub_80EDBAC(this); - this->field_0004++; - this->field_0012 = 0; + this->state++; + this->timer = 0; } break; case 13: - this->field_0012++; - if (this->field_0012 > 8) + this->timer++; + if (this->timer > 8) { CpuFill16(RGB_WHITE, gPlttBufferUnfaded + 16, 64); BeginNormalPaletteFade(0xFFFFFFFE, -2, 0, 16, RGB_BLACK); - this->field_0004++; + this->state++; } break; case 14: if (!gPaletteFade.active) { - this->field_0012 = 0; - this->field_0004++; + this->timer = 0; + this->state++; } break; case 15: - this->field_0012++; - if (this->field_0012 > 60) - sub_80ECAA8(this, sub_80EDBE8); + this->timer++; + if (this->timer > 60) + SetIntroCB(this, sub_80EDBE8); break; default: if (JOY_NEW(R_BUTTON)) { BlendPalettes(0xFFFF0064, 0, RGB_WHITE); - this->field_0018->pos2.x = 0; - this->field_0018->pos1.x = 0xB4; - this->field_0004 = 1; - this->field_0012 = 30; + this->nidorinoAnimSprite->pos2.x = 0; + this->nidorinoAnimSprite->pos1.x = 0xB4; + this->state = 1; + this->timer = 30; } break; } @@ -1407,33 +1412,34 @@ static void sub_80EDAD8(struct Sprite * sprite) CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } -static void sub_80EDAF0(struct IntroSequenceData * this) +static void CreateGengarBackSprite(struct IntroSequenceData * this) { int i; + // Not using a subsprite table for this for (i = 0; i < 4; i++) { int x = (i & 1) * 48 + 49; int y = (i / 2) * 64 + 72; - u8 spriteId = CreateSprite(&gUnknown_840BE4C, x, y, 8); + u8 spriteId = CreateSprite(&sSpriteTemplate_GengarBack, x, y, 8); if (spriteId != MAX_SPRITES) { StartSpriteAnim(&gSprites[spriteId], i); - this->field_0028[i] = &gSprites[spriteId]; + this->gengarBackSpriteArray[i] = &gSprites[spriteId]; if (i & 1) - this->field_0028[i]->oam.shape = ST_OAM_V_RECTANGLE; - sub_80EDAD8(this->field_0028[i]); + this->gengarBackSpriteArray[i]->oam.shape = ST_OAM_V_RECTANGLE; + sub_80EDAD8(this->gengarBackSpriteArray[i]); } } } static void sub_80EDB70(struct IntroSequenceData * this) { - this->field_0018->pos1.x += this->field_0018->pos2.x; - this->field_0018->pos1.y += this->field_0018->pos2.y; - obj_pos2_update_enable(this->field_0018, 0, 0x2A); - this->field_0018->callback = SpriteCallbackDummy; - StartSpriteAffineAnim(this->field_0018, 1); + this->nidorinoAnimSprite->pos1.x += this->nidorinoAnimSprite->pos2.x; + this->nidorinoAnimSprite->pos1.y += this->nidorinoAnimSprite->pos2.y; + obj_pos2_update_enable(this->nidorinoAnimSprite, 0, 0x2A); + this->nidorinoAnimSprite->callback = SpriteCallbackDummy; + StartSpriteAffineAnim(this->nidorinoAnimSprite, 1); } static void nullsub_83(struct Sprite * sprite) @@ -1446,19 +1452,19 @@ static void sub_80EDBAC(struct IntroSequenceData * this) for (i = 0; i < 4; i++) { - StartSpriteAffineAnim(this->field_0028[i], 1); - this->field_0028[i]->callback = nullsub_83; - obj_pos2_update_enable(this->field_0028[i], gUnknown_840BBB8[i][0], gUnknown_840BBB8[i][1]); + StartSpriteAffineAnim(this->gengarBackSpriteArray[i], 1); + this->gengarBackSpriteArray[i]->callback = nullsub_83; + obj_pos2_update_enable(this->gengarBackSpriteArray[i], gUnknown_840BBB8[i][0], gUnknown_840BBB8[i][1]); } } static void sub_80EDBE8(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: FillPalette(RGB_BLACK, 0, 0x400); - this->field_0004++; + this->state++; break; case 1: if (!FreeTempTileDataBuffersIfPossible()) @@ -1473,16 +1479,16 @@ static void sub_80EDBE8(struct IntroSequenceData * this) } } -static void sub_80EDC40(void) +static void GameFreakScene_LoadGfxCreateStar(void) { int i; u8 spriteId; - for (i = 0; i < NELEMS(gUnknown_840BBC0); i++) + for (i = 0; i < NELEMS(sSpriteSheets_GameFreakScene); i++) { - LoadCompressedSpriteSheet(&gUnknown_840BBC0[i]); + LoadCompressedSpriteSheet(&sSpriteSheets_GameFreakScene[i]); } - LoadSpritePalettes(gUnknown_840BBE8); + LoadSpritePalettes(sSpritePalettes_GameFreakScene); gUnknown_203AB0E = 0x60; gUnknown_203AB10 = 0x10; gUnknown_203AB12 = 0x07; @@ -1496,18 +1502,18 @@ static void sub_80EDC40(void) gUnknown_203AB24 = 0x05; if (gUnknown_203AB28 == 0) gUnknown_203AB28 = 354128453; - spriteId = CreateSprite(&gUnknown_840BC6C, 0xF8, 0x37, 0); + spriteId = CreateSprite(&sSpriteTemplate_LargeStar, 0xF8, 0x37, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].data[0] = 0xF80; gSprites[spriteId].data[1] = 0x370; gSprites[spriteId].data[2] = gUnknown_203AB0E; gSprites[spriteId].data[3] = gUnknown_203AB10; - StoreWordInTwoHalfwords(&gSprites[spriteId].data[6], gUnknown_203AB28); + StoreWordInTwoHalfwords((u16 *)&gSprites[spriteId].data[6], gUnknown_203AB28); } } -static void sub_80EDD28(s16 x, s16 y, u16 a2) +static void GameFreakScene_TrailingSparklesGen(s16 x, s16 y, u16 a2) { u8 spriteId; s16 r4 = (a2 & gUnknown_203AB12) + 2; @@ -1519,7 +1525,7 @@ static void sub_80EDD28(s16 x, s16 y, u16 a2) y += r2; if (x >= 1 && x <= 0xEF) { - spriteId = CreateSprite(&gUnknown_840BC84, x, y, 1); + spriteId = CreateSprite(&sSpriteTemplate_TrailingSparkles, x, y, 1); if (spriteId != MAX_SPRITES) { gSprites[spriteId].data[0] = x << gUnknown_203AB22; @@ -1530,12 +1536,12 @@ static void sub_80EDD28(s16 x, s16 y, u16 a2) } } -static void sub_80EDDF0(void) +static void GameFreakScene_StartTrailingSparkleSpawner(void) { - CreateTask(sub_80EDE04, 1); + CreateTask(Task_GameFreakScene_TrailingSparkleSpawner, 1); } -static void sub_80EDE04(u8 taskId) +static void Task_GameFreakScene_TrailingSparkleSpawner(u8 taskId) { s16 * data = gTasks[taskId].data; u8 r6; @@ -1546,16 +1552,16 @@ static void sub_80EDE04(u8 taskId) { data[2] = 0; r6 = data[0]; - spriteId = CreateSprite(&gUnknown_840BC84, gUnknown_840BC08[r6].x, gUnknown_840BC08[r6].y, 2); + spriteId = CreateSprite(&sSpriteTemplate_TrailingSparkles, sTrailingSparkleCoords[r6].x, sTrailingSparkleCoords[r6].y, 2); StartSpriteAnim(&gSprites[spriteId], 1); gSprites[spriteId].callback = sub_80EE40C; - gSprites[spriteId].data[1] = gUnknown_840BC08[r6].y << 4; + gSprites[spriteId].data[1] = sTrailingSparkleCoords[r6].y << 4; gSprites[spriteId].data[2] = 120; gSprites[spriteId].data[3] = data[1]; if (gSprites[spriteId].data[3] < 0) gSprites[spriteId].data[3] = 1; data[0]++; - if (data[0] < 0 || data[0] > 8) + if (data[0] >= NELEMS(sTrailingSparkleCoords)) { data[1]++; if (data[1] > 1) @@ -1566,12 +1572,12 @@ static void sub_80EDE04(u8 taskId) } } -static void sub_80EDED8(void) +static void GameFreakScene_StartRevealGameFreakTextSparklesSpawner(void) { - CreateTask(sub_80EDEEC, 2); + CreateTask(Task_RevealGameFreakTextSparklesSpawner, 2); } -static void sub_80EDEEC(u8 taskId) +static void Task_RevealGameFreakTextSparklesSpawner(u8 taskId) { s16 * data = gTasks[taskId].data; u8 r2; @@ -1580,9 +1586,9 @@ static void sub_80EDEEC(u8 taskId) { r2 = data[1]; data[1] += 4; - if (data[1] < 0 || data[1] > 8) - data[1] -= 9; - CreateSprite(&gUnknown_840BCBC, gUnknown_840BC08[r2].x, gUnknown_840BC08[r2].y, 3); + if (data[1] >= NELEMS(sTrailingSparkleCoords)) + data[1] -= NELEMS(sTrailingSparkleCoords); + CreateSprite(&sSpriteTemplate_RevealGameFreakTextSparkles, sTrailingSparkleCoords[r2].x, sTrailingSparkleCoords[r2].y, 3); data[2]++; if (data[2] > 8) DestroyTask(taskId); @@ -1592,19 +1598,19 @@ static void sub_80EDEEC(u8 taskId) data[0] = 0; } -static struct Sprite * sub_80EDF68(void) +static struct Sprite * CreateGameFreakLogoArtSprite(void) { - u8 spriteId = CreateSprite(&gUnknown_840BCDC, 120, 70, 4); + u8 spriteId = CreateSprite(&sSpriteTemplate_GameFreakLogoArt, 120, 70, 4); return &gSprites[spriteId]; } #if REVISION >= 1 -static void sub_rev1_80EDFAC(void) +static void Rev1_GameFreakScene_CreatePresentsText(void) { int i; for (i = 0; i < 2; i++) { - gSprites[CreateSprite(&gUnknown_840BCFC, 0x68 + 32 * i, 0x6c, 5)].oam.tileNum += i * 4; + gSprites[CreateSprite(&sSpriteTemplate_PresentsText, 0x68 + 32 * i, 0x6c, 5)].oam.tileNum += i * 4; } } #endif @@ -1701,8 +1707,8 @@ static void sub_80EE160(void) { u8 spriteId; - spriteId = CreateSprite(&gUnknown_840BE8C, 132, 78, 6); - spriteId = CreateSprite(&gUnknown_840BE8C, 132, 118, 6); + spriteId = CreateSprite(&sSpriteTemplate_GengarSwipe, 132, 78, 6); + spriteId = CreateSprite(&sSpriteTemplate_GengarSwipe, 132, 118, 6); if (spriteId != MAX_SPRITES) { gSprites[spriteId].oam.shape = ST_OAM_H_RECTANGLE; @@ -1761,7 +1767,7 @@ static void sub_80EE29C(struct Sprite * sprite) v = v * 1103515245 + 24691; StoreWordInTwoHalfwords(&sprite->data[6], v); v >>= 16; - sub_80EDD28(sprite->pos1.x, sprite->pos1.y + sprite->pos2.y, v); + GameFreakScene_TrailingSparklesGen(sprite->pos1.x, sprite->pos1.y + sprite->pos2.y, v); } if (sprite->pos1.x < -8) DestroySprite(sprite); @@ -1845,10 +1851,10 @@ static void sub_80EE4DC(struct Sprite * sprite) DestroySprite(sprite); } -static void sub_80EE4F8(struct IntroSequenceData * this) +static void CreateNidorinoAnimSprite(struct IntroSequenceData * this) { - u8 spriteId = CreateSprite(&gUnknown_840BD88, 0, 0, 9); - this->field_0018 = &gSprites[spriteId]; + u8 spriteId = CreateSprite(&sSpriteTemplate_NidorinoAnim, 0, 0, 9); + this->nidorinoAnimSprite = &gSprites[spriteId]; } static void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3) @@ -1882,16 +1888,16 @@ static void sub_80EE580(struct Sprite * sprite) static bool32 sub_80EE5C8(struct IntroSequenceData * ptr) { - return ptr->field_0018->callback == sub_80EE580 ? TRUE : FALSE; + return ptr->nidorinoAnimSprite->callback == sub_80EE580 ? TRUE : FALSE; } static void sub_80EE5E4(struct IntroSequenceData * ptr) { - StartSpriteAnim(ptr->field_0018, 2); - ptr->field_0018->data[0] = 0; - ptr->field_0018->data[1] = 0; - ptr->field_0018->pos2.y = 3; - ptr->field_0018->callback = sub_80EE610; + StartSpriteAnim(ptr->nidorinoAnimSprite, 2); + ptr->nidorinoAnimSprite->data[0] = 0; + ptr->nidorinoAnimSprite->data[1] = 0; + ptr->nidorinoAnimSprite->pos2.y = 3; + ptr->nidorinoAnimSprite->callback = sub_80EE610; } static void sub_80EE610(struct Sprite * sprite) @@ -1936,14 +1942,14 @@ static void sub_80EE6A4(struct IntroSequenceData * ptr) gUnknown_203AB04 = 3; gUnknown_203AB08 = 5; gUnknown_203AB06 = 0; - StartSpriteAnim(ptr->field_0018, 2); - ptr->field_0018->data[0] = 0; - ptr->field_0018->data[1] = 0; - ptr->field_0018->data[2] = 0; - ptr->field_0018->data[3] = 0; - ptr->field_0018->data[4] = 0; - ptr->field_0018->data[7] = 40; - ptr->field_0018->callback = sub_80EE704; + StartSpriteAnim(ptr->nidorinoAnimSprite, 2); + ptr->nidorinoAnimSprite->data[0] = 0; + ptr->nidorinoAnimSprite->data[1] = 0; + ptr->nidorinoAnimSprite->data[2] = 0; + ptr->nidorinoAnimSprite->data[3] = 0; + ptr->nidorinoAnimSprite->data[4] = 0; + ptr->nidorinoAnimSprite->data[7] = 40; + ptr->nidorinoAnimSprite->callback = sub_80EE704; } static void sub_80EE704(struct Sprite * sprite) @@ -1985,7 +1991,7 @@ static void sub_80EE704(struct Sprite * sprite) sprite->data[1]++; if (sprite->data[1] > 6) { - sub_80EE864(sprite->pos1.x + sprite->pos2.x, sprite->pos1.y + sprite->pos2.y, sprite->data[6]); + CreateNidorinoRecoilDustSprites(sprite->pos1.x + sprite->pos2.x, sprite->pos1.y + sprite->pos2.y, sprite->data[6]); sprite->data[6] *= 1103515245; } if (sprite->data[1] > 12) @@ -2007,23 +2013,23 @@ static void sub_80EE704(struct Sprite * sprite) static bool8 sub_80EE850(struct IntroSequenceData * ptr) { - return ptr->field_0018->callback == SpriteCallbackDummy ? FALSE : TRUE; + return ptr->nidorinoAnimSprite->callback == SpriteCallbackDummy ? FALSE : TRUE; } -static void sub_80EE864(s16 a1, s16 a2, s16 a3) +static void CreateNidorinoRecoilDustSprites(s16 x, s16 y, s16 seed) { int i; u8 spriteId; for (i = 0; i < 2; i++) { - spriteId = CreateSprite(&gUnknown_840BEC4, a1 - 22, a2 + 24, 10); + spriteId = CreateSprite(&sSpriteTemplate_NidorinoRecoilDust, x - 22, y + 24, 10); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[3] = (a3 % 13) + 8; - gSprites[spriteId].data[4] = a3 % 3; + gSprites[spriteId].data[3] = (seed % 13) + 8; + gSprites[spriteId].data[4] = seed % 3; gSprites[spriteId].data[7] = i; - a3 *= 1103515245; + seed *= 1103515245; } } } @@ -2119,21 +2125,21 @@ static void sub_80EE9D4(struct Sprite * sprite) static void sub_80EEA94(struct IntroSequenceData * ptr) { - ptr->field_0018->data[0] = 0; - ptr->field_0018->data[1] = 0; - ptr->field_0018->data[2] = 0; - ptr->field_0018->data[3] = 0; - ptr->field_0018->data[4] = 0; - ptr->field_0018->data[5] = 0; - ptr->field_0018->pos1.x += ptr->field_0018->pos2.x; - ptr->field_0018->pos2.x = 0; + ptr->nidorinoAnimSprite->data[0] = 0; + ptr->nidorinoAnimSprite->data[1] = 0; + ptr->nidorinoAnimSprite->data[2] = 0; + ptr->nidorinoAnimSprite->data[3] = 0; + ptr->nidorinoAnimSprite->data[4] = 0; + ptr->nidorinoAnimSprite->data[5] = 0; + ptr->nidorinoAnimSprite->pos1.x += ptr->nidorinoAnimSprite->pos2.x; + ptr->nidorinoAnimSprite->pos2.x = 0; gUnknown_203AB0C = 0x24; gUnknown_203AB06 = 0x28; gUnknown_203AB04 = 0x03; gUnknown_203AB08 = 0x04; - ptr->field_0018->data[7] = 36; - StartSpriteAnim(ptr->field_0018, 2); - ptr->field_0018->callback = sub_80EEB08; + ptr->nidorinoAnimSprite->data[7] = 36; + StartSpriteAnim(ptr->nidorinoAnimSprite, 2); + ptr->nidorinoAnimSprite->callback = sub_80EEB08; } static void sub_80EEB08(struct Sprite * sprite) @@ -2182,11 +2188,11 @@ static void sub_80EEBE4(void) { int i; - for (i = 0; i < NELEMS(gUnknown_840BEDC); i++) + for (i = 0; i < NELEMS(sFightSceneSpriteSheets); i++) { - LoadCompressedSpriteSheet(&gUnknown_840BEDC[i]); + LoadCompressedSpriteSheet(&sFightSceneSpriteSheets[i]); } - // gUnknown_840BF14 is not properly terminated, so this + // sFightSceneSpritePalettes is not properly terminated, so this // call exhibits undefined behavior. - LoadSpritePalettes(gUnknown_840BF14); + LoadSpritePalettes(sFightSceneSpritePalettes); } -- cgit v1.2.3 From c60821d3fb5d9e3889e2d5056b7c667776bbd669 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Apr 2020 20:37:25 -0400 Subject: Name remaining subroutines in intro.c --- src/intro.c | 400 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 200 insertions(+), 200 deletions(-) (limited to 'src/intro.c') diff --git a/src/intro.c b/src/intro.c index 6a86144a6..7d2bbc7bb 100644 --- a/src/intro.c +++ b/src/intro.c @@ -85,56 +85,56 @@ static void IntroCB_OpenWin1ToTheaterDimensions(struct IntroSequenceData * ptr); static void IntroCB_GameFreakStar(struct IntroSequenceData * ptr); static void IntroCB_GameFreakScene_RevealGameFreakText(struct IntroSequenceData * ptr); static void IntroCB_GameFreakScene_CreateGameFreakLogo(struct IntroSequenceData * ptr); -static void IntroCB_FightScene1_Init(struct IntroSequenceData * ptr); -static void sub_80ED0AC(u8 taskId); -static void sub_80ED118(void); -static void sub_80ED140(u8 taskId); -static void sub_80ED188(struct IntroSequenceData * ptr); -static void sub_80ED40C(u8 taskId); -static void sub_80ED428(u8 taskId); +static void IntroCB_FightScene(struct IntroSequenceData * ptr); +static void Task_FightScene1_GrassyFieldAnim(u8 taskId); +static void FightScene1_SignalEndGrassyFieldAnim(void); +static void Task_FightScene1_ZoomEffect(u8 taskId); +static void IntroCB_FightScene2(struct IntroSequenceData * ptr); +static void Task_FightScene2_CameraHorizPanEffect(u8 taskId); +static void Task_FightScene2_CameraVertPanEffect(u8 taskId); static void CreateMonStaticSprites(struct IntroSequenceData * ptr); -static void sub_80ED4A0(struct IntroSequenceData * ptr); -static void sub_80ED4C0(struct IntroSequenceData * ptr); -static void sub_80ED6D8(void); -static void sub_80ED714(u8 taskId); +static void DestroyStaticMonSprites(struct IntroSequenceData * ptr); +static void IntroCB_FightScene3(struct IntroSequenceData * ptr); +static void FightScene3_StartBg1Scroll(void); +static void Task_FightScene3_ForestBgScroll(u8 taskId); static void CreateGrassSprite(struct IntroSequenceData * ptr); static void SpriteCB_Grass(struct Sprite * sprite); -static void sub_80ED898(struct IntroSequenceData * ptr); +static void IntroCB_FightScene4(struct IntroSequenceData * ptr); static void CreateGengarBackSprite(struct IntroSequenceData * ptr); -static void sub_80EDB70(struct IntroSequenceData * ptr); -static void sub_80EDBAC(struct IntroSequenceData * ptr); -static void sub_80EDBE8(struct IntroSequenceData * ptr); +static void FightScene4_StartNidorinoAffineAnim(struct IntroSequenceData * ptr); +static void FightScene4_StartGengarAffineAnim(struct IntroSequenceData * ptr); +static void IntroCB_CleanUp(struct IntroSequenceData * ptr); static void GameFreakScene_LoadGfxCreateStar(void); static void GameFreakScene_StartTrailingSparkleSpawner(void); static void Task_GameFreakScene_TrailingSparkleSpawner(u8 taskId); static void GameFreakScene_StartRevealGameFreakTextSparklesSpawner(void); static void Task_RevealGameFreakTextSparklesSpawner(u8 taskId); static struct Sprite * CreateGameFreakLogoArtSprite(void); -static void sub_80EDF94(struct IntroSequenceData * ptr); -static void sub_80EE024(u8 taskId); -static void sub_80EE160(void); -static void sub_80EE1C4(struct Sprite * sprite); -static void sub_80EE200(u8 taskId); -static void sub_80EE29C(struct Sprite * sprite); -static void sub_80EE350(struct Sprite * sprite); -static void sub_80EE40C(struct Sprite * sprite); -static void sub_80EE4DC(struct Sprite * sprite); +static void FightScene4_StartGengarAttack(struct IntroSequenceData * ptr); +static void Task_FightScene4_GengarAttack(u8 taskId); +static void FightScene4_CreateGengarSwipeSprites(void); +static void SpriteCB_GengarSwipe(struct Sprite * sprite); +static void Task_FightScene3_Bg0Scroll(u8 taskId); +static void SpriteCB_LargeStar(struct Sprite * sprite); +static void SpriteCB_TrailingSparkles(struct Sprite * sprite); +static void SpriteCB_TrailingSparkles2(struct Sprite * sprite); +static void SpriteCB_RevealGameFreakTextSparkles(struct Sprite * sprite); static void CreateNidorinoAnimSprite(struct IntroSequenceData * ptr); -static void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3); -static void sub_80EE580(struct Sprite * sprite); -static bool32 sub_80EE5C8(struct IntroSequenceData * ptr); -static void sub_80EE5E4(struct IntroSequenceData * ptr); -static void sub_80EE610(struct Sprite * sprite); -static void sub_80EE6A4(struct IntroSequenceData * ptr); -static void sub_80EE704(struct Sprite * sprite); -static bool8 sub_80EE850(struct IntroSequenceData * ptr); +static void StartNidorinoAnimSpriteSlideIn(struct Sprite * sprite, s16 x0, s16 x1, u16 speed); +static void SpriteCB_NidorinoAnimSpriteSlideIn(struct Sprite * sprite); +static bool32 IsNidorinoAnimSpriteSlideInRunning(struct IntroSequenceData * ptr); +static void FightScene4_NidorinoRearsUp(struct IntroSequenceData * ptr); +static void SpriteCB_NidorinoRearsUp(struct Sprite * sprite); +static void FightScene4_StartNidorinoRecoilAnim(struct IntroSequenceData * ptr); +static void SpriteCB_NidorinoRecoil(struct Sprite * sprite); +static bool8 FightScene4_NidorinoAnimIsRunning(struct IntroSequenceData * ptr); static void CreateNidorinoRecoilDustSprites(s16 a1, s16 a2, s16 a3); -static void sub_80EE8E4(struct Sprite * sprite); -static void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3); -static void sub_80EE9D4(struct Sprite * sprite); -static void sub_80EEA94(struct IntroSequenceData * ptr); -static void sub_80EEB08(struct Sprite * sprite); -static void sub_80EEBE4(void); +static void SpriteCB_NidorinoRecoilDust(struct Sprite * sprite); +static void StartSpriteHopToPosAnim(struct Sprite * sprite, u16 a1, s16 a2, u8 a3); +static void SpriteCB_HopToPos(struct Sprite * sprite); +static void StartNidorinoAnim_LaunchSelfAtGengarAnim(struct IntroSequenceData * ptr); +static void SpriteCB_NidorinoAnim_LaunchSelfAtGengar(struct Sprite * sprite); +static void LoadFightSceneSpriteTilesAndPals(void); #if REVISION >= 1 static void Rev1_GameFreakScene_CreatePresentsText(void); #else @@ -159,28 +159,28 @@ static const u32 sSpriteTiles_TrailingSparkles[] = INCBIN_U32("graphics/intro/un static const u32 sSpriteTiles_RevealGameFreakTextSparkles[] = INCBIN_U32("graphics/intro/unk_8402B2C.4bpp.lz"); static const u32 sSpriteTiles_PresentsText[] = INCBIN_U32("graphics/intro/unk_8402CD4.4bpp.lz"); static const u16 gUnknown_8402D34[] = INCBIN_U16("graphics/intro/unk_8402D34.gbapal"); -static const u8 gUnknown_8402D54[] = INCBIN_U8("graphics/intro/unk_8402D54.4bpp.lz"); -static const u8 gUnknown_8403FE8[] = INCBIN_U8("graphics/intro/unk_8403FE8.bin.lz"); +static const u8 sBg0Tiles_FightScene1[] = INCBIN_U8("graphics/intro/unk_8402D54.4bpp.lz"); +static const u8 sBg0Map_FightScene1[] = INCBIN_U8("graphics/intro/unk_8403FE8.bin.lz"); static const u16 gUnknown_84048CC[] = INCBIN_U16("graphics/intro/unk_84048CC.gbapal"); -static const u8 gUnknown_84048EC[] = INCBIN_U8("graphics/intro/unk_84048EC.4bpp.lz"); -static const u8 gUnknown_8404F7C[] = INCBIN_U8("graphics/intro/unk_8404F7C.bin.lz"); +static const u8 sBg1Tiles_FightScene1[] = INCBIN_U8("graphics/intro/unk_84048EC.4bpp.lz"); +static const u8 sBg1Map_FightScene1[] = INCBIN_U8("graphics/intro/unk_8404F7C.bin.lz"); static const u16 gUnknown_84053B4[] = INCBIN_U16("graphics/intro/unk_84053B4.gbapal"); -static const u8 gUnknown_8405414[] = INCBIN_U8("graphics/intro/unk_8405414.4bpp.lz"); -static const u8 gUnknown_8405890[] = INCBIN_U8("graphics/intro/unk_8405890.bin.lz"); +static const u8 sBg3Tiles_FightScene2[] = INCBIN_U8("graphics/intro/unk_8405414.4bpp.lz"); +static const u8 sBg3Map_FightScene2[] = INCBIN_U8("graphics/intro/unk_8405890.bin.lz"); static const u16 gUnknown_8405B08[] = INCBIN_U16("graphics/intro/unk_8405B08.gbapal"); -static const u8 gUnknown_8405B28[] = INCBIN_U8("graphics/intro/unk_8405B28.4bpp.lz"); -static const u8 gUnknown_8405CDC[] = INCBIN_U8("graphics/intro/unk_8405CDC.bin.lz"); +static const u8 sBg0Tiles_FightScene2[] = INCBIN_U8("graphics/intro/unk_8405B28.4bpp.lz"); +static const u8 sBg0Map_FightScene2[] = INCBIN_U8("graphics/intro/unk_8405CDC.bin.lz"); static const u16 sSpritePals_Gengar[] = INCBIN_U16("graphics/intro/unk_8405DA4.gbapal"); -static const u8 gUnknown_8405DC4[] = INCBIN_U8("graphics/intro/unk_8405DC4.4bpp.lz"); -static const u8 gUnknown_840644C[] = INCBIN_U8("graphics/intro/unk_840644C.bin.lz"); +static const u8 sBg2Tiles_FightScene2[] = INCBIN_U8("graphics/intro/unk_8405DC4.4bpp.lz"); +static const u8 sBg2Map_FightScene2[] = INCBIN_U8("graphics/intro/unk_840644C.bin.lz"); static const u16 gUnknown_8406634[] = INCBIN_U16("graphics/intro/unk_8406634.gbapal"); -static const u8 gUnknown_8406654[] = INCBIN_U8("graphics/intro/unk_8406654.4bpp.lz"); -static const u8 gUnknown_84071D0[] = INCBIN_U8("graphics/intro/unk_84071D0.bin.lz"); +static const u8 sBg1Tiles_FightScene2[] = INCBIN_U8("graphics/intro/unk_8406654.4bpp.lz"); +static const u8 sBg1Map_FightScene2[] = INCBIN_U8("graphics/intro/unk_84071D0.bin.lz"); static const u16 gUnknown_8407430[] = INCBIN_U16("graphics/intro/unk_8407430.gbapal"); -static const u8 gUnknown_8407470[] = INCBIN_U8("graphics/intro/unk_8407470.4bpp.lz"); -static const u8 gUnknown_8407A50[] = INCBIN_U8("graphics/intro/unk_8407A50.bin.lz"); -static const u8 gUnknown_8407B9C[] = INCBIN_U8("graphics/intro/unk_8407B9C.4bpp.lz"); -static const u8 gUnknown_8408D98[] = INCBIN_U8("graphics/intro/unk_8408D98.bin.lz"); +static const u8 sBg1Tiles_FightScene3[] = INCBIN_U8("graphics/intro/unk_8407470.4bpp.lz"); +static const u8 sBg1Map_FightScene3[] = INCBIN_U8("graphics/intro/unk_8407A50.bin.lz"); +static const u8 sBg0Tiles_FightScene3[] = INCBIN_U8("graphics/intro/unk_8407B9C.4bpp.lz"); +static const u8 sBg0Map_FightScene3[] = INCBIN_U8("graphics/intro/unk_8408D98.bin.lz"); static const u32 sSpriteTiles_GengarStatic[] = INCBIN_U32("graphics/intro/unk_840926C.4bpp.lz"); static const u16 sSpritePals_Nidorino[] = INCBIN_U16("graphics/intro/unk_84096AC.gbapal"); static const u32 sSpriteTiles_NidorinoStatic[] = INCBIN_U32("graphics/intro/unk_84096CC.4bpp.lz"); @@ -203,14 +203,14 @@ static const struct BgTemplate sBgTemplates_FightScene1[] = { { 1, 1, 30, 2, 0, 0, 0x000 } }; -static const struct BgTemplate gUnknown_840BB90[] = { +static const struct BgTemplate sBgTemplates_FightScene2[] = { { 3, 1, 30, 2, 0, 3, 0x000 }, { 0, 0, 29, 0, 0, 0, 0x000 }, { 2, 3, 27, 0, 0, 2, 0x000 }, { 1, 2, 28, 0, 0, 1, 0x000 } }; -static const struct BgTemplate gUnknown_840BBA0[] = { +static const struct BgTemplate sBgTemplates_FightScene3[] = { { 1, 0, 29, 0, 0, 1, 0x000 }, { 0, 1, 30, 2, 0, 0, 0x000 } }; @@ -279,9 +279,9 @@ static const union AnimCmd *const gAnimCmdTable_840BC64[] = { gAnimCmd_840BC50 }; -static const struct SpriteTemplate sSpriteTemplate_LargeStar = {0, 0, &gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80EE29C}; +static const struct SpriteTemplate sSpriteTemplate_LargeStar = {0, 0, &gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_LargeStar}; -static const struct SpriteTemplate sSpriteTemplate_TrailingSparkles = {1, 1, &gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, sub_80EE350}; +static const struct SpriteTemplate sSpriteTemplate_TrailingSparkles = {1, 1, &gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, SpriteCB_TrailingSparkles}; static const struct OamData gOamData_840BC9C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_2, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; @@ -297,7 +297,7 @@ static const union AnimCmd *const gAnimCmdTable_840BCB8[] = { gAnimCmd_840BCA4 }; -static const struct SpriteTemplate sSpriteTemplate_RevealGameFreakTextSparkles = {2, 1, &gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, sub_80EE4DC}; +static const struct SpriteTemplate sSpriteTemplate_RevealGameFreakTextSparkles = {2, 1, &gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, SpriteCB_RevealGameFreakTextSparkles}; static const struct OamData gOamData_840BCD4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; @@ -334,7 +334,7 @@ static const union AnimCmd gAnimCmd_840BD3C[] = { ANIMCMD_END }; -static const union AnimCmd *const gAnimCmdTable_840BD44[] = { +static const union AnimCmd *const sAnimTable_NidorinoAnim[] = { gAnimCmd_840BD1C, gAnimCmd_840BD24, gAnimCmd_840BD2C, @@ -353,12 +353,12 @@ static const union AffineAnimCmd gAffineAnimCmd_840BD68[] = { AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const gAffineAnimCmdTable_840BD80[] = { +static const union AffineAnimCmd *const sAffineAnimTable_NidorinoAnim[] = { gAffineAnimCmd_840BD58, gAffineAnimCmd_840BD68 }; -static const struct SpriteTemplate sSpriteTemplate_NidorinoAnim = {5, 7, &gOamData_840BD14, gAnimCmdTable_840BD44, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoAnim = {5, 7, &gOamData_840BD14, sAnimTable_NidorinoAnim, NULL, sAffineAnimTable_NidorinoAnim, SpriteCallbackDummy}; static const struct OamData gOamData_840BDA0 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; @@ -415,7 +415,7 @@ static const union AnimCmd *const gAnimCmdTable_840BE3C[] = { gAnimCmd_840BE34 }; -static const struct SpriteTemplate sSpriteTemplate_GengarBack = {9, 6, &gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_GengarBack = {9, 6, &gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, sAffineAnimTable_NidorinoAnim, SpriteCallbackDummy}; static const struct OamData gOamData_840BE64 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; @@ -436,7 +436,7 @@ static const union AnimCmd *const gAnimCmdTable_840BE84[] = { gAnimCmd_840BE78 }; -static const struct SpriteTemplate sSpriteTemplate_GengarSwipe = {10, 10, &gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, sub_80EE1C4}; +static const struct SpriteTemplate sSpriteTemplate_GengarSwipe = {10, 10, &gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, SpriteCB_GengarSwipe}; static const struct OamData gOamData_840BEA4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; @@ -452,7 +452,7 @@ static const union AnimCmd *const gAnimCmdTable_840BEC0[] = { gAnimCmd_840BEAC }; -static const struct SpriteTemplate sSpriteTemplate_NidorinoRecoilDust = {11, 11, &gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, sub_80EE8E4}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoRecoilDust = {11, 11, &gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, SpriteCB_NidorinoRecoilDust}; static const struct CompressedSpriteSheet sFightSceneSpriteSheets[] = { {sSpriteTiles_GengarStatic, 0x0800, 6}, @@ -465,7 +465,7 @@ static const struct CompressedSpriteSheet sFightSceneSpriteSheets[] = { }; // POTENTIAL UB -// This array is passed to LoadSpritePalettes in sub_80EEBE4. +// This array is passed to LoadSpritePalettes in LoadFightSceneSpriteTilesAndPals. // LoadSpritePalettes uses a {0} entry to signal end of array. // Because such an entry is absent in this case, the function // continues reading into the next .rodata section. @@ -478,7 +478,7 @@ static const struct SpritePalette sFightSceneSpritePalettes[] = { // {0} }; -static void sub_80EC5A4(void) +static void VBlankCB_Copyright(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -527,7 +527,7 @@ static bool8 RunCopyrightScreen(void) FreeAllSpritePalettes();BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF); SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(7)); EnableInterrupts(INTR_FLAG_VBLANK); - SetVBlankCallback(sub_80EC5A4); + SetVBlankCallback(VBlankCB_Copyright); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON); SetSerialCallback(SerialCb_CopyrightScreen); GameCubeMultiBoot_Init(&sGcmb); @@ -687,8 +687,8 @@ static void SetIntroCB(struct IntroSequenceData * ptr, IntroCallback cb) static void Task_CallIntroCallback(u8 taskId) { struct IntroSequenceData * ptr = (void *)GetWordTaskArg(taskId, 0); - if (JOY_NEW(A_BUTTON | START_BUTTON | SELECT_BUTTON) && ptr->callback != sub_80EDBE8) - SetIntroCB(ptr, sub_80EDBE8); + if (JOY_NEW(A_BUTTON | START_BUTTON | SELECT_BUTTON) && ptr->callback != IntroCB_CleanUp) + SetIntroCB(ptr, IntroCB_CleanUp); ptr->callback(ptr); } @@ -870,13 +870,13 @@ static void IntroCB_GameFreakScene_CreateGameFreakLogo(struct IntroSequenceData if (this->timer > 20) { SetGpuReg(REG_OFFSET_BLDCNT, 0); - SetIntroCB(this, IntroCB_FightScene1_Init); + SetIntroCB(this, IntroCB_FightScene); } break; } } -static void IntroCB_FightScene1_Init(struct IntroSequenceData * this) +static void IntroCB_FightScene(struct IntroSequenceData * this) { switch (this->state) { @@ -886,21 +886,21 @@ static void IntroCB_FightScene1_Init(struct IntroSequenceData * this) LoadPalette(gUnknown_84048CC, 0x20, 0x20); BlendPalettes(0x06, 0x10, RGB_WHITE); InitBgsFromTemplates(0, sBgTemplates_FightScene1, NELEMS(sBgTemplates_FightScene1)); - DecompressAndCopyTileDataToVram(1, gUnknown_84048EC, 0, 0, 0); - DecompressAndCopyTileDataToVram(1, gUnknown_8404F7C, 0, 0, 1); + DecompressAndCopyTileDataToVram(1, sBg1Tiles_FightScene1, 0, 0, 0); + DecompressAndCopyTileDataToVram(1, sBg1Map_FightScene1, 0, 0, 1); ShowBg(1); HideBg(0); HideBg(2); HideBg(3); - sub_80EEBE4(); + LoadFightSceneSpriteTilesAndPals(); SetVBlankCallback(VBlankCB_Intro); this->state++; break; case 1: if (!FreeTempTileDataBuffersIfPossible()) { - DecompressAndCopyTileDataToVram(0, gUnknown_8402D54, 0, 0, 0); - DecompressAndCopyTileDataToVram(0, gUnknown_8403FE8, 0, 0, 1); + DecompressAndCopyTileDataToVram(0, sBg0Tiles_FightScene1, 0, 0, 0); + DecompressAndCopyTileDataToVram(0, sBg0Map_FightScene1, 0, 0, 1); ResetBgPositions(); ShowBg(1); this->state++; @@ -910,7 +910,7 @@ static void IntroCB_FightScene1_Init(struct IntroSequenceData * this) if (!FreeTempTileDataBuffersIfPossible()) { ShowBg(0); - CreateTask(sub_80ED0AC, 0); + CreateTask(Task_FightScene1_GrassyFieldAnim, 0); BeginNormalPaletteFade(0x00000006, -2, 16, 0, RGB_WHITE); this->state++; } @@ -927,29 +927,29 @@ static void IntroCB_FightScene1_Init(struct IntroSequenceData * this) this->timer++; if (this->timer == 20) { - CreateTask(sub_80ED140, 0); - sub_80ED118(); + CreateTask(Task_FightScene1_ZoomEffect, 0); + FightScene1_SignalEndGrassyFieldAnim(); } if (this->timer >= 30) { BlendPalettes(-2, 16, RGB_WHITE); - DestroyTask(FindTaskIdByFunc(sub_80ED0AC)); - DestroyTask(FindTaskIdByFunc(sub_80ED140)); - SetIntroCB(this, sub_80ED188); + DestroyTask(FindTaskIdByFunc(Task_FightScene1_GrassyFieldAnim)); + DestroyTask(FindTaskIdByFunc(Task_FightScene1_ZoomEffect)); + SetIntroCB(this, IntroCB_FightScene2); } break; case 5: if (!gPaletteFade.active) { - DestroyTask(FindTaskIdByFunc(sub_80ED0AC)); - DestroyTask(FindTaskIdByFunc(sub_80ED140)); - SetIntroCB(this, sub_80ED188); + DestroyTask(FindTaskIdByFunc(Task_FightScene1_GrassyFieldAnim)); + DestroyTask(FindTaskIdByFunc(Task_FightScene1_ZoomEffect)); + SetIntroCB(this, IntroCB_FightScene2); } break; } } -static void sub_80ED0AC(u8 taskId) +static void Task_FightScene1_GrassyFieldAnim(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -969,13 +969,13 @@ static void sub_80ED0AC(u8 taskId) } } -static void sub_80ED118(void) +static void FightScene1_SignalEndGrassyFieldAnim(void) { - u8 taskId = FindTaskIdByFunc(sub_80ED0AC); + u8 taskId = FindTaskIdByFunc(Task_FightScene1_GrassyFieldAnim); gTasks[taskId].data[2] = TRUE; } -static void sub_80ED140(u8 taskId) +static void Task_FightScene1_ZoomEffect(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -989,15 +989,15 @@ static void sub_80ED140(u8 taskId) } } -static void sub_80ED188(struct IntroSequenceData * this) +static void IntroCB_FightScene2(struct IntroSequenceData * this) { switch (this->state) { case 0: BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); - InitBgsFromTemplates(0, gUnknown_840BB90, NELEMS(gUnknown_840BB90)); - DecompressAndCopyTileDataToVram(3, gUnknown_8405414, 0, 0, 0); - DecompressAndCopyTileDataToVram(3, gUnknown_8405890, 0, 0, 1); + InitBgsFromTemplates(0, sBgTemplates_FightScene2, NELEMS(sBgTemplates_FightScene2)); + DecompressAndCopyTileDataToVram(3, sBg3Tiles_FightScene2, 0, 0, 0); + DecompressAndCopyTileDataToVram(3, sBg3Map_FightScene2, 0, 0, 1); ShowBg(3); this->state++; break; @@ -1009,19 +1009,19 @@ static void sub_80ED188(struct IntroSequenceData * this) LoadPalette(sSpritePals_Gengar, 0x50, 0x20); LoadPalette(gUnknown_8406634, 0x60, 0x20); BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); - DecompressAndCopyTileDataToVram(0, gUnknown_8405B28, 0, 0, 0); - DecompressAndCopyTileDataToVram(0, gUnknown_8405CDC, 0, 0, 1); - DecompressAndCopyTileDataToVram(1, gUnknown_8406654, 0, 0, 0); - DecompressAndCopyTileDataToVram(1, gUnknown_84071D0, 0, 0, 1); - DecompressAndCopyTileDataToVram(2, gUnknown_8405DC4, 0, 0, 0); - DecompressAndCopyTileDataToVram(2, gUnknown_840644C, 0, 0, 1); + DecompressAndCopyTileDataToVram(0, sBg0Tiles_FightScene2, 0, 0, 0); + DecompressAndCopyTileDataToVram(0, sBg0Map_FightScene2, 0, 0, 1); + DecompressAndCopyTileDataToVram(1, sBg1Tiles_FightScene2, 0, 0, 0); + DecompressAndCopyTileDataToVram(1, sBg1Map_FightScene2, 0, 0, 1); + DecompressAndCopyTileDataToVram(2, sBg2Tiles_FightScene2, 0, 0, 0); + DecompressAndCopyTileDataToVram(2, sBg2Map_FightScene2, 0, 0, 1); ResetBgPositions(); ShowBg(0); HideBg(1); HideBg(2); ChangeBgY(2, 0x0001CE00, 0); ChangeBgY(1, 0x00002800, 0); - CreateTask(sub_80ED40C, 0); + CreateTask(Task_FightScene2_CameraHorizPanEffect, 0); CreateMonStaticSprites(this); BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); SetVBlankCallback(VBlankCB_Intro); @@ -1047,9 +1047,9 @@ static void sub_80ED188(struct IntroSequenceData * this) if (this->timer >= 60) { this->timer = 0; - DestroyTask(FindTaskIdByFunc(sub_80ED40C)); - sub_80ED4A0(this); - CreateTask(sub_80ED428, 0); + DestroyTask(FindTaskIdByFunc(Task_FightScene2_CameraHorizPanEffect)); + DestroyStaticMonSprites(this); + CreateTask(Task_FightScene2_CameraVertPanEffect, 0); ChangeBgY(3, 0x00010000, 0); HideBg(0); ShowBg(3); @@ -1069,20 +1069,20 @@ static void sub_80ED188(struct IntroSequenceData * this) this->timer++; if (this->timer >= 60) { - DestroyTask(FindTaskIdByFunc(sub_80ED428)); - SetIntroCB(this, sub_80ED4C0); + DestroyTask(FindTaskIdByFunc(Task_FightScene2_CameraVertPanEffect)); + SetIntroCB(this, IntroCB_FightScene3); } break; } } -static void sub_80ED40C(u8 taskId) +static void Task_FightScene2_CameraHorizPanEffect(u8 taskId) { ChangeBgX(3, 0x0E0, 2); ChangeBgX(0, 0x110, 1); } -static void sub_80ED428(u8 taskId) +static void Task_FightScene2_CameraVertPanEffect(u8 taskId) { ChangeBgY(2, 0x020, 1); ChangeBgY(1, 0x024, 2); @@ -1104,7 +1104,7 @@ static void CreateMonStaticSprites(struct IntroSequenceData * this) this->gengarStaticSprite = &gSprites[spriteId]; } -static void sub_80ED4A0(struct IntroSequenceData * this) +static void DestroyStaticMonSprites(struct IntroSequenceData * this) { if (this->gengarStaticSprite != NULL) DestroySprite(this->gengarStaticSprite); @@ -1112,7 +1112,7 @@ static void sub_80ED4A0(struct IntroSequenceData * this) DestroySprite(this->nidorinoStaticSprite); } -static void sub_80ED4C0(struct IntroSequenceData * this) +static void IntroCB_FightScene3(struct IntroSequenceData * this) { switch (this->state) { @@ -1120,9 +1120,9 @@ static void sub_80ED4C0(struct IntroSequenceData * this) LoadPalette(gUnknown_8407430, 0x10, 0x40); LoadPalette(sSpritePals_Gengar, 0x50, 0x20); BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); - InitBgsFromTemplates(0, gUnknown_840BBA0, NELEMS(gUnknown_840BBA0)); - DecompressAndCopyTileDataToVram(1, gUnknown_8407470, 0, 0, 0); - DecompressAndCopyTileDataToVram(1, gUnknown_8407A50, 0, 0, 1); + InitBgsFromTemplates(0, sBgTemplates_FightScene3, NELEMS(sBgTemplates_FightScene3)); + DecompressAndCopyTileDataToVram(1, sBg1Tiles_FightScene3, 0, 0, 0); + DecompressAndCopyTileDataToVram(1, sBg1Map_FightScene3, 0, 0, 1); ShowBg(1); HideBg(0); HideBg(2); @@ -1139,8 +1139,8 @@ static void sub_80ED4C0(struct IntroSequenceData * this) case 1: if (!FreeTempTileDataBuffersIfPossible()) { - DecompressAndCopyTileDataToVram(0, gUnknown_8407B9C, 0, 0, 0); - DecompressAndCopyTileDataToVram(0, gUnknown_8408D98, 0, 0, 1); + DecompressAndCopyTileDataToVram(0, sBg0Tiles_FightScene3, 0, 0, 0); + DecompressAndCopyTileDataToVram(0, sBg0Map_FightScene3, 0, 0, 1); gUnknown_203AB00 = 4; gUnknown_203AB02 = 52; ChangeBgX(0, 0x00001800, 0); @@ -1153,11 +1153,11 @@ static void sub_80ED4C0(struct IntroSequenceData * this) { BlendPalettes(0xFFFFFFFE, 0, RGB_WHITE); ShowBg(0); - CreateTask(sub_80ED714, 0); + CreateTask(Task_FightScene3_ForestBgScroll, 0); CreateNidorinoAnimSprite(this); - sub_80EE528(this->nidorinoAnimSprite, 0, 0xB4, 0x34); - CreateTask(sub_80EE200, 0); - sub_80ED6D8(); + StartNidorinoAnimSpriteSlideIn(this->nidorinoAnimSprite, 0, 0xB4, 0x34); + CreateTask(Task_FightScene3_Bg0Scroll, 0); + FightScene3_StartBg1Scroll(); this->timer = 0; this->state++; } @@ -1166,13 +1166,13 @@ static void sub_80ED4C0(struct IntroSequenceData * this) this->timer++; if (this->timer == 16) CreateGrassSprite(this); - if (!sub_80EE5C8(this) && !FuncIsActiveTask(sub_80EE200)) - SetIntroCB(this, sub_80ED898); + if (!IsNidorinoAnimSpriteSlideInRunning(this) && !FuncIsActiveTask(Task_FightScene3_Bg0Scroll)) + SetIntroCB(this, IntroCB_FightScene4); break; } } -static void sub_80ED69C(u8 taskId) +static void Task_FightScene3_Bg1Scroll(u8 taskId) { if (gTasks[taskId].data[0] == 0) ChangeBgX(1, 0x400, 2); @@ -1180,18 +1180,18 @@ static void sub_80ED69C(u8 taskId) ChangeBgX(1, 0x020, 2); } -static void sub_80ED6D8(void) +static void FightScene3_StartBg1Scroll(void) { - CreateTask(sub_80ED69C, 0); + CreateTask(Task_FightScene3_Bg1Scroll, 0); } -static void sub_80ED6EC(void) +static void FightScene3_SlowBg1Scroll(void) { - u8 taskId = FindTaskIdByFunc(sub_80ED69C); + u8 taskId = FindTaskIdByFunc(Task_FightScene3_Bg1Scroll); gTasks[taskId].data[0] = 1; } -static void sub_80ED714(u8 taskId) +static void Task_FightScene3_ForestBgScroll(u8 taskId) { s16 * data = gTasks[taskId].data; if (data[0] == 0) @@ -1206,21 +1206,21 @@ static void sub_80ED714(u8 taskId) } } -static void sub_80ED760(void) +static void FightScene3_PauseForestBgScroll(void) { - u8 taskId = FindTaskIdByFunc(sub_80ED714); + u8 taskId = FindTaskIdByFunc(Task_FightScene3_ForestBgScroll); gTasks[taskId].data[0] = 1; } -static void sub_80ED788(void) +static void FightScene3_ResumeForestBgScroll(void) { - u8 taskId = FindTaskIdByFunc(sub_80ED714); + u8 taskId = FindTaskIdByFunc(Task_FightScene3_ForestBgScroll); gTasks[taskId].data[0] = 0; } -static u8 sub_80ED7B0(void) +static bool8 FightScene3_GetForestBgScrollState(void) { - u8 taskId = FindTaskIdByFunc(sub_80ED714); + u8 taskId = FindTaskIdByFunc(Task_FightScene3_ForestBgScroll); return gTasks[taskId].data[2]; } @@ -1252,7 +1252,7 @@ static void SpriteCB_Grass(struct Sprite * sprite) sprite->pos1.x = data[1] >> 5; if (sprite->pos1.x <= 52) { - sub_80ED6EC(); + FightScene3_SlowBg1Scroll(); data[0]++; } break; @@ -1269,7 +1269,7 @@ static void SpriteCB_Grass(struct Sprite * sprite) } } -static void sub_80ED898(struct IntroSequenceData * this) +static void IntroCB_FightScene4(struct IntroSequenceData * this) { switch (this->state) { @@ -1281,12 +1281,12 @@ static void sub_80ED898(struct IntroSequenceData * this) this->timer++; if (this->timer > 30) { - sub_80EE5E4(this); + FightScene4_NidorinoRearsUp(this); this->state++; } break; case 2: - if (!sub_80EE850(this)) + if (!FightScene4_NidorinoAnimIsRunning(this)) { this->timer = 0; this->state++; @@ -1296,8 +1296,8 @@ static void sub_80ED898(struct IntroSequenceData * this) this->timer++; if (this->timer > 30) { - sub_80ED760(); - sub_80EDF94(this); + FightScene3_PauseForestBgScroll(); + FightScene4_StartGengarAttack(this); this->timer = 0; this->state++; } @@ -1305,14 +1305,14 @@ static void sub_80ED898(struct IntroSequenceData * this) case 4: if (this->field_0006) { - sub_80EE6A4(this); + FightScene4_StartNidorinoRecoilAnim(this); this->state++; } break; case 5: - if (!sub_80EE850(this)) + if (!FightScene4_NidorinoAnimIsRunning(this)) { - sub_80ED788(); + FightScene3_ResumeForestBgScroll(); this->timer = 0; this->state++; } @@ -1321,19 +1321,19 @@ static void sub_80ED898(struct IntroSequenceData * this) this->timer++; if (this->timer > 16) { - sub_80EE970(this->nidorinoAnimSprite, 8, 12, 5); + StartSpriteHopToPosAnim(this->nidorinoAnimSprite, 8, 12, 5); this->state++; } break; case 7: - if (!sub_80EE850(this)) + if (!FightScene4_NidorinoAnimIsRunning(this)) { - sub_80EE970(this->nidorinoAnimSprite, 8, 12, 5); + StartSpriteHopToPosAnim(this->nidorinoAnimSprite, 8, 12, 5); this->state++; } break; case 8: - if (!sub_80EE850(this)) + if (!FightScene4_NidorinoAnimIsRunning(this)) { this->timer = 0; this->state++; @@ -1343,15 +1343,15 @@ static void sub_80ED898(struct IntroSequenceData * this) this->timer++; if (this->timer > 20) { - sub_80EEA94(this); + StartNidorinoAnim_LaunchSelfAtGengarAnim(this); this->timer = 0; this->state++; } break; case 10: - if (!sub_80ED7B0()) + if (!FightScene3_GetForestBgScrollState()) { - sub_80ED760(); + FightScene3_PauseForestBgScroll(); CreateGengarBackSprite(this); this->state++; } @@ -1367,8 +1367,8 @@ static void sub_80ED898(struct IntroSequenceData * this) BeginNormalPaletteFade(0x00000006, 2, 0, 16, RGB_WHITE); if (this->timer > 120) { - sub_80EDB70(this); - sub_80EDBAC(this); + FightScene4_StartNidorinoAffineAnim(this); + FightScene4_StartGengarAffineAnim(this); this->state++; this->timer = 0; } @@ -1392,7 +1392,7 @@ static void sub_80ED898(struct IntroSequenceData * this) case 15: this->timer++; if (this->timer > 60) - SetIntroCB(this, sub_80EDBE8); + SetIntroCB(this, IntroCB_CleanUp); break; default: if (JOY_NEW(R_BUTTON)) @@ -1407,7 +1407,7 @@ static void sub_80ED898(struct IntroSequenceData * this) } } -static void sub_80EDAD8(struct Sprite * sprite) +static void FightScene_CalcCenterToCornerVec(struct Sprite * sprite) { CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } @@ -1428,12 +1428,12 @@ static void CreateGengarBackSprite(struct IntroSequenceData * this) this->gengarBackSpriteArray[i] = &gSprites[spriteId]; if (i & 1) this->gengarBackSpriteArray[i]->oam.shape = ST_OAM_V_RECTANGLE; - sub_80EDAD8(this->gengarBackSpriteArray[i]); + FightScene_CalcCenterToCornerVec(this->gengarBackSpriteArray[i]); } } } -static void sub_80EDB70(struct IntroSequenceData * this) +static void FightScene4_StartNidorinoAffineAnim(struct IntroSequenceData * this) { this->nidorinoAnimSprite->pos1.x += this->nidorinoAnimSprite->pos2.x; this->nidorinoAnimSprite->pos1.y += this->nidorinoAnimSprite->pos2.y; @@ -1442,23 +1442,23 @@ static void sub_80EDB70(struct IntroSequenceData * this) StartSpriteAffineAnim(this->nidorinoAnimSprite, 1); } -static void nullsub_83(struct Sprite * sprite) +static void SpriteCB_DummyButNotDummy(struct Sprite * sprite) { } -static void sub_80EDBAC(struct IntroSequenceData * this) +static void FightScene4_StartGengarAffineAnim(struct IntroSequenceData * this) { int i; for (i = 0; i < 4; i++) { StartSpriteAffineAnim(this->gengarBackSpriteArray[i], 1); - this->gengarBackSpriteArray[i]->callback = nullsub_83; + this->gengarBackSpriteArray[i]->callback = SpriteCB_DummyButNotDummy; obj_pos2_update_enable(this->gengarBackSpriteArray[i], gUnknown_840BBB8[i][0], gUnknown_840BBB8[i][1]); } } -static void sub_80EDBE8(struct IntroSequenceData * this) +static void IntroCB_CleanUp(struct IntroSequenceData * this) { switch (this->state) { @@ -1554,7 +1554,7 @@ static void Task_GameFreakScene_TrailingSparkleSpawner(u8 taskId) r6 = data[0]; spriteId = CreateSprite(&sSpriteTemplate_TrailingSparkles, sTrailingSparkleCoords[r6].x, sTrailingSparkleCoords[r6].y, 2); StartSpriteAnim(&gSprites[spriteId], 1); - gSprites[spriteId].callback = sub_80EE40C; + gSprites[spriteId].callback = SpriteCB_TrailingSparkles2; gSprites[spriteId].data[1] = sTrailingSparkleCoords[r6].y << 4; gSprites[spriteId].data[2] = 120; gSprites[spriteId].data[3] = data[1]; @@ -1615,17 +1615,17 @@ static void Rev1_GameFreakScene_CreatePresentsText(void) } #endif -static void sub_80EDF94(struct IntroSequenceData * this) +static void FightScene4_StartGengarAttack(struct IntroSequenceData * this) { u8 taskId; this->field_0006 = 0; - taskId = CreateTask(sub_80EE024, 4); + taskId = CreateTask(Task_FightScene4_GengarAttack, 4); SetWordTaskArg(taskId, 5, (uintptr_t)this); gTasks[taskId].data[3] = 64; gTasks[taskId].data[4] = GetBgX(0); } -static void sub_80EDFD8(int a, int b, int c, int d) +static void FightScene4_ApplyGengarAnim(int a, int b, int c, int d) { ChangeBgY(0, (a << 15) + 0x1F000, 0); ChangeBgX(0, d, 0); @@ -1633,7 +1633,7 @@ static void sub_80EDFD8(int a, int b, int c, int d) ChangeBgY(0, c << 8, 2); } -static void sub_80EE024(u8 taskId) +static void Task_FightScene4_GengarAttack(u8 taskId) { s16 * data = gTasks[taskId].data; int b, c; @@ -1671,7 +1671,7 @@ static void sub_80EE024(u8 taskId) data[1]++; if (data[1] == 4) { - sub_80EE160(); + FightScene4_CreateGengarSwipeSprites(); data[8] = 32; data[9] = 48; data[7] = 3; @@ -1700,10 +1700,10 @@ static void sub_80EE024(u8 taskId) angle = data[3]; b = -((gSineTable[angle + 0x40] * data[9]) >> 8); c = data[8] - ((gSineTable[angle] * data[8]) >> 8); - sub_80EDFD8(data[7], b, c, data[4]); + FightScene4_ApplyGengarAnim(data[7], b, c, data[4]); } -static void sub_80EE160(void) +static void FightScene4_CreateGengarSwipeSprites(void) { u8 spriteId; @@ -1713,19 +1713,19 @@ static void sub_80EE160(void) { gSprites[spriteId].oam.shape = ST_OAM_H_RECTANGLE; gSprites[spriteId].oam.size = ST_OAM_SIZE_2; - sub_80EDAD8(&gSprites[spriteId]); + FightScene_CalcCenterToCornerVec(&gSprites[spriteId]); StartSpriteAnim(&gSprites[spriteId], 1); } } -static void sub_80EE1C4(struct Sprite * sprite) +static void SpriteCB_GengarSwipe(struct Sprite * sprite) { sprite->invisible ^= TRUE; if (sprite->animEnded) DestroySprite(sprite); } -static void sub_80EE200(u8 taskId) +static void Task_FightScene3_Bg0Scroll(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1751,7 +1751,7 @@ static void sub_80EE200(u8 taskId) } } -static void sub_80EE29C(struct Sprite * sprite) +static void SpriteCB_LargeStar(struct Sprite * sprite) { u32 v; sprite->data[0] -= sprite->data[2]; @@ -1773,7 +1773,7 @@ static void sub_80EE29C(struct Sprite * sprite) DestroySprite(sprite); } -static void sub_80EE350(struct Sprite * sprite) +static void SpriteCB_TrailingSparkles(struct Sprite * sprite) { u32 v; @@ -1796,7 +1796,7 @@ static void sub_80EE350(struct Sprite * sprite) DestroySprite(sprite); } -static void sub_80EE40C(struct Sprite * sprite) +static void SpriteCB_TrailingSparkles2(struct Sprite * sprite) { if (sprite->data[2]) { @@ -1845,7 +1845,7 @@ static void sub_80EE40C(struct Sprite * sprite) } } -static void sub_80EE4DC(struct Sprite * sprite) +static void SpriteCB_RevealGameFreakTextSparkles(struct Sprite * sprite) { if (sprite->animEnded) DestroySprite(sprite); @@ -1857,19 +1857,19 @@ static void CreateNidorinoAnimSprite(struct IntroSequenceData * this) this->nidorinoAnimSprite = &gSprites[spriteId]; } -static void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3) +static void StartNidorinoAnimSpriteSlideIn(struct Sprite * sprite, s16 x0, s16 x1, u16 speed) { - sprite->data[0] = a1 << 4; - sprite->data[1] = ((a2 - a1) << 4) / a3; - sprite->data[2] = a3; - sprite->data[3] = a2; + sprite->data[0] = x0 << 4; + sprite->data[1] = ((x1 - x0) << 4) / speed; + sprite->data[2] = speed; + sprite->data[3] = x1; sprite->data[4] = 0; - sprite->pos1.x = a1; + sprite->pos1.x = x0; sprite->pos1.y = 100; - sprite->callback = sub_80EE580; + sprite->callback = SpriteCB_NidorinoAnimSpriteSlideIn; } -static void sub_80EE580(struct Sprite * sprite) +static void SpriteCB_NidorinoAnimSpriteSlideIn(struct Sprite * sprite) { sprite->data[4]++; if (sprite->data[4] >= 40) @@ -1886,21 +1886,21 @@ static void sub_80EE580(struct Sprite * sprite) } } -static bool32 sub_80EE5C8(struct IntroSequenceData * ptr) +static bool32 IsNidorinoAnimSpriteSlideInRunning(struct IntroSequenceData * ptr) { - return ptr->nidorinoAnimSprite->callback == sub_80EE580 ? TRUE : FALSE; + return ptr->nidorinoAnimSprite->callback == SpriteCB_NidorinoAnimSpriteSlideIn ? TRUE : FALSE; } -static void sub_80EE5E4(struct IntroSequenceData * ptr) +static void FightScene4_NidorinoRearsUp(struct IntroSequenceData * ptr) { StartSpriteAnim(ptr->nidorinoAnimSprite, 2); ptr->nidorinoAnimSprite->data[0] = 0; ptr->nidorinoAnimSprite->data[1] = 0; ptr->nidorinoAnimSprite->pos2.y = 3; - ptr->nidorinoAnimSprite->callback = sub_80EE610; + ptr->nidorinoAnimSprite->callback = SpriteCB_NidorinoRearsUp; } -static void sub_80EE610(struct Sprite * sprite) +static void SpriteCB_NidorinoRearsUp(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -1936,7 +1936,7 @@ static void sub_80EE610(struct Sprite * sprite) } } -static void sub_80EE6A4(struct IntroSequenceData * ptr) +static void FightScene4_StartNidorinoRecoilAnim(struct IntroSequenceData * ptr) { gUnknown_203AB0A = 16; gUnknown_203AB04 = 3; @@ -1949,10 +1949,10 @@ static void sub_80EE6A4(struct IntroSequenceData * ptr) ptr->nidorinoAnimSprite->data[3] = 0; ptr->nidorinoAnimSprite->data[4] = 0; ptr->nidorinoAnimSprite->data[7] = 40; - ptr->nidorinoAnimSprite->callback = sub_80EE704; + ptr->nidorinoAnimSprite->callback = SpriteCB_NidorinoRecoil; } -static void sub_80EE704(struct Sprite * sprite) +static void SpriteCB_NidorinoRecoil(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -2005,13 +2005,13 @@ static void sub_80EE704(struct Sprite * sprite) sprite->data[1]++; if (sprite->data[1] > 16) { - sub_80EE970(sprite, gUnknown_203AB0A, -sprite->pos2.x, 4); + StartSpriteHopToPosAnim(sprite, gUnknown_203AB0A, -sprite->pos2.x, 4); } break; } } -static bool8 sub_80EE850(struct IntroSequenceData * ptr) +static bool8 FightScene4_NidorinoAnimIsRunning(struct IntroSequenceData * ptr) { return ptr->nidorinoAnimSprite->callback == SpriteCallbackDummy ? FALSE : TRUE; } @@ -2034,7 +2034,7 @@ static void CreateNidorinoRecoilDustSprites(s16 x, s16 y, s16 seed) } } -static void sub_80EE8E4(struct Sprite * sprite) +static void SpriteCB_NidorinoRecoilDust(struct Sprite * sprite) { s16 * data = sprite->data; @@ -2062,7 +2062,7 @@ static void sub_80EE8E4(struct Sprite * sprite) } } -static void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3) +static void StartSpriteHopToPosAnim(struct Sprite * sprite, u16 a1, s16 a2, u8 a3) { sprite->data[0] = 0; sprite->data[1] = a1; @@ -2073,10 +2073,10 @@ static void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3) sprite->data[6] = 0; sprite->data[7] = a3; StartSpriteAnim(sprite, 2); - sprite->callback = sub_80EE9D4; + sprite->callback = SpriteCB_HopToPos; } -static void sub_80EE9D4(struct Sprite * sprite) +static void SpriteCB_HopToPos(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -2123,7 +2123,7 @@ static void sub_80EE9D4(struct Sprite * sprite) } } -static void sub_80EEA94(struct IntroSequenceData * ptr) +static void StartNidorinoAnim_LaunchSelfAtGengarAnim(struct IntroSequenceData * ptr) { ptr->nidorinoAnimSprite->data[0] = 0; ptr->nidorinoAnimSprite->data[1] = 0; @@ -2139,10 +2139,10 @@ static void sub_80EEA94(struct IntroSequenceData * ptr) gUnknown_203AB08 = 0x04; ptr->nidorinoAnimSprite->data[7] = 36; StartSpriteAnim(ptr->nidorinoAnimSprite, 2); - ptr->nidorinoAnimSprite->callback = sub_80EEB08; + ptr->nidorinoAnimSprite->callback = SpriteCB_NidorinoAnim_LaunchSelfAtGengar; } -static void sub_80EEB08(struct Sprite * sprite) +static void SpriteCB_NidorinoAnim_LaunchSelfAtGengar(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -2184,7 +2184,7 @@ static void sub_80EEB08(struct Sprite * sprite) } } -static void sub_80EEBE4(void) +static void LoadFightSceneSpriteTilesAndPals(void) { int i; -- cgit v1.2.3 From 1e5150742e6dc4ab61b8a6d6bc321916f1ffc07c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 2 Apr 2020 18:14:03 -0400 Subject: Apply pals to bg tiles in intro.c --- src/intro.c | 220 +++++++++++++++++++++++++++++------------------------------- 1 file changed, 108 insertions(+), 112 deletions(-) (limited to 'src/intro.c') diff --git a/src/intro.c b/src/intro.c index 7d2bbc7bb..aa9f7eeac 100644 --- a/src/intro.c +++ b/src/intro.c @@ -29,12 +29,9 @@ struct IntroSequenceData { IntroCallback callback; u8 state; - u8 field_0005; - u8 field_0006; - u16 field_0008; - u16 field_000A; - u8 filler_000C[6]; - u16 timer; + u8 taskId; + bool8 gengarAttackLanded; + u16 data[6]; struct Sprite * gameFreakLogoArtSprite; struct Sprite * nidorinoAnimSprite; struct Sprite * gengarStaticSprite; @@ -42,8 +39,8 @@ struct IntroSequenceData struct Sprite * grassSprite; struct Sprite * gengarBackSpriteArray[4]; u8 filler_0038[0x4]; - u8 field_003C[0x400]; - u8 field_043C[0x400]; + u8 gamefreakLogoArtSpriteTiles[0x400]; + u8 gamefreakTextBitmap[0x400]; u8 filler_083C[0x2080]; }; // size: 0x28BC @@ -67,11 +64,6 @@ static EWRAM_DATA u16 gUnknown_203AB1E = 0; static EWRAM_DATA u16 gUnknown_203AB20 = 0; static EWRAM_DATA u16 gUnknown_203AB22 = 0; static EWRAM_DATA u16 gUnknown_203AB24 = 0; -static EWRAM_DATA u16 gUnknown_203AB26 = 0; -static EWRAM_DATA u32 gUnknown_203AB28 = 0; -static EWRAM_DATA s16 gUnknown_203AB2C = 0; -static EWRAM_DATA u16 gUnknown_203AB2E = 0; -static EWRAM_DATA u32 gUnknown_203AB30 = 0; static void CB2_SetUpIntro(void); static void CB2_Intro(void); @@ -146,11 +138,11 @@ extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; static const u16 sCopyrightGraphicsPal[] = INCBIN_U16("graphics/intro/unk_8402260.gbapal"); static const u8 sCopyrightGraphicsTiles[] = INCBIN_U8("graphics/intro/unk_8402280.4bpp.lz"); static const u8 sCopyrightGraphicsMap[] = INCBIN_U8("graphics/intro/unk_84024E4.bin.lz"); -static const u16 gUnknown_8402630[] = INCBIN_U16("graphics/intro/unk_8402630.gbapal"); -static const u8 gUnknown_8402650[] = INCBIN_U8("graphics/intro/unk_8402650.4bpp.lz"); -static const u8 gUnknown_8402668[] = INCBIN_U8("graphics/intro/unk_8402668.bin.lz"); +static const u16 sBg3Pal_GameFreakPresents[] = INCBIN_U16("graphics/intro/unk_8402630.gbapal"); +static const u8 sBg3Tiles_GameFreakPresents[] = INCBIN_U8("graphics/intro/unk_8402650.4bpp.lz"); +static const u8 sBg3Map_GameFreakPresents[] = INCBIN_U8("graphics/intro/unk_8402668.bin.lz"); static const u16 sSpritePals_GameFreakPresents[] = INCBIN_U16("graphics/intro/unk_840270C.gbapal"); -static const u8 gUnknown_840272C[] = INCBIN_U8("graphics/intro/unk_840272C.4bpp.lz"); +static const u8 sBlit_GameFreakText[] = INCBIN_U8("graphics/intro/unk_840272C.4bpp.lz"); static const u32 sSpriteTiles_GameFreakLogoArt[] = INCBIN_U32("graphics/intro/unk_84028F8.4bpp.lz"); static const u16 sSpritePals_LargeStar[] = INCBIN_U16("graphics/intro/unk_8402A64.gbapal"); static const u32 sSpriteTiles_LargeStar[] = INCBIN_U32("graphics/intro/unk_8402A64.4bpp.lz"); @@ -158,25 +150,25 @@ static const u16 sSpritePals_Sparkles[] = INCBIN_U16("graphics/intro/unk_8402ADC static const u32 sSpriteTiles_TrailingSparkles[] = INCBIN_U32("graphics/intro/unk_8402ADC.4bpp.lz"); static const u32 sSpriteTiles_RevealGameFreakTextSparkles[] = INCBIN_U32("graphics/intro/unk_8402B2C.4bpp.lz"); static const u32 sSpriteTiles_PresentsText[] = INCBIN_U32("graphics/intro/unk_8402CD4.4bpp.lz"); -static const u16 gUnknown_8402D34[] = INCBIN_U16("graphics/intro/unk_8402D34.gbapal"); +static const u16 sBg0Pal_FightScene1[] = INCBIN_U16("graphics/intro/unk_8402D34.gbapal"); static const u8 sBg0Tiles_FightScene1[] = INCBIN_U8("graphics/intro/unk_8402D54.4bpp.lz"); static const u8 sBg0Map_FightScene1[] = INCBIN_U8("graphics/intro/unk_8403FE8.bin.lz"); -static const u16 gUnknown_84048CC[] = INCBIN_U16("graphics/intro/unk_84048CC.gbapal"); +static const u16 sBg1Pal_FightScene1[] = INCBIN_U16("graphics/intro/unk_84048CC.gbapal"); static const u8 sBg1Tiles_FightScene1[] = INCBIN_U8("graphics/intro/unk_84048EC.4bpp.lz"); static const u8 sBg1Map_FightScene1[] = INCBIN_U8("graphics/intro/unk_8404F7C.bin.lz"); -static const u16 gUnknown_84053B4[] = INCBIN_U16("graphics/intro/unk_84053B4.gbapal"); +static const u16 sBg3Pal_FightScene2[] = INCBIN_U16("graphics/intro/unk_84053B4.gbapal"); static const u8 sBg3Tiles_FightScene2[] = INCBIN_U8("graphics/intro/unk_8405414.4bpp.lz"); static const u8 sBg3Map_FightScene2[] = INCBIN_U8("graphics/intro/unk_8405890.bin.lz"); -static const u16 gUnknown_8405B08[] = INCBIN_U16("graphics/intro/unk_8405B08.gbapal"); +static const u16 sBg0Pal_FightScene2[] = INCBIN_U16("graphics/intro/unk_8405B08.gbapal"); static const u8 sBg0Tiles_FightScene2[] = INCBIN_U8("graphics/intro/unk_8405B28.4bpp.lz"); static const u8 sBg0Map_FightScene2[] = INCBIN_U8("graphics/intro/unk_8405CDC.bin.lz"); static const u16 sSpritePals_Gengar[] = INCBIN_U16("graphics/intro/unk_8405DA4.gbapal"); static const u8 sBg2Tiles_FightScene2[] = INCBIN_U8("graphics/intro/unk_8405DC4.4bpp.lz"); static const u8 sBg2Map_FightScene2[] = INCBIN_U8("graphics/intro/unk_840644C.bin.lz"); -static const u16 gUnknown_8406634[] = INCBIN_U16("graphics/intro/unk_8406634.gbapal"); +static const u16 sBg1Pal_FightScene2[] = INCBIN_U16("graphics/intro/unk_8406634.gbapal"); static const u8 sBg1Tiles_FightScene2[] = INCBIN_U8("graphics/intro/unk_8406654.4bpp.lz"); static const u8 sBg1Map_FightScene2[] = INCBIN_U8("graphics/intro/unk_84071D0.bin.lz"); -static const u16 gUnknown_8407430[] = INCBIN_U16("graphics/intro/unk_8407430.gbapal"); +static const u16 sBg1Pal_FightScene3[] = INCBIN_U16("graphics/intro/unk_8407430.gbapal"); static const u8 sBg1Tiles_FightScene3[] = INCBIN_U8("graphics/intro/unk_8407470.4bpp.lz"); static const u8 sBg1Map_FightScene3[] = INCBIN_U8("graphics/intro/unk_8407A50.bin.lz"); static const u8 sBg0Tiles_FightScene3[] = INCBIN_U8("graphics/intro/unk_8407B9C.4bpp.lz"); @@ -220,7 +212,7 @@ static const struct WindowTemplate sWindowTemplate[] = { DUMMY_WIN_TEMPLATE }; -static const u8 gUnknown_840BBB8[][2] = { +static const u8 sGengarBackSpritePos2UpdateMods[][2] = { {0x3f, 0x3f}, {0x00, 0x3f}, {0x3f, 0x00}, @@ -620,9 +612,9 @@ static void CB2_SetUpIntro(void) InitBgsFromTemplates(0, sBgTemplates_GameFreakScene, NELEMS(sBgTemplates_GameFreakScene)); break; case 1: - LoadPalette(gUnknown_8402630, 0x00, 0x20); - DecompressAndCopyTileDataToVram(3, gUnknown_8402650, 0, 0, 0); - DecompressAndCopyTileDataToVram(3, gUnknown_8402668, 0, 0, 1); + LoadPalette(sBg3Pal_GameFreakPresents, 0x00, 0x20); + DecompressAndCopyTileDataToVram(3, sBg3Tiles_GameFreakPresents, 0, 0, 0); + DecompressAndCopyTileDataToVram(3, sBg3Map_GameFreakPresents, 0, 0, 1); LoadPalette(sSpritePals_GameFreakPresents, 0xD0, 0x20); break; case 2: @@ -674,8 +666,8 @@ static void StartIntroSequence(void) { struct IntroSequenceData * ptr = Alloc(sizeof(struct IntroSequenceData)); SetIntroCB(ptr, IntroCB_Init); - ptr->field_0005 = CreateTask(Task_CallIntroCallback, 3); - SetWordTaskArg(ptr->field_0005, 0, (uintptr_t)ptr); + ptr->taskId = CreateTask(Task_CallIntroCallback, 3); + SetWordTaskArg(ptr->taskId, 0, (uintptr_t)ptr); } static void SetIntroCB(struct IntroSequenceData * ptr, IntroCallback cb) @@ -698,11 +690,11 @@ static void IntroCB_Init(struct IntroSequenceData * this) { case 0: InitWindows(sWindowTemplate); - LZ77UnCompWram(gUnknown_840272C, this->field_043C); - LZ77UnCompWram(sSpriteTiles_GameFreakLogoArt, this->field_003C); + LZ77UnCompWram(sBlit_GameFreakText, this->gamefreakTextBitmap); + LZ77UnCompWram(sSpriteTiles_GameFreakLogoArt, this->gamefreakLogoArtSpriteTiles); FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11); FillWindowPixelBuffer(0, 0x00); - BlitBitmapToWindow(0, this->field_043C, 0, 40, 144, 16); + BlitBitmapToWindow(0, this->gamefreakTextBitmap, 0, 40, 144, 16); PutWindowTilemap(0); CopyWindowToVram(0, 3); this->state++; @@ -724,7 +716,7 @@ static void IntroCB_OpenWin1ToTheaterDimensions(struct IntroSequenceData * this) SetGpuReg(REG_OFFSET_WINOUT, 0x0000); SetGpuReg(REG_OFFSET_WIN1H, 0x00F0); SetGpuReg(REG_OFFSET_WIN1V, 0x0000); - this->timer = 0; + this->data[5] = 0; this->state++; break; case 1: @@ -733,11 +725,11 @@ static void IntroCB_OpenWin1ToTheaterDimensions(struct IntroSequenceData * this) this->state++; break; case 2: - this->timer += 8; - if (this->timer >= 0x30) - this->timer = 0x30; - SetGpuReg(REG_OFFSET_WIN1V, ((0x50 - this->timer) << 8) | (0x50 + this->timer)); - if (this->timer == 0x30) + this->data[5] += 8; + if (this->data[5] >= 0x30) + this->data[5] = 0x30; + SetGpuReg(REG_OFFSET_WIN1V, ((0x50 - this->data[5]) << 8) | (0x50 + this->data[5])); + if (this->data[5] == 0x30) SetIntroCB(this, IntroCB_GameFreakStar); break; } @@ -750,21 +742,21 @@ static void IntroCB_GameFreakStar(struct IntroSequenceData * this) case 0: PlaySE(MUS_TITLEROG); GameFreakScene_LoadGfxCreateStar(); - this->timer = 0; + this->data[5] = 0; this->state++; break; case 1: - this->timer++; - if (this->timer == 30) + this->data[5]++; + if (this->data[5] == 30) { GameFreakScene_StartTrailingSparkleSpawner(); - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 2: - this->timer++; - if (this->timer == 90) + this->data[5]++; + if (this->data[5] == 90) SetIntroCB(this, IntroCB_GameFreakScene_RevealGameFreakText); break; } @@ -776,12 +768,12 @@ static void IntroCB_GameFreakScene_RevealGameFreakText(struct IntroSequenceData { case 0: GameFreakScene_StartRevealGameFreakTextSparklesSpawner(); - this->timer = 0; + this->data[5] = 0; this->state++; break; case 1: - this->timer++; - if (this->timer >= 40) + this->data[5]++; + if (this->data[5] >= 40) this->state++; break; case 2: @@ -797,13 +789,13 @@ static void IntroCB_GameFreakScene_RevealGameFreakText(struct IntroSequenceData if (!IsBlendTaskActive()) { SetGpuReg(REG_OFFSET_BLDCNT, 0); - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 5: - this->timer++; - if (this->timer > 50) + this->data[5]++; + if (this->data[5] > 50) SetIntroCB(this, IntroCB_GameFreakScene_CreateGameFreakLogo); break; } @@ -816,9 +808,9 @@ static void IntroCB_GameFreakScene_CreateGameFreakLogo(struct IntroSequenceData case 0: SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); StartBlendTask(0, 16, 16, 0, 16, 0); - this->field_0008 = 0; - this->field_000A = 16; - this->timer = 0; + this->data[0] = 0; + this->data[1] = 16; + this->data[5] = 0; this->state++; break; case 1: @@ -828,8 +820,8 @@ static void IntroCB_GameFreakScene_CreateGameFreakLogo(struct IntroSequenceData case 2: if (!IsBlendTaskActive()) { - BlitBitmapToWindow(0, this->field_003C, 0x38, 0x06, 0x20, 0x40); - BlitBitmapToWindow(0, this->field_043C, 0x00, 0x28, 0x90, 0x10); + BlitBitmapToWindow(0, this->gamefreakLogoArtSpriteTiles, 0x38, 0x06, 0x20, 0x40); + BlitBitmapToWindow(0, this->gamefreakTextBitmap, 0x00, 0x28, 0x90, 0x10); CopyWindowToVram(0, 2); this->state++; } @@ -839,13 +831,13 @@ static void IntroCB_GameFreakScene_CreateGameFreakLogo(struct IntroSequenceData { DestroySprite(this->gameFreakLogoArtSprite); Rev1_GameFreakScene_CreatePresentsText(); - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 4: - this->timer++; - if (this->timer > 90) + this->data[5]++; + if (this->data[5] > 90) { SetGpuRegBits(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2); StartBlendTask(16, 0, 0, 16, 20, 0); @@ -862,12 +854,12 @@ static void IntroCB_GameFreakScene_CreateGameFreakLogo(struct IntroSequenceData case 6: ResetSpriteData(); FreeAllSpritePalettes(); - this->timer = 0; + this->data[5] = 0; this->state++; break; case 7: - this->timer++; - if (this->timer > 20) + this->data[5]++; + if (this->data[5] > 20) { SetGpuReg(REG_OFFSET_BLDCNT, 0); SetIntroCB(this, IntroCB_FightScene); @@ -882,9 +874,9 @@ static void IntroCB_FightScene(struct IntroSequenceData * this) { case 0: SetVBlankCallback(NULL); - LoadPalette(gUnknown_8402D34, 0x10, 0x20); - LoadPalette(gUnknown_84048CC, 0x20, 0x20); - BlendPalettes(0x06, 0x10, RGB_WHITE); + LoadPalette(sBg0Pal_FightScene1, 0x10, 0x20); + LoadPalette(sBg1Pal_FightScene1, 0x20, 0x20); + BlendPalettes(0x00000006, 0x10, RGB_WHITE); InitBgsFromTemplates(0, sBgTemplates_FightScene1, NELEMS(sBgTemplates_FightScene1)); DecompressAndCopyTileDataToVram(1, sBg1Tiles_FightScene1, 0, 0, 0); DecompressAndCopyTileDataToVram(1, sBg1Map_FightScene1, 0, 0, 1); @@ -919,20 +911,20 @@ static void IntroCB_FightScene(struct IntroSequenceData * this) if (!gPaletteFade.active) { m4aSongNumStart(MUS_DEMO); - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 4: - this->timer++; - if (this->timer == 20) + this->data[5]++; + if (this->data[5] == 20) { CreateTask(Task_FightScene1_ZoomEffect, 0); FightScene1_SignalEndGrassyFieldAnim(); } - if (this->timer >= 30) + if (this->data[5] >= 30) { - BlendPalettes(-2, 16, RGB_WHITE); + BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); DestroyTask(FindTaskIdByFunc(Task_FightScene1_GrassyFieldAnim)); DestroyTask(FindTaskIdByFunc(Task_FightScene1_ZoomEffect)); SetIntroCB(this, IntroCB_FightScene2); @@ -1005,9 +997,9 @@ static void IntroCB_FightScene2(struct IntroSequenceData * this) if (!FreeTempTileDataBuffersIfPossible()) { SetVBlankCallback(NULL); - LoadPalette(gUnknown_84053B4, 0x10, 0x60); + LoadPalette(sBg3Pal_FightScene2, 0x10, 0x60); LoadPalette(sSpritePals_Gengar, 0x50, 0x20); - LoadPalette(gUnknown_8406634, 0x60, 0x20); + LoadPalette(sBg1Pal_FightScene2, 0x60, 0x20); BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); DecompressAndCopyTileDataToVram(0, sBg0Tiles_FightScene2, 0, 0, 0); DecompressAndCopyTileDataToVram(0, sBg0Map_FightScene2, 0, 0, 1); @@ -1038,15 +1030,15 @@ static void IntroCB_FightScene2(struct IntroSequenceData * this) case 3: if (!gPaletteFade.active) { - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 4: - this->timer++; - if (this->timer >= 60) + this->data[5]++; + if (this->data[5] >= 60) { - this->timer = 0; + this->data[5] = 0; DestroyTask(FindTaskIdByFunc(Task_FightScene2_CameraHorizPanEffect)); DestroyStaticMonSprites(this); CreateTask(Task_FightScene2_CameraVertPanEffect, 0); @@ -1061,13 +1053,13 @@ static void IntroCB_FightScene2(struct IntroSequenceData * this) case 5: if (!IsDma3ManagerBusyWithBgCopy()) { - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 6: - this->timer++; - if (this->timer >= 60) + this->data[5]++; + if (this->data[5] >= 60) { DestroyTask(FindTaskIdByFunc(Task_FightScene2_CameraVertPanEffect)); SetIntroCB(this, IntroCB_FightScene3); @@ -1117,7 +1109,7 @@ static void IntroCB_FightScene3(struct IntroSequenceData * this) switch (this->state) { case 0: - LoadPalette(gUnknown_8407430, 0x10, 0x40); + LoadPalette(sBg1Pal_FightScene3, 0x10, 0x40); LoadPalette(sSpritePals_Gengar, 0x50, 0x20); BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); InitBgsFromTemplates(0, sBgTemplates_FightScene3, NELEMS(sBgTemplates_FightScene3)); @@ -1158,13 +1150,13 @@ static void IntroCB_FightScene3(struct IntroSequenceData * this) StartNidorinoAnimSpriteSlideIn(this->nidorinoAnimSprite, 0, 0xB4, 0x34); CreateTask(Task_FightScene3_Bg0Scroll, 0); FightScene3_StartBg1Scroll(); - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 3: - this->timer++; - if (this->timer == 16) + this->data[5]++; + if (this->data[5] == 16) CreateGrassSprite(this); if (!IsNidorinoAnimSpriteSlideInRunning(this) && !FuncIsActiveTask(Task_FightScene3_Bg0Scroll)) SetIntroCB(this, IntroCB_FightScene4); @@ -1274,12 +1266,12 @@ static void IntroCB_FightScene4(struct IntroSequenceData * this) switch (this->state) { case 0: - this->timer = 0; + this->data[5] = 0; this->state++; break; case 1: - this->timer++; - if (this->timer > 30) + this->data[5]++; + if (this->data[5] > 30) { FightScene4_NidorinoRearsUp(this); this->state++; @@ -1288,22 +1280,22 @@ static void IntroCB_FightScene4(struct IntroSequenceData * this) case 2: if (!FightScene4_NidorinoAnimIsRunning(this)) { - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 3: - this->timer++; - if (this->timer > 30) + this->data[5]++; + if (this->data[5] > 30) { FightScene3_PauseForestBgScroll(); FightScene4_StartGengarAttack(this); - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 4: - if (this->field_0006) + if (this->gengarAttackLanded) { FightScene4_StartNidorinoRecoilAnim(this); this->state++; @@ -1313,13 +1305,13 @@ static void IntroCB_FightScene4(struct IntroSequenceData * this) if (!FightScene4_NidorinoAnimIsRunning(this)) { FightScene3_ResumeForestBgScroll(); - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 6: - this->timer++; - if (this->timer > 16) + this->data[5]++; + if (this->data[5] > 16) { StartSpriteHopToPosAnim(this->nidorinoAnimSprite, 8, 12, 5); this->state++; @@ -1335,16 +1327,16 @@ static void IntroCB_FightScene4(struct IntroSequenceData * this) case 8: if (!FightScene4_NidorinoAnimIsRunning(this)) { - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 9: - this->timer++; - if (this->timer > 20) + this->data[5]++; + if (this->data[5] > 20) { StartNidorinoAnim_LaunchSelfAtGengarAnim(this); - this->timer = 0; + this->data[5] = 0; this->state++; } break; @@ -1358,24 +1350,24 @@ static void IntroCB_FightScene4(struct IntroSequenceData * this) break; case 11: HideBg(0); - this->timer = 0; + this->data[5] = 0; this->state++; break; case 12: - this->timer++; - if (this->timer == 48) + this->data[5]++; + if (this->data[5] == 48) BeginNormalPaletteFade(0x00000006, 2, 0, 16, RGB_WHITE); - if (this->timer > 120) + if (this->data[5] > 120) { FightScene4_StartNidorinoAffineAnim(this); FightScene4_StartGengarAffineAnim(this); this->state++; - this->timer = 0; + this->data[5] = 0; } break; case 13: - this->timer++; - if (this->timer > 8) + this->data[5]++; + if (this->data[5] > 8) { CpuFill16(RGB_WHITE, gPlttBufferUnfaded + 16, 64); BeginNormalPaletteFade(0xFFFFFFFE, -2, 0, 16, RGB_BLACK); @@ -1385,13 +1377,13 @@ static void IntroCB_FightScene4(struct IntroSequenceData * this) case 14: if (!gPaletteFade.active) { - this->timer = 0; + this->data[5] = 0; this->state++; } break; case 15: - this->timer++; - if (this->timer > 60) + this->data[5]++; + if (this->data[5] > 60) SetIntroCB(this, IntroCB_CleanUp); break; default: @@ -1401,7 +1393,7 @@ static void IntroCB_FightScene4(struct IntroSequenceData * this) this->nidorinoAnimSprite->pos2.x = 0; this->nidorinoAnimSprite->pos1.x = 0xB4; this->state = 1; - this->timer = 30; + this->data[5] = 30; } break; } @@ -1454,7 +1446,7 @@ static void FightScene4_StartGengarAffineAnim(struct IntroSequenceData * this) { StartSpriteAffineAnim(this->gengarBackSpriteArray[i], 1); this->gengarBackSpriteArray[i]->callback = SpriteCB_DummyButNotDummy; - obj_pos2_update_enable(this->gengarBackSpriteArray[i], gUnknown_840BBB8[i][0], gUnknown_840BBB8[i][1]); + obj_pos2_update_enable(this->gengarBackSpriteArray[i], sGengarBackSpritePos2UpdateMods[i][0], sGengarBackSpritePos2UpdateMods[i][1]); } } @@ -1469,7 +1461,7 @@ static void IntroCB_CleanUp(struct IntroSequenceData * this) case 1: if (!FreeTempTileDataBuffersIfPossible()) { - DestroyTask(this->field_0005); + DestroyTask(this->taskId); Free(this); DisableInterrupts(INTR_FLAG_HBLANK); SetHBlankCallback(NULL); @@ -1483,6 +1475,7 @@ static void GameFreakScene_LoadGfxCreateStar(void) { int i; u8 spriteId; + static EWRAM_DATA u32 gUnknown_203AB28 = 0; for (i = 0; i < NELEMS(sSpriteSheets_GameFreakScene); i++) { @@ -1515,6 +1508,8 @@ static void GameFreakScene_LoadGfxCreateStar(void) static void GameFreakScene_TrailingSparklesGen(s16 x, s16 y, u16 a2) { + static EWRAM_DATA s16 gUnknown_203AB2C = 0; + u8 spriteId; s16 r4 = (a2 & gUnknown_203AB12) + 2; s16 r2 = gUnknown_203AB2C; @@ -1618,7 +1613,7 @@ static void Rev1_GameFreakScene_CreatePresentsText(void) static void FightScene4_StartGengarAttack(struct IntroSequenceData * this) { u8 taskId; - this->field_0006 = 0; + this->gengarAttackLanded = FALSE; taskId = CreateTask(Task_FightScene4_GengarAttack, 4); SetWordTaskArg(taskId, 5, (uintptr_t)this); gTasks[taskId].data[3] = 64; @@ -1659,7 +1654,7 @@ static void Task_FightScene4_GengarAttack(u8 taskId) case 2: data[1]++; if (data[1] == 14) - ((struct IntroSequenceData *)GetWordTaskArg(taskId, 5))->field_0006 = 1; + ((struct IntroSequenceData *)GetWordTaskArg(taskId, 5))->gengarAttackLanded = TRUE; if (data[1] > 15) { data[1] = 0; @@ -1728,6 +1723,7 @@ static void SpriteCB_GengarSwipe(struct Sprite * sprite) static void Task_FightScene3_Bg0Scroll(u8 taskId) { s16 * data = gTasks[taskId].data; + static EWRAM_DATA u32 gUnknown_203AB30 = 0; switch (data[0]) { -- cgit v1.2.3 From 58e8bad37b914e2f2aaf6137543dd3650643fa51 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 2 Apr 2020 20:20:09 -0400 Subject: intro.c includes gflib.h --- src/intro.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'src/intro.c') diff --git a/src/intro.c b/src/intro.c index aa9f7eeac..c9db2e70c 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1,10 +1,6 @@ #include "global.h" +#include "gflib.h" #include "m4a.h" -#include "malloc.h" -#include "bg.h" -#include "palette.h" -#include "main.h" -#include "gpu_regs.h" #include "task.h" #include "scanline_effect.h" #include "libgcnmultiboot.h" @@ -12,7 +8,6 @@ #include "link.h" #include "menu.h" #include "save.h" -#include "sound.h" #include "new_game.h" #include "title_screen.h" #include "decompress.h" -- cgit v1.2.3 From 8f74dda3e443d561b21d6b267aa71d14aed05031 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 3 Apr 2020 19:18:55 -0400 Subject: Minor cleanup --- src/intro.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/intro.c') diff --git a/src/intro.c b/src/intro.c index c9db2e70c..ec15d7473 100644 --- a/src/intro.c +++ b/src/intro.c @@ -462,7 +462,9 @@ static const struct SpritePalette sFightSceneSpritePalettes[] = { {sSpritePals_Grass, 8}, {sSpritePals_GengarSwipe, 10}, {sSpritePals_NidorinoRecoilDust, 11}, - // {0} +#ifdef BUGFIX + {0} +#endif }; static void VBlankCB_Copyright(void) @@ -511,7 +513,8 @@ static bool8 RunCopyrightScreen(void) ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); - FreeAllSpritePalettes();BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF); + FreeAllSpritePalettes(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF); SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(7)); EnableInterrupts(INTR_FLAG_VBLANK); SetVBlankCallback(VBlankCB_Copyright); @@ -602,8 +605,8 @@ static void CB2_SetUpIntro(void) DmaFill16(3, 0, VRAM, VRAM_SIZE); DmaFill32(3, 0, OAM, OAM_SIZE); DmaFill16(3, 0, PLTT, PLTT_SIZE); - FillPalette(0, 0, 0x400); - ResetBgsAndClearDma3BusyFlags(0); + FillPalette(RGB_BLACK, 0, 0x400); + ResetBgsAndClearDma3BusyFlags(FALSE); InitBgsFromTemplates(0, sBgTemplates_GameFreakScene, NELEMS(sBgTemplates_GameFreakScene)); break; case 1: @@ -688,7 +691,7 @@ static void IntroCB_Init(struct IntroSequenceData * this) LZ77UnCompWram(sBlit_GameFreakText, this->gamefreakTextBitmap); LZ77UnCompWram(sSpriteTiles_GameFreakLogoArt, this->gamefreakLogoArtSpriteTiles); FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11); - FillWindowPixelBuffer(0, 0x00); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); BlitBitmapToWindow(0, this->gamefreakTextBitmap, 0, 40, 144, 16); PutWindowTilemap(0); CopyWindowToVram(0, 3); -- cgit v1.2.3