一年多前翻出王子传奇来玩,再次注意到这没有音效的问题。
记得以前在DOS玩的时候是有音效的,怎么DOSBox就没音效,只有音乐。
于是玩没多久就放弃再玩下去,决定找出问题所在,可以的话就解决它。
先是从驱动下手,灌了声霸卡驱动,改游戏音效设定,怎么搞都一样只有音乐。
后来发现DOSBox里面的DOS是旧版的5.0,不是6.22。
在DOSBox里灌了个6.22,结果还是一样没音效,不过战斗中音乐会当掉的问题解决了。
没办法,再往别的方向去找,这次换不同模拟器来试试。
VirtualBox、VMware、Virtual PC都给他试试。
有音效没音乐、有音乐没音效、有音乐又有音效但是画面会切变两个、速度太快难控制。
总之问题没比DOSBox少,不过倒是发现有些有音效,看来是模拟器的问题了。
虽然知道是模拟器问题,但换的模拟器没一个能正常玩的,问题还是没解决。
不过DOSBox是开源的,有音效的VirtualBox也是,也许比较一下能发现什么。
载了DOSBox原始码,照着网上的方式改设定编译后,确定能执行。
开始在声霸卡硬件模拟上修改做测试,试着找出问题在哪。
试着试着,我发现王子传奇开启时会测试声卡是否能使用,而问题就出在这。
它送出了一个不完整的命令,所以音效测试失败。
比较了DOSBox和VirtualBox的声卡,发现DOSBox在重置声卡命令的模拟上有bug。
收到不完整的命令后,游戏又送了一个重置的命令,但是这个命令没被正确的执行。
王子传奇本身的奇怪行为加上模拟器模拟的bug,凑在一起才造成游戏没有音效的问题。
加了一行程式码,让它能确实重置。再开游戏…有音效了啊!!!!!!!
总算能再次听到游戏的音效了啊,太感动了啊!
赶快写封e-mail给DOSBox团队,希望这修正能被加入,以后大家玩王子传奇就有音效了。
我也很快的收到回信,说是会先在private builds测试,没问题的话再加入main code。
一年过去了,始终没看到DOSBox有修正这问题…
所以,po这篇让有需要的人载吧。
https://drive.google.com/open?id=0BxowH2d0uLvxWnh4Zk1UbEdJNlU
重编译过的执行档,是Windows下执行的,其它系统请自行编译。
你要先载DOSBox 0.74,然后解压缩这zip档盖掉里面的执行档。
建议再在DOSBox里弄个DOS 6.22,这样玩起来音乐才不会在战斗中当掉。
编出来的档比原来的小很多,我也不知道为什么…
我没灌防毒软件,要是载了发现这档有毒告诉我一下XD
http://pastebin.com/HHpLhErS
这是修改的部分原始码。
路径是dosbox-0.74\src\hardware\sblaster.cpp
想自行编译的可以照注解//Add this line.那行加进去。
GUN license有做修改要开放修改后的原始码,不知道这样做算不算是开放了?
以上,祝各位游戏愉快,谢谢收看。
补充:非官方的DOSBox SVN据说已于数个月前修正了这问题了。
消息来源游戏基地
http://www.gamebase.com.tw/forum/30032/topic/98265301/1