Mario Kart 64
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;
38} CpuItemStrategyData; // size = 0x10
39
40typedef struct {
41 s16 unk0;
42 s16 unk2;
43 s16 unk4;
44 u16 unk6;
46
47typedef struct {
48 s16 x;
49 s16 z;
50} Path2D;
51
98
99/* Function Prototypes */
101
102s32 is_collide_with_vehicle(f32, f32, f32, f32, f32, f32, f32, f32);
106void set_places(void);
107
108void update_player_rankings(void);
110s32 is_path_point_in_range(u16, u16, u16, u16, u16);
111void func_80007D04(s32, Player*);
112void func_80007FA4(s32, Player*, f32);
113
114void regulate_cpu_speed(s32, f32, Player*);
115bool func_800088D8(s32, s16, s16);
116void set_current_path(s32);
117s32 update_player_path_selection(s32, s32);
119
120void yoshi_valley_cpu_path(s32);
122f32 func_80009258(s32, f32, f32);
124void update_vehicles(void);
125void play_cpu_sound_effect(s32, Player*);
127void update_player(s32);
128
129void func_8000B140(s32);
130s32 are_in_curve(s32, u16);
131bool is_far_from_path(s32);
132f32 calculate_track_position_factor(f32, f32, u16, s32);
133void update_player_position_factor(s32, u16, s32);
134void calculate_track_offset_position(u16, f32, f32, s16);
135void set_track_offset_position(u16, f32, s16);
136s16 func_8000BD94(f32, f32, f32, s32);
137
138s16 find_closest_path_point_track_section(f32, f32, f32, u16, s32*);
139s16 update_path_index_with_track(f32, f32, f32, s16, s32, u16);
140s16 update_path_index(f32, f32, f32, s16, s32);
141void tweak_path_index_wario_stadium(f32, f32, f32, s16*, s32);
142void adjust_path_at_start_line(f32, f32, f32, s16*, s32);
143s16 update_path_index_track_section(f32, f32, f32, Player*, s32, s32*);
144s16 update_player_path(f32, f32, f32, s16, Player*, s32, s32);
145
146s16 find_closest_vehicles_path_point(f32, f32, f32, s16);
147s16 func_8000D24C(f32, f32, f32, s32*);
148s16 func_8000D2B4(f32, f32, f32, s16, s32);
149s16 func_8000D33C(f32, f32, f32, s16, s32);
152s16 func_8000D6D0(Vec3f, s16*, f32, f32, s16, s16);
153s16 func_8000D940(Vec3f, s16*, f32, f32, s16);
156void func_8000DF8C(s32);
157
163void func_8000EEDC(void);
164void generate_player_smoke(void);
165
166void func_8000F0E0(void);
167void func_8000F124(void);
168void clear_path_point(TrackPathPoint*, size_t);
169void init_course_path_point(void);
170void init_players(void);
171
172void load_track_path(s32);
174f32 calculate_track_curvature(s32, u16);
175void analyze_track_section(s32);
176s16 calculate_angle_path(s32, s32);
177void analyse_angle_path(s32);
178void analyze_curved_path(s32);
179f32 func_80010F40(f32, f32, f32, s32, s32);
180f32 func_80010FA0(f32, f32, f32, s32, s32);
181
187void reset_cpu_behaviour(s32);
188void cpu_behaviour_start(s32, Player*);
189void cpu_behaviour_end(s32, Player*);
190void cpu_behaviour(s32);
191void func_80011EC0(s32, Player*, s32, u16);
192
193void generate_train_path(void);
194void generate_ferry_path(void);
195void spawn_vehicle_on_road(Vec3f position, Vec3s rotation, Vec3f velocity, s32 waypointIndex,
196 s32 someMultiplierTheSequel, f32 speed);
198void init_vehicles_trains(size_t, size_t, f32);
200void update_vehicle_trains(void);
202
203void func_80013054(void);
205void init_vehicles_ferry(void);
209f32 func_80013C74(s16, s16);
211void handle_vehicle_interactions(s32, Player*, VehicleStuff*, f32, f32, s32, u32);
212
213f32 player_track_position_factor_vehicle(s16, f32, s16);
215void init_vehicles_box_trucks(void);
223void init_vehicles_trucks(void);
227void init_vehicles_cars(void);
228void update_vehicle_cars(void);
231void func_80014D30(s32, s32);
232void func_80014DE4(s32);
233f32 func_80014EE4(f32, s32);
234
236void func_8001530C(void);
237void func_80015314(s32, f32, s32);
239void func_80015544(s32, f32, s32, s32);
241void func_80015A9C(s32, f32, s32, s16);
242void func_80015C94(Camera*, Player*, s32, s32);
243
244void func_800162CC(s32, f32, s32, s16);
245void func_80016494(Camera*, Player*, s32, s32);
246void func_80016C3C(s32, f32, s32);
247
248void func_80017720(s32, f32, s32, s16);
249void func_800178F4(Camera*, Player*, s32, s32);
250void func_80017F10(s32, f32, s32, s16);
251
252void func_800180F0(Camera*, Player*, s32, s32);
253void func_80018718(s32, f32, s32, s16);
254void func_800188F4(Camera*, Player*, s32, s32);
255
256void func_80019118(s32, f32, s32, s16);
258void func_8001968C(void);
259void func_8001969C(s32, f32, s32, s16);
261void func_80019890(s32, s32);
262void func_80019B50(s32, u16);
263void func_80019C50(s32);
264void func_80019D2C(Camera*, Player*, s32);
265void func_80019DE4(void);
266void func_80019DF4(void);
267void func_80019E58(void);
268void func_80019ED0(void);
269void func_80019FB4(s32);
270
271void func_8001A0A4(u16*, Camera*, Player*, s8, s32);
272void func_8001A0DC(u16*, Camera*, Player*, s8, s32);
273void func_8001A124(s32, s32);
274s32 func_8001A310(s32, s32);
275void func_8001A348(s32, f32, s32);
276void func_8001A3D8(s32, f32, s32);
277void func_8001A450(s32, s32, s32);
278void func_8001A518(s32, s32, s32);
279void func_8001A588(u16*, Camera*, Player*, s8, s32);
280void func_8001AAAC(s16, s16, s16);
281void func_8001AB00(void);
282void cpu_decisions_branch_item(s32, s16*, s32);
285void cpu_use_item_strategy(s32);
286
287void func_8001BE78(void);
288
289void func_8001C05C(void);
290void func_8001C14C(void);
291void render_bomb_karts_wrap(s32);
292void func_8001C42C(void);
293
294/* This is where I'd put my static data, if I had any */
295
296extern Collision D_80162E70;
297extern s16 D_80162EB0; // Possibly a float.
298extern s16 D_80162EB2; // possibly [3]
300extern s16 D_80162F10[];
301extern s16 D_80162F50[];
303extern Vec3f D_80162FB0;
304extern Vec3f D_80162FC0;
305extern s16 gTrainSmokeTimer;
306extern s16 D_80162FD0;
307extern f32 gCourseCompletionPercentByRank[]; // D_80162FD8
308extern s16 D_80162FF8[];
309extern s16 D_80163010[];
310extern f32 cpu_TargetSpeed[];
311extern s16 gPreviousAngleSteering[];
312extern f32 D_80163090[];
313extern bool gIsPlayerInCurve[];
314extern u16 gCurrentNearestPathPoint;
315extern s16 gIsPlayerNewPathPoint;
316extern s16 D_801630E8[];
317extern s16 gFerrySmokeTimer;
318extern s32 D_80163100[];
319extern s32 D_80163128[];
320extern s32 D_80163150[];
321extern f32 gPreviousPlayerAiOffsetX[];
322extern f32 gPreviousPlayerAiOffsetZ[];
324extern s32 D_801631CC;
325extern u16 D_801631E0[];
326extern u16 D_801631F8[];
327extern f32 gCurrentCpuTargetSpeed;
328extern f32 gPreviousCpuTargetSpeed[];
329extern s32 D_80163238;
330extern u16 D_80163240[];
331extern u16 gWrongDirectionCounter[];
332extern u16 gIsPlayerWrongDirection[];
333extern s32 gPreviousLapProgressScore[];
335extern u16 gCurrentCPUBehaviourId[];
336extern u16 gPreviousCPUBehaviourId[];
337extern u16 cpu_BehaviourState[];
338
340
341extern s16 sPlayerAngle[];
342extern u16 D_80163330[];
343extern u16 D_80163344[];
344extern u16 D_80163348[];
345extern u16 D_8016334C[];
346extern u16 gSpeedCPUBehaviour[];
347
349
350extern s32 gIncrementUpdatePlayer;
351extern s32 D_8016337C;
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 gVehicle2DPathLength;
380extern u16 isCrossingTriggeredByIndex[];
381extern u16 sCrossingActiveTimer[];
382extern s32 D_80163DD8[];
385extern s16 D_80164358;
386extern s16 D_8016435A;
387extern s16 D_8016435C;
388extern s16 gGPCurrentRacePlayerIdByRank[]; // D_80164360
389extern s16 D_80164378[];
390extern s32 gLapCountByPlayerId[]; // D_80164390
391extern s32 gGPCurrentRaceRankByPlayerId[]; // D_801643B8
394extern s16 gGetPlayerByCharacterId[];
395extern s32 D_8016448C;
396extern f32 D_80164498[];
397extern f32 gLapCompletionPercentByPlayerId[]; // D_801644A8
398extern f32 gCourseCompletionPercentByPlayerId[]; // D_801644D0
399extern f32 gPlayerPathY[];
400extern s16 D_80164538[];
401extern s32 D_801645D0[];
402extern s32 D_801645E8[];
403extern f32 D_801645F8[];
404extern s32 D_80164608[];
405extern f32 D_80164618[];
406extern s32 D_80164628[];
407extern f32 D_80164638[];
408extern f32 D_80164648[];
409extern f32 D_80164658[];
410extern s16 D_80164670[];
411extern s16 D_80164678[];
412extern s16 D_80164680[];
413extern f32 D_80164688[];
414extern f32 D_80164698;
415extern f32 D_8016469C;
416extern f32 D_801646A0;
417extern s16 D_801646C0[];
418extern u32 D_801646C8;
419extern u16 D_801646CC;
421
422// See bss_80005FD0.s
424extern s32 D_8016448C;
425extern u16 D_801637BE;
426extern u16 D_80163E2A;
427
428#define SEVERE_WRONG_DIRECTION_MIN 136
429#define SEVERE_WRONG_DIRECTION_MAX 225
430#define SEVERE_CORRECT_DIRECTION_MIN 45
431#define SEVERE_CORRECT_DIRECTION_MAX 316
432#define WRONG_DIRECTION_FRAMES_LIMIT 5
433
434// extern Gfx D_0D0076F8[];
435
436#endif
f32 D_80164498[]
Definition code_80005FD0.c:177
s16 D_80164678[]
Definition code_80005FD0.c:203
s32 gLapCountByPlayerId[10]
Definition code_80005FD0.c:167
s16 D_80163410[4]
Definition code_80005FD0.c:124
s16 D_80162F10[30]
Definition code_80005FD0.c:54
s16 D_80162F50[30]
Definition code_80005FD0.c:55
f32 gLapCompletionPercentByPlayerId[10]
Definition code_80005FD0.c:178
s32 D_80163DD8[4]
Definition code_80005FD0.c:157
u16 gCurrentCPUBehaviourId[12]
Definition code_80005FD0.c:105
f32 gCurrentCpuTargetSpeed
Definition code_80005FD0.c:97
s32 D_8016448C
Definition code_80005FD0.c:175
s32 gPreviousLapProgressScore[10]
Definition code_80005FD0.c:103
Collision D_80162E70
Definition code_80005FD0.c:45
s32 D_80163150[10]
Definition code_80005FD0.c:86
f32 gPreviousPlayerZ[10]
Definition code_80005FD0.c:130
f32 D_80164658[4]
Definition code_80005FD0.c:200
s16 gIsPlayerNewPathPoint
Definition code_80005FD0.c:81
f32 D_801645F8[4]
Definition code_80005FD0.c:194
s16 D_80164538[12]
Definition code_80005FD0.c:182
s32 D_80164608[4]
Definition code_80005FD0.c:195
u16 D_80163344[2]
Definition code_80005FD0.c:111
CPUBehaviour * gCoursesCPUBehaviour[NUM_COURSES - 1]
Definition code_80005FD0.c:49
s16 D_80163010[12]
Definition code_80005FD0.c:74
Vec3f D_80162FC0
Definition code_80005FD0.c:62
CPUBehaviour * sCurrentCPUBehaviour
Definition code_80005FD0.c:104
u16 D_801631E0[12]
Definition code_80005FD0.c:95
s32 D_801645E8[4]
Definition code_80005FD0.c:193
s32 gVehicle2DPathLength
Definition code_80005FD0.c:148
u16 gPreviousCPUBehaviourId[12]
Definition code_80005FD0.c:106
s16 D_80164680[4]
Definition code_80005FD0.c:204
Vec3f D_80162FB0
Definition code_80005FD0.c:61
s16 gBestRankedHumanPlayer
Definition code_80005FD0.c:131
u16 gIsPlayerWrongDirection[12]
Definition code_80005FD0.c:102
s32 D_80163100[10]
Definition code_80005FD0.c:84
s16 gCurrentPlayerLookAhead[12]
Definition code_80005FD0.c:118
s32 D_80163238
Definition code_80005FD0.c:99
f32 cpu_TargetSpeed[10]
Definition code_80005FD0.c:75
u16 gCurrentNearestPathPoint
Definition code_80005FD0.c:80
f32 D_80163428[4]
Definition code_80005FD0.c:126
s16 D_8016435A
Definition code_80005FD0.c:163
f32 D_80163090[10]
Definition code_80005FD0.c:78
s32 gGPCurrentRaceRankByPlayerIdDup[10]
Definition code_80005FD0.c:170
s16 D_80162EB2
Definition code_80005FD0.c:47
f32 D_80163418[4]
Definition code_80005FD0.c:125
f32 D_80164688[4]
Definition code_80005FD0.c:205
s32 D_801645D0[4]
Definition code_80005FD0.c:191
s32 D_80164628[4]
Definition code_80005FD0.c:197
f32 gPreviousPlayerAiOffsetX[10]
Definition code_80005FD0.c:87
s16 D_801633F8[12]
Definition code_80005FD0.c:123
f32 D_80163438[4]
Definition code_80005FD0.c:127
s16 sPlayerAngle[12]
Definition code_80005FD0.c:108
u16 isCrossingTriggeredByIndex[NUM_CROSSINGS]
Definition code_80005FD0.c:150
u16 cpu_BehaviourState[12]
Definition code_80005FD0.c:107
f32 gPreviousCpuTargetSpeed[10]
Definition code_80005FD0.c:98
s16 gGPCurrentRacePlayerIdByRank[12]
Definition code_80005FD0.c:165
s32 D_801634F0
Definition code_80005FD0.c:144
f32 D_80164638[4]
Definition code_80005FD0.c:198
s16 D_801633C8[12]
Definition code_80005FD0.c:121
struct unexpiredActors gUnexpiredActorsList[8]
Definition code_80005FD0.c:160
s16 D_80164670[4]
Definition code_80005FD0.c:202
f32 D_8016469C
Definition code_80005FD0.c:207
s32 D_801631CC
Definition code_80005FD0.c:90
s16 D_801630E8[10]
Definition code_80005FD0.c:82
s16 D_80162FD0
Definition code_80005FD0.c:65
u16 D_80163240[12]
Definition code_80005FD0.c:100
u16 D_801631F8[10]
Definition code_80005FD0.c:96
s32 D_801634F4
Definition code_80005FD0.c:145
s16 D_801633E0[12]
Definition code_80005FD0.c:122
f32 gPreviousPlayerAiOffsetZ[10]
Definition code_80005FD0.c:88
Path2D * gVehicle2DPathPoint
Definition code_80005FD0.c:147
f32 gCourseCompletionPercentByRank[NUM_PLAYERS]
Definition code_80005FD0.c:66
u16 D_80163348[2]
Definition code_80005FD0.c:112
f32 gPlayerPathY[10]
Definition code_80005FD0.c:181
u16 sCrossingActiveTimer[NUM_CROSSINGS]
Definition code_80005FD0.c:151
s16 gTrainSmokeTimer
Definition code_80005FD0.c:63
s16 gIsInExtra
Definition code_80005FD0.c:132
s16 D_8016348C
Definition code_80005FD0.c:138
TrackPositionFactorInstruction gPlayerTrackPositionFactorInstruction[10]
Definition code_80005FD0.c:146
s32 gGPCurrentRaceRankByPlayerId[10]
Definition code_80005FD0.c:168
bool gIsPlayerInCurve[10]
Definition code_80005FD0.c:79
u16 D_80163330[10]
Definition code_80005FD0.c:110
u16 gWrongDirectionCounter[12]
Definition code_80005FD0.c:101
s16 D_80162FF8[12]
Definition code_80005FD0.c:73
f32 D_80164618[4]
Definition code_80005FD0.c:196
s16 D_801633B0[12]
Definition code_80005FD0.c:120
u16 gSpeedCPUBehaviour[12]
Definition code_80005FD0.c:114
s16 D_8016347E
Definition code_80005FD0.c:134
s16 D_80164358
Definition code_80005FD0.c:162
s16 bStopAICrossing[10]
Definition code_80005FD0.c:142
s16 D_8016435C
Definition code_80005FD0.c:164
s32 D_8016337C
Definition code_80005FD0.c:117
f32 D_801646A0
Definition code_80005FD0.c:208
u32 D_801646C8
Definition code_80005FD0.c:219
f32 gCourseCompletionPercentByPlayerId[10]
Definition code_80005FD0.c:179
s16 gGetPlayerByCharacterId[10]
Definition code_80005FD0.c:174
CpuItemStrategyData cpu_ItemStrategy[8]
Definition code_80005FD0.c:161
s16 D_801646C0[4]
Definition code_80005FD0.c:218
s16 sVehicleSoundRenderCounter
Definition code_80005FD0.c:89
s32 D_80163128[10]
Definition code_80005FD0.c:85
s16 gFerrySmokeTimer
Definition code_80005FD0.c:83
Vec3f gOffsetPosition
Definition code_80005FD0.c:60
f32 D_80164698
Definition code_80005FD0.c:206
s16 D_801634C0[12]
Definition code_80005FD0.c:141
s32 D_80163484
Definition code_80005FD0.c:136
s32 gPreviousGPCurrentRaceRankByPlayerId[10]
Definition code_80005FD0.c:169
s16 D_801634EC
Definition code_80005FD0.c:143
s16 gPreviousAngleSteering[12]
Definition code_80005FD0.c:76
UnkStruct_46D0 D_801646D0[4]
Definition code_80005FD0.c:221
s32 D_80163480
Definition code_80005FD0.c:135
u16 D_801646CC
Definition code_80005FD0.c:220
u16 D_8016334C[8]
Definition code_80005FD0.c:113
s16 D_80162EB0
Definition code_80005FD0.c:46
s16 D_80163398[12]
Definition code_80005FD0.c:119
f32 D_80164648[4]
Definition code_80005FD0.c:199
s16 D_80164378[12]
Definition code_80005FD0.c:166
s32 D_80163488
Definition code_80005FD0.c:137
s16 D_8016347C
Definition code_80005FD0.c:133
s32 gIncrementUpdatePlayer
Definition code_80005FD0.c:116
void func_800188F4(Camera *, Player *, s32, s32)
void func_8001C14C(void)
Definition code_80005FD0.c:7775
void detect_wrong_player_direction(s32, Player *)
Definition code_80005FD0.c:684
s16 update_path_index(f32, f32, f32, s16, s32)
Definition code_80005FD0.c:2476
void func_8000EEDC(void)
Definition code_80005FD0.c:3343
void generate_train_path(void)
Definition code_80005FD0.c:4377
void calculate_track_boundaries(s32)
Definition code_80005FD0.c:3739
void handle_school_buses_interactions(s32, Player *)
Definition code_80005FD0.c:5276
s16 func_8000D6D0(Vec3f, s16 *, f32, f32, s16, s16)
Definition code_80005FD0.c:2774
void analyze_track_section(s32)
Definition code_80005FD0.c:3841
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:2669
void clear_path_point(TrackPathPoint *, size_t)
Definition code_80005FD0.c:3453
s16 calculate_angle_path(s32, s32)
Definition code_80005FD0.c:3897
s16 find_closest_path_point_track_section(f32, f32, f32, u16, s32 *)
Definition code_80005FD0.c:2336
void reset_cpu_behaviour(s32)
Definition code_80005FD0.c:4209
void init_vehicles_cars(void)
Definition code_80005FD0.c:5313
void func_80015544(s32, f32, s32, s32)
Definition code_80005FD0.c:5552
void generate_player_smoke(void)
Definition code_80005FD0.c:3354
s32 func_8001A310(s32, s32)
Definition code_80005FD0.c:6788
void func_8001A0A4(u16 *, Camera *, Player *, s8, s32)
s32 add_red_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3306
void update_player_track_position_factor_from_cars(s32)
Definition code_80005FD0.c:5337
void cpu_behaviour(s32)
Definition code_80005FD0.c:4322
void func_8000F0E0(void)
Definition code_80005FD0.c:3398
void update_player(s32)
Definition code_80005FD0.c:1599
void func_8001A124(s32, s32)
Definition code_80005FD0.c:6737
void analyse_angle_path(s32)
Definition code_80005FD0.c:3916
void update_player_track_position_factor_from_vehicle(s32, s32, VehicleStuff *)
Definition code_80005FD0.c:5208
void render_bomb_karts_wrap(s32)
Definition code_80005FD0.c:7825
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:5304
void func_80015314(s32, f32, s32)
bool func_800088D8(s32, s16, s16)
Definition code_80005FD0.c:1192
void cpu_behaviour_end(s32, Player *)
Definition code_80005FD0.c:4283
void update_vehicle_tanker_trucks(void)
Definition code_80005FD0.c:5297
void func_8001C05C(void)
Definition code_80005FD0.c:7750
void func_80017F10(s32, f32, s32, s16)
void func_800162CC(s32, f32, s32, s16)
Definition code_80005FD0.c:5748
void init_vehicles_school_buses(void)
Definition code_80005FD0.c:5257
u16 D_801637BE
s16 get_angle_between_path(Vec3f, Vec3f)
Definition code_80005FD0.c:562
s16 func_8000D940(Vec3f, s16 *, f32, f32, s16)
Definition code_80005FD0.c:2840
void func_80013054(void)
Definition code_80005FD0.c:4663
void update_player_track_position_factor_from_box_trucks(s32)
Definition code_80005FD0.c:5253
void init_vehicles_box_trucks(void)
Definition code_80005FD0.c:5231
f32 player_track_position_factor_vehicle(s16, f32, s16)
Definition code_80005FD0.c:5169
void func_8001A348(s32, f32, s32)
Definition code_80005FD0.c:6795
f32 func_80009258(s32, f32, f32)
@ SPEED_CPU_BEHAVIOUR_FAST
Definition code_80005FD0.h:348
@ SPEED_CPU_BEHAVIOUR_SLOW
Definition code_80005FD0.h:348
@ SPEED_CPU_BEHAVIOUR_MAX
Definition code_80005FD0.h:348
@ SPEED_CPU_BEHAVIOUR_NORMAL
Definition code_80005FD0.h:348
void init_vehicles_ferry(void)
Definition code_80005FD0.c:4718
void update_vehicle_box_trucks(void)
Definition code_80005FD0.c:5241
s32 update_player_path_selection(s32, s32)
Definition code_80005FD0.c:1339
void func_8001530C(void)
Definition code_80005FD0.c:5488
s16 update_path_index_track_section(f32, f32, f32, Player *, s32, s32 *)
Definition code_80005FD0.c:2548
void func_8001A518(s32, s32, s32)
Definition code_80005FD0.c:6832
void func_8001577C(Camera *, UNUSED Player *, s32, s32)
void func_8001A0DC(u16 *, Camera *, Player *, s8, s32)
Definition code_80005FD0.c:6732
s32 process_path_data(TrackPathPoint *, TrackPathPoint *)
Definition code_80005FD0.c:4090
void set_places(void)
Definition code_80005FD0.c:720
void func_8001968C(void)
Definition code_80005FD0.c:6479
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:5028
void update_cpu_path_completion(s32, Player *)
Definition code_80005FD0.c:1411
void func_8001A588(u16 *, Camera *, Player *, s8, s32)
void set_track_offset_position(u16, f32, s16)
Definition code_80005FD0.c:2261
s32 add_actor_in_unexpired_actor_list(s32, s16)
Definition code_80005FD0.c:3285
void handle_trains_interactions(s32, Player *)
Definition code_80005FD0.c:4603
void func_80019FB4(s32)
Definition code_80005FD0.c:6701
void update_player_track_position_factor_from_buses(s32)
Definition code_80005FD0.c:5281
void analyze_curved_path(s32)
Definition code_80005FD0.c:3928
f32 func_80010F40(f32, f32, f32, s32, s32)
void adjust_position_by_angle(Vec3f, Vec3f, s16)
Definition code_80005FD0.c:595
CpuItemStrategyEnum
Definition code_80005FD0.h:52
@ CPU_STRATEGY_HOLD_GREEN_SHELL
Definition code_80005FD0.h:60
@ CPU_STRATEGY_USE_SUPER_MUSHROOM
Definition code_80005FD0.h:88
@ CPU_STRATEGY_WAIT_NEXT_ITEM
Definition code_80005FD0.h:53
@ CPU_STRATEGY_ITEM_GREEN_SHELL
Definition code_80005FD0.h:59
@ CPU_STRATEGY_HOLD_BLUE_SPINY_SHELL
Definition code_80005FD0.h:96
@ CPU_STRATEGY_ITEM_BANANA_BUNCH
Definition code_80005FD0.h:67
@ CPU_STRATEGY_ITEM_BOO
Definition code_80005FD0.h:81
@ CPU_STRATEGY_HOLD_BANANA
Definition code_80005FD0.h:56
@ CPU_STRATEGY_ITEM_SUPER_MUSHROOM
Definition code_80005FD0.h:87
@ CPU_STRATEGY_WAIT_END_BOO
Definition code_80005FD0.h:82
@ CPU_STRATEGY_WAIT_INIT_BANANA_BUNCH
Definition code_80005FD0.h:68
@ CPU_STRATEGY_ITEM_DOUBLE_MUSHROOM
Definition code_80005FD0.h:85
@ CPU_STRATEGY_ITEM_TRIPLE_MUSHROOM
Definition code_80005FD0.h:86
@ CPU_STRATEGY_ITEM_STAR
Definition code_80005FD0.h:78
@ CPU_STRATEGY_HOLD_FAKE_ITEM_BOX
Definition code_80005FD0.h:72
@ CPU_STRATEGY_ITEM_FAKE_ITEM_BOX
Definition code_80005FD0.h:71
@ CPU_STRATEGY_THROW_BLUE_SPINY_SHELL
Definition code_80005FD0.h:95
@ CPU_STRATEGY_DROP_BANANA
Definition code_80005FD0.h:57
@ CPU_STRATEGY_ITEM_RED_SHELL
Definition code_80005FD0.h:63
@ CPU_STRATEGY_THROW_GREEN_SHELL
Definition code_80005FD0.h:61
@ CPU_STRATEGY_THROW_FAKE_ITEM_BOX
Definition code_80005FD0.h:73
@ CPU_STRATEGY_DROP_BANANA_BUNCH
Definition code_80005FD0.h:69
@ CPU_STRATEGY_END_THUNDERBOLT
Definition code_80005FD0.h:76
@ CPU_STRATEGY_ITEM_THUNDERBOLT
Definition code_80005FD0.h:75
@ CPU_STRATEGY_END_THROW_BANANA
Definition code_80005FD0.h:92
@ CPU_STRATEGY_ITEM_MUSHROOM
Definition code_80005FD0.h:84
@ CPU_STRATEGY_ITEM_BANANA
Definition code_80005FD0.h:55
@ CPU_STRATEGY_HOLD_THROW_BANANA
Definition code_80005FD0.h:91
@ CPU_STRATEGY_END_ITEM_STAR
Definition code_80005FD0.h:79
@ CPU_STRATEGY_THROW_RED_SHELL
Definition code_80005FD0.h:65
@ CPU_STRATEGY_HOLD_RED_SHELL
Definition code_80005FD0.h:64
@ CPU_STRATEGY_ITEM_BLUE_SPINY_SHELL
Definition code_80005FD0.h:94
@ CPU_STRATEGY_THROW_BANANA
Definition code_80005FD0.h:90
void handle_cars_interactions(s32, Player *)
Definition code_80005FD0.c:5332
void delete_actor_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3330
void init_players(void)
Definition code_80005FD0.c:3518
void update_player_track_position_factor_from_tanker_truck(s32)
Definition code_80005FD0.c:5309
s16 update_player_path(f32, f32, f32, s16, Player *, s32, s32)
Definition code_80005FD0.c:2562
void update_player_timer_sound(s32, Player *)
void func_80019118(s32, f32, s32, s16)
void update_vehicle_paddle_boats(void)
Definition code_80005FD0.c:4747
s16 func_8000D24C(f32, f32, f32, s32 *)
Definition code_80005FD0.c:2661
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:3458
void func_80015C94(Camera *, Player *, s32, s32)
void func_8001BE78(void)
Definition code_80005FD0.c:7711
void func_80015A9C(s32, f32, s32, s16)
Definition code_80005FD0.c:5639
void update_vehicle_school_bus(void)
Definition code_80005FD0.c:5269
void func_80016C3C(s32, f32, s32)
void calculate_camera_up_vector(Camera *, s32)
Definition code_80005FD0.c:5457
f32 func_80013C74(s16, s16)
Definition code_80005FD0.c:4929
void func_80019E58(void)
Definition code_80005FD0.c:6672
void func_8000F124(void)
Definition code_80005FD0.c:3406
void play_cpu_sound_effect(s32, Player *)
Definition code_80005FD0.c:1559
void func_80019760(Camera *, UNUSED Player *, s32, s32)
void func_8001AAAC(s16, s16, s16)
Definition code_80005FD0.c:6976
s32 add_blue_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3322
void func_80019D2C(Camera *, Player *, s32)
Definition code_80005FD0.c:6639
void clear_expired_strategies(CpuItemStrategyData *)
Definition code_80005FD0.c:7071
void update_player_rankings(void)
Definition code_80005FD0.c:811
void func_80019B50(s32, u16)
Definition code_80005FD0.c:6587
void update_vehicle_cars(void)
Definition code_80005FD0.c:5325
void func_80019DE4(void)
Definition code_80005FD0.c:6656
void func_80019ED0(void)
Definition code_80005FD0.c:6683
u16 D_80163E2A
s32 add_green_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3314
void func_80014D30(s32, s32)
Definition code_80005FD0.c:5341
void set_places_end_course_with_time(void)
Definition code_80005FD0.c:863
void initialize_toads_turnpike_vehicle(f32, f32, s32, s32, VehicleStuff *, TrackPathPoint *)
Definition code_80005FD0.c:4883
void func_80018718(s32, f32, s32, s16)
void update_player_position_factor(s32, u16, s32)
Definition code_80005FD0.c:2213
void update_vehicle_trains(void)
Definition code_80005FD0.c:4527
s16 find_closest_vehicles_path_point(f32, f32, f32, s16)
s16 update_vehicle_following_path(Vec3f, s16 *, f32)
Definition code_80005FD0.c:2906
void func_80019DF4(void)
Definition code_80005FD0.c:6660
void handle_box_trucks_interactions(s32, Player *)
Definition code_80005FD0.c:5248
s16 update_path_index_with_track(f32, f32, f32, s16, s32, u16)
Definition code_80005FD0.c:2435
void set_current_path(s32)
Definition code_80005FD0.c:1329
void sync_train_components(TrainCarStuff *, s16)
sync the train components vehicle with the actor
Definition code_80005FD0.c:4511
s32 generate_2d_path(Path2D *, TrackPathPoint *, s32)
Definition code_80005FD0.c:4122
f32 calculate_track_position_factor(f32, f32, u16, s32)
Definition code_80005FD0.c:2187
void func_8001933C(Camera *, UNUSED Player *, s32, s32)
void func_80007FA4(s32, Player *, f32)
Definition code_80005FD0.c:1045
f32 cpu_track_position_factor(s32)
Definition code_80005FD0.c:2690
void regulate_cpu_speed(s32, f32, Player *)
Definition code_80005FD0.c:1091
s32 is_collide_with_vehicle(f32, f32, f32, f32, f32, f32, f32, f32)
Definition code_80005FD0.c:574
void cpu_behaviour_start(s32, Player *)
Definition code_80005FD0.c:4215
f32 calculate_track_curvature(s32, u16)
Definition code_80005FD0.c:3789
@ CPU_BEHAVIOUR_STATE_RUNNING
Definition code_80005FD0.h:339
@ CPU_BEHAVIOUR_STATE_NONE
Definition code_80005FD0.h:339
@ CPU_BEHAVIOUR_STATE_START
Definition code_80005FD0.h:339
void generate_ferry_path(void)
Definition code_80005FD0.c:4388
f32 func_80014EE4(f32, s32)
Definition code_80005FD0.c:5378
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:4400
void copy_courses_cpu_behaviour(void)
Definition code_80005FD0.c:4196
void func_8001A450(s32, s32, s32)
Definition code_80005FD0.c:6816
void determine_ideal_cpu_position_offset(s32, u16)
Definition code_80005FD0.c:2714
void func_80015390(Camera *, Player *, s32)
s32 set_vehicle_render_distance_flags(Vec3f, f32, s32)
Definition code_80005FD0.c:616
void handle_paddle_boats_interactions(Player *)
Definition code_80005FD0.c:4848
void update_vehicle_follow_path_point(VehicleStuff *)
Definition code_80005FD0.c:4962
s32 is_path_point_in_range(u16, u16, u16, u16, u16)
Definition code_80005FD0.c:944
void check_ai_crossing_distance(s32)
Definition code_80005FD0.c:4697
void func_80014DE4(s32)
Definition code_80005FD0.c:5351
void func_8001A3D8(s32, f32, s32)
Definition code_80005FD0.c:6805
void func_80019C50(s32)
Definition code_80005FD0.c:6620
void func_80007D04(s32, Player *)
Definition code_80005FD0.c:962
bool is_far_from_path(s32)
Definition code_80005FD0.c:2179
void func_80016494(Camera *, Player *, s32, s32)
s16 func_8000BD94(f32, f32, f32, s32)
Definition code_80005FD0.c:2302
void cpu_use_item_strategy(s32)
Definition code_80005FD0.c:7078
void func_8001ABE0(s32, CpuItemStrategyData *)
void func_8001C42C(void)
Definition code_80005FD0.c:7837
void init_vehicles_trains(size_t, size_t, f32)
Definition code_80005FD0.c:4440
s16 func_8000D33C(f32, f32, f32, s16, s32)
Definition code_80005FD0.c:2680
void set_bomb_kart_spawn_positions(void)
Definition code_80005FD0.c:2963
void update_player_completion(s32)
Definition code_80005FD0.c:1363
void calculate_track_offset_position(u16, f32, f32, s16)
Definition code_80005FD0.c:2224
void func_80011EC0(s32, Player *, s32, u16)
void func_8000DF8C(s32)
Definition code_80005FD0.c:3018
void load_track_path(s32)
Definition code_80005FD0.c:3688
void func_80019890(s32, s32)
Definition code_80005FD0.c:6521
void set_vehicle_pos_path_point(TrainCarStuff *, Path2D *, u16)
Definition code_80005FD0.c:4423
void update_vehicles(void)
Definition code_80005FD0.c:1550
void update_player_path_completion(s32, Player *)
Definition code_80005FD0.c:1445
void reset_cpu_behaviour_none(s32)
Definition code_80005FD0.c:4203
void func_8001969C(s32, f32, s32, s16)
void func_8000B140(s32)
Definition code_80005FD0.c:2009
void init_vehicles_trucks(void)
Definition code_80005FD0.c:5285
void func_8001AB00(void)
Definition code_80005FD0.c:6984
void yoshi_valley_cpu_path(s32)
Definition code_80005FD0.c:1374
f32 Vec3f[3]
Definition common_structs.h:10
s16 Vec3s[3]
Definition common_structs.h:15
#define NUM_PLAYERS
Definition defines.h:127
#define UNUSED
Definition macros.h:26
Definition CPU.h:6
Definition camera.h:27
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 code_80005FD0.h:47
s16 z
Definition code_80005FD0.h:49
s16 x
Definition code_80005FD0.h:48
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