Mario Kart 64
Loading...
Searching...
No Matches
Game.h
Go to the documentation of this file.
1#ifndef _GAME_H
2#define _GAME_H
3
4#include <libultraship.h>
6#include "engine/HM_Intro.h"
7
8#ifdef __cplusplus
12class Track;
13struct Properties;
14class World;
15
16template<class T, typename... TArgs> T* SpawnActor(TArgs&&... args) {
17 return T::Spawn(std::forward<TArgs>(args)...);
18}
19
20extern "C" {
21#endif
22#include "camera.h"
23#include "actor_types.h"
24#include "code_800029B0.h"
25
26extern s32 gTrophyIndex;
27
28#ifdef __cplusplus
29extern TrackEditor::Editor gEditor;
30extern HarbourMastersIntro gMenuIntro;
31extern bool bCleanWorld;
36World* GetWorld(void); // Retrieve the world instance
37#endif
38// NOLINTBEGIN(readability-identifier-naming)
39
40uintptr_t CM_GetTrack();
42
43void HM_InitIntro(void);
44void HM_TickIntro(void);
45void HM_DrawIntro(void);
46
47void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha);
48void CM_DrawBattleBombKarts(s32 cameraId);
49
50u32 WorldNextCup(void);
51
52u32 WorldPreviousCup(void);
53
54u32 GetCupIndex(void);
55
56const char* GetCupName(void);
57
58void LoadTrack();
59
60void CM_SetCup(void*);
61
62void CM_SetCupIndex(size_t index);
63
64void CM_DrawTrack(ScreenContext* arg0);
65
67void CM_ActivateFinishLakitu(s32 playerId);
68void CM_ActivateSecondLapLakitu(s32 playerId);
69void CM_ActivateFinalLapLakitu(s32 playerId);
70void CM_ActivateReverseLakitu(s32 playerId);
71
72void CM_InitClouds();
73
74void CM_DrawActors(Camera* camera);
76
77Camera* CM_GetPlayerCamera(s32 playerIndex);
78void CM_SetViewProjection(Camera* camera);
79void CM_TickCameras();
80Camera* CM_AddCamera(Vec3f spawn, s16 rot, u32 mode);
81Camera* CM_AddFreeCamera(Vec3f spawn, s16 rot, u32 mode);
82Camera* CM_AddTourCamera(Vec3f spawn, s16 rot, u32 mode);
83bool CM_IsTourEnabled();
84Camera* CM_AddLookBehindCamera(Vec3f spawn, s16 rot, u32 mode);
85void CM_AttachCamera(Camera* camera, s32 playerIdx);
86void CM_SetFreeCamera(bool state);
87void CM_CameraSetActive(size_t idx, bool state);
88void CM_ActivateTourCamera(Camera* camera);
89void CM_TickObjects();
91void CM_DrawObjects(s32 cameraId);
92
93void CM_TickEditor();
94void CM_DrawEditor();
98
99void CM_TickParticles(void);
100void CM_DrawParticles(s32 cameraId);
101
102void CM_TickClouds(s32 arg0, Camera* camera);
103
104void CM_Waypoints(Player* player, int8_t playerId);
105
106void CM_SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6,
107 f32* arg7);
108
110
112
113void CM_DrawTrackObjects(s32 cameraId);
114
115void CM_SomeSounds();
116
118
119void CM_WhatDoesThisDo(Player* player, int8_t playerId);
120
121void CM_WhatDoesThisDoAI(Player* player, int8_t playerId);
122
123void CM_SetStaffGhost();
124
125void CM_BombKartsWaypoint(s32 cameraId);
126
128
129s32 CM_GetCrossingOnTriggered(uintptr_t* crossing);
130
131void CM_BeginPlay();
132
133void CM_DrawWater(ScreenContext* screen, uint16_t pathCounter, uint16_t cameraRot,
134 uint16_t playerDirection);
135
136void CM_AICrossingBehaviour(s32 playerId);
137
138void CM_ClearVehicles(void);
139
140void CM_CrossingTrigger();
141
142void CM_VehicleCollision(s32 playerId, Player* player);
143
144void CM_TickActors();
145
146void CM_DrawBombKarts(s32 cameraId);
147
148void SetMarioRaceway(void);
149
150size_t GetCupCursorPosition();
151
152void SetCupCursorPosition(size_t position);
153
154size_t GetCupSize();
155
156void* GetTrack(void);
157
158struct Actor* CM_GetActor(size_t index);
159void CM_DeleteActor(size_t index);
160struct Actor* CM_AddBaseActor();
161void CM_ActorBeginPlay(struct Actor* actor);
162void CM_ActorGenerateCollision(struct Actor* actor);
163void Editor_AddLight(s8* direction);
164size_t CM_GetActorSize();
165size_t CM_FindActorIndex(struct Actor* actor);
166void CM_ActorCollision(Player* player, struct Actor* actor);
167void CM_CleanCameras(void);
168void CM_CleanWorld(void);
169
170f32 CM_GetWaterLevel(Vec3f pos, Collision* collision);
171
172bool IsMarioRaceway();
173bool IsLuigiRaceway();
174bool IsChocoMountain();
175bool IsBowsersCastle();
176bool IsBansheeBoardwalk();
177bool IsYoshiValley();
178bool IsFrappeSnowland();
179bool IsKoopaTroopaBeach();
180bool IsRoyalRaceway();
181bool IsMooMooFarm();
182bool IsToadsTurnpike();
183bool IsKalimariDesert();
184bool IsSherbetLand();
185bool IsRainbowRoad();
186bool IsWarioStadium();
187bool IsBlockFort();
188bool IsSkyscraper();
189bool IsDoubleDeck();
190bool IsDkJungle();
191bool IsBigDonut();
192bool IsPodiumCeremony();
193
194void SelectMarioRaceway();
195void SelectLuigiRaceway();
199void SelectYoshiValley();
202void SelectRoyalRaceway();
203void SelectMooMooFarm();
206void SelectSherbetLand();
207void SelectRainbowRoad();
208void SelectWarioStadium();
209void SelectBlockFort();
210void SelectSkyscraper();
211void SelectDoubleDeck();
212void SelectDkJungle();
213void SelectBigDonut();
215
216void* GetMushroomCup(void);
217
218void* GetFlowerCup(void);
219
220void* GetStarCup(void);
221
222void* GetSpecialCup(void);
223
224void* GetBattleCup(void);
225
226void* GetCup();
227
228void CM_RunGarbageCollector(void);
229void CM_ResetAudio(void);
230
231// Add print formatting check attribute
232#if defined(__GNUC__) || defined(__clang__)
233__attribute__((format(printf, 1, 2)))
234#endif
235
236// Add noreturn attribute
237#if defined(_MSC_VER)
238 __declspec(noreturn)
239#elif defined(__APPLE__)
240#elif defined(__cplusplus) || (__STDC_VERSION__ >= 202311)
241 [[noreturn]]
242#elif defined(__GNUC__)
243 __attribute__((noreturn))
244#endif
245void CM_ThrowRuntimeError(const char* fmt, ...);
246
247// NOLINTEND(readability-identifier-naming)
248
249#ifdef __cplusplus
250}
251#endif
252
253#endif // _GAME_H
Registry< TrackInfo > gTrackRegistry
Definition Game.cpp:78
bool bCleanWorld
Definition Game.cpp:61
Registry< ItemInfo > gItemRegistry
Definition Game.cpp:80
DataRegistry< RandomItemTable > gItemTableRegistry
Definition Game.cpp:83
s32 gTrophyIndex
Definition Game.cpp:75
HarbourMastersIntro gMenuIntro
Definition Game.cpp:71
TrackEditor::Editor gEditor
Definition Game.cpp:73
Registry< ActorInfo, const SpawnParams & > gActorRegistry
Definition Game.cpp:79
World * GetWorld()
Definition Game.cpp:87
void CM_InitClouds()
Definition Game.cpp:559
void CM_SomeSounds()
Definition Game.cpp:605
u32 GetCupIndex(void)
Definition Game.cpp:210
size_t CM_GetActorSize()
Definition Game.cpp:805
bool IsBlockFort()
Definition Game.cpp:838
void * GetTrack(void)
Definition Game.cpp:717
void CM_TickClouds(s32 arg0, Camera *camera)
Definition Game.cpp:565
void CM_CleanWorld(void)
Definition Game.cpp:758
void SelectDkJungle()
Definition Game.cpp:863
void SelectSkyscraper()
Definition Game.cpp:861
void SelectChocoMountain()
Definition Game.cpp:847
bool IsWarioStadium()
Definition Game.cpp:837
void CM_AICrossingBehaviour(s32 playerId)
Definition Game.cpp:277
void CM_ActorGenerateCollision(struct Actor *actor)
Definition Game.cpp:778
Camera * CM_AddTourCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:428
void SelectToadsTurnpike()
Definition Game.cpp:855
void CM_DrawActors(Camera *camera)
Definition Game.cpp:342
void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha)
Definition Game.cpp:244
void SelectBlockFort()
Definition Game.cpp:860
void CM_SetStaffGhost()
Definition Game.cpp:629
bool IsLuigiRaceway()
Definition Game.cpp:824
void CM_AttachCamera(Camera *camera, s32 playerIdx)
Definition Game.cpp:481
Properties * CM_GetProps()
Definition Game.cpp:640
void CM_DrawParticles(s32 cameraId)
Definition Game.cpp:553
void CM_DrawStaticMeshActors()
Definition Game.cpp:359
void CM_ActivateTourCamera(Camera *camera)
Definition Game.cpp:511
void HM_DrawIntro(void)
Definition Game.cpp:182
bool IsBansheeBoardwalk()
Definition Game.cpp:827
void SelectMooMooFarm()
Definition Game.cpp:854
void SelectWarioStadium()
Definition Game.cpp:859
struct Actor * CM_AddBaseActor()
Definition Game.cpp:770
uintptr_t CM_GetTrack()
Definition Game.cpp:636
bool IsSherbetLand()
Definition Game.cpp:835
bool IsDkJungle()
Definition Game.cpp:841
bool IsDoubleDeck()
Definition Game.cpp:840
bool IsMarioRaceway()
Definition Game.cpp:823
bool IsRainbowRoad()
Definition Game.cpp:836
void CM_ClearVehicles(void)
Definition Game.cpp:265
void CM_Waypoints(Player *player, int8_t playerId)
Definition Game.cpp:571
void CM_TickCameras()
Definition Game.cpp:406
void CM_SetViewProjection(Camera *camera)
Definition Game.cpp:398
void HM_InitIntro(void)
Definition Game.cpp:174
void CM_DrawObjects(s32 cameraId)
Definition Game.cpp:533
void CM_RunGarbageCollector(void)
Definition Game.cpp:889
struct Actor * CM_GetActor(size_t index)
Definition Game.cpp:721
void SelectYoshiValley()
Definition Game.cpp:850
void CM_ResetAudio(void)
Definition Game.cpp:893
void Editor_CleanWorld()
Definition Game.cpp:798
void CM_TickEditor()
Definition Game.cpp:539
void CM_DrawTrack(ScreenContext *arg0)
Definition Game.cpp:300
void * GetSpecialCup(void)
Definition Game.cpp:880
void * GetBattleCup(void)
Definition Game.cpp:884
void CM_TickObjects()
Definition Game.cpp:519
Camera * CM_AddCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:410
bool CM_IsTourEnabled()
Definition Game.cpp:460
void CM_DrawBombKarts(s32 cameraId)
void CM_ActivateFinalLapLakitu(s32 playerId)
Definition Game.cpp:690
void CM_TickParticles(void)
Definition Game.cpp:547
bool IsToadsTurnpike()
Definition Game.cpp:833
void CM_SetCupIndex(size_t index)
Definition Game.cpp:214
f32 CM_GetWaterLevel(Vec3f pos, Collision *collision)
Definition Game.cpp:817
void CM_ThrowRuntimeError(const char *fmt,...)
Definition Game.cpp:916
void CM_InitTrackObjects()
Definition Game.cpp:584
void CM_BeginPlay()
Definition Game.cpp:363
void CM_WhatDoesThisDo(Player *player, int8_t playerId)
Definition Game.cpp:617
bool IsMooMooFarm()
Definition Game.cpp:832
void CM_SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7)
Definition Game.cpp:577
void SelectRainbowRoad()
Definition Game.cpp:858
bool IsBowsersCastle()
Definition Game.cpp:826
void * GetMushroomCup(void)
Definition Game.cpp:868
void Editor_ClearMatrix()
Definition Game.cpp:794
size_t CM_FindActorIndex(struct Actor *actor)
Definition Game.cpp:731
void CM_ActivateFinishLakitu(s32 playerId)
Definition Game.cpp:676
void SelectBowsersCastle()
Definition Game.cpp:848
void SelectPodiumCeremony()
Definition Game.cpp:865
void SelectRoyalRaceway()
Definition Game.cpp:853
void * GetStarCup(void)
Definition Game.cpp:876
void SelectFrappeSnowland()
Definition Game.cpp:851
Camera * CM_AddLookBehindCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:472
bool IsChocoMountain()
Definition Game.cpp:825
void CM_ActivateReverseLakitu(s32 playerId)
Definition Game.cpp:697
bool IsSkyscraper()
Definition Game.cpp:839
s32 CM_GetCrossingOnTriggered(uintptr_t *crossing)
Definition Game.cpp:285
bool IsKoopaTroopaBeach()
Definition Game.cpp:830
void CM_TickTrackObjects()
Definition Game.cpp:590
u32 WorldPreviousCup(void)
Definition Game.cpp:198
void * GetCup()
Definition Game.cpp:206
void CM_DrawBattleBombKarts(s32 cameraId)
Definition Game.cpp:259
void SelectMarioRaceway()
Definition Game.cpp:845
bool IsPodiumCeremony()
Definition Game.cpp:843
void CM_TickDraw()
void SelectDoubleDeck()
Definition Game.cpp:862
void CM_CreditsSpawnActors()
Definition Game.cpp:611
bool IsYoshiValley()
Definition Game.cpp:828
void SelectKoopaTroopaBeach()
Definition Game.cpp:852
void CM_WhatDoesThisDoAI(Player *player, int8_t playerId)
Definition Game.cpp:623
void * GetFlowerCup(void)
Definition Game.cpp:872
void CM_TickObjects60fps()
Definition Game.cpp:527
void CM_VehicleCollision(s32 playerId, Player *player)
Definition Game.cpp:226
u32 WorldNextCup(void)
Definition Game.cpp:194
void CM_DrawTrackObjects(s32 cameraId)
Definition Game.cpp:597
bool IsBigDonut()
Definition Game.cpp:842
void CM_CleanCameras(void)
Definition Game.cpp:762
void CM_SpawnStarterLakitu()
Definition Game.cpp:663
void HM_TickIntro(void)
Definition Game.cpp:178
void CM_CameraSetActive(size_t idx, bool state)
Definition Game.cpp:485
void SelectBigDonut()
Definition Game.cpp:864
void CM_ActivateSecondLapLakitu(s32 playerId)
Definition Game.cpp:683
void CM_ActorBeginPlay(struct Actor *actor)
Definition Game.cpp:774
void CM_DrawEditor()
Definition Game.cpp:543
void CM_DeleteActor(size_t index)
Definition Game.cpp:748
bool IsKalimariDesert()
Definition Game.cpp:834
Camera * CM_GetPlayerCamera(s32 playerIndex)
Definition Game.cpp:385
void CM_BombKartsWaypoint(s32 cameraId)
Definition Game.cpp:234
void CM_ScrollingTextures()
Definition Game.cpp:647
void CM_DrawWater(ScreenContext *screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection)
Definition Game.cpp:653
void SelectLuigiRaceway()
Definition Game.cpp:846
void CM_SetFreeCamera(bool state)
Definition Game.cpp:491
void CM_ActorCollision(Player *player, struct Actor *actor)
Definition Game.cpp:809
void SelectBansheeBoardwalk()
Definition Game.cpp:849
void CM_SetCup(void *)
Definition Game.cpp:202
size_t GetCupCursorPosition()
Definition Game.cpp:704
void CM_TickActors()
Definition Game.cpp:336
void SetCupCursorPosition(size_t position)
Definition Game.cpp:708
void CM_CrossingTrigger()
Definition Game.cpp:269
void Editor_AddLight(s8 *direction)
Definition Game.cpp:788
size_t GetCupSize()
Definition Game.cpp:713
Camera * CM_AddFreeCamera(Vec3f spawn, s16 rot, u32 mode)
Definition Game.cpp:419
void SetMarioRaceway(void)
Definition Game.cpp:187
const char * GetCupName(void)
Definition Game.cpp:218
void SelectKalimariDesert()
Definition Game.cpp:856
bool IsFrappeSnowland()
Definition Game.cpp:829
void SelectSherbetLand()
Definition Game.cpp:857
void LoadTrack()
Definition Game.cpp:222
bool IsRoyalRaceway()
Definition Game.cpp:831
Definition DataRegistry.h:8
Definition Registry.h:60
Definition World.h:39
f32 Vec3f[3]
Definition common_structs.h:10
#define fmt(...)
Definition pak.cpp:8
Definition actor_types.h:126
Vec3f pos
Definition actor_types.h:135
Definition camera.h:35
Definition common_structs.h:147
Definition common_structs.h:264
Definition Track.h:88
Definition code_800029B0.h:10