移花接木,在Windows 3.x下驱动CMI8738

作者:蓬岸 Dr.Quest
知乎文章编号:597056097
创建于:2023-01-06 12:17:57
修改于:2023-01-06 7:46:12


数字媒体的实验考古(四):多媒体电脑 中,曾经介绍90年代IBM兼容机市场上最重要的变化之一,过多媒体电脑,即Multimedia PC概念的流行。是而作为多媒体计算机市场协会(Multimedia PC Marketing Council)的主导者,微软则将Windows 3.x作为实现这一重要变化的主力平台。许多重要的多媒体软件,比如Adobe Premiere、Cakewalk、 Macromedia Director、Authorware等都在这一时期出现或移植到Windows平台,虽然Windows 9x可以运行大部分Windows 3.x程序,但最“正宗”的体验还是要在Windows 3.x上才能实现。

今天,搭建一部便宜而又可以原生安装Windows 3.x的电脑最大的挑战,则是声卡驱动,相比之下,显卡驱动目前已经有较为通用的折衷方案,即SVGA256补丁和SciTech Display Doctor 5.3a/6.53。

Generic SVGA Driver (Windows 3.1) Generic SVGA Driver (Windows 3.1)

SciTech Display Doctor

背景

在准备数字媒体的实验考古课程时,我在网上购买了一块ECS P6SEP-Me主板,这是一款使用SiS 620芯片的Socket 370主板,能够找到原厂的Windows 3.x显卡驱动,但板载的CMI8738声卡却没有Windows 3.x驱动。

本来我已经打算再购买一块能够原生支持Windows 3.x的声卡,但忽然想到CMI8738有较完整的DOS驱动,能够兼容大部分为Sound Blaster开发的DOS游戏,那么有没有可能利用这种90年代声卡普遍具有的“声霸卡兼容”(Sound Blaster compatibility)能力在Windows 3.x下安装SoundBlaster驱动而间接驱动它呢?CMI8738是目前市场上最便宜的PCI声卡之一,如果能在Windows 3.x下驱动,将大幅降低搭建类似复古计算、复古游戏环境的成本。

经过一番尝试,算是把这个流程走通,这一方法最早整理在vogons.org上:PCI or PCI Express Sound Card for Windows 3.X Sound

本文做了精简,把SoundBlaster 2.0驱动的部分替换为SoundBlaster Pro,这也是CMI8738能兼容的功能最齐全的SoundBlaster驱动。

最初的试验:Windows 3.2自带驱动

Windows 3.2自带了SoundBlaster 1.0/1.5的驱动,支持OPL2的FM声音合成和8-bit数字音频,这应该是“声霸卡兼容”的基础要求了。

但是Windows 3.2自带的SoundBlaster 1.5驱动只支持2、3、5、7四种IRQ,而走PCI总线的CMI8738通常会把IRQ分配到11。因此首先要做的,就是通过修改BIOS设置,将CMI8738的IRQ修改到上述四个值之一。

我在BIOS中把IRQ 10和11都改为Legacy ISA,避免它们被分配给PCI总线上的设备,修改完成后,CMI8738被分配了IRQ 5

这时我们在DOS下加载CMI 8738驱动,就会看到这样的提示“Set SB Port to I/O=220 IRQ=5 DMA=1”

CMI 8738 DOS驱动下载: philscomputerlab.com/c-

接下来我们在Windows 3.2中按照上面的参数设置SoundBlaster 1.5驱动,就可以让它在CMI8738的SoundBlaster兼容模式上工作起来。

但此时Windows 3.2无法播放MIDI文件,因为SoundBlaster 1.5驱动并没有90年代Windows 3.x声卡典型的用OPL2/3模拟MIDI音源的功能,同时也不支持立体声。

SoundBlaster Pro兼容驱动

如果说使用SoundBlaster 1.5驱动算是找出了CMI8738兼容性的下限,那么CMI8737的兼容上限在哪里呢?在CMI8738的规格表里可以看到“Legacy audio SBPRO™ compatible”的字样,因此可以推断CMI8738应当可以兼容SoundBlaster Pro的功能,这样我们就能够获得44.1Khz单声道或22Khz立体声的数字音频,和立体声的FM合成了。

如果没有SB Pro声卡是不能直接安装的

从网上并不难找到SoundBlaster Pro驱动下载,但如果直接在CMI8738的电脑上安装,会提示找不到SoundBlaster硬件,因此我们需要先在一台安装有SB Pro的电脑上安装,然后再“移植”到CMI8738的电脑上。

SoundBlaster Pro驱动:VOGONS Vintage Driver Library

DOSBox提供比较完整的SB Pro模拟,因此我们不需要真正的SB Pro硬件就可以解包出驱动本身。在dosbox.conf文件中更改“sbtype”参数为“sbpro1”或“sbpro2”,类似这样。

sbtype=sbpro2

然后就可以在DOSBox中安装SoundBlaster Pro的驱动了。如果你的DOSBox里没有Windows,安装到下图这一步就可以直接退出了。在DOSBox的C盘SBPRO目录里,已经有了包括Windows驱动在内的完整SoundBlaster Pro驱动。

接下来把DOSBox中的整个SBPRO目录复制到CMI8738的电脑上,如果CMI8738电脑的Windows 3.x已经安装了SoundBlaster 1.5的驱动,记得在控制面板里先卸载它,然后回到DOS下运行SBPRO中的Install.exe,选择“Setup Windows”,就会回到上面的画面。安装完成后启动Windows,应当会听到Windows启动音乐,并会提示创建程序组。

选择“OK”,然后就可以在CMI8738上使用SoundBlaster Pro的完整功能了!包括由Voyetra / SoundBlaster SuperSAPI FM Driver提供的MIDI音色模拟功能,由于MIDI乐器都是使用OPL2/3 FM模拟来实现的,所以肯定不如WinGroove等软波表来的效果好,但却精确的还原了90年代初PC多媒体系统的限制,或者说特色。

有了声卡驱动,就可以尝试Marcomedia Director、Encarta、QuickTime等当时的多媒体软件了!