DOSBox 與 Roland MT-32 模擬器

音效卡的問題在此討論。

版主: DearHoney

kikiqqp
文章: 10
註冊時間: 2003-04-12 22:48
來自: 台灣台北
聯繫:

文章 kikiqqp » 2006-07-14 20:45

倚天中文下並不是不可能....只是不穩定
http://www.wretch.cc/album/album.php?id=kikiqqp&book=4
至少我當時在PE2下還可以用就是了

DearHoney
文章: 6473
註冊時間: 2001-01-03 08:00
聯繫:

文章 DearHoney » 2006-07-19 00:43

看了您的相簿,我覺得您和我的標準不同呢!我就是看到那些破碎的文字,認為這叫做「不能用」,不是「不當機」就可以了。其實您也是出現了破碎的文字,這在我的標準就是不及格了。

icecain
文章: 18
註冊時間: 2001-04-08 08:00
來自: 台灣台北
聯繫:

文章 icecain » 2006-07-27 11:39

看了DH您的文章,趕緊下載試試
我的系統是Win2000
發現即使不裝MT-32模擬器,遊戲裡指定用midi port 330輸出,還是可以驅動Win2000內建的Microsoft GS Wavetable SW Synth音源。我拿Day of the Tentacle來測試,MS的軟體音源在一開場的動畫有鳥叫聲,MT-32沒有,當年我用SB16+Rio子卡也是有的,比較起來,MS的音源在這款遊戲裡表現頗優秀

頭像
BooBooBird
文章: 1424
註冊時間: 2001-12-11 08:00
來自: 不知有漢 無論魏晉

文章 BooBooBird » 2006-09-13 02:46

現在才看到這一篇...

瘋狂時代(Day of the Tentacle)一定要玩光碟版,全程語音跟音效就像卡通一樣。當初買了光碟版後來不見了心痛得要命,最後還是請四腳動物馱回來。不過DOSBox的弱點是不支援最棒的HQ2X, HQ3X擴展模式。SCUMM模擬器有支援HQ,但是使用SCUMM時片頭會掉音。畫面和音效無法兩全啊~~

倚天中文不能用是因為它用了一些tweak,當初有些顯示卡跑倚天中文也是亂碼。我記得它的ET16有兩個版本的執行檔,其中一個相容性較高,要不就是要下參數。不過真的有什麼東西還需要倚天中文啊...

DOOM2不能跑是應該的,DOSBox的目標年代在3D流行之前。請愛玩2D遊戲 :P

看了一下我的DOSBox目錄,我喜歡的DOS遊戲除了DOTT還有
Another World
DOH (打磚塊)
The Incredible Machine
Ultima 7 (這個要用 Exult 才能跑)

cbreak
文章: 151
註冊時間: 2001-11-30 08:00
聯繫:

Re: DOSBox 與 Roland MT-32 模擬器

文章 cbreak » 2009-02-26 22:51

這篇好久沒有討論囉,發表一下我的心得。

關於倚天中文支援的問題,我認為是DOSBOX內建的Shell的問題,
我試過用DOSBOX載入真實MSDOS的影像開機,再進倚天,就沒有
亂碼的問題了。

再來就是OPL2/OPL3模擬問題,我發現到目前(DOSBOX 0.72)的
OPL2/OPL3模擬程式中,一直都還存在一個BUG(我認為是BUG,但不知道是否真的就是BUG)。以OPL3來說,其模擬程式為ymf262.c,裡面
處理KSL似乎將1跟2的值弄反了,造成模擬出來的聲音跟真實的OPL3
有差異(我實際比對過DOSBOX跟真實YMF262的聲音)。以下是原始程式片段:

