1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
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();
}
|