diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-07-02 15:30:30 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-07-02 15:30:30 -0400 |
commit | 4f63b54a6b4e697402e2243e02998b8f2521a717 (patch) | |
tree | cb3e4b25e0a287df77ffb0b27f1b6c2257ff8b90 /src/intro.c | |
parent | 2c953c5baf05d12a829cb73664c9a95f660f1548 (diff) |
intro: through sub_80ECC3C
Diffstat (limited to 'src/intro.c')
-rw-r--r-- | src/intro.c | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/src/intro.c b/src/intro.c index 42d2af471..216605be7 100644 --- a/src/intro.c +++ b/src/intro.c @@ -12,14 +12,18 @@ #include "link.h" #include "menu.h" #include "save.h" +#include "sound.h" #include "new_game.h" +#include "constants/songs.h" struct IntroSequenceData { void (*field_0000)(struct IntroSequenceData *); u8 field_0004; u8 field_0005; - u8 filler_0006[0x36]; + u8 filler_0006[0xC]; + u16 field_0012; + u8 filler_0014[0x28]; u8 field_003C[0x400]; u8 field_043C[0x400]; u8 filler_083C[0x2080]; @@ -36,7 +40,11 @@ void sub_80ECAB0(u8 taskId); void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *)); void sub_80ECAF0(struct IntroSequenceData * ptr); void sub_80ECB98(struct IntroSequenceData * ptr); +void sub_80ECC3C(struct IntroSequenceData * ptr); +void sub_80ECCA8(struct IntroSequenceData * ptr); void sub_80EDBE8(struct IntroSequenceData * ptr); +void sub_80EDC40(void); +void sub_80EDDF0(void); extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; @@ -287,3 +295,59 @@ void sub_80ECAF0(struct IntroSequenceData * this) break; } } + +void sub_80ECB98(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); + SetGpuReg(REG_OFFSET_WININ, 0x3F00); + SetGpuReg(REG_OFFSET_WINOUT, 0x0000); + SetGpuReg(REG_OFFSET_WIN1H, 0x00F0); + SetGpuReg(REG_OFFSET_WIN1V, 0x0000); + this->field_0012 = 0; + this->field_0004++; + break; + case 1: + ShowBg(3); + BlendPalettes(0xFFFFFFFF, 0x00, RGB_BLACK); + this->field_0004++; + break; + case 2: + this->field_0012 += 8; + if (this->field_0012 >= 0x30) + this->field_0012 = 0x30; + SetGpuReg(REG_OFFSET_WIN1V, ((0x50 - this->field_0012) << 8) | (0x50 + this->field_0012)); + if (this->field_0012 == 0x30) + sub_80ECAA8(this, sub_80ECC3C); + break; + } +} + +void sub_80ECC3C(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + PlaySE(BGM_FRLG_GAMEFREAK_LOGO); + sub_80EDC40(); + this->field_0012 = 0; + this->field_0004++; + break; + case 1: + this->field_0012++; + if (this->field_0012 == 30) + { + sub_80EDDF0(); + this->field_0012 = 0; + this->field_0004++; + } + break; + case 2: + this->field_0012++; + if (this->field_0012 == 90) + sub_80ECAA8(this, sub_80ECCA8); + break; + } +} |