summaryrefslogtreecommitdiff
path: root/3dc/avp/win95/winmain.bak
diff options
context:
space:
mode:
Diffstat (limited to '3dc/avp/win95/winmain.bak')
-rw-r--r--3dc/avp/win95/winmain.bak834
1 files changed, 834 insertions, 0 deletions
diff --git a/3dc/avp/win95/winmain.bak b/3dc/avp/win95/winmain.bak
new file mode 100644
index 0000000..b85447f
--- /dev/null
+++ b/3dc/avp/win95/winmain.bak
@@ -0,0 +1,834 @@
+/* Main designed spec for use with windows95*/
+
+#include "3dc.h"
+#include "module.h"
+#include "inline.h"
+#include "stratdef.h"
+#include "gamedef.h"
+#include "gameplat.h"
+
+#include "bh_types.h"
+#include "usr_io.h"
+#include "font.h"
+
+/* JH 27/1/97 */
+#include "comp_shp.h"
+
+#include "chnkload.hpp"
+#include "npcsetup.h" /* JH 30/4/97 */
+#include "krender.h"
+#include "pldnet.h"
+#include "avpview.h"
+#include "scrshot.hpp"
+#include "language.h"
+#include "huddefs.h"
+#include "vision.h"
+#include "pcmenus.h"
+#include "multmenu.h"
+#include "menudefs.h"
+#include "database.h"
+#include "avp_menus.h"
+#include "kshape.h"
+#define UseLocalAssert Yes
+
+#include "ourasert.h"
+
+#include "ffstdio.h" // fast file stdio
+
+#include "davehook.h"
+
+#include "rebmenus.hpp"
+#include "intro.hpp"
+#include "showcmds.h"
+
+#include "consbind.hpp"
+
+#include "AvpReg.hpp"
+#include "mempool.h"
+#include "GammaControl.h"
+
+#include "CDTrackSelection.h"
+
+/*------------Patrick 1/6/97---------------
+New sound system
+-------------------------------------------*/
+#include "psndplat.h"
+
+#define FRAMEAV 100
+
+#include "AvP_UserProfile.h"
+
+#define PROFILING_ON 0
+#if PROFILING_ON
+#include "pentime.h"
+#endif
+
+#if 0
+#undef PrintDebuggingText
+extern int PrintDebuggingText(const char* t, ...);
+#endif
+
+/*
+
+ externs for commonly used global variables and arrays
+
+*/
+extern int VideoMode;
+extern void (*UpdateScreen[]) (void);
+extern DISPLAYBLOCK* ActiveBlockList[];
+extern SCREENDESCRIPTORBLOCK ScreenDescriptorBlock;
+extern void (*SetVideoMode[]) (void);
+extern int FrameRate;
+
+extern int WindowRequestMode;
+
+extern int NumActiveBlocks;
+int HWAccel = 0;
+
+#if debug
+#define MainTextPrint 1
+extern int alloc_cnt, deall_cnt;
+extern int ItemCount;
+int DebugFontLoaded = 0;
+
+extern BOOL ForceLoad_Alien;
+extern BOOL ForceLoad_Marine;
+extern BOOL ForceLoad_Predator;
+extern BOOL ForceLoad_Hugger;
+extern BOOL ForceLoad_Queen;
+extern BOOL ForceLoad_Civvie;
+extern BOOL ForceLoad_PredAlien;
+extern BOOL ForceLoad_Xenoborg;
+extern BOOL ForceLoad_Pretorian;
+extern BOOL ForceLoad_SentryGun;
+
+
+BOOL UseMouseCentreing = FALSE;
+#else
+#define MainTextPrint 0
+#endif
+
+BOOL KeepMainRifFile=FALSE;
+
+extern void LoadKeyConfiguration();
+extern void DeInitialisePlayer();
+
+extern int AvP_MainMenus(void);
+extern int AvP_InGameMenus(void);
+
+extern IngameKeyboardInput_ClearBuffer(void);
+
+HINSTANCE AVP_HInstance, hInst;
+int AVP_NCmd;
+
+extern unsigned long TotalMemAllocated;
+
+char LevelName[] = {"predbit6\0QuiteALongNameActually"};
+static ELO ELOLevelToLoad = {&LevelName};
+
+int QuickStartMultiplayer=1;
+
+int VideoModeNotAvailable=0;
+
+extern int DebuggingCommandsActive;
+
+
+extern int WindowMode;
+void exit_break_point_fucntion ()
+{
+ #if debug
+ if (WindowMode == WindowModeSubWindow)
+ {
+ __asm int 3;
+ }
+ #endif
+}
+
+
+int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine, int nCmdShow)
+{
+ char * instr;
+ #if debug
+ int level_to_load = I_Num_Environments;
+ char * command_line = lpCmdLine;
+ #endif
+
+ AVP_HInstance = hInst = hInstance;
+ AVP_NCmd = nCmdShow;
+
+ AutorunOff();
+
+ EnumerateCardsAndVideoModes();
+
+ LoadCDTrackList(); //load list of cd tracks assigned to levels , from a text file
+
+// CDDA_Start();
+// CDDA_Play(1);
+
+ SetFastRandom();
+
+ /**** init game now ONLY sets up varibles for the whole
+ game. If you want to put something in it it must
+ be something that only needs to be called once
+ ****/
+ #if debug && 1//!PREDATOR_DEMO
+ {
+ #if OverrideOldMenus
+ {
+ HWAccel = 1;
+ }
+ #else
+ if(strstr(command_line, "-h"))
+ {
+ HWAccel = 1;
+ }
+ #endif
+
+ //see if any extra npc rif files should be loaded
+ {
+ char* strpos=strstr(command_line, "-l");
+ if(strpos)
+ {
+ while(strpos)
+ {
+ strpos+=2;
+ if(*strpos>='a' && *strpos<='z')
+ {
+ while(*strpos>='a' && *strpos<='z')
+ {
+ switch (*strpos)
+ {
+ case 'a':
+ ForceLoad_Alien = TRUE;
+ break;
+ case 'm':
+ ForceLoad_Marine = TRUE;
+ break;
+ case 'p':
+ ForceLoad_Predator = TRUE;
+ break;
+ case 'h':
+ ForceLoad_Hugger = TRUE;
+ break;
+ case 'q':
+ ForceLoad_Queen = TRUE;
+ break;
+ case 'c':
+ ForceLoad_Civvie = TRUE;
+ break;
+ case 'x':
+ ForceLoad_Xenoborg = TRUE;
+ break;
+ case 't':
+ ForceLoad_Pretorian = TRUE;
+ break;
+ case 'r':
+ ForceLoad_PredAlien = TRUE;
+ break;
+ case 's':
+ ForceLoad_SentryGun = TRUE;
+ break;
+ }
+ strpos++;
+ }
+ }
+ else
+ {
+ ForceLoad_Alien = TRUE;
+ }
+ strpos=strstr(strpos,"-l");
+ }
+ }
+ }
+
+ #ifdef AVP_DEBUG_VERSION
+ if (strstr(command_line, "-i")) WeWantAnIntro();
+ if (strstr(command_line, "-qm"))
+ {
+ QuickStartMultiplayer = 1;
+ }
+ else if (strstr(command_line, "-qa"))
+ {
+ QuickStartMultiplayer = 2;
+ }
+ else if (strstr(command_line, "-qp"))
+ {
+ QuickStartMultiplayer = 3;
+ }
+ else
+ {
+ QuickStartMultiplayer = 0;
+ }
+
+ if(strstr(command_line,"-keeprif"))
+ {
+ KeepMainRifFile=TRUE;
+ }
+
+ if (strstr(command_line, "-m"))
+ {
+ UseMouseCentreing = 1;
+ }
+ #endif //AVP_DEBUG_VERSION
+ }
+ #else
+ {
+ #if OverrideOldMenus
+ {
+ HWAccel = 1;
+ }
+ #endif
+ }
+ #endif
+
+ if(strstr(command_line,"-server"))
+ {
+ extern int DirectPlay_InitLobbiedGame();
+ //game has been launched by mplayer , we best humour it
+ LobbiedGame=LobbiedGame_Server;
+ if(!DirectPlay_InitLobbiedGame())
+ {
+ exit(0x6364);
+ }
+ }
+ else if(strstr(command_line,"-client"))
+ {
+ extern int DirectPlay_InitLobbiedGame();
+ //ditto
+ LobbiedGame=LobbiedGame_Client;
+ if(!DirectPlay_InitLobbiedGame())
+ {
+ exit(0x6364);
+ }
+ }
+ else if (strstr(command_line, "-debug"))
+ {
+ DebuggingCommandsActive = 1;
+ }
+
+ // Modified by Edmond for mplayer demo
+ #if MPLAYER_DEMO
+ if (!LobbiedGame)
+ {
+ MessageBox(NULL, "This demo can only be launched from Mplayer.", "Oh no!", MB_OK);
+ exit(33445);
+ }
+ #endif
+
+ #if PLAY_INTRO//(MARINE_DEMO||ALIEN_DEMO||PREDATOR_DEMO)
+ if (!LobbiedGame) // Edmond
+ WeWantAnIntro();
+ #endif
+ GetPathFromRegistry();
+
+ /* JH 28/5/97 */
+ /* Initialise 'fast' file system */
+ #if MARINE_DEMO
+ ffInit("fastfile\\mffinfo.txt","fastfile\\");
+ #elif ALIEN_DEMO
+ ffInit("alienfastfile\\ffinfo.txt","alienfastfile\\");
+ #else
+ ffInit("fastfile\\ffinfo.txt","fastfile\\");
+ #endif
+
+ InitGame();
+
+
+ /*** Define video mode for windows initialisation ***/
+ InitialVideoMode();
+
+ /****** Put in by John to sort out easy sub window mode ******/
+ /****** REMOVE FOR GAME!!!!! ******/
+
+ #if debug && 1//!PREDATOR_DEMO
+ if(strstr(command_line, "-w"))
+ {
+ WindowRequestMode = WindowModeSubWindow;
+ if (!HWAccel)
+ RasterisationRequestMode = RequestSoftwareRasterisation;
+ }
+ if(instr = strstr(command_line, "-s"))
+ sscanf(instr, "-s%d", &level_to_load);
+
+ #endif
+
+ Env_List[0] = &(ELOLevelToLoad);
+ level_to_load = 0;
+
+ /******* System initialisation **********/
+ InitialiseSystem(hInstance, nCmdShow);
+ InitialiseRenderer();
+
+ InitOptionsMenu(); /* by this time we know all about the video card, etc */
+
+ LoadKeyConfiguration();
+ /********** Grab The Video mode **********/
+ /* JH - nope, not yet; not until we start the menus
+ (or if debugging, start the game), do we need to
+ set the initial video mode */
+
+
+ /*-------------------Patrick 2/6/97-----------------------
+ Start the sound system
+ ----------------------------------------------------------*/
+ SoundSys_Start();
+ CDDA_Start();
+
+ /* kill mouse cursor */
+ SetCursor(NULL);
+
+ /* load language file and setup text string access */
+ InitTextStrings();
+
+ ChangeDirectDrawObject();
+ AvP.LevelCompleted = 0;
+ LoadSounds("PLAYER");
+
+ #if PREDATOR_DEMO||MARINE_DEMO||ALIEN_DEMO
+ if(AvP_MainMenus())
+ #else
+ while(AvP_MainMenus())
+ #endif
+ {
+ int menusActive=0;
+ int thisLevelHasBeenCompleted=0;
+ #if !(PREDATOR_DEMO||MARINE_DEMO||ALIEN_DEMO)
+ if(instr = strstr(command_line, "-n"))
+ {
+ sscanf(instr, "-n %s", &LevelName);
+ }
+ #endif
+
+ #if debug
+ if(UseMouseCentreing)
+ {
+ //Start thread that recentres mouse , making it easier to play
+ //in subwindow mode
+ InitCentreMouseThread();
+ }
+ #endif
+// Env_List[0] = &(ELOLevelToLoad);
+// level_to_load = 0;
+// AvP.PlayerType = I_Marine;
+
+
+ /* turn off any special effects */
+ d3d_light_ctrl.ctrl = LCCM_NORMAL;
+ d3d_overlay_ctrl.ctrl = OCCM_NORMAL;
+
+ /* JH 20/5/97
+ The video mode is no longer set when exiting the menus
+ (not necessary if user selects EXIT)
+ So it is set here */
+
+ /********** Grab The Video mode **********/
+ GetCorrectDirectDrawObject();
+
+ if(!SetGameVideoMode())
+ {
+ VideoModeNotAvailable=1;
+ continue;
+ }
+
+ /* Dubious restart hack for DirectDraw problems */
+ /* JH - I'm not sure this is really necessary
+ - it only comes into play if you try and set
+ a video mode which is not supported
+ BUT we are never going to try and do that
+ - or are we? */
+ HandleVideoModeRestarts(hInstance, nCmdShow);
+
+
+ /* Check Gamma Settings are correct after video mode change */
+ InitialiseGammaSettings(RequestedGammaSetting);
+
+
+
+
+ /**** init the chunk loaders ***************/
+
+ // no longer required here
+
+ // Load precompiled shapes
+ start_of_loaded_shapes = load_precompiled_shapes();
+
+ /*********** Load up the character stuff *******/
+
+ InitCharacter();
+
+ /* KJL 17:56:14 26/02/98 - load a font required for Dave's HUD */
+// LoadPFFont(DATABASE_MESSAGE_FONT);
+
+ /*********** Read in the env Map **************/
+
+ #if debug
+ if(level_to_load != I_Num_Environments)
+ {
+ if((level_to_load < 0) || (level_to_load > I_Num_Environments))
+ #ifdef MPLAYER_DEMO
+ level_to_load = I_Dml1;
+ #else
+ level_to_load = I_Sp1;
+ #endif
+
+ AvP.CurrentEnv = AvP.StartingEnv = level_to_load;
+ }
+ #endif
+
+ LoadRifFile(); /* sets up a map*/
+ #if debug
+ DebugFontLoaded = 1;
+ #endif
+
+ /*********** Process the data ************/
+ AssignAllSBNames();
+ StartGame();
+
+// UnloadRifFile();//deletes environment File_Chunk since it is no longer needed
+
+
+ /* Patrick 26/6/97
+ Load the game sounds here: should be done after loading everthing
+ else, incase sounds take up system memory */
+// LoadSounds("PLAYER");
+
+ /* JH 28/5/97 */
+ /* remove resident loaded 'fast' files */
+ ffcloseall();
+ /*********** Play the game ***************/
+
+ /* KJL 15:43:25 03/11/97 - run until this boolean is set to 0 */
+ AvP.MainLoopRunning = 1;
+
+ ScanImagesForFMVs();
+
+ ResetFrameCounter();
+ Game_Has_Loaded();
+ ResetFrameCounter();
+
+ if(AvP.Network!=I_No_Network)
+ {
+ /*Need to choose a starting position for the player , but first we must look
+ through the network messages to find out which generator spots are currently clear*/
+ netGameData.myGameState = NGS_Playing;
+ MinimalNetCollectMessages();
+ TeleportNetPlayerToAStartingPosition(Player->ObStrategyBlock,1);
+ }
+
+ IngameKeyboardInput_ClearBuffer();
+ while(AvP.MainLoopRunning)
+ {
+
+ #if debug
+ #if 0
+ DumpBoundsCheckInfo(DUMPTOSCREEN);
+ #endif
+ #endif
+
+ CheckForWindowsMessages();
+ CursorHome();
+
+ #if debug
+ if (memoryInitialisationFailure)
+ {
+ textprint("Initialisation not completed - out of memory!\n");
+ GLOBALASSERT(1 == 0);
+ }
+ #endif
+
+ switch(AvP.GameMode)
+ {
+ case I_GM_Playing:
+ {
+ if ((!menusActive || (AvP.Network!=I_No_Network && !netGameData.skirmishMode)) && !AvP.LevelCompleted)
+ {
+ #if MainTextPrint /* debugging stuff */
+ {
+
+ if (ShowDebuggingText.FPS) ReleasePrintDebuggingText("FrameRate = %d fps\n",FrameRate);
+ if (ShowDebuggingText.Environment) ReleasePrintDebuggingText("Environment %s\n", Env_List[AvP.CurrentEnv]->main);
+ if (ShowDebuggingText.Coords) ReleasePrintDebuggingText("Player World Coords: %d,%d,%d\n",Player->ObWorld.vx,Player->ObWorld.vy,Player->ObWorld.vz);
+
+ {
+ PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
+ PLAYER_WEAPON_DATA *weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]);
+ TEMPLATE_WEAPON_DATA *twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber];
+ if (ShowDebuggingText.GunPos)
+ {
+ PrintDebuggingText("Gun Position x:%d,y:%d,z:%d\n",twPtr->RestPosition.vx,twPtr->RestPosition.vy,twPtr->RestPosition.vz);
+ }
+ }
+ }
+ #endif /* MainTextPrint */
+
+ DoAllShapeAnimations();
+
+ UpdateGame();
+
+ #if 1
+ #if PROFILING_ON
+ ProfileStart();
+ #endif
+ AvpShowViews();
+ #if PROFILING_ON
+ ProfileStop("SHOW VIEW");
+ #endif
+
+ //Do screen shot here so that text and hud graphics aren't shown
+ #if PROFILING_ON
+ ProfileStart();
+ #endif
+ MaintainHUD();
+ #if PROFILING_ON
+ ProfileStop("RENDER HUD");
+ #endif
+
+ #if debug
+ FlushTextprintBuffer();
+ #endif
+
+ //check cd status
+ CheckCDAndChooseTrackIfNeeded();
+
+ // check to see if we're pausing the game;
+ // if so kill off any sound effects
+ if(InGameMenusAreRunning() && ( (AvP.Network!=I_No_Network && netGameData.skirmishMode) || (AvP.Network==I_No_Network)) )
+ SoundSys_StopAll();
+ }
+ else
+ {
+ ReadUserInput();
+// UpdateAllFMVTextures();
+ SoundSys_Management();
+ #if SOFTWARE_RENDERER
+ FlushSoftwareZBuffer();
+ #else
+ FlushD3DZBuffer();
+ #endif˙
+ {
+ extern void ThisFramesRenderingHasBegun(void);
+ ThisFramesRenderingHasBegun();
+ }
+ }
+
+ {
+ menusActive = AvP_InGameMenus();
+ if(AvP.RestartLevel) menusActive=0;
+ }
+ if (AvP.LevelCompleted)
+ {
+ SoundSys_FadeOutFast();
+ DoCompletedLevelStatisticsScreen();
+ thisLevelHasBeenCompleted = 1;
+ }
+
+ {
+ /* after this call, no more graphics can be drawn until the next frame */
+ extern void ThisFramesRenderingHasFinished(void);
+ ThisFramesRenderingHasFinished();
+ }
+
+ /* JH 5/6/97 - this function may draw translucent polygons to the whole screen */
+ //HandleD3DScreenFading();
+ #else
+ {
+
+ ColourFillBackBuffer(0);
+ }
+ #endif
+
+
+ InGameFlipBuffers();
+
+ FrameCounterHandler();
+ {
+ PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
+
+ if (!menusActive && playerStatusPtr->IsAlive && !AvP.LevelCompleted)
+ {
+ DealWithElapsedTime();
+ }
+ }
+ break;
+ }
+ case I_GM_Menus:
+ {
+ AvP.GameMode = I_GM_Playing;
+ //StartGameMenus();
+ LOCALASSERT(AvP.Network == I_No_Network);
+ //AccessDatabase(0);
+ break;
+ }
+ #if 0
+ case I_GM_Paused:
+ {
+ {
+ extern void DoPcPause(void);
+ DoPcPause();
+ }
+ break;
+ }
+ #endif
+
+ default:
+ {
+ GLOBALASSERT(2<1);
+ break;
+ }
+ }
+
+ if(AvP.RestartLevel)
+ {
+ AvP.RestartLevel=0;
+ AvP.LevelCompleted = 0;
+ FixCheatModesInUserProfile(UserProfilePtr);
+ RestartLevel();
+ }
+
+
+ }// end of main game loop
+ {
+ AvP.LevelCompleted = thisLevelHasBeenCompleted;
+ }
+
+ FixCheatModesInUserProfile(UserProfilePtr);
+
+ #if !(PREDATOR_DEMO||MARINE_DEMO||ALIEN_DEMO)
+ TimeStampedMessage("We're out of the main loop");
+
+ /* KJL 17:56:14 26/02/98 - unload a font required for Dave's HUD */
+// UnloadFont(&AvpFonts[DATABASE_MESSAGE_FONT]);
+ #if 1
+ {
+ extern void CloseFMV(void);
+ CloseFMV();
+ ReleaseAllFMVTextures();
+ }
+ #endif
+
+ /* DHM 23/3/98 */
+// REBMENUS_ProjectSpecific_EndOfMainLoopHook();
+
+ /* DHM 8/4/98 */
+ CONSBIND_WriteKeyBindingsToConfigFile();
+ TimeStampedMessage("After key bindings writen");
+
+ /* CDF 2/10/97 */
+ DeInitialisePlayer();
+ TimeStampedMessage("After DeInitialisePlayer");
+
+ DeallocatePlayersMirrorImage();
+ TimeStampedMessage("After DeallocatePlayersMirrorImage");
+
+ /* KJL 15:26:43 03/12/97 - clear data */
+ KillHUD();
+ TimeStampedMessage("After KillHUD");
+
+ Destroy_CurrentEnvironment();
+ TimeStampedMessage("After Destroy_CurrentEnvironment");
+ DeallocateAllImages();
+ TimeStampedMessage("After DeallocateAllImages");
+ EndNPCs(); /* JH 30/4/97 - unload npc rifs */
+ TimeStampedMessage("After EndNPCs");
+ ExitGame();
+ #endif
+ /* Patrick 26/6/97
+ Stop and remove all game sounds here, since we are returning to the menus */
+ SoundSys_StopAll();
+ ResetEaxEnvironment();
+ //make sure the volume gets reset for the menus
+ SoundSys_ResetFadeLevel();
+
+ TimeStampedMessage("After SoundSys_StopAll");
+
+// SoundSys_RemoveAll();
+
+ TimeStampedMessage("After SoundSys_RemoveAll");
+ CDDA_Stop();
+ TimeStampedMessage("After CDDA_Stop");
+
+ /* netgame support */
+ #if SupportWindows95 /* call me paranoid */
+ if(AvP.Network != I_No_Network)
+ {
+ /* we cleanup and reset our game mode here, at the end of the game loop, as other
+ clean-up functions need to know if we've just exited a netgame */
+ EndAVPNetGame();
+ //EndOfNetworkGameScreen();
+ }
+ #endif
+
+ //need to get rid of the player rifs before we can clear the memory pool
+
+ ClearMemoryPool();
+
+ #if debug
+ if(UseMouseCentreing)
+ {
+ //Stop thread that recentres mouse , making it easier to play
+ //in subwindow mode
+ FinishCentreMouseThread();
+ }
+ #endif
+
+ if(LobbiedGame)
+ {
+ /*
+ We have been playing a lobbied game , and have now diconnected.
+ Since we can't start a new multiplayer game , exit to avoid confusion
+ */
+ break;
+ }
+ }
+ #if !(PREDATOR_DEMO||MARINE_DEMO||ALIEN_DEMO)
+ TimeStampedMessage("After Menus");
+
+ /* Added 28/1/98 by DHM: hook for my code on program shutdown */
+ {
+ DAVEHOOK_UnInit();
+ }
+ TimeStampedMessage("After DAVEHOOK_UnInit");
+
+ /*-------------------Patrick 2/6/97-----------------------
+ End the sound system
+ ----------------------------------------------------------*/
+ SoundSys_StopAll();
+ SoundSys_RemoveAll();
+
+
+
+
+
+ #else
+ QuickSplashScreens();
+ #endif
+ #if !(PREDATOR_DEMO||MARINE_DEMO||ALIEN_DEMO)
+ TimeStampedMessage("After SoundSys_End");
+ TimeStampedMessage("After CDDA_End");
+ /* unload language file */
+// KillTextStrings();
+// TimeStampedMessage("After KillTextStrings");
+ ExitSystem();
+ TimeStampedMessage("After ExitSystem");
+
+// ffKill(); /* to avoid misreported memory leaks */
+ TimeStampedMessage("After ffKill");
+ #else
+ SoundSys_End();
+ ReleaseDirect3D();
+ //TimeStampedMessage("after ReleaseDirect3D");
+
+ /* Kill windows procedures */
+ ExitWindowsSystem();
+ //TimeStampedMessage("after ExitWindowsSystem");
+
+ #endif
+ CDDA_End();
+ ClearMemoryPool();
+
+ AutorunOn();
+
+ return(0);
+}
+