模拟3DFX不是梦

Author: 杨帆 Date: 1999年 第8期 53版

    知道UltraHLE吗?这一堪称杰作的Nintendo64模拟器效果惊人,笔者第一次看见别人用它玩游戏时,还认为是著名的玛利奥64已经移植到PC平台上了,完全没有感觉到自己正在使用模拟器。可惜的是UltraHLE只支持Glide接口,如果你没有一块3DFX的加速卡……也不要紧啦!现在有不少好东西可以帮助你哟。对了,这些好东西就是Glide仿真程序(Wrappers)。
    由于Glide接口只支持3DFX系列的3D加速卡,它在游戏方面又有杰出的表现,很多游戏都为Glide接口作了优化,非3DFX的用户多少有些遗憾,所以关于Glide仿真程序就一直谣传纷纷,不过始终没有证实。十多天以前,UltraHLE出现了,它完美的效果震惊世人,于是编程高手们终于坐不住了,Glide仿真程序才真正浮出水面。(^085301e^)
    Glide仿真程序是对Glide接口函数进行解释,然后通过Direct3D或OpenGL的函数调用来模拟Glide,使原本只支持Glide接口,没有3DFX的加速卡就不能运行的程序可以使用其它3D加速卡运行。现有的Glide仿真程序都为UltraHLE所编写,对于大多数其它的大型游戏来说,现有的仿真程序的Glide函数调用还太少,不能够正常运行。
    现在证实可以正常使用的Glide仿真程序主要有七种,大多数常见的3D加速卡都能够使用。现在最好用的Glide仿真程序是排在表1前三位的GL2IDE、XGlide和XGL200。这些仿真程序升级很快,每一天都在改进中。在它们中间选择一种吧,现在即使没有3DFX系列的加速卡,你也能够享受到Nintendo64的乐趣了。当然,你还是需要一块较好的3D加速卡,Riva 128以上级别的就可以了。
#1    GL2IDE
    这一仿真程序算得上是现有的Glide仿真程序最好的一个,用它的人很多,它是从GLiD3D v0.24发展起来的。GL2IDE支持的显示卡种类最多,画面质量也最为精美(^085301a^)。它的缺点是在透明处理时有一些小错误。
    GL2IDE的编写者只用了一块STB Velocity 4400(Riva TNT)来进行测试,但它在所有使用OpenGL的显示卡上工作得都不错,当然首先要正确地安装显示卡的OpenGL驱动程序。GL2IDE也可以在软件方式下运行,不过在软件方式下运行它实在是没有什么意义,更谈不上效果了。
    GL2IDE的使用方法很简单,只需要将glide2x.dll和GL2IDEconfig.exe拷贝到UltraHLE所在目录就可以了(^085301b^)。运行GL2IDEconfig.exe可以对GL2IDE进行设置,设置项目包括:Run Fullscreen——选中该项模拟器将全屏运行,如果失败或不选中此项,模拟器将以窗口模式运行;Blend Fix——选中这一项,可以防止丢失多边形,保证画面完整;Precision Fix——选择该项能修正16 bit buffer加速卡可能出现的画面缺失;Auto Generate Mipmaps——选中该项会自动在材质上产生Mipmap,从而在UltraHLE中得到更好的画面效果;Use Z- Inverse for depth——仅仅对TNT显示卡起作用,也可修正画面;Fog Mode——雾化,还不能完全正常工作,不过在Zelda 64和Mario 64中很正常。推荐的设置模式是除了“Use Z Inverse for depth”之外,允许所有其它的设定。如果你使用的是一块TNT显示卡,就应该选中“Use Z Inversefor depth”,这样可以提高画面质量。同时,最好使用Nvidia 0.48的驱动程序,因为使用最新的“雷管”驱动程序时,雾化可能有一些问题。
    GL2IDE在GL2IDE的压缩文件里带有源文件,如果你对编程有兴趣,不妨练一练技术。
#1    XGlide 1.3a
    这是XGlide系列的最新版本,使用Direct3D接口,它在ATI的显示卡上工作得特别好。和GL2IDE一样,它在透明处理上也有一些小错误。XGlide的贴图错误比GL2IDE要多(^085301c^),不过运行起来还是非常流畅的。
    XGlide1.3a只有一个文件:glide2x.dll,将它拷贝到UltraHLE目录就可以了。它使用一种新的设置系统,对于普通用户来说,这一设置方式相当难懂。第一次运行时,XGlide1.3a会建立一个新文件“XGlide.ini”,在这一文件里记载了有关Direct3D硬件加速的内容,其中包括Render,Z-buffer和BilinearFilter等。通过更改这些设置都可以使用不同的加速方式。
    XGlide1.3a的Bug还比较多,运行过程中可能会出现一些问题,例如渲染不正常等,开发者建议在出现错误时更换显示卡的驱动程序,这可能对解决出现的问题会有帮助。
    除了支持UltraHLE之外,XGlide1.3a还能运行其它一些应用程序。已经通过测试的包括:MK4、3dfx surface demo、3dfx donut demo、3dfx sdk examples、Voodoo lights等。
