void CK_InitGame() { // Can't do much without memory! MM_Startup(); //TODO: Get filenames/etc from config/episode // Load the core datafiles CA_Startup(); // Setup saved games handling US_Setup(); // Set a few Menu Callbacks // TODO: Finish this! US_SetMenuFunctionPointers(&CK_LoadGame, &CK_SaveGame, &CK_ExitMenu); // Set ID engine Callbacks ca_beginCacheBox = CK_BeginCacheBox; ca_updateCacheBox = CK_UpdateCacheBox; ca_finishCacheBox = CK_FinishCacheBox; // Mark some chunks we'll need. CA_ClearMarks(); CA_MarkGrChunk(FON_MAINFONT); CA_MarkGrChunk(ca_gfxInfoE.offTiles8); CA_MarkGrChunk(ca_gfxInfoE.offTiles8m); CA_MarkGrChunk(MPIC_STATUSLEFT); CA_MarkGrChunk(MPIC_STATUSRIGHT); CA_MarkGrChunk(PIC_TITLESCREEN); // Moved from CA_Startup CA_CacheMarks(0); // Lock them chunks in memory. CA_LockGrChunk(FON_MAINFONT); MM_SetLock(&ca_graphChunks[ca_gfxInfoE.offTiles8], true); MM_SetLock(&ca_graphChunks[ca_gfxInfoE.offTiles8m], true); MM_SetLock(&ca_graphChunks[MPIC_STATUSLEFT], true); MM_SetLock(&ca_graphChunks[MPIC_STATUSRIGHT], true); // Compile the actions CK_ACT_SetupFunctions(); CK_KeenSetupFunctions(); CK_OBJ_SetupFunctions(); CK_Map_SetupFunctions(); CK_Misc_SetupFunctions(); ck_currentEpisode->setupFunctions(); CK_ACT_LoadActions("ACTION.EXT"); // Setup the screen VL_InitScreen(); // TODO: Palette initialization should be done in the terminator code VL_SetDefaultPalette(); // Setup input IN_Startup(); // Setup audio SD_Startup(); US_Startup(); // Wolf loads fonts here, but we do it in CA_Startup()? RF_Startup(); VL_ColorBorder(3); VL_ClearScreen(0); VL_Present(); // Create a surface for the dropdown menu ck_statusSurface = VL_CreateSurface(STATUS_W+64, STATUS_H+16); }
void InitGame() { MM_Startup(); id0_int_t i; /*#if 0 // Handle piracy screen... // movedata(FP_SEG(PIRACY),(id0_unsigned_t)PIRACY,0xb800,displayofs,4000); while (BE_ST_BiosScanCode(0) != sc_Return); //while ((bioskey(0)>>8) != sc_Return); #endif*/ #if GRMODE == EGAGR if (mminfo.mainmem < 335l*1024) { //#pragma warn -pro //#pragma warn -nod #ifdef REFKEEN_VER_KDREAMS_CGA_ALL BE_ST_textcolor(7); #endif #ifndef REFKEEN_VER_KDREAMS_CGA_ALL if (refkeen_current_gamever == BE_GAMEVER_KDREAMSE113) #endif { BE_ST_textbackground(0); } //#pragma warn +nod //#pragma warn +pro BE_ST_clrscr(); // we can't include CONIO because of a name conflict //#pragma warn +nod //#pragma warn +pro BE_ST_puts ("There is not enough memory available to play the game reliably. You can"); BE_ST_puts ("play anyway, but an out of memory condition will eventually pop up. The"); BE_ST_puts ("correct solution is to unload some TSRs or rename your CONFIG.SYS and"); BE_ST_puts ("AUTOEXEC.BAT to free up more memory.\n"); BE_ST_puts ("Do you want to (Q)uit, or (C)ontinue?"); //i = bioskey (0); //if ( (i>>8) != sc_C) i = BE_ST_BiosScanCode (0); if (i != sc_C) Quit (""); } #endif US_TextScreen(); VW_Startup (); RF_Startup (); IN_Startup (); SD_Startup (); US_Startup (); #ifdef REFKEEN_VER_KDREAMS_CGA_ALL US_UpdateTextScreen(); #endif CA_Startup (); US_Setup (); // // load in and lock down some basic chunks // CA_ClearMarks (); CA_MarkGrChunk(STARTFONT); CA_MarkGrChunk(STARTFONTM); CA_MarkGrChunk(STARTTILE8); CA_MarkGrChunk(STARTTILE8M); for ( id0_int_t j=KEEN_LUMP_START ; j<=KEEN_LUMP_END ; j++) { CA_MarkGrChunk(j); } #ifdef REFKEEN_VER_KDREAMS_CGA_ALL CA_CacheMarks (NULL); #elif defined REFKEEN_VER_KDREAMS_ANYEGA_ALL CA_CacheMarks (NULL, 0); #endif MM_SetLock (&grsegs[STARTFONT],true); MM_SetLock (&grsegs[STARTFONTM],true); MM_SetLock (&grsegs[STARTTILE8],true); MM_SetLock (&grsegs[STARTTILE8M],true); for ( id0_int_t j=KEEN_LUMP_START ; j<=KEEN_LUMP_END ; j++) { MM_SetLock (&grsegs[j],true); } setupAudio(); fontcolor = WHITE; RefKeen_FillObjStatesWithDOSPointers(); // Saved games compatibility US_FinishTextScreen(); }