diff options
Diffstat (limited to 'src/intro.c')
-rw-r--r-- | src/intro.c | 1254 |
1 files changed, 627 insertions, 627 deletions
diff --git a/src/intro.c b/src/intro.c index 837d4f905..ec15d7473 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" @@ -21,29 +16,30 @@ #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; - 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]; + IntroCallback callback; + u8 state; + u8 taskId; + bool8 gengarAttackLanded; + u16 data[6]; + 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 gamefreakLogoArtSpriteTiles[0x400]; + u8 gamefreakTextBitmap[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; @@ -63,182 +59,177 @@ 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 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 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 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 sub_80ED898(struct IntroSequenceData * ptr); -static void sub_80EDAF0(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 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 sub_80EE4F8(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 sub_80EE864(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 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_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 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 IntroCB_FightScene4(struct IntroSequenceData * ptr); +static void CreateGengarBackSprite(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 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 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 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 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 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 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 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 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 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 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 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"); -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 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 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 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 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 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"); +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 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 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 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 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 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 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"); +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"); +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 } }; -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 } }; -static const struct WindowTemplate gUnknown_840BBA8[] = { +static const struct WindowTemplate sWindowTemplate[] = { { 2, 6, 4, 18, 9, 0xD, 0x000 }, DUMMY_WIN_TEMPLATE }; -static const u8 gUnknown_840BBB8[][2] = { +static const u8 sGengarBackSpritePos2UpdateMods[][2] = { {0x3f, 0x3f}, {0x00, 0x3f}, {0x3f, 0x00}, {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 +266,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, SpriteCB_LargeStar}; -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, 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 }; @@ -293,15 +284,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, 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 }; -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 }; @@ -330,7 +321,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, @@ -349,18 +340,18 @@ 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 gUnknown_840BD88 = {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 }; -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 +371,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 +402,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, 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 }; @@ -432,7 +423,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, 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 }; @@ -448,58 +439,60 @@ 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, SpriteCB_NidorinoRecoilDust}; -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 -// 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. -static const struct SpritePalette gUnknown_840BF14[] = { - {gUnknown_8405DA4, 6}, - {gUnknown_84096AC, 7}, - {gUnknown_8409A1C, 8}, - {gUnknown_840B834, 10}, - {gUnknown_840B854, 11}, - // {0} +static const struct SpritePalette sFightSceneSpritePalettes[] = { + {sSpritePals_Gengar, 6}, + {sSpritePals_Nidorino, 7}, + {sSpritePals_Grass, 8}, + {sSpritePals_GengarSwipe, 10}, + {sSpritePals_NidorinoRecoilDust, 11}, +#ifdef BUGFIX + {0} +#endif }; -static void sub_80EC5A4(void) +static void VBlankCB_Copyright(void) { LoadOam(); ProcessSpriteCopyRequests(); 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 +509,27 @@ 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); + 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(&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 +539,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 +562,7 @@ static bool8 sub_80EC62C(void) break; case 142: ResetSerial(); - SetMainCallback2(sub_80EC5B8); + SetMainCallback2(CB2_WaitFadeBeforeSetUpIntro); break; } return TRUE; @@ -575,7 +570,7 @@ static bool8 sub_80EC62C(void) void c2_copyright_1(void) { - if (!sub_80EC62C()) + if (!RunCopyrightScreen()) { ResetMenuAndMonGlobals(); Save_ResetSaveCounters(); @@ -586,12 +581,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 +601,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)); + FillPalette(RGB_BLACK, 0, 0x400); + ResetBgsAndClearDma3BusyFlags(FALSE); + 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(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: 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 +636,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 +660,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); - SetWordTaskArg(ptr->field_0005, 0, (uintptr_t)ptr); + SetIntroCB(ptr, IntroCB_Init); + ptr->taskId = CreateTask(Task_CallIntroCallback, 3); + SetWordTaskArg(ptr->taskId, 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 != IntroCB_CleanUp) + SetIntroCB(ptr, IntroCB_CleanUp); + 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); - LZ77UnCompWram(gUnknown_840272C, this->field_043C); - LZ77UnCompWram(gUnknown_84028F8, this->field_003C); + InitWindows(sWindowTemplate); + 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); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); + BlitBitmapToWindow(0, this->gamefreakTextBitmap, 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,232 +714,232 @@ 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->data[5] = 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->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; } } -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->data[5] = 0; + this->state++; break; case 1: - this->field_0012++; - if (this->field_0012 == 30) + this->data[5]++; + if (this->data[5] == 30) { - sub_80EDDF0(); - this->field_0012 = 0; - this->field_0004++; + GameFreakScene_StartTrailingSparkleSpawner(); + this->data[5] = 0; + this->state++; } break; case 2: - this->field_0012++; - if (this->field_0012 == 90) - sub_80ECAA8(this, sub_80ECCA8); + this->data[5]++; + if (this->data[5] == 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->data[5] = 0; + this->state++; break; case 1: - this->field_0012++; - if (this->field_0012 >= 40) - this->field_0004++; + this->data[5]++; + if (this->data[5] >= 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->data[5] = 0; + this->state++; } break; case 5: - this->field_0012++; - if (this->field_0012 > 50) - sub_80ECAA8(this, sub_80ECD60); + this->data[5]++; + if (this->data[5] > 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->data[0] = 0; + this->data[1] = 16; + this->data[5] = 0; + this->state++; break; case 1: - this->field_0014 = sub_80EDF68(); - this->field_0004++; + this->gameFreakLogoArtSprite = CreateGameFreakLogoArtSprite(); + this->state++; break; 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->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->data[5] = 0; + this->state++; } break; case 4: - this->field_0012++; - if (this->field_0012 > 90) + this->data[5]++; + if (this->data[5] > 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->data[5] = 0; + this->state++; break; case 7: - this->field_0012++; - if (this->field_0012 > 20) + this->data[5]++; + if (this->data[5] > 20) { SetGpuReg(REG_OFFSET_BLDCNT, 0); - sub_80ECAA8(this, sub_80ECEA4); + SetIntroCB(this, IntroCB_FightScene); } break; } } -static void sub_80ECEA4(struct IntroSequenceData * this) +static void IntroCB_FightScene(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)); - DecompressAndCopyTileDataToVram(1, gUnknown_84048EC, 0, 0, 0); - DecompressAndCopyTileDataToVram(1, gUnknown_8404F7C, 0, 0, 1); + 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); ShowBg(1); HideBg(0); HideBg(2); HideBg(3); - sub_80EEBE4(); - SetVBlankCallback(sub_80EC9EC); - this->field_0004++; + 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->field_0004++; + this->state++; } break; case 2: if (!FreeTempTileDataBuffersIfPossible()) { ShowBg(0); - CreateTask(sub_80ED0AC, 0); + CreateTask(Task_FightScene1_GrassyFieldAnim, 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->data[5] = 0; + this->state++; } break; case 4: - this->field_0012++; - if (this->field_0012 == 20) + this->data[5]++; + if (this->data[5] == 20) { - CreateTask(sub_80ED140, 0); - sub_80ED118(); + CreateTask(Task_FightScene1_ZoomEffect, 0); + FightScene1_SignalEndGrassyFieldAnim(); } - if (this->field_0012 >= 30) + if (this->data[5] >= 30) { - BlendPalettes(-2, 16, RGB_WHITE); - DestroyTask(FindTaskIdByFunc(sub_80ED0AC)); - DestroyTask(FindTaskIdByFunc(sub_80ED140)); - sub_80ECAA8(this, sub_80ED188); + BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); + 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)); - sub_80ECAA8(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; @@ -964,13 +959,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; @@ -984,146 +979,146 @@ static void sub_80ED140(u8 taskId) } } -static void sub_80ED188(struct IntroSequenceData * this) +static void IntroCB_FightScene2(struct IntroSequenceData * this) { - switch (this->field_0004) + 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->field_0004++; + this->state++; break; case 1: if (!FreeTempTileDataBuffersIfPossible()) { SetVBlankCallback(NULL); - LoadPalette(gUnknown_84053B4, 0x10, 0x60); - LoadPalette(gUnknown_8405DA4, 0x50, 0x20); - LoadPalette(gUnknown_8406634, 0x60, 0x20); + LoadPalette(sBg3Pal_FightScene2, 0x10, 0x60); + LoadPalette(sSpritePals_Gengar, 0x50, 0x20); + LoadPalette(sBg1Pal_FightScene2, 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); - sub_80ED444(this); + CreateTask(Task_FightScene2_CameraHorizPanEffect, 0); + 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->data[5] = 0; + this->state++; } break; case 4: - this->field_0012++; - if (this->field_0012 >= 60) + this->data[5]++; + if (this->data[5] >= 60) { - this->field_0012 = 0; - DestroyTask(FindTaskIdByFunc(sub_80ED40C)); - sub_80ED4A0(this); - CreateTask(sub_80ED428, 0); + this->data[5] = 0; + DestroyTask(FindTaskIdByFunc(Task_FightScene2_CameraHorizPanEffect)); + DestroyStaticMonSprites(this); + CreateTask(Task_FightScene2_CameraVertPanEffect, 0); ChangeBgY(3, 0x00010000, 0); HideBg(0); ShowBg(3); ShowBg(1); ShowBg(2); - this->field_0004++; + this->state++; } break; case 5: if (!IsDma3ManagerBusyWithBgCopy()) { - this->field_0012 = 0; - this->field_0004++; + this->data[5] = 0; + this->state++; } break; case 6: - this->field_0012++; - if (this->field_0012 >= 60) + this->data[5]++; + if (this->data[5] >= 60) { - DestroyTask(FindTaskIdByFunc(sub_80ED428)); - sub_80ECAA8(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); } -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) +static void DestroyStaticMonSprites(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) +static void IntroCB_FightScene3(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: - LoadPalette(gUnknown_8407430, 0x10, 0x40); - LoadPalette(gUnknown_8405DA4, 0x50, 0x20); + LoadPalette(sBg1Pal_FightScene3, 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); 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); @@ -1134,13 +1129,13 @@ 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); ChangeBgY(0, 0x0001F000, 0); - this->field_0004++; + this->state++; } break; case 2: @@ -1148,26 +1143,26 @@ 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); - CreateTask(sub_80EE200, 0); - sub_80ED6D8(); - this->field_0012 = 0; - this->field_0004++; + CreateTask(Task_FightScene3_ForestBgScroll, 0); + CreateNidorinoAnimSprite(this); + StartNidorinoAnimSpriteSlideIn(this->nidorinoAnimSprite, 0, 0xB4, 0x34); + CreateTask(Task_FightScene3_Bg0Scroll, 0); + FightScene3_StartBg1Scroll(); + this->data[5] = 0; + this->state++; } break; case 3: - this->field_0012++; - if (this->field_0012 == 16) - sub_80ED7D4(this); - if (!sub_80EE5C8(this) && !FuncIsActiveTask(sub_80EE200)) - sub_80ECAA8(this, sub_80ED898); + this->data[5]++; + if (this->data[5] == 16) + CreateGrassSprite(this); + 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); @@ -1175,18 +1170,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) @@ -1201,37 +1196,37 @@ 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]; } -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; @@ -1247,7 +1242,7 @@ static void sub_80ED818(struct Sprite * sprite) sprite->pos1.x = data[1] >> 5; if (sprite->pos1.x <= 52) { - sub_80ED6EC(); + FightScene3_SlowBg1Scroll(); data[0]++; } break; @@ -1264,206 +1259,207 @@ static void sub_80ED818(struct Sprite * sprite) } } -static void sub_80ED898(struct IntroSequenceData * this) +static void IntroCB_FightScene4(struct IntroSequenceData * this) { - switch (this->field_0004) + switch (this->state) { case 0: - this->field_0012 = 0; - this->field_0004++; + this->data[5] = 0; + this->state++; break; case 1: - this->field_0012++; - if (this->field_0012 > 30) + this->data[5]++; + if (this->data[5] > 30) { - sub_80EE5E4(this); - this->field_0004++; + FightScene4_NidorinoRearsUp(this); + this->state++; } break; case 2: - if (!sub_80EE850(this)) + if (!FightScene4_NidorinoAnimIsRunning(this)) { - this->field_0012 = 0; - this->field_0004++; + this->data[5] = 0; + this->state++; } break; case 3: - this->field_0012++; - if (this->field_0012 > 30) + this->data[5]++; + if (this->data[5] > 30) { - sub_80ED760(); - sub_80EDF94(this); - this->field_0012 = 0; - this->field_0004++; + FightScene3_PauseForestBgScroll(); + FightScene4_StartGengarAttack(this); + this->data[5] = 0; + this->state++; } break; case 4: - if (this->field_0006) + if (this->gengarAttackLanded) { - sub_80EE6A4(this); - this->field_0004++; + FightScene4_StartNidorinoRecoilAnim(this); + this->state++; } break; case 5: - if (!sub_80EE850(this)) + if (!FightScene4_NidorinoAnimIsRunning(this)) { - sub_80ED788(); - this->field_0012 = 0; - this->field_0004++; + FightScene3_ResumeForestBgScroll(); + this->data[5] = 0; + this->state++; } break; case 6: - this->field_0012++; - if (this->field_0012 > 16) + this->data[5]++; + if (this->data[5] > 16) { - sub_80EE970(this->field_0018, 8, 12, 5); - this->field_0004++; + StartSpriteHopToPosAnim(this->nidorinoAnimSprite, 8, 12, 5); + this->state++; } break; case 7: - if (!sub_80EE850(this)) + if (!FightScene4_NidorinoAnimIsRunning(this)) { - sub_80EE970(this->field_0018, 8, 12, 5); - this->field_0004++; + StartSpriteHopToPosAnim(this->nidorinoAnimSprite, 8, 12, 5); + this->state++; } break; case 8: - if (!sub_80EE850(this)) + if (!FightScene4_NidorinoAnimIsRunning(this)) { - this->field_0012 = 0; - this->field_0004++; + this->data[5] = 0; + this->state++; } break; case 9: - this->field_0012++; - if (this->field_0012 > 20) + this->data[5]++; + if (this->data[5] > 20) { - sub_80EEA94(this); - this->field_0012 = 0; - this->field_0004++; + StartNidorinoAnim_LaunchSelfAtGengarAnim(this); + this->data[5] = 0; + this->state++; } break; case 10: - if (!sub_80ED7B0()) + if (!FightScene3_GetForestBgScrollState()) { - sub_80ED760(); - sub_80EDAF0(this); - this->field_0004++; + FightScene3_PauseForestBgScroll(); + CreateGengarBackSprite(this); + this->state++; } break; case 11: HideBg(0); - this->field_0012 = 0; - this->field_0004++; + this->data[5] = 0; + this->state++; break; case 12: - this->field_0012++; - if (this->field_0012 == 48) + this->data[5]++; + if (this->data[5] == 48) BeginNormalPaletteFade(0x00000006, 2, 0, 16, RGB_WHITE); - if (this->field_0012 > 120) + if (this->data[5] > 120) { - sub_80EDB70(this); - sub_80EDBAC(this); - this->field_0004++; - this->field_0012 = 0; + FightScene4_StartNidorinoAffineAnim(this); + FightScene4_StartGengarAffineAnim(this); + this->state++; + this->data[5] = 0; } break; case 13: - this->field_0012++; - if (this->field_0012 > 8) + this->data[5]++; + if (this->data[5] > 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->data[5] = 0; + this->state++; } break; case 15: - this->field_0012++; - if (this->field_0012 > 60) - sub_80ECAA8(this, sub_80EDBE8); + this->data[5]++; + if (this->data[5] > 60) + SetIntroCB(this, IntroCB_CleanUp); 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->data[5] = 30; } break; } } -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); } -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; + FightScene_CalcCenterToCornerVec(this->gengarBackSpriteArray[i]); } } } -static void sub_80EDB70(struct IntroSequenceData * this) +static void FightScene4_StartNidorinoAffineAnim(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) +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->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 = SpriteCB_DummyButNotDummy; + obj_pos2_update_enable(this->gengarBackSpriteArray[i], sGengarBackSpritePos2UpdateMods[i][0], sGengarBackSpritePos2UpdateMods[i][1]); } } -static void sub_80EDBE8(struct IntroSequenceData * this) +static void IntroCB_CleanUp(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()) { - DestroyTask(this->field_0005); + DestroyTask(this->taskId); Free(this); DisableInterrupts(INTR_FLAG_HBLANK); SetHBlankCallback(NULL); @@ -1473,16 +1469,17 @@ static void sub_80EDBE8(struct IntroSequenceData * this) } } -static void sub_80EDC40(void) +static void GameFreakScene_LoadGfxCreateStar(void) { int i; u8 spriteId; + static EWRAM_DATA u32 gUnknown_203AB28 = 0; - 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,19 +1493,21 @@ 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) { + static EWRAM_DATA s16 gUnknown_203AB2C = 0; + u8 spriteId; s16 r4 = (a2 & gUnknown_203AB12) + 2; s16 r2 = gUnknown_203AB2C; @@ -1519,7 +1518,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 +1529,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 +1545,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].callback = SpriteCB_TrailingSparkles2; + 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 +1565,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 +1579,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,34 +1591,34 @@ 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 -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); + this->gengarAttackLanded = FALSE; + 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); @@ -1627,7 +1626,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; @@ -1653,7 +1652,7 @@ static void sub_80EE024(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; @@ -1665,7 +1664,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; @@ -1694,34 +1693,35 @@ 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; - 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; 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; + static EWRAM_DATA u32 gUnknown_203AB30 = 0; switch (data[0]) { @@ -1745,7 +1745,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]; @@ -1761,13 +1761,13 @@ 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); } -static void sub_80EE350(struct Sprite * sprite) +static void SpriteCB_TrailingSparkles(struct Sprite * sprite) { u32 v; @@ -1790,7 +1790,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]) { @@ -1839,31 +1839,31 @@ 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); } -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) +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) @@ -1880,21 +1880,21 @@ static void sub_80EE580(struct Sprite * sprite) } } -static bool32 sub_80EE5C8(struct IntroSequenceData * ptr) +static bool32 IsNidorinoAnimSpriteSlideInRunning(struct IntroSequenceData * ptr) { - return ptr->field_0018->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->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 = SpriteCB_NidorinoRearsUp; } -static void sub_80EE610(struct Sprite * sprite) +static void SpriteCB_NidorinoRearsUp(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -1930,23 +1930,23 @@ 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; 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 = SpriteCB_NidorinoRecoil; } -static void sub_80EE704(struct Sprite * sprite) +static void SpriteCB_NidorinoRecoil(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -1985,7 +1985,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) @@ -1999,36 +1999,36 @@ 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->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; } } } -static void sub_80EE8E4(struct Sprite * sprite) +static void SpriteCB_NidorinoRecoilDust(struct Sprite * sprite) { s16 * data = sprite->data; @@ -2056,7 +2056,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; @@ -2067,10 +2067,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]) { @@ -2117,26 +2117,26 @@ static void sub_80EE9D4(struct Sprite * sprite) } } -static void sub_80EEA94(struct IntroSequenceData * ptr) +static void StartNidorinoAnim_LaunchSelfAtGengarAnim(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 = SpriteCB_NidorinoAnim_LaunchSelfAtGengar; } -static void sub_80EEB08(struct Sprite * sprite) +static void SpriteCB_NidorinoAnim_LaunchSelfAtGengar(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -2178,15 +2178,15 @@ static void sub_80EEB08(struct Sprite * sprite) } } -static void sub_80EEBE4(void) +static void LoadFightSceneSpriteTilesAndPals(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); } |