- #include "main.h" 
- #include <stdlib.h> 
-   
- #include "controls.h" 
- #include "cutscene.h" 
- #include "drmem.h" 
- #include "errors.h" 
- #include "globvars.h" 
- #include "globvrpb.h" 
- #include "graphics.h" 
- #include "harness/config.h" 
- #include "harness/trace.h" 
- #include "init.h" 
- #include "input.h" 
- #include "loading.h" 
- #include "loadsave.h" 
- #include "network.h" 
- #include "pd/sys.h" 
- #include "s3/s3.h" 
- #include "sound.h" 
- #include "structur.h" 
- #include "utility.h" 
-   
- // IDA: void __cdecl QuitGame() 
- void QuitGame(void) { 
-     LOG_TRACE("()"); 
-   
-     if (harness_game_info.mode == eGame_carmageddon_demo || harness_game_info.mode == eGame_splatpack_demo || harness_game_info.mode == eGame_splatpack_xmas_demo) { 
-         DoDemoGoodbye(); 
-     } 
-   
-     gProgram_state.racing = 0; 
-     SaveOptions(); 
-     if (gNet_mode != eNet_mode_none) { 
-         NetLeaveGame(gCurrent_net_game); 
-     } 
-     ShutdownNetIfRequired(); 
-     if (gSound_available) { 
-         DRS3ShutDown(); 
-     } 
-     if (gBr_initialized) { 
-         ClearEntireScreen(); 
-     } 
-     PDRevertPalette(); 
-     StopMusic(); 
-     PDShutdownSystem(); 
-     CloseDiagnostics(); 
- } 
-   
- // IDA: tU32 __cdecl TrackCount(br_actor *pActor, tU32 *pCount) 
- tU32 TrackCount(br_actor* pActor, tU32* pCount) { 
-     //unsigned int x; // Pierre-Marie Baty -- unused variable 
-     //unsigned int z; // Pierre-Marie Baty -- unused variable 
-     //int ad; // Pierre-Marie Baty -- unused variable 
-     //float e; // Pierre-Marie Baty -- unused variable 
-     LOG_TRACE("(%p, %p)", pActor, pCount); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __cdecl CheckNumberOfTracks() 
- void CheckNumberOfTracks(void) { 
-     //tU32 track_count; // Pierre-Marie Baty -- unused variable 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall ServiceTheGame(int pRacing@<EAX>) 
- void ServiceTheGame(int pRacing) { 
-   
-     CheckMemory(); 
-     if (!pRacing) { 
-         CyclePollKeys(); 
-     } 
-     PollKeys(); 
-     if (PDServiceSystem(gFrame_period)) { 
-         QuitGame(); 
-     } 
-     if (!pRacing) { 
-         CheckSystemKeys(0); 
-     } 
-     if (!pRacing && gSound_enabled) { 
-         if (gProgram_state.cockpit_on && gProgram_state.cockpit_image_index >= 0) { 
-             S3Service(1, 2); 
-         } else { 
-             S3Service(0, 2); 
-         } 
-     } 
-     NetService(pRacing); 
- } 
-   
- // IDA: void __cdecl ServiceGame() 
- void ServiceGame(void) { 
-     ServiceTheGame(0); 
- } 
-   
- // IDA: void __cdecl ServiceGameInRace() 
- void ServiceGameInRace(void) { 
-     LOG_TRACE("()"); 
-   
-     ServiceTheGame(1); 
-     CheckKevKeys(); 
- } 
-   
- // IDA: void __usercall GameMain(int pArgc@<EAX>, char **pArgv@<EDX>) 
- void GameMain(int pArgc, char** pArgv) { 
-     tPath_name CD_dir; 
-   
-     PDSetFileVariables(); 
-     PDBuildAppPath(gApplication_path); 
-     OpenDiagnostics(); 
-   
-     strcat(- gApplication_path , "DATA");
 
-   
-     UsePathFileToDetermineIfFullInstallation(); 
-     if (!gCD_fully_installed && GetCDPathFromPathsTxtFile(CD_dir) && !PDCheckDriveExists(CD_dir)) { 
-         PDInitialiseSystem(); 
-         fprintf(- stderr , "Can't find the Carmageddon CD\n");
 
-     } 
-     InitialiseDeathRace(pArgc, pArgv); 
-     DoProgram(); 
-     QuitGame(); 
- } 
-