SpaghettiKart
Loading...
Searching...
No Matches
code_80005FD0.h
Go to the documentation of this file.
1#ifndef CODE_80005FD0_H
2#define CODE_80005FD0_H
3
4#include "vehicles.h"
5#include "camera.h"
6#include "waypoints.h"
8
10 /* 0x00 */ s32 unk0;
11 /* 0x04 */ s32 unk4;
12 /* 0x08 */ s32 unk8;
13 /* 0x0C */ u16 unkC;
14 /* 0x0E */ u16 actorIndex;
15 /* 0x10 */ s16 unk10;
16 /* 0x12 */ // s16 compilerPadding;
17 /* 0x14 */ u32 unk14;
18 /* 0x18 */ s32 unk18;
19}; // size = 0x1C
20
21typedef struct {
22 /* 0x00 */ f32 current;
23 /* 0x04 */ f32 target;
24 /* 0x08 */ f32 step;
25 /* 0x0C */ f32 unkC;
26} TrackPositionFactorInstruction; // size = 0x10
27
28// Something related to CPU item usage
29typedef struct {
30 /* 0x00 */ s16 branch;
31 /* 0x02 */ s16 actorIndex;
32 /* 0x04 */ s16 timer; // confirm?
33 /* 0x06 */ s16 numItemUse; // confirm?
34 /* 0x08 */ s16 numDroppedBananaBunch;
35 /* 0x0A */ s16 unk_0A;
36 /* 0x0C */ s16 unk_0C;
37 /* 0x0E */ s16 timeBeforeThrow; // Allows time for spawning the shells before they can be spawned
38} CpuItemStrategyData; // size = 0x10
39
40typedef struct {
41 s16 unk0;
42 s16 unk2;
43 s16 unk4;
44 u16 unk6;
46
101
102/* Function Prototypes */
104
105s32 is_collide_with_vehicle(f32, f32, f32, f32, f32, f32, f32, f32);
109void set_places(void);
110
111void update_player_rankings(void);
113s32 is_path_point_in_range(u16, u16, u16, u16, u16);
114void func_80007D04(s32, Player*);
115void func_80007FA4(s32, Player*, f32);
116
117void regulate_cpu_speed(s32, f32, Player*);
118bool func_800088D8(s32, s16, s16);
119void set_current_path(s32);
120s32 update_player_path_selection(s32, s32);
122
123void yoshi_valley_cpu_path(s32);
125f32 func_80009258(s32, f32, f32);
127void update_vehicles(void);
128void play_cpu_sound_effect(s32, Player*);
130void update_player(s32);
131
132void func_8000B140(s32);
133s32 are_in_curve(s32, u16);
134bool is_far_from_path(s32);
135f32 calculate_track_position_factor(f32, f32, u16, s32);
136void update_player_position_factor(s32, u16, s32);
137void calculate_track_offset_position(u16, f32, f32, s16);
138void set_track_offset_position(u16, f32, s16);
139s16 func_8000BD94(f32, f32, f32, s32);
140
141s16 find_closest_path_point_track_section(f32, f32, f32, u16, s32*);
142s16 update_path_index_with_track(f32, f32, f32, s16, s32, u16);
143s16 update_path_index(f32, f32, f32, s16, s32);
144void tweak_path_index_wario_stadium(f32, f32, f32, s16*, s32);
145void adjust_path_at_start_line(f32, f32, f32, s16*, s32);
146s16 update_path_index_track_section(f32, f32, f32, Player*, s32, s32*);
147s16 update_player_path(f32, f32, f32, s16, Player*, s32, s32);
148
149s16 find_closest_vehicles_path_point(f32, f32, f32, s16);
150s16 func_8000D24C(f32, f32, f32, s32*);
151s16 func_8000D2B4(f32, f32, f32, s16, s32);
152s16 func_8000D33C(f32, f32, f32, s16, s32);
155s16 func_8000D6D0(Vec3f, s16*, f32, f32, s16, s16);
156s16 func_8000D940(Vec3f, s16*, f32, f32, s16);
158void func_8000DF8C(s32);
159
165void func_8000EEDC(void);
166void generate_player_smoke(void);
167
168void func_8000F0E0(void);
169void func_8000F124(void);
170void clear_path_point(TrackPathPoint*, size_t);
171void init_course_path_point(void);
172void init_players(void);
173
174void load_track_path(s32);
176f32 calculate_track_curvature(s32, u16);
177void analyze_track_sections(s32);
178s16 calculate_angle_path(s32, s32);
179void analyze_path_angle(s32);
180void analyze_curved_path(s32);
181f32 func_80010F40(f32, f32, f32, s32, s32);
182f32 func_80010FA0(f32, f32, f32, s32, s32);
183
189void reset_cpu_behaviour(s32);
190void cpu_behaviour_start(s32, Player*);
191void cpu_behaviour_end(s32, Player*);
192void cpu_behaviour(s32);
193void func_80011EC0(s32, Player*, s32, u16);
194
195void generate_train_path(void);
196void generate_ferry_path(void);
197void spawn_vehicle_on_road(Vec3f position, Vec3s rotation, Vec3f velocity, s32 waypointIndex,
198 s32 someMultiplierTheSequel, f32 speed);
200void init_vehicles_trains(size_t, size_t, f32);
202void update_vehicle_trains(void);
204
205void func_80013054(void);
207void init_vehicles_ferry(void);
211f32 func_80013C74(s16, s16);
213void handle_vehicle_interactions(s32, Player*, VehicleStuff*, f32, f32, s32, u32);
214
215f32 player_track_position_factor_vehicle(s16, f32, s16);
217void init_vehicles_box_trucks(void);
225void init_vehicles_trucks(void);
229void init_vehicles_cars(void);
230void update_vehicle_cars(void);
233void func_80014D30(s32, s32);
234void func_80014DE4(s32);
235f32 func_80014EE4(f32, s32);
236
238void func_8001530C(void);
239void func_80015314(s32, f32, s32);
241void func_80015544(s32, f32, s32, s32);
243void func_80015A9C(s32, f32, s32, s16);
244void func_80015C94(Camera*, Player*, s32, s32);
245
246void func_800162CC(s32, f32, s32, s16);
247void func_80016494(Camera*, Player*, s32, s32);
248void func_80016C3C(s32, f32, s32);
249
250void func_80017720(s32, f32, s32, s16);
251void func_800178F4(Camera*, Player*, s32, s32);
252void func_80017F10(s32, f32, s32, s16);
253
254void func_800180F0(Camera*, Player*, s32, s32);
255void func_80018718(s32, f32, s32, s16);
256void func_800188F4(Camera*, Player*, s32, s32);
257
258void func_80019118(s32, f32, s32, s16);
260void func_8001968C(void);
261void func_8001969C(s32, f32, s32, s16);
263void camera_start_cinematic_shot(s32, s32);
264void func_80019B50(s32, u16);
265void func_80019C50(s32);
266void func_80019D2C(Camera*, Player*, s32);
267void func_80019DE4(void);
268void func_80019DF4(void);
269void func_80019E58(void);
270void func_80019ED0(void);
271void func_80019FB4(s32);
272
273void func_8001A0A4(u16*, Camera*, Player*, s8, s32);
274void func_8001A0DC(u16*, Camera*, Player*, s8, s32);
275void func_8001A124(s32, s32);
276s32 func_8001A310(s32, s32);
277void func_8001A348(s32, f32, s32);
278void func_8001A3D8(s32, f32, s32);
279void func_8001A450(s32, s32, s32);
280void func_8001A518(s32, s32, s32);
281void func_8001A588(u16*, Camera*, Player*, s8, s32);
282void func_8001AAAC(s16, s16, s16);
283void func_8001AB00(void);
284void cpu_decisions_branch_item(s32, s16*, s32);
287void cpu_use_item_strategy(s32);
288
289void func_8001BE78(void);
290
291void func_8001C05C(void);
292void func_8001C14C(void);
293void func_8001C42C(void);
294
295/* This is where I'd put my static data, if I had any */
296
297extern struct Collision D_80162E70;
298extern s16 D_80162EB0; // Possibly a float.
299extern s16 D_80162EB2; // possibly [3]
301extern s16 D_80162F10[];
302extern s16 D_80162F50[];
304extern Vec3f D_80162FB0;
305extern Vec3f D_80162FC0;
306extern s16 gTrainSmokeTimer;
307extern s16 D_80162FD0;
308extern f32 gCourseCompletionPercentByRank[]; // D_80162FD8
309extern s16 D_80162FF8[];
310extern s16 D_80163010[];
311extern f32 cpu_TargetSpeed[];
312extern s16 gPreviousAngleSteering[];
313extern f32 D_80163090[];
314extern bool gIsPlayerInCurve[];
315extern u16 gCurrentNearestPathPoint;
316extern s16 gIsPlayerNewPathPoint;
317extern s16 D_801630E8[];
318extern s16 gFerrySmokeTimer;
319extern s32 D_80163100[];
320extern s32 D_80163128[];
321extern s32 D_80163150[];
322extern f32 gPreviousPlayerAiOffsetX[];
323extern f32 gPreviousPlayerAiOffsetZ[];
325extern s32 D_801631CC;
326extern u16 D_801631E0[];
327extern u16 D_801631F8[];
328extern f32 gCurrentCpuTargetSpeed;
329extern f32 gPreviousCpuTargetSpeed[];
330extern s32 D_80163238;
331extern u16 D_80163240[];
332extern u16 gWrongDirectionCounter[];
333extern u16 gIsPlayerWrongDirection[];
334extern s32 gPreviousLapProgressScore[];
336extern u16 gCurrentCPUBehaviourId[];
337extern u16 gPreviousCPUBehaviourId[];
338extern u16 cpu_BehaviourState[];
339
341
342extern s16 sPlayerAngle[];
343extern u16 D_80163330[];
344extern u16 D_80163344[];
345extern u16 D_80163348[];
346extern u16 D_8016334C[];
347extern u16 gSpeedCPUBehaviour[];
348
350
351extern s32 gIncrementUpdatePlayer;
352extern s16 gCurrentPlayerLookAhead[];
353extern s16 D_80163398[];
354extern s16 D_801633B0[];
355extern s16 D_801633C8[];
356extern s16 D_801633E0[];
357extern s16 D_801633F8[];
358extern s16 D_80163410[];
359extern f32 D_80163418[];
360extern f32 D_80163428[];
361extern f32 D_80163438[];
362extern f32 gPreviousPlayerZ[];
363extern s16 gBestRankedHumanPlayer;
364// 0 or 1, only 1 when when in extra (mirror) mode
365extern s16 gIsInExtra;
366extern s16 D_8016347C;
367extern s16 D_8016347E;
368extern s32 D_80163480;
369extern s32 D_80163484;
370extern s32 D_80163488;
371extern s16 D_8016348C;
372extern s16 D_801634C0[];
373extern s16 bStopAICrossing[];
374extern s16 D_801634EC;
375extern s32 D_801634F0;
376extern s32 D_801634F4;
379extern s32 gVehicle2DPathSize;
381extern size_t gVehiclePathSize;
382extern u16 isCrossingTriggeredByIndex[];
383extern u16 sCrossingActiveTimer[];
384extern s32 D_80163DD8[];
387extern s16 D_80164358;
388extern s16 D_8016435A;
389extern s16 D_8016435C;
390extern s16 gGPCurrentRacePlayerIdByRank[]; // D_80164360
391extern s16 D_80164378[];
392extern s32 gLapCountByPlayerId[]; // D_80164390
393extern s32 gGPCurrentRaceRankByPlayerId[]; // D_801643B8
396extern s16 gGetPlayerByCharacterId[];
397extern s32 D_8016448C;
398extern f32 D_80164498[];
399extern f32 gLapCompletionPercentByPlayerId[]; // D_801644A8
400extern f32 gCourseCompletionPercentByPlayerId[]; // D_801644D0
401extern f32 gPlayerPathY[];
402extern s16 D_80164538[];
403extern s32 D_801645D0[];
404extern s32 D_801645E8[];
405extern f32 D_801645F8[];
406extern s32 D_80164608[];
407extern f32 D_80164618[];
408extern s32 D_80164628[];
409extern f32 D_80164638[];
410extern f32 D_80164648[];
411extern f32 D_80164658[];
412extern s16 D_80164670[];
413extern s16 D_80164678[];
414extern s16 D_80164680[];
415extern f32 D_80164688[];
416extern f32 D_80164698;
417extern f32 D_8016469C;
418extern f32 D_801646A0;
419extern s16 D_801646C0[];
420extern u32 D_801646C8;
421extern u16 D_801646CC;
423
424// See bss_80005FD0.s
426extern s32 D_8016448C;
427extern u16 D_801637BE;
428extern u16 D_80163E2A;
429
430#define SEVERE_WRONG_DIRECTION_MIN 136
431#define SEVERE_WRONG_DIRECTION_MAX 225
432#define SEVERE_CORRECT_DIRECTION_MIN 45
433#define SEVERE_CORRECT_DIRECTION_MAX 316
434#define WRONG_DIRECTION_FRAMES_LIMIT 5
435
436// extern Gfx D_0D0076F8[];
437
438#endif
s32 gLapCountByPlayerId[10]
Definition code_80005FD0.c:172
s16 D_80163410[4]
Definition code_80005FD0.c:127
s16 D_80162F10[30]
Definition code_80005FD0.c:58
s16 D_80162F50[30]
Definition code_80005FD0.c:59
f32 gLapCompletionPercentByPlayerId[10]
Definition code_80005FD0.c:183
s32 D_80163DD8[4]
Definition code_80005FD0.c:162
u16 gCurrentCPUBehaviourId[12]
Definition code_80005FD0.c:109
f32 gCurrentCpuTargetSpeed
Definition code_80005FD0.c:101
s32 D_8016448C
Definition code_80005FD0.c:180
s32 D_80164608[NUM_CAMERAS]
Definition code_80005FD0.c:200
s32 gPreviousLapProgressScore[10]
Definition code_80005FD0.c:107
s32 D_80163150[10]
Definition code_80005FD0.c:90
f32 gPreviousPlayerZ[10]
Definition code_80005FD0.c:133
s16 gIsPlayerNewPathPoint
Definition code_80005FD0.c:85
s16 D_80164538[12]
Definition code_80005FD0.c:187
s32 D_801645D0[NUM_CAMERAS]
Definition code_80005FD0.c:196
u16 D_80163344[2]
Definition code_80005FD0.c:115
s16 D_80163010[12]
Definition code_80005FD0.c:78
Vec3f D_80162FC0
Definition code_80005FD0.c:66
f32 D_80164638[NUM_CAMERAS]
Definition code_80005FD0.c:203
CPUBehaviour * sCurrentCPUBehaviour
Definition code_80005FD0.c:108
u16 D_801631E0[12]
Definition code_80005FD0.c:99
u16 gPreviousCPUBehaviourId[12]
Definition code_80005FD0.c:110
Vec3f D_80162FB0
Definition code_80005FD0.c:65
s16 gBestRankedHumanPlayer
Definition code_80005FD0.c:134
u16 gIsPlayerWrongDirection[12]
Definition code_80005FD0.c:106
s16 D_801646C0[NUM_CAMERAS]
Definition code_80005FD0.c:223
s32 D_80163100[10]
Definition code_80005FD0.c:88
s16 D_80164678[NUM_CAMERAS]
Definition code_80005FD0.c:208
s16 gCurrentPlayerLookAhead[12]
Definition code_80005FD0.c:121
s32 D_80163238
Definition code_80005FD0.c:103
f32 cpu_TargetSpeed[10]
Definition code_80005FD0.c:79
u16 gCurrentNearestPathPoint
Definition code_80005FD0.c:84
f32 D_80163428[4]
Definition code_80005FD0.c:129
s16 D_8016435A
Definition code_80005FD0.c:168
f32 D_80163090[10]
Definition code_80005FD0.c:82
TrackPathPoint * gVehicle2DPathPoint
Definition code_80005FD0.c:150
s32 gGPCurrentRaceRankByPlayerIdDup[10]
Definition code_80005FD0.c:175
s16 D_80162EB2
Definition code_80005FD0.c:51
f32 D_80163418[4]
Definition code_80005FD0.c:128
f32 gPreviousPlayerAiOffsetX[10]
Definition code_80005FD0.c:91
UnkStruct_46D0 D_801646D0[NUM_CAMERAS]
Definition code_80005FD0.c:226
s16 D_801633F8[12]
Definition code_80005FD0.c:126
f32 D_80163438[4]
Definition code_80005FD0.c:130
TrackPathPoint * gVehiclePath
Definition code_80005FD0.c:152
s32 D_801645E8[NUM_CAMERAS]
Definition code_80005FD0.c:198
s16 sPlayerAngle[12]
Definition code_80005FD0.c:112
f32 D_801645F8[NUM_CAMERAS]
Definition code_80005FD0.c:199
u16 isCrossingTriggeredByIndex[NUM_CROSSINGS]
Definition code_80005FD0.c:155
u16 cpu_BehaviourState[12]
Definition code_80005FD0.c:111
f32 gPreviousCpuTargetSpeed[10]
Definition code_80005FD0.c:102
s16 gGPCurrentRacePlayerIdByRank[12]
Definition code_80005FD0.c:170
s32 D_801634F0
Definition code_80005FD0.c:147
s16 D_80164670[NUM_CAMERAS]
Definition code_80005FD0.c:207
s16 D_801633C8[12]
Definition code_80005FD0.c:124
struct unexpiredActors gUnexpiredActorsList[8]
Definition code_80005FD0.c:165
struct Collision D_80162E70
Definition code_80005FD0.c:49
f32 D_8016469C
Definition code_80005FD0.c:212
f32 D_80164498[4]
Definition code_80005FD0.c:182
s32 D_801631CC
Definition code_80005FD0.c:94
s16 D_801630E8[10]
Definition code_80005FD0.c:86
s16 D_80162FD0
Definition code_80005FD0.c:69
u16 D_80163240[12]
Definition code_80005FD0.c:104
u16 D_801631F8[10]
Definition code_80005FD0.c:100
s32 D_801634F4
Definition code_80005FD0.c:148
s16 D_801633E0[12]
Definition code_80005FD0.c:125
f32 gPreviousPlayerAiOffsetZ[10]
Definition code_80005FD0.c:92
CPUBehaviour * gCoursesCPUBehaviour[NUM_TRACKS - 1]
Definition code_80005FD0.c:53
f32 gCourseCompletionPercentByRank[NUM_PLAYERS]
Definition code_80005FD0.c:70
u16 D_80163348[2]
Definition code_80005FD0.c:116
f32 gPlayerPathY[10]
Definition code_80005FD0.c:186
u16 sCrossingActiveTimer[NUM_CROSSINGS]
Definition code_80005FD0.c:156
s16 gTrainSmokeTimer
Definition code_80005FD0.c:67
s16 gIsInExtra
Definition code_80005FD0.c:135
s16 D_8016348C
Definition code_80005FD0.c:141
TrackPositionFactorInstruction gPlayerTrackPositionFactorInstruction[10]
Definition code_80005FD0.c:149
s32 gGPCurrentRaceRankByPlayerId[10]
Definition code_80005FD0.c:173
bool gIsPlayerInCurve[10]
Definition code_80005FD0.c:83
u16 D_80163330[10]
Definition code_80005FD0.c:114
u16 gWrongDirectionCounter[12]
Definition code_80005FD0.c:105
f32 D_80164688[NUM_CAMERAS]
Definition code_80005FD0.c:210
s16 D_80162FF8[12]
Definition code_80005FD0.c:77
size_t gVehiclePathSize
Definition code_80005FD0.c:153
f32 D_80164618[NUM_CAMERAS]
Definition code_80005FD0.c:201
s16 D_801633B0[12]
Definition code_80005FD0.c:123
u16 gSpeedCPUBehaviour[12]
Definition code_80005FD0.c:118
s16 D_8016347E
Definition code_80005FD0.c:137
s16 D_80164358
Definition code_80005FD0.c:167
s16 bStopAICrossing[10]
Definition code_80005FD0.c:145
f32 D_80164648[NUM_CAMERAS]
Definition code_80005FD0.c:204
s16 D_8016435C
Definition code_80005FD0.c:169
f32 D_801646A0
Definition code_80005FD0.c:213
u32 D_801646C8
Definition code_80005FD0.c:224
f32 gCourseCompletionPercentByPlayerId[10]
Definition code_80005FD0.c:184
s16 gGetPlayerByCharacterId[10]
Definition code_80005FD0.c:179
CpuItemStrategyData cpu_ItemStrategy[8]
Definition code_80005FD0.c:166
s16 D_80164680[NUM_CAMERAS]
Definition code_80005FD0.c:209
s16 sVehicleSoundRenderCounter
Definition code_80005FD0.c:93
s32 D_80163128[10]
Definition code_80005FD0.c:89
s16 gFerrySmokeTimer
Definition code_80005FD0.c:87
Vec3f gOffsetPosition
Definition code_80005FD0.c:64
f32 D_80164698
Definition code_80005FD0.c:211
s16 D_801634C0[12]
Definition code_80005FD0.c:144
f32 D_80164658[NUM_CAMERAS]
Definition code_80005FD0.c:205
s32 D_80163484
Definition code_80005FD0.c:139
s32 gPreviousGPCurrentRaceRankByPlayerId[10]
Definition code_80005FD0.c:174
s16 D_801634EC
Definition code_80005FD0.c:146
s16 gPreviousAngleSteering[12]
Definition code_80005FD0.c:80
s32 D_80163480
Definition code_80005FD0.c:138
s32 gVehicle2DPathSize
Definition code_80005FD0.c:151
u16 D_801646CC
Definition code_80005FD0.c:225
u16 D_8016334C[8]
Definition code_80005FD0.c:117
s16 D_80162EB0
Definition code_80005FD0.c:50
s32 D_80164628[NUM_CAMERAS]
Definition code_80005FD0.c:202
s16 D_80163398[12]
Definition code_80005FD0.c:122
s16 D_80164378[12]
Definition code_80005FD0.c:171
s32 D_80163488
Definition code_80005FD0.c:140
s16 D_8016347C
Definition code_80005FD0.c:136
s32 gIncrementUpdatePlayer
Definition code_80005FD0.c:120
void func_800188F4(Camera *, Player *, s32, s32)
void func_8001C14C(void)
Definition code_80005FD0.c:7844
void detect_wrong_player_direction(s32, Player *)
Definition code_80005FD0.c:689
s16 update_path_index(f32, f32, f32, s16, s32)
Definition code_80005FD0.c:2481
void func_8000EEDC(void)
Definition code_80005FD0.c:3305
void generate_train_path(void)
Definition code_80005FD0.c:4340
void calculate_track_boundaries(s32)
Definition code_80005FD0.c:3702
void handle_school_buses_interactions(s32, Player *)
Definition code_80005FD0.c:5253
s16 func_8000D6D0(Vec3f, s16 *, f32, f32, s16, s16)
Definition code_80005FD0.c:2779
void func_800180F0(Camera *, Player *, s32, s32)
void func_80017720(s32, f32, s32, s16)
s16 func_8000D2B4(f32, f32, f32, s16, s32)
Definition code_80005FD0.c:2674
void clear_path_point(TrackPathPoint *, size_t)
Definition code_80005FD0.c:3415
s16 calculate_angle_path(s32, s32)
Definition code_80005FD0.c:3860
s16 find_closest_path_point_track_section(f32, f32, f32, u16, s32 *)
Definition code_80005FD0.c:2341
void reset_cpu_behaviour(s32)
Definition code_80005FD0.c:4172
void init_vehicles_cars(void)
Definition code_80005FD0.c:5290
void func_80015544(s32, f32, s32, s32)
Definition code_80005FD0.c:5529
void generate_player_smoke(void)
Definition code_80005FD0.c:3316
s32 func_8001A310(s32, s32)
Definition code_80005FD0.c:6816
void func_8001A0A4(u16 *, Camera *, Player *, s8, s32)
s32 add_red_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3268
void update_player_track_position_factor_from_cars(s32)
Definition code_80005FD0.c:5314
void cpu_behaviour(s32)
Definition code_80005FD0.c:4285
void func_8000F0E0(void)
Definition code_80005FD0.c:3360
void update_player(s32)
Definition code_80005FD0.c:1604
void func_8001A124(s32, s32)
Definition code_80005FD0.c:6765
void update_player_track_position_factor_from_vehicle(s32, s32, VehicleStuff *)
Definition code_80005FD0.c:5185
void func_800178F4(Camera *, Player *, s32, s32)
void cpu_decisions_branch_item(s32, s16 *, s32)
void handle_tanker_trucks_interactions(s32, Player *)
Definition code_80005FD0.c:5281
void func_80015314(s32, f32, s32)
bool func_800088D8(s32, s16, s16)
Definition code_80005FD0.c:1197
void cpu_behaviour_end(s32, Player *)
Definition code_80005FD0.c:4246
void update_vehicle_tanker_trucks(void)
Definition code_80005FD0.c:5274
void func_8001C05C(void)
Definition code_80005FD0.c:7819
void func_80017F10(s32, f32, s32, s16)
void func_800162CC(s32, f32, s32, s16)
Definition code_80005FD0.c:5725
void init_vehicles_school_buses(void)
Definition code_80005FD0.c:5234
u16 D_801637BE
s16 get_angle_between_path(Vec3f, Vec3f)
Definition code_80005FD0.c:567
s16 func_8000D940(Vec3f, s16 *, f32, f32, s16)
Definition code_80005FD0.c:2845
void func_80013054(void)
Definition code_80005FD0.c:4640
void update_player_track_position_factor_from_box_trucks(s32)
Definition code_80005FD0.c:5230
void init_vehicles_box_trucks(void)
Definition code_80005FD0.c:5208
f32 player_track_position_factor_vehicle(s16, f32, s16)
Definition code_80005FD0.c:5146
void func_8001A348(s32, f32, s32)
Definition code_80005FD0.c:6823
f32 func_80009258(s32, f32, f32)
@ SPEED_CPU_BEHAVIOUR_FAST
Definition code_80005FD0.h:349
@ SPEED_CPU_BEHAVIOUR_SLOW
Definition code_80005FD0.h:349
@ SPEED_CPU_BEHAVIOUR_MAX
Definition code_80005FD0.h:349
@ SPEED_CPU_BEHAVIOUR_NORMAL
Definition code_80005FD0.h:349
s32 generate_2d_path(TrackPathPoint *, TrackPathPoint *, s32)
Definition code_80005FD0.c:4085
void init_vehicles_ferry(void)
Definition code_80005FD0.c:4695
void update_vehicle_box_trucks(void)
Definition code_80005FD0.c:5218
s32 update_player_path_selection(s32, s32)
Definition code_80005FD0.c:1344
void func_8001530C(void)
Definition code_80005FD0.c:5465
s16 update_path_index_track_section(f32, f32, f32, Player *, s32, s32 *)
Definition code_80005FD0.c:2553
void func_8001A518(s32, s32, s32)
Definition code_80005FD0.c:6860
void func_8001577C(Camera *, UNUSED Player *, s32, s32)
void func_8001A0DC(u16 *, Camera *, Player *, s8, s32)
Definition code_80005FD0.c:6760
s32 process_path_data(TrackPathPoint *, TrackPathPoint *)
Definition code_80005FD0.c:4053
void set_places(void)
Definition code_80005FD0.c:725
void func_8001968C(void)
Definition code_80005FD0.c:6456
void tweak_path_index_wario_stadium(f32, f32, f32, s16 *, s32)
void handle_vehicle_interactions(s32, Player *, VehicleStuff *, f32, f32, s32, u32)
Definition code_80005FD0.c:5005
void update_cpu_path_completion(s32, Player *)
Definition code_80005FD0.c:1416
void func_8001A588(u16 *, Camera *, Player *, s8, s32)
void set_track_offset_position(u16, f32, s16)
Definition code_80005FD0.c:2266
s32 add_actor_in_unexpired_actor_list(s32, s16)
Definition code_80005FD0.c:3247
void handle_trains_interactions(s32, Player *)
Definition code_80005FD0.c:4580
void func_80019FB4(s32)
Definition code_80005FD0.c:6728
void update_player_track_position_factor_from_buses(s32)
Definition code_80005FD0.c:5258
void analyze_curved_path(s32)
Definition code_80005FD0.c:3891
f32 func_80010F40(f32, f32, f32, s32, s32)
void adjust_position_by_angle(Vec3f, Vec3f, s16)
Definition code_80005FD0.c:600
CpuItemStrategyEnum
Definition code_80005FD0.h:47
@ CPU_STRATEGY_HOLD_GREEN_SHELL
Definition code_80005FD0.h:55
@ CPU_STRATEGY_USE_SUPER_MUSHROOM
Definition code_80005FD0.h:83
@ CPU_STRATEGY_WAIT_NEXT_ITEM
Definition code_80005FD0.h:48
@ CPU_STRATEGY_ITEM_GREEN_SHELL
Definition code_80005FD0.h:54
@ CPU_STRATEGY_HOLD_BLUE_SPINY_SHELL
Definition code_80005FD0.h:91
@ CPU_STRATEGY_ITEM_BANANA_BUNCH
Definition code_80005FD0.h:62
@ CPU_STRATEGY_ITEM_BOO
Definition code_80005FD0.h:76
@ CPU_STRATEGY_HOLD_BANANA
Definition code_80005FD0.h:51
@ CPU_STRATEGY_ITEM_SUPER_MUSHROOM
Definition code_80005FD0.h:82
@ CPU_STRATEGY_WAIT_END_BOO
Definition code_80005FD0.h:77
@ CPU_STRATEGY_WAIT_INIT_BANANA_BUNCH
Definition code_80005FD0.h:63
@ CPU_STRATEGY_ITEM_DOUBLE_MUSHROOM
Definition code_80005FD0.h:80
@ CPU_STRATEGY_ITEM_TRIPLE_MUSHROOM
Definition code_80005FD0.h:81
@ CPU_STRATEGY_ITEM_STAR
Definition code_80005FD0.h:73
@ CPU_STRATEGY_HOLD_FAKE_ITEM_BOX
Definition code_80005FD0.h:67
@ CPU_STRATEGY_ITEM_FAKE_ITEM_BOX
Definition code_80005FD0.h:66
@ CPU_STRATEGY_THROW_TRIPLE_GREEN_SHELL
Definition code_80005FD0.h:95
@ CPU_STRATEGY_ITEM_TRIPLE_GREEN_SHELL
Definition code_80005FD0.h:93
@ CPU_STRATEGY_THROW_BLUE_SPINY_SHELL
Definition code_80005FD0.h:90
@ CPU_STRATEGY_DROP_BANANA
Definition code_80005FD0.h:52
@ CPU_STRATEGY_ORBIT_TRIPLE_GREEN_SHELL
Definition code_80005FD0.h:94
@ CPU_STRATEGY_ITEM_RED_SHELL
Definition code_80005FD0.h:58
@ CPU_STRATEGY_THROW_GREEN_SHELL
Definition code_80005FD0.h:56
@ CPU_STRATEGY_THROW_FAKE_ITEM_BOX
Definition code_80005FD0.h:68
@ CPU_STRATEGY_DROP_BANANA_BUNCH
Definition code_80005FD0.h:64
@ CPU_STRATEGY_END_THUNDERBOLT
Definition code_80005FD0.h:71
@ CPU_STRATEGY_ITEM_THUNDERBOLT
Definition code_80005FD0.h:70
@ CPU_STRATEGY_END_THROW_BANANA
Definition code_80005FD0.h:87
@ CPU_STRATEGY_ITEM_MUSHROOM
Definition code_80005FD0.h:79
@ CPU_STRATEGY_ITEM_BANANA
Definition code_80005FD0.h:50
@ CPU_STRATEGY_ORBIT_TRIPLE_RED_SHELL
Definition code_80005FD0.h:98
@ CPU_STRATEGY_HOLD_THROW_BANANA
Definition code_80005FD0.h:86
@ CPU_STRATEGY_THROW_TRIPLE_RED_SHELL
Definition code_80005FD0.h:99
@ CPU_STRATEGY_END_ITEM_STAR
Definition code_80005FD0.h:74
@ CPU_STRATEGY_THROW_RED_SHELL
Definition code_80005FD0.h:60
@ CPU_STRATEGY_HOLD_RED_SHELL
Definition code_80005FD0.h:59
@ CPU_STRATEGY_ITEM_BLUE_SPINY_SHELL
Definition code_80005FD0.h:89
@ CPU_STRATEGY_ITEM_TRIPLE_RED_SHELL
Definition code_80005FD0.h:97
@ CPU_STRATEGY_THROW_BANANA
Definition code_80005FD0.h:85
void handle_cars_interactions(s32, Player *)
Definition code_80005FD0.c:5309
void delete_actor_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3292
void init_players(void)
Definition code_80005FD0.c:3481
void update_player_track_position_factor_from_tanker_truck(s32)
Definition code_80005FD0.c:5286
s16 update_player_path(f32, f32, f32, s16, Player *, s32, s32)
Definition code_80005FD0.c:2567
void update_player_timer_sound(s32, Player *)
void func_80019118(s32, f32, s32, s16)
void update_vehicle_paddle_boats(void)
Definition code_80005FD0.c:4724
s16 func_8000D24C(f32, f32, f32, s32 *)
Definition code_80005FD0.c:2666
void analyze_path_angle(s32)
Definition code_80005FD0.c:3879
f32 func_80010FA0(f32, f32, f32, s32, s32)
s32 are_in_curve(s32, u16)
s32 func_80011014(TrackPathPoint *, TrackPathPoint *, s32, s32)
void init_course_path_point(void)
Definition code_80005FD0.c:3420
void func_80015C94(Camera *, Player *, s32, s32)
void func_8001BE78(void)
Definition code_80005FD0.c:7780
void func_80015A9C(s32, f32, s32, s16)
Definition code_80005FD0.c:5616
void update_vehicle_school_bus(void)
Definition code_80005FD0.c:5246
void func_80016C3C(s32, f32, s32)
void calculate_camera_up_vector(Camera *, s32)
Definition code_80005FD0.c:5434
f32 func_80013C74(s16, s16)
Definition code_80005FD0.c:4906
void func_80019E58(void)
Definition code_80005FD0.c:6699
void func_8000F124(void)
Definition code_80005FD0.c:3368
void play_cpu_sound_effect(s32, Player *)
Definition code_80005FD0.c:1564
void func_80019760(Camera *, UNUSED Player *, s32, s32)
void func_8001AAAC(s16, s16, s16)
Definition code_80005FD0.c:7005
s32 add_blue_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3284
void func_80019D2C(Camera *, Player *, s32)
Definition code_80005FD0.c:6666
void clear_expired_strategies(CpuItemStrategyData *)
Definition code_80005FD0.c:7100
void update_player_rankings(void)
Definition code_80005FD0.c:816
void func_80019B50(s32, u16)
Definition code_80005FD0.c:6580
void update_vehicle_cars(void)
Definition code_80005FD0.c:5302
void func_80019DE4(void)
Definition code_80005FD0.c:6683
void func_80019ED0(void)
Definition code_80005FD0.c:6710
u16 D_80163E2A
s32 add_green_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3276
void func_80014D30(s32, s32)
Definition code_80005FD0.c:5318
void set_places_end_course_with_time(void)
Definition code_80005FD0.c:868
void initialize_toads_turnpike_vehicle(f32, f32, s32, s32, VehicleStuff *, TrackPathPoint *)
Definition code_80005FD0.c:4860
void func_80018718(s32, f32, s32, s16)
void update_player_position_factor(s32, u16, s32)
Definition code_80005FD0.c:2218
void update_vehicle_trains(void)
Definition code_80005FD0.c:4504
s16 find_closest_vehicles_path_point(f32, f32, f32, s16)
s16 update_vehicle_following_path(Vec3f, s16 *, f32)
Definition code_80005FD0.c:2911
void func_80019DF4(void)
Definition code_80005FD0.c:6687
void handle_box_trucks_interactions(s32, Player *)
Definition code_80005FD0.c:5225
s16 update_path_index_with_track(f32, f32, f32, s16, s32, u16)
Definition code_80005FD0.c:2440
void set_current_path(s32)
Definition code_80005FD0.c:1334
void sync_train_components(TrainCarStuff *, s16)
sync the train components vehicle with the actor
Definition code_80005FD0.c:4488
f32 calculate_track_position_factor(f32, f32, u16, s32)
Definition code_80005FD0.c:2192
void func_8001933C(Camera *, UNUSED Player *, s32, s32)
void func_80007FA4(s32, Player *, f32)
Definition code_80005FD0.c:1050
f32 cpu_track_position_factor(s32)
Definition code_80005FD0.c:2695
void regulate_cpu_speed(s32, f32, Player *)
Definition code_80005FD0.c:1096
s32 is_collide_with_vehicle(f32, f32, f32, f32, f32, f32, f32, f32)
Definition code_80005FD0.c:579
void cpu_behaviour_start(s32, Player *)
Definition code_80005FD0.c:4178
f32 calculate_track_curvature(s32, u16)
Definition code_80005FD0.c:3752
@ CPU_BEHAVIOUR_STATE_RUNNING
Definition code_80005FD0.h:340
@ CPU_BEHAVIOUR_STATE_NONE
Definition code_80005FD0.h:340
@ CPU_BEHAVIOUR_STATE_START
Definition code_80005FD0.h:340
void generate_ferry_path(void)
Definition code_80005FD0.c:4355
void analyze_track_sections(s32)
Definition code_80005FD0.c:3804
f32 func_80014EE4(f32, s32)
Definition code_80005FD0.c:5355
void adjust_path_at_start_line(f32, f32, f32, s16 *, s32)
void spawn_vehicle_on_road(Vec3f position, Vec3s rotation, Vec3f velocity, s32 waypointIndex, s32 someMultiplierTheSequel, f32 speed)
Definition code_80005FD0.c:4371
void copy_courses_cpu_behaviour(void)
Definition code_80005FD0.c:4159
void func_8001A450(s32, s32, s32)
Definition code_80005FD0.c:6844
void determine_ideal_cpu_position_offset(s32, u16)
Definition code_80005FD0.c:2719
void func_80015390(Camera *, Player *, s32)
s32 set_vehicle_render_distance_flags(Vec3f, f32, s32)
Definition code_80005FD0.c:621
void handle_paddle_boats_interactions(Player *)
Definition code_80005FD0.c:4825
void update_vehicle_follow_path_point(VehicleStuff *)
Definition code_80005FD0.c:4939
s32 is_path_point_in_range(u16, u16, u16, u16, u16)
Definition code_80005FD0.c:949
void check_ai_crossing_distance(s32)
Definition code_80005FD0.c:4674
void func_80014DE4(s32)
Definition code_80005FD0.c:5328
void func_8001A3D8(s32, f32, s32)
Definition code_80005FD0.c:6833
void func_80019C50(s32)
Definition code_80005FD0.c:6613
void func_80007D04(s32, Player *)
Definition code_80005FD0.c:967
bool is_far_from_path(s32)
Definition code_80005FD0.c:2184
void func_80016494(Camera *, Player *, s32, s32)
s16 func_8000BD94(f32, f32, f32, s32)
Definition code_80005FD0.c:2307
void camera_start_cinematic_shot(s32, s32)
Definition code_80005FD0.c:6500
void cpu_use_item_strategy(s32)
Definition code_80005FD0.c:7107
void func_8001ABE0(s32, CpuItemStrategyData *)
void func_8001C42C(void)
Definition code_80005FD0.c:7894
void init_vehicles_trains(size_t, size_t, f32)
Definition code_80005FD0.c:4417
s16 func_8000D33C(f32, f32, f32, s16, s32)
Definition code_80005FD0.c:2685
void update_player_completion(s32)
Definition code_80005FD0.c:1368
void calculate_track_offset_position(u16, f32, f32, s16)
Definition code_80005FD0.c:2229
void func_80011EC0(s32, Player *, s32, u16)
void func_8000DF8C(s32)
Definition code_80005FD0.c:2980
void load_track_path(s32)
Definition code_80005FD0.c:3651
void update_vehicles(void)
Definition code_80005FD0.c:1555
void update_player_path_completion(s32, Player *)
Definition code_80005FD0.c:1450
void reset_cpu_behaviour_none(s32)
Definition code_80005FD0.c:4166
void func_8001969C(s32, f32, s32, s16)
void func_8000B140(s32)
Definition code_80005FD0.c:2014
void init_vehicles_trucks(void)
Definition code_80005FD0.c:5262
void set_vehicle_pos_path_point(TrainCarStuff *, TrackPathPoint *, u16)
Definition code_80005FD0.c:4394
void func_8001AB00(void)
Definition code_80005FD0.c:7013
void yoshi_valley_cpu_path(s32)
Definition code_80005FD0.c:1379
f32 Vec3f[3]
Definition common_structs.h:10
s16 Vec3s[3]
Definition common_structs.h:15
#define NUM_PLAYERS
Definition defines.h:139
#define UNUSED
Definition macros.h:40
Definition CPU.h:6
Definition camera.h:35
Definition common_structs.h:147
Definition code_80005FD0.h:29
s16 timer
Definition code_80005FD0.h:32
s16 branch
Definition code_80005FD0.h:30
s16 unk_0C
Definition code_80005FD0.h:36
s16 unk_0A
Definition code_80005FD0.h:35
s16 numDroppedBananaBunch
Definition code_80005FD0.h:34
s16 actorIndex
Definition code_80005FD0.h:31
s16 timeBeforeThrow
Definition code_80005FD0.h:37
s16 numItemUse
Definition code_80005FD0.h:33
Definition common_structs.h:264
Definition waypoints.h:14
Definition code_80005FD0.h:21
f32 target
Definition code_80005FD0.h:23
f32 unkC
Definition code_80005FD0.h:25
f32 step
Definition code_80005FD0.h:24
f32 current
Definition code_80005FD0.h:22
Definition vehicles.h:43
Definition code_80005FD0.h:40
s16 unk4
Definition code_80005FD0.h:43
s16 unk2
Definition code_80005FD0.h:42
u16 unk6
Definition code_80005FD0.h:44
s16 unk0
Definition code_80005FD0.h:41
Definition vehicles.h:81
Definition code_80005FD0.h:9
u16 actorIndex
Definition code_80005FD0.h:14
s32 unk18
Definition code_80005FD0.h:18
u16 unkC
Definition code_80005FD0.h:13
s32 unk8
Definition code_80005FD0.h:12
s16 unk10
Definition code_80005FD0.h:15
u32 unk14
Definition code_80005FD0.h:17
s32 unk4
Definition code_80005FD0.h:11
s32 unk0
Definition code_80005FD0.h:10