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);
159void func_8000DF8C(s32);
160
166void func_8000EEDC(void);
167void generate_player_smoke(void);
168
169void func_8000F0E0(void);
170void func_8000F124(void);
171void clear_path_point(TrackPathPoint*, size_t);
172void init_course_path_point(void);
173void init_players(void);
174
175void load_track_path(s32);
177f32 calculate_track_curvature(s32, u16);
178void analyze_track_section(s32);
179s16 calculate_angle_path(s32, s32);
180void analyse_angle_path(s32);
181void analyze_curved_path(s32);
182f32 func_80010F40(f32, f32, f32, s32, s32);
183f32 func_80010FA0(f32, f32, f32, s32, s32);
184
190void reset_cpu_behaviour(s32);
191void cpu_behaviour_start(s32, Player*);
192void cpu_behaviour_end(s32, Player*);
193void cpu_behaviour(s32);
194void func_80011EC0(s32, Player*, s32, u16);
195
196void generate_train_path(void);
197void generate_ferry_path(void);
198void spawn_vehicle_on_road(Vec3f position, Vec3s rotation, Vec3f velocity, s32 waypointIndex,
199 s32 someMultiplierTheSequel, f32 speed);
201void init_vehicles_trains(size_t, size_t, f32);
203void update_vehicle_trains(void);
205
206void func_80013054(void);
208void init_vehicles_ferry(void);
212f32 func_80013C74(s16, s16);
214void handle_vehicle_interactions(s32, Player*, VehicleStuff*, f32, f32, s32, u32);
215
216f32 player_track_position_factor_vehicle(s16, f32, s16);
218void init_vehicles_box_trucks(void);
226void init_vehicles_trucks(void);
230void init_vehicles_cars(void);
231void update_vehicle_cars(void);
234void func_80014D30(s32, s32);
235void func_80014DE4(s32);
236f32 func_80014EE4(f32, s32);
237
239void func_8001530C(void);
240void func_80015314(s32, f32, s32);
242void func_80015544(s32, f32, s32, s32);
244void func_80015A9C(s32, f32, s32, s16);
245void func_80015C94(Camera*, Player*, s32, s32);
246
247void func_800162CC(s32, f32, s32, s16);
248void func_80016494(Camera*, Player*, s32, s32);
249void func_80016C3C(s32, f32, s32);
250
251void func_80017720(s32, f32, s32, s16);
252void func_800178F4(Camera*, Player*, s32, s32);
253void func_80017F10(s32, f32, s32, s16);
254
255void func_800180F0(Camera*, Player*, s32, s32);
256void func_80018718(s32, f32, s32, s16);
257void func_800188F4(Camera*, Player*, s32, s32);
258
259void func_80019118(s32, f32, s32, s16);
261void func_8001968C(void);
262void func_8001969C(s32, f32, s32, s16);
264void func_80019890(s32, s32);
265void func_80019B50(s32, u16);
266void func_80019C50(s32);
267void func_80019D2C(Camera*, Player*, s32);
268void func_80019DE4(void);
269void func_80019DF4(void);
270void func_80019E58(void);
271void func_80019ED0(void);
272void func_80019FB4(s32);
273
274void func_8001A0A4(u16*, Camera*, Player*, s8, s32);
275void func_8001A0DC(u16*, Camera*, Player*, s8, s32);
276void func_8001A124(s32, s32);
277s32 func_8001A310(s32, s32);
278void func_8001A348(s32, f32, s32);
279void func_8001A3D8(s32, f32, s32);
280void func_8001A450(s32, s32, s32);
281void func_8001A518(s32, s32, s32);
282void func_8001A588(u16*, Camera*, Player*, s8, s32);
283void func_8001AAAC(s16, s16, s16);
284void func_8001AB00(void);
285void cpu_decisions_branch_item(s32, s16*, s32);
288void cpu_use_item_strategy(s32);
289
290void func_8001BE78(void);
291
292void func_8001C05C(void);
293void func_8001C14C(void);
294void func_8001C42C(void);
295
296/* This is where I'd put my static data, if I had any */
297
298extern Collision D_80162E70;
299extern s16 D_80162EB0; // Possibly a float.
300extern s16 D_80162EB2; // possibly [3]
302extern s16 D_80162F10[];
303extern s16 D_80162F50[];
305extern Vec3f D_80162FB0;
306extern Vec3f D_80162FC0;
307extern s16 gTrainSmokeTimer;
308extern s16 D_80162FD0;
309extern f32 gCourseCompletionPercentByRank[]; // D_80162FD8
310extern s16 D_80162FF8[];
311extern s16 D_80163010[];
312extern f32 cpu_TargetSpeed[];
313extern s16 gPreviousAngleSteering[];
314extern f32 D_80163090[];
315extern bool gIsPlayerInCurve[];
316extern u16 gCurrentNearestPathPoint;
317extern s16 gIsPlayerNewPathPoint;
318extern s16 D_801630E8[];
319extern s16 gFerrySmokeTimer;
320extern s32 D_80163100[];
321extern s32 D_80163128[];
322extern s32 D_80163150[];
323extern f32 gPreviousPlayerAiOffsetX[];
324extern f32 gPreviousPlayerAiOffsetZ[];
326extern s32 D_801631CC;
327extern u16 D_801631E0[];
328extern u16 D_801631F8[];
329extern f32 gCurrentCpuTargetSpeed;
330extern f32 gPreviousCpuTargetSpeed[];
331extern s32 D_80163238;
332extern u16 D_80163240[];
333extern u16 gWrongDirectionCounter[];
334extern u16 gIsPlayerWrongDirection[];
335extern s32 gPreviousLapProgressScore[];
337extern u16 gCurrentCPUBehaviourId[];
338extern u16 gPreviousCPUBehaviourId[];
339extern u16 cpu_BehaviourState[];
340
342
343extern s16 sPlayerAngle[];
344extern u16 D_80163330[];
345extern u16 D_80163344[];
346extern u16 D_80163348[];
347extern u16 D_8016334C[];
348extern u16 gSpeedCPUBehaviour[];
349
351
352extern s32 gIncrementUpdatePlayer;
353extern s32 D_8016337C;
354extern s16 gCurrentPlayerLookAhead[];
355extern s16 D_80163398[];
356extern s16 D_801633B0[];
357extern s16 D_801633C8[];
358extern s16 D_801633E0[];
359extern s16 D_801633F8[];
360extern s16 D_80163410[];
361extern f32 D_80163418[];
362extern f32 D_80163428[];
363extern f32 D_80163438[];
364extern f32 gPreviousPlayerZ[];
365extern s16 gBestRankedHumanPlayer;
366// 0 or 1, only 1 when when in extra (mirror) mode
367extern s16 gIsInExtra;
368extern s16 D_8016347C;
369extern s16 D_8016347E;
370extern s32 D_80163480;
371extern s32 D_80163484;
372extern s32 D_80163488;
373extern s16 D_8016348C;
374extern s16 D_801634C0[];
375extern s16 bStopAICrossing[];
376extern s16 D_801634EC;
377extern s32 D_801634F0;
378extern s32 D_801634F4;
381extern s32 gVehicle2DPathSize;
383extern size_t gVehiclePathSize;
384extern u16 isCrossingTriggeredByIndex[];
385extern u16 sCrossingActiveTimer[];
386extern s32 D_80163DD8[];
389extern s16 D_80164358;
390extern s16 D_8016435A;
391extern s16 D_8016435C;
392extern s16 gGPCurrentRacePlayerIdByRank[]; // D_80164360
393extern s16 D_80164378[];
394extern s32 gLapCountByPlayerId[]; // D_80164390
395extern s32 gGPCurrentRaceRankByPlayerId[]; // D_801643B8
398extern s16 gGetPlayerByCharacterId[];
399extern s32 D_8016448C;
400extern f32 D_80164498[];
401extern f32 gLapCompletionPercentByPlayerId[]; // D_801644A8
402extern f32 gCourseCompletionPercentByPlayerId[]; // D_801644D0
403extern f32 gPlayerPathY[];
404extern s16 D_80164538[];
405extern s32 D_801645D0[];
406extern s32 D_801645E8[];
407extern f32 D_801645F8[];
408extern s32 D_80164608[];
409extern f32 D_80164618[];
410extern s32 D_80164628[];
411extern f32 D_80164638[];
412extern f32 D_80164648[];
413extern f32 D_80164658[];
414extern s16 D_80164670[];
415extern s16 D_80164678[];
416extern s16 D_80164680[];
417extern f32 D_80164688[];
418extern f32 D_80164698;
419extern f32 D_8016469C;
420extern f32 D_801646A0;
421extern s16 D_801646C0[];
422extern u32 D_801646C8;
423extern u16 D_801646CC;
425
426// See bss_80005FD0.s
428extern s32 D_8016448C;
429extern u16 D_801637BE;
430extern u16 D_80163E2A;
431
432#define SEVERE_WRONG_DIRECTION_MIN 136
433#define SEVERE_WRONG_DIRECTION_MAX 225
434#define SEVERE_CORRECT_DIRECTION_MIN 45
435#define SEVERE_CORRECT_DIRECTION_MAX 316
436#define WRONG_DIRECTION_FRAMES_LIMIT 5
437
438// extern Gfx D_0D0076F8[];
439
440#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:57
s16 D_80162F50[30]
Definition code_80005FD0.c:58
f32 gLapCompletionPercentByPlayerId[10]
Definition code_80005FD0.c:183
s32 D_80163DD8[4]
Definition code_80005FD0.c:162
u16 gCurrentCPUBehaviourId[12]
Definition code_80005FD0.c:108
f32 gCurrentCpuTargetSpeed
Definition code_80005FD0.c:100
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:106
Collision D_80162E70
Definition code_80005FD0.c:48
s32 D_80163150[10]
Definition code_80005FD0.c:89
f32 gPreviousPlayerZ[10]
Definition code_80005FD0.c:133
s16 gIsPlayerNewPathPoint
Definition code_80005FD0.c:84
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:114
s16 D_80163010[12]
Definition code_80005FD0.c:77
Vec3f D_80162FC0
Definition code_80005FD0.c:65
f32 D_80164638[NUM_CAMERAS]
Definition code_80005FD0.c:203
CPUBehaviour * sCurrentCPUBehaviour
Definition code_80005FD0.c:107
u16 D_801631E0[12]
Definition code_80005FD0.c:98
u16 gPreviousCPUBehaviourId[12]
Definition code_80005FD0.c:109
Vec3f D_80162FB0
Definition code_80005FD0.c:64
s16 gBestRankedHumanPlayer
Definition code_80005FD0.c:134
u16 gIsPlayerWrongDirection[12]
Definition code_80005FD0.c:105
s16 D_801646C0[NUM_CAMERAS]
Definition code_80005FD0.c:223
s32 D_80163100[10]
Definition code_80005FD0.c:87
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:102
f32 cpu_TargetSpeed[10]
Definition code_80005FD0.c:78
u16 gCurrentNearestPathPoint
Definition code_80005FD0.c:83
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:81
TrackPathPoint * gVehicle2DPathPoint
Definition code_80005FD0.c:150
s32 gGPCurrentRaceRankByPlayerIdDup[10]
Definition code_80005FD0.c:175
s16 D_80162EB2
Definition code_80005FD0.c:50
f32 D_80163418[4]
Definition code_80005FD0.c:128
f32 gPreviousPlayerAiOffsetX[10]
Definition code_80005FD0.c:90
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:111
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:110
f32 gPreviousCpuTargetSpeed[10]
Definition code_80005FD0.c:101
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
f32 D_8016469C
Definition code_80005FD0.c:212
f32 D_80164498[4]
Definition code_80005FD0.c:182
s32 D_801631CC
Definition code_80005FD0.c:93
s16 D_801630E8[10]
Definition code_80005FD0.c:85
s16 D_80162FD0
Definition code_80005FD0.c:68
u16 D_80163240[12]
Definition code_80005FD0.c:103
u16 D_801631F8[10]
Definition code_80005FD0.c:99
s32 D_801634F4
Definition code_80005FD0.c:148
s16 D_801633E0[12]
Definition code_80005FD0.c:125
f32 gPreviousPlayerAiOffsetZ[10]
Definition code_80005FD0.c:91
CPUBehaviour * gCoursesCPUBehaviour[NUM_TRACKS - 1]
Definition code_80005FD0.c:52
f32 gCourseCompletionPercentByRank[NUM_PLAYERS]
Definition code_80005FD0.c:69
u16 D_80163348[2]
Definition code_80005FD0.c:115
f32 gPlayerPathY[10]
Definition code_80005FD0.c:186
u16 sCrossingActiveTimer[NUM_CROSSINGS]
Definition code_80005FD0.c:156
s16 gTrainSmokeTimer
Definition code_80005FD0.c:66
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:82
u16 D_80163330[10]
Definition code_80005FD0.c:113
u16 gWrongDirectionCounter[12]
Definition code_80005FD0.c:104
f32 D_80164688[NUM_CAMERAS]
Definition code_80005FD0.c:210
s16 D_80162FF8[12]
Definition code_80005FD0.c:76
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:117
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
s32 D_8016337C
Definition code_80005FD0.c:120
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:92
s32 D_80163128[10]
Definition code_80005FD0.c:88
s16 gFerrySmokeTimer
Definition code_80005FD0.c:86
Vec3f gOffsetPosition
Definition code_80005FD0.c:63
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:79
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:116
s16 D_80162EB0
Definition code_80005FD0.c:49
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:119
void func_800188F4(Camera *, Player *, s32, s32)
void func_8001C14C(void)
Definition code_80005FD0.c:7883
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:3360
void generate_train_path(void)
Definition code_80005FD0.c:4395
void calculate_track_boundaries(s32)
Definition code_80005FD0.c:3757
void handle_school_buses_interactions(s32, Player *)
Definition code_80005FD0.c:5308
s16 func_8000D6D0(Vec3f, s16 *, f32, f32, s16, s16)
Definition code_80005FD0.c:2779
void analyze_track_section(s32)
Definition code_80005FD0.c:3859
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:3470
s16 calculate_angle_path(s32, s32)
Definition code_80005FD0.c:3915
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:4227
void init_vehicles_cars(void)
Definition code_80005FD0.c:5345
void func_80015544(s32, f32, s32, s32)
Definition code_80005FD0.c:5584
void generate_player_smoke(void)
Definition code_80005FD0.c:3371
s32 func_8001A310(s32, s32)
Definition code_80005FD0.c:6855
void func_8001A0A4(u16 *, Camera *, Player *, s8, s32)
s32 add_red_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3323
void update_player_track_position_factor_from_cars(s32)
Definition code_80005FD0.c:5369
void cpu_behaviour(s32)
Definition code_80005FD0.c:4340
void func_8000F0E0(void)
Definition code_80005FD0.c:3415
void update_player(s32)
Definition code_80005FD0.c:1604
void func_8001A124(s32, s32)
Definition code_80005FD0.c:6804
void analyse_angle_path(s32)
Definition code_80005FD0.c:3934
void update_player_track_position_factor_from_vehicle(s32, s32, VehicleStuff *)
Definition code_80005FD0.c:5240
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:5336
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:4301
void update_vehicle_tanker_trucks(void)
Definition code_80005FD0.c:5329
void func_8001C05C(void)
Definition code_80005FD0.c:7858
void func_80017F10(s32, f32, s32, s16)
void func_800162CC(s32, f32, s32, s16)
Definition code_80005FD0.c:5780
void init_vehicles_school_buses(void)
Definition code_80005FD0.c:5289
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:4695
void update_player_track_position_factor_from_box_trucks(s32)
Definition code_80005FD0.c:5285
void init_vehicles_box_trucks(void)
Definition code_80005FD0.c:5263
f32 player_track_position_factor_vehicle(s16, f32, s16)
Definition code_80005FD0.c:5201
void func_8001A348(s32, f32, s32)
Definition code_80005FD0.c:6862
f32 func_80009258(s32, f32, f32)
@ SPEED_CPU_BEHAVIOUR_FAST
Definition code_80005FD0.h:350
@ SPEED_CPU_BEHAVIOUR_SLOW
Definition code_80005FD0.h:350
@ SPEED_CPU_BEHAVIOUR_MAX
Definition code_80005FD0.h:350
@ SPEED_CPU_BEHAVIOUR_NORMAL
Definition code_80005FD0.h:350
s32 generate_2d_path(TrackPathPoint *, TrackPathPoint *, s32)
Definition code_80005FD0.c:4140
void init_vehicles_ferry(void)
Definition code_80005FD0.c:4750
void update_vehicle_box_trucks(void)
Definition code_80005FD0.c:5273
s32 update_player_path_selection(s32, s32)
Definition code_80005FD0.c:1344
void func_8001530C(void)
Definition code_80005FD0.c:5520
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:6899
void func_8001577C(Camera *, UNUSED Player *, s32, s32)
void func_8001A0DC(u16 *, Camera *, Player *, s8, s32)
Definition code_80005FD0.c:6799
s32 process_path_data(TrackPathPoint *, TrackPathPoint *)
Definition code_80005FD0.c:4108
void set_places(void)
Definition code_80005FD0.c:725
void func_8001968C(void)
Definition code_80005FD0.c:6511
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:5060
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:3302
void handle_trains_interactions(s32, Player *)
Definition code_80005FD0.c:4635
void func_80019FB4(s32)
Definition code_80005FD0.c:6767
void update_player_track_position_factor_from_buses(s32)
Definition code_80005FD0.c:5313
void analyze_curved_path(s32)
Definition code_80005FD0.c:3946
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:5364
void delete_actor_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3347
void init_players(void)
Definition code_80005FD0.c:3536
void update_player_track_position_factor_from_tanker_truck(s32)
Definition code_80005FD0.c:5341
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:4779
s16 func_8000D24C(f32, f32, f32, s32 *)
Definition code_80005FD0.c:2666
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:3475
void func_80015C94(Camera *, Player *, s32, s32)
void func_8001BE78(void)
Definition code_80005FD0.c:7819
void func_80015A9C(s32, f32, s32, s16)
Definition code_80005FD0.c:5671
void update_vehicle_school_bus(void)
Definition code_80005FD0.c:5301
void func_80016C3C(s32, f32, s32)
void calculate_camera_up_vector(Camera *, s32)
Definition code_80005FD0.c:5489
f32 func_80013C74(s16, s16)
Definition code_80005FD0.c:4961
void func_80019E58(void)
Definition code_80005FD0.c:6738
void func_8000F124(void)
Definition code_80005FD0.c:3423
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:7044
s32 add_blue_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3339
void func_80019D2C(Camera *, Player *, s32)
Definition code_80005FD0.c:6705
void clear_expired_strategies(CpuItemStrategyData *)
Definition code_80005FD0.c:7139
void update_player_rankings(void)
Definition code_80005FD0.c:816
void func_80019B50(s32, u16)
Definition code_80005FD0.c:6619
void update_vehicle_cars(void)
Definition code_80005FD0.c:5357
void func_80019DE4(void)
Definition code_80005FD0.c:6722
void func_80019ED0(void)
Definition code_80005FD0.c:6749
u16 D_80163E2A
s32 add_green_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3331
void func_80014D30(s32, s32)
Definition code_80005FD0.c:5373
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:4915
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:4559
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:6726
void handle_box_trucks_interactions(s32, Player *)
Definition code_80005FD0.c:5280
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:4543
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:4233
f32 calculate_track_curvature(s32, u16)
Definition code_80005FD0.c:3807
@ CPU_BEHAVIOUR_STATE_RUNNING
Definition code_80005FD0.h:341
@ CPU_BEHAVIOUR_STATE_NONE
Definition code_80005FD0.h:341
@ CPU_BEHAVIOUR_STATE_START
Definition code_80005FD0.h:341
void generate_ferry_path(void)
Definition code_80005FD0.c:4410
f32 func_80014EE4(f32, s32)
Definition code_80005FD0.c:5410
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:4426
void copy_courses_cpu_behaviour(void)
Definition code_80005FD0.c:4214
void func_8001A450(s32, s32, s32)
Definition code_80005FD0.c:6883
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:4880
void update_vehicle_follow_path_point(VehicleStuff *)
Definition code_80005FD0.c:4994
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:4729
void func_80014DE4(s32)
Definition code_80005FD0.c:5383
void func_8001A3D8(s32, f32, s32)
Definition code_80005FD0.c:6872
void func_80019C50(s32)
Definition code_80005FD0.c:6652
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 cpu_use_item_strategy(s32)
Definition code_80005FD0.c:7146
void func_8001ABE0(s32, CpuItemStrategyData *)
void func_8001C42C(void)
Definition code_80005FD0.c:7933
void init_vehicles_trains(size_t, size_t, f32)
Definition code_80005FD0.c:4472
s16 func_8000D33C(f32, f32, f32, s16, s32)
Definition code_80005FD0.c:2685
void set_bomb_kart_spawn_positions(void)
Definition code_80005FD0.c:2980
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:3035
void load_track_path(s32)
Definition code_80005FD0.c:3706
void func_80019890(s32, s32)
Definition code_80005FD0.c:6553
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:4221
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:5317
void set_vehicle_pos_path_point(TrainCarStuff *, TrackPathPoint *, u16)
Definition code_80005FD0.c:4449
void func_8001AB00(void)
Definition code_80005FD0.c:7052
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