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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
#ifndef FOX_OPTION_H
#define FOX_OPTION_H
#include "global.h"
typedef struct {
/* 0x00 */ s32 type;
/* 0x04 */ s32 unk_04; // Always set to 0 and never used
/* 0x08 */ void* texture;
/* 0x0C */ u16* palette;
/* 0x10 */ s32 width;
/* 0x14 */ s32 height;
/* 0x18 */ f32 xPos;
/* 0x1C */ f32 yPos;
/* 0x20 */ f32 xScale;
/* 0x24 */ f32 yScale;
/* 0x28 */ s32 red;
/* 0x2C */ s32 green;
/* 0x30 */ s32 blue;
/* 0x34 */ s32 alpha;
} OptionCardTexture; // size = 0x38
typedef struct {
/* 0x00 */ f32 x;
/* 0x04 */ f32 y;
/* 0x08 */ f32 z;
/* 0x0C */ f32 xScale;
/* 0x10 */ f32 yScale;
} OptionCardFrame; // size = 0x14
typedef struct {
/* 0x0 */ f32 x;
/* 0x4 */ f32 y;
/* 0x8 */ f32 range;
} ArwingCursorPos; // size = 0xC
typedef struct {
/* 0x00 */ OptionCardTexture tex;
/* 0x38 */ OptionCardFrame frame;
/* 0x4C */ ArwingCursorPos pos;
/* 0x58 */ bool drawTex;
/* 0x5C */ bool drawFrame;
} OptionEntry; // size = 0x60
typedef struct {
/* 0x0 */ PlanetId start;
/* 0x4 */ PlanetId end;
/* 0x8 */ s32 color;
} RouteColoredLine; // size = 0xC
typedef struct {
s32 unk_0;
s32 unk_4;
} StickInput;
typedef enum OptionId {
/* 1000 */ OPTION_MAIN_MENU = 1000,
/* 2000 */ OPTION_VERSUS_STAGE = 2000,
/* 0 */ OPTION_MAP = 0,
/* 1 */ OPTION_TRAINING,
/* 2 */ OPTION_VERSUS,
/* 3 */ OPTION_RANKING,
/* 4 */ OPTION_SOUND,
#ifdef VERSION_EU
/* 5 */ OPTION_LANGUAGE,
/* 6 */ OPTION_DATA,
/* 7 */ OPTION_EXPERT_SOUND,
#else
/* 5 */ OPTION_DATA,
/* 6 */ OPTION_EXPERT_SOUND,
#endif
/* 10 */ OPTION_POINT_MATCH = 10, // Point Match
/* 20 */ OPTION_BR_MATCH = 20, // Battle Royal Match
/* 30 */ OPTION_TT_MATCH = 30, // Time Trial Match
/* 200 */ OPTION_NAME_ENTRY = 200,
/* 300 */ OPTION_SCORE = 300,
/* 400 */ OPTION_INVOICE = 400,
/* 401 */ OPTION_MAX
} OptionId;
extern u8* gBSSMapPlanetTextures[9];
extern u8* gAssetMapPlanetTextures[9];
extern s32 gTotalHitsRanking[];
extern bool gGoToTitle; // engine
extern u8 sLevelStartState;
extern s32 sWipeHeight;
extern s32 sTitleRankMaxRecords;
// Planet textures
extern u8 gMapVenomCloudTex[96 * 96];
extern u8 gMapCorneriaTex[96 * 96];
extern u8 gMapFortunaTex[96 * 96];
extern u8 gMapAquasTex[96 * 96];
extern u8 gMapVenomTex[96 * 96];
extern u8 gMapTitaniaTex[96 * 96];
extern u8 gMapKatinaTex[96 * 96];
extern u8 gMapMacbethTex[96 * 96];
extern u8 gMapZonessTex[96 * 96];
void Title_UpdateEntry(void);
s32 Title_CheckControllers(void);
void Title_Ranking_Update(void);
void Title_RankingData_Draw(void);
void Title_Screen_Update(void);
void Title_CsGreatFoxTraveling_Update(void);
void Title_CsTeamRunning_Update(void);
void Title_CsGreatFoxCloseUp_Update(void);
void Title_CsTakeOff_Update(void);
void Title_CsTakeOffSpace_Update(void);
void Title_Ranking_Draw(void);
s32 Title_GetRankTotalHits(void);
void Title_Screen_Draw(void);
void Title_CsGreatFoxTraveling_Draw(void);
void Title_CsTeamRunning_Draw(void);
void Title_CsGreatFoxCloseUp_Draw(void);
void Title_CsTakeOff_Draw(void);
void Title_CsTakeOffSpace_Draw(void);
void Title_StarfoxLogo_Draw(void);
void Title_64Logo_Draw(void);
void Title_CopyrightSymbol_Draw(void);
void Title_PressStart_Draw(void);
void Title_Copyright_Draw(void);
void Title_TeamName_Draw(void);
void Title_SunGlare_Draw(void);
void Option_Entry_Update(void);
void Option_Map_Update(void);
void Option_MainMenu_Update(void);
void Option_Training_Update(void);
void Option_MainMenu_Draw(void);
void Option_Versus_Update(void);
void Option_Versus_Draw(void);
void Option_Sound_Setup(void);
void Option_Sound_Update(void);
void Option_Sound_SetSoundMode(void);
void Option_Sound_SetVolumeLevels(void);
void Option_Sound_Draw(void);
void Option_Sound_Speaker_Draw(void);
void Option_ExpertSound_Setup(void);
void Option_ExpertSound_Update(void);
void Option_ExpertSound_Draw(void);
void Option_Data_Setup(void);
void Option_Data_Update(void);
void Option_Data_Select(void);
void Option_Data_Draw(void);
void Option_Ranking_Setup(void);
void Option_Ranking_Update(void);
void Option_Ranking_Draw(void);
void Option_Ranking_Select(void);
void Option_Ranking_Cursor(void);
void Option_Ranking2_Cursor(void);
void Option_RankingMenu_Draw(void);
void Option_RankingMenu2_Draw(void);
void Option_80197914(void);
void Option_OrdinalNumbers_Draw(s32, s32, s32);
void Option_RankingName_Draw(s32, s32, s32);
void Option_RankingTotalHits_Draw(s32, s32, s32);
void Option_RankingTeamAlive_Draw(s32, s32, s32);
void Option_RankingRoute_Draw(s32, f32, f32);
void Option_RankingRouteFrame_Draw(s32, s32, f32, f32, s32);
void Option_RankingHitCount_Draw(s32, s32, f32, f32);
void Option_RankingTeamPresence_Draw(s32, s32, f32, f32);
void Option_RankingPlanetName_Draw(s32, s32, f32, f32);
void Option_RankingPlanetRoute_Draw(s32, f32, s32);
void Option_RankingRouteMedal_Draw(f32 xPos, f32 yPos, f32 zPos);
s32 Option_GetRouteLineColor(PlanetId start, PlanetId end);
void Option_VersusMenu_Setup(void);
void Option_VersusMenu_Update(void);
void Option_VersusMenu_Cursor(void);
void Option_VersusMenu_Draw(void);
void Option_VS_HandicapSet_Draw(s32);
void Option_VS_N64Console_Draw(void);
void Option_VersusStage_Setup(void);
void Option_8019A080(void);
void Option_VersusStage_Update(void);
void Option_Vs_PointMatch_Update(void);
void Option_Vs_BattleRoyal_Update(void);
void Option_Vs_TimeTrial_Update(void);
void Option_Vs_StartMatch(void);
void Option_Vs_Point_Selection(void);
void Option_VsTimeSelection(void);
void Option_VsStageSelection(void);
void Option_VsConfirmSelection(void);
void Option_VersusStage_Draw(void);
void Option_VsPointMatch_Draw(void);
void Option_VsTimeTrial_Draw(void);
void Option_VsStageSelect_Draw(void);
void Option_VsTimeTrialStageSelect_Draw(void);
void Option_VsStageSelect2_Draw(void);
void Option_VsOKConfirm_Draw(void);
void Option_VsSelectionArrows_Draw(f32 xPos, f32 yPos, f32 offset, s32 r, s32 g, s32 b);
void Option_AcceptCancel_Draw(void);
void Option_VsBackToSubMenu(OptionId menuEntryState);
void Option_VsMenuCard_Draw(void);
void Option_DrawMenuLabel(void);
void Option_DrawMenuCard(OptionCardFrame arg0);
void Option_DrawMenuArwing(ArwingCursorPos arwing);
void Option_DrawArwing(f32, f32, f32, f32, f32, f32, s32);
void Option_Menu_Push(void);
void Option_SetMenuLightPos(f32, f32, f32, f32*, f32*, f32*);
void Option_CardLightning_Update(void);
void Option_CardLightning_Draw(void);
void Option_DrawCardLabel(OptionCardTexture tex);
bool Option_Input_MoveCursor_Y(s32* arg0, s32 arg1, bool arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6,
s32 controllerNum, StickInput* stickY);
s32 Option_Input_DataSelect_X(s32*);
bool Option_Input_Sound_X(f32* arg0, f32 arg1, f32 arg2, StickInput* arg3);
void Option_Color_FlashRed(f32*);
s32 Option_RankInPos_Check(void);
void Option_NameEntry_Update(void);
void Option_NameEntry_Setup(void);
void Option_NameEntry_Select(void);
void Option_NameEntry_Draw(void);
void Option_Ranking_SaveData(void);
void Option_3DFont_Draw(s32, f32, f32, f32, f32, f32, f32, f32);
s32 Option_GetCharIndex(s32 character);
void Option_Score_Update(void);
void Option_Score_Update2(void);
void Option_Score_Draw(void);
void Option_Invoice_Update(void);
void Option_InvoiceDraw(void);
void Map_Main(void);
void Map_Texture_Sphere(u8*, u8*, f32*);
void Map_RemainingLives_Draw(s32, s32, s32);
void Map_801A9FD4(bool);
#endif
|