Памятка “CD аудио треки и старые игры”

Материал из Old-Games.RU Wiki
Перейти к навигации Перейти к поиску


Вопрос: почему в заставках в данной игре, и в других играх музыка воспроизводится, а музыка в виде CD-аудио - нет.
Ответ: потому, что музыку на звуковых дорожках CD воспроизводит не игра, а сам привод.

Общие рекомендации

  • Если в системе несколько оптических приводов, буква используемого привода должна быть первой. То есть, если в системе один привод под буквой «Q», а другой под «U», то либо используйте привод под той буквой, что идет по алфавиту первой (то есть «Q»), либо поменяйте у другого букву (то есть «U», скажем, на «I»).
  • Убедитесь, что в системном микшере компакт-диск\лазерный проигрыватель не выключен, и громкость установлена на полную.


9х (win95\98)

  • Вариант 1: привод и аудио карта должны быть соединены аудио кабелем.
  • Вариант 2: использовать цифровое воспроизведение аудио дисков. Для этого в 9х нужен драйвер WDM на аудио карту. Включается в панель управление > мультимедиа > музыкальный компакт-диск > выбрать нужный привод.
  • Вариант 3: использовать виртуальный привод. К примеру «Daemon Tools» и «Alcohol». Последние версии, поддерживающие 9х: Daemon Tools 3.47, Alcohol 1.9.5.3105.


ХР

  • Вариант 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 никаких настроек касаемо 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 можно скачать на сайте, в разделе файлы.