#1    XGL200
    这一仿真程序可以说是为Matrox系列显示卡量身定制的,由于它的作者在开发时使用的是G200显示卡,所以它在G200显示卡下效果特别好(^085301d^),如果你正在使用Matrox显示卡就不必再考虑其它的仿真程序了。它的缺点是有一些声音方面的小问题比较罕见,并不经常发行。
    XGL200的使用方法和其它仿真程序一样,只要将glide2x.dll拷贝到UltraHLE目录,它不需要进行设置。它也是使用OpelGL模拟GLide,经过作者测试,XGL200可以正常运行的游戏包括Need for Speed 2、Mario 64、Zelda 64、Goldeneye。
    XGL200的最新版本是0.01f Beta。这是一个测试版本,在除G-200以外的显示卡上可能会有问题。较以前的版本,0.01f Beta提高了执行效能,解决了UltraHLE窗口中的闪烁问题,并且使用了G200优秀的32-bit Z-buffer。要使32-bit Z-buffer起作用,首先要在“Matrox Powerdesk”的高级选项(advanced options )中激活32-bit Z-buffer。这一版本在TNT显示卡的高bit Z-buffer中会出现问题,它有可能不运行。TNT用户解决这一问题的最简单方法是放弃该版本,使用0.01e版,另一可行的方法是将注册表“HKEY_CURRENT_USER_SOFTWARE_Gl200”项中“Zbits”的值改为16进制(0x00000010 hex)。
    XGL200的压缩包里包括有源文件,你可以通过VC++ 6.0和Glide 2.0 SDK 来编译它。
#1    MGLide 1.246c和MGSetup
    这是一个ATI Rage Pro专用的仿真程序,在运行赛尔达传说和玛利奥64时效果特别好。但这一程序还不够稳定,兼容性也较差,不同配置的用户,即使都使用ATI Rage Pro显示卡,画面效果都可能出现较大的差异。
#1    GlideGL64
    GlideGL64是一个基于OpenGL的仿真程序,由于它的作者是一个学生,现在已经停止开发了。作者仅仅使用了帝盟Viper v330进行测试,效果并不是很好。GlideGL64的使用方法和前面的仿真程序一样,在它的压缩包里也包括有源文件。
#1    MUGLide
    MUGLide的开发者显然把较多的精力放在了Matrox系列显示卡上,它虽然也使用于Permedia2系列显示卡,但在Matrox的显示卡上效果要好得多,MUGLide的缺点在于它的画面质量虽然很好,但游戏速度非常慢。
#1    GliD3D v0.24
    GliD3D是Glide仿真程序的鼻祖,它算是第一个真正可以运行的Glide仿真程序。这类程序能够如雨后春笋般出现的重要原因就是GliD3D的作者公布了源程序,这对其它的开发者有着很大的帮助。除了ATI Rage Pro以外,它还支持其它的几种显示卡。曾经使用GliD3D的玩家都已经转向了GL2IDE,已经很少有人使用GliD3D了。
    关于Direct3D、OpenGL和Glide三大API在游戏方面谁优谁劣的问题争论已久,至今仍没有统一的意见。在笔者看来,这不仅仅是一个谁的效率更高,谁支持的函数更多的问题。一个API必须要和硬件结合起来才能发挥作用,离开显示硬件谈API是没有意义的。使用Glide接口的游戏效果很好的重要原因是Glide和3DFX的显示卡工作配合得更好,毕竟Glide是3DFX的专利。
    Glide仿真程序还在完善的过程中,并且它的更新速度相当快,对于UltraHLE来说,仿真程序已经相当不错了,特别是GL2IDE,多数游戏中几乎已经和直接使用Glide没有分别。从技术角度来看,Glide仿真程序是值得赞赏的,并且以目前的速度改进下去,最终它将可以在大型游戏中正常使用。但是从版权保护的角度来看,这一类程序是严重的侵权行为,完全不应该存在。所以,如果有一天3DFX公司向Glide仿真程序宣战,也是丝毫不奇怪的事。