diff options
Diffstat (limited to 'engines/m4/m4.cpp')
-rw-r--r-- | engines/m4/m4.cpp | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/engines/m4/m4.cpp b/engines/m4/m4.cpp index a5db6660d8..a999a6bd5a 100644 --- a/engines/m4/m4.cpp +++ b/engines/m4/m4.cpp @@ -147,6 +147,8 @@ MadsM4Engine::~MadsM4Engine() { delete _random; delete _palette; delete _globals; + delete _sound; + delete _driver; delete _resourceManager; } @@ -154,14 +156,14 @@ Common::Error MadsM4Engine::run() { // Initialize backend _screen = new M4Surface(true); // Special form for creating screen reference - MidiDriverType midiDriver = MidiDriver::detectMusicDriver(MDT_MIDI | MDT_ADLIB | MDT_PREFER_MIDI); - bool native_mt32 = ((midiDriver == MD_MT32) || ConfMan.getBool("native_mt32")); + MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM); + bool native_mt32 = ((MidiDriver::getMusicType(dev) == MT_MT32) || ConfMan.getBool("native_mt32")); - MidiDriver *driver = MidiDriver::createMidi(midiDriver); + _driver = MidiDriver::createMidi(dev); if (native_mt32) - driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE); + _driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE); - _midi = new MidiPlayer(this, driver); + _midi = new MidiPlayer(this, _driver); _midi->setGM(true); _midi->setNativeMT32(native_mt32); @@ -512,7 +514,6 @@ Common::Error MadsEngine::run() { // Set up needed common functionality MadsM4Engine::run(); - _scene = new MadsScene(this); _palette->setMadsSystemPalette(); _mouse->init("cursor.ss", NULL); @@ -536,16 +537,20 @@ Common::Error MadsEngine::run() { //for (int i = 0; i < _globals->getMessagesSize(); i++) //printf("%s\n----------\n", _globals->loadMessage(i)); - if ((getGameType() == GType_RexNebular) || (getGameType() == GType_DragonSphere)) { - loadMenu(MAIN_MENU); + if (getGameType() == GType_RexNebular) { + MadsGameLogic::initialiseGlobals(); + _scene = NULL; + loadMenu(MAIN_MENU); } else { - if (getGameType() == GType_DragonSphere) { - _scene->loadScene(FIRST_SCENE); - } else if (getGameType() == GType_Phantom) { - //_scene->loadScene(FIRST_SCENE); - _scene->loadScene(106); // a more interesting scene - } + // Test code + _scene = new MadsScene(this); + + startScene(FIRST_SCENE); + RGBList *_bgPalData; + _scene->loadBackground(FIRST_SCENE, &_bgPalData); + _palette->addRange(_bgPalData); + _scene->translate(_bgPalData); _scene->show(); @@ -564,15 +569,6 @@ Common::Error MadsEngine::run() { _viewManager->systemHotkeys().add(Common::KEYCODE_ESCAPE, &escapeHotkeyHandler); _viewManager->systemHotkeys().add(Common::KEYCODE_KP_MULTIPLY, &textviewHotkeyHandler); - // Load the general game SFX/voices - if (getGameType() == GType_RexNebular) { - _sound->loadDSRFile("rex009.dsr"); - } else if (getGameType() == GType_Phantom) { - _sound->loadDSRFile("phan009.dsr"); - } else if (getGameType() == GType_DragonSphere) { - _sound->loadDSRFile("drag009.dsr"); - } - uint32 nextFrame = g_system->getMillis(); while (!_events->quitFlag) { eventHandler(); |