Памятка “CD аудио треки и старые игры”
Вопрос: почему в заставках в данной игре, и в других играх музыка воспроизводится, а музыка в виде CD-аудио - нет.
Ответ: потому, что музыку на звуковых дорожках CD воспроизводит не игра, а сам привод.
Общие рекомендации
- Если в системе несколько оптических приводов, буква используемого привода должна быть первой. То есть, если в системе один привод под буквой «Q», а другой под «U», то либо используйте привод под той буквой, что идет по алфавиту первой (то есть «Q»), либо поменяйте у другого букву (то есть «U», скажем, на «I»).
- Убедитесь, что в системном микшере компакт-диск\лазерный проигрыватель не выключен, и громкость установлена на полную.
Windows 9х (win95\98)
- Вариант 1: привод и аудио карта должны быть соединены аудио кабелем.
- Вариант 2: использовать цифровое воспроизведение аудио дисков. Для этого в 9х нужен драйвер WDM на аудио карту. Включается в панель управление > мультимедиа > музыкальный компакт-диск > выбрать нужный привод.
- Вариант 3: использовать виртуальный привод. К примеру «Daemon Tools» и «Alcohol». Последние версии, поддерживающие 9х: Daemon Tools 3.47, Alcohol 1.9.5.3105.
Windows ХР
- Вариант 1: привод и аудио карта должны быть соединены аудио кабелем. В современных приводах и аудио картах этот интерфейс отмер.
- Вариант 2: использовать цифровое воспроизведение аудио дисков. Включается в панель управление > звуки и аудиоустройства > оборудование > выбрать нужный привод > свойства > свойства.
- Вариант 3: использовать виртуальный привод. К примеру «Daemon Tools» и «Alcohol».
Для того чтобы DOS-приложения в Windows NT/2K/XP могли использовать цифровое воспроизведение CD-аудио, нужно установить в систему утилиту Sapucdex. Установка: распаковать содержимое архива в system32, в WINDOWS\system32\AUTOEXEC.NT заменить строку “lh %SystemRoot%\system32\mscdexnt.exe” на “lh %SystemRoot%\system32\SAPUCDEX.EXE.exe”.
Windows 7
- В Windows 7 никаких настроек касаемо CD-аудио нет. Поэтому, работает – хорошо, нет – ничего не поделать.
Вопрос: Почему на Windows 7 в Turok 2 зацикливания музыки нет? Какие могут быть причины? Может дело в cd драйвере? Что участвует в передаче звука с привода? В пропатченом (неофиц патчем) Turok2, например, всё нормально.
Ответ: Начиная с NT 5.x (Windows XP и выше) в библиотеке winmm.dll в функцию mciSendCommand() которой проигрываются CD-треки внесли изменения. В частности, теперь при открытии устройства, и последующем его использовании через уже открытый дескриптор, проверяется через функцию GetCurrentThreadId() чтобы это делалось из одного потока, иначе ошибка. Если в winmm.dll эту проверку сломать, то всё будет работать без проблем. Зачем оно было сделано - одному Биллу Гейтсу известно, хотя есть подозрение, что это сделано в целях повышения безопасности - чтобы одни потоки не могли управлять дескрипторами других.
Начиная с Windows Vista и выше эту тему расширили и углубили - теперь музыка не повторяется, потому как сигнал о завершении текущего трека, видимо (глубоко эта проблема не изучалась), приходит только тому потоку, через который было открыто устройство. Если поглядеть исходные коды к неофициальному патчу Turok 2, то видно, что там специально отлавливается момент окончания трека и производится его перезапуск вручную, что для Turok 2 нормально, но для игр, где треки проигрываются один раз без повторения - нет (надо писать полноценный "эмулятор" winmm.dll).
См. также
Ссылки
Sapucdex и Daemon Tools 3.47 можно скачать на сайте, в разделе файлы.