diff options
author | YamaArashi <shadow962@live.com> | 2016-10-11 21:51:34 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-10-11 21:51:34 -0700 |
commit | fa9ddc90c560fa5dcf104752a4fbe625bc2cf084 (patch) | |
tree | 3ab24c841a55c24ccfbd39566f398e8e543eece5 /src/intro.c | |
parent | e29af253cee26e42697458ff46112506d6aca076 (diff) |
begin decompiling intro functions
Diffstat (limited to 'src/intro.c')
-rw-r--r-- | src/intro.c | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/src/intro.c b/src/intro.c new file mode 100644 index 000000000..0a91a4f93 --- /dev/null +++ b/src/intro.c @@ -0,0 +1,147 @@ +#include "global.h" +#include "main.h" +#include "palette.h" +#include "task.h" +#include "link.h" + +struct GcmbStruct +{ + u16 gcmb_field_0; + u8 gcmb_field_2; +}; + +extern s32 gUnknown_03005ED0; +extern struct GcmbStruct gUnknown_03005EE0; +extern u16 gSaveFileStatus; + +extern const u8 gIntroCopyright_Gfx[]; +extern const u16 gIntroCopyright_Pal[]; +extern const u16 gIntroCopyright_Tilemap[]; + +extern void CB2_InitTitleScreen(void); + +void CB2_813B7EC(void); +void task_intro_1(u8); + +void sub_813B784(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void CB2_813B798(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + if (gMain.newKeys && !gPaletteFade.active) + SetMainCallback2(CB2_813B7EC); + else if (gUnknown_03005ED0 != -1) + gUnknown_03005ED0++; +} + +void CB2_813B7EC(void) +{ + if (!UpdatePaletteFade()) + SetMainCallback2(CB2_InitTitleScreen); +} + +void sub_813B808(u16 a1, u16 a2, u16 a3) +{ + LZ77UnCompVram(gIntroCopyright_Gfx, (void *)(VRAM + a1)); + LoadPalette(gIntroCopyright_Pal, a3, 0x20); + CpuCopy16(gIntroCopyright_Tilemap, (void *)(VRAM + a2), 0x500); +} + +void SerialCb_CopyrightScreen(void) +{ + GameCubeMultiBoot_HandleSerialInterrupt(&gUnknown_03005EE0); +} + +u8 SetUpCopyrightScreen(void) +{ + u16 ime; + + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + *(u16 *)PLTT = 0x7FFF; + REG_DISPCNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); + ResetPaletteFade(); + sub_813B808(0, 14336, 0); + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF); + REG_BG0CNT = 1792; + ime = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = ime; + REG_DISPSTAT |= 8; + SetVBlankCallback(sub_813B784); + REG_DISPCNT = 320; + SetSerialCallback(SerialCb_CopyrightScreen); + GameCubeMultiBoot_Init(&gUnknown_03005EE0); + default: + UpdatePaletteFade(); + gMain.state++; + GameCubeMultiBoot_Main(&gUnknown_03005EE0); + break; + case 140: + GameCubeMultiBoot_Main(&gUnknown_03005EE0); + if (gUnknown_03005EE0.gcmb_field_2 != 1) + { + BeginNormalPaletteFade(0xFFFFFFFFu, 0, 0, 0x10, 0); + gMain.state++; + } + break; + case 141: + if (UpdatePaletteFade()) + break; + CreateTask(task_intro_1, 0); + SetMainCallback2(CB2_813B798); + if (gUnknown_03005EE0.gcmb_field_2) + { + GameCubeMultiBoot_ExecuteProgram(&gUnknown_03005EE0); + } + else + { + GameCubeMultiBoot_Quit(); + SetSerialCallback(SerialCB); + } + return 0; + } + + return 1; +} + +void c2_copyright_1(void) +{ + if (!SetUpCopyrightScreen()) + { + sub_8052E4C(); + sub_81251B8(); + sub_8125EC8(0); + if (gSaveFileStatus == 0 || gSaveFileStatus == 2) + ClearSav2(); + SetPokemonCryStereo(gSaveBlock2.optionsSound); + } +} + +void sub_813BA88(void) +{ + SetUpCopyrightScreen(); +} |