/* set ksl & tl */
INLINE void set_ksl_tl(OPL3 *chip,int slot,int v)
{
OPL3_CH *CH = &chip->P_CH[slot/2];
OPL3_SLOT *SLOT = &CH->SLOT[slot&1];

int ksl = v>>6; /* 0 / 1.5 / 3.0 / 6.0 dB/OCT */

SLOT->ksl = ksl ? 3-ksl : 31;
SLOT->TL = (v&0x3f)<<(ENV_BITS-1-7); /* 7 bits TL (bit 6 = always 0) */

應加上一個對調1跟2的指令,如下:

/* set ksl & tl */
INLINE void set_ksl_tl(OPL3 *chip,int slot,int v)
{
OPL3_CH *CH = &chip->P_CH[slot/2];
OPL3_SLOT *SLOT = &CH->SLOT[slot&1];

int ksl = v>>6; /* 0 / 1.5 / 3.0 / 6.0 dB/OCT */
if (ksl == 1 || ksl == 2) ksl ^= 0x03;

SLOT->ksl = ksl ? 3-ksl : 31;
SLOT->TL = (v&0x3f)<<(ENV_BITS-1-7); /* 7 bits TL (bit 6 = always 0) */

我重新compile後,發現聲音跟真實YMF262聲音更接近了,雖然還是存在些微差異(因逆向工程要完全解出正確的參數真的不容易,只能很近似),但我認為音色不在是「不正確」了!以上小小的分享。

DearHoney
文章: 6473
註冊時間: 2001-01-03 08:00
聯繫:

Re: DOSBox 與 Roland MT-32 模擬器

文章 DearHoney » 2009-02-27 14:49

cbreak 寫:關於倚天中文支援的問題,我認為是DOSBOX內建的Shell的問題,我試過用DOSBOX載入真實MSDOS的影像開機,再進倚天,就沒有亂碼的問題了。
這邊可否向您請教,載入 DOS boot image 的方式?
cbreak 寫:再來就是OPL2/OPL3模擬問題....OPL2/OPL3模擬程式中,一直都還存在一個BUG.... 處理KSL似乎將1跟2的值弄反了,造成模擬出來的聲音跟真實的OPL3有差異
啊~這一段太難了,我們一般人也做不來 :P

cbreak
文章: 151
註冊時間: 2001-11-30 08:00
聯繫:

Re: DOSBox 與 Roland MT-32 模擬器

文章 cbreak » 2009-02-28 21:06

要boot msdos,就是在DOSBox裡面輸入指令:
boot msdos.img
這樣就能模擬MSDOS軟碟開機了,但缺點是會看不到原先
mount的目錄,必須將你要看到的檔案,全都做成IMG檔,
然後用:
boot msdos.img 所有資料影像檔.img
載入才行,而且還要自己配置EMS/XMS,是真的麻煩許多。

cbreak
文章: 151
註冊時間: 2001-11-30 08:00
聯繫:

Re: DOSBox 與 Roland MT-32 模擬器

文章 cbreak » 2009-03-01 00:30

關於DOSBox的OPL3模擬BUG,我附上MP3的比較檔案吧。
http://210.70.87.210:81/share/FM_comp.zip
這是用大富翁2的音樂做測試的,其中:
FM_YMF262.mp3是真正的OPL3錄音
FM_DOSBox_original.mp3是目前DOSBox 0.72的錄音
FM_DOSBox_patched.mp3是做了KSL修正的錄音
從一開頭的前奏應該很明顯可以聽出音色的不同。

另外附上KSL修正後的DOSBox.exe檔案,因為我用MinGW
compile,不知為什麼,生成的執行檔,size大了許多,
且還要連結另外兩個DLL檔,請把DOSBox_comp.zip解壓縮
到原先DOSBox的目錄覆蓋即可。
http://210.70.87.210:81/share/DOSBox_comp.zip

DearHoney
文章: 6473
註冊時間: 2001-01-03 08:00
聯繫:

Re: DOSBox 與 Roland MT-32 模擬器

文章 DearHoney » 2009-03-03 19:26

真的耶!是聽得出來聲音差異的,您真的太強了。

jeffer
文章: 1
註冊時間: 2009-03-21 20:58

Re: DOSBox 與 Roland MT-32 模擬器

文章 jeffer » 2009-03-21 21:15

DearHoney 寫:
cbreak 寫:關於倚天中文支援的問題,我認為是DOSBOX內建的Shell的問題,我試過
的確是這樣,一年多... 前有試著改dosbox , 把 ET倚天在 dosprompt 的亂碼問題改掉, 不過沒有詳測.

TO cbBreak : dosbox.exe 執行檔太大的問題可以用
strip -x src/dosbox.exe 把debug_info 去除,即可變小.

回覆文章