Эта статья прислана на конкурс.
Alekokot (автор играет на конкурсе под псевдонимом)
CS4281 или секс это когда нас двое, это забавный процесс...
(с) Слепаков, анонимный китайский программист и Я
Жил себе терминатор (я так называю все старые системники до 450 MHz, ну еще иногда роботами), старенький такой, имел процессор Intel 166 MMX, ну и прочее железное окружение того же периода выпуска. И имел этот робот звуковую карту SB Audio PCI 128. Почему не ISA? Да просто не было в наличии свободной. Карта исправно хрюкала в колонки, пока не крякнула. Ну, умерла - и бог с ней, не Turtle Beach и не коллекционный Roland, в конце-то концов, мне кто-то когда-то подарил креативовскую звуковушку, пылилась она долго на полке, и тут пришел ее звездный час.
Ей неслыханно повезло — я про нее вспомнил! =)) Это оказалась обычная Creative Ensoniq AudioPCI на чипсете Ensoniq 1371 и имела маркировку Creative CT 4810 и прочее положенное SB.
Драйвера идентичные SB PCI 128 под DOS. Воткнув ее в разьем, я со спокойной совестью запустил сетап Warcraft 2 и удивился, поскольку карта не инициализировалась. Чистка контактов, смена слота не помогли. Запустив Astra for Dos (аналог Aida 64), обнаружил, что карта имеет ID - Crystal Sound 4281. При тщательном осмотре увидел, что кодек вместо Sigmatel - Crystal Sound.
Удивительно было другое, карта была распаяна на качественном текстолите со всеми положеными надписями, чипом, в общем, не отличалась от остальных собратьев по креативу, кроме кодека.
Я видел много левых 744 Ямах и Креативов с перемаркированными чипами и софтовыми кодеками, но столь качественную подделку - никогда не доводилось. Текстолит, маркировки, все надписи указывали, что это CT4810. Гугление показало, что драйверов под DOS для CS4281 в природе не существует, но есть под Win 95-98. Под Windows драйвера – это, конечно, хорошо, но под нее у меня стоит замечательный Aureal Diamond MX300, который отлично работает под Windows и столь же отвратно под DOS, а мне ведь нужно под DOS! Причем 6.22 и никак иначе, значит, придется разбираться с этим УГ. При распаковке сетапа драйвера в глаза бросился файлик cwrdos.exe. Похоже, что это драйвера для DOS ceссии. Извлекаю, запускаю, но звук так и не появился, качаю другую версию драйвера, этого файла нет вообще. Всего их оказалось 3 версии, Одна размером 45КБ, вторая 60КБ, третья 183КБ. Устанавливаю Windows 98, драйвера для CS, перегружаюсь в DOS сессию, звук есть.
Потирая ручки и делая как (Дед Мороз, Санта Клаус, Елопуки - нужное подчеркнуть) ХО-ХО-ХО, сохраняю всю папку драйвера, удаляю Windows, ставлю DOS 6.22, запускаю сетап Warcraft 2, поочередно пробуя все три версии драйвера - звука нет. Опять ставлю Windows 98 - звук есть, устанавливаю рядом 6.22 - нет. Делаю 2 идентичные дискеты с 6.22 и 7.10 соответственно и звуковым драйвером, загружаюсь с них. Результат тот же. 6.22 - нет, 7.10 - звук появляется. После четырех переустановок Windows 98 подряд на медленной машине левый глаз начал ощутимо подергиваться. Стал искать дальше в инете, перерыв кучу ненужной информации и скурив даташит по CS4281 на английском языке, в котором утверждалось, что данный кодек 100% поддерживает эмуляцию SB, опять ушел в дебри инета, в итоге наткнулся на немецкий сайт, у парня была та же проблема, ему нужен был звук под DOS 6.22 и карта была тоже CS4281, но судя по всему оригинальный, но решения проблемы я там так и не нашел. http://www.dosforum.de/viewtopic.php?t=7100&p=24937
На другом сайте аналогичная ситуация, немцы предложили изменить код драйвера и даже указали, где и что менять. Провозился час с дебаггером, но не заработало тоже, пошел по другому пути замены переменных, SET WINBOOTDIR=C:\ в autoexec.bat — тоже не помог (потом в голову добрела мысль что DOS 6.22 и соответственно, в msdos.sys ничего не прописывалось, в отличие от 7.10, и 6.22 эту системную переменную просто не понимала). Вспомнив возню с запуском звука под DOS Monster MX300 и SF256, по опыту борьбы с FM-801 перенес из папки c:\sound\ в папку по умолчанию, c:\windows\cwcdata\ - звук появился. Бинго! В итоге в DOS 6.22 заработала только версия драйвера, которая 183КБ. Но основная проблема драйвера оказалась в том, что писал его "уникальный" кодер, у которого обе руки видимо были левые, в этом и заключалась его уникальность... Зачем понадобилась жесткая привязка к DOS 7.10, в частности к переменным файла msdos.sys, я так и не понял, ведь и так все работает и не зависает, тем более что проверяет не версию ОС, а просто наличие папки Windows. Наверное, это была защита от DOS 6.22 =))
В итоге, потратив половину дня, с дергающимся глазом и бубня себе под нос всякие обидные и нехорошие слова в адрес инженеров и программистов, состряпавших это чудо и забравших уйму моего времени, нашкрябал на коленке батник для автоматической проверки наличия папки c:\windows и файлов драйверов, ну и для первичной инсталляции:
REM CRYSTAL SOUND 4281
@ECHO ON
SET BLASTER=A220 I5 D1 H5 P330 T4 J200
C:\
CD \
IF EXIST C:\WINDOWS GOTO COPY
MKDIR C:\WINDOWS
IF EXIST C:\WINDOWS\CWCDATA GOTO INIT
:COPY
C:\
CD \
CD CS4281
CD DOS
XCOPY.EXE WINDOWS C:\WINDOWS /S /Y
:INIT
C:\
CD \
CD WINDOWS
CD CWCDATA
cwrdos.exe /v
:END
Теперь все у робота работает, карточка хрюкает себе тихонечко в колонки под DOS 6.22. Правда, звук эмулирует не во всех играх, в более старых отказывается, например, в Duke Nukem 3D (его сетап всегда был проблемным, как и у Redneck Rampage для более новых карт чем SB 16, даже патчи отдельно выпускали) увы, идет конфликт по DMA 16 bit — музыка есть, а звуков выстрелов нет, это связано с тем, что карточка поддерживает в эмуляции только DMA 8 bit. Обидно, досадно, но ладно. В War Craft II все определяется прекрасно, звук и музыка играют...
...играют отлично благодаря более продвинутому сетапу и улучшенной интеграции с промежуточными звуковыми драйверами более новой версии производства Miles Sound System, mp3 играет, CD диски воспроизводятся, в более новых играх вся озвучка присутствует, (например HOMM II, War Craft II, C&C, RA ), звук на уровне SB PCI 128, как по мне, и получше будет чем у ESS 1868 и ALS 1000 и прочих шумелок, довольно-таки неплохой результат.
Теперь эти драйвера можно использовать и для звука под MS DOS 6.22 для оригинальной платы Crystal Sound 4281 и карт на базе кодека Crystal CS4281, как например Genius Sound Maker 32X.
Вот такой вот хардкор и хеппи энд. Кто-то спросит — а зачем все это было нужно, ведь есть куча беспроблемных звуковых карт для DOS?
Два чаю этому господину! — "Это просто забавный процесс.." =))
Скачать драйвер и BAT-файл.
Обсудить статью в специально созданной ветке форума. Эта статья прислана на конкурс.
© Текст, фотографии - Alekokot (автор играет на конкурсе под псевдонимом)
© Железные призраки прошлого - 2017 г.
Опубликовано 23.04.2017 г.
Дополнения или поправки на phantom@sannata.ru
|