From c86cc8b371efa875446796fb44c7e285c4b26f70 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 5 Mar 2021 15:13:08 -0500 Subject: Document intro, start intro_credits/credits --- src/credits.c | 1170 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 585 insertions(+), 585 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 84b802005..f39c0ff85 100644 --- a/src/credits.c +++ b/src/credits.c @@ -137,7 +137,7 @@ struct CreditsData u16 numMonToShow; //number of pokemon to show, always NUM_MON_SLIDES after determine function u16 caughtMonIds[NATIONAL_DEX_COUNT]; //temporary location to hold a condensed array of all caught pokemon u16 numCaughtMon; //count of filled spaces in caughtMonIds - u16 unk39C[7]; // unused padding? + u16 unused[7]; }; struct CreditsEntry @@ -161,7 +161,7 @@ static const u16 gUnknown_085E56F0[][16] = INCBIN_U16("graphics/credits/credits_4.gbapal"), }; -static const u32 gCreditsCopyrightEnd_Gfx[] = INCBIN_U32("graphics/credits/the_end_copyright.4bpp.lz"); +static const u32 sCreditsCopyrightEnd_Gfx[] = INCBIN_U32("graphics/credits/the_end_copyright.4bpp.lz"); static void sub_81772B8(struct Sprite *sprite); @@ -210,724 +210,724 @@ static const u8 sTheEnd_LetterDMap[] = 1, 0x86, 0x87, }; -static const u8 gCreditsText_EmptyString[] = _(""); -static const u8 gCreditsText_PkmnEmeraldVersion[] = _("POKéMON EMERALD VERSION"); -static const u8 gCreditsText_Credits[] = _("Credits"); -static const u8 gCreditsText_ExecutiveDirector[] = _("Executive Director"); -static const u8 gCreditsText_Director[] = _("Director"); -static const u8 gCreditsText_ArtDirector[] = _("Art Director"); -static const u8 gCreditsText_BattleDirector[] = _("Battle Director"); -static const u8 gCreditsText_MainProgrammer[] = _("Main Programmer"); -static const u8 gCreditsText_BattleSystemPgrms[] = _("Battle System Programmers"); -static const u8 gCreditsText_FieldSystemPgrms[] = _("Field System Programmer"); -static const u8 gCreditsText_Programmers[] = _("Programmers"); -static const u8 gCreditsText_MainGraphicDesigner[] = _("Main Graphic Designer"); -static const u8 gCreditsText_GraphicDesigners[] = _("Graphic Designers"); -static const u8 gCreditsText_PkmnDesigners[] = _("POKéMON Designers"); -static const u8 gCreditsText_MusicComposition[] = _("Music Composition"); -static const u8 gCreditsText_SoundEffectsAndPkmnVoices[] = _("Sound Effects & POKéMON Voices"); -static const u8 gCreditsText_GameDesigners[] = _("Game Designers"); -static const u8 gCreditsText_ScenarioPlot[] = _("Scenario Plot"); -static const u8 gCreditsText_Scenario[] = _("Scenario"); -static const u8 gCreditsText_ScriptDesigners[] = _("Script Designers"); -static const u8 gCreditsText_MapDesigners[] = _("Map Designers"); -static const u8 gCreditsText_MapDataDesigners[] = _("Map Data Designers"); -static const u8 gCreditsText_ParametricDesigners[] = _("Parametric Designers"); -static const u8 gCreditsText_PokedexText[] = _("POKéDEX Text"); -static const u8 gCreditsText_EnvAndToolPgrms[] = _("Environment & Tool Programmers"); -static const u8 gCreditsText_NCLProductTesting[] = _("NCL Product Testing"); -static const u8 gCreditsText_SpecialThanks[] = _("Special Thanks"); -static const u8 gCreditsText_Coordinators[] = _("Coordinators"); -static const u8 gCreditsText_Producers[] = _("Producers"); -static const u8 gCreditsText_ExecProducers[] = _("Executive Producers"); -static const u8 gCreditsText_InfoSupervisors[] = _("Information Supervisors"); -static const u8 gCreditsText_TaskManagers[] = _("Task Managers"); -static const u8 gCreditsText_BrailleCodeCheck[] = _("Braille Code Check"); -static const u8 gCreditsText_WorldDirector[] = _("World Director"); -static const u8 gCreditsText_BattleFrontierData[] = _("Battle Frontier Data"); -static const u8 gCreditsText_SupportProgrammers[] = _("Support Programmers"); -static const u8 gCreditsText_Artwork[] = _("Artwork"); -static const u8 gCreditsText_LeadProgrammer[] = _("Lead Programmer"); -static const u8 gCreditsText_LeadGraphicArtist[] = _("Lead Graphic Artist"); -static const u8 gCreditsText_SatoshiTajiri[] = _("Satoshi Tajiri"); -static const u8 gCreditsText_JunichiMasuda[] = _("Junichi Masuda"); -static const u8 gCreditsText_KenSugimori[] = _("Ken Sugimori"); -static const u8 gCreditsText_ShigekiMorimoto[] = _("Shigeki Morimoto"); -static const u8 gCreditsText_TetsuyaWatanabe[] = _("Tetsuya Watanabe"); -static const u8 gCreditsText_HisashiSogabe[] = _("Hisashi Sogabe"); -static const u8 gCreditsText_SosukeTamada[] = _("Sosuke Tamada"); -static const u8 gCreditsText_AkitoMori[] = _("Akito Mori"); -static const u8 gCreditsText_KeitaKagaya[] = _("Keita Kagaya"); -static const u8 gCreditsText_YoshinoriMatsuda[] = _("Yoshinori Matsuda"); -static const u8 gCreditsText_HiroyukiNakamura[] = _("Hiroyuki Nakamura"); -static const u8 gCreditsText_MasaoTaya[] = _("Masao Taya"); -static const u8 gCreditsText_SatoshiNohara[] = _("Satoshi Nohara"); -static const u8 gCreditsText_TomomichiOhta[] = _("Tomomichi Ohta"); -static const u8 gCreditsText_MiyukiIwasawa[] = _("Miyuki Iwasawa"); -static const u8 gCreditsText_TakenoriOhta[] = _("Takenori Ohta"); -static const u8 gCreditsText_HironobuYoshida[] = _("Hironobu Yoshida"); -static const u8 gCreditsText_MotofumiFujiwara[] = _("Motofumi Fujiwara"); -static const u8 gCreditsText_SatoshiOhta[] = _("Satoshi Ohta"); -static const u8 gCreditsText_AsukaIwashita[] = _("Asuka Iwashita"); -static const u8 gCreditsText_AimiTomita[] = _("Aimi Tomita"); -static const u8 gCreditsText_TakaoUnno[] = _("Takao Unno"); -static const u8 gCreditsText_KanakoEo[] = _("Kanako Eo"); -static const u8 gCreditsText_JunOkutani[] = _("Jun Okutani"); -static const u8 gCreditsText_AtsukoNishida[] = _("Atsuko Nishida"); -static const u8 gCreditsText_MuneoSaito[] = _("Muneo Saito"); -static const u8 gCreditsText_RenaYoshikawa[] = _("Rena Yoshikawa"); -static const u8 gCreditsText_GoIchinose[] = _("Go Ichinose"); -static const u8 gCreditsText_MorikazuAoki[] = _("Morikazu Aoki"); -static const u8 gCreditsText_KojiNishino[] = _("Koji Nishino"); -static const u8 gCreditsText_KenjiMatsushima[] = _("Kenji Matsushima"); -static const u8 gCreditsText_TetsujiOhta[] = _("Tetsuji Ohta"); -static const u8 gCreditsText_HitomiSato[] = _("Hitomi Sato"); -static const u8 gCreditsText_TakeshiKawachimaru[] = _("Takeshi Kawachimaru"); -static const u8 gCreditsText_TeruyukiShimoyamada[] = _("Teruyuki Shimoyamada"); -static const u8 gCreditsText_ShigeruOhmori[] = _("Shigeru Ohmori"); -static const u8 gCreditsText_TadashiTakahashi[] = _("Tadashi Takahashi"); -static const u8 gCreditsText_ToshinobuMatsumiya[] = _("Toshinobu Matsumiya"); -static const u8 gCreditsText_AkihitoTomisawa[] = _("Akihito Tomisawa"); -static const u8 gCreditsText_HirokiEnomoto[] = _("Hiroki Enomoto"); -static const u8 gCreditsText_KazuyukiTerada[] = _("Kazuyuki Terada"); -static const u8 gCreditsText_YuriSakurai[] = _("Yuri Sakurai"); -static const u8 gCreditsText_HiromiSagawa[] = _("Hiromi Sagawa"); -static const u8 gCreditsText_KenjiTominaga[] = _("Kenji Tominaga"); -static const u8 gCreditsText_YoshioTajiri[] = _("Yoshio Tajiri"); -static const u8 gCreditsText_TeikoSasaki[] = _("Teiko Sasaki"); -static const u8 gCreditsText_SachikoHamano[] = _("Sachiko Hamano"); -static const u8 gCreditsText_ChieMatsumiya[] = _("Chie Matsumiya"); -static const u8 gCreditsText_AkikoShinozaki[] = _("Akiko Shinozaki"); -static const u8 gCreditsText_AstukoFujii[] = _("Astuko Fujii"); -static const u8 gCreditsText_NozomuSaito[] = _("Nozomu Saito"); -static const u8 gCreditsText_KenkichiToyama[] = _("Kenkichi Toyama"); -static const u8 gCreditsText_SuguruNakatsui[] = _("Suguru Nakatsui"); -static const u8 gCreditsText_YumiFunasaka[] = _("Yumi Funasaka"); -static const u8 gCreditsText_NaokoYanase[] = _("Naoko Yanase"); -static const u8 gCreditsText_NCLSuperMarioClub[] = _("NCL Super Mario Club"); -static const u8 gCreditsText_AtsushiTada[] = _("Atsushi Tada"); -static const u8 gCreditsText_TakahiroOhnishi[] = _("Takahiro Ohnishi"); -static const u8 gCreditsText_NorihideOkamura[] = _("Norihide Okamura"); -static const u8 gCreditsText_HiroNakamura[] = _("Hiro Nakamura"); -static const u8 gCreditsText_HiroyukiUesugi[] = _("Hiroyuki Uesugi"); -static const u8 gCreditsText_TerukiMurakawa[] = _("Teruki Murakawa"); -static const u8 gCreditsText_AkiraKinashi[] = _("Akira Kinashi"); -static const u8 gCreditsText_MichikoTakizawa[] = _("Michiko Takizawa"); -static const u8 gCreditsText_MakikoTakada[] = _("Makiko Takada"); -static const u8 gCreditsText_TakanaoKondo[] = _("Takanao Kondo"); -static const u8 gCreditsText_AiMashima[] = _("Ai Mashima"); -static const u8 gCreditsText_GakujiNomoto[] = _("Gakuji Nomoto"); -static const u8 gCreditsText_TakehiroIzushi[] = _("Takehiro Izushi"); -static const u8 gCreditsText_HitoshiYamagami[] = _("Hitoshi Yamagami"); -static const u8 gCreditsText_KyokoWatanabe[] = _("Kyoko Watanabe"); -static const u8 gCreditsText_TakaoNakano[] = _("Takao Nakano"); -static const u8 gCreditsText_HiroyukiJinnai[] = _("Hiroyuki Jinnai"); -static const u8 gCreditsText_HiroakiTsuru[] = _("Hiroaki Tsuru"); -static const u8 gCreditsText_TsunekazIshihara[] = _("Tsunekaz Ishihara"); -static const u8 gCreditsText_SatoruIwata[] = _("Satoru Iwata"); -static const u8 gCreditsText_KazuyaSuyama[] = _("Kazuya Suyama"); -static const u8 gCreditsText_SatoshiMitsuhara[] = _("Satoshi Mitsuhara"); -static const u8 gCreditsText_JapanBrailleLibrary[] = _("Japan Braille Library"); -static const u8 gCreditsText_TomotakaKomura[] = _("Tomotaka Komura"); -static const u8 gCreditsText_MikikoOhhashi[] = _("Mikiko Ohhashi"); -static const u8 gCreditsText_DaisukeHoshino[] = _("Daisuke Hoshino"); -static const u8 gCreditsText_KenjiroIto[] = _("Kenjiro Ito"); -static const u8 gCreditsText_RuiKawaguchi[] = _("Rui Kawaguchi"); -static const u8 gCreditsText_ShunsukeKohori[] = _("Shunsuke Kohori"); -static const u8 gCreditsText_SachikoNakamichi[] = _("Sachiko Nakamichi"); -static const u8 gCreditsText_FujikoNomura[] = _("Fujiko Nomura"); -static const u8 gCreditsText_KazukiYoshihara[] = _("Kazuki Yoshihara"); -static const u8 gCreditsText_RetsujiNomoto[] = _("Retsuji Nomoto"); -static const u8 gCreditsText_AzusaTajima[] = _("Azusa Tajima"); -static const u8 gCreditsText_ShusakuEgami[] = _("Shusaku Egami"); -static const u8 gCreditsText_PackageAndManual[] = _("Package & Manual Illustration"); -static const u8 gCreditsText_EnglishVersion[] = _("English Version Coordinators"); -static const u8 gCreditsText_Translator[] = _("Translator"); -static const u8 gCreditsText_TextEditor[] = _("Text Editor"); -static const u8 gCreditsText_NCLCoordinator[] = _("NCL Coordinator"); -static const u8 gCreditsText_GraphicDesigner[] = _("Graphic Designer"); -static const u8 gCreditsText_NOAProductTesting[] = _("NOA Product Testing"); -static const u8 gCreditsText_HideyukiNakajima[] = _("Hideyuki Nakajima"); -static const u8 gCreditsText_HidenoriSaeki[] = _("Hidenori Saeki"); -static const u8 gCreditsText_YokoWatanabe[] = _("Yoko Watanabe"); -static const u8 gCreditsText_SakaeKimura[] = _("Sakae Kimura"); -static const u8 gCreditsText_ChiakiShinkai[] = _("Chiaki Shinkai"); -static const u8 gCreditsText_SethMcMahill[] = _("Seth McMahill"); -static const u8 gCreditsText_NobOgasawara[] = _("Nob Ogasawara"); -static const u8 gCreditsText_TeresaLillygren[] = _("Teresa Lillygren"); -static const u8 gCreditsText_KimikoNakamichi[] = _("Kimiko Nakamichi"); -static const u8 gCreditsText_SouichiYamamoto[] = _("Souichi Yamamoto"); -static const u8 gCreditsText_YuichiroIto[] = _("Yuichiro Ito"); -static const u8 gCreditsText_ThomasHertzog[] = _("Thomas Hertzog"); -static const u8 gCreditsText_MikaKurosawa[] = _("Mika Kurosawa"); -static const u8 gCreditsText_NationalFederationBlind[] = _("National Federation of the Blind"); -static const u8 gCreditsText_PatriciaAMaurer[] = _("Patricia A. Maurer"); -static const u8 gCreditsText_EuropeanBlindUnion[] = _("European Blind Union"); -static const u8 gCreditsText_AustralianBrailleAuthority[] = _("Australian Braille Authority"); -static const u8 gCreditsText_RoyalNewZealandFederationBlind[] = _("Royal New Zealand Federation for the Blind"); -static const u8 gCreditsText_MotoyasuTojima[] = _("Motoyasu Tojima"); -static const u8 gCreditsText_NicolaPrattBarlow[] = _("Nicola Pratt-Barlow"); -static const u8 gCreditsText_ShellieDow[] = _("Shellie Dow"); -static const u8 gCreditsText_ErikJohnson[] = _("Erik Johnson"); -static const struct CreditsEntry gCreditsEntry_EmptyString[] = {0, FALSE, gCreditsText_EmptyString}; -static const struct CreditsEntry gCreditsEntry_PkmnEmeraldVersion[] = {7, TRUE, gCreditsText_PkmnEmeraldVersion}; -static const struct CreditsEntry gCreditsEntry_Credits[] = {11, TRUE, gCreditsText_Credits}; -static const struct CreditsEntry gCreditsEntry_ExecutiveDirector[] = {8, TRUE, gCreditsText_ExecutiveDirector}; -static const struct CreditsEntry gCreditsEntry_Director[] = {12, TRUE, gCreditsText_Director}; -static const struct CreditsEntry gCreditsEntry_ArtDirector[] = {10, TRUE, gCreditsText_ArtDirector}; -static const struct CreditsEntry gCreditsEntry_BattleDirector[] = {10, TRUE, gCreditsText_BattleDirector}; -static const struct CreditsEntry gCreditsEntry_MainProgrammer[] = {10, TRUE, gCreditsText_MainProgrammer}; -static const struct CreditsEntry gCreditsEntry_BattleSystemPgrms[] = {8, TRUE, gCreditsText_BattleSystemPgrms}; -static const struct CreditsEntry gCreditsEntry_FieldSystemPgrms[] = {7, TRUE, gCreditsText_FieldSystemPgrms}; -static const struct CreditsEntry gCreditsEntry_Programmers[] = {12, TRUE, gCreditsText_Programmers}; -static const struct CreditsEntry gCreditsEntry_MainGraphicDesigner[] = {7, TRUE, gCreditsText_MainGraphicDesigner}; -static const struct CreditsEntry gCreditsEntry_GraphicDesigners[] = {9, TRUE, gCreditsText_GraphicDesigners}; -static const struct CreditsEntry gCreditsEntry_PkmnDesigners[] = {10, TRUE, gCreditsText_PkmnDesigners}; -static const struct CreditsEntry gCreditsEntry_MusicComposition[] = {13, TRUE, gCreditsText_MusicComposition}; -static const struct CreditsEntry gCreditsEntry_SoundEffectsAndPkmnVoices[] = {4, TRUE, gCreditsText_SoundEffectsAndPkmnVoices}; -static const struct CreditsEntry gCreditsEntry_GameDesigners[] = {11, TRUE, gCreditsText_GameDesigners}; -static const struct CreditsEntry gCreditsEntry_ScenarioPlot[] = {11, TRUE, gCreditsText_ScenarioPlot}; -static const struct CreditsEntry gCreditsEntry_Scenario[] = {13, TRUE, gCreditsText_Scenario}; -static const struct CreditsEntry gCreditsEntry_ScriptDesigners[] = {10, TRUE, gCreditsText_ScriptDesigners}; -static const struct CreditsEntry gCreditsEntry_MapDesigners[] = {11, TRUE, gCreditsText_MapDesigners}; -static const struct CreditsEntry gCreditsEntry_MapDataDesigners[] = {9, TRUE, gCreditsText_MapDataDesigners}; -static const struct CreditsEntry gCreditsEntry_ParametricDesigners[] = {9, TRUE, gCreditsText_ParametricDesigners}; -static const struct CreditsEntry gCreditsEntry_PokedexText[] = {11, TRUE, gCreditsText_PokedexText}; -static const struct CreditsEntry gCreditsEntry_EnvAndToolPgrms[] = {6, TRUE, gCreditsText_EnvAndToolPgrms}; -static const struct CreditsEntry gCreditsEntry_NCLProductTesting[] = {11, TRUE, gCreditsText_NCLProductTesting}; -static const struct CreditsEntry gCreditsEntry_SpecialThanks[] = {10, TRUE, gCreditsText_SpecialThanks}; -static const struct CreditsEntry gCreditsEntry_Coordinators[] = {11, TRUE, gCreditsText_Coordinators}; -static const struct CreditsEntry gCreditsEntry_Producers[] = {11, TRUE, gCreditsText_Producers}; -static const struct CreditsEntry gCreditsEntry_ExecProducers[] = {7, TRUE, gCreditsText_ExecProducers}; -static const struct CreditsEntry gCreditsEntry_InfoSupervisors[] = {10, TRUE, gCreditsText_InfoSupervisors}; -static const struct CreditsEntry gCreditsEntry_TaskManagers[] = {8, TRUE, gCreditsText_TaskManagers}; -static const struct CreditsEntry gCreditsEntry_BrailleCodeCheck[] = {10, TRUE, gCreditsText_BrailleCodeCheck}; -static const struct CreditsEntry gCreditsEntry_WorldDirector[] = {10, TRUE, gCreditsText_WorldDirector}; -static const struct CreditsEntry gCreditsEntry_BattleFrontierData[] = {8, TRUE, gCreditsText_BattleFrontierData}; -static const struct CreditsEntry gCreditsEntry_SupportProgrammers[] = {10, TRUE, gCreditsText_SupportProgrammers}; -static const struct CreditsEntry gCreditsEntry_Artwork[] = {12, TRUE, gCreditsText_Artwork}; -static const struct CreditsEntry gCreditsEntry_LeadProgrammer[] = {10, TRUE, gCreditsText_LeadProgrammer}; -static const struct CreditsEntry gCreditsEntry_LeadGraphicArtist[] = {9, TRUE, gCreditsText_LeadGraphicArtist}; -static const struct CreditsEntry gCreditsEntry_SatoshiTajiri[] = {11, FALSE, gCreditsText_SatoshiTajiri}; -static const struct CreditsEntry gCreditsEntry_JunichiMasuda[] = {11, FALSE, gCreditsText_JunichiMasuda}; -static const struct CreditsEntry gCreditsEntry_KenSugimori[] = {11, FALSE, gCreditsText_KenSugimori}; -static const struct CreditsEntry gCreditsEntry_ShigekiMorimoto[] = {11, FALSE, gCreditsText_ShigekiMorimoto}; -static const struct CreditsEntry gCreditsEntry_TetsuyaWatanabe[] = {11, FALSE, gCreditsText_TetsuyaWatanabe}; -static const struct CreditsEntry gCreditsEntry_HisashiSogabe[] = {11, FALSE, gCreditsText_HisashiSogabe}; -static const struct CreditsEntry gCreditsEntry_SosukeTamada[] = {11, FALSE, gCreditsText_SosukeTamada}; -static const struct CreditsEntry gCreditsEntry_AkitoMori[] = {11, FALSE, gCreditsText_AkitoMori}; -static const struct CreditsEntry gCreditsEntry_KeitaKagaya[] = {11, FALSE, gCreditsText_KeitaKagaya}; -static const struct CreditsEntry gCreditsEntry_YoshinoriMatsuda[] = {11, FALSE, gCreditsText_YoshinoriMatsuda}; -static const struct CreditsEntry gCreditsEntry_HiroyukiNakamura[] = {11, FALSE, gCreditsText_HiroyukiNakamura}; -static const struct CreditsEntry gCreditsEntry_MasaoTaya[] = {11, FALSE, gCreditsText_MasaoTaya}; -static const struct CreditsEntry gCreditsEntry_SatoshiNohara[] = {11, FALSE, gCreditsText_SatoshiNohara}; -static const struct CreditsEntry gCreditsEntry_TomomichiOhta[] = {11, FALSE, gCreditsText_TomomichiOhta}; -static const struct CreditsEntry gCreditsEntry_MiyukiIwasawa[] = {11, FALSE, gCreditsText_MiyukiIwasawa}; -static const struct CreditsEntry gCreditsEntry_TakenoriOhta[] = {11, FALSE, gCreditsText_TakenoriOhta}; -static const struct CreditsEntry gCreditsEntry_HironobuYoshida[] = {11, FALSE, gCreditsText_HironobuYoshida}; -static const struct CreditsEntry gCreditsEntry_MotofumiFujiwara[] = {11, FALSE, gCreditsText_MotofumiFujiwara}; -static const struct CreditsEntry gCreditsEntry_SatoshiOhta[] = {11, FALSE, gCreditsText_SatoshiOhta}; -static const struct CreditsEntry gCreditsEntry_AsukaIwashita[] = {11, FALSE, gCreditsText_AsukaIwashita}; -static const struct CreditsEntry gCreditsEntry_AimiTomita[] = {11, FALSE, gCreditsText_AimiTomita}; -static const struct CreditsEntry gCreditsEntry_TakaoUnno[] = {11, FALSE, gCreditsText_TakaoUnno}; -static const struct CreditsEntry gCreditsEntry_KanakoEo[] = {11, FALSE, gCreditsText_KanakoEo}; -static const struct CreditsEntry gCreditsEntry_JunOkutani[] = {11, FALSE, gCreditsText_JunOkutani}; -static const struct CreditsEntry gCreditsEntry_AtsukoNishida[] = {11, FALSE, gCreditsText_AtsukoNishida}; -static const struct CreditsEntry gCreditsEntry_MuneoSaito[] = {11, FALSE, gCreditsText_MuneoSaito}; -static const struct CreditsEntry gCreditsEntry_RenaYoshikawa[] = {11, FALSE, gCreditsText_RenaYoshikawa}; -static const struct CreditsEntry gCreditsEntry_GoIchinose[] = {11, FALSE, gCreditsText_GoIchinose}; -static const struct CreditsEntry gCreditsEntry_MorikazuAoki[] = {11, FALSE, gCreditsText_MorikazuAoki}; -static const struct CreditsEntry gCreditsEntry_KojiNishino[] = {11, FALSE, gCreditsText_KojiNishino}; -static const struct CreditsEntry gCreditsEntry_KenjiMatsushima[] = {11, FALSE, gCreditsText_KenjiMatsushima}; -static const struct CreditsEntry gCreditsEntry_TetsujiOhta[] = {11, FALSE, gCreditsText_TetsujiOhta}; -static const struct CreditsEntry gCreditsEntry_HitomiSato[] = {11, FALSE, gCreditsText_HitomiSato}; -static const struct CreditsEntry gCreditsEntry_TakeshiKawachimaru[] = {11, FALSE, gCreditsText_TakeshiKawachimaru}; -static const struct CreditsEntry gCreditsEntry_TeruyukiShimoyamada[] = {11, FALSE, gCreditsText_TeruyukiShimoyamada}; -static const struct CreditsEntry gCreditsEntry_ShigeruOhmori[] = {11, FALSE, gCreditsText_ShigeruOhmori}; -static const struct CreditsEntry gCreditsEntry_TadashiTakahashi[] = {11, FALSE, gCreditsText_TadashiTakahashi}; -static const struct CreditsEntry gCreditsEntry_ToshinobuMatsumiya[] = {11, FALSE, gCreditsText_ToshinobuMatsumiya}; -static const struct CreditsEntry gCreditsEntry_AkihitoTomisawa[] = {11, FALSE, gCreditsText_AkihitoTomisawa}; -static const struct CreditsEntry gCreditsEntry_HirokiEnomoto[] = {11, FALSE, gCreditsText_HirokiEnomoto}; -static const struct CreditsEntry gCreditsEntry_KazuyukiTerada[] = {11, FALSE, gCreditsText_KazuyukiTerada}; -static const struct CreditsEntry gCreditsEntry_YuriSakurai[] = {11, FALSE, gCreditsText_YuriSakurai}; -static const struct CreditsEntry gCreditsEntry_HiromiSagawa[] = {11, FALSE, gCreditsText_HiromiSagawa}; -static const struct CreditsEntry gCreditsEntry_KenjiTominaga[] = {11, FALSE, gCreditsText_KenjiTominaga}; -static const struct CreditsEntry gCreditsEntry_YoshioTajiri[] = {11, FALSE, gCreditsText_YoshioTajiri}; -static const struct CreditsEntry gCreditsEntry_TeikoSasaki[] = {11, FALSE, gCreditsText_TeikoSasaki}; -static const struct CreditsEntry gCreditsEntry_SachikoHamano[] = {11, FALSE, gCreditsText_SachikoHamano}; -static const struct CreditsEntry gCreditsEntry_ChieMatsumiya[] = {11, FALSE, gCreditsText_ChieMatsumiya}; -static const struct CreditsEntry gCreditsEntry_AkikoShinozaki[] = {11, FALSE, gCreditsText_AkikoShinozaki}; -static const struct CreditsEntry gCreditsEntry_AstukoFujii[] = {11, FALSE, gCreditsText_AstukoFujii}; -static const struct CreditsEntry gCreditsEntry_NozomuSaito[] = {11, FALSE, gCreditsText_NozomuSaito}; -static const struct CreditsEntry gCreditsEntry_KenkichiToyama[] = {11, FALSE, gCreditsText_KenkichiToyama}; -static const struct CreditsEntry gCreditsEntry_SuguruNakatsui[] = {11, FALSE, gCreditsText_SuguruNakatsui}; -static const struct CreditsEntry gCreditsEntry_YumiFunasaka[] = {11, FALSE, gCreditsText_YumiFunasaka}; -static const struct CreditsEntry gCreditsEntry_NaokoYanase[] = {11, FALSE, gCreditsText_NaokoYanase}; -static const struct CreditsEntry gCreditsEntry_NCLSuperMarioClub[] = {11, FALSE, gCreditsText_NCLSuperMarioClub}; -static const struct CreditsEntry gCreditsEntry_AtsushiTada[] = {11, FALSE, gCreditsText_AtsushiTada}; -static const struct CreditsEntry gCreditsEntry_TakahiroOhnishi[] = {11, FALSE, gCreditsText_TakahiroOhnishi}; -static const struct CreditsEntry gCreditsEntry_NorihideOkamura[] = {11, FALSE, gCreditsText_NorihideOkamura}; -static const struct CreditsEntry gCreditsEntry_HiroNakamura[] = {11, FALSE, gCreditsText_HiroNakamura}; -static const struct CreditsEntry gCreditsEntry_HiroyukiUesugi[] = {11, FALSE, gCreditsText_HiroyukiUesugi}; -static const struct CreditsEntry gCreditsEntry_TerukiMurakawa[] = {11, FALSE, gCreditsText_TerukiMurakawa}; -static const struct CreditsEntry gCreditsEntry_AkiraKinashi[] = {11, FALSE, gCreditsText_AkiraKinashi}; -static const struct CreditsEntry gCreditsEntry_MichikoTakizawa[] = {11, FALSE, gCreditsText_MichikoTakizawa}; -static const struct CreditsEntry gCreditsEntry_MakikoTakada[] = {11, FALSE, gCreditsText_MakikoTakada}; -static const struct CreditsEntry gCreditsEntry_TakanaoKondo[] = {11, FALSE, gCreditsText_TakanaoKondo}; -static const struct CreditsEntry gCreditsEntry_AiMashima[] = {11, FALSE, gCreditsText_AiMashima}; -static const struct CreditsEntry gCreditsEntry_GakujiNomoto[] = {11, FALSE, gCreditsText_GakujiNomoto}; -static const struct CreditsEntry gCreditsEntry_TakehiroIzushi[] = {11, FALSE, gCreditsText_TakehiroIzushi}; -static const struct CreditsEntry gCreditsEntry_HitoshiYamagami[] = {11, FALSE, gCreditsText_HitoshiYamagami}; -static const struct CreditsEntry gCreditsEntry_KyokoWatanabe[] = {11, FALSE, gCreditsText_KyokoWatanabe}; -static const struct CreditsEntry gCreditsEntry_TakaoNakano[] = {11, FALSE, gCreditsText_TakaoNakano}; -static const struct CreditsEntry gCreditsEntry_HiroyukiJinnai[] = {11, FALSE, gCreditsText_HiroyukiJinnai}; -static const struct CreditsEntry gCreditsEntry_HiroakiTsuru[] = {11, FALSE, gCreditsText_HiroakiTsuru}; -static const struct CreditsEntry gCreditsEntry_TsunekazIshihara[] = {11, FALSE, gCreditsText_TsunekazIshihara}; -static const struct CreditsEntry gCreditsEntry_SatoruIwata[] = {11, FALSE, gCreditsText_SatoruIwata}; -static const struct CreditsEntry gCreditsEntry_KazuyaSuyama[] = {11, FALSE, gCreditsText_KazuyaSuyama}; -static const struct CreditsEntry gCreditsEntry_SatoshiMitsuhara[] = {11, FALSE, gCreditsText_SatoshiMitsuhara}; -static const struct CreditsEntry gCreditsEntry_JapanBrailleLibrary[] = {9, FALSE, gCreditsText_JapanBrailleLibrary}; -static const struct CreditsEntry gCreditsEntry_TomotakaKomura[] = {11, FALSE, gCreditsText_TomotakaKomura}; -static const struct CreditsEntry gCreditsEntry_MikikoOhhashi[] = {11, FALSE, gCreditsText_MikikoOhhashi}; -static const struct CreditsEntry gCreditsEntry_DaisukeHoshino[] = {11, FALSE, gCreditsText_DaisukeHoshino}; -static const struct CreditsEntry gCreditsEntry_KenjiroIto[] = {11, FALSE, gCreditsText_KenjiroIto}; -static const struct CreditsEntry gCreditsEntry_RuiKawaguchi[] = {11, FALSE, gCreditsText_RuiKawaguchi}; -static const struct CreditsEntry gCreditsEntry_ShunsukeKohori[] = {11, FALSE, gCreditsText_ShunsukeKohori}; -static const struct CreditsEntry gCreditsEntry_SachikoNakamichi[] = {11, FALSE, gCreditsText_SachikoNakamichi}; -static const struct CreditsEntry gCreditsEntry_FujikoNomura[] = {11, FALSE, gCreditsText_FujikoNomura}; -static const struct CreditsEntry gCreditsEntry_KazukiYoshihara[] = {11, FALSE, gCreditsText_KazukiYoshihara}; -static const struct CreditsEntry gCreditsEntry_RetsujiNomoto[] = {11, FALSE, gCreditsText_RetsujiNomoto}; -static const struct CreditsEntry gCreditsEntry_AzusaTajima[] = {11, FALSE, gCreditsText_AzusaTajima}; -static const struct CreditsEntry gCreditsEntry_ShusakuEgami[] = {11, FALSE, gCreditsText_ShusakuEgami}; -static const struct CreditsEntry gCreditsEntry_PackageAndManual[] = {0, TRUE, gCreditsText_PackageAndManual}; -static const struct CreditsEntry gCreditsEntry_EnglishVersion[] = {0, TRUE, gCreditsText_EnglishVersion}; -static const struct CreditsEntry gCreditsEntry_Translator[] = {0, TRUE, gCreditsText_Translator}; -static const struct CreditsEntry gCreditsEntry_TextEditor[] = {0, TRUE, gCreditsText_TextEditor}; -static const struct CreditsEntry gCreditsEntry_NCLCoordinator[] = {0, TRUE, gCreditsText_NCLCoordinator}; -static const struct CreditsEntry gCreditsEntry_GraphicDesigner[] = {0, TRUE, gCreditsText_GraphicDesigner}; -static const struct CreditsEntry gCreditsEntry_NOAProductTesting[] = {0, TRUE, gCreditsText_NOAProductTesting}; -static const struct CreditsEntry gCreditsEntry_HideyukiNakajima[] = {0, FALSE, gCreditsText_HideyukiNakajima}; -static const struct CreditsEntry gCreditsEntry_HidenoriSaeki[] = {0, FALSE, gCreditsText_HidenoriSaeki}; -static const struct CreditsEntry gCreditsEntry_YokoWatanabe[] = {0, FALSE, gCreditsText_YokoWatanabe}; -static const struct CreditsEntry gCreditsEntry_SakaeKimura[] = {0, FALSE, gCreditsText_SakaeKimura}; -static const struct CreditsEntry gCreditsEntry_ChiakiShinkai[] = {0, FALSE, gCreditsText_ChiakiShinkai}; -static const struct CreditsEntry gCreditsEntry_SethMcMahill[] = {0, FALSE, gCreditsText_SethMcMahill}; -static const struct CreditsEntry gCreditsEntry_NobOgasawara[] = {0, FALSE, gCreditsText_NobOgasawara}; -static const struct CreditsEntry gCreditsEntry_TeresaLillygren[] = {0, FALSE, gCreditsText_TeresaLillygren}; -static const struct CreditsEntry gCreditsEntry_KimikoNakamichi[] = {0, FALSE, gCreditsText_KimikoNakamichi}; -static const struct CreditsEntry gCreditsEntry_SouichiYamamoto[] = {0, FALSE, gCreditsText_SouichiYamamoto}; -static const struct CreditsEntry gCreditsEntry_YuichiroIto[] = {0, FALSE, gCreditsText_YuichiroIto}; -static const struct CreditsEntry gCreditsEntry_ThomasHertzog[] = {0, FALSE, gCreditsText_ThomasHertzog}; -static const struct CreditsEntry gCreditsEntry_MikaKurosawa[] = {0, FALSE, gCreditsText_MikaKurosawa}; -static const struct CreditsEntry gCreditsEntry_NationalFederationBlind[] = {0, FALSE, gCreditsText_NationalFederationBlind}; -static const struct CreditsEntry gCreditsEntry_PatriciaAMaurer[] = {0, FALSE, gCreditsText_PatriciaAMaurer}; -static const struct CreditsEntry gCreditsEntry_EuropeanBlindUnion[] = {0, FALSE, gCreditsText_EuropeanBlindUnion}; -static const struct CreditsEntry gCreditsEntry_AustralianBrailleAuthority[] = {0, FALSE, gCreditsText_AustralianBrailleAuthority}; -static const struct CreditsEntry gCreditsEntry_RoyalNewZealandFederationBlind[] = {0, FALSE, gCreditsText_RoyalNewZealandFederationBlind}; -static const struct CreditsEntry gCreditsEntry_MotoyasuTojima[] = {0, FALSE, gCreditsText_MotoyasuTojima}; -static const struct CreditsEntry gCreditsEntry_NicolaPrattBarlow[] = {0, FALSE, gCreditsText_NicolaPrattBarlow}; -static const struct CreditsEntry gCreditsEntry_ShellieDow[] = {0, FALSE, gCreditsText_ShellieDow}; -static const struct CreditsEntry gCreditsEntry_ErikJohnson[] = {0, FALSE, gCreditsText_ErikJohnson}; - -#define _ gCreditsEntry_EmptyString +static const u8 sCreditsText_EmptyString[] = _(""); +static const u8 sCreditsText_PkmnEmeraldVersion[] = _("POKéMON EMERALD VERSION"); +static const u8 sCreditsText_Credits[] = _("Credits"); +static const u8 sCreditsText_ExecutiveDirector[] = _("Executive Director"); +static const u8 sCreditsText_Director[] = _("Director"); +static const u8 sCreditsText_ArtDirector[] = _("Art Director"); +static const u8 sCreditsText_BattleDirector[] = _("Battle Director"); +static const u8 sCreditsText_MainProgrammer[] = _("Main Programmer"); +static const u8 sCreditsText_BattleSystemPgrms[] = _("Battle System Programmers"); +static const u8 sCreditsText_FieldSystemPgrms[] = _("Field System Programmer"); +static const u8 sCreditsText_Programmers[] = _("Programmers"); +static const u8 sCreditsText_MainGraphicDesigner[] = _("Main Graphic Designer"); +static const u8 sCreditsText_GraphicDesigners[] = _("Graphic Designers"); +static const u8 sCreditsText_PkmnDesigners[] = _("POKéMON Designers"); +static const u8 sCreditsText_MusicComposition[] = _("Music Composition"); +static const u8 sCreditsText_SoundEffectsAndPkmnVoices[] = _("Sound Effects & POKéMON Voices"); +static const u8 sCreditsText_GameDesigners[] = _("Game Designers"); +static const u8 sCreditsText_ScenarioPlot[] = _("Scenario Plot"); +static const u8 sCreditsText_Scenario[] = _("Scenario"); +static const u8 sCreditsText_ScriptDesigners[] = _("Script Designers"); +static const u8 sCreditsText_MapDesigners[] = _("Map Designers"); +static const u8 sCreditsText_MapDataDesigners[] = _("Map Data Designers"); +static const u8 sCreditsText_ParametricDesigners[] = _("Parametric Designers"); +static const u8 sCreditsText_PokedexText[] = _("POKéDEX Text"); +static const u8 sCreditsText_EnvAndToolPgrms[] = _("Environment & Tool Programmers"); +static const u8 sCreditsText_NCLProductTesting[] = _("NCL Product Testing"); +static const u8 sCreditsText_SpecialThanks[] = _("Special Thanks"); +static const u8 sCreditsText_Coordinators[] = _("Coordinators"); +static const u8 sCreditsText_Producers[] = _("Producers"); +static const u8 sCreditsText_ExecProducers[] = _("Executive Producers"); +static const u8 sCreditsText_InfoSupervisors[] = _("Information Supervisors"); +static const u8 sCreditsText_TaskManagers[] = _("Task Managers"); +static const u8 sCreditsText_BrailleCodeCheck[] = _("Braille Code Check"); +static const u8 sCreditsText_WorldDirector[] = _("World Director"); +static const u8 sCreditsText_BattleFrontierData[] = _("Battle Frontier Data"); +static const u8 sCreditsText_SupportProgrammers[] = _("Support Programmers"); +static const u8 sCreditsText_Artwork[] = _("Artwork"); +static const u8 sCreditsText_LeadProgrammer[] = _("Lead Programmer"); +static const u8 sCreditsText_LeadGraphicArtist[] = _("Lead Graphic Artist"); +static const u8 sCreditsText_SatoshiTajiri[] = _("Satoshi Tajiri"); +static const u8 sCreditsText_JunichiMasuda[] = _("Junichi Masuda"); +static const u8 sCreditsText_KenSugimori[] = _("Ken Sugimori"); +static const u8 sCreditsText_ShigekiMorimoto[] = _("Shigeki Morimoto"); +static const u8 sCreditsText_TetsuyaWatanabe[] = _("Tetsuya Watanabe"); +static const u8 sCreditsText_HisashiSogabe[] = _("Hisashi Sogabe"); +static const u8 sCreditsText_SosukeTamada[] = _("Sosuke Tamada"); +static const u8 sCreditsText_AkitoMori[] = _("Akito Mori"); +static const u8 sCreditsText_KeitaKagaya[] = _("Keita Kagaya"); +static const u8 sCreditsText_YoshinoriMatsuda[] = _("Yoshinori Matsuda"); +static const u8 sCreditsText_HiroyukiNakamura[] = _("Hiroyuki Nakamura"); +static const u8 sCreditsText_MasaoTaya[] = _("Masao Taya"); +static const u8 sCreditsText_SatoshiNohara[] = _("Satoshi Nohara"); +static const u8 sCreditsText_TomomichiOhta[] = _("Tomomichi Ohta"); +static const u8 sCreditsText_MiyukiIwasawa[] = _("Miyuki Iwasawa"); +static const u8 sCreditsText_TakenoriOhta[] = _("Takenori Ohta"); +static const u8 sCreditsText_HironobuYoshida[] = _("Hironobu Yoshida"); +static const u8 sCreditsText_MotofumiFujiwara[] = _("Motofumi Fujiwara"); +static const u8 sCreditsText_SatoshiOhta[] = _("Satoshi Ohta"); +static const u8 sCreditsText_AsukaIwashita[] = _("Asuka Iwashita"); +static const u8 sCreditsText_AimiTomita[] = _("Aimi Tomita"); +static const u8 sCreditsText_TakaoUnno[] = _("Takao Unno"); +static const u8 sCreditsText_KanakoEo[] = _("Kanako Eo"); +static const u8 sCreditsText_JunOkutani[] = _("Jun Okutani"); +static const u8 sCreditsText_AtsukoNishida[] = _("Atsuko Nishida"); +static const u8 sCreditsText_MuneoSaito[] = _("Muneo Saito"); +static const u8 sCreditsText_RenaYoshikawa[] = _("Rena Yoshikawa"); +static const u8 sCreditsText_GoIchinose[] = _("Go Ichinose"); +static const u8 sCreditsText_MorikazuAoki[] = _("Morikazu Aoki"); +static const u8 sCreditsText_KojiNishino[] = _("Koji Nishino"); +static const u8 sCreditsText_KenjiMatsushima[] = _("Kenji Matsushima"); +static const u8 sCreditsText_TetsujiOhta[] = _("Tetsuji Ohta"); +static const u8 sCreditsText_HitomiSato[] = _("Hitomi Sato"); +static const u8 sCreditsText_TakeshiKawachimaru[] = _("Takeshi Kawachimaru"); +static const u8 sCreditsText_TeruyukiShimoyamada[] = _("Teruyuki Shimoyamada"); +static const u8 sCreditsText_ShigeruOhmori[] = _("Shigeru Ohmori"); +static const u8 sCreditsText_TadashiTakahashi[] = _("Tadashi Takahashi"); +static const u8 sCreditsText_ToshinobuMatsumiya[] = _("Toshinobu Matsumiya"); +static const u8 sCreditsText_AkihitoTomisawa[] = _("Akihito Tomisawa"); +static const u8 sCreditsText_HirokiEnomoto[] = _("Hiroki Enomoto"); +static const u8 sCreditsText_KazuyukiTerada[] = _("Kazuyuki Terada"); +static const u8 sCreditsText_YuriSakurai[] = _("Yuri Sakurai"); +static const u8 sCreditsText_HiromiSagawa[] = _("Hiromi Sagawa"); +static const u8 sCreditsText_KenjiTominaga[] = _("Kenji Tominaga"); +static const u8 sCreditsText_YoshioTajiri[] = _("Yoshio Tajiri"); +static const u8 sCreditsText_TeikoSasaki[] = _("Teiko Sasaki"); +static const u8 sCreditsText_SachikoHamano[] = _("Sachiko Hamano"); +static const u8 sCreditsText_ChieMatsumiya[] = _("Chie Matsumiya"); +static const u8 sCreditsText_AkikoShinozaki[] = _("Akiko Shinozaki"); +static const u8 sCreditsText_AstukoFujii[] = _("Astuko Fujii"); +static const u8 sCreditsText_NozomuSaito[] = _("Nozomu Saito"); +static const u8 sCreditsText_KenkichiToyama[] = _("Kenkichi Toyama"); +static const u8 sCreditsText_SuguruNakatsui[] = _("Suguru Nakatsui"); +static const u8 sCreditsText_YumiFunasaka[] = _("Yumi Funasaka"); +static const u8 sCreditsText_NaokoYanase[] = _("Naoko Yanase"); +static const u8 sCreditsText_NCLSuperMarioClub[] = _("NCL Super Mario Club"); +static const u8 sCreditsText_AtsushiTada[] = _("Atsushi Tada"); +static const u8 sCreditsText_TakahiroOhnishi[] = _("Takahiro Ohnishi"); +static const u8 sCreditsText_NorihideOkamura[] = _("Norihide Okamura"); +static const u8 sCreditsText_HiroNakamura[] = _("Hiro Nakamura"); +static const u8 sCreditsText_HiroyukiUesugi[] = _("Hiroyuki Uesugi"); +static const u8 sCreditsText_TerukiMurakawa[] = _("Teruki Murakawa"); +static const u8 sCreditsText_AkiraKinashi[] = _("Akira Kinashi"); +static const u8 sCreditsText_MichikoTakizawa[] = _("Michiko Takizawa"); +static const u8 sCreditsText_MakikoTakada[] = _("Makiko Takada"); +static const u8 sCreditsText_TakanaoKondo[] = _("Takanao Kondo"); +static const u8 sCreditsText_AiMashima[] = _("Ai Mashima"); +static const u8 sCreditsText_GakujiNomoto[] = _("Gakuji Nomoto"); +static const u8 sCreditsText_TakehiroIzushi[] = _("Takehiro Izushi"); +static const u8 sCreditsText_HitoshiYamagami[] = _("Hitoshi Yamagami"); +static const u8 sCreditsText_KyokoWatanabe[] = _("Kyoko Watanabe"); +static const u8 sCreditsText_TakaoNakano[] = _("Takao Nakano"); +static const u8 sCreditsText_HiroyukiJinnai[] = _("Hiroyuki Jinnai"); +static const u8 sCreditsText_HiroakiTsuru[] = _("Hiroaki Tsuru"); +static const u8 sCreditsText_TsunekazIshihara[] = _("Tsunekaz Ishihara"); +static const u8 sCreditsText_SatoruIwata[] = _("Satoru Iwata"); +static const u8 sCreditsText_KazuyaSuyama[] = _("Kazuya Suyama"); +static const u8 sCreditsText_SatoshiMitsuhara[] = _("Satoshi Mitsuhara"); +static const u8 sCreditsText_JapanBrailleLibrary[] = _("Japan Braille Library"); +static const u8 sCreditsText_TomotakaKomura[] = _("Tomotaka Komura"); +static const u8 sCreditsText_MikikoOhhashi[] = _("Mikiko Ohhashi"); +static const u8 sCreditsText_DaisukeHoshino[] = _("Daisuke Hoshino"); +static const u8 sCreditsText_KenjiroIto[] = _("Kenjiro Ito"); +static const u8 sCreditsText_RuiKawaguchi[] = _("Rui Kawaguchi"); +static const u8 sCreditsText_ShunsukeKohori[] = _("Shunsuke Kohori"); +static const u8 sCreditsText_SachikoNakamichi[] = _("Sachiko Nakamichi"); +static const u8 sCreditsText_FujikoNomura[] = _("Fujiko Nomura"); +static const u8 sCreditsText_KazukiYoshihara[] = _("Kazuki Yoshihara"); +static const u8 sCreditsText_RetsujiNomoto[] = _("Retsuji Nomoto"); +static const u8 sCreditsText_AzusaTajima[] = _("Azusa Tajima"); +static const u8 sCreditsText_ShusakuEgami[] = _("Shusaku Egami"); +static const u8 sCreditsText_PackageAndManual[] = _("Package & Manual Illustration"); +static const u8 sCreditsText_EnglishVersion[] = _("English Version Coordinators"); +static const u8 sCreditsText_Translator[] = _("Translator"); +static const u8 sCreditsText_TextEditor[] = _("Text Editor"); +static const u8 sCreditsText_NCLCoordinator[] = _("NCL Coordinator"); +static const u8 sCreditsText_GraphicDesigner[] = _("Graphic Designer"); +static const u8 sCreditsText_NOAProductTesting[] = _("NOA Product Testing"); +static const u8 sCreditsText_HideyukiNakajima[] = _("Hideyuki Nakajima"); +static const u8 sCreditsText_HidenoriSaeki[] = _("Hidenori Saeki"); +static const u8 sCreditsText_YokoWatanabe[] = _("Yoko Watanabe"); +static const u8 sCreditsText_SakaeKimura[] = _("Sakae Kimura"); +static const u8 sCreditsText_ChiakiShinkai[] = _("Chiaki Shinkai"); +static const u8 sCreditsText_SethMcMahill[] = _("Seth McMahill"); +static const u8 sCreditsText_NobOgasawara[] = _("Nob Ogasawara"); +static const u8 sCreditsText_TeresaLillygren[] = _("Teresa Lillygren"); +static const u8 sCreditsText_KimikoNakamichi[] = _("Kimiko Nakamichi"); +static const u8 sCreditsText_SouichiYamamoto[] = _("Souichi Yamamoto"); +static const u8 sCreditsText_YuichiroIto[] = _("Yuichiro Ito"); +static const u8 sCreditsText_ThomasHertzog[] = _("Thomas Hertzog"); +static const u8 sCreditsText_MikaKurosawa[] = _("Mika Kurosawa"); +static const u8 sCreditsText_NationalFederationBlind[] = _("National Federation of the Blind"); +static const u8 sCreditsText_PatriciaAMaurer[] = _("Patricia A. Maurer"); +static const u8 sCreditsText_EuropeanBlindUnion[] = _("European Blind Union"); +static const u8 sCreditsText_AustralianBrailleAuthority[] = _("Australian Braille Authority"); +static const u8 sCreditsText_RoyalNewZealandFederationBlind[] = _("Royal New Zealand Federation for the Blind"); +static const u8 sCreditsText_MotoyasuTojima[] = _("Motoyasu Tojima"); +static const u8 sCreditsText_NicolaPrattBarlow[] = _("Nicola Pratt-Barlow"); +static const u8 sCreditsText_ShellieDow[] = _("Shellie Dow"); +static const u8 sCreditsText_ErikJohnson[] = _("Erik Johnson"); +static const struct CreditsEntry sCreditsEntry_EmptyString[] = { 0, FALSE, sCreditsText_EmptyString}; +static const struct CreditsEntry sCreditsEntry_PkmnEmeraldVersion[] = { 7, TRUE, sCreditsText_PkmnEmeraldVersion}; +static const struct CreditsEntry sCreditsEntry_Credits[] = {11, TRUE, sCreditsText_Credits}; +static const struct CreditsEntry sCreditsEntry_ExecutiveDirector[] = { 8, TRUE, sCreditsText_ExecutiveDirector}; +static const struct CreditsEntry sCreditsEntry_Director[] = {12, TRUE, sCreditsText_Director}; +static const struct CreditsEntry sCreditsEntry_ArtDirector[] = {10, TRUE, sCreditsText_ArtDirector}; +static const struct CreditsEntry sCreditsEntry_BattleDirector[] = {10, TRUE, sCreditsText_BattleDirector}; +static const struct CreditsEntry sCreditsEntry_MainProgrammer[] = {10, TRUE, sCreditsText_MainProgrammer}; +static const struct CreditsEntry sCreditsEntry_BattleSystemPgrms[] = { 8, TRUE, sCreditsText_BattleSystemPgrms}; +static const struct CreditsEntry sCreditsEntry_FieldSystemPgrms[] = { 7, TRUE, sCreditsText_FieldSystemPgrms}; +static const struct CreditsEntry sCreditsEntry_Programmers[] = {12, TRUE, sCreditsText_Programmers}; +static const struct CreditsEntry sCreditsEntry_MainGraphicDesigner[] = { 7, TRUE, sCreditsText_MainGraphicDesigner}; +static const struct CreditsEntry sCreditsEntry_GraphicDesigners[] = { 9, TRUE, sCreditsText_GraphicDesigners}; +static const struct CreditsEntry sCreditsEntry_PkmnDesigners[] = {10, TRUE, sCreditsText_PkmnDesigners}; +static const struct CreditsEntry sCreditsEntry_MusicComposition[] = {13, TRUE, sCreditsText_MusicComposition}; +static const struct CreditsEntry sCreditsEntry_SoundEffectsAndPkmnVoices[] = { 4, TRUE, sCreditsText_SoundEffectsAndPkmnVoices}; +static const struct CreditsEntry sCreditsEntry_GameDesigners[] = {11, TRUE, sCreditsText_GameDesigners}; +static const struct CreditsEntry sCreditsEntry_ScenarioPlot[] = {11, TRUE, sCreditsText_ScenarioPlot}; +static const struct CreditsEntry sCreditsEntry_Scenario[] = {13, TRUE, sCreditsText_Scenario}; +static const struct CreditsEntry sCreditsEntry_ScriptDesigners[] = {10, TRUE, sCreditsText_ScriptDesigners}; +static const struct CreditsEntry sCreditsEntry_MapDesigners[] = {11, TRUE, sCreditsText_MapDesigners}; +static const struct CreditsEntry sCreditsEntry_MapDataDesigners[] = { 9, TRUE, sCreditsText_MapDataDesigners}; +static const struct CreditsEntry sCreditsEntry_ParametricDesigners[] = { 9, TRUE, sCreditsText_ParametricDesigners}; +static const struct CreditsEntry sCreditsEntry_PokedexText[] = {11, TRUE, sCreditsText_PokedexText}; +static const struct CreditsEntry sCreditsEntry_EnvAndToolPgrms[] = { 6, TRUE, sCreditsText_EnvAndToolPgrms}; +static const struct CreditsEntry sCreditsEntry_NCLProductTesting[] = {11, TRUE, sCreditsText_NCLProductTesting}; +static const struct CreditsEntry sCreditsEntry_SpecialThanks[] = {10, TRUE, sCreditsText_SpecialThanks}; +static const struct CreditsEntry sCreditsEntry_Coordinators[] = {11, TRUE, sCreditsText_Coordinators}; +static const struct CreditsEntry sCreditsEntry_Producers[] = {11, TRUE, sCreditsText_Producers}; +static const struct CreditsEntry sCreditsEntry_ExecProducers[] = { 7, TRUE, sCreditsText_ExecProducers}; +static const struct CreditsEntry sCreditsEntry_InfoSupervisors[] = {10, TRUE, sCreditsText_InfoSupervisors}; +static const struct CreditsEntry sCreditsEntry_TaskManagers[] = { 8, TRUE, sCreditsText_TaskManagers}; +static const struct CreditsEntry sCreditsEntry_BrailleCodeCheck[] = {10, TRUE, sCreditsText_BrailleCodeCheck}; +static const struct CreditsEntry sCreditsEntry_WorldDirector[] = {10, TRUE, sCreditsText_WorldDirector}; +static const struct CreditsEntry sCreditsEntry_BattleFrontierData[] = { 8, TRUE, sCreditsText_BattleFrontierData}; +static const struct CreditsEntry sCreditsEntry_SupportProgrammers[] = {10, TRUE, sCreditsText_SupportProgrammers}; +static const struct CreditsEntry sCreditsEntry_Artwork[] = {12, TRUE, sCreditsText_Artwork}; +static const struct CreditsEntry sCreditsEntry_LeadProgrammer[] = {10, TRUE, sCreditsText_LeadProgrammer}; +static const struct CreditsEntry sCreditsEntry_LeadGraphicArtist[] = { 9, TRUE, sCreditsText_LeadGraphicArtist}; +static const struct CreditsEntry sCreditsEntry_SatoshiTajiri[] = {11, FALSE, sCreditsText_SatoshiTajiri}; +static const struct CreditsEntry sCreditsEntry_JunichiMasuda[] = {11, FALSE, sCreditsText_JunichiMasuda}; +static const struct CreditsEntry sCreditsEntry_KenSugimori[] = {11, FALSE, sCreditsText_KenSugimori}; +static const struct CreditsEntry sCreditsEntry_ShigekiMorimoto[] = {11, FALSE, sCreditsText_ShigekiMorimoto}; +static const struct CreditsEntry sCreditsEntry_TetsuyaWatanabe[] = {11, FALSE, sCreditsText_TetsuyaWatanabe}; +static const struct CreditsEntry sCreditsEntry_HisashiSogabe[] = {11, FALSE, sCreditsText_HisashiSogabe}; +static const struct CreditsEntry sCreditsEntry_SosukeTamada[] = {11, FALSE, sCreditsText_SosukeTamada}; +static const struct CreditsEntry sCreditsEntry_AkitoMori[] = {11, FALSE, sCreditsText_AkitoMori}; +static const struct CreditsEntry sCreditsEntry_KeitaKagaya[] = {11, FALSE, sCreditsText_KeitaKagaya}; +static const struct CreditsEntry sCreditsEntry_YoshinoriMatsuda[] = {11, FALSE, sCreditsText_YoshinoriMatsuda}; +static const struct CreditsEntry sCreditsEntry_HiroyukiNakamura[] = {11, FALSE, sCreditsText_HiroyukiNakamura}; +static const struct CreditsEntry sCreditsEntry_MasaoTaya[] = {11, FALSE, sCreditsText_MasaoTaya}; +static const struct CreditsEntry sCreditsEntry_SatoshiNohara[] = {11, FALSE, sCreditsText_SatoshiNohara}; +static const struct CreditsEntry sCreditsEntry_TomomichiOhta[] = {11, FALSE, sCreditsText_TomomichiOhta}; +static const struct CreditsEntry sCreditsEntry_MiyukiIwasawa[] = {11, FALSE, sCreditsText_MiyukiIwasawa}; +static const struct CreditsEntry sCreditsEntry_TakenoriOhta[] = {11, FALSE, sCreditsText_TakenoriOhta}; +static const struct CreditsEntry sCreditsEntry_HironobuYoshida[] = {11, FALSE, sCreditsText_HironobuYoshida}; +static const struct CreditsEntry sCreditsEntry_MotofumiFujiwara[] = {11, FALSE, sCreditsText_MotofumiFujiwara}; +static const struct CreditsEntry sCreditsEntry_SatoshiOhta[] = {11, FALSE, sCreditsText_SatoshiOhta}; +static const struct CreditsEntry sCreditsEntry_AsukaIwashita[] = {11, FALSE, sCreditsText_AsukaIwashita}; +static const struct CreditsEntry sCreditsEntry_AimiTomita[] = {11, FALSE, sCreditsText_AimiTomita}; +static const struct CreditsEntry sCreditsEntry_TakaoUnno[] = {11, FALSE, sCreditsText_TakaoUnno}; +static const struct CreditsEntry sCreditsEntry_KanakoEo[] = {11, FALSE, sCreditsText_KanakoEo}; +static const struct CreditsEntry sCreditsEntry_JunOkutani[] = {11, FALSE, sCreditsText_JunOkutani}; +static const struct CreditsEntry sCreditsEntry_AtsukoNishida[] = {11, FALSE, sCreditsText_AtsukoNishida}; +static const struct CreditsEntry sCreditsEntry_MuneoSaito[] = {11, FALSE, sCreditsText_MuneoSaito}; +static const struct CreditsEntry sCreditsEntry_RenaYoshikawa[] = {11, FALSE, sCreditsText_RenaYoshikawa}; +static const struct CreditsEntry sCreditsEntry_GoIchinose[] = {11, FALSE, sCreditsText_GoIchinose}; +static const struct CreditsEntry sCreditsEntry_MorikazuAoki[] = {11, FALSE, sCreditsText_MorikazuAoki}; +static const struct CreditsEntry sCreditsEntry_KojiNishino[] = {11, FALSE, sCreditsText_KojiNishino}; +static const struct CreditsEntry sCreditsEntry_KenjiMatsushima[] = {11, FALSE, sCreditsText_KenjiMatsushima}; +static const struct CreditsEntry sCreditsEntry_TetsujiOhta[] = {11, FALSE, sCreditsText_TetsujiOhta}; +static const struct CreditsEntry sCreditsEntry_HitomiSato[] = {11, FALSE, sCreditsText_HitomiSato}; +static const struct CreditsEntry sCreditsEntry_TakeshiKawachimaru[] = {11, FALSE, sCreditsText_TakeshiKawachimaru}; +static const struct CreditsEntry sCreditsEntry_TeruyukiShimoyamada[] = {11, FALSE, sCreditsText_TeruyukiShimoyamada}; +static const struct CreditsEntry sCreditsEntry_ShigeruOhmori[] = {11, FALSE, sCreditsText_ShigeruOhmori}; +static const struct CreditsEntry sCreditsEntry_TadashiTakahashi[] = {11, FALSE, sCreditsText_TadashiTakahashi}; +static const struct CreditsEntry sCreditsEntry_ToshinobuMatsumiya[] = {11, FALSE, sCreditsText_ToshinobuMatsumiya}; +static const struct CreditsEntry sCreditsEntry_AkihitoTomisawa[] = {11, FALSE, sCreditsText_AkihitoTomisawa}; +static const struct CreditsEntry sCreditsEntry_HirokiEnomoto[] = {11, FALSE, sCreditsText_HirokiEnomoto}; +static const struct CreditsEntry sCreditsEntry_KazuyukiTerada[] = {11, FALSE, sCreditsText_KazuyukiTerada}; +static const struct CreditsEntry sCreditsEntry_YuriSakurai[] = {11, FALSE, sCreditsText_YuriSakurai}; +static const struct CreditsEntry sCreditsEntry_HiromiSagawa[] = {11, FALSE, sCreditsText_HiromiSagawa}; +static const struct CreditsEntry sCreditsEntry_KenjiTominaga[] = {11, FALSE, sCreditsText_KenjiTominaga}; +static const struct CreditsEntry sCreditsEntry_YoshioTajiri[] = {11, FALSE, sCreditsText_YoshioTajiri}; +static const struct CreditsEntry sCreditsEntry_TeikoSasaki[] = {11, FALSE, sCreditsText_TeikoSasaki}; +static const struct CreditsEntry sCreditsEntry_SachikoHamano[] = {11, FALSE, sCreditsText_SachikoHamano}; +static const struct CreditsEntry sCreditsEntry_ChieMatsumiya[] = {11, FALSE, sCreditsText_ChieMatsumiya}; +static const struct CreditsEntry sCreditsEntry_AkikoShinozaki[] = {11, FALSE, sCreditsText_AkikoShinozaki}; +static const struct CreditsEntry sCreditsEntry_AstukoFujii[] = {11, FALSE, sCreditsText_AstukoFujii}; +static const struct CreditsEntry sCreditsEntry_NozomuSaito[] = {11, FALSE, sCreditsText_NozomuSaito}; +static const struct CreditsEntry sCreditsEntry_KenkichiToyama[] = {11, FALSE, sCreditsText_KenkichiToyama}; +static const struct CreditsEntry sCreditsEntry_SuguruNakatsui[] = {11, FALSE, sCreditsText_SuguruNakatsui}; +static const struct CreditsEntry sCreditsEntry_YumiFunasaka[] = {11, FALSE, sCreditsText_YumiFunasaka}; +static const struct CreditsEntry sCreditsEntry_NaokoYanase[] = {11, FALSE, sCreditsText_NaokoYanase}; +static const struct CreditsEntry sCreditsEntry_NCLSuperMarioClub[] = {11, FALSE, sCreditsText_NCLSuperMarioClub}; +static const struct CreditsEntry sCreditsEntry_AtsushiTada[] = {11, FALSE, sCreditsText_AtsushiTada}; +static const struct CreditsEntry sCreditsEntry_TakahiroOhnishi[] = {11, FALSE, sCreditsText_TakahiroOhnishi}; +static const struct CreditsEntry sCreditsEntry_NorihideOkamura[] = {11, FALSE, sCreditsText_NorihideOkamura}; +static const struct CreditsEntry sCreditsEntry_HiroNakamura[] = {11, FALSE, sCreditsText_HiroNakamura}; +static const struct CreditsEntry sCreditsEntry_HiroyukiUesugi[] = {11, FALSE, sCreditsText_HiroyukiUesugi}; +static const struct CreditsEntry sCreditsEntry_TerukiMurakawa[] = {11, FALSE, sCreditsText_TerukiMurakawa}; +static const struct CreditsEntry sCreditsEntry_AkiraKinashi[] = {11, FALSE, sCreditsText_AkiraKinashi}; +static const struct CreditsEntry sCreditsEntry_MichikoTakizawa[] = {11, FALSE, sCreditsText_MichikoTakizawa}; +static const struct CreditsEntry sCreditsEntry_MakikoTakada[] = {11, FALSE, sCreditsText_MakikoTakada}; +static const struct CreditsEntry sCreditsEntry_TakanaoKondo[] = {11, FALSE, sCreditsText_TakanaoKondo}; +static const struct CreditsEntry sCreditsEntry_AiMashima[] = {11, FALSE, sCreditsText_AiMashima}; +static const struct CreditsEntry sCreditsEntry_GakujiNomoto[] = {11, FALSE, sCreditsText_GakujiNomoto}; +static const struct CreditsEntry sCreditsEntry_TakehiroIzushi[] = {11, FALSE, sCreditsText_TakehiroIzushi}; +static const struct CreditsEntry sCreditsEntry_HitoshiYamagami[] = {11, FALSE, sCreditsText_HitoshiYamagami}; +static const struct CreditsEntry sCreditsEntry_KyokoWatanabe[] = {11, FALSE, sCreditsText_KyokoWatanabe}; +static const struct CreditsEntry sCreditsEntry_TakaoNakano[] = {11, FALSE, sCreditsText_TakaoNakano}; +static const struct CreditsEntry sCreditsEntry_HiroyukiJinnai[] = {11, FALSE, sCreditsText_HiroyukiJinnai}; +static const struct CreditsEntry sCreditsEntry_HiroakiTsuru[] = {11, FALSE, sCreditsText_HiroakiTsuru}; +static const struct CreditsEntry sCreditsEntry_TsunekazIshihara[] = {11, FALSE, sCreditsText_TsunekazIshihara}; +static const struct CreditsEntry sCreditsEntry_SatoruIwata[] = {11, FALSE, sCreditsText_SatoruIwata}; +static const struct CreditsEntry sCreditsEntry_KazuyaSuyama[] = {11, FALSE, sCreditsText_KazuyaSuyama}; +static const struct CreditsEntry sCreditsEntry_SatoshiMitsuhara[] = {11, FALSE, sCreditsText_SatoshiMitsuhara}; +static const struct CreditsEntry sCreditsEntry_JapanBrailleLibrary[] = { 9, FALSE, sCreditsText_JapanBrailleLibrary}; +static const struct CreditsEntry sCreditsEntry_TomotakaKomura[] = {11, FALSE, sCreditsText_TomotakaKomura}; +static const struct CreditsEntry sCreditsEntry_MikikoOhhashi[] = {11, FALSE, sCreditsText_MikikoOhhashi}; +static const struct CreditsEntry sCreditsEntry_DaisukeHoshino[] = {11, FALSE, sCreditsText_DaisukeHoshino}; +static const struct CreditsEntry sCreditsEntry_KenjiroIto[] = {11, FALSE, sCreditsText_KenjiroIto}; +static const struct CreditsEntry sCreditsEntry_RuiKawaguchi[] = {11, FALSE, sCreditsText_RuiKawaguchi}; +static const struct CreditsEntry sCreditsEntry_ShunsukeKohori[] = {11, FALSE, sCreditsText_ShunsukeKohori}; +static const struct CreditsEntry sCreditsEntry_SachikoNakamichi[] = {11, FALSE, sCreditsText_SachikoNakamichi}; +static const struct CreditsEntry sCreditsEntry_FujikoNomura[] = {11, FALSE, sCreditsText_FujikoNomura}; +static const struct CreditsEntry sCreditsEntry_KazukiYoshihara[] = {11, FALSE, sCreditsText_KazukiYoshihara}; +static const struct CreditsEntry sCreditsEntry_RetsujiNomoto[] = {11, FALSE, sCreditsText_RetsujiNomoto}; +static const struct CreditsEntry sCreditsEntry_AzusaTajima[] = {11, FALSE, sCreditsText_AzusaTajima}; +static const struct CreditsEntry sCreditsEntry_ShusakuEgami[] = {11, FALSE, sCreditsText_ShusakuEgami}; +static const struct CreditsEntry sCreditsEntry_PackageAndManual[] = { 0, TRUE, sCreditsText_PackageAndManual}; +static const struct CreditsEntry sCreditsEntry_EnglishVersion[] = { 0, TRUE, sCreditsText_EnglishVersion}; +static const struct CreditsEntry sCreditsEntry_Translator[] = { 0, TRUE, sCreditsText_Translator}; +static const struct CreditsEntry sCreditsEntry_TextEditor[] = { 0, TRUE, sCreditsText_TextEditor}; +static const struct CreditsEntry sCreditsEntry_NCLCoordinator[] = { 0, TRUE, sCreditsText_NCLCoordinator}; +static const struct CreditsEntry sCreditsEntry_GraphicDesigner[] = { 0, TRUE, sCreditsText_GraphicDesigner}; +static const struct CreditsEntry sCreditsEntry_NOAProductTesting[] = { 0, TRUE, sCreditsText_NOAProductTesting}; +static const struct CreditsEntry sCreditsEntry_HideyukiNakajima[] = { 0, FALSE, sCreditsText_HideyukiNakajima}; +static const struct CreditsEntry sCreditsEntry_HidenoriSaeki[] = { 0, FALSE, sCreditsText_HidenoriSaeki}; +static const struct CreditsEntry sCreditsEntry_YokoWatanabe[] = { 0, FALSE, sCreditsText_YokoWatanabe}; +static const struct CreditsEntry sCreditsEntry_SakaeKimura[] = { 0, FALSE, sCreditsText_SakaeKimura}; +static const struct CreditsEntry sCreditsEntry_ChiakiShinkai[] = { 0, FALSE, sCreditsText_ChiakiShinkai}; +static const struct CreditsEntry sCreditsEntry_SethMcMahill[] = { 0, FALSE, sCreditsText_SethMcMahill}; +static const struct CreditsEntry sCreditsEntry_NobOgasawara[] = { 0, FALSE, sCreditsText_NobOgasawara}; +static const struct CreditsEntry sCreditsEntry_TeresaLillygren[] = { 0, FALSE, sCreditsText_TeresaLillygren}; +static const struct CreditsEntry sCreditsEntry_KimikoNakamichi[] = { 0, FALSE, sCreditsText_KimikoNakamichi}; +static const struct CreditsEntry sCreditsEntry_SouichiYamamoto[] = { 0, FALSE, sCreditsText_SouichiYamamoto}; +static const struct CreditsEntry sCreditsEntry_YuichiroIto[] = { 0, FALSE, sCreditsText_YuichiroIto}; +static const struct CreditsEntry sCreditsEntry_ThomasHertzog[] = { 0, FALSE, sCreditsText_ThomasHertzog}; +static const struct CreditsEntry sCreditsEntry_MikaKurosawa[] = { 0, FALSE, sCreditsText_MikaKurosawa}; +static const struct CreditsEntry sCreditsEntry_NationalFederationBlind[] = { 0, FALSE, sCreditsText_NationalFederationBlind}; +static const struct CreditsEntry sCreditsEntry_PatriciaAMaurer[] = { 0, FALSE, sCreditsText_PatriciaAMaurer}; +static const struct CreditsEntry sCreditsEntry_EuropeanBlindUnion[] = { 0, FALSE, sCreditsText_EuropeanBlindUnion}; +static const struct CreditsEntry sCreditsEntry_AustralianBrailleAuthority[] = { 0, FALSE, sCreditsText_AustralianBrailleAuthority}; +static const struct CreditsEntry sCreditsEntry_RoyalNewZealandFederationBlind[] = { 0, FALSE, sCreditsText_RoyalNewZealandFederationBlind}; +static const struct CreditsEntry sCreditsEntry_MotoyasuTojima[] = { 0, FALSE, sCreditsText_MotoyasuTojima}; +static const struct CreditsEntry sCreditsEntry_NicolaPrattBarlow[] = { 0, FALSE, sCreditsText_NicolaPrattBarlow}; +static const struct CreditsEntry sCreditsEntry_ShellieDow[] = { 0, FALSE, sCreditsText_ShellieDow}; +static const struct CreditsEntry sCreditsEntry_ErikJohnson[] = { 0, FALSE, sCreditsText_ErikJohnson}; + +#define _ sCreditsEntry_EmptyString static const struct CreditsEntry *const gCreditsEntryPointerTable[][5] = { { _, - gCreditsEntry_PkmnEmeraldVersion, - gCreditsEntry_Credits, + sCreditsEntry_PkmnEmeraldVersion, + sCreditsEntry_Credits, _, _ }, { _, - gCreditsEntry_Director, - gCreditsEntry_ShigekiMorimoto, + sCreditsEntry_Director, + sCreditsEntry_ShigekiMorimoto, _, _, }, { _, - gCreditsEntry_ArtDirector, - gCreditsEntry_KenSugimori, + sCreditsEntry_ArtDirector, + sCreditsEntry_KenSugimori, _, _, }, { _, - gCreditsEntry_WorldDirector, - gCreditsEntry_JunichiMasuda, + sCreditsEntry_WorldDirector, + sCreditsEntry_JunichiMasuda, _, _, }, { - gCreditsEntry_LeadProgrammer, - gCreditsEntry_HisashiSogabe, - gCreditsEntry_LeadGraphicArtist, - gCreditsEntry_MotofumiFujiwara, + sCreditsEntry_LeadProgrammer, + sCreditsEntry_HisashiSogabe, + sCreditsEntry_LeadGraphicArtist, + sCreditsEntry_MotofumiFujiwara, _, }, { - gCreditsEntry_Programmers, - gCreditsEntry_HisashiSogabe, - gCreditsEntry_TomomichiOhta, - gCreditsEntry_NozomuSaito, - gCreditsEntry_EmptyString, + sCreditsEntry_Programmers, + sCreditsEntry_HisashiSogabe, + sCreditsEntry_TomomichiOhta, + sCreditsEntry_NozomuSaito, + sCreditsEntry_EmptyString, }, { - gCreditsEntry_Programmers, - gCreditsEntry_AkitoMori, - gCreditsEntry_HiroyukiNakamura, - gCreditsEntry_MasaoTaya, + sCreditsEntry_Programmers, + sCreditsEntry_AkitoMori, + sCreditsEntry_HiroyukiNakamura, + sCreditsEntry_MasaoTaya, _, }, { - gCreditsEntry_Programmers, - gCreditsEntry_SatoshiNohara, - gCreditsEntry_MiyukiIwasawa, - gCreditsEntry_YoshinoriMatsuda, - gCreditsEntry_KeitaKagaya, + sCreditsEntry_Programmers, + sCreditsEntry_SatoshiNohara, + sCreditsEntry_MiyukiIwasawa, + sCreditsEntry_YoshinoriMatsuda, + sCreditsEntry_KeitaKagaya, }, { - gCreditsEntry_Programmers, - gCreditsEntry_TetsuyaWatanabe, - gCreditsEntry_SosukeTamada, - gCreditsEntry_TakenoriOhta, + sCreditsEntry_Programmers, + sCreditsEntry_TetsuyaWatanabe, + sCreditsEntry_SosukeTamada, + sCreditsEntry_TakenoriOhta, _, }, { _, - gCreditsEntry_GraphicDesigners, - gCreditsEntry_MotofumiFujiwara, - gCreditsEntry_SatoshiOhta, + sCreditsEntry_GraphicDesigners, + sCreditsEntry_MotofumiFujiwara, + sCreditsEntry_SatoshiOhta, _, }, { - gCreditsEntry_GraphicDesigners, - gCreditsEntry_KenkichiToyama, - gCreditsEntry_AsukaIwashita, - gCreditsEntry_TakaoUnno, + sCreditsEntry_GraphicDesigners, + sCreditsEntry_KenkichiToyama, + sCreditsEntry_AsukaIwashita, + sCreditsEntry_TakaoUnno, _, }, { - gCreditsEntry_GraphicDesigners, - gCreditsEntry_KenSugimori, - gCreditsEntry_HironobuYoshida, - gCreditsEntry_AimiTomita, - gCreditsEntry_KanakoEo, + sCreditsEntry_GraphicDesigners, + sCreditsEntry_KenSugimori, + sCreditsEntry_HironobuYoshida, + sCreditsEntry_AimiTomita, + sCreditsEntry_KanakoEo, }, { - gCreditsEntry_MusicComposition, - gCreditsEntry_GoIchinose, - gCreditsEntry_JunichiMasuda, - gCreditsEntry_MorikazuAoki, - gCreditsEntry_HitomiSato, + sCreditsEntry_MusicComposition, + sCreditsEntry_GoIchinose, + sCreditsEntry_JunichiMasuda, + sCreditsEntry_MorikazuAoki, + sCreditsEntry_HitomiSato, }, { _, - gCreditsEntry_SoundEffectsAndPkmnVoices, - gCreditsEntry_GoIchinose, - gCreditsEntry_MorikazuAoki, + sCreditsEntry_SoundEffectsAndPkmnVoices, + sCreditsEntry_GoIchinose, + sCreditsEntry_MorikazuAoki, _, }, { - gCreditsEntry_GameDesigners, - gCreditsEntry_ShigekiMorimoto, - gCreditsEntry_TeruyukiShimoyamada, - gCreditsEntry_TakeshiKawachimaru, - gCreditsEntry_AkihitoTomisawa, + sCreditsEntry_GameDesigners, + sCreditsEntry_ShigekiMorimoto, + sCreditsEntry_TeruyukiShimoyamada, + sCreditsEntry_TakeshiKawachimaru, + sCreditsEntry_AkihitoTomisawa, }, { - gCreditsEntry_GameDesigners, - gCreditsEntry_SuguruNakatsui, - gCreditsEntry_TetsujiOhta, - gCreditsEntry_HitomiSato, - gCreditsEntry_KenjiMatsushima, + sCreditsEntry_GameDesigners, + sCreditsEntry_SuguruNakatsui, + sCreditsEntry_TetsujiOhta, + sCreditsEntry_HitomiSato, + sCreditsEntry_KenjiMatsushima, }, { - gCreditsEntry_GameDesigners, - gCreditsEntry_JunichiMasuda, - gCreditsEntry_KojiNishino, - gCreditsEntry_ShigeruOhmori, - gCreditsEntry_TadashiTakahashi, + sCreditsEntry_GameDesigners, + sCreditsEntry_JunichiMasuda, + sCreditsEntry_KojiNishino, + sCreditsEntry_ShigeruOhmori, + sCreditsEntry_TadashiTakahashi, }, { - gCreditsEntry_ScenarioPlot, - gCreditsEntry_AkihitoTomisawa, - gCreditsEntry_JunichiMasuda, - gCreditsEntry_KojiNishino, + sCreditsEntry_ScenarioPlot, + sCreditsEntry_AkihitoTomisawa, + sCreditsEntry_JunichiMasuda, + sCreditsEntry_KojiNishino, _, }, { - gCreditsEntry_Scenario, - gCreditsEntry_AkihitoTomisawa, - gCreditsEntry_HitomiSato, - gCreditsEntry_ToshinobuMatsumiya, + sCreditsEntry_Scenario, + sCreditsEntry_AkihitoTomisawa, + sCreditsEntry_HitomiSato, + sCreditsEntry_ToshinobuMatsumiya, _, }, { - gCreditsEntry_ScriptDesigners, - gCreditsEntry_TomomichiOhta, - gCreditsEntry_SatoshiNohara, + sCreditsEntry_ScriptDesigners, + sCreditsEntry_TomomichiOhta, + sCreditsEntry_SatoshiNohara, _, _, }, { - gCreditsEntry_MapDesigners, - gCreditsEntry_SuguruNakatsui, - gCreditsEntry_TeruyukiShimoyamada, - gCreditsEntry_ShigeruOhmori, - gCreditsEntry_TetsujiOhta, + sCreditsEntry_MapDesigners, + sCreditsEntry_SuguruNakatsui, + sCreditsEntry_TeruyukiShimoyamada, + sCreditsEntry_ShigeruOhmori, + sCreditsEntry_TetsujiOhta, }, { _, - gCreditsEntry_BattleFrontierData, - gCreditsEntry_TetsujiOhta, + sCreditsEntry_BattleFrontierData, + sCreditsEntry_TetsujiOhta, _, _, }, { - gCreditsEntry_ParametricDesigners, - gCreditsEntry_TeruyukiShimoyamada, - gCreditsEntry_ShigekiMorimoto, - gCreditsEntry_TetsujiOhta, - gCreditsEntry_KojiNishino, + sCreditsEntry_ParametricDesigners, + sCreditsEntry_TeruyukiShimoyamada, + sCreditsEntry_ShigekiMorimoto, + sCreditsEntry_TetsujiOhta, + sCreditsEntry_KojiNishino, }, { _, - gCreditsEntry_PokedexText, - gCreditsEntry_KenjiMatsushima, + sCreditsEntry_PokedexText, + sCreditsEntry_KenjiMatsushima, _, _, }, { - gCreditsEntry_EnvAndToolPgrms, - gCreditsEntry_HisashiSogabe, - gCreditsEntry_SosukeTamada, - gCreditsEntry_HiroyukiNakamura, - gCreditsEntry_AkitoMori, + sCreditsEntry_EnvAndToolPgrms, + sCreditsEntry_HisashiSogabe, + sCreditsEntry_SosukeTamada, + sCreditsEntry_HiroyukiNakamura, + sCreditsEntry_AkitoMori, }, { - gCreditsEntry_PkmnDesigners, - gCreditsEntry_KenSugimori, - gCreditsEntry_MotofumiFujiwara, - gCreditsEntry_ShigekiMorimoto, + sCreditsEntry_PkmnDesigners, + sCreditsEntry_KenSugimori, + sCreditsEntry_MotofumiFujiwara, + sCreditsEntry_ShigekiMorimoto, _, }, { - gCreditsEntry_PkmnDesigners, - gCreditsEntry_HironobuYoshida, - gCreditsEntry_SatoshiOhta, - gCreditsEntry_AsukaIwashita, + sCreditsEntry_PkmnDesigners, + sCreditsEntry_HironobuYoshida, + sCreditsEntry_SatoshiOhta, + sCreditsEntry_AsukaIwashita, _, }, { - gCreditsEntry_PkmnDesigners, - gCreditsEntry_TakaoUnno, - gCreditsEntry_KanakoEo, - gCreditsEntry_AimiTomita, + sCreditsEntry_PkmnDesigners, + sCreditsEntry_TakaoUnno, + sCreditsEntry_KanakoEo, + sCreditsEntry_AimiTomita, _, }, { - gCreditsEntry_PkmnDesigners, - gCreditsEntry_AtsukoNishida, - gCreditsEntry_MuneoSaito, - gCreditsEntry_RenaYoshikawa, - gCreditsEntry_JunOkutani, + sCreditsEntry_PkmnDesigners, + sCreditsEntry_AtsukoNishida, + sCreditsEntry_MuneoSaito, + sCreditsEntry_RenaYoshikawa, + sCreditsEntry_JunOkutani, }, { _, - gCreditsEntry_SupportProgrammers, - gCreditsEntry_SatoshiMitsuhara, - gCreditsEntry_DaisukeHoshino, + sCreditsEntry_SupportProgrammers, + sCreditsEntry_SatoshiMitsuhara, + sCreditsEntry_DaisukeHoshino, _, }, { _, - gCreditsEntry_NCLProductTesting, - gCreditsEntry_NCLSuperMarioClub, + sCreditsEntry_NCLProductTesting, + sCreditsEntry_NCLSuperMarioClub, _, _, }, { _, - gCreditsEntry_PackageAndManual, - gCreditsEntry_KenSugimori, + sCreditsEntry_PackageAndManual, + sCreditsEntry_KenSugimori, _, _, }, { _, - gCreditsEntry_SpecialThanks, - gCreditsEntry_KenjiTominaga, - gCreditsEntry_HirokiEnomoto, + sCreditsEntry_SpecialThanks, + sCreditsEntry_KenjiTominaga, + sCreditsEntry_HirokiEnomoto, _, }, { - gCreditsEntry_SpecialThanks, - gCreditsEntry_KazuyaSuyama, - gCreditsEntry_KenjiroIto, - gCreditsEntry_MichikoTakizawa, - gCreditsEntry_MakikoTakada, + sCreditsEntry_SpecialThanks, + sCreditsEntry_KazuyaSuyama, + sCreditsEntry_KenjiroIto, + sCreditsEntry_MichikoTakizawa, + sCreditsEntry_MakikoTakada, }, { - gCreditsEntry_SpecialThanks, - gCreditsEntry_MikikoOhhashi, - gCreditsEntry_TakanaoKondo, - gCreditsEntry_RuiKawaguchi, + sCreditsEntry_SpecialThanks, + sCreditsEntry_MikikoOhhashi, + sCreditsEntry_TakanaoKondo, + sCreditsEntry_RuiKawaguchi, _, }, { - gCreditsEntry_SpecialThanks, - gCreditsEntry_TakahiroOhnishi, - gCreditsEntry_NorihideOkamura, - gCreditsEntry_ShunsukeKohori, + sCreditsEntry_SpecialThanks, + sCreditsEntry_TakahiroOhnishi, + sCreditsEntry_NorihideOkamura, + sCreditsEntry_ShunsukeKohori, _, }, { - gCreditsEntry_InfoSupervisors, - gCreditsEntry_KazuyukiTerada, - gCreditsEntry_YuriSakurai, - gCreditsEntry_YumiFunasaka, - gCreditsEntry_NaokoYanase, + sCreditsEntry_InfoSupervisors, + sCreditsEntry_KazuyukiTerada, + sCreditsEntry_YuriSakurai, + sCreditsEntry_YumiFunasaka, + sCreditsEntry_NaokoYanase, }, { _, - gCreditsEntry_Artwork, - gCreditsEntry_SachikoNakamichi, - gCreditsEntry_FujikoNomura, + sCreditsEntry_Artwork, + sCreditsEntry_SachikoNakamichi, + sCreditsEntry_FujikoNomura, _, }, { _, - gCreditsEntry_Artwork, - gCreditsEntry_HideyukiNakajima, - gCreditsEntry_HidenoriSaeki, + sCreditsEntry_Artwork, + sCreditsEntry_HideyukiNakajima, + sCreditsEntry_HidenoriSaeki, _, }, { - gCreditsEntry_Artwork, - gCreditsEntry_YokoWatanabe, - gCreditsEntry_SakaeKimura, - gCreditsEntry_ChiakiShinkai, + sCreditsEntry_Artwork, + sCreditsEntry_YokoWatanabe, + sCreditsEntry_SakaeKimura, + sCreditsEntry_ChiakiShinkai, _, }, { - gCreditsEntry_Coordinators, - gCreditsEntry_KazukiYoshihara, - gCreditsEntry_AkiraKinashi, - gCreditsEntry_RetsujiNomoto, + sCreditsEntry_Coordinators, + sCreditsEntry_KazukiYoshihara, + sCreditsEntry_AkiraKinashi, + sCreditsEntry_RetsujiNomoto, _, }, { _, - gCreditsEntry_EnglishVersion, - gCreditsEntry_HiroNakamura, - gCreditsEntry_SethMcMahill, + sCreditsEntry_EnglishVersion, + sCreditsEntry_HiroNakamura, + sCreditsEntry_SethMcMahill, _, }, { _, - gCreditsEntry_Translator, - gCreditsEntry_NobOgasawara, + sCreditsEntry_Translator, + sCreditsEntry_NobOgasawara, _, _, }, { _, - gCreditsEntry_TextEditor, - gCreditsEntry_TeresaLillygren, + sCreditsEntry_TextEditor, + sCreditsEntry_TeresaLillygren, _, _, }, { _, - gCreditsEntry_NCLCoordinator, - gCreditsEntry_KimikoNakamichi, + sCreditsEntry_NCLCoordinator, + sCreditsEntry_KimikoNakamichi, _, _, }, { - gCreditsEntry_Programmers, - gCreditsEntry_TerukiMurakawa, - gCreditsEntry_SouichiYamamoto, - gCreditsEntry_YuichiroIto, - gCreditsEntry_AkiraKinashi, + sCreditsEntry_Programmers, + sCreditsEntry_TerukiMurakawa, + sCreditsEntry_SouichiYamamoto, + sCreditsEntry_YuichiroIto, + sCreditsEntry_AkiraKinashi, }, { _, - gCreditsEntry_GraphicDesigner, - gCreditsEntry_AkiraKinashi, + sCreditsEntry_GraphicDesigner, + sCreditsEntry_AkiraKinashi, _, _, }, { - gCreditsEntry_EnvAndToolPgrms, - gCreditsEntry_TerukiMurakawa, - gCreditsEntry_SouichiYamamoto, - gCreditsEntry_KimikoNakamichi, + sCreditsEntry_EnvAndToolPgrms, + sCreditsEntry_TerukiMurakawa, + sCreditsEntry_SouichiYamamoto, + sCreditsEntry_KimikoNakamichi, _, }, { - gCreditsEntry_NOAProductTesting, - gCreditsEntry_ThomasHertzog, - gCreditsEntry_ErikJohnson, - gCreditsEntry_MikaKurosawa, + sCreditsEntry_NOAProductTesting, + sCreditsEntry_ThomasHertzog, + sCreditsEntry_ErikJohnson, + sCreditsEntry_MikaKurosawa, _, }, { - gCreditsEntry_BrailleCodeCheck, - gCreditsEntry_NationalFederationBlind, - gCreditsEntry_PatriciaAMaurer, - gCreditsEntry_JapanBrailleLibrary, - gCreditsEntry_EuropeanBlindUnion, + sCreditsEntry_BrailleCodeCheck, + sCreditsEntry_NationalFederationBlind, + sCreditsEntry_PatriciaAMaurer, + sCreditsEntry_JapanBrailleLibrary, + sCreditsEntry_EuropeanBlindUnion, }, { _, - gCreditsEntry_BrailleCodeCheck, - gCreditsEntry_AustralianBrailleAuthority, - gCreditsEntry_RoyalNewZealandFederationBlind, + sCreditsEntry_BrailleCodeCheck, + sCreditsEntry_AustralianBrailleAuthority, + sCreditsEntry_RoyalNewZealandFederationBlind, _, }, { - gCreditsEntry_SpecialThanks, - gCreditsEntry_HiroyukiUesugi, - gCreditsEntry_MotoyasuTojima, - gCreditsEntry_NicolaPrattBarlow, - gCreditsEntry_ShellieDow, + sCreditsEntry_SpecialThanks, + sCreditsEntry_HiroyukiUesugi, + sCreditsEntry_MotoyasuTojima, + sCreditsEntry_NicolaPrattBarlow, + sCreditsEntry_ShellieDow, }, { _, - gCreditsEntry_TaskManagers, - gCreditsEntry_AzusaTajima, - gCreditsEntry_ShusakuEgami, + sCreditsEntry_TaskManagers, + sCreditsEntry_AzusaTajima, + sCreditsEntry_ShusakuEgami, _, }, { - gCreditsEntry_Producers, - gCreditsEntry_HiroyukiJinnai, - gCreditsEntry_HitoshiYamagami, - gCreditsEntry_GakujiNomoto, - gCreditsEntry_HiroakiTsuru, + sCreditsEntry_Producers, + sCreditsEntry_HiroyukiJinnai, + sCreditsEntry_HitoshiYamagami, + sCreditsEntry_GakujiNomoto, + sCreditsEntry_HiroakiTsuru, }, { _, - gCreditsEntry_ExecutiveDirector, - gCreditsEntry_SatoshiTajiri, + sCreditsEntry_ExecutiveDirector, + sCreditsEntry_SatoshiTajiri, _, _, }, { _, - gCreditsEntry_ExecProducers, - gCreditsEntry_SatoruIwata, + sCreditsEntry_ExecProducers, + sCreditsEntry_SatoruIwata, _, _, }, { _, - gCreditsEntry_ExecProducers, - gCreditsEntry_TsunekazIshihara, + sCreditsEntry_ExecProducers, + sCreditsEntry_TsunekazIshihara, _, _, }, @@ -1155,7 +1155,7 @@ static void CB2_RunCreditsSequence(void) UpdatePaletteFade(); } -static void sub_8175548(void) +static void InitCreditsBgsAndWindows(void) { ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, sBackgroundTemplates, ARRAY_COUNT(sBackgroundTemplates)); @@ -1210,7 +1210,7 @@ void CB2_StartCreditsSequence(void) InitHeap(gHeap, HEAP_SIZE); ResetPaletteFade(); ResetTasks(); - sub_8175548(); + InitCreditsBgsAndWindows(); taskIdA = CreateTask(Task_WaitPaletteFade, 0); @@ -1384,7 +1384,7 @@ static void Task_CreditsLoadGrassScene(u8 taskIdA) | DISPCNT_OBJ_ON); gMain.state = 0; - gUnknown_0203BD28 = 0; + gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_MOVING; gTasks[taskIdA].func = Task_WaitPaletteFade; break; } @@ -1721,13 +1721,13 @@ static void sub_817624C(u8 taskIdC) switch (gTasks[taskIdC].data[TDC_0]) { case 0: - gUnknown_0203BD26 = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); + gIntroCredits_MovingSceneryVOffset = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); gTasks[taskIdC].data[TDC_5]++; break; case 1: - if (gUnknown_0203BD26 != 0) + if (gIntroCredits_MovingSceneryVOffset != 0) { - gUnknown_0203BD26 = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); + gIntroCredits_MovingSceneryVOffset = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); gTasks[taskIdC].data[TDC_5]++; } else @@ -1741,7 +1741,7 @@ static void sub_817624C(u8 taskIdC) if (gTasks[taskIdC].data[TDC_5] < 64) { gTasks[taskIdC].data[TDC_5]++; - gUnknown_0203BD26 = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); + gIntroCredits_MovingSceneryVOffset = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); } else { @@ -1769,7 +1769,7 @@ static void sub_817624C(u8 taskIdC) if (gTasks[taskIdC].data[TDC_5] > 0) { gTasks[taskIdC].data[TDC_5]--; - gUnknown_0203BD26 = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); + gIntroCredits_MovingSceneryVOffset = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); } else { @@ -1816,10 +1816,10 @@ static void sub_817651C(u8 taskIdE) gTasks[taskIdE].data[TDE_1] = 0x7FFF; } } - sub_817B540(0); + CycleSceneryPalette(0); break; case 1: - sub_817B540(0); + CycleSceneryPalette(0); break; case 2: if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) @@ -1833,7 +1833,7 @@ static void sub_817651C(u8 taskIdE) gTasks[taskIdE].data[TDE_1] = 0x7FFF; } } - sub_817B540(1); + CycleSceneryPalette(1); break; case 3: if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) @@ -1849,17 +1849,17 @@ static void sub_817651C(u8 taskIdE) gTasks[taskIdE].data[TDE_1] += 1; } } - sub_817B540(1); + CycleSceneryPalette(1); break; case 4: - sub_817B540(2); + CycleSceneryPalette(2); break; } } -static void sub_817664C(u8 data, u8 taskIdA) +static void sub_817664C(u8 scene, u8 taskIdA) { - switch (data) + switch (scene) { case 0: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE; @@ -1870,7 +1870,7 @@ static void sub_817664C(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0; - gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(0, 0x2000, 0x20, 8); + gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8); break; case 1: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE; @@ -1881,7 +1881,7 @@ static void sub_817664C(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0; - gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(0, 0x2000, 0x20, 8); + gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8); break; case 2: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE; @@ -1892,7 +1892,7 @@ static void sub_817664C(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0; - gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(1, 0x2000, 0x200, 8); + gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8); break; case 3: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE; @@ -1903,7 +1903,7 @@ static void sub_817664C(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0; - gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(1, 0x2000, 0x200, 8); + gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8); break; case 4: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE; @@ -1914,12 +1914,12 @@ static void sub_817664C(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0; - gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(2, 0x2000, 0x200, 8); + gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(2, 0x2000, 0x200, 8); break; } gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(sub_817651C, 0); - gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_0] = data; + gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_0] = scene; gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_1] = 0; gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_TASK_A_ID] = taskIdA; @@ -1930,11 +1930,11 @@ static void sub_817664C(u8 data, u8 taskIdA) gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_3] = gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]; gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0; - if (data == 2) + if (scene == 2) gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = 0x45; } -static bool8 sub_8176AB0(u8 data, u8 taskIdA) +static bool8 sub_8176AB0(u8 scene, u8 taskIdA) { u8 spriteId; @@ -1956,42 +1956,42 @@ static bool8 sub_8176AB0(u8 data, u8 taskIdA) gMain.state = 1; break; case 1: - gUnknown_0203BD24 = 34; - gUnknown_0203BD26 = 0; - sub_817B1C8(data); + gIntroCredits_MovingSceneryVBase = 34; + gIntroCredits_MovingSceneryVOffset = 0; + LoadCreditsSceneGraphics(scene); gMain.state += 1; break; case 2: if (gSaveBlock2Ptr->playerGender == MALE) { - LoadCompressedSpriteSheet(gUnknown_085F5334); - LoadCompressedSpriteSheet(gUnknown_085F53BC); - LoadCompressedSpriteSheet(gUnknown_085F5354); - LoadSpritePalettes(gUnknown_085F5384); + LoadCompressedSpriteSheet(gSpriteSheet_CreditsBrendan); + LoadCompressedSpriteSheet(gSpriteSheet_CreditsRivalMay); + LoadCompressedSpriteSheet(gSpriteSheet_CreditsBicycle); + LoadSpritePalettes(gSpritePalettes_Credits); - spriteId = intro_create_brendan_sprite(120, 46); + spriteId = CreateIntroBrendanSprite(120, 46); gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId; gSprites[spriteId].callback = sub_8176EE8; gSprites[spriteId].anims = gUnknown_085E6FD0; - spriteId = intro_create_may_sprite(272, 46); + spriteId = CreateIntroMaySprite(272, 46); gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId; gSprites[spriteId].callback = sub_8176F90; gSprites[spriteId].anims = gUnknown_085E7010; } else { - LoadCompressedSpriteSheet(gUnknown_085F5344); - LoadCompressedSpriteSheet(gUnknown_085F53AC); - LoadCompressedSpriteSheet(gUnknown_085F5354); - LoadSpritePalettes(gUnknown_085F5384); + LoadCompressedSpriteSheet(gSpriteSheet_CreditsMay); + LoadCompressedSpriteSheet(gSpriteSheet_CreditsRivalBrendan); + LoadCompressedSpriteSheet(gSpriteSheet_CreditsBicycle); + LoadSpritePalettes(gSpritePalettes_Credits); - spriteId = intro_create_may_sprite(120, 46); + spriteId = CreateIntroMaySprite(120, 46); gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId; gSprites[spriteId].callback = sub_8176EE8; gSprites[spriteId].anims = gUnknown_085E6FD0; - spriteId = intro_create_brendan_sprite(272, 46); + spriteId = CreateIntroBrendanSprite(272, 46); gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId; gSprites[spriteId].callback = sub_8176F90; gSprites[spriteId].anims = gUnknown_085E7010; @@ -1999,8 +1999,8 @@ static bool8 sub_8176AB0(u8 data, u8 taskIdA) gMain.state += 1; break; case 3: - sub_817664C(data, taskIdA); - sub_817B3A8(data); + sub_817664C(scene, taskIdA); + SetCreditsSceneBgCnt(scene); gMain.state = 0; return TRUE; } @@ -2033,7 +2033,7 @@ static void ResetCreditsTasks(u8 taskIdA) gTasks[taskIdA].data[TDA_TASK_D_ID] = 0; } - gUnknown_0203BD28 = 1; + gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_DESTROY; } static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 arg2) @@ -2041,7 +2041,7 @@ static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 arg2) u16 baseTile; u16 i; - LZ77UnCompVram(gCreditsCopyrightEnd_Gfx, (void *)(VRAM + arg0)); + LZ77UnCompVram(sCreditsCopyrightEnd_Gfx, (void *)(VRAM + arg0)); LoadPalette(gIntroCopyright_Pal, arg2, sizeof(gIntroCopyright_Pal)); baseTile = (arg2 / 16) << 12; @@ -2050,22 +2050,22 @@ static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 arg2) ((u16 *) (VRAM + arg1))[i] = baseTile + 1; } -static u16 sub_8176D78(u8 arg0) +static u16 sub_8176D78(u8 baseTiles) { - u16 out = (arg0 & 0x3F) + 80; + u16 out = (baseTiles & 0x3F) + 80; - if (arg0 == 0xFF) + if (baseTiles == 0xFF) return 1; - if (arg0 & (1 << 7)) + if (baseTiles & (1 << 7)) out |= 1 << 11; - if (arg0 & (1 << 6)) + if (baseTiles & (1 << 6)) out |= 1 << 10; return out; } -static void sub_8176DBC(const u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) +static void sub_8176DBC(const u8 baseTiles[], u8 baseX, u8 baseY, u16 arg3, u16 palette) { u8 y, x; const u16 tileOffset = (palette / 16) << 12; @@ -2073,7 +2073,7 @@ static void sub_8176DBC(const u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palet for (y = 0; y < 5; y++) { for (x = 0; x < 3; x++) - ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8176D78(arg0[y * 3 + x]); + ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8176D78(baseTiles[y * 3 + x]); } } @@ -2095,7 +2095,7 @@ static void sub_8176E40(u16 arg0, u16 palette) static void sub_8176EE8(struct Sprite *sprite) { - if (gUnknown_0203BD28 != 0) + if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_MOVING) { DestroySprite(sprite); return; @@ -2132,7 +2132,7 @@ static void sub_8176EE8(struct Sprite *sprite) static void sub_8176F90(struct Sprite *sprite) { - if (gUnknown_0203BD28 != 0) + if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_MOVING) { DestroySprite(sprite); return; @@ -2151,7 +2151,7 @@ static void sub_8176F90(struct Sprite *sprite) StartSpriteAnimIfDifferent(sprite, 2); if (sprite->pos1.x > -32) sprite->pos1.x -= 2; - sprite->pos2.y = -gUnknown_0203BD26; + sprite->pos2.y = -gIntroCredits_MovingSceneryVOffset; break; case 2: sprite->data[7] += 1; @@ -2169,7 +2169,7 @@ static void sub_8176F90(struct Sprite *sprite) static void sub_8177050(struct Sprite *sprite) { - if (gUnknown_0203BD28) + if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_MOVING) { FreeAndDestroyMonPicSprite(sprite->data[6]); return; @@ -2276,7 +2276,7 @@ static u8 MakeMonSprite(u16 nationalDexNum, s16 x, s16 y, u16 position) static void sub_81772B8(struct Sprite *sprite) { - if (gSprites[sprite->data[0]].data[0] == 10 || gUnknown_0203BD28) + if (gSprites[sprite->data[0]].data[0] == 10 || gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_MOVING) { DestroySprite(sprite); return; @@ -2310,7 +2310,7 @@ static void DeterminePokemonToShow(void) // Fill the rest of the array with zeroes for (dexNum = j; dexNum < NATIONAL_DEX_COUNT; dexNum++) - sCreditsData->caughtMonIds[dexNum] = 0; + sCreditsData->caughtMonIds[dexNum] = NATIONAL_DEX_NONE; // Cap the number of pokemon we care about to NUM_MON_SLIDES, the max we show in the credits scene (-1 for the starter) sCreditsData->numCaughtMon = j; @@ -2352,7 +2352,7 @@ static void DeterminePokemonToShow(void) page = 0; } // Ensure the last pokemon is our starter - sCreditsData->monToShow[NUM_MON_SLIDES-1] = starter; + sCreditsData->monToShow[NUM_MON_SLIDES - 1] = starter; } else { @@ -2363,12 +2363,12 @@ static void DeterminePokemonToShow(void) if (dexNum < sCreditsData->numMonToShow - 1) { sCreditsData->monToShow[dexNum] = sCreditsData->monToShow[NUM_MON_SLIDES-1]; - sCreditsData->monToShow[NUM_MON_SLIDES-1] = starter; + sCreditsData->monToShow[NUM_MON_SLIDES - 1] = starter; } else { // Ensure the last pokemon is our starter - sCreditsData->monToShow[NUM_MON_SLIDES-1] = starter; + sCreditsData->monToShow[NUM_MON_SLIDES - 1] = starter; } } sCreditsData->numMonToShow = NUM_MON_SLIDES; -- cgit v1.2.3 From 357c5439f5170ec1ebb1fe52c00d8d934b65c6bc Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 28 Mar 2021 23:56:42 -0400 Subject: Document some credits --- src/credits.c | 1340 +++++++++++++-------------------------------------------- 1 file changed, 290 insertions(+), 1050 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index f39c0ff85..16d71f3e9 100644 --- a/src/credits.c +++ b/src/credits.c @@ -23,71 +23,21 @@ #include "event_data.h" #include "random.h" -enum -{ - PAGE_TITLE, - PAGE_DIRECTOR, - PAGE_ART_DIRECTOR, - PAGE_WORLD_DIRECTOR, - PAGE_LEAD_PROGRAMMER, - PAGE_PROGRAMMERS_1, - PAGE_PROGRAMMERS_2, - PAGE_PROGRAMMERS_3, - PAGE_PROGRAMMERS_4, - PAGE_GRAPHIC_DESIGNERS_1, - PAGE_GRAPHIC_DESIGNERS_2, - PAGE_GRAPHIC_DESIGNERS_3, - PAGE_MUSIC_COMPOSITION, - PAGE_SOUND_EFFECTS, - PAGE_GAME_DESIGNERS_1, - PAGE_GAME_DESIGNERS_2, - PAGE_GAME_DESIGNERS_3, - PAGE_SCENARIO_PLOT, - PAGE_SCENARIO, - PAGE_SCRIPT_DESIGNERS, - PAGE_MAP_DESIGNERS, - PAGE_BATTLE_FRONTIER_DATA, - PAGE_PARAMETRIC_DESIGNERS, - PAGE_POKEDEX_TEXT, - PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_1, - PAGE_PKMN_DESIGNERS_1, - PAGE_PKMN_DESIGNERS_2, - PAGE_PKMN_DESIGNERS_3, - PAGE_PKMN_DESIGNERS_4, - PAGE_SUPPORT_PROGRAMMERS, - PAGE_NCL_PRODUCT_TESTING, - PAGE_PACKAGE_AND_MANUAL, - PAGE_SPECIAL_THANKS_1, - PAGE_SPECIAL_THANKS_2, - PAGE_SPECIAL_THANKS_3, - PAGE_SPECIAL_THANKS_4, - PAGE_INFORMATION_SUPERVISORS, - PAGE_ARTWORK_1, - PAGE_ARTWORK_2, - PAGE_ARTWORK_3, - PAGE_COORDINATORS, - PAGE_ENGLISH_VERSION, - PAGE_TRANSLATOR, - PAGE_TEXT_EDITOR, - PAGE_NCL_COORDINATOR, - PAGE_PROGRAMMERS_5, - PAGE_GRAPHIC_DESIGNER, - PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_2, - PAGE_NOA_TESTING, - PAGE_BRAILLE_CODE_CHECK_1, - PAGE_BRAILLE_CODE_CHECK_2, - PAGE_SPECIAL_THANKS_5, - PAGE_TASK_MANAGERS, - PAGE_PRODUCERS, - PAGE_EXECUTIVE_DIRECTOR, - PAGE_EXECUTIVE_PRODUCERS_1, - PAGE_EXECUTIVE_PRODUCERS_2, - PAGE_COUNT -}; - #define COLOR_DARK_GREEN RGB(7, 11, 6) #define COLOR_LIGHT_GREEN RGB(13, 20, 12) +#define TAG_MON_BG 1001 + +// Positions for the Pokémon images +enum { + POS_LEFT, + POS_CENTER, + POS_RIGHT, +}; + +#define tPlayerSpriteId data[5] +#define tRivalSpriteId data[6] + enum { TDA_0 = 0, @@ -142,30 +92,50 @@ struct CreditsData struct CreditsEntry { - u8 var_0; + u8 unk; // Never read bool8 isTitle; const u8 *text; }; -static EWRAM_DATA s16 gUnknown_0203BCE0 = 0; -static EWRAM_DATA u16 gUnknown_0203BCE2 = 0; // TASK A +static EWRAM_DATA s16 sUnkVar = 0; // Never read, only set to 0 +static EWRAM_DATA u16 sSavedTaskId = 0; EWRAM_DATA bool8 gHasHallOfFameRecords = 0; -static EWRAM_DATA u8 gUnknown_0203BCE5 = 0; +static EWRAM_DATA bool8 sUsedSpeedUp = 0; // Never read static EWRAM_DATA struct CreditsData *sCreditsData = {0}; -static const u16 gUnknown_085E56F0[][16] = -{ - INCBIN_U16("graphics/credits/credits_1.gbapal"), - INCBIN_U16("graphics/credits/credits_2.gbapal"), - INCBIN_U16("graphics/credits/credits_3.gbapal"), - INCBIN_U16("graphics/credits/credits_4.gbapal"), -}; - +static const u16 sCredits_Pal[] = INCBIN_U16("graphics/credits/credits.gbapal"); static const u32 sCreditsCopyrightEnd_Gfx[] = INCBIN_U32("graphics/credits/the_end_copyright.4bpp.lz"); -static void sub_81772B8(struct Sprite *sprite); +static void SpriteCB_CreditsMonBg(struct Sprite *); +static void Task_WaitPaletteFade(u8); +static void Task_ProgressCreditTasks(u8); +static void sub_8175808(u8); +static void c2_080C9BFC(u8); +static void Task_CreditsLoadGrassScene(u8); +static void sub_81758A4(u8); +static void Task_CreditsTheEnd1(u8); +static void Task_CreditsTheEnd2(u8); +static void Task_CreditsTheEnd3(u8); +static void Task_CreditsTheEnd4(u8); +static void Task_CreditsTheEnd5(u8); +static void Task_CreditsTheEnd6(u8); +static void Task_CreditsSoftReset(u8); +static void ResetGpuAndVram(void); +static void sub_8175DA0(u8); +static u8 CheckChangeScene(u8, u8); +static void sub_81760FC(u8); +static void sub_817651C(u8); +static void sub_817624C(u8); +static bool8 sub_8176AB0(u8 data, u8); +static void ResetCreditsTasks(u8); +static void LoadTheEndScreen(u16, u16, u16); +static void DrawTheEnd(u16, u16); +static void SpriteCB_PlayerCyclist(struct Sprite *); +static void SpriteCB_RivalCyclist(struct Sprite *); +static u8 CreateCreditsMonSprite(u16, s16, s16, u16); +static void DeterminePokemonToShow(void); -static const u8 sTheEnd_LetterTMap[] = +static const u8 sTheEnd_LetterMap_T[] = { 0, 1, 0, 0xFF, 1, 0xFF, @@ -174,7 +144,7 @@ static const u8 sTheEnd_LetterTMap[] = 0xFF, 1, 0xFF, }; -static const u8 sTheEnd_LetterHMap[] = +static const u8 sTheEnd_LetterMap_H[] = { 1, 0xFF, 1, 1, 0xFF, 1, @@ -183,7 +153,7 @@ static const u8 sTheEnd_LetterHMap[] = 1, 0xFF, 1, }; -static const u8 sTheEnd_LetterEMap[] = +static const u8 sTheEnd_LetterMap_E[] = { 1, 0, 0, 1, 0xFF, 0xFF, @@ -192,7 +162,7 @@ static const u8 sTheEnd_LetterEMap[] = 1, 0x80, 0x80, }; -static const u8 sTheEnd_LetterNMap[] = +static const u8 sTheEnd_LetterMap_N[] = { 1, 3, 1, 1, 4, 1, @@ -201,7 +171,7 @@ static const u8 sTheEnd_LetterNMap[] = 1, 0xC3, 1, }; -static const u8 sTheEnd_LetterDMap[] = +static const u8 sTheEnd_LetterMap_D[] = { 1, 6, 7, 1, 8, 9, @@ -210,729 +180,7 @@ static const u8 sTheEnd_LetterDMap[] = 1, 0x86, 0x87, }; -static const u8 sCreditsText_EmptyString[] = _(""); -static const u8 sCreditsText_PkmnEmeraldVersion[] = _("POKéMON EMERALD VERSION"); -static const u8 sCreditsText_Credits[] = _("Credits"); -static const u8 sCreditsText_ExecutiveDirector[] = _("Executive Director"); -static const u8 sCreditsText_Director[] = _("Director"); -static const u8 sCreditsText_ArtDirector[] = _("Art Director"); -static const u8 sCreditsText_BattleDirector[] = _("Battle Director"); -static const u8 sCreditsText_MainProgrammer[] = _("Main Programmer"); -static const u8 sCreditsText_BattleSystemPgrms[] = _("Battle System Programmers"); -static const u8 sCreditsText_FieldSystemPgrms[] = _("Field System Programmer"); -static const u8 sCreditsText_Programmers[] = _("Programmers"); -static const u8 sCreditsText_MainGraphicDesigner[] = _("Main Graphic Designer"); -static const u8 sCreditsText_GraphicDesigners[] = _("Graphic Designers"); -static const u8 sCreditsText_PkmnDesigners[] = _("POKéMON Designers"); -static const u8 sCreditsText_MusicComposition[] = _("Music Composition"); -static const u8 sCreditsText_SoundEffectsAndPkmnVoices[] = _("Sound Effects & POKéMON Voices"); -static const u8 sCreditsText_GameDesigners[] = _("Game Designers"); -static const u8 sCreditsText_ScenarioPlot[] = _("Scenario Plot"); -static const u8 sCreditsText_Scenario[] = _("Scenario"); -static const u8 sCreditsText_ScriptDesigners[] = _("Script Designers"); -static const u8 sCreditsText_MapDesigners[] = _("Map Designers"); -static const u8 sCreditsText_MapDataDesigners[] = _("Map Data Designers"); -static const u8 sCreditsText_ParametricDesigners[] = _("Parametric Designers"); -static const u8 sCreditsText_PokedexText[] = _("POKéDEX Text"); -static const u8 sCreditsText_EnvAndToolPgrms[] = _("Environment & Tool Programmers"); -static const u8 sCreditsText_NCLProductTesting[] = _("NCL Product Testing"); -static const u8 sCreditsText_SpecialThanks[] = _("Special Thanks"); -static const u8 sCreditsText_Coordinators[] = _("Coordinators"); -static const u8 sCreditsText_Producers[] = _("Producers"); -static const u8 sCreditsText_ExecProducers[] = _("Executive Producers"); -static const u8 sCreditsText_InfoSupervisors[] = _("Information Supervisors"); -static const u8 sCreditsText_TaskManagers[] = _("Task Managers"); -static const u8 sCreditsText_BrailleCodeCheck[] = _("Braille Code Check"); -static const u8 sCreditsText_WorldDirector[] = _("World Director"); -static const u8 sCreditsText_BattleFrontierData[] = _("Battle Frontier Data"); -static const u8 sCreditsText_SupportProgrammers[] = _("Support Programmers"); -static const u8 sCreditsText_Artwork[] = _("Artwork"); -static const u8 sCreditsText_LeadProgrammer[] = _("Lead Programmer"); -static const u8 sCreditsText_LeadGraphicArtist[] = _("Lead Graphic Artist"); -static const u8 sCreditsText_SatoshiTajiri[] = _("Satoshi Tajiri"); -static const u8 sCreditsText_JunichiMasuda[] = _("Junichi Masuda"); -static const u8 sCreditsText_KenSugimori[] = _("Ken Sugimori"); -static const u8 sCreditsText_ShigekiMorimoto[] = _("Shigeki Morimoto"); -static const u8 sCreditsText_TetsuyaWatanabe[] = _("Tetsuya Watanabe"); -static const u8 sCreditsText_HisashiSogabe[] = _("Hisashi Sogabe"); -static const u8 sCreditsText_SosukeTamada[] = _("Sosuke Tamada"); -static const u8 sCreditsText_AkitoMori[] = _("Akito Mori"); -static const u8 sCreditsText_KeitaKagaya[] = _("Keita Kagaya"); -static const u8 sCreditsText_YoshinoriMatsuda[] = _("Yoshinori Matsuda"); -static const u8 sCreditsText_HiroyukiNakamura[] = _("Hiroyuki Nakamura"); -static const u8 sCreditsText_MasaoTaya[] = _("Masao Taya"); -static const u8 sCreditsText_SatoshiNohara[] = _("Satoshi Nohara"); -static const u8 sCreditsText_TomomichiOhta[] = _("Tomomichi Ohta"); -static const u8 sCreditsText_MiyukiIwasawa[] = _("Miyuki Iwasawa"); -static const u8 sCreditsText_TakenoriOhta[] = _("Takenori Ohta"); -static const u8 sCreditsText_HironobuYoshida[] = _("Hironobu Yoshida"); -static const u8 sCreditsText_MotofumiFujiwara[] = _("Motofumi Fujiwara"); -static const u8 sCreditsText_SatoshiOhta[] = _("Satoshi Ohta"); -static const u8 sCreditsText_AsukaIwashita[] = _("Asuka Iwashita"); -static const u8 sCreditsText_AimiTomita[] = _("Aimi Tomita"); -static const u8 sCreditsText_TakaoUnno[] = _("Takao Unno"); -static const u8 sCreditsText_KanakoEo[] = _("Kanako Eo"); -static const u8 sCreditsText_JunOkutani[] = _("Jun Okutani"); -static const u8 sCreditsText_AtsukoNishida[] = _("Atsuko Nishida"); -static const u8 sCreditsText_MuneoSaito[] = _("Muneo Saito"); -static const u8 sCreditsText_RenaYoshikawa[] = _("Rena Yoshikawa"); -static const u8 sCreditsText_GoIchinose[] = _("Go Ichinose"); -static const u8 sCreditsText_MorikazuAoki[] = _("Morikazu Aoki"); -static const u8 sCreditsText_KojiNishino[] = _("Koji Nishino"); -static const u8 sCreditsText_KenjiMatsushima[] = _("Kenji Matsushima"); -static const u8 sCreditsText_TetsujiOhta[] = _("Tetsuji Ohta"); -static const u8 sCreditsText_HitomiSato[] = _("Hitomi Sato"); -static const u8 sCreditsText_TakeshiKawachimaru[] = _("Takeshi Kawachimaru"); -static const u8 sCreditsText_TeruyukiShimoyamada[] = _("Teruyuki Shimoyamada"); -static const u8 sCreditsText_ShigeruOhmori[] = _("Shigeru Ohmori"); -static const u8 sCreditsText_TadashiTakahashi[] = _("Tadashi Takahashi"); -static const u8 sCreditsText_ToshinobuMatsumiya[] = _("Toshinobu Matsumiya"); -static const u8 sCreditsText_AkihitoTomisawa[] = _("Akihito Tomisawa"); -static const u8 sCreditsText_HirokiEnomoto[] = _("Hiroki Enomoto"); -static const u8 sCreditsText_KazuyukiTerada[] = _("Kazuyuki Terada"); -static const u8 sCreditsText_YuriSakurai[] = _("Yuri Sakurai"); -static const u8 sCreditsText_HiromiSagawa[] = _("Hiromi Sagawa"); -static const u8 sCreditsText_KenjiTominaga[] = _("Kenji Tominaga"); -static const u8 sCreditsText_YoshioTajiri[] = _("Yoshio Tajiri"); -static const u8 sCreditsText_TeikoSasaki[] = _("Teiko Sasaki"); -static const u8 sCreditsText_SachikoHamano[] = _("Sachiko Hamano"); -static const u8 sCreditsText_ChieMatsumiya[] = _("Chie Matsumiya"); -static const u8 sCreditsText_AkikoShinozaki[] = _("Akiko Shinozaki"); -static const u8 sCreditsText_AstukoFujii[] = _("Astuko Fujii"); -static const u8 sCreditsText_NozomuSaito[] = _("Nozomu Saito"); -static const u8 sCreditsText_KenkichiToyama[] = _("Kenkichi Toyama"); -static const u8 sCreditsText_SuguruNakatsui[] = _("Suguru Nakatsui"); -static const u8 sCreditsText_YumiFunasaka[] = _("Yumi Funasaka"); -static const u8 sCreditsText_NaokoYanase[] = _("Naoko Yanase"); -static const u8 sCreditsText_NCLSuperMarioClub[] = _("NCL Super Mario Club"); -static const u8 sCreditsText_AtsushiTada[] = _("Atsushi Tada"); -static const u8 sCreditsText_TakahiroOhnishi[] = _("Takahiro Ohnishi"); -static const u8 sCreditsText_NorihideOkamura[] = _("Norihide Okamura"); -static const u8 sCreditsText_HiroNakamura[] = _("Hiro Nakamura"); -static const u8 sCreditsText_HiroyukiUesugi[] = _("Hiroyuki Uesugi"); -static const u8 sCreditsText_TerukiMurakawa[] = _("Teruki Murakawa"); -static const u8 sCreditsText_AkiraKinashi[] = _("Akira Kinashi"); -static const u8 sCreditsText_MichikoTakizawa[] = _("Michiko Takizawa"); -static const u8 sCreditsText_MakikoTakada[] = _("Makiko Takada"); -static const u8 sCreditsText_TakanaoKondo[] = _("Takanao Kondo"); -static const u8 sCreditsText_AiMashima[] = _("Ai Mashima"); -static const u8 sCreditsText_GakujiNomoto[] = _("Gakuji Nomoto"); -static const u8 sCreditsText_TakehiroIzushi[] = _("Takehiro Izushi"); -static const u8 sCreditsText_HitoshiYamagami[] = _("Hitoshi Yamagami"); -static const u8 sCreditsText_KyokoWatanabe[] = _("Kyoko Watanabe"); -static const u8 sCreditsText_TakaoNakano[] = _("Takao Nakano"); -static const u8 sCreditsText_HiroyukiJinnai[] = _("Hiroyuki Jinnai"); -static const u8 sCreditsText_HiroakiTsuru[] = _("Hiroaki Tsuru"); -static const u8 sCreditsText_TsunekazIshihara[] = _("Tsunekaz Ishihara"); -static const u8 sCreditsText_SatoruIwata[] = _("Satoru Iwata"); -static const u8 sCreditsText_KazuyaSuyama[] = _("Kazuya Suyama"); -static const u8 sCreditsText_SatoshiMitsuhara[] = _("Satoshi Mitsuhara"); -static const u8 sCreditsText_JapanBrailleLibrary[] = _("Japan Braille Library"); -static const u8 sCreditsText_TomotakaKomura[] = _("Tomotaka Komura"); -static const u8 sCreditsText_MikikoOhhashi[] = _("Mikiko Ohhashi"); -static const u8 sCreditsText_DaisukeHoshino[] = _("Daisuke Hoshino"); -static const u8 sCreditsText_KenjiroIto[] = _("Kenjiro Ito"); -static const u8 sCreditsText_RuiKawaguchi[] = _("Rui Kawaguchi"); -static const u8 sCreditsText_ShunsukeKohori[] = _("Shunsuke Kohori"); -static const u8 sCreditsText_SachikoNakamichi[] = _("Sachiko Nakamichi"); -static const u8 sCreditsText_FujikoNomura[] = _("Fujiko Nomura"); -static const u8 sCreditsText_KazukiYoshihara[] = _("Kazuki Yoshihara"); -static const u8 sCreditsText_RetsujiNomoto[] = _("Retsuji Nomoto"); -static const u8 sCreditsText_AzusaTajima[] = _("Azusa Tajima"); -static const u8 sCreditsText_ShusakuEgami[] = _("Shusaku Egami"); -static const u8 sCreditsText_PackageAndManual[] = _("Package & Manual Illustration"); -static const u8 sCreditsText_EnglishVersion[] = _("English Version Coordinators"); -static const u8 sCreditsText_Translator[] = _("Translator"); -static const u8 sCreditsText_TextEditor[] = _("Text Editor"); -static const u8 sCreditsText_NCLCoordinator[] = _("NCL Coordinator"); -static const u8 sCreditsText_GraphicDesigner[] = _("Graphic Designer"); -static const u8 sCreditsText_NOAProductTesting[] = _("NOA Product Testing"); -static const u8 sCreditsText_HideyukiNakajima[] = _("Hideyuki Nakajima"); -static const u8 sCreditsText_HidenoriSaeki[] = _("Hidenori Saeki"); -static const u8 sCreditsText_YokoWatanabe[] = _("Yoko Watanabe"); -static const u8 sCreditsText_SakaeKimura[] = _("Sakae Kimura"); -static const u8 sCreditsText_ChiakiShinkai[] = _("Chiaki Shinkai"); -static const u8 sCreditsText_SethMcMahill[] = _("Seth McMahill"); -static const u8 sCreditsText_NobOgasawara[] = _("Nob Ogasawara"); -static const u8 sCreditsText_TeresaLillygren[] = _("Teresa Lillygren"); -static const u8 sCreditsText_KimikoNakamichi[] = _("Kimiko Nakamichi"); -static const u8 sCreditsText_SouichiYamamoto[] = _("Souichi Yamamoto"); -static const u8 sCreditsText_YuichiroIto[] = _("Yuichiro Ito"); -static const u8 sCreditsText_ThomasHertzog[] = _("Thomas Hertzog"); -static const u8 sCreditsText_MikaKurosawa[] = _("Mika Kurosawa"); -static const u8 sCreditsText_NationalFederationBlind[] = _("National Federation of the Blind"); -static const u8 sCreditsText_PatriciaAMaurer[] = _("Patricia A. Maurer"); -static const u8 sCreditsText_EuropeanBlindUnion[] = _("European Blind Union"); -static const u8 sCreditsText_AustralianBrailleAuthority[] = _("Australian Braille Authority"); -static const u8 sCreditsText_RoyalNewZealandFederationBlind[] = _("Royal New Zealand Federation for the Blind"); -static const u8 sCreditsText_MotoyasuTojima[] = _("Motoyasu Tojima"); -static const u8 sCreditsText_NicolaPrattBarlow[] = _("Nicola Pratt-Barlow"); -static const u8 sCreditsText_ShellieDow[] = _("Shellie Dow"); -static const u8 sCreditsText_ErikJohnson[] = _("Erik Johnson"); -static const struct CreditsEntry sCreditsEntry_EmptyString[] = { 0, FALSE, sCreditsText_EmptyString}; -static const struct CreditsEntry sCreditsEntry_PkmnEmeraldVersion[] = { 7, TRUE, sCreditsText_PkmnEmeraldVersion}; -static const struct CreditsEntry sCreditsEntry_Credits[] = {11, TRUE, sCreditsText_Credits}; -static const struct CreditsEntry sCreditsEntry_ExecutiveDirector[] = { 8, TRUE, sCreditsText_ExecutiveDirector}; -static const struct CreditsEntry sCreditsEntry_Director[] = {12, TRUE, sCreditsText_Director}; -static const struct CreditsEntry sCreditsEntry_ArtDirector[] = {10, TRUE, sCreditsText_ArtDirector}; -static const struct CreditsEntry sCreditsEntry_BattleDirector[] = {10, TRUE, sCreditsText_BattleDirector}; -static const struct CreditsEntry sCreditsEntry_MainProgrammer[] = {10, TRUE, sCreditsText_MainProgrammer}; -static const struct CreditsEntry sCreditsEntry_BattleSystemPgrms[] = { 8, TRUE, sCreditsText_BattleSystemPgrms}; -static const struct CreditsEntry sCreditsEntry_FieldSystemPgrms[] = { 7, TRUE, sCreditsText_FieldSystemPgrms}; -static const struct CreditsEntry sCreditsEntry_Programmers[] = {12, TRUE, sCreditsText_Programmers}; -static const struct CreditsEntry sCreditsEntry_MainGraphicDesigner[] = { 7, TRUE, sCreditsText_MainGraphicDesigner}; -static const struct CreditsEntry sCreditsEntry_GraphicDesigners[] = { 9, TRUE, sCreditsText_GraphicDesigners}; -static const struct CreditsEntry sCreditsEntry_PkmnDesigners[] = {10, TRUE, sCreditsText_PkmnDesigners}; -static const struct CreditsEntry sCreditsEntry_MusicComposition[] = {13, TRUE, sCreditsText_MusicComposition}; -static const struct CreditsEntry sCreditsEntry_SoundEffectsAndPkmnVoices[] = { 4, TRUE, sCreditsText_SoundEffectsAndPkmnVoices}; -static const struct CreditsEntry sCreditsEntry_GameDesigners[] = {11, TRUE, sCreditsText_GameDesigners}; -static const struct CreditsEntry sCreditsEntry_ScenarioPlot[] = {11, TRUE, sCreditsText_ScenarioPlot}; -static const struct CreditsEntry sCreditsEntry_Scenario[] = {13, TRUE, sCreditsText_Scenario}; -static const struct CreditsEntry sCreditsEntry_ScriptDesigners[] = {10, TRUE, sCreditsText_ScriptDesigners}; -static const struct CreditsEntry sCreditsEntry_MapDesigners[] = {11, TRUE, sCreditsText_MapDesigners}; -static const struct CreditsEntry sCreditsEntry_MapDataDesigners[] = { 9, TRUE, sCreditsText_MapDataDesigners}; -static const struct CreditsEntry sCreditsEntry_ParametricDesigners[] = { 9, TRUE, sCreditsText_ParametricDesigners}; -static const struct CreditsEntry sCreditsEntry_PokedexText[] = {11, TRUE, sCreditsText_PokedexText}; -static const struct CreditsEntry sCreditsEntry_EnvAndToolPgrms[] = { 6, TRUE, sCreditsText_EnvAndToolPgrms}; -static const struct CreditsEntry sCreditsEntry_NCLProductTesting[] = {11, TRUE, sCreditsText_NCLProductTesting}; -static const struct CreditsEntry sCreditsEntry_SpecialThanks[] = {10, TRUE, sCreditsText_SpecialThanks}; -static const struct CreditsEntry sCreditsEntry_Coordinators[] = {11, TRUE, sCreditsText_Coordinators}; -static const struct CreditsEntry sCreditsEntry_Producers[] = {11, TRUE, sCreditsText_Producers}; -static const struct CreditsEntry sCreditsEntry_ExecProducers[] = { 7, TRUE, sCreditsText_ExecProducers}; -static const struct CreditsEntry sCreditsEntry_InfoSupervisors[] = {10, TRUE, sCreditsText_InfoSupervisors}; -static const struct CreditsEntry sCreditsEntry_TaskManagers[] = { 8, TRUE, sCreditsText_TaskManagers}; -static const struct CreditsEntry sCreditsEntry_BrailleCodeCheck[] = {10, TRUE, sCreditsText_BrailleCodeCheck}; -static const struct CreditsEntry sCreditsEntry_WorldDirector[] = {10, TRUE, sCreditsText_WorldDirector}; -static const struct CreditsEntry sCreditsEntry_BattleFrontierData[] = { 8, TRUE, sCreditsText_BattleFrontierData}; -static const struct CreditsEntry sCreditsEntry_SupportProgrammers[] = {10, TRUE, sCreditsText_SupportProgrammers}; -static const struct CreditsEntry sCreditsEntry_Artwork[] = {12, TRUE, sCreditsText_Artwork}; -static const struct CreditsEntry sCreditsEntry_LeadProgrammer[] = {10, TRUE, sCreditsText_LeadProgrammer}; -static const struct CreditsEntry sCreditsEntry_LeadGraphicArtist[] = { 9, TRUE, sCreditsText_LeadGraphicArtist}; -static const struct CreditsEntry sCreditsEntry_SatoshiTajiri[] = {11, FALSE, sCreditsText_SatoshiTajiri}; -static const struct CreditsEntry sCreditsEntry_JunichiMasuda[] = {11, FALSE, sCreditsText_JunichiMasuda}; -static const struct CreditsEntry sCreditsEntry_KenSugimori[] = {11, FALSE, sCreditsText_KenSugimori}; -static const struct CreditsEntry sCreditsEntry_ShigekiMorimoto[] = {11, FALSE, sCreditsText_ShigekiMorimoto}; -static const struct CreditsEntry sCreditsEntry_TetsuyaWatanabe[] = {11, FALSE, sCreditsText_TetsuyaWatanabe}; -static const struct CreditsEntry sCreditsEntry_HisashiSogabe[] = {11, FALSE, sCreditsText_HisashiSogabe}; -static const struct CreditsEntry sCreditsEntry_SosukeTamada[] = {11, FALSE, sCreditsText_SosukeTamada}; -static const struct CreditsEntry sCreditsEntry_AkitoMori[] = {11, FALSE, sCreditsText_AkitoMori}; -static const struct CreditsEntry sCreditsEntry_KeitaKagaya[] = {11, FALSE, sCreditsText_KeitaKagaya}; -static const struct CreditsEntry sCreditsEntry_YoshinoriMatsuda[] = {11, FALSE, sCreditsText_YoshinoriMatsuda}; -static const struct CreditsEntry sCreditsEntry_HiroyukiNakamura[] = {11, FALSE, sCreditsText_HiroyukiNakamura}; -static const struct CreditsEntry sCreditsEntry_MasaoTaya[] = {11, FALSE, sCreditsText_MasaoTaya}; -static const struct CreditsEntry sCreditsEntry_SatoshiNohara[] = {11, FALSE, sCreditsText_SatoshiNohara}; -static const struct CreditsEntry sCreditsEntry_TomomichiOhta[] = {11, FALSE, sCreditsText_TomomichiOhta}; -static const struct CreditsEntry sCreditsEntry_MiyukiIwasawa[] = {11, FALSE, sCreditsText_MiyukiIwasawa}; -static const struct CreditsEntry sCreditsEntry_TakenoriOhta[] = {11, FALSE, sCreditsText_TakenoriOhta}; -static const struct CreditsEntry sCreditsEntry_HironobuYoshida[] = {11, FALSE, sCreditsText_HironobuYoshida}; -static const struct CreditsEntry sCreditsEntry_MotofumiFujiwara[] = {11, FALSE, sCreditsText_MotofumiFujiwara}; -static const struct CreditsEntry sCreditsEntry_SatoshiOhta[] = {11, FALSE, sCreditsText_SatoshiOhta}; -static const struct CreditsEntry sCreditsEntry_AsukaIwashita[] = {11, FALSE, sCreditsText_AsukaIwashita}; -static const struct CreditsEntry sCreditsEntry_AimiTomita[] = {11, FALSE, sCreditsText_AimiTomita}; -static const struct CreditsEntry sCreditsEntry_TakaoUnno[] = {11, FALSE, sCreditsText_TakaoUnno}; -static const struct CreditsEntry sCreditsEntry_KanakoEo[] = {11, FALSE, sCreditsText_KanakoEo}; -static const struct CreditsEntry sCreditsEntry_JunOkutani[] = {11, FALSE, sCreditsText_JunOkutani}; -static const struct CreditsEntry sCreditsEntry_AtsukoNishida[] = {11, FALSE, sCreditsText_AtsukoNishida}; -static const struct CreditsEntry sCreditsEntry_MuneoSaito[] = {11, FALSE, sCreditsText_MuneoSaito}; -static const struct CreditsEntry sCreditsEntry_RenaYoshikawa[] = {11, FALSE, sCreditsText_RenaYoshikawa}; -static const struct CreditsEntry sCreditsEntry_GoIchinose[] = {11, FALSE, sCreditsText_GoIchinose}; -static const struct CreditsEntry sCreditsEntry_MorikazuAoki[] = {11, FALSE, sCreditsText_MorikazuAoki}; -static const struct CreditsEntry sCreditsEntry_KojiNishino[] = {11, FALSE, sCreditsText_KojiNishino}; -static const struct CreditsEntry sCreditsEntry_KenjiMatsushima[] = {11, FALSE, sCreditsText_KenjiMatsushima}; -static const struct CreditsEntry sCreditsEntry_TetsujiOhta[] = {11, FALSE, sCreditsText_TetsujiOhta}; -static const struct CreditsEntry sCreditsEntry_HitomiSato[] = {11, FALSE, sCreditsText_HitomiSato}; -static const struct CreditsEntry sCreditsEntry_TakeshiKawachimaru[] = {11, FALSE, sCreditsText_TakeshiKawachimaru}; -static const struct CreditsEntry sCreditsEntry_TeruyukiShimoyamada[] = {11, FALSE, sCreditsText_TeruyukiShimoyamada}; -static const struct CreditsEntry sCreditsEntry_ShigeruOhmori[] = {11, FALSE, sCreditsText_ShigeruOhmori}; -static const struct CreditsEntry sCreditsEntry_TadashiTakahashi[] = {11, FALSE, sCreditsText_TadashiTakahashi}; -static const struct CreditsEntry sCreditsEntry_ToshinobuMatsumiya[] = {11, FALSE, sCreditsText_ToshinobuMatsumiya}; -static const struct CreditsEntry sCreditsEntry_AkihitoTomisawa[] = {11, FALSE, sCreditsText_AkihitoTomisawa}; -static const struct CreditsEntry sCreditsEntry_HirokiEnomoto[] = {11, FALSE, sCreditsText_HirokiEnomoto}; -static const struct CreditsEntry sCreditsEntry_KazuyukiTerada[] = {11, FALSE, sCreditsText_KazuyukiTerada}; -static const struct CreditsEntry sCreditsEntry_YuriSakurai[] = {11, FALSE, sCreditsText_YuriSakurai}; -static const struct CreditsEntry sCreditsEntry_HiromiSagawa[] = {11, FALSE, sCreditsText_HiromiSagawa}; -static const struct CreditsEntry sCreditsEntry_KenjiTominaga[] = {11, FALSE, sCreditsText_KenjiTominaga}; -static const struct CreditsEntry sCreditsEntry_YoshioTajiri[] = {11, FALSE, sCreditsText_YoshioTajiri}; -static const struct CreditsEntry sCreditsEntry_TeikoSasaki[] = {11, FALSE, sCreditsText_TeikoSasaki}; -static const struct CreditsEntry sCreditsEntry_SachikoHamano[] = {11, FALSE, sCreditsText_SachikoHamano}; -static const struct CreditsEntry sCreditsEntry_ChieMatsumiya[] = {11, FALSE, sCreditsText_ChieMatsumiya}; -static const struct CreditsEntry sCreditsEntry_AkikoShinozaki[] = {11, FALSE, sCreditsText_AkikoShinozaki}; -static const struct CreditsEntry sCreditsEntry_AstukoFujii[] = {11, FALSE, sCreditsText_AstukoFujii}; -static const struct CreditsEntry sCreditsEntry_NozomuSaito[] = {11, FALSE, sCreditsText_NozomuSaito}; -static const struct CreditsEntry sCreditsEntry_KenkichiToyama[] = {11, FALSE, sCreditsText_KenkichiToyama}; -static const struct CreditsEntry sCreditsEntry_SuguruNakatsui[] = {11, FALSE, sCreditsText_SuguruNakatsui}; -static const struct CreditsEntry sCreditsEntry_YumiFunasaka[] = {11, FALSE, sCreditsText_YumiFunasaka}; -static const struct CreditsEntry sCreditsEntry_NaokoYanase[] = {11, FALSE, sCreditsText_NaokoYanase}; -static const struct CreditsEntry sCreditsEntry_NCLSuperMarioClub[] = {11, FALSE, sCreditsText_NCLSuperMarioClub}; -static const struct CreditsEntry sCreditsEntry_AtsushiTada[] = {11, FALSE, sCreditsText_AtsushiTada}; -static const struct CreditsEntry sCreditsEntry_TakahiroOhnishi[] = {11, FALSE, sCreditsText_TakahiroOhnishi}; -static const struct CreditsEntry sCreditsEntry_NorihideOkamura[] = {11, FALSE, sCreditsText_NorihideOkamura}; -static const struct CreditsEntry sCreditsEntry_HiroNakamura[] = {11, FALSE, sCreditsText_HiroNakamura}; -static const struct CreditsEntry sCreditsEntry_HiroyukiUesugi[] = {11, FALSE, sCreditsText_HiroyukiUesugi}; -static const struct CreditsEntry sCreditsEntry_TerukiMurakawa[] = {11, FALSE, sCreditsText_TerukiMurakawa}; -static const struct CreditsEntry sCreditsEntry_AkiraKinashi[] = {11, FALSE, sCreditsText_AkiraKinashi}; -static const struct CreditsEntry sCreditsEntry_MichikoTakizawa[] = {11, FALSE, sCreditsText_MichikoTakizawa}; -static const struct CreditsEntry sCreditsEntry_MakikoTakada[] = {11, FALSE, sCreditsText_MakikoTakada}; -static const struct CreditsEntry sCreditsEntry_TakanaoKondo[] = {11, FALSE, sCreditsText_TakanaoKondo}; -static const struct CreditsEntry sCreditsEntry_AiMashima[] = {11, FALSE, sCreditsText_AiMashima}; -static const struct CreditsEntry sCreditsEntry_GakujiNomoto[] = {11, FALSE, sCreditsText_GakujiNomoto}; -static const struct CreditsEntry sCreditsEntry_TakehiroIzushi[] = {11, FALSE, sCreditsText_TakehiroIzushi}; -static const struct CreditsEntry sCreditsEntry_HitoshiYamagami[] = {11, FALSE, sCreditsText_HitoshiYamagami}; -static const struct CreditsEntry sCreditsEntry_KyokoWatanabe[] = {11, FALSE, sCreditsText_KyokoWatanabe}; -static const struct CreditsEntry sCreditsEntry_TakaoNakano[] = {11, FALSE, sCreditsText_TakaoNakano}; -static const struct CreditsEntry sCreditsEntry_HiroyukiJinnai[] = {11, FALSE, sCreditsText_HiroyukiJinnai}; -static const struct CreditsEntry sCreditsEntry_HiroakiTsuru[] = {11, FALSE, sCreditsText_HiroakiTsuru}; -static const struct CreditsEntry sCreditsEntry_TsunekazIshihara[] = {11, FALSE, sCreditsText_TsunekazIshihara}; -static const struct CreditsEntry sCreditsEntry_SatoruIwata[] = {11, FALSE, sCreditsText_SatoruIwata}; -static const struct CreditsEntry sCreditsEntry_KazuyaSuyama[] = {11, FALSE, sCreditsText_KazuyaSuyama}; -static const struct CreditsEntry sCreditsEntry_SatoshiMitsuhara[] = {11, FALSE, sCreditsText_SatoshiMitsuhara}; -static const struct CreditsEntry sCreditsEntry_JapanBrailleLibrary[] = { 9, FALSE, sCreditsText_JapanBrailleLibrary}; -static const struct CreditsEntry sCreditsEntry_TomotakaKomura[] = {11, FALSE, sCreditsText_TomotakaKomura}; -static const struct CreditsEntry sCreditsEntry_MikikoOhhashi[] = {11, FALSE, sCreditsText_MikikoOhhashi}; -static const struct CreditsEntry sCreditsEntry_DaisukeHoshino[] = {11, FALSE, sCreditsText_DaisukeHoshino}; -static const struct CreditsEntry sCreditsEntry_KenjiroIto[] = {11, FALSE, sCreditsText_KenjiroIto}; -static const struct CreditsEntry sCreditsEntry_RuiKawaguchi[] = {11, FALSE, sCreditsText_RuiKawaguchi}; -static const struct CreditsEntry sCreditsEntry_ShunsukeKohori[] = {11, FALSE, sCreditsText_ShunsukeKohori}; -static const struct CreditsEntry sCreditsEntry_SachikoNakamichi[] = {11, FALSE, sCreditsText_SachikoNakamichi}; -static const struct CreditsEntry sCreditsEntry_FujikoNomura[] = {11, FALSE, sCreditsText_FujikoNomura}; -static const struct CreditsEntry sCreditsEntry_KazukiYoshihara[] = {11, FALSE, sCreditsText_KazukiYoshihara}; -static const struct CreditsEntry sCreditsEntry_RetsujiNomoto[] = {11, FALSE, sCreditsText_RetsujiNomoto}; -static const struct CreditsEntry sCreditsEntry_AzusaTajima[] = {11, FALSE, sCreditsText_AzusaTajima}; -static const struct CreditsEntry sCreditsEntry_ShusakuEgami[] = {11, FALSE, sCreditsText_ShusakuEgami}; -static const struct CreditsEntry sCreditsEntry_PackageAndManual[] = { 0, TRUE, sCreditsText_PackageAndManual}; -static const struct CreditsEntry sCreditsEntry_EnglishVersion[] = { 0, TRUE, sCreditsText_EnglishVersion}; -static const struct CreditsEntry sCreditsEntry_Translator[] = { 0, TRUE, sCreditsText_Translator}; -static const struct CreditsEntry sCreditsEntry_TextEditor[] = { 0, TRUE, sCreditsText_TextEditor}; -static const struct CreditsEntry sCreditsEntry_NCLCoordinator[] = { 0, TRUE, sCreditsText_NCLCoordinator}; -static const struct CreditsEntry sCreditsEntry_GraphicDesigner[] = { 0, TRUE, sCreditsText_GraphicDesigner}; -static const struct CreditsEntry sCreditsEntry_NOAProductTesting[] = { 0, TRUE, sCreditsText_NOAProductTesting}; -static const struct CreditsEntry sCreditsEntry_HideyukiNakajima[] = { 0, FALSE, sCreditsText_HideyukiNakajima}; -static const struct CreditsEntry sCreditsEntry_HidenoriSaeki[] = { 0, FALSE, sCreditsText_HidenoriSaeki}; -static const struct CreditsEntry sCreditsEntry_YokoWatanabe[] = { 0, FALSE, sCreditsText_YokoWatanabe}; -static const struct CreditsEntry sCreditsEntry_SakaeKimura[] = { 0, FALSE, sCreditsText_SakaeKimura}; -static const struct CreditsEntry sCreditsEntry_ChiakiShinkai[] = { 0, FALSE, sCreditsText_ChiakiShinkai}; -static const struct CreditsEntry sCreditsEntry_SethMcMahill[] = { 0, FALSE, sCreditsText_SethMcMahill}; -static const struct CreditsEntry sCreditsEntry_NobOgasawara[] = { 0, FALSE, sCreditsText_NobOgasawara}; -static const struct CreditsEntry sCreditsEntry_TeresaLillygren[] = { 0, FALSE, sCreditsText_TeresaLillygren}; -static const struct CreditsEntry sCreditsEntry_KimikoNakamichi[] = { 0, FALSE, sCreditsText_KimikoNakamichi}; -static const struct CreditsEntry sCreditsEntry_SouichiYamamoto[] = { 0, FALSE, sCreditsText_SouichiYamamoto}; -static const struct CreditsEntry sCreditsEntry_YuichiroIto[] = { 0, FALSE, sCreditsText_YuichiroIto}; -static const struct CreditsEntry sCreditsEntry_ThomasHertzog[] = { 0, FALSE, sCreditsText_ThomasHertzog}; -static const struct CreditsEntry sCreditsEntry_MikaKurosawa[] = { 0, FALSE, sCreditsText_MikaKurosawa}; -static const struct CreditsEntry sCreditsEntry_NationalFederationBlind[] = { 0, FALSE, sCreditsText_NationalFederationBlind}; -static const struct CreditsEntry sCreditsEntry_PatriciaAMaurer[] = { 0, FALSE, sCreditsText_PatriciaAMaurer}; -static const struct CreditsEntry sCreditsEntry_EuropeanBlindUnion[] = { 0, FALSE, sCreditsText_EuropeanBlindUnion}; -static const struct CreditsEntry sCreditsEntry_AustralianBrailleAuthority[] = { 0, FALSE, sCreditsText_AustralianBrailleAuthority}; -static const struct CreditsEntry sCreditsEntry_RoyalNewZealandFederationBlind[] = { 0, FALSE, sCreditsText_RoyalNewZealandFederationBlind}; -static const struct CreditsEntry sCreditsEntry_MotoyasuTojima[] = { 0, FALSE, sCreditsText_MotoyasuTojima}; -static const struct CreditsEntry sCreditsEntry_NicolaPrattBarlow[] = { 0, FALSE, sCreditsText_NicolaPrattBarlow}; -static const struct CreditsEntry sCreditsEntry_ShellieDow[] = { 0, FALSE, sCreditsText_ShellieDow}; -static const struct CreditsEntry sCreditsEntry_ErikJohnson[] = { 0, FALSE, sCreditsText_ErikJohnson}; - -#define _ sCreditsEntry_EmptyString -static const struct CreditsEntry *const gCreditsEntryPointerTable[][5] = -{ - { - _, - sCreditsEntry_PkmnEmeraldVersion, - sCreditsEntry_Credits, - _, - _ - }, - { - _, - sCreditsEntry_Director, - sCreditsEntry_ShigekiMorimoto, - _, - _, - }, - { - _, - sCreditsEntry_ArtDirector, - sCreditsEntry_KenSugimori, - _, - _, - }, - { - _, - sCreditsEntry_WorldDirector, - sCreditsEntry_JunichiMasuda, - _, - _, - }, - { - sCreditsEntry_LeadProgrammer, - sCreditsEntry_HisashiSogabe, - sCreditsEntry_LeadGraphicArtist, - sCreditsEntry_MotofumiFujiwara, - _, - }, - { - sCreditsEntry_Programmers, - sCreditsEntry_HisashiSogabe, - sCreditsEntry_TomomichiOhta, - sCreditsEntry_NozomuSaito, - sCreditsEntry_EmptyString, - }, - { - sCreditsEntry_Programmers, - sCreditsEntry_AkitoMori, - sCreditsEntry_HiroyukiNakamura, - sCreditsEntry_MasaoTaya, - _, - }, - { - sCreditsEntry_Programmers, - sCreditsEntry_SatoshiNohara, - sCreditsEntry_MiyukiIwasawa, - sCreditsEntry_YoshinoriMatsuda, - sCreditsEntry_KeitaKagaya, - }, - { - sCreditsEntry_Programmers, - sCreditsEntry_TetsuyaWatanabe, - sCreditsEntry_SosukeTamada, - sCreditsEntry_TakenoriOhta, - _, - }, - { - _, - sCreditsEntry_GraphicDesigners, - sCreditsEntry_MotofumiFujiwara, - sCreditsEntry_SatoshiOhta, - _, - }, - { - sCreditsEntry_GraphicDesigners, - sCreditsEntry_KenkichiToyama, - sCreditsEntry_AsukaIwashita, - sCreditsEntry_TakaoUnno, - _, - }, - { - sCreditsEntry_GraphicDesigners, - sCreditsEntry_KenSugimori, - sCreditsEntry_HironobuYoshida, - sCreditsEntry_AimiTomita, - sCreditsEntry_KanakoEo, - }, - { - sCreditsEntry_MusicComposition, - sCreditsEntry_GoIchinose, - sCreditsEntry_JunichiMasuda, - sCreditsEntry_MorikazuAoki, - sCreditsEntry_HitomiSato, - }, - { - _, - sCreditsEntry_SoundEffectsAndPkmnVoices, - sCreditsEntry_GoIchinose, - sCreditsEntry_MorikazuAoki, - _, - }, - { - sCreditsEntry_GameDesigners, - sCreditsEntry_ShigekiMorimoto, - sCreditsEntry_TeruyukiShimoyamada, - sCreditsEntry_TakeshiKawachimaru, - sCreditsEntry_AkihitoTomisawa, - }, - { - sCreditsEntry_GameDesigners, - sCreditsEntry_SuguruNakatsui, - sCreditsEntry_TetsujiOhta, - sCreditsEntry_HitomiSato, - sCreditsEntry_KenjiMatsushima, - }, - { - sCreditsEntry_GameDesigners, - sCreditsEntry_JunichiMasuda, - sCreditsEntry_KojiNishino, - sCreditsEntry_ShigeruOhmori, - sCreditsEntry_TadashiTakahashi, - }, - { - sCreditsEntry_ScenarioPlot, - sCreditsEntry_AkihitoTomisawa, - sCreditsEntry_JunichiMasuda, - sCreditsEntry_KojiNishino, - _, - }, - { - sCreditsEntry_Scenario, - sCreditsEntry_AkihitoTomisawa, - sCreditsEntry_HitomiSato, - sCreditsEntry_ToshinobuMatsumiya, - _, - }, - { - sCreditsEntry_ScriptDesigners, - sCreditsEntry_TomomichiOhta, - sCreditsEntry_SatoshiNohara, - _, - _, - }, - { - sCreditsEntry_MapDesigners, - sCreditsEntry_SuguruNakatsui, - sCreditsEntry_TeruyukiShimoyamada, - sCreditsEntry_ShigeruOhmori, - sCreditsEntry_TetsujiOhta, - }, - { - _, - sCreditsEntry_BattleFrontierData, - sCreditsEntry_TetsujiOhta, - _, - _, - }, - { - sCreditsEntry_ParametricDesigners, - sCreditsEntry_TeruyukiShimoyamada, - sCreditsEntry_ShigekiMorimoto, - sCreditsEntry_TetsujiOhta, - sCreditsEntry_KojiNishino, - }, - { - _, - sCreditsEntry_PokedexText, - sCreditsEntry_KenjiMatsushima, - _, - _, - }, - { - sCreditsEntry_EnvAndToolPgrms, - sCreditsEntry_HisashiSogabe, - sCreditsEntry_SosukeTamada, - sCreditsEntry_HiroyukiNakamura, - sCreditsEntry_AkitoMori, - }, - { - sCreditsEntry_PkmnDesigners, - sCreditsEntry_KenSugimori, - sCreditsEntry_MotofumiFujiwara, - sCreditsEntry_ShigekiMorimoto, - _, - }, - { - sCreditsEntry_PkmnDesigners, - sCreditsEntry_HironobuYoshida, - sCreditsEntry_SatoshiOhta, - sCreditsEntry_AsukaIwashita, - _, - }, - { - sCreditsEntry_PkmnDesigners, - sCreditsEntry_TakaoUnno, - sCreditsEntry_KanakoEo, - sCreditsEntry_AimiTomita, - _, - }, - { - sCreditsEntry_PkmnDesigners, - sCreditsEntry_AtsukoNishida, - sCreditsEntry_MuneoSaito, - sCreditsEntry_RenaYoshikawa, - sCreditsEntry_JunOkutani, - }, - { - _, - sCreditsEntry_SupportProgrammers, - sCreditsEntry_SatoshiMitsuhara, - sCreditsEntry_DaisukeHoshino, - _, - }, - { - _, - sCreditsEntry_NCLProductTesting, - sCreditsEntry_NCLSuperMarioClub, - _, - _, - }, - { - _, - sCreditsEntry_PackageAndManual, - sCreditsEntry_KenSugimori, - _, - _, - }, - { - _, - sCreditsEntry_SpecialThanks, - sCreditsEntry_KenjiTominaga, - sCreditsEntry_HirokiEnomoto, - _, - }, - { - sCreditsEntry_SpecialThanks, - sCreditsEntry_KazuyaSuyama, - sCreditsEntry_KenjiroIto, - sCreditsEntry_MichikoTakizawa, - sCreditsEntry_MakikoTakada, - }, - { - sCreditsEntry_SpecialThanks, - sCreditsEntry_MikikoOhhashi, - sCreditsEntry_TakanaoKondo, - sCreditsEntry_RuiKawaguchi, - _, - }, - { - sCreditsEntry_SpecialThanks, - sCreditsEntry_TakahiroOhnishi, - sCreditsEntry_NorihideOkamura, - sCreditsEntry_ShunsukeKohori, - _, - }, - { - sCreditsEntry_InfoSupervisors, - sCreditsEntry_KazuyukiTerada, - sCreditsEntry_YuriSakurai, - sCreditsEntry_YumiFunasaka, - sCreditsEntry_NaokoYanase, - }, - { - _, - sCreditsEntry_Artwork, - sCreditsEntry_SachikoNakamichi, - sCreditsEntry_FujikoNomura, - _, - }, - { - _, - sCreditsEntry_Artwork, - sCreditsEntry_HideyukiNakajima, - sCreditsEntry_HidenoriSaeki, - _, - }, - { - sCreditsEntry_Artwork, - sCreditsEntry_YokoWatanabe, - sCreditsEntry_SakaeKimura, - sCreditsEntry_ChiakiShinkai, - _, - }, - { - sCreditsEntry_Coordinators, - sCreditsEntry_KazukiYoshihara, - sCreditsEntry_AkiraKinashi, - sCreditsEntry_RetsujiNomoto, - _, - }, - { - _, - sCreditsEntry_EnglishVersion, - sCreditsEntry_HiroNakamura, - sCreditsEntry_SethMcMahill, - _, - }, - { - _, - sCreditsEntry_Translator, - sCreditsEntry_NobOgasawara, - _, - _, - }, - { - _, - sCreditsEntry_TextEditor, - sCreditsEntry_TeresaLillygren, - _, - _, - }, - { - _, - sCreditsEntry_NCLCoordinator, - sCreditsEntry_KimikoNakamichi, - _, - _, - }, - { - sCreditsEntry_Programmers, - sCreditsEntry_TerukiMurakawa, - sCreditsEntry_SouichiYamamoto, - sCreditsEntry_YuichiroIto, - sCreditsEntry_AkiraKinashi, - }, - { - _, - sCreditsEntry_GraphicDesigner, - sCreditsEntry_AkiraKinashi, - _, - _, - }, - { - sCreditsEntry_EnvAndToolPgrms, - sCreditsEntry_TerukiMurakawa, - sCreditsEntry_SouichiYamamoto, - sCreditsEntry_KimikoNakamichi, - _, - }, - { - sCreditsEntry_NOAProductTesting, - sCreditsEntry_ThomasHertzog, - sCreditsEntry_ErikJohnson, - sCreditsEntry_MikaKurosawa, - _, - }, - { - sCreditsEntry_BrailleCodeCheck, - sCreditsEntry_NationalFederationBlind, - sCreditsEntry_PatriciaAMaurer, - sCreditsEntry_JapanBrailleLibrary, - sCreditsEntry_EuropeanBlindUnion, - }, - { - _, - sCreditsEntry_BrailleCodeCheck, - sCreditsEntry_AustralianBrailleAuthority, - sCreditsEntry_RoyalNewZealandFederationBlind, - _, - }, - { - sCreditsEntry_SpecialThanks, - sCreditsEntry_HiroyukiUesugi, - sCreditsEntry_MotoyasuTojima, - sCreditsEntry_NicolaPrattBarlow, - sCreditsEntry_ShellieDow, - }, - { - _, - sCreditsEntry_TaskManagers, - sCreditsEntry_AzusaTajima, - sCreditsEntry_ShusakuEgami, - _, - }, - { - sCreditsEntry_Producers, - sCreditsEntry_HiroyukiJinnai, - sCreditsEntry_HitoshiYamagami, - sCreditsEntry_GakujiNomoto, - sCreditsEntry_HiroakiTsuru, - }, - { - _, - sCreditsEntry_ExecutiveDirector, - sCreditsEntry_SatoshiTajiri, - _, - _, - }, - { - _, - sCreditsEntry_ExecProducers, - sCreditsEntry_SatoruIwata, - _, - _, - }, - { - _, - sCreditsEntry_ExecProducers, - sCreditsEntry_TsunekazIshihara, - _, - _, - }, -}; -#undef _ +#include "data/credits.h" static const struct BgTemplate sBackgroundTemplates[] = { @@ -966,7 +214,7 @@ static const u8 sMonSpritePos[][2] = {136, 36}, }; -static const union AnimCmd gUnknown_085E6F84[] = +static const union AnimCmd sAnim_Player_Slow[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(64, 8), @@ -975,7 +223,7 @@ static const union AnimCmd gUnknown_085E6F84[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd gUnknown_085E6F98[] = +static const union AnimCmd sAnim_Player_Fast[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(64, 4), @@ -984,7 +232,7 @@ static const union AnimCmd gUnknown_085E6F98[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd gUnknown_085E6FAC[] = +static const union AnimCmd sAnim_Player_LookBack[] = { ANIMCMD_FRAME(256, 4), ANIMCMD_FRAME(320, 4), @@ -992,7 +240,7 @@ static const union AnimCmd gUnknown_085E6FAC[] = ANIMCMD_END, }; -static const union AnimCmd gUnknown_085E6FBC[] = +static const union AnimCmd sAnim_Player_LookForward[] = { ANIMCMD_FRAME(384, 30), ANIMCMD_FRAME(320, 30), @@ -1001,15 +249,15 @@ static const union AnimCmd gUnknown_085E6FBC[] = ANIMCMD_END, }; -static const union AnimCmd *const gUnknown_085E6FD0[] = +static const union AnimCmd *const sAnims_Player[] = { - gUnknown_085E6F84, - gUnknown_085E6F98, - gUnknown_085E6FAC, - gUnknown_085E6FBC, + sAnim_Player_Slow, + sAnim_Player_Fast, + sAnim_Player_LookBack, + sAnim_Player_LookForward, }; -static const union AnimCmd gUnknown_085E6FE0[] = +static const union AnimCmd sAnim_Rival_Slow[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(64, 8), @@ -1018,7 +266,7 @@ static const union AnimCmd gUnknown_085E6FE0[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd gUnknown_085E6FF4[] = +static const union AnimCmd sAnim_Rival_Fast[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(64, 4), @@ -1027,31 +275,32 @@ static const union AnimCmd gUnknown_085E6FF4[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd gUnknown_085E7008[] = +static const union AnimCmd sAnim_Rival_Still[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_END, }; -static const union AnimCmd *const gUnknown_085E7010[] = +static const union AnimCmd *const sAnims_Rival[] = { - gUnknown_085E6FE0, - gUnknown_085E6FF4, - gUnknown_085E7008, + sAnim_Rival_Slow, + sAnim_Rival_Fast, + sAnim_Rival_Still, }; -static const struct SpriteSheet gUnknown_085E701C[] = { - { gDecompressionBuffer, 6144, 1001 }, - { NULL }, +#define MONBG_OFFSET (0x800 * 3) +static const struct SpriteSheet sSpriteSheet_MonBg[] = { + { gDecompressionBuffer, MONBG_OFFSET, TAG_MON_BG }, + {}, }; -static const struct SpritePalette gUnknown_085E702C[] = { - { (const u16 *)(gDecompressionBuffer + 0x1800), 1001 }, - { NULL }, +static const struct SpritePalette sSpritePalette_MonBg[] = { + { (const u16 *)&gDecompressionBuffer[MONBG_OFFSET], TAG_MON_BG }, + {}, }; -static const struct OamData gUnknown_085E703C = +static const struct OamData sOamData_MonBg = { - .y = 160, + .y = DISPLAY_HEIGHT, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = 0, @@ -1066,90 +315,63 @@ static const struct OamData gUnknown_085E703C = .affineParam = 0, }; -static const union AnimCmd gUnknown_085E7044[] = +static const union AnimCmd sAnim_MonBg_Yellow[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; -static const union AnimCmd gUnknown_085E704C[] = +static const union AnimCmd sAnim_MonBg_Red[] = { ANIMCMD_FRAME(64, 8), ANIMCMD_END, }; -static const union AnimCmd gUnknown_085E7054[] = +static const union AnimCmd sAnim_MonBg_Blue[] = { ANIMCMD_FRAME(128, 8), ANIMCMD_END, }; -static const union AnimCmd *const gUnknown_085E705C[] = +static const union AnimCmd *const sAnims_MonBg[] = { - gUnknown_085E7044, - gUnknown_085E704C, - gUnknown_085E7054, + [POS_LEFT] = sAnim_MonBg_Yellow, + [POS_CENTER] = sAnim_MonBg_Red, + [POS_RIGHT] = sAnim_MonBg_Blue, }; -static const struct SpriteTemplate gUnknown_085E7068 = +static const struct SpriteTemplate sSpriteTemplate_CreditsMonBg = { - .tileTag = 1001, - .paletteTag = 1001, - .oam = &gUnknown_085E703C, - .anims = gUnknown_085E705C, + .tileTag = TAG_MON_BG, + .paletteTag = TAG_MON_BG, + .oam = &sOamData_MonBg, + .anims = sAnims_MonBg, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81772B8, + .callback = SpriteCB_CreditsMonBg, }; -static void Task_WaitPaletteFade(u8 taskIdA); -static void Task_ProgressCreditTasks(u8 taskIdA); -static void sub_8175808(u8 taskIdA); -static void c2_080C9BFC(u8 taskIdA); -static void Task_CreditsLoadGrassScene(u8 taskIdA); -static void sub_81758A4(u8 taskIdA); -static void Task_CreditsTheEnd1(u8 taskIdA); -static void Task_CreditsTheEnd2(u8 taskIdA); -static void Task_CreditsTheEnd3(u8 taskIdA); -static void Task_CreditsTheEnd4(u8 taskIdA); -static void Task_CreditsTheEnd5(u8 taskIdA); -static void Task_CreditsTheEnd6(u8 taskIdA); -static void Task_CreditsSoftReset(u8 taskIdA); -static void ResetGpuAndVram(void); -static void sub_8175DA0(u8 taskIdB); -static u8 CheckChangeScene(u8 page, u8 taskIdA); -static void sub_81760FC(u8 taskIdA); -static void sub_817651C(u8 taskIdA); -static void sub_817624C(u8 taskIdA); -static bool8 sub_8176AB0(u8 data, u8 taskIdA); -static void ResetCreditsTasks(u8 taskIdA); -static void LoadTheEndScreen(u16, u16, u16); -static void sub_8176E40(u16 arg0, u16 palette); -static void sub_8176EE8(struct Sprite *sprite); -static void sub_8176F90(struct Sprite *sprite); -static u8 MakeMonSprite(u16 species, s16 x, s16 y, u16 position); -static void DeterminePokemonToShow(void); - -static void CreditsVBlankCallback(void) +static void VBlankCB_Credits(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -static void CB2_RunCreditsSequence(void) +static void CB2_Credits(void) { RunTasks(); AnimateSprites(); if ((JOY_HELD(B_BUTTON)) - && gHasHallOfFameRecords != 0 - && gTasks[gUnknown_0203BCE2].func == Task_ProgressCreditTasks) + && gHasHallOfFameRecords + && gTasks[sSavedTaskId].func == Task_ProgressCreditTasks) { - CreditsVBlankCallback(); + // Speed up credits + VBlankCB_Credits(); RunTasks(); AnimateSprites(); - gUnknown_0203BCE5 = 1; + sUsedSpeedUp = TRUE; } BuildOamBuffer(); UpdatePaletteFade(); @@ -1160,7 +382,7 @@ static void InitCreditsBgsAndWindows(void) ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, sBackgroundTemplates, ARRAY_COUNT(sBackgroundTemplates)); SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE)); - LoadPalette(gUnknown_085E56F0, 0x80, 0x40); + LoadPalette(sCredits_Pal, 0x80, 64); InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); PutWindowTilemap(0); @@ -1182,20 +404,20 @@ static void PrintCreditsText(const u8 *string, u8 y, bool8 isTitle) u8 x; u8 color[3]; - color[0] = 0; + color[0] = TEXT_COLOR_TRANSPARENT; if (isTitle == TRUE) { - color[1] = 3; - color[2] = 4; + color[1] = TEXT_COLOR_LIGHT_GREY; + color[2] = TEXT_COLOR_RED; } else { - color[1] = 1; - color[2] = 2; + color[1] = TEXT_COLOR_WHITE; + color[2] = TEXT_COLOR_DARK_GREY; } - x = GetStringCenterAlignXOffsetWithLetterSpacing(1, string, 0xF0, 1); + x = GetStringCenterAlignXOffsetWithLetterSpacing(1, string, DISPLAY_WIDTH, 1); AddTextPrinterParameterized4(0, 1, x, y, 1, 0, color, -1, string); } @@ -1237,19 +459,19 @@ void CB2_StartCreditsSequence(void) BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); EnableInterrupts(INTR_FLAG_VBLANK); - SetVBlankCallback(CreditsVBlankCallback); + SetVBlankCallback(VBlankCB_Credits); m4aSongNumStart(MUS_CREDITS); - SetMainCallback2(CB2_RunCreditsSequence); - gUnknown_0203BCE5 = 0; + SetMainCallback2(CB2_Credits); + sUsedSpeedUp = FALSE; sCreditsData = AllocZeroed(sizeof(struct CreditsData)); DeterminePokemonToShow(); sCreditsData->imgCounter = 0; - sCreditsData->nextImgPos = 0; + sCreditsData->nextImgPos = POS_LEFT; sCreditsData->currShownMon = 0; - gUnknown_0203BCE2 = taskIdA; + sSavedTaskId = taskIdA; } static void Task_WaitPaletteFade(u8 taskIdA) @@ -1274,7 +496,7 @@ static void Task_ProgressCreditTasks(u8 taskIdA) return; } - gUnknown_0203BCE0 = 0; + sUnkVar = 0; data1 = gTasks[taskIdA].data[TDA_11]; if (gTasks[taskIdA].data[TDA_11] == 1) @@ -1311,7 +533,7 @@ static void c2_080C9BFC(u8 taskIdA) { BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); EnableInterrupts(INTR_FLAG_VBLANK); - SetVBlankCallback(CreditsVBlankCallback); + SetVBlankCallback(VBlankCB_Credits); gTasks[taskIdA].func = Task_WaitPaletteFade; } } @@ -1349,18 +571,18 @@ static void Task_CreditsLoadGrassScene(u8 taskIdA) for (i = 0; i < 0x800; i++) (gDecompressionBuffer + 0x800)[i] = 0x22; for (i = 0; i < 0x800; i++) - (gDecompressionBuffer + 0x1000)[i] = 0x33; + (gDecompressionBuffer + 0x800 * 2)[i] = 0x33; - temp = (u16 *)(&gDecompressionBuffer[0x1800]); + temp = (u16 *)(&gDecompressionBuffer[MONBG_OFFSET]); temp[0] = RGB_BLACK; temp[1] = RGB(31, 31, 20); // light yellow temp[2] = RGB(31, 20, 20); // light red temp[3] = RGB(20, 20, 31); // light blue - LoadSpriteSheet(gUnknown_085E701C); - LoadSpritePalette(gUnknown_085E702C); + LoadSpriteSheet(sSpriteSheet_MonBg); + LoadSpritePalette(sSpritePalette_MonBg); - gMain.state += 1; + gMain.state++; break; } case 1: @@ -1384,7 +606,7 @@ static void Task_CreditsLoadGrassScene(u8 taskIdA) | DISPCNT_OBJ_ON); gMain.state = 0; - gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_MOVING; + gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_NORMAL; gTasks[taskIdA].func = Task_WaitPaletteFade; break; } @@ -1394,7 +616,7 @@ static void Task_CreditsTheEnd1(u8 taskIdA) { if (gTasks[taskIdA].data[TDA_12]) { - gTasks[taskIdA].data[TDA_12] -= 1; + gTasks[taskIdA].data[TDA_12]--; return; } @@ -1411,6 +633,8 @@ static void Task_CreditsTheEnd2(u8 taskIdA) } } +#define tDelay data[0] + static void Task_CreditsTheEnd3(u8 taskIdA) { ResetGpuAndVram(); @@ -1430,15 +654,15 @@ static void Task_CreditsTheEnd3(u8 taskIdA) | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON); - gTasks[taskIdA].data[TDA_0] = 235; //set this to 215 to actually show "THE END" in time to the last song beat + gTasks[taskIdA].tDelay = 235; //set this to 215 to actually show "THE END" in time to the last song beat gTasks[taskIdA].func = Task_CreditsTheEnd4; } static void Task_CreditsTheEnd4(u8 taskIdA) { - if (gTasks[taskIdA].data[TDA_0]) + if (gTasks[taskIdA].tDelay) { - gTasks[taskIdA].data[TDA_0] -= 1; + gTasks[taskIdA].tDelay--; return; } @@ -1450,10 +674,10 @@ static void Task_CreditsTheEnd5(u8 taskIdA) { if (!gPaletteFade.active) { - sub_8176E40(0x3800, 0); + DrawTheEnd(0x3800, 0); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0, RGB_BLACK); - gTasks[taskIdA].data[TDA_0] = 7200; + gTasks[taskIdA].tDelay = 7200; gTasks[taskIdA].func = Task_CreditsTheEnd6; } } @@ -1462,7 +686,7 @@ static void Task_CreditsTheEnd6(u8 taskIdA) { if (!gPaletteFade.active) { - if (gTasks[taskIdA].data[TDA_0] == 0 || gMain.newKeys) + if (gTasks[taskIdA].tDelay == 0 || gMain.newKeys) { FadeOutBGM(4); BeginNormalPaletteFade(PALETTES_ALL, 8, 0, 16, RGB_WHITEALPHA); @@ -1470,20 +694,22 @@ static void Task_CreditsTheEnd6(u8 taskIdA) return; } - if (gTasks[taskIdA].data[TDA_0] == 7144) + if (gTasks[taskIdA].tDelay == 7144) FadeOutBGM(8); - if (gTasks[taskIdA].data[TDA_0] == 6840) + if (gTasks[taskIdA].tDelay == 6840) m4aSongNumStart(MUS_END); - gTasks[taskIdA].data[TDA_0] -= 1; + gTasks[taskIdA].tDelay--; } } +#undef tDelay + static void Task_CreditsSoftReset(u8 taskIdA) { if (!gPaletteFade.active) - SoftReset(0xFF); + SoftReset(RESET_ALL); } static void ResetGpuAndVram(void) @@ -1525,32 +751,32 @@ static void sub_8175DA0(u8 taskIdB) gTasks[taskIdB].data[TDB_0] = 1; gTasks[taskIdB].data[TDB_3] = 0x48; gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; - gUnknown_0203BCE0 = 0; + sUnkVar = 0; } return; case 1: if (gTasks[taskIdB].data[TDB_3] != 0) { - gTasks[taskIdB].data[TDB_3] -= 1; + gTasks[taskIdB].data[TDB_3]--; return; } - gTasks[taskIdB].data[TDB_0] += 1; + gTasks[taskIdB].data[TDB_0]++; return; case 2: if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == Task_ProgressCreditTasks) { if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT) { - for (i = 0; i < 5; i++) + for (i = 0; i < ENTRIES_PER_PAGE; i++) PrintCreditsText( - gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, + sCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 5 + i * 16, - gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->isTitle); + sCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->isTitle); CopyWindowToVram(0, 2); - gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1; - gTasks[taskIdB].data[TDB_0] += 1; + gTasks[taskIdB].data[TDB_CURRENT_PAGE]++; + gTasks[taskIdB].data[TDB_0]++; gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 1; @@ -1569,22 +795,22 @@ static void sub_8175DA0(u8 taskIdB) if (!gPaletteFade.active) { gTasks[taskIdB].data[TDB_3] = 0x73; - gTasks[taskIdB].data[TDB_0] += 1; + gTasks[taskIdB].data[TDB_0]++; } return; case 4: if (gTasks[taskIdB].data[TDB_3] != 0) { - gTasks[taskIdB].data[TDB_3] -= 1; + gTasks[taskIdB].data[TDB_3]--; return; } if (CheckChangeScene((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID])) { - gTasks[taskIdB].data[TDB_0] += 1; + gTasks[taskIdB].data[TDB_0]++; return; } - gTasks[taskIdB].data[TDB_0] += 1; + gTasks[taskIdB].data[TDB_0]++; if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) BeginNormalPaletteFade(0x00000300, 0, 0, 16, COLOR_LIGHT_GREEN); else @@ -1613,7 +839,7 @@ static u8 CheckChangeScene(u8 page, u8 taskIdA) if (page == 6) { - // Grass patch + // Pokémon interlude gTasks[taskIdA].data[TDA_11] = 2; } @@ -1626,7 +852,7 @@ static u8 CheckChangeScene(u8 page, u8 taskIdA) if (page == 18) { - // Grass patch + // Pokémon interlude gTasks[taskIdA].data[TDA_11] = 2; } @@ -1639,7 +865,7 @@ static u8 CheckChangeScene(u8 page, u8 taskIdA) if (page == 30) { - // Grass patch + // Pokémon interlude gTasks[taskIdA].data[TDA_11] = 2; } @@ -1652,7 +878,7 @@ static u8 CheckChangeScene(u8 page, u8 taskIdA) if (page == 42) { - // Grass patch + // Pokémon interlude gTasks[taskIdA].data[TDA_11] = 2; } @@ -1681,14 +907,17 @@ static void sub_81760FC(u8 taskIdD) case 0: break; case 1: - if (sCreditsData->nextImgPos == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0) + if (sCreditsData->nextImgPos == POS_LEFT && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0) break; gTasks[taskIdD].data[TDD_STATE]++; break; case 2: if (sCreditsData->imgCounter == NUM_MON_SLIDES || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != Task_ProgressCreditTasks) break; - r2 = MakeMonSprite(sCreditsData->monToShow[sCreditsData->currShownMon], sMonSpritePos[sCreditsData->nextImgPos][0], sMonSpritePos[sCreditsData->nextImgPos][1], sCreditsData->nextImgPos); + r2 = CreateCreditsMonSprite(sCreditsData->monToShow[sCreditsData->currShownMon], + sMonSpritePos[sCreditsData->nextImgPos][0], + sMonSpritePos[sCreditsData->nextImgPos][1], + sCreditsData->nextImgPos); if (sCreditsData->currShownMon < sCreditsData->numMonToShow - 1) { sCreditsData->currShownMon++; @@ -1700,10 +929,12 @@ static void sub_81760FC(u8 taskIdD) gSprites[r2].data[3] = 512; } sCreditsData->imgCounter++; - if (sCreditsData->nextImgPos == 2) - sCreditsData->nextImgPos = 0; + + if (sCreditsData->nextImgPos == POS_RIGHT) + sCreditsData->nextImgPos = POS_LEFT; else sCreditsData->nextImgPos++; + gTasks[taskIdD].data[TDD_3] = 50; gTasks[taskIdD].data[TDD_STATE]++; break; @@ -1846,7 +1077,7 @@ static void sub_817651C(u8 taskIdE) } else { - gTasks[taskIdE].data[TDE_1] += 1; + gTasks[taskIdE].data[TDE_1]++; } } CycleSceneryPalette(1); @@ -1857,63 +1088,63 @@ static void sub_817651C(u8 taskIdE) } } -static void sub_817664C(u8 scene, u8 taskIdA) +static void InitCreditsSceneGfx(u8 scene, u8 taskIdA) { switch (scene) { case 0: - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 272; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0; + gSprites[gTasks[taskIdA].tPlayerSpriteId].invisible = FALSE; + gSprites[gTasks[taskIdA].tRivalSpriteId].invisible = FALSE; + gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.x = 272; + gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.x = 272; + gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.y = 46; + gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.y = 46; + gSprites[gTasks[taskIdA].tPlayerSpriteId].data[0] = 0; + gSprites[gTasks[taskIdA].tRivalSpriteId].data[0] = 0; gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8); break; case 1: - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0; + gSprites[gTasks[taskIdA].tPlayerSpriteId].invisible = FALSE; + gSprites[gTasks[taskIdA].tRivalSpriteId].invisible = FALSE; + gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.x = 120; + gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.x = 272; + gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.y = 46; + gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.y = 46; + gSprites[gTasks[taskIdA].tPlayerSpriteId].data[0] = 0; + gSprites[gTasks[taskIdA].tRivalSpriteId].data[0] = 0; gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8); break; case 2: - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0; + gSprites[gTasks[taskIdA].tPlayerSpriteId].invisible = FALSE; + gSprites[gTasks[taskIdA].tRivalSpriteId].invisible = FALSE; + gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.x = 120; + gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.x = 272; + gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.y = 46; + gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.y = 46; + gSprites[gTasks[taskIdA].tPlayerSpriteId].data[0] = 0; + gSprites[gTasks[taskIdA].tRivalSpriteId].data[0] = 0; gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8); break; case 3: - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = -32; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0; + gSprites[gTasks[taskIdA].tPlayerSpriteId].invisible = FALSE; + gSprites[gTasks[taskIdA].tRivalSpriteId].invisible = FALSE; + gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.x = 120; + gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.x = -32; + gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.y = 46; + gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.y = 46; + gSprites[gTasks[taskIdA].tPlayerSpriteId].data[0] = 0; + gSprites[gTasks[taskIdA].tRivalSpriteId].data[0] = 0; gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8); break; case 4: - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 88; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 152; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; - gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0; + gSprites[gTasks[taskIdA].tPlayerSpriteId].invisible = FALSE; + gSprites[gTasks[taskIdA].tRivalSpriteId].invisible = FALSE; + gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.x = 88; + gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.x = 152; + gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.y = 46; + gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.y = 46; + gSprites[gTasks[taskIdA].tPlayerSpriteId].data[0] = 0; + gSprites[gTasks[taskIdA].tRivalSpriteId].data[0] = 0; gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(2, 0x2000, 0x200, 8); break; } @@ -1926,8 +1157,8 @@ static void sub_817664C(u8 scene, u8 taskIdA) gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(sub_817624C, 0); gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_0] = 0; gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_1] = taskIdA; - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_2] = gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]; - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_3] = gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]; + gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_2] = gTasks[taskIdA].tPlayerSpriteId; + gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_3] = gTasks[taskIdA].tRivalSpriteId; gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0; if (scene == 2) @@ -1959,7 +1190,7 @@ static bool8 sub_8176AB0(u8 scene, u8 taskIdA) gIntroCredits_MovingSceneryVBase = 34; gIntroCredits_MovingSceneryVOffset = 0; LoadCreditsSceneGraphics(scene); - gMain.state += 1; + gMain.state++; break; case 2: if (gSaveBlock2Ptr->playerGender == MALE) @@ -1970,14 +1201,14 @@ static bool8 sub_8176AB0(u8 scene, u8 taskIdA) LoadSpritePalettes(gSpritePalettes_Credits); spriteId = CreateIntroBrendanSprite(120, 46); - gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId; - gSprites[spriteId].callback = sub_8176EE8; - gSprites[spriteId].anims = gUnknown_085E6FD0; + gTasks[taskIdA].tPlayerSpriteId = spriteId; + gSprites[spriteId].callback = SpriteCB_PlayerCyclist; + gSprites[spriteId].anims = sAnims_Player; spriteId = CreateIntroMaySprite(272, 46); - gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId; - gSprites[spriteId].callback = sub_8176F90; - gSprites[spriteId].anims = gUnknown_085E7010; + gTasks[taskIdA].tRivalSpriteId = spriteId; + gSprites[spriteId].callback = SpriteCB_RivalCyclist; + gSprites[spriteId].anims = sAnims_Rival; } else { @@ -1987,19 +1218,19 @@ static bool8 sub_8176AB0(u8 scene, u8 taskIdA) LoadSpritePalettes(gSpritePalettes_Credits); spriteId = CreateIntroMaySprite(120, 46); - gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId; - gSprites[spriteId].callback = sub_8176EE8; - gSprites[spriteId].anims = gUnknown_085E6FD0; + gTasks[taskIdA].tPlayerSpriteId = spriteId; + gSprites[spriteId].callback = SpriteCB_PlayerCyclist; + gSprites[spriteId].anims = sAnims_Player; spriteId = CreateIntroBrendanSprite(272, 46); - gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId; - gSprites[spriteId].callback = sub_8176F90; - gSprites[spriteId].anims = gUnknown_085E7010; + gTasks[taskIdA].tRivalSpriteId = spriteId; + gSprites[spriteId].callback = SpriteCB_RivalCyclist; + gSprites[spriteId].anims = sAnims_Rival; }; - gMain.state += 1; + gMain.state++; break; case 3: - sub_817664C(scene, taskIdA); + InitCreditsSceneGfx(scene, taskIdA); SetCreditsSceneBgCnt(scene); gMain.state = 0; return TRUE; @@ -2036,21 +1267,21 @@ static void ResetCreditsTasks(u8 taskIdA) gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_DESTROY; } -static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 arg2) +static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 palOffset) { u16 baseTile; u16 i; LZ77UnCompVram(sCreditsCopyrightEnd_Gfx, (void *)(VRAM + arg0)); - LoadPalette(gIntroCopyright_Pal, arg2, sizeof(gIntroCopyright_Pal)); + LoadPalette(gIntroCopyright_Pal, palOffset, sizeof(gIntroCopyright_Pal)); - baseTile = (arg2 / 16) << 12; + baseTile = (palOffset / 16) << 12; for (i = 0; i < 32 * 32; i++) ((u16 *) (VRAM + arg1))[i] = baseTile + 1; } -static u16 sub_8176D78(u8 baseTiles) +static u16 GetLetterMapTile(u8 baseTiles) { u16 out = (baseTiles & 0x3F) + 80; @@ -2065,7 +1296,7 @@ static u16 sub_8176D78(u8 baseTiles) return out; } -static void sub_8176DBC(const u8 baseTiles[], u8 baseX, u8 baseY, u16 arg3, u16 palette) +static void DrawLetterMapTiles(const u8 baseTiles[], u8 baseX, u8 baseY, u16 offset, u16 palette) { u8 y, x; const u16 tileOffset = (palette / 16) << 12; @@ -2073,35 +1304,37 @@ static void sub_8176DBC(const u8 baseTiles[], u8 baseX, u8 baseY, u16 arg3, u16 for (y = 0; y < 5; y++) { for (x = 0; x < 3; x++) - ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8176D78(baseTiles[y * 3 + x]); + ((u16 *) (VRAM + offset + (baseY + y) * 64))[baseX + x] = tileOffset + GetLetterMapTile(baseTiles[y * 3 + x]); } } -static void sub_8176E40(u16 arg0, u16 palette) +static void DrawTheEnd(u16 offset, u16 palette) { u16 pos; u16 baseTile = (palette / 16) << 12; for (pos = 0; pos < 32 * 32; pos++) - ((u16 *) (VRAM + arg0))[pos] = baseTile + 1; - - sub_8176DBC(sTheEnd_LetterTMap, 3, 7, arg0, palette); - sub_8176DBC(sTheEnd_LetterHMap, 7, 7, arg0, palette); - sub_8176DBC(sTheEnd_LetterEMap, 11, 7, arg0, palette); - sub_8176DBC(sTheEnd_LetterEMap, 16, 7, arg0, palette); - sub_8176DBC(sTheEnd_LetterNMap, 20, 7, arg0, palette); - sub_8176DBC(sTheEnd_LetterDMap, 24, 7, arg0, palette); + ((u16 *) (VRAM + offset))[pos] = baseTile + 1; + + DrawLetterMapTiles(sTheEnd_LetterMap_T, 3, 7, offset, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_H, 7, 7, offset, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_E, 11, 7, offset, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_E, 16, 7, offset, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_N, 20, 7, offset, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_D, 24, 7, offset, palette); } -static void sub_8176EE8(struct Sprite *sprite) +#define sState data[0] + +static void SpriteCB_PlayerCyclist(struct Sprite *sprite) { - if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_MOVING) + if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_NORMAL) { DestroySprite(sprite); return; } - switch (sprite->data[0]) + switch (sprite->sState) { case 0: StartSpriteAnimIfDifferent(sprite, 0); @@ -2109,7 +1342,7 @@ static void sub_8176EE8(struct Sprite *sprite) case 1: StartSpriteAnimIfDifferent(sprite, 1); if (sprite->pos1.x > -32) - sprite->pos1.x -= 1; + sprite->pos1.x--; break; case 2: StartSpriteAnimIfDifferent(sprite, 2); @@ -2120,25 +1353,25 @@ static void sub_8176EE8(struct Sprite *sprite) case 4: StartSpriteAnimIfDifferent(sprite, 0); if (sprite->pos1.x > 120) - sprite->pos1.x -= 1; + sprite->pos1.x--; break; case 5: StartSpriteAnimIfDifferent(sprite, 0); if (sprite->pos1.x > -32) - sprite->pos1.x -= 1; + sprite->pos1.x--; break; } } -static void sub_8176F90(struct Sprite *sprite) +static void SpriteCB_RivalCyclist(struct Sprite *sprite) { - if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_MOVING) + if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_NORMAL) { DestroySprite(sprite); return; } - switch (sprite->data[0]) + switch (sprite->sState) { case 0: sprite->pos2.y = 0; @@ -2154,29 +1387,32 @@ static void sub_8176F90(struct Sprite *sprite) sprite->pos2.y = -gIntroCredits_MovingSceneryVOffset; break; case 2: - sprite->data[7] += 1; + sprite->data[7]++; StartSpriteAnimIfDifferent(sprite, 0); if ((sprite->data[7] & 3) == 0) - sprite->pos1.x += 1; + sprite->pos1.x++; break; case 3: StartSpriteAnimIfDifferent(sprite, 0); if (sprite->pos1.x > -32) - sprite->pos1.x -= 1; + sprite->pos1.x--; break; } } -static void sub_8177050(struct Sprite *sprite) +#define sPosition data[1] +#define sSpriteId data[6] + +static void SpriteCB_CreditsMon(struct Sprite *sprite) { - if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_MOVING) + if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_NORMAL) { - FreeAndDestroyMonPicSprite(sprite->data[6]); + FreeAndDestroyMonPicSprite(sprite->sSpriteId); return; } - sprite->data[7] += 1; - switch (sprite->data[0]) + sprite->data[7]++; + switch (sprite->sState) { case 0: default: @@ -2185,7 +1421,7 @@ static void sub_8177050(struct Sprite *sprite) sprite->data[2] = 16; SetOamMatrix(sprite->data[1], 0x10000 / sprite->data[2], 0, 0, 0x10000 / sprite->data[2]); sprite->invisible = FALSE; - sprite->data[0] = 1; + sprite->sState = 1; break; case 1: if (sprite->data[2] < 256) @@ -2195,20 +1431,20 @@ static void sub_8177050(struct Sprite *sprite) } else { - sprite->data[0] += 1; + sprite->sState++; } - switch (sprite->data[1]) + switch (sprite->sPosition) { - case 1: + case POS_LEFT + 1: if ((sprite->data[7] & 3) == 0) - sprite->pos1.y += 1; + sprite->pos1.y++; sprite->pos1.x -= 2; break; - case 2: + case POS_CENTER + 1: break; - case 3: + case POS_RIGHT + 1: if ((sprite->data[7] & 3) == 0) - sprite->pos1.y += 1; + sprite->pos1.y++; sprite->pos1.x += 2; break; } @@ -2216,7 +1452,7 @@ static void sub_8177050(struct Sprite *sprite) case 2: if (sprite->data[3] != 0) { - sprite->data[3] -= 1; + sprite->data[3]--; } else { @@ -2224,7 +1460,7 @@ static void sub_8177050(struct Sprite *sprite) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); sprite->oam.objMode = ST_OAM_OBJ_BLEND; sprite->data[3] = 16; - sprite->data[0] += 1; + sprite->sState++; } break; case 3: @@ -2232,7 +1468,7 @@ static void sub_8177050(struct Sprite *sprite) { int data3; - sprite->data[3] -= 1; + sprite->data[3]--; data3 = 16 - sprite->data[3]; SetGpuReg(REG_OFFSET_BLDALPHA, (data3 << 8) + sprite->data[3]); @@ -2240,11 +1476,11 @@ static void sub_8177050(struct Sprite *sprite) else { sprite->invisible = TRUE; - sprite->data[0] = 9; + sprite->sState = 9; } break; case 9: - sprite->data[0] += 1; + sprite->sState++; break; case 10: SetGpuReg(REG_OFFSET_BLDCNT, 0); @@ -2254,40 +1490,44 @@ static void sub_8177050(struct Sprite *sprite) } } -static u8 MakeMonSprite(u16 nationalDexNum, s16 x, s16 y, u16 position) +#define sMonSpriteId data[0] + +static u8 CreateCreditsMonSprite(u16 nationalDexNum, s16 x, s16 y, u16 position) { - u8 spriteId; - u8 spriteId2; + u8 monSpriteId; + u8 bgSpriteId; - spriteId = CreateMonSpriteFromNationalDexNumber(nationalDexNum, x, y, position); - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[1] = position + 1; - gSprites[spriteId].invisible = TRUE; - gSprites[spriteId].callback = sub_8177050; - gSprites[spriteId].data[6] = spriteId; + monSpriteId = CreateMonSpriteFromNationalDexNumber(nationalDexNum, x, y, position); + gSprites[monSpriteId].oam.priority = 1; + gSprites[monSpriteId].sPosition = position + 1; + gSprites[monSpriteId].invisible = TRUE; + gSprites[monSpriteId].callback = SpriteCB_CreditsMon; + gSprites[monSpriteId].sSpriteId = monSpriteId; - spriteId2 = CreateSprite(&gUnknown_085E7068, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1); - gSprites[spriteId2].data[0] = spriteId; + bgSpriteId = CreateSprite(&sSpriteTemplate_CreditsMonBg, gSprites[monSpriteId].pos1.x, gSprites[monSpriteId].pos1.y, 1); + gSprites[bgSpriteId].sMonSpriteId = monSpriteId; - StartSpriteAnimIfDifferent(&gSprites[spriteId2], position); + StartSpriteAnimIfDifferent(&gSprites[bgSpriteId], position); - return spriteId; + return monSpriteId; } -static void sub_81772B8(struct Sprite *sprite) +static void SpriteCB_CreditsMonBg(struct Sprite *sprite) { - if (gSprites[sprite->data[0]].data[0] == 10 || gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_MOVING) + if (gSprites[sprite->sMonSpriteId].data[0] == 10 + || gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_NORMAL) { DestroySprite(sprite); return; } - sprite->invisible = gSprites[sprite->data[0]].invisible; - sprite->oam.objMode = gSprites[sprite->data[0]].oam.objMode; - sprite->oam.affineMode = gSprites[sprite->data[0]].oam.affineMode; - sprite->oam.matrixNum = gSprites[sprite->data[0]].oam.matrixNum; - sprite->pos1.x = gSprites[sprite->data[0]].pos1.x; - sprite->pos1.y = gSprites[sprite->data[0]].pos1.y; + // Copy sprite data from the associated Pokémon + sprite->invisible = gSprites[sprite->sMonSpriteId].invisible; + sprite->oam.objMode = gSprites[sprite->sMonSpriteId].oam.objMode; + sprite->oam.affineMode = gSprites[sprite->sMonSpriteId].oam.affineMode; + sprite->oam.matrixNum = gSprites[sprite->sMonSpriteId].oam.matrixNum; + sprite->pos1.x = gSprites[sprite->sMonSpriteId].pos1.x; + sprite->pos1.y = gSprites[sprite->sMonSpriteId].pos1.y; } static void DeterminePokemonToShow(void) -- cgit v1.2.3 From 62968895ca220cf5b6f7c066e9061cf45fe7913e Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 29 Mar 2021 09:38:19 -0400 Subject: Add MON_PIC_SIZE constant --- src/credits.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 16d71f3e9..2045d116a 100644 --- a/src/credits.c +++ b/src/credits.c @@ -288,7 +288,7 @@ static const union AnimCmd *const sAnims_Rival[] = sAnim_Rival_Still, }; -#define MONBG_OFFSET (0x800 * 3) +#define MONBG_OFFSET (MON_PIC_SIZE * 3) static const struct SpriteSheet sSpriteSheet_MonBg[] = { { gDecompressionBuffer, MONBG_OFFSET, TAG_MON_BG }, {}, @@ -566,12 +566,12 @@ static void Task_CreditsLoadGrassScene(u8 taskIdA) LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(7))); LoadPalette(gBirchBagGrassPal[0] + 1, 1, 31 * 2); - for (i = 0; i < 0x800; i++) + for (i = 0; i < MON_PIC_SIZE; i++) gDecompressionBuffer[i] = 0x11; - for (i = 0; i < 0x800; i++) - (gDecompressionBuffer + 0x800)[i] = 0x22; - for (i = 0; i < 0x800; i++) - (gDecompressionBuffer + 0x800 * 2)[i] = 0x33; + for (i = 0; i < MON_PIC_SIZE; i++) + (gDecompressionBuffer + MON_PIC_SIZE)[i] = 0x22; + for (i = 0; i < MON_PIC_SIZE; i++) + (gDecompressionBuffer + MON_PIC_SIZE * 2)[i] = 0x33; temp = (u16 *)(&gDecompressionBuffer[MONBG_OFFSET]); temp[0] = RGB_BLACK; -- cgit v1.2.3 From 09ff1524b4fd89a3d0b9291f03cb8f0655ed69b7 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 29 Mar 2021 12:39:49 -0400 Subject: Finish documenting credits --- src/credits.c | 726 ++++++++++++++++++++++++++++++---------------------------- 1 file changed, 372 insertions(+), 354 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 2045d116a..f6871aeec 100644 --- a/src/credits.c +++ b/src/credits.c @@ -35,49 +35,32 @@ enum { POS_RIGHT, }; -#define tPlayerSpriteId data[5] -#define tRivalSpriteId data[6] - -enum -{ - TDA_0 = 0, - TDA_TASK_C_ID = 1, - TDA_TASK_E_ID = 2, - TDA_TASK_D_ID = 3, - TDA_4 = 4, - TDA_PLAYER_CYCLIST = 5, - TDA_RIVAL_CYCLIST = 6, - TDA_7 = 7, // Has something to do with the bike scene - TDA_11 = 11, // Gets set depending on whether the bike or the grass scene should be shown - TDA_12 = 12, - TDA_13 = 13, - TDA_14 = 14, - TDA_TASK_B_ID = 15, - - // Appears to be responsible for text - TDB_0 = 0, - TDB_TASK_A_ID = 1, - TDB_CURRENT_PAGE = 2, - TDB_3 = 3, - - TDC_0 = 0, - TDC_1 = 1, - TDC_2 = 2, - TDC_3 = 3, - TDC_4 = 4, - TDC_5 = 5, - - TDD_STATE = 0, - TDD_TASK_A_ID = 1, - TDD_2 = 2, - TDD_3 = 3, - - TDE_0 = 0, - TDE_1 = 1, - TDE_TASK_A_ID = 2, +enum { + MODE_NONE, + MODE_BIKE_SCENE, + MODE_SHOW_MONS, }; +#define tState data[0] + +// Task data for the main Credits tasks +#define tTaskId_BgScenery data[0] // ID for Task_BicycleBgAnimation (created by CreateBicycleBgAnimationTask) +#define tTaskId_BikeScene data[1] // ID for Task_BikeScene +#define tTaskId_SceneryPal data[2] // ID for Task_CycleSceneryPalette +#define tTaskId_ShowMons data[3] // ID for Task_ShowMons +#define tEndCredits data[4] +#define tPlayerSpriteId data[5] +#define tRivalSpriteId data[6] +#define tSceneNum data[7] +// data[8]-[10] are unused +#define tNextMode data[11] +#define tTheEndDelay data[12] +#define tCurrentMode data[13] +#define tPrintedPage data[14] +#define tTaskId_UpdatePage data[15] + #define NUM_MON_SLIDES 71 + struct CreditsData { u16 monToShow[NUM_MON_SLIDES]; // List of Pokemon species ids that will show during the credits @@ -108,11 +91,11 @@ static const u32 sCreditsCopyrightEnd_Gfx[] = INCBIN_U32("graphics/credits/the_e static void SpriteCB_CreditsMonBg(struct Sprite *); static void Task_WaitPaletteFade(u8); -static void Task_ProgressCreditTasks(u8); -static void sub_8175808(u8); -static void c2_080C9BFC(u8); -static void Task_CreditsLoadGrassScene(u8); -static void sub_81758A4(u8); +static void Task_CreditsMain(u8); +static void Task_ReadyBikeScene(u8); +static void Task_SetBikeScene(u8); +static void Task_LoadShowMons(u8); +static void Task_ReadyShowMons(u8); static void Task_CreditsTheEnd1(u8); static void Task_CreditsTheEnd2(u8); static void Task_CreditsTheEnd3(u8); @@ -121,17 +104,17 @@ static void Task_CreditsTheEnd5(u8); static void Task_CreditsTheEnd6(u8); static void Task_CreditsSoftReset(u8); static void ResetGpuAndVram(void); -static void sub_8175DA0(u8); +static void Task_UpdatePage(u8); static u8 CheckChangeScene(u8, u8); -static void sub_81760FC(u8); -static void sub_817651C(u8); -static void sub_817624C(u8); -static bool8 sub_8176AB0(u8 data, u8); +static void Task_ShowMons(u8); +static void Task_CycleSceneryPalette(u8); +static void Task_BikeScene(u8); +static bool8 LoadBikeScene(u8 data, u8); static void ResetCreditsTasks(u8); static void LoadTheEndScreen(u16, u16, u16); static void DrawTheEnd(u16, u16); -static void SpriteCB_PlayerCyclist(struct Sprite *); -static void SpriteCB_RivalCyclist(struct Sprite *); +static void SpriteCB_Player(struct Sprite *); +static void SpriteCB_Rival(struct Sprite *); static u8 CreateCreditsMonSprite(u16, s16, s16, u16); static void DeterminePokemonToShow(void); @@ -365,7 +348,7 @@ static void CB2_Credits(void) if ((JOY_HELD(B_BUTTON)) && gHasHallOfFameRecords - && gTasks[sSavedTaskId].func == Task_ProgressCreditTasks) + && gTasks[sSavedTaskId].func == Task_CreditsMain) { // Speed up credits VBlankCB_Credits(); @@ -390,7 +373,7 @@ static void InitCreditsBgsAndWindows(void) ShowBg(0); } -static void sub_81755A4(void) +static void FreeCreditsBgsAndWindows(void) { void *ptr; FreeAllWindowBuffers(); @@ -421,11 +404,13 @@ static void PrintCreditsText(const u8 *string, u8 y, bool8 isTitle) AddTextPrinterParameterized4(0, 1, x, y, 1, 0, color, -1, string); } +#define tMainTaskId data[1] + void CB2_StartCreditsSequence(void) { - u8 taskIdA; - s16 taskIdC; - u8 taskIdB; + u8 taskId; + s16 bikeTaskId; + u8 pageTaskId; ResetGpuAndVram(); SetVBlankCallback(NULL); @@ -434,28 +419,28 @@ void CB2_StartCreditsSequence(void) ResetTasks(); InitCreditsBgsAndWindows(); - taskIdA = CreateTask(Task_WaitPaletteFade, 0); + taskId = CreateTask(Task_WaitPaletteFade, 0); - gTasks[taskIdA].data[TDA_4] = 0; - gTasks[taskIdA].data[TDA_7] = 0; - gTasks[taskIdA].data[TDA_11] = 0; - gTasks[taskIdA].data[TDA_13] = 1; + gTasks[taskId].tEndCredits = FALSE; + gTasks[taskId].tSceneNum = SCENE_OCEAN_MORNING; + gTasks[taskId].tNextMode = MODE_NONE; + gTasks[taskId].tCurrentMode = MODE_BIKE_SCENE; while (TRUE) { - if (sub_8176AB0(0, taskIdA)) + if (LoadBikeScene(SCENE_OCEAN_MORNING, taskId)) break; } - taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; - gTasks[taskIdC].data[TDC_0] = 40; + bikeTaskId = gTasks[taskId].tTaskId_BikeScene; + gTasks[bikeTaskId].tState = 40; SetGpuReg(REG_OFFSET_BG0VOFS, 0xFFFC); - taskIdB = CreateTask(sub_8175DA0, 0); + pageTaskId = CreateTask(Task_UpdatePage, 0); - gTasks[taskIdB].data[TDB_TASK_A_ID] = taskIdA; - gTasks[taskIdA].data[TDA_TASK_B_ID] = taskIdB; + gTasks[pageTaskId].tMainTaskId = taskId; + gTasks[taskId].tTaskId_UpdatePage = pageTaskId; BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); EnableInterrupts(INTR_FLAG_VBLANK); @@ -471,84 +456,84 @@ void CB2_StartCreditsSequence(void) sCreditsData->nextImgPos = POS_LEFT; sCreditsData->currShownMon = 0; - sSavedTaskId = taskIdA; + sSavedTaskId = taskId; } -static void Task_WaitPaletteFade(u8 taskIdA) +static void Task_WaitPaletteFade(u8 taskId) { if (!gPaletteFade.active) - gTasks[taskIdA].func = Task_ProgressCreditTasks; + gTasks[taskId].func = Task_CreditsMain; } -static void Task_ProgressCreditTasks(u8 taskIdA) +static void Task_CreditsMain(u8 taskId) { - u16 data1; + u16 mode; - if (gTasks[taskIdA].data[TDA_4]) + if (gTasks[taskId].tEndCredits) { - s16 taskIdC; - - taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; - gTasks[taskIdC].data[TDC_0] = 30; + s16 bikeTaskId = gTasks[taskId].tTaskId_BikeScene; + gTasks[bikeTaskId].tState = 30; - gTasks[taskIdA].data[TDA_12] = 0x100; - gTasks[taskIdA].func = Task_CreditsTheEnd1; + gTasks[taskId].tTheEndDelay = 256; + gTasks[taskId].func = Task_CreditsTheEnd1; return; } sUnkVar = 0; - data1 = gTasks[taskIdA].data[TDA_11]; + mode = gTasks[taskId].tNextMode; - if (gTasks[taskIdA].data[TDA_11] == 1) + if (gTasks[taskId].tNextMode == MODE_BIKE_SCENE) { - gTasks[taskIdA].data[TDA_13] = data1; - gTasks[taskIdA].data[TDA_11] = 0; + // Start a bike cutscene + gTasks[taskId].tCurrentMode = mode; + gTasks[taskId].tNextMode = MODE_NONE; BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); - gTasks[taskIdA].func = sub_8175808; + gTasks[taskId].func = Task_ReadyBikeScene; } - else if (gTasks[taskIdA].data[TDA_11] == 2) + else if (gTasks[taskId].tNextMode == MODE_SHOW_MONS) { - gTasks[taskIdA].data[TDA_13] = data1; - gTasks[taskIdA].data[TDA_11] = 0; + // Start a Pokémon interlude + gTasks[taskId].tCurrentMode = mode; + gTasks[taskId].tNextMode = MODE_NONE; BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); - gTasks[taskIdA].func = sub_81758A4; + gTasks[taskId].func = Task_ReadyShowMons; } } -static void sub_8175808(u8 taskIdA) +static void Task_ReadyBikeScene(u8 taskId) { if (!gPaletteFade.active) { SetGpuReg(REG_OFFSET_DISPCNT, 0); - ResetCreditsTasks(taskIdA); - gTasks[taskIdA].func = c2_080C9BFC; + ResetCreditsTasks(taskId); + gTasks[taskId].func = Task_SetBikeScene; } } -static void c2_080C9BFC(u8 taskIdA) +static void Task_SetBikeScene(u8 taskId) { SetVBlankCallback(NULL); - if (sub_8176AB0(gTasks[taskIdA].data[TDA_7], taskIdA)) + if (LoadBikeScene(gTasks[taskId].tSceneNum, taskId)) { BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); EnableInterrupts(INTR_FLAG_VBLANK); SetVBlankCallback(VBlankCB_Credits); - gTasks[taskIdA].func = Task_WaitPaletteFade; + gTasks[taskId].func = Task_WaitPaletteFade; } } -static void sub_81758A4(u8 taskIdA) +static void Task_ReadyShowMons(u8 taskId) { if (!gPaletteFade.active) { SetGpuReg(REG_OFFSET_DISPCNT, 0); - ResetCreditsTasks(taskIdA); - gTasks[taskIdA].func = Task_CreditsLoadGrassScene; + ResetCreditsTasks(taskId); + gTasks[taskId].func = Task_LoadShowMons; } } -static void Task_CreditsLoadGrassScene(u8 taskIdA) +static void Task_LoadShowMons(u8 taskId) { switch (gMain.state) { @@ -586,10 +571,10 @@ static void Task_CreditsLoadGrassScene(u8 taskIdA) break; } case 1: - gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(sub_81760FC, 0); - gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_STATE] = 1; - gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_TASK_A_ID] = taskIdA; - gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_2] = gTasks[taskIdA].data[TDA_7]; + gTasks[taskId].tTaskId_ShowMons = CreateTask(Task_ShowMons, 0); + gTasks[gTasks[taskId].tTaskId_ShowMons].tState = 1; + gTasks[gTasks[taskId].tTaskId_ShowMons].tMainTaskId = taskId; + gTasks[gTasks[taskId].tTaskId_ShowMons].data[2] = gTasks[taskId].tSceneNum; // data[2] never read BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); SetGpuReg(REG_OFFSET_BG3HOFS, 0); @@ -607,35 +592,35 @@ static void Task_CreditsLoadGrassScene(u8 taskIdA) gMain.state = 0; gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_NORMAL; - gTasks[taskIdA].func = Task_WaitPaletteFade; + gTasks[taskId].func = Task_WaitPaletteFade; break; } } -static void Task_CreditsTheEnd1(u8 taskIdA) +static void Task_CreditsTheEnd1(u8 taskId) { - if (gTasks[taskIdA].data[TDA_12]) + if (gTasks[taskId].tTheEndDelay) { - gTasks[taskIdA].data[TDA_12]--; + gTasks[taskId].tTheEndDelay--; return; } BeginNormalPaletteFade(PALETTES_ALL, 12, 0, 16, RGB_BLACK); - gTasks[taskIdA].func = Task_CreditsTheEnd2; + gTasks[taskId].func = Task_CreditsTheEnd2; } -static void Task_CreditsTheEnd2(u8 taskIdA) +static void Task_CreditsTheEnd2(u8 taskId) { if (!gPaletteFade.active) { - ResetCreditsTasks(taskIdA); - gTasks[taskIdA].func = Task_CreditsTheEnd3; + ResetCreditsTasks(taskId); + gTasks[taskId].func = Task_CreditsTheEnd3; } } #define tDelay data[0] -static void Task_CreditsTheEnd3(u8 taskIdA) +static void Task_CreditsTheEnd3(u8 taskId) { ResetGpuAndVram(); ResetPaletteFade(); @@ -654,59 +639,59 @@ static void Task_CreditsTheEnd3(u8 taskIdA) | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON); - gTasks[taskIdA].tDelay = 235; //set this to 215 to actually show "THE END" in time to the last song beat - gTasks[taskIdA].func = Task_CreditsTheEnd4; + gTasks[taskId].tDelay = 235; //set this to 215 to actually show "THE END" in time to the last song beat + gTasks[taskId].func = Task_CreditsTheEnd4; } -static void Task_CreditsTheEnd4(u8 taskIdA) +static void Task_CreditsTheEnd4(u8 taskId) { - if (gTasks[taskIdA].tDelay) + if (gTasks[taskId].tDelay) { - gTasks[taskIdA].tDelay--; + gTasks[taskId].tDelay--; return; } BeginNormalPaletteFade(PALETTES_ALL, 6, 0, 16, RGB_BLACK); - gTasks[taskIdA].func = Task_CreditsTheEnd5; + gTasks[taskId].func = Task_CreditsTheEnd5; } -static void Task_CreditsTheEnd5(u8 taskIdA) +static void Task_CreditsTheEnd5(u8 taskId) { if (!gPaletteFade.active) { DrawTheEnd(0x3800, 0); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0, RGB_BLACK); - gTasks[taskIdA].tDelay = 7200; - gTasks[taskIdA].func = Task_CreditsTheEnd6; + gTasks[taskId].tDelay = 7200; + gTasks[taskId].func = Task_CreditsTheEnd6; } } -static void Task_CreditsTheEnd6(u8 taskIdA) +static void Task_CreditsTheEnd6(u8 taskId) { if (!gPaletteFade.active) { - if (gTasks[taskIdA].tDelay == 0 || gMain.newKeys) + if (gTasks[taskId].tDelay == 0 || gMain.newKeys) { FadeOutBGM(4); BeginNormalPaletteFade(PALETTES_ALL, 8, 0, 16, RGB_WHITEALPHA); - gTasks[taskIdA].func = Task_CreditsSoftReset; + gTasks[taskId].func = Task_CreditsSoftReset; return; } - if (gTasks[taskIdA].tDelay == 7144) + if (gTasks[taskId].tDelay == 7144) FadeOutBGM(8); - if (gTasks[taskIdA].tDelay == 6840) + if (gTasks[taskId].tDelay == 6840) m4aSongNumStart(MUS_END); - gTasks[taskIdA].tDelay--; + gTasks[taskId].tDelay--; } } #undef tDelay -static void Task_CreditsSoftReset(u8 taskIdA) +static void Task_CreditsSoftReset(u8 taskId) { if (!gPaletteFade.active) SoftReset(RESET_ALL); @@ -734,11 +719,14 @@ static void ResetGpuAndVram(void) DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); } -static void sub_8175DA0(u8 taskIdB) +#define tCurrentPage data[2] +#define tDelay data[3] + +static void Task_UpdatePage(u8 taskId) { int i; - switch (gTasks[taskIdB].data[TDB_0]) + switch (gTasks[taskId].tState) { case 0: case 6: @@ -748,185 +736,194 @@ static void sub_8175DA0(u8 taskIdB) default: if (!gPaletteFade.active) { - gTasks[taskIdB].data[TDB_0] = 1; - gTasks[taskIdB].data[TDB_3] = 0x48; - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; + gTasks[taskId].tState = 1; + gTasks[taskId].tDelay = 72; + gTasks[gTasks[taskId].tMainTaskId].tPrintedPage = FALSE; sUnkVar = 0; } return; case 1: - if (gTasks[taskIdB].data[TDB_3] != 0) + if (gTasks[taskId].tDelay != 0) { - gTasks[taskIdB].data[TDB_3]--; + gTasks[taskId].tDelay--; return; } - gTasks[taskIdB].data[TDB_0]++; + gTasks[taskId].tState++; return; case 2: - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == Task_ProgressCreditTasks) + if (gTasks[gTasks[taskId].tMainTaskId].func == Task_CreditsMain) { - if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT) + if (gTasks[taskId].tCurrentPage < PAGE_COUNT) { + // Print text for this Credits page for (i = 0; i < ENTRIES_PER_PAGE; i++) PrintCreditsText( - sCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, + sCreditsEntryPointerTable[gTasks[taskId].tCurrentPage][i]->text, 5 + i * 16, - sCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->isTitle); - + sCreditsEntryPointerTable[gTasks[taskId].tCurrentPage][i]->isTitle); CopyWindowToVram(0, 2); - gTasks[taskIdB].data[TDB_CURRENT_PAGE]++; - gTasks[taskIdB].data[TDB_0]++; + gTasks[taskId].tCurrentPage++; + gTasks[taskId].tState++; - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 1; + gTasks[gTasks[taskId].tMainTaskId].tPrintedPage = TRUE; - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) - BeginNormalPaletteFade(0x00000300, 0, 16, 0, COLOR_LIGHT_GREEN); - else - BeginNormalPaletteFade(0x00000300, 0, 16, 0, COLOR_DARK_GREEN); + if (gTasks[gTasks[taskId].tMainTaskId].tCurrentMode == MODE_BIKE_SCENE) + BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN); + else // MODE_SHOW_MONS + BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_DARK_GREEN); return; } - gTasks[taskIdB].data[TDB_0] = 10; + + // Reached final page of Credits, end task + gTasks[taskId].tState = 10; return; } - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; + gTasks[gTasks[taskId].tMainTaskId].tPrintedPage = FALSE; return; case 3: if (!gPaletteFade.active) { - gTasks[taskIdB].data[TDB_3] = 0x73; - gTasks[taskIdB].data[TDB_0]++; + gTasks[taskId].tDelay = 115; + gTasks[taskId].tState++; } return; case 4: - if (gTasks[taskIdB].data[TDB_3] != 0) + if (gTasks[taskId].tDelay != 0) { - gTasks[taskIdB].data[TDB_3]--; + gTasks[taskId].tDelay--; return; } - if (CheckChangeScene((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID])) + if (CheckChangeScene((u8)gTasks[taskId].tCurrentPage, (u8)gTasks[taskId].tMainTaskId)) { - gTasks[taskIdB].data[TDB_0]++; + gTasks[taskId].tState++; return; } - gTasks[taskIdB].data[TDB_0]++; - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) - BeginNormalPaletteFade(0x00000300, 0, 0, 16, COLOR_LIGHT_GREEN); - else - BeginNormalPaletteFade(0x00000300, 0, 0, 16, COLOR_DARK_GREEN); + gTasks[taskId].tState++; + if (gTasks[gTasks[taskId].tMainTaskId].tCurrentMode == MODE_BIKE_SCENE) + BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_LIGHT_GREEN); + else // MODE_SHOW_MONS + BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_DARK_GREEN); return; case 5: if (!gPaletteFade.active) { + // Still more Credits pages to show, return to state 2 to print FillWindowPixelBuffer(0, PIXEL_FILL(0)); CopyWindowToVram(0, 2); - gTasks[taskIdB].data[TDB_0] = 2; + gTasks[taskId].tState = 2; } return; case 10: - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_4] = 1; - DestroyTask(taskIdB); - sub_81755A4(); + gTasks[gTasks[taskId].tMainTaskId].tEndCredits = TRUE; + DestroyTask(taskId); + FreeCreditsBgsAndWindows(); FREE_AND_SET_NULL(sCreditsData); return; } } -static u8 CheckChangeScene(u8 page, u8 taskIdA) +#undef tDelay + +#define PAGE_INTERVAL (PAGE_COUNT / 9) // 9 scenes (5 bike scenes, 4 Pokémon interludes) + +static u8 CheckChangeScene(u8 page, u8 taskId) { - // Starts with bike + ocean + morning + // Starts with bike + ocean + morning (SCENE_OCEAN_MORNING) - if (page == 6) + if (page == PAGE_INTERVAL * 1) { // Pokémon interlude - gTasks[taskIdA].data[TDA_11] = 2; + gTasks[taskId].tNextMode = MODE_SHOW_MONS; } - if (page == 12) + if (page == PAGE_INTERVAL * 2) { // Bike + ocean + sunset - gTasks[taskIdA].data[TDA_7] = 1; - gTasks[taskIdA].data[TDA_11] = 1; + gTasks[taskId].tSceneNum = SCENE_OCEAN_SUNSET; + gTasks[taskId].tNextMode = MODE_BIKE_SCENE; } - if (page == 18) + if (page == PAGE_INTERVAL * 3) { // Pokémon interlude - gTasks[taskIdA].data[TDA_11] = 2; + gTasks[taskId].tNextMode = MODE_SHOW_MONS; } - if (page == 24) + if (page == PAGE_INTERVAL * 4) { // Bike + forest + sunset - gTasks[taskIdA].data[TDA_7] = 2; - gTasks[taskIdA].data[TDA_11] = 1; + gTasks[taskId].tSceneNum = SCENE_FOREST_RIVAL_ARRIVE; + gTasks[taskId].tNextMode = MODE_BIKE_SCENE; } - if (page == 30) + if (page == PAGE_INTERVAL * 5) { // Pokémon interlude - gTasks[taskIdA].data[TDA_11] = 2; + gTasks[taskId].tNextMode = MODE_SHOW_MONS; } - if (page == 36) + if (page == PAGE_INTERVAL * 6) { // Bike + forest + sunset - gTasks[taskIdA].data[TDA_7] = 3; - gTasks[taskIdA].data[TDA_11] = 1; + gTasks[taskId].tSceneNum = SCENE_FOREST_CATCH_RIVAL; + gTasks[taskId].tNextMode = MODE_BIKE_SCENE; } - if (page == 42) + if (page == PAGE_INTERVAL * 7) { // Pokémon interlude - gTasks[taskIdA].data[TDA_11] = 2; + gTasks[taskId].tNextMode = MODE_SHOW_MONS; } - if (page == 48) + if (page == PAGE_INTERVAL * 8) { // Bike + town + night - gTasks[taskIdA].data[TDA_7] = 4; - gTasks[taskIdA].data[TDA_11] = 1; + gTasks[taskId].tSceneNum = SCENE_CITY_NIGHT; + gTasks[taskId].tNextMode = MODE_BIKE_SCENE; } - if (gTasks[taskIdA].data[TDA_11] != 0) + if (gTasks[taskId].tNextMode != MODE_NONE) { - // Returns true if changed? + // Returns true if changed return TRUE; } return FALSE; } -static void sub_81760FC(u8 taskIdD) +#define tDelay data[3] + +static void Task_ShowMons(u8 taskId) { - u8 r2; + u8 spriteId; - switch (gTasks[taskIdD].data[TDD_STATE]) + switch (gTasks[taskId].tState) { case 0: break; case 1: - if (sCreditsData->nextImgPos == POS_LEFT && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0) + if (sCreditsData->nextImgPos == POS_LEFT && gTasks[gTasks[taskId].tMainTaskId].tPrintedPage == FALSE) break; - gTasks[taskIdD].data[TDD_STATE]++; + gTasks[taskId].tState++; break; case 2: - if (sCreditsData->imgCounter == NUM_MON_SLIDES || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != Task_ProgressCreditTasks) + if (sCreditsData->imgCounter == NUM_MON_SLIDES || gTasks[gTasks[taskId].tMainTaskId].func != Task_CreditsMain) break; - r2 = CreateCreditsMonSprite(sCreditsData->monToShow[sCreditsData->currShownMon], + spriteId = CreateCreditsMonSprite(sCreditsData->monToShow[sCreditsData->currShownMon], sMonSpritePos[sCreditsData->nextImgPos][0], sMonSpritePos[sCreditsData->nextImgPos][1], sCreditsData->nextImgPos); if (sCreditsData->currShownMon < sCreditsData->numMonToShow - 1) { sCreditsData->currShownMon++; - gSprites[r2].data[3] = 50; + gSprites[spriteId].data[3] = 50; } else { sCreditsData->currShownMon = 0; - gSprites[r2].data[3] = 512; + gSprites[spriteId].data[3] = 512; } sCreditsData->imgCounter++; @@ -935,237 +932,254 @@ static void sub_81760FC(u8 taskIdD) else sCreditsData->nextImgPos++; - gTasks[taskIdD].data[TDD_3] = 50; - gTasks[taskIdD].data[TDD_STATE]++; + gTasks[taskId].tDelay = 50; + gTasks[taskId].tState++; break; case 3: - if (gTasks[taskIdD].data[TDD_3] != 0) - gTasks[taskIdD].data[TDD_3]--; + if (gTasks[taskId].tDelay != 0) + gTasks[taskId].tDelay--; else - gTasks[taskIdD].data[TDD_STATE] = 1; + gTasks[taskId].tState = 1; break; } } -static void sub_817624C(u8 taskIdC) +#undef tMainTaskId +#undef tDelay + +#define tPlayer data[2] +#define tRival data[3] +#define tDelay data[4] +#define tSinIdx data[5] + +static void Task_BikeScene(u8 taskId) { - switch (gTasks[taskIdC].data[TDC_0]) + switch (gTasks[taskId].tState) { case 0: - gIntroCredits_MovingSceneryVOffset = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); - gTasks[taskIdC].data[TDC_5]++; + gIntroCredits_MovingSceneryVOffset = Sin((gTasks[taskId].tSinIdx >> 1) & 0x7F, 12); + gTasks[taskId].tSinIdx++; break; case 1: if (gIntroCredits_MovingSceneryVOffset != 0) { - gIntroCredits_MovingSceneryVOffset = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); - gTasks[taskIdC].data[TDC_5]++; + gIntroCredits_MovingSceneryVOffset = Sin((gTasks[taskId].tSinIdx >> 1) & 0x7F, 12); + gTasks[taskId].tSinIdx++; } else { - gSprites[gTasks[taskIdC].data[TDC_2]].data[0] = 2; - gTasks[taskIdC].data[TDC_5] = 0; - gTasks[taskIdC].data[TDC_0]++; + gSprites[gTasks[taskId].tPlayer].data[0] = 2; + gTasks[taskId].tSinIdx = 0; + gTasks[taskId].tState++; } break; case 2: - if (gTasks[taskIdC].data[TDC_5] < 64) + if (gTasks[taskId].tSinIdx < 64) { - gTasks[taskIdC].data[TDC_5]++; - gIntroCredits_MovingSceneryVOffset = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); + gTasks[taskId].tSinIdx++; + gIntroCredits_MovingSceneryVOffset = Sin(gTasks[taskId].tSinIdx & 0x7F, 20); } else { - gTasks[taskIdC].data[TDC_0]++; + gTasks[taskId].tState++; } break; case 3: - gSprites[gTasks[taskIdC].data[TDC_2]].data[0] = 3; - gSprites[gTasks[taskIdC].data[TDC_3]].data[0] = 1; - gTasks[taskIdC].data[TDC_4] = 120; - gTasks[taskIdC].data[TDC_0]++; + gSprites[gTasks[taskId].tPlayer].data[0] = 3; + gSprites[gTasks[taskId].tRival].data[0] = 1; + gTasks[taskId].tDelay = 120; + gTasks[taskId].tState++; break; case 4: - if (gTasks[taskIdC].data[TDC_4] != 0) + if (gTasks[taskId].tDelay != 0) { - gTasks[taskIdC].data[TDC_4]--; + gTasks[taskId].tDelay--; } else { - gTasks[taskIdC].data[TDC_5] = 64; - gTasks[taskIdC].data[TDC_0]++; + gTasks[taskId].tSinIdx = 64; + gTasks[taskId].tState++; } break; case 5: - if (gTasks[taskIdC].data[TDC_5] > 0) + if (gTasks[taskId].tSinIdx > 0) { - gTasks[taskIdC].data[TDC_5]--; - gIntroCredits_MovingSceneryVOffset = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); + gTasks[taskId].tSinIdx--; + gIntroCredits_MovingSceneryVOffset = Sin(gTasks[taskId].tSinIdx & 0x7F, 20); } else { - gSprites[gTasks[taskIdC].data[TDC_2]].data[0] = 1; - gTasks[taskIdC].data[TDC_0]++; + gSprites[gTasks[taskId].tPlayer].data[0] = 1; + gTasks[taskId].tState++; } break; case 6: - gTasks[taskIdC].data[TDC_0] = 50; + gTasks[taskId].tState = 50; break; case 10: - gSprites[gTasks[taskIdC].data[TDC_3]].data[0] = 2; - gTasks[taskIdC].data[TDC_0] = 50; + gSprites[gTasks[taskId].tRival].data[0] = 2; + gTasks[taskId].tState = 50; break; case 20: - gSprites[gTasks[taskIdC].data[TDC_2]].data[0] = 4; - gTasks[taskIdC].data[TDC_0] = 50; + gSprites[gTasks[taskId].tPlayer].data[0] = 4; + gTasks[taskId].tState = 50; break; case 30: - gSprites[gTasks[taskIdC].data[TDC_2]].data[0] = 5; - gSprites[gTasks[taskIdC].data[TDC_3]].data[0] = 3; - gTasks[taskIdC].data[TDC_0] = 50; + gSprites[gTasks[taskId].tPlayer].data[0] = 5; + gSprites[gTasks[taskId].tRival].data[0] = 3; + gTasks[taskId].tState = 50; break; case 50: - gTasks[taskIdC].data[TDC_0] = 0; + gTasks[taskId].tState = 0; break; } } -static void sub_817651C(u8 taskIdE) +#define TIMER_STOP 0x7FFF +#define tTimer data[1] +#define tMainTaskId data[2] + +static void Task_CycleSceneryPalette(u8 taskId) { - s16 taskIdC; + s16 bikeTaskId; - switch (gTasks[taskIdE].data[TDE_0]) + switch (gTasks[taskId].tState) { default: - case 0: - if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) + case SCENE_OCEAN_MORNING: + if (gTasks[taskId].tTimer != TIMER_STOP) { - - if (gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_B_ID]].data[TDB_CURRENT_PAGE] == 2) + if (gTasks[gTasks[gTasks[taskId].tMainTaskId].tTaskId_UpdatePage].tCurrentPage == 2) { - gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 20; - gTasks[taskIdE].data[TDE_1] = 0x7FFF; + gTasks[gTasks[gTasks[taskId].tMainTaskId].tTaskId_BikeScene].tState = 20; + gTasks[taskId].tTimer = TIMER_STOP; } } CycleSceneryPalette(0); break; - case 1: + case SCENE_OCEAN_SUNSET: CycleSceneryPalette(0); break; - case 2: - if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) + case SCENE_FOREST_RIVAL_ARRIVE: + if (gTasks[taskId].tTimer != TIMER_STOP) { - taskIdC = gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]; + bikeTaskId = gTasks[gTasks[taskId].tMainTaskId].tTaskId_BikeScene; // Floor to multiple of 128 - if ((gTasks[taskIdC].data[TDC_5] & -128) == 640) + if ((gTasks[bikeTaskId].tSinIdx & -128) == 640) { - gTasks[taskIdC].data[TDC_0] = 1; - gTasks[taskIdE].data[TDE_1] = 0x7FFF; + gTasks[bikeTaskId].tState = 1; + gTasks[taskId].tTimer = TIMER_STOP; } } CycleSceneryPalette(1); break; - case 3: - if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) + case SCENE_FOREST_CATCH_RIVAL: + if (gTasks[taskId].tTimer != TIMER_STOP) { - if (gTasks[taskIdE].data[TDE_1] == 0x248) + if (gTasks[taskId].tTimer == 584) { - gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 10; - gTasks[taskIdE].data[TDE_1] = 0x7FFF; + gTasks[gTasks[gTasks[taskId].tMainTaskId].tTaskId_BikeScene].tState = 10; + gTasks[taskId].tTimer = TIMER_STOP; } else { - gTasks[taskIdE].data[TDE_1]++; + gTasks[taskId].tTimer++; } } CycleSceneryPalette(1); break; - case 4: + case SCENE_CITY_NIGHT: CycleSceneryPalette(2); break; } } -static void InitCreditsSceneGfx(u8 scene, u8 taskIdA) +static void SetBikeScene(u8 scene, u8 taskId) { switch (scene) { - case 0: - gSprites[gTasks[taskIdA].tPlayerSpriteId].invisible = FALSE; - gSprites[gTasks[taskIdA].tRivalSpriteId].invisible = FALSE; - gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.x = 272; - gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.x = 272; - gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.y = 46; - gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.y = 46; - gSprites[gTasks[taskIdA].tPlayerSpriteId].data[0] = 0; - gSprites[gTasks[taskIdA].tRivalSpriteId].data[0] = 0; - gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8); + case SCENE_OCEAN_MORNING: + gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tPlayerSpriteId].pos1.x = DISPLAY_WIDTH + 32; + gSprites[gTasks[taskId].tRivalSpriteId].pos1.x = DISPLAY_WIDTH + 32; + gSprites[gTasks[taskId].tPlayerSpriteId].pos1.y = 46; + gSprites[gTasks[taskId].tRivalSpriteId].pos1.y = 46; + gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0; + gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0; + gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8); break; - case 1: - gSprites[gTasks[taskIdA].tPlayerSpriteId].invisible = FALSE; - gSprites[gTasks[taskIdA].tRivalSpriteId].invisible = FALSE; - gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.x = 120; - gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.x = 272; - gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.y = 46; - gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.y = 46; - gSprites[gTasks[taskIdA].tPlayerSpriteId].data[0] = 0; - gSprites[gTasks[taskIdA].tRivalSpriteId].data[0] = 0; - gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8); + case SCENE_OCEAN_SUNSET: + gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tPlayerSpriteId].pos1.x = 120; + gSprites[gTasks[taskId].tRivalSpriteId].pos1.x = DISPLAY_WIDTH + 32; + gSprites[gTasks[taskId].tPlayerSpriteId].pos1.y = 46; + gSprites[gTasks[taskId].tRivalSpriteId].pos1.y = 46; + gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0; + gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0; + gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8); break; - case 2: - gSprites[gTasks[taskIdA].tPlayerSpriteId].invisible = FALSE; - gSprites[gTasks[taskIdA].tRivalSpriteId].invisible = FALSE; - gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.x = 120; - gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.x = 272; - gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.y = 46; - gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.y = 46; - gSprites[gTasks[taskIdA].tPlayerSpriteId].data[0] = 0; - gSprites[gTasks[taskIdA].tRivalSpriteId].data[0] = 0; - gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8); + case SCENE_FOREST_RIVAL_ARRIVE: + gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tPlayerSpriteId].pos1.x = 120; + gSprites[gTasks[taskId].tRivalSpriteId].pos1.x = DISPLAY_WIDTH + 32; + gSprites[gTasks[taskId].tPlayerSpriteId].pos1.y = 46; + gSprites[gTasks[taskId].tRivalSpriteId].pos1.y = 46; + gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0; + gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0; + gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8); break; - case 3: - gSprites[gTasks[taskIdA].tPlayerSpriteId].invisible = FALSE; - gSprites[gTasks[taskIdA].tRivalSpriteId].invisible = FALSE; - gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.x = 120; - gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.x = -32; - gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.y = 46; - gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.y = 46; - gSprites[gTasks[taskIdA].tPlayerSpriteId].data[0] = 0; - gSprites[gTasks[taskIdA].tRivalSpriteId].data[0] = 0; - gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8); + case SCENE_FOREST_CATCH_RIVAL: + gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tPlayerSpriteId].pos1.x = 120; + gSprites[gTasks[taskId].tRivalSpriteId].pos1.x = -32; + gSprites[gTasks[taskId].tPlayerSpriteId].pos1.y = 46; + gSprites[gTasks[taskId].tRivalSpriteId].pos1.y = 46; + gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0; + gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0; + gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8); break; - case 4: - gSprites[gTasks[taskIdA].tPlayerSpriteId].invisible = FALSE; - gSprites[gTasks[taskIdA].tRivalSpriteId].invisible = FALSE; - gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.x = 88; - gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.x = 152; - gSprites[gTasks[taskIdA].tPlayerSpriteId].pos1.y = 46; - gSprites[gTasks[taskIdA].tRivalSpriteId].pos1.y = 46; - gSprites[gTasks[taskIdA].tPlayerSpriteId].data[0] = 0; - gSprites[gTasks[taskIdA].tRivalSpriteId].data[0] = 0; - gTasks[taskIdA].data[TDA_0] = CreateBicycleBgAnimationTask(2, 0x2000, 0x200, 8); + case SCENE_CITY_NIGHT: + gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tPlayerSpriteId].pos1.x = 88; + gSprites[gTasks[taskId].tRivalSpriteId].pos1.x = 152; + gSprites[gTasks[taskId].tPlayerSpriteId].pos1.y = 46; + gSprites[gTasks[taskId].tRivalSpriteId].pos1.y = 46; + gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0; + gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0; + gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(2, 0x2000, 0x200, 8); break; } - gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(sub_817651C, 0); - gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_0] = scene; - gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_1] = 0; - gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_TASK_A_ID] = taskIdA; + gTasks[taskId].tTaskId_SceneryPal = CreateTask(Task_CycleSceneryPalette, 0); + gTasks[gTasks[taskId].tTaskId_SceneryPal].tState = scene; + gTasks[gTasks[taskId].tTaskId_SceneryPal].tTimer = 0; + gTasks[gTasks[taskId].tTaskId_SceneryPal].tMainTaskId = taskId; - gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(sub_817624C, 0); - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_0] = 0; - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_1] = taskIdA; - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_2] = gTasks[taskIdA].tPlayerSpriteId; - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_3] = gTasks[taskIdA].tRivalSpriteId; - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0; + gTasks[taskId].tTaskId_BikeScene = CreateTask(Task_BikeScene, 0); + gTasks[gTasks[taskId].tTaskId_BikeScene].tState = 0; + gTasks[gTasks[taskId].tTaskId_BikeScene].data[1] = taskId; // data[1] is never read + gTasks[gTasks[taskId].tTaskId_BikeScene].tPlayer = gTasks[taskId].tPlayerSpriteId; + gTasks[gTasks[taskId].tTaskId_BikeScene].tRival = gTasks[taskId].tRivalSpriteId; + gTasks[gTasks[taskId].tTaskId_BikeScene].tDelay = 0; - if (scene == 2) - gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = 0x45; + if (scene == SCENE_FOREST_RIVAL_ARRIVE) + gTasks[gTasks[taskId].tTaskId_BikeScene].tSinIdx = 69; } -static bool8 sub_8176AB0(u8 scene, u8 taskIdA) +#undef tTimer +#undef tDelay +#undef tSinIdx +#undef tRival +#undef tPlayer + +static bool8 LoadBikeScene(u8 scene, u8 taskId) { u8 spriteId; @@ -1201,13 +1215,13 @@ static bool8 sub_8176AB0(u8 scene, u8 taskIdA) LoadSpritePalettes(gSpritePalettes_Credits); spriteId = CreateIntroBrendanSprite(120, 46); - gTasks[taskIdA].tPlayerSpriteId = spriteId; - gSprites[spriteId].callback = SpriteCB_PlayerCyclist; + gTasks[taskId].tPlayerSpriteId = spriteId; + gSprites[spriteId].callback = SpriteCB_Player; gSprites[spriteId].anims = sAnims_Player; - spriteId = CreateIntroMaySprite(272, 46); - gTasks[taskIdA].tRivalSpriteId = spriteId; - gSprites[spriteId].callback = SpriteCB_RivalCyclist; + spriteId = CreateIntroMaySprite(DISPLAY_WIDTH + 32, 46); + gTasks[taskId].tRivalSpriteId = spriteId; + gSprites[spriteId].callback = SpriteCB_Rival; gSprites[spriteId].anims = sAnims_Rival; } else @@ -1218,19 +1232,19 @@ static bool8 sub_8176AB0(u8 scene, u8 taskIdA) LoadSpritePalettes(gSpritePalettes_Credits); spriteId = CreateIntroMaySprite(120, 46); - gTasks[taskIdA].tPlayerSpriteId = spriteId; - gSprites[spriteId].callback = SpriteCB_PlayerCyclist; + gTasks[taskId].tPlayerSpriteId = spriteId; + gSprites[spriteId].callback = SpriteCB_Player; gSprites[spriteId].anims = sAnims_Player; - spriteId = CreateIntroBrendanSprite(272, 46); - gTasks[taskIdA].tRivalSpriteId = spriteId; - gSprites[spriteId].callback = SpriteCB_RivalCyclist; + spriteId = CreateIntroBrendanSprite(DISPLAY_WIDTH + 32, 46); + gTasks[taskId].tRivalSpriteId = spriteId; + gSprites[spriteId].callback = SpriteCB_Rival; gSprites[spriteId].anims = sAnims_Rival; }; gMain.state++; break; case 3: - InitCreditsSceneGfx(scene, taskIdA); + SetBikeScene(scene, taskId); SetCreditsSceneBgCnt(scene); gMain.state = 0; return TRUE; @@ -1238,30 +1252,34 @@ static bool8 sub_8176AB0(u8 scene, u8 taskIdA) return FALSE; } -static void ResetCreditsTasks(u8 taskIdA) +static void ResetCreditsTasks(u8 taskId) { - if (gTasks[taskIdA].data[TDA_0] != 0) + // Destroy Task_BicycleBgAnimation, if running + if (gTasks[taskId].tTaskId_BgScenery != 0) { - DestroyTask(gTasks[taskIdA].data[TDA_0]); - gTasks[taskIdA].data[TDA_0] = 0; + DestroyTask(gTasks[taskId].tTaskId_BgScenery); + gTasks[taskId].tTaskId_BgScenery = 0; } - if (gTasks[taskIdA].data[TDA_TASK_C_ID] != 0) + // Destroy Task_BikeScene, if running + if (gTasks[taskId].tTaskId_BikeScene != 0) { - DestroyTask(gTasks[taskIdA].data[TDA_TASK_C_ID]); - gTasks[taskIdA].data[TDA_TASK_C_ID] = 0; + DestroyTask(gTasks[taskId].tTaskId_BikeScene); + gTasks[taskId].tTaskId_BikeScene = 0; } - if (gTasks[taskIdA].data[TDA_TASK_E_ID] != 0) + // Destroy Task_CycleSceneryPalette, if running + if (gTasks[taskId].tTaskId_SceneryPal != 0) { - DestroyTask(gTasks[taskIdA].data[TDA_TASK_E_ID]); - gTasks[taskIdA].data[TDA_TASK_E_ID] = 0; + DestroyTask(gTasks[taskId].tTaskId_SceneryPal); + gTasks[taskId].tTaskId_SceneryPal = 0; } - if (gTasks[taskIdA].data[TDA_TASK_D_ID] != 0) + // Destroy Task_ShowMons, if running + if (gTasks[taskId].tTaskId_ShowMons != 0) { - DestroyTask(gTasks[taskIdA].data[TDA_TASK_D_ID]); - gTasks[taskIdA].data[TDA_TASK_D_ID] = 0; + DestroyTask(gTasks[taskId].tTaskId_ShowMons); + gTasks[taskId].tTaskId_ShowMons = 0; } gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_DESTROY; @@ -1326,7 +1344,7 @@ static void DrawTheEnd(u16 offset, u16 palette) #define sState data[0] -static void SpriteCB_PlayerCyclist(struct Sprite *sprite) +static void SpriteCB_Player(struct Sprite *sprite) { if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_NORMAL) { @@ -1363,7 +1381,7 @@ static void SpriteCB_PlayerCyclist(struct Sprite *sprite) } } -static void SpriteCB_RivalCyclist(struct Sprite *sprite) +static void SpriteCB_Rival(struct Sprite *sprite) { if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_NORMAL) { @@ -1417,9 +1435,9 @@ static void SpriteCB_CreditsMon(struct Sprite *sprite) case 0: default: sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; - sprite->oam.matrixNum = sprite->data[1]; + sprite->oam.matrixNum = sprite->sPosition; sprite->data[2] = 16; - SetOamMatrix(sprite->data[1], 0x10000 / sprite->data[2], 0, 0, 0x10000 / sprite->data[2]); + SetOamMatrix(sprite->sPosition, 0x10000 / sprite->data[2], 0, 0, 0x10000 / sprite->data[2]); sprite->invisible = FALSE; sprite->sState = 1; break; @@ -1427,7 +1445,7 @@ static void SpriteCB_CreditsMon(struct Sprite *sprite) if (sprite->data[2] < 256) { sprite->data[2] += 8; - SetOamMatrix(sprite->data[1], 0x10000 / sprite->data[2], 0, 0, 0x10000 / sprite->data[2]); + SetOamMatrix(sprite->sPosition, 0x10000 / sprite->data[2], 0, 0, 0x10000 / sprite->data[2]); } else { -- cgit v1.2.3