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; // 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 render_bomb_karts_wrap(s32);
295void func_8001C42C(void);
296
297/* This is where I'd put my static data, if I had any */
298
299extern Collision D_80162E70;
300extern s16 D_80162EB0; // Possibly a float.
301extern s16 D_80162EB2; // possibly [3]
303extern s16 D_80162F10[];
304extern s16 D_80162F50[];
306extern Vec3f D_80162FB0;
307extern Vec3f D_80162FC0;
308extern s16 gTrainSmokeTimer;
309extern s16 D_80162FD0;
310extern f32 gCourseCompletionPercentByRank[]; // D_80162FD8
311extern s16 D_80162FF8[];
312extern s16 D_80163010[];
313extern f32 cpu_TargetSpeed[];
314extern s16 gPreviousAngleSteering[];
315extern f32 D_80163090[];
316extern bool gIsPlayerInCurve[];
317extern u16 gCurrentNearestPathPoint;
318extern s16 gIsPlayerNewPathPoint;
319extern s16 D_801630E8[];
320extern s16 gFerrySmokeTimer;
321extern s32 D_80163100[];
322extern s32 D_80163128[];
323extern s32 D_80163150[];
324extern f32 gPreviousPlayerAiOffsetX[];
325extern f32 gPreviousPlayerAiOffsetZ[];
327extern s32 D_801631CC;
328extern u16 D_801631E0[];
329extern u16 D_801631F8[];
330extern f32 gCurrentCpuTargetSpeed;
331extern f32 gPreviousCpuTargetSpeed[];
332extern s32 D_80163238;
333extern u16 D_80163240[];
334extern u16 gWrongDirectionCounter[];
335extern u16 gIsPlayerWrongDirection[];
336extern s32 gPreviousLapProgressScore[];
338extern u16 gCurrentCPUBehaviourId[];
339extern u16 gPreviousCPUBehaviourId[];
340extern u16 cpu_BehaviourState[];
341
343
344extern s16 sPlayerAngle[];
345extern u16 D_80163330[];
346extern u16 D_80163344[];
347extern u16 D_80163348[];
348extern u16 D_8016334C[];
349extern u16 gSpeedCPUBehaviour[];
350
352
353extern s32 gIncrementUpdatePlayer;
354extern s32 D_8016337C;
355extern s16 gCurrentPlayerLookAhead[];
356extern s16 D_80163398[];
357extern s16 D_801633B0[];
358extern s16 D_801633C8[];
359extern s16 D_801633E0[];
360extern s16 D_801633F8[];
361extern s16 D_80163410[];
362extern f32 D_80163418[];
363extern f32 D_80163428[];
364extern f32 D_80163438[];
365extern f32 gPreviousPlayerZ[];
366extern s16 gBestRankedHumanPlayer;
367// 0 or 1, only 1 when when in extra (mirror) mode
368extern s16 gIsInExtra;
369extern s16 D_8016347C;
370extern s16 D_8016347E;
371extern s32 D_80163480;
372extern s32 D_80163484;
373extern s32 D_80163488;
374extern s16 D_8016348C;
375extern s16 D_801634C0[];
376extern s16 bStopAICrossing[];
377extern s16 D_801634EC;
378extern s32 D_801634F0;
379extern s32 D_801634F4;
382extern s32 gVehicle2DPathSize;
384extern size_t gVehiclePathSize;
385extern u16 isCrossingTriggeredByIndex[];
386extern u16 sCrossingActiveTimer[];
387extern s32 D_80163DD8[];
390extern s16 D_80164358;
391extern s16 D_8016435A;
392extern s16 D_8016435C;
393extern s16 gGPCurrentRacePlayerIdByRank[]; // D_80164360
394extern s16 D_80164378[];
395extern s32 gLapCountByPlayerId[]; // D_80164390
396extern s32 gGPCurrentRaceRankByPlayerId[]; // D_801643B8
399extern s16 gGetPlayerByCharacterId[];
400extern s32 D_8016448C;
401extern f32 D_80164498[];
402extern f32 gLapCompletionPercentByPlayerId[]; // D_801644A8
403extern f32 gCourseCompletionPercentByPlayerId[]; // D_801644D0
404extern f32 gPlayerPathY[];
405extern s16 D_80164538[];
406extern s32 D_801645D0[];
407extern s32 D_801645E8[];
408extern f32 D_801645F8[];
409extern s32 D_80164608[];
410extern f32 D_80164618[];
411extern s32 D_80164628[];
412extern f32 D_80164638[];
413extern f32 D_80164648[];
414extern f32 D_80164658[];
415extern s16 D_80164670[];
416extern s16 D_80164678[];
417extern s16 D_80164680[];
418extern f32 D_80164688[];
419extern f32 D_80164698;
420extern f32 D_8016469C;
421extern f32 D_801646A0;
422extern s16 D_801646C0[];
423extern u32 D_801646C8;
424extern u16 D_801646CC;
426
427// See bss_80005FD0.s
429extern s32 D_8016448C;
430extern u16 D_801637BE;
431extern u16 D_80163E2A;
432
433#define SEVERE_WRONG_DIRECTION_MIN 136
434#define SEVERE_WRONG_DIRECTION_MAX 225
435#define SEVERE_CORRECT_DIRECTION_MIN 45
436#define SEVERE_CORRECT_DIRECTION_MAX 316
437#define WRONG_DIRECTION_FRAMES_LIMIT 5
438
439// extern Gfx D_0D0076F8[];
440
441#endif
s32 gLapCountByPlayerId[10]
Definition code_80005FD0.c:171
s16 D_80163410[4]
Definition code_80005FD0.c:126
s16 D_80162F10[30]
Definition code_80005FD0.c:56
s16 D_80162F50[30]
Definition code_80005FD0.c:57
f32 gLapCompletionPercentByPlayerId[10]
Definition code_80005FD0.c:182
s32 D_80163DD8[4]
Definition code_80005FD0.c:161
u16 gCurrentCPUBehaviourId[12]
Definition code_80005FD0.c:107
f32 gCurrentCpuTargetSpeed
Definition code_80005FD0.c:99
s32 D_8016448C
Definition code_80005FD0.c:179
s32 D_80164608[NUM_CAMERAS]
Definition code_80005FD0.c:199
s32 gPreviousLapProgressScore[10]
Definition code_80005FD0.c:105
Collision D_80162E70
Definition code_80005FD0.c:47
s32 D_80163150[10]
Definition code_80005FD0.c:88
f32 gPreviousPlayerZ[10]
Definition code_80005FD0.c:132
s16 gIsPlayerNewPathPoint
Definition code_80005FD0.c:83
s16 D_80164538[12]
Definition code_80005FD0.c:186
s32 D_801645D0[NUM_CAMERAS]
Definition code_80005FD0.c:195
u16 D_80163344[2]
Definition code_80005FD0.c:113
s16 D_80163010[12]
Definition code_80005FD0.c:76
Vec3f D_80162FC0
Definition code_80005FD0.c:64
f32 D_80164638[NUM_CAMERAS]
Definition code_80005FD0.c:202
CPUBehaviour * sCurrentCPUBehaviour
Definition code_80005FD0.c:106
u16 D_801631E0[12]
Definition code_80005FD0.c:97
u16 gPreviousCPUBehaviourId[12]
Definition code_80005FD0.c:108
Vec3f D_80162FB0
Definition code_80005FD0.c:63
s16 gBestRankedHumanPlayer
Definition code_80005FD0.c:133
u16 gIsPlayerWrongDirection[12]
Definition code_80005FD0.c:104
s16 D_801646C0[NUM_CAMERAS]
Definition code_80005FD0.c:222
s32 D_80163100[10]
Definition code_80005FD0.c:86
s16 D_80164678[NUM_CAMERAS]
Definition code_80005FD0.c:207
s16 gCurrentPlayerLookAhead[12]
Definition code_80005FD0.c:120
s32 D_80163238
Definition code_80005FD0.c:101
f32 cpu_TargetSpeed[10]
Definition code_80005FD0.c:77
u16 gCurrentNearestPathPoint
Definition code_80005FD0.c:82
f32 D_80163428[4]
Definition code_80005FD0.c:128
s16 D_8016435A
Definition code_80005FD0.c:167
f32 D_80163090[10]
Definition code_80005FD0.c:80
TrackPathPoint * gVehicle2DPathPoint
Definition code_80005FD0.c:149
s32 gGPCurrentRaceRankByPlayerIdDup[10]
Definition code_80005FD0.c:174
s16 D_80162EB2
Definition code_80005FD0.c:49
f32 D_80163418[4]
Definition code_80005FD0.c:127
f32 gPreviousPlayerAiOffsetX[10]
Definition code_80005FD0.c:89
UnkStruct_46D0 D_801646D0[NUM_CAMERAS]
Definition code_80005FD0.c:225
s16 D_801633F8[12]
Definition code_80005FD0.c:125
f32 D_80163438[4]
Definition code_80005FD0.c:129
TrackPathPoint * gVehiclePath
Definition code_80005FD0.c:151
s32 D_801645E8[NUM_CAMERAS]
Definition code_80005FD0.c:197
s16 sPlayerAngle[12]
Definition code_80005FD0.c:110
f32 D_801645F8[NUM_CAMERAS]
Definition code_80005FD0.c:198
u16 isCrossingTriggeredByIndex[NUM_CROSSINGS]
Definition code_80005FD0.c:154
u16 cpu_BehaviourState[12]
Definition code_80005FD0.c:109
f32 gPreviousCpuTargetSpeed[10]
Definition code_80005FD0.c:100
s16 gGPCurrentRacePlayerIdByRank[12]
Definition code_80005FD0.c:169
s32 D_801634F0
Definition code_80005FD0.c:146
s16 D_80164670[NUM_CAMERAS]
Definition code_80005FD0.c:206
s16 D_801633C8[12]
Definition code_80005FD0.c:123
struct unexpiredActors gUnexpiredActorsList[8]
Definition code_80005FD0.c:164
f32 D_8016469C
Definition code_80005FD0.c:211
f32 D_80164498[4]
Definition code_80005FD0.c:181
s32 D_801631CC
Definition code_80005FD0.c:92
s16 D_801630E8[10]
Definition code_80005FD0.c:84
s16 D_80162FD0
Definition code_80005FD0.c:67
u16 D_80163240[12]
Definition code_80005FD0.c:102
u16 D_801631F8[10]
Definition code_80005FD0.c:98
s32 D_801634F4
Definition code_80005FD0.c:147
s16 D_801633E0[12]
Definition code_80005FD0.c:124
f32 gPreviousPlayerAiOffsetZ[10]
Definition code_80005FD0.c:90
CPUBehaviour * gCoursesCPUBehaviour[NUM_TRACKS - 1]
Definition code_80005FD0.c:51
f32 gCourseCompletionPercentByRank[NUM_PLAYERS]
Definition code_80005FD0.c:68
u16 D_80163348[2]
Definition code_80005FD0.c:114
f32 gPlayerPathY[10]
Definition code_80005FD0.c:185
u16 sCrossingActiveTimer[NUM_CROSSINGS]
Definition code_80005FD0.c:155
s16 gTrainSmokeTimer
Definition code_80005FD0.c:65
s16 gIsInExtra
Definition code_80005FD0.c:134
s16 D_8016348C
Definition code_80005FD0.c:140
TrackPositionFactorInstruction gPlayerTrackPositionFactorInstruction[10]
Definition code_80005FD0.c:148
s32 gGPCurrentRaceRankByPlayerId[10]
Definition code_80005FD0.c:172
bool gIsPlayerInCurve[10]
Definition code_80005FD0.c:81
u16 D_80163330[10]
Definition code_80005FD0.c:112
u16 gWrongDirectionCounter[12]
Definition code_80005FD0.c:103
f32 D_80164688[NUM_CAMERAS]
Definition code_80005FD0.c:209
s16 D_80162FF8[12]
Definition code_80005FD0.c:75
size_t gVehiclePathSize
Definition code_80005FD0.c:152
f32 D_80164618[NUM_CAMERAS]
Definition code_80005FD0.c:200
s16 D_801633B0[12]
Definition code_80005FD0.c:122
u16 gSpeedCPUBehaviour[12]
Definition code_80005FD0.c:116
s16 D_8016347E
Definition code_80005FD0.c:136
s16 D_80164358
Definition code_80005FD0.c:166
s16 bStopAICrossing[10]
Definition code_80005FD0.c:144
f32 D_80164648[NUM_CAMERAS]
Definition code_80005FD0.c:203
s16 D_8016435C
Definition code_80005FD0.c:168
s32 D_8016337C
Definition code_80005FD0.c:119
f32 D_801646A0
Definition code_80005FD0.c:212
u32 D_801646C8
Definition code_80005FD0.c:223
f32 gCourseCompletionPercentByPlayerId[10]
Definition code_80005FD0.c:183
s16 gGetPlayerByCharacterId[10]
Definition code_80005FD0.c:178
CpuItemStrategyData cpu_ItemStrategy[8]
Definition code_80005FD0.c:165
s16 D_80164680[NUM_CAMERAS]
Definition code_80005FD0.c:208
s16 sVehicleSoundRenderCounter
Definition code_80005FD0.c:91
s32 D_80163128[10]
Definition code_80005FD0.c:87
s16 gFerrySmokeTimer
Definition code_80005FD0.c:85
Vec3f gOffsetPosition
Definition code_80005FD0.c:62
f32 D_80164698
Definition code_80005FD0.c:210
s16 D_801634C0[12]
Definition code_80005FD0.c:143
f32 D_80164658[NUM_CAMERAS]
Definition code_80005FD0.c:204
s32 D_80163484
Definition code_80005FD0.c:138
s32 gPreviousGPCurrentRaceRankByPlayerId[10]
Definition code_80005FD0.c:173
s16 D_801634EC
Definition code_80005FD0.c:145
s16 gPreviousAngleSteering[12]
Definition code_80005FD0.c:78
s32 D_80163480
Definition code_80005FD0.c:137
s32 gVehicle2DPathSize
Definition code_80005FD0.c:150
u16 D_801646CC
Definition code_80005FD0.c:224
u16 D_8016334C[8]
Definition code_80005FD0.c:115
s16 D_80162EB0
Definition code_80005FD0.c:48
s32 D_80164628[NUM_CAMERAS]
Definition code_80005FD0.c:201
s16 D_80163398[12]
Definition code_80005FD0.c:121
s16 D_80164378[12]
Definition code_80005FD0.c:170
s32 D_80163488
Definition code_80005FD0.c:139
s16 D_8016347C
Definition code_80005FD0.c:135
s32 gIncrementUpdatePlayer
Definition code_80005FD0.c:118
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:688
s16 update_path_index(f32, f32, f32, s16, s32)
Definition code_80005FD0.c:2480
void func_8000EEDC(void)
Definition code_80005FD0.c:3359
void generate_train_path(void)
Definition code_80005FD0.c:4394
void calculate_track_boundaries(s32)
Definition code_80005FD0.c:3756
void handle_school_buses_interactions(s32, Player *)
Definition code_80005FD0.c:5307
s16 func_8000D6D0(Vec3f, s16 *, f32, f32, s16, s16)
Definition code_80005FD0.c:2778
void analyze_track_section(s32)
Definition code_80005FD0.c:3858
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:2673
void clear_path_point(TrackPathPoint *, size_t)
Definition code_80005FD0.c:3469
s16 calculate_angle_path(s32, s32)
Definition code_80005FD0.c:3914
s16 find_closest_path_point_track_section(f32, f32, f32, u16, s32 *)
Definition code_80005FD0.c:2340
void reset_cpu_behaviour(s32)
Definition code_80005FD0.c:4226
void init_vehicles_cars(void)
Definition code_80005FD0.c:5344
void func_80015544(s32, f32, s32, s32)
Definition code_80005FD0.c:5583
void generate_player_smoke(void)
Definition code_80005FD0.c:3370
s32 func_8001A310(s32, s32)
Definition code_80005FD0.c:6854
void func_8001A0A4(u16 *, Camera *, Player *, s8, s32)
s32 add_red_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3322
void update_player_track_position_factor_from_cars(s32)
Definition code_80005FD0.c:5368
void cpu_behaviour(s32)
Definition code_80005FD0.c:4339
void func_8000F0E0(void)
Definition code_80005FD0.c:3414
void update_player(s32)
Definition code_80005FD0.c:1603
void func_8001A124(s32, s32)
Definition code_80005FD0.c:6803
void analyse_angle_path(s32)
Definition code_80005FD0.c:3933
void update_player_track_position_factor_from_vehicle(s32, s32, VehicleStuff *)
Definition code_80005FD0.c:5239
void render_bomb_karts_wrap(s32)
Definition code_80005FD0.c:7933
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:5335
void func_80015314(s32, f32, s32)
bool func_800088D8(s32, s16, s16)
Definition code_80005FD0.c:1196
void cpu_behaviour_end(s32, Player *)
Definition code_80005FD0.c:4300
void update_vehicle_tanker_trucks(void)
Definition code_80005FD0.c:5328
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:5779
void init_vehicles_school_buses(void)
Definition code_80005FD0.c:5288
u16 D_801637BE
s16 get_angle_between_path(Vec3f, Vec3f)
Definition code_80005FD0.c:566
s16 func_8000D940(Vec3f, s16 *, f32, f32, s16)
Definition code_80005FD0.c:2844
void func_80013054(void)
Definition code_80005FD0.c:4694
void update_player_track_position_factor_from_box_trucks(s32)
Definition code_80005FD0.c:5284
void init_vehicles_box_trucks(void)
Definition code_80005FD0.c:5262
f32 player_track_position_factor_vehicle(s16, f32, s16)
Definition code_80005FD0.c:5200
void func_8001A348(s32, f32, s32)
Definition code_80005FD0.c:6861
f32 func_80009258(s32, f32, f32)
@ SPEED_CPU_BEHAVIOUR_FAST
Definition code_80005FD0.h:351
@ SPEED_CPU_BEHAVIOUR_SLOW
Definition code_80005FD0.h:351
@ SPEED_CPU_BEHAVIOUR_MAX
Definition code_80005FD0.h:351
@ SPEED_CPU_BEHAVIOUR_NORMAL
Definition code_80005FD0.h:351
s32 generate_2d_path(TrackPathPoint *, TrackPathPoint *, s32)
Definition code_80005FD0.c:4139
void init_vehicles_ferry(void)
Definition code_80005FD0.c:4749
void update_vehicle_box_trucks(void)
Definition code_80005FD0.c:5272
s32 update_player_path_selection(s32, s32)
Definition code_80005FD0.c:1343
void func_8001530C(void)
Definition code_80005FD0.c:5519
s16 update_path_index_track_section(f32, f32, f32, Player *, s32, s32 *)
Definition code_80005FD0.c:2552
void func_8001A518(s32, s32, s32)
Definition code_80005FD0.c:6898
void func_8001577C(Camera *, UNUSED Player *, s32, s32)
void func_8001A0DC(u16 *, Camera *, Player *, s8, s32)
Definition code_80005FD0.c:6798
s32 process_path_data(TrackPathPoint *, TrackPathPoint *)
Definition code_80005FD0.c:4107
void set_places(void)
Definition code_80005FD0.c:724
void func_8001968C(void)
Definition code_80005FD0.c:6510
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:5059
void update_cpu_path_completion(s32, Player *)
Definition code_80005FD0.c:1415
void func_8001A588(u16 *, Camera *, Player *, s8, s32)
void set_track_offset_position(u16, f32, s16)
Definition code_80005FD0.c:2265
s32 add_actor_in_unexpired_actor_list(s32, s16)
Definition code_80005FD0.c:3301
void handle_trains_interactions(s32, Player *)
Definition code_80005FD0.c:4634
void func_80019FB4(s32)
Definition code_80005FD0.c:6766
void update_player_track_position_factor_from_buses(s32)
Definition code_80005FD0.c:5312
void analyze_curved_path(s32)
Definition code_80005FD0.c:3945
f32 func_80010F40(f32, f32, f32, s32, s32)
void adjust_position_by_angle(Vec3f, Vec3f, s16)
Definition code_80005FD0.c:599
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:5363
void delete_actor_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3346
void init_players(void)
Definition code_80005FD0.c:3535
void update_player_track_position_factor_from_tanker_truck(s32)
Definition code_80005FD0.c:5340
s16 update_player_path(f32, f32, f32, s16, Player *, s32, s32)
Definition code_80005FD0.c:2566
void update_player_timer_sound(s32, Player *)
void func_80019118(s32, f32, s32, s16)
void update_vehicle_paddle_boats(void)
Definition code_80005FD0.c:4778
s16 func_8000D24C(f32, f32, f32, s32 *)
Definition code_80005FD0.c:2665
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:3474
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:5670
void update_vehicle_school_bus(void)
Definition code_80005FD0.c:5300
void func_80016C3C(s32, f32, s32)
void calculate_camera_up_vector(Camera *, s32)
Definition code_80005FD0.c:5488
f32 func_80013C74(s16, s16)
Definition code_80005FD0.c:4960
void func_80019E58(void)
Definition code_80005FD0.c:6737
void func_8000F124(void)
Definition code_80005FD0.c:3422
void play_cpu_sound_effect(s32, Player *)
Definition code_80005FD0.c:1563
void func_80019760(Camera *, UNUSED Player *, s32, s32)
void func_8001AAAC(s16, s16, s16)
Definition code_80005FD0.c:7043
s32 add_blue_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3338
void func_80019D2C(Camera *, Player *, s32)
Definition code_80005FD0.c:6704
void clear_expired_strategies(CpuItemStrategyData *)
Definition code_80005FD0.c:7138
void update_player_rankings(void)
Definition code_80005FD0.c:815
void func_80019B50(s32, u16)
Definition code_80005FD0.c:6618
void update_vehicle_cars(void)
Definition code_80005FD0.c:5356
void func_80019DE4(void)
Definition code_80005FD0.c:6721
void func_80019ED0(void)
Definition code_80005FD0.c:6748
u16 D_80163E2A
s32 add_green_shell_in_unexpired_actor_list(s32)
Definition code_80005FD0.c:3330
void func_80014D30(s32, s32)
Definition code_80005FD0.c:5372
void set_places_end_course_with_time(void)
Definition code_80005FD0.c:867
void initialize_toads_turnpike_vehicle(f32, f32, s32, s32, VehicleStuff *, TrackPathPoint *)
Definition code_80005FD0.c:4914
void func_80018718(s32, f32, s32, s16)
void update_player_position_factor(s32, u16, s32)
Definition code_80005FD0.c:2217
void update_vehicle_trains(void)
Definition code_80005FD0.c:4558
s16 find_closest_vehicles_path_point(f32, f32, f32, s16)
s16 update_vehicle_following_path(Vec3f, s16 *, f32)
Definition code_80005FD0.c:2910
void func_80019DF4(void)
Definition code_80005FD0.c:6725
void handle_box_trucks_interactions(s32, Player *)
Definition code_80005FD0.c:5279
s16 update_path_index_with_track(f32, f32, f32, s16, s32, u16)
Definition code_80005FD0.c:2439
void set_current_path(s32)
Definition code_80005FD0.c:1333
void sync_train_components(TrainCarStuff *, s16)
sync the train components vehicle with the actor
Definition code_80005FD0.c:4542
f32 calculate_track_position_factor(f32, f32, u16, s32)
Definition code_80005FD0.c:2191
void func_8001933C(Camera *, UNUSED Player *, s32, s32)
void func_80007FA4(s32, Player *, f32)
Definition code_80005FD0.c:1049
f32 cpu_track_position_factor(s32)
Definition code_80005FD0.c:2694
void regulate_cpu_speed(s32, f32, Player *)
Definition code_80005FD0.c:1095
s32 is_collide_with_vehicle(f32, f32, f32, f32, f32, f32, f32, f32)
Definition code_80005FD0.c:578
void cpu_behaviour_start(s32, Player *)
Definition code_80005FD0.c:4232
f32 calculate_track_curvature(s32, u16)
Definition code_80005FD0.c:3806
@ CPU_BEHAVIOUR_STATE_RUNNING
Definition code_80005FD0.h:342
@ CPU_BEHAVIOUR_STATE_NONE
Definition code_80005FD0.h:342
@ CPU_BEHAVIOUR_STATE_START
Definition code_80005FD0.h:342
void generate_ferry_path(void)
Definition code_80005FD0.c:4409
f32 func_80014EE4(f32, s32)
Definition code_80005FD0.c:5409
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:4425
void copy_courses_cpu_behaviour(void)
Definition code_80005FD0.c:4213
void func_8001A450(s32, s32, s32)
Definition code_80005FD0.c:6882
void determine_ideal_cpu_position_offset(s32, u16)
Definition code_80005FD0.c:2718
void func_80015390(Camera *, Player *, s32)
s32 set_vehicle_render_distance_flags(Vec3f, f32, s32)
Definition code_80005FD0.c:620
void handle_paddle_boats_interactions(Player *)
Definition code_80005FD0.c:4879
void update_vehicle_follow_path_point(VehicleStuff *)
Definition code_80005FD0.c:4993
s32 is_path_point_in_range(u16, u16, u16, u16, u16)
Definition code_80005FD0.c:948
void check_ai_crossing_distance(s32)
Definition code_80005FD0.c:4728
void func_80014DE4(s32)
Definition code_80005FD0.c:5382
void func_8001A3D8(s32, f32, s32)
Definition code_80005FD0.c:6871
void func_80019C50(s32)
Definition code_80005FD0.c:6651
void func_80007D04(s32, Player *)
Definition code_80005FD0.c:966
bool is_far_from_path(s32)
Definition code_80005FD0.c:2183
void func_80016494(Camera *, Player *, s32, s32)
s16 func_8000BD94(f32, f32, f32, s32)
Definition code_80005FD0.c:2306
void cpu_use_item_strategy(s32)
Definition code_80005FD0.c:7145
void func_8001ABE0(s32, CpuItemStrategyData *)
void func_8001C42C(void)
Definition code_80005FD0.c:7945
void init_vehicles_trains(size_t, size_t, f32)
Definition code_80005FD0.c:4471
s16 func_8000D33C(f32, f32, f32, s16, s32)
Definition code_80005FD0.c:2684
void set_bomb_kart_spawn_positions(void)
Definition code_80005FD0.c:2979
void update_player_completion(s32)
Definition code_80005FD0.c:1367
void calculate_track_offset_position(u16, f32, f32, s16)
Definition code_80005FD0.c:2228
void func_80011EC0(s32, Player *, s32, u16)
void func_8000DF8C(s32)
Definition code_80005FD0.c:3034
void load_track_path(s32)
Definition code_80005FD0.c:3705
void func_80019890(s32, s32)
Definition code_80005FD0.c:6552
void update_vehicles(void)
Definition code_80005FD0.c:1554
void update_player_path_completion(s32, Player *)
Definition code_80005FD0.c:1449
void reset_cpu_behaviour_none(s32)
Definition code_80005FD0.c:4220
void func_8001969C(s32, f32, s32, s16)
void func_8000B140(s32)
Definition code_80005FD0.c:2013
void init_vehicles_trucks(void)
Definition code_80005FD0.c:5316
void set_vehicle_pos_path_point(TrainCarStuff *, TrackPathPoint *, u16)
Definition code_80005FD0.c:4448
void func_8001AB00(void)
Definition code_80005FD0.c:7051
void yoshi_valley_cpu_path(s32)
Definition code_80005FD0.c:1378
f32 Vec3f[3]
Definition common_structs.h:10
s16 Vec3s[3]
Definition common_structs.h:15
#define NUM_PLAYERS
Definition defines.h:138
#define UNUSED
Definition macros.h:26
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