Ticket #8854: lok.patch

File lok.patch, 25.4 KB (added by SF/pix2, 12 years ago)
  • engines/kyra/kyra.cpp

     
    9191        // more mature than our MIDI player. For example we are missing MT-32 support
    9292        // and it seems our MIDI playback code has threading issues (see bug #1506583
    9393        // "KYRA1: Crash on exceeded polyphony" for more information).
    94         int midiDriver = MidiDriver::detectMusicDriver(MDT_MIDI | MDT_ADLIB/* | MDT_PREFER_MIDI*/);
     94        int midiDriver = MidiDriver::detectMusicDriver(MDT_MIDI | MDT_ADLIB | MDT_DIGMID/* | MDT_PREFER_MIDI*/);
    9595
    9696        if (_flags.platform == Common::kPlatformFMTowns || _flags.platform == Common::kPlatformPC98) {
    9797                // TODO: currently we don't support the PC98 sound data,
     
    104104        } else if (midiDriver == MD_ADLIB) {
    105105                _sound = new SoundAdlibPC(this, _mixer);
    106106                assert(_sound);
     107        } else if (midiDriver == MD_DIGMID) {
     108                _sound=new SoundDigitalMidi(this, _mixer);
     109                assert(_sound);
    107110        } else {
    108111                bool native_mt32 = ((midiDriver == MD_MT32) || ConfMan.getBool("native_mt32"));
    109112
     
    382385
    383386} // End of namespace Kyra
    384387
     388
  • engines/kyra/sound.cpp

     
    545545#endif // USE_FLAC
    546546#ifdef USE_VORBIS
    547547        { ".VOG", Audio::makeVorbisStream },
     548        { ".OGG", Audio::makeVorbisStream },
    548549#endif // USE_VORBIS
    549550#ifdef USE_MAD
    550551        { ".VO3", Audio::makeMP3Stream },
     
    555556} // end of namespace Kyra
    556557
    557558
     559
  • engines/kyra/sound.h

     
    7373                kAdlib,
    7474                kMidiMT32,
    7575                kMidiGM,
    76                 kTowns
     76                kTowns,
     77                kDigitalMidi
    7778        };
    7879
    7980        virtual kType getMusicType() const = 0;
     
    375376        Common::Mutex _mutex;
    376377};
    377378
     379/**
     380 * Digital Replacement Driver for MIDI
     381 *
     382 * This device replaces the original midi (music and effects) with digital recordings
     383 * Audio files available from http://pix.www.idnet.com/lokoggs.rar
     384 *
     385 * Currently only supports LOK1
     386 *
     387 */
     388class SoundDigitalMidi : public Sound {
     389public:
     390        SoundDigitalMidi(KyraEngine *vm, Audio::Mixer *mixer);
     391        ~SoundDigitalMidi();
     392
     393        kType getMusicType() const { return kDigitalMidi; }
     394
     395        bool init() { return true; }
     396
     397        void loadSoundFile(uint file);
     398
     399        void playTrack(uint8 track);
     400        void haltTrack();
     401
     402        void playSoundEffect(uint8 track);
     403
     404        void beginFadeOut();
     405
     406private:
     407        void playMusic(uint8 *data, uint32 size);
     408        void stopMusic();
     409        void stopSoundEffect();
     410
     411        uint8 _musicVolume;
     412        uint8 _sfxVolume;
     413
     414        Common::String _currentTrack;
     415        Common::String _currentSoundEffect;
     416
     417        struct DigitalTrack {
     418                const uint8 track;
     419                const bool loop;
     420        };
     421
     422        static const DigitalTrack _introTracks[];
     423        static const DigitalTrack _kyra1aTracks[];
     424        static const DigitalTrack _kyra1bTracks[];
     425        static const DigitalTrack _kyra2aTracks[];
     426        static const DigitalTrack _kyra3aTracks[];
     427        static const DigitalTrack _kyra4aTracks[];
     428        static const DigitalTrack _kyra4bTracks[];
     429        static const DigitalTrack _kyra5aTracks[];
     430        static const DigitalTrack _kyra5bTracks[];
     431        static const DigitalTrack _kyramiscTracks[];
     432
     433        DigitalTrack getDigitalMusicTrack(uint8 track);
     434        DigitalTrack getDigitalEffectsTrack(uint8 track);
     435};
     436
    378437class SoundTowns_EuphonyDriver;
    379438class SoundTowns : public MidiDriver, public Sound {
    380439public:
  • engines/kyra/sound_digitalmidi.cpp

     
     1/* ScummVM - Graphic Adventure Engine
     2 *
     3 * ScummVM is the legal property of its developers, whose names
     4 * are too numerous to list here. Please refer to the COPYRIGHT
     5 * file distributed with this source distribution.
     6 *
     7 * This program is free software; you can redistribute it and/or
     8 * modify it under the terms of the GNU General Public License
     9 * as published by the Free Software Foundation; either version 2
     10 * of the License, or (at your option) any later version.
     11
     12 * This program is distributed in the hope that it will be useful,
     13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 * GNU General Public License for more details.
     16 * You should have received a copy of the GNU General Public License
     17 * along with this program; if not, write to the Free Software
     18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
     19 *
     20 */
     21
     22
     23#include "common/system.h"
     24#include "kyra/resource.h"
     25#include "kyra/sound.h"
     26
     27#include "sound/mixer.h"
     28#include "sound/voc.h"
     29#include "sound/audiostream.h"
     30
     31#include "sound/mp3.h"
     32#include "sound/vorbis.h"
     33#include "sound/flac.h"
     34
     35#include "sound/audiocd.h"
     36
     37namespace Kyra {       
     38
     39SoundDigitalMidi::SoundDigitalMidi(KyraEngine *vm, Audio::Mixer *mixer) : Sound(vm, mixer) {
     40}
     41
     42SoundDigitalMidi::~SoundDigitalMidi() {
     43        stopMusic();
     44        stopSoundEffect();
     45}
     46
     47SoundDigitalMidi::DigitalTrack SoundDigitalMidi::getDigitalMusicTrack(uint8 track) {
     48          if (_vm->game() == GI_KYRA1) {
     49                  if(_currentTrack == "kyra1a") return _kyra1aTracks[track];
     50                  else if (_currentTrack == "kyra1b") return _kyra1bTracks[track];
     51                  else if (_currentTrack == "kyra2a") return _kyra2aTracks[track];
     52                  else if (_currentTrack == "kyra3a") return _kyra3aTracks[track];
     53                  else if (_currentTrack == "kyra4a") return _kyra4aTracks[track];
     54                  else if (_currentTrack == "kyra4b") return _kyra4bTracks[track];
     55                  else if (_currentTrack == "kyra5a") return _kyra5aTracks[track];
     56                  else if (_currentTrack == "kyra5b") return _kyra5bTracks[track];
     57                  else if (_currentTrack == "kyramisc") return _kyramiscTracks[track];
     58                  else if (_currentTrack == "intro") return _introTracks[track];
     59           }
     60       return _introTracks[0]; //return empty track
     61     
     62 }
     63SoundDigitalMidi::DigitalTrack SoundDigitalMidi::getDigitalEffectsTrack(uint8 track) {
     64         if (_vm->game() == GI_KYRA1) {
     65                return getDigitalMusicTrack(track);
     66         }
     67         return _introTracks[0]; //return empty track
     68}
     69
     70void SoundDigitalMidi::loadSoundFile(uint file) {
     71        Common::String filename = fileListEntry(file);
     72        filename.toLowercase();
     73        _currentTrack = filename;
     74        stopMusic();
     75        stopSoundEffect();
     76}
     77
     78void SoundDigitalMidi::stopMusic() {
     79        if (AudioCD.isPlaying()) AudioCD.stop();
     80}
     81
     82void SoundDigitalMidi::playTrack(uint8 track) {
     83        DigitalTrack dTrack = getDigitalMusicTrack(track);
     84        bool loop = dTrack.loop;
     85        uint8 tracktoplay = dTrack.track;
     86       
     87        if(tracktoplay != 0) {
     88                AudioCD.play(tracktoplay, loop ? -1 : 1, 0, 0);
     89        }
     90}
     91
     92void SoundDigitalMidi::haltTrack() {
     93        if (AudioCD.isPlaying()) AudioCD.stop();
     94}
     95
     96void SoundDigitalMidi::playSoundEffect(uint8 track) {
     97        char filenamebuffer[25];
     98        DigitalTrack dTrack=getDigitalEffectsTrack(track);
     99        sprintf(filenamebuffer, "track%i", dTrack.track);
     100        if(dTrack.track!=0) {
     101                stopSoundEffect();
     102                voicePlay(filenamebuffer,true);
     103                _currentSoundEffect = filenamebuffer;
     104        }
     105}
     106
     107void SoundDigitalMidi::beginFadeOut() {
     108// TODO: add fadeout support
     109}
     110
     111void SoundDigitalMidi::stopSoundEffect() {
     112        for (int i = 0; i < kNumChannelHandles; ++i) {
     113                if (_soundChannels[i].file == _currentSoundEffect)
     114                        _mixer->stopHandle(_soundChannels[i].channelHandle);
     115        }
     116}
     117
     118const SoundDigitalMidi::DigitalTrack SoundDigitalMidi::_introTracks[] = {
     119        {0, false},  {0, false},  {1, false}, {2, false},  {3, true},   {4, true},
     120        {0, false},  {0, false},  {0, false}, {0, false},  {0, false},  {0, false},
     121        {0, false},  {0, false},  {0, false}, {0, false},  {0, false},  {0, false},
     122        {0, false},  {0, false},  {0, false}, {0, false},  {50, false}, {51, false},
     123        {52, false}, {53, false}, {0, false}, {54, false}, {55, false}, {0, false},
     124        {56, false}, {57, false}, {0, false}, {58, false}, {59, false}, {60, false},
     125        {61, false}, {62, false}, {63, false}
     126};
     127
     128const SoundDigitalMidi::DigitalTrack SoundDigitalMidi::_kyra1aTracks[] = {
     129        {0, false},   {0, false},   {5, true},    {6, true},    {7, true},    {0, false},
     130        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     131        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     132        {0, false},   {0, false},   {71, false},  {72, false},  {73, false},  {74, false},
     133        {75, false},  {76, false},  {77, false},  {78, false},  {79, false},  {80, false},
     134        {81, false},  {82, false},  {83, false},  {84, false},  {85, false},  {86, false},
     135        {87, false},  {88, false},  {89, false},  {90, false},  {0, false},   {0, false},
     136        {0, false},   {94, false},  {95, false},  {0, false},   {97, false},  {98, false},
     137        {99, false},  {100, false}, {101, false}, {102, false}, {103, false}, {104, false},
     138        {105, false}, {106, false}, {107, false}, {108, false}, {109, false}, {110, false},
     139        {111, false}, {112, false}, {113, false}, {114, false}, {115, false}, {0, false},
     140        {0, false},   {118, false}, {119, false}, {120, false}, {121, false}, {122, false},
     141        {123, false}, {124, false}, {125, true},  {0, false},   {127, false}, {128, false},
     142        {129, false}, {130, false}, {131, false}, {132, false}, {133, false}, {134, false},
     143        {135, false}, {136, false}, {137, false}, {138, false}, {139, false}, {140, false},
     144        {141, false}, {142, false}, {143, true},  {144, false}, {145, false}, {146, false},
     145        {147, false}, {148, false}, {149, false}, {150, false}, {151, false}, {152, false},
     146        {153, false}, {154, false}, {155, false}, {156, false}, {157, false}, {158, false},
     147        {159, false}, {160, false}, {0, false},   {162, false}, {163, false}, {164, false},
     148        {165, false}, {0, false},   {167, false}, {168, false}, {169, false}, {170, false}
     149};
     150const SoundDigitalMidi::DigitalTrack SoundDigitalMidi::_kyra1bTracks[] = {
     151        {0, false},   {0, false},   {9, true},    {10, false},  {11, true},   {45, true},
     152        {12, false},  {13, false},  {14, true},   {15, false},  {0, false},   {8, false},
     153        {0, false},   {16, true},   {17, true},   {0, false},   {0, false},   {0, false},
     154        {0, false},   {0, false},   {71, false},  {72, false},  {73, false},  {74, false},
     155        {75, false},  {76, false},  {77, false},  {78, false},  {79, false},  {80, false},
     156        {81, false},  {82, false},  {83, false},  {84, false},  {85, false},  {86, false},
     157        {87, false},  {88, false},  {89, false},  {90, false},  {0, false},   {0, false},
     158        {0, false},   {94, false},  {95, false},  {0, false},   {97, false},  {98, false},
     159        {99, false},  {100, false}, {101, false}, {102, false}, {103, false}, {104, false},
     160        {105, false}, {106, false}, {107, false}, {108, false}, {109, false}, {110, false},
     161        {111, false}, {112, false}, {113, false}, {114, false}, {115, false}, {0, false},
     162        {0, false},   {118, false}, {119, false}, {120, false}, {121, false}, {122, false},
     163        {123, false}, {124, false}, {125, true},  {0, false},   {127, false}, {128, false},
     164        {129, false}, {130, false}, {131, false}, {132, false}, {133, false}, {134, false},
     165        {135, false}, {136, false}, {137, false}, {138, false}, {139, false}, {140, false},
     166        {141, false}, {142, false}, {143, true},  {144, false}, {145, false}, {146, false},
     167        {147, false}, {148, false}, {149, false}, {150, false}, {151, false}, {152, false},
     168        {153, false}, {154, false}, {155, false}, {156, false}, {157, false}, {158, false},
     169        {159, false}, {160, false}, {0, false},   {162, false}, {163, false}, {164, false},
     170        {165, false}, {0, false},   {167, false}, {168, false}, {169, false}, {170, false}
     171};
     172const SoundDigitalMidi::DigitalTrack SoundDigitalMidi::_kyra2aTracks[] = {
     173        {0, false},   {0, false},   {18, true},   {19, true},   {20, false},  {21, true},
     174        {22, false},  {23, true},   {0, false},   {0, false},   {0, false},   {0, false},
     175        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     176        {0, false},   {0, false},   {71, false},  {72, false},  {73, false},  {74, false},
     177        {75, false},  {76, false},  {77, false},  {78, false},  {79, false},  {80, false},
     178        {81, false},  {82, false},  {83, false},  {84, false},  {85, false},  {86, false},
     179        {87, false},  {88, false},  {89, false},  {90, false},  {0, false},   {0, false},
     180        {0, false},   {94, false},  {95, false},  {0, false},   {97, false},  {98, false},
     181        {99, false},  {100, false}, {101, false}, {102, false}, {103, false}, {104, false},
     182        {105, false}, {106, false}, {107, false}, {108, false}, {109, false}, {110, false},
     183        {111, false}, {112, false}, {113, false}, {114, false}, {115, false}, {0, false},
     184        {0, false},   {118, false}, {119, false}, {120, false}, {121, false}, {122, false},
     185        {123, false}, {124, false}, {125, true},  {0, false},   {127, false}, {128, false},
     186        {129, false}, {130, false}, {131, false}, {132, false}, {133, false}, {134, false},
     187        {135, false}, {136, false}, {137, false}, {138, false}, {139, false}, {140, false},
     188        {141, false}, {142, false}, {143, true},  {144, false}, {145, false}, {146, false},
     189        {147, false}, {148, false}, {149, false}, {150, false}, {151, false}, {152, false},
     190        {153, false}, {154, false}, {155, false}, {156, false}, {157, false}, {158, false},
     191        {159, false}, {160, false}, {0, false},   {162, false}, {163, false}, {164, false},
     192        {165, false}, {0, false},   {167, false}, {168, false}, {169, false}, {170, false}
     193};
     194const SoundDigitalMidi::DigitalTrack SoundDigitalMidi::_kyra3aTracks[] = {
     195        {0, false},   {0, false},   {5, true},    {25, true},   {26, true},   {0, false},
     196        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     197        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     198        {0, false},   {0, false},   {71, false},  {72, false},  {73, false},  {74, false},
     199        {75, false},  {76, false},  {77, false},  {78, false},  {79, false},  {80, false},
     200        {81, false},  {82, false},  {83, false},  {84, false},  {85, false},  {86, false},
     201        {87, false},  {88, false},  {89, false},  {90, false},  {0, false},   {0, false},
     202        {0, false},   {94, false},  {95, false},  {0, false},   {97, false},  {98, false},
     203        {99, false},  {100, false}, {101, false}, {102, false}, {103, false}, {104, false},
     204        {105, false}, {106, false}, {107, false}, {108, false}, {109, false}, {110, false},
     205        {111, false}, {112, false}, {113, false}, {114, false}, {115, false}, {0, false},
     206        {0, false},   {118, false}, {119, false}, {120, false}, {121, false}, {122, false},
     207        {123, false}, {124, false}, {125, true},  {0, false},   {127, false}, {128, false},
     208        {129, false}, {130, false}, {131, false}, {132, false}, {133, false}, {134, false},
     209        {135, false}, {136, false}, {137, false}, {138, false}, {139, false}, {140, false},
     210        {141, false}, {142, false}, {143, true},  {144, false}, {145, false}, {146, false},
     211        {147, false}, {148, false}, {149, false}, {150, false}, {151, false}, {152, false},
     212        {153, false}, {154, false}, {155, false}, {156, false}, {157, false}, {158, false},
     213        {159, false}, {160, false}, {0, false},   {162, false}, {163, false}, {164, false},
     214        {165, false}, {0, false},   {167, false}, {168, false}, {169, false}, {170, false}
     215};
     216const SoundDigitalMidi::DigitalTrack SoundDigitalMidi::_kyra4aTracks[] = {
     217        {0, false},   {0, false},   {27, true},   {28, true},   {47, false},  {48, false},
     218        {49, false},  {29, false},  {30, true},   {64, false},  {0, false},   {0, false},
     219        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     220        {0, false},   {0, false},   {71, false},  {72, false},  {73, false},  {74, false},
     221        {75, false},  {76, false},  {77, false},  {78, false},  {79, false},  {80, false},
     222        {81, false},  {82, false},  {83, false},  {84, false},  {85, false},  {86, false},
     223        {87, false},  {88, false},  {89, false},  {90, false},  {0, false},   {0, false},
     224        {0, false},   {94, false},  {95, false},  {0, false},   {97, false},  {98, false},
     225        {99, false},  {100, false}, {101, false}, {102, false}, {103, false}, {104, false},
     226        {105, false}, {106, false}, {107, false}, {108, false}, {109, false}, {110, false},
     227        {111, false}, {112, false}, {113, false}, {114, false}, {115, false}, {0, false},
     228        {0, false},   {118, false}, {119, false}, {120, false}, {121, false}, {122, false},
     229        {123, false}, {124, false}, {125, true},  {0, false},   {127, false}, {128, false},
     230        {129, false}, {130, false}, {131, false}, {132, false}, {133, false}, {134, false},
     231        {135, false}, {136, false}, {137, false}, {138, false}, {139, false}, {140, false},
     232        {141, false}, {142, false}, {143, true},  {144, false}, {145, false}, {146, false},
     233        {147, false}, {148, false}, {149, false}, {150, false}, {151, false}, {152, false},
     234        {153, false}, {154, false}, {155, false}, {156, false}, {157, false}, {158, false},
     235        {159, false}, {160, false}, {0, false},   {162, false}, {163, false}, {164, false},
     236        {165, false}, {0, false},   {167, false}, {168, false}, {169, false}, {170, false}
     237};
     238const SoundDigitalMidi::DigitalTrack SoundDigitalMidi::_kyra4bTracks[] = {
     239        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     240        {0, false},   {0, false},   {0, false},   {0, false},   {31, true},   {65, false},
     241        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     242        {0, false},   {0, false},   {71, false},  {72, false},  {73, false},  {74, false},
     243        {75, false},  {76, false},  {77, false},  {78, false},  {79, false},  {80, false},
     244        {81, false},  {82, false},  {83, false},  {84, false},  {85, false},  {86, false},
     245        {87, false},  {88, false},  {89, false},  {90, false},  {0, false},   {0, false},
     246        {0, false},   {94, false},  {95, false},  {0, false},   {97, false},  {98, false},
     247        {99, false},  {100, false}, {101, false}, {102, false}, {103, false}, {104, false},
     248        {105, false}, {106, false}, {107, false}, {108, false}, {109, false}, {110, false},
     249        {111, false}, {112, false}, {113, false}, {114, false}, {115, false}, {0, false},
     250        {0, false},   {118, false}, {119, false}, {120, false}, {121, false}, {122, false},
     251        {123, false}, {124, false}, {125, true},  {0, false},   {127, false}, {128, false},
     252        {129, false}, {130, false}, {131, false}, {132, false}, {133, false}, {134, false},
     253        {135, false}, {136, false}, {137, false}, {138, false}, {139, false}, {140, false},
     254        {141, false}, {142, false}, {143, true},  {144, false}, {145, false}, {146, false},
     255        {147, false}, {148, false}, {149, false}, {150, false}, {151, false}, {152, false},
     256        {153, false}, {154, false}, {155, false}, {156, false}, {157, false}, {158, false},
     257        {159, false}, {160, false}, {0, false},   {162, false}, {163, false}, {164, false},
     258        {165, false}, {0, false},   {167, false}, {168, false}, {169, false}, {170, false}
     259};
     260const SoundDigitalMidi::DigitalTrack SoundDigitalMidi::_kyra5aTracks[] = {
     261        {0, false},   {0, false},   {33, true},   {34, true},   {0, true},    {7, true},
     262        {66, false},  {67, false},  {68, false},  {69, false},  {0, false},   {70, false},
     263        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     264        {0, false},   {0, false},   {71, false},  {72, false},  {73, false},  {74, false},
     265        {75, false},  {76, false},  {77, false},  {78, false},  {79, false},  {80, false},
     266        {81, false},  {82, false},  {83, false},  {84, false},  {85, false},  {86, false},
     267        {87, false},  {88, false},  {89, false},  {90, false},  {0, false},   {0, false},
     268        {0, false},   {94, false},  {95, false},  {0, false},   {97, false},  {98, false},
     269        {99, false},  {100, false}, {101, false}, {102, false}, {103, false}, {104, false},
     270        {105, false}, {106, false}, {107, false}, {108, false}, {109, false}, {110, false},
     271        {111, false}, {112, false}, {113, false}, {114, false}, {115, false}, {0, false},
     272        {0, false},   {118, false}, {119, false}, {120, false}, {121, false}, {122, false},
     273        {123, false}, {124, false}, {125, true},  {0, false},   {127, false}, {128, false},
     274        {129, false}, {130, false}, {131, false}, {132, false}, {133, false}, {134, false},
     275        {135, false}, {136, false}, {137, false}, {138, false}, {139, false}, {140, false},
     276        {141, false}, {142, false}, {143, true},  {144, false}, {145, false}, {146, false},
     277        {147, false}, {148, false}, {149, false}, {150, false}, {151, false}, {152, false},
     278        {153, false}, {154, false}, {155, false}, {156, false}, {157, false}, {158, false},
     279        {159, false}, {160, false}, {0, false},   {162, false}, {163, false}, {164, false},
     280        {165, false}, {0, false},   {167, false}, {168, false}, {169, false}, {170, false}
     281};
     282const SoundDigitalMidi::DigitalTrack SoundDigitalMidi::_kyra5bTracks[] = {
     283        {0, false},   {0, false},   {35, false},  {36, false},  {0, false},   {37, false},
     284        {38, false},  {39, false},  {40, false},  {41, false},  {0, false},   {0, false},
     285        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     286        {0, false},   {0, false},   {71, false},  {72, false},  {73, false},  {74, false},
     287        {75, false},  {76, false},  {77, false},  {78, false},  {79, false},  {80, false},
     288        {81, false},  {82, false},  {83, false},  {84, false},  {85, false},  {86, false},
     289        {87, false},  {88, false},  {89, false},  {90, false},  {0, false},   {0, false},
     290        {0, false},   {94, false},  {95, false},  {0, false},   {97, false},  {98, false},
     291        {99, false},  {100, false}, {101, false}, {102, false}, {103, false}, {104, false},
     292        {105, false}, {106, false}, {107, false}, {108, false}, {109, false}, {110, false},
     293        {111, false}, {112, false}, {113, false}, {114, false}, {115, false}, {0, false},
     294        {0, false},   {118, false}, {119, false}, {120, false}, {121, false}, {122, false},
     295        {123, false}, {124, false}, {125, true},  {0, false},   {127, false}, {128, false},
     296        {129, false}, {130, false}, {131, false}, {132, false}, {133, false}, {134, false},
     297        {135, false}, {136, false}, {137, false}, {138, false}, {139, false}, {140, false},
     298        {141, false}, {142, false}, {143, true},  {144, false}, {145, false}, {146, false},
     299        {147, false}, {148, false}, {149, false}, {150, false}, {151, false}, {152, false},
     300        {153, false}, {154, false}, {155, false}, {156, false}, {157, false}, {158, false},
     301        {159, false}, {160, false}, {0, false},   {162, false}, {163, false}, {164, false},
     302        {165, false}, {0, false},   {167, false}, {168, false}, {169, false}, {170, false}
     303};
     304const SoundDigitalMidi::DigitalTrack SoundDigitalMidi::_kyramiscTracks[] = {
     305        {0, false},   {0, false},   {42, true},   {43, true},   {36, false},  {0, false},
     306        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     307        {0, false},   {0, false},   {0, false},   {0, false},   {0, false},   {0, false},
     308        {0, false},   {0, false},   {71, false},  {72, false},  {73, false},  {74, false},
     309        {75, false},  {76, false},  {77, false},  {78, false},  {79, false},  {80, false},
     310        {81, false},  {82, false},  {83, false},  {84, false},  {85, false},  {86, false},
     311        {87, false},  {88, false},  {89, false},  {90, false},  {0, false},   {0, false},
     312        {0, false},   {94, false},  {95, false},  {0, false},   {97, false},  {98, false},
     313        {99, false},  {100, false}, {101, false}, {102, false}, {103, false}, {104, false},
     314        {105, false}, {106, false}, {107, false}, {108, false}, {109, false}, {110, false},
     315        {111, false}, {112, false}, {113, false}, {114, false}, {115, false}, {0, false},
     316        {0, false},   {118, false}, {119, false}, {120, false}, {121, false}, {122, false},
     317        {123, false}, {124, false}, {125, true},  {0, false},   {127, false}, {128, false},
     318        {129, false}, {130, false}, {131, false}, {132, false}, {133, false}, {134, false},
     319        {135, false}, {136, false}, {137, false}, {138, false}, {139, false}, {140, false},
     320        {141, false}, {142, false}, {143, true},  {144, false}, {145, false}, {146, false},
     321        {147, false}, {148, false}, {149, false}, {150, false}, {151, false}, {152, false},
     322        {153, false}, {154, false}, {155, false}, {156, false}, {157, false}, {158, false},
     323        {159, false}, {160, false}, {0, false},   {162, false}, {163, false}, {164, false},
     324        {165, false}, {0, false},   {167, false}, {168, false}, {169, false}, {170, false}
     325};
     326
     327} // end of namespace Kyra
  • sound/mididrv.cpp

     
    8585        {"pcspk", "PC Speaker", MD_PCSPK, MDT_PCSPK},
    8686        {"pcjr", "IBM PCjr", MD_PCJR, MDT_PCSPK},
    8787        {"towns", "FM Towns", MD_TOWNS, MDT_TOWNS},
     88        {"digitalmidi", "Digital MIDI Replacement", MD_DIGMID, MDT_DIGMID},
    8889#if defined(UNIX)
    8990        {"timidity", "TiMidity", MD_TIMIDITY, MDT_MIDI},
    9091#endif
     
    206207                                musicDriver = MD_PCJR;
    207208                        else if (flags & MDT_MIDI)
    208209                                musicDriver = getDefaultMIDIDriver();
     210                        else if (flags & MDT_DIGMID)
     211                                musicDriver = MD_DIGMID;
    209212                        else
    210213                                musicDriver = MD_NULL;
    211214                }
  • sound/mididrv.h

     
    8282        MD_PCSPK,
    8383        MD_PCJR,
    8484        MD_TOWNS,
    85         MD_TIMIDITY
     85        MD_TIMIDITY,
     86        MD_DIGMID
    8687};
    8788
    8889/**
     
    101102        MDT_ADLIB  = 1 << 1,      // Adlib: Maps to MD_ADLIB
    102103        MDT_TOWNS  = 1 << 2,      // FM-TOWNS: Maps to MD_TOWNS
    103104        MDT_MIDI   = 1 << 3,      // Real MIDI
    104         MDT_PREFER_MIDI = 1 << 4  // Real MIDI output is preferred
     105        MDT_PREFER_MIDI = 1 << 4, // Real MIDI output is preferred
     106        MDT_DIGMID = 1 << 5       // Digital MIDI Replacement: Maps to MD_DIGMID
    105107};
    106108
    107109/**