diff options
Diffstat (limited to 'engines/gob/init.cpp')
-rw-r--r-- | engines/gob/init.cpp | 124 |
1 files changed, 42 insertions, 82 deletions
diff --git a/engines/gob/init.cpp b/engines/gob/init.cpp index 21f8ed36f8..417fa7b52a 100644 --- a/engines/gob/init.cpp +++ b/engines/gob/init.cpp @@ -25,89 +25,52 @@ #include "common/endian.h" #include "gob/gob.h" -#include "gob/dataio.h" -#include "gob/global.h" #include "gob/init.h" -#include "gob/video.h" -#include "gob/sound.h" -#include "gob/timer.h" -#include "gob/sound.h" -#include "gob/game.h" -#include "gob/draw.h" +#include "gob/global.h" #include "gob/util.h" +#include "gob/dataio.h" #include "gob/cdrom.h" +#include "gob/draw.h" +#include "gob/game.h" +#include "gob/sound.h" +#include "gob/video.h" namespace Gob { -void game_start(void); - const char *Init::_fontNames[] = { "jeulet1.let", "jeulet2.let", "jeucar1.let", "jeumath.let" }; Init::Init(GobEngine *vm) : _vm(vm) { _palDesc = 0; } -void Init::findBestCfg(void) { - _vm->_global->_videoMode = VIDMODE_VGA; - _vm->_global->_useMouse = _vm->_global->_mousePresent; - _vm->_global->_soundFlags = MIDI_FLAG | SPEAKER_FLAG | BLASTER_FLAG | ADLIB_FLAG; -} - void Init::cleanup(void) { - if (_vm->_global->_debugFlag == 0) - _vm->_gtimer->disableTimer(); - _vm->_video->freeDriver(); - _vm->_video->freeSurfDesc(_vm->_global->_pPrimarySurfDesc); - _vm->_global->_pPrimarySurfDesc = 0; + _vm->_global->_primarySurfDesc = 0; _vm->_snd->speakerOff(); - - _vm->_dataio->closeDataFile(); - - if (_vm->_global->_sprAllocated != 0) - warning("cleanup: Allocated sprites left: %d", _vm->_global->_sprAllocated); - _vm->_snd->stopSound(0); + _vm->_dataIO->closeDataFile(); } void Init::initGame(char *totName) { int16 handle2; int16 handle; - int32 i; char *infBuf; char *infPtr; char *infEnd; - int16 j; char buffer[20]; int32 varsCount; -/* -src = byte ptr -2Eh -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -handle2 = word ptr -0Eh -fileHandle = word ptr -0Ch -numFromTot = word ptr -0Ah -memAvail = dword ptr -6 -memBlocks = word ptr -2*/ - - _vm->_global->_disableVideoCfg = 0x11; - _vm->_global->_disableMouseCfg = 0x15; - - soundVideo(1000, 1); - - handle2 = _vm->_dataio->openData("intro.stk"); + + initVideo(); + + handle2 = _vm->_dataIO->openData("intro.stk"); if (handle2 >= 0) { - _vm->_dataio->closeData(handle2); - _vm->_dataio->openDataFile("intro.stk"); + _vm->_dataIO->closeData(handle2); + _vm->_dataIO->openDataFile("intro.stk"); } _vm->_util->initInput(); - _vm->_video->setHandlers(); _vm->_video->initPrimary(_vm->_global->_videoMode); _vm->_global->_mouseXShift = 1; _vm->_global->_mouseYShift = 1; @@ -119,74 +82,71 @@ memBlocks = word ptr -2*/ _vm->_global->_inter_variablesSizes = 0; _palDesc = new Video::PalDesc; - if ((_vm->_global->_videoMode != 0x13) && (_vm->_global->_videoMode != 0x14)) - error("initGame: Only 0x13 or 0x14 video mode is supported!"); + _vm->validateVideoMode(_vm->_global->_videoMode); + _vm->_global->_setAllPalette = true; _palDesc->vgaPal = _vm->_draw->_vgaPalette; _palDesc->unused1 = _vm->_draw->_unusedPalette1; _palDesc->unused2 = _vm->_draw->_unusedPalette2; _vm->_video->setFullPalette(_palDesc); - for (i = 0; i < 8; i++) + for (int i = 0; i < 8; i++) _vm->_draw->_fonts[i] = 0; - handle = _vm->_dataio->openData("intro.inf"); + handle = _vm->_dataIO->openData("intro.inf"); if (handle < 0) { - for (i = 0; i < 4; i++) { - handle2 = _vm->_dataio->openData(_fontNames[i]); + for (int i = 0; i < 4; i++) { + handle2 = _vm->_dataIO->openData(_fontNames[i]); if (handle2 >= 0) { - _vm->_dataio->closeData(handle2); - _vm->_draw->_fonts[i] = - _vm->_util->loadFont(_fontNames[i]); + _vm->_dataIO->closeData(handle2); + _vm->_draw->_fonts[i] = _vm->_util->loadFont(_fontNames[i]); } } } else { - _vm->_dataio->closeData(handle); + _vm->_dataIO->closeData(handle); - infPtr = _vm->_dataio->getData("intro.inf"); + infPtr = _vm->_dataIO->getData("intro.inf"); infBuf = infPtr; - infEnd = infBuf + _vm->_dataio->getDataSize("intro.inf"); + infEnd = infBuf + _vm->_dataIO->getDataSize("intro.inf"); - for (i = 0; i < 4; i++, infPtr++) { - for (j = 0; infPtr < infEnd && *infPtr >= ' '; - j++, infPtr++) - buffer[j] = *infPtr; + for (int i = 0; i < 4; i++, infPtr++) { + int j; + for (j = 0; infPtr < infEnd && *infPtr >= ' '; j++, infPtr++) + buffer[j] = *infPtr; buffer[j] = 0; + strcat(buffer, ".let"); - handle2 = _vm->_dataio->openData(buffer); + handle2 = _vm->_dataIO->openData(buffer); if (handle2 >= 0) { - _vm->_dataio->closeData(handle2); + _vm->_dataIO->closeData(handle2); _vm->_draw->_fonts[i] = _vm->_util->loadFont(buffer); } - if (infPtr == infEnd) + if ((infPtr + 1) >= infEnd) break; infPtr++; - if (infPtr == infEnd) - break; } delete[] infBuf; } - if (totName != 0) { + if (totName) { strcpy(buffer, totName); strcat(buffer, ".tot"); - } else { + } else strcpy(buffer, _vm->_startTot); - } - handle = _vm->_dataio->openData(buffer); + handle = _vm->_dataIO->openData(buffer); if (handle >= 0) { // Get variables count - _vm->_dataio->seekData(handle, 0x2c, SEEK_SET); - _vm->_dataio->readData(handle, (char *)&varsCount, 2); + _vm->_dataIO->seekData(handle, 0x2C, SEEK_SET); + _vm->_dataIO->readData(handle, (char *) &varsCount, 2); varsCount = FROM_LE_16(varsCount); - _vm->_dataio->closeData(handle); + _vm->_dataIO->closeData(handle); _vm->_global->_inter_variables = new char[varsCount * 4]; _vm->_global->_inter_variablesSizes = new byte[varsCount * 4]; @@ -216,15 +176,15 @@ memBlocks = word ptr -2*/ } } - for (i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { if (_vm->_draw->_fonts[i] != 0) _vm->_util->freeFont(_vm->_draw->_fonts[i]); } delete _palDesc; - _vm->_dataio->closeDataFile(); + _vm->_dataIO->closeDataFile(); _vm->_video->initPrimary(-1); cleanup(); } -} // End of namespace Gob +} // End of namespace Gob |