奇蹟MU 新服史詩加開!「追魂五星槍」震撼全武林真3D暗黑仙俠網遊最強龍幻想!降臨
faithseafood ( 信者海鮮 )
Lv. 9 | 文章數:215 | 推薦數:2 | 被推數:54 #1. 2018-05-30 01:19:26
[已解決] 解決時間:2018-06-08 15:47:57,解答獎勵: 20 G 幣
大家好, 最近心血來潮想重玩Q女, 於是把被扔在角落的光碟搬了出來, 但苦於不懂設置。想說有光碟一定不能放棄音樂和語音, 於是翻了兩三天資料都找不來。本人試過以下兩種方式模擬
1.DOS-BOX
最簡單的方法, 遊戲可以運行, MOUNT了CD ROM, 遊戲運行起來, 但沒音樂和音效。如果把設定CD音源設成ON, 遊戲會當死, 而且過不了一分鐘。本人知道DOS-BOX和華義代理的遊戲相容性不佳, 但見過有高手模擬得起來而且有音樂音效, 我試過DOSBOX 6.43, 7.1, 7.4, 全都無一幸免。如果有哪位高手模擬起來, 請指點指點

2.PCem
因為DOS-BOX行不起來, 所以把高階一些的PCem搬了出來。本人有Win95和Win3.1兩個虛盤, Win95的容量設在2GB左右, 安裝了遊戲, 運行播於華義LOGO後, 就跳出, 有一行寫著 C:\MTJ\Load.exe 532kBytes memory load error, 憑皮毛的知識相信是內存問題, 但試了許多20年前用過的方法都解決不了。我見過有高手用PCem運行過Q女, 請高手指點。

3.其他模擬虛盤
本人也有Qemu和Virtual Box, 但因為有設定好的PCem, 兩者便放在一旁連windows都沒裝進去, 如果高手用這兩個虛盤運行得了, 我再去研究看看。

請各位高手指點迷津, 實在是20年之癢。orz
chiuinan ( 青衫,詩樂為心棋為友 )
Lv. 32 | 文章數:1888 | 推薦數:610 | 被推數:1665 #2. 2018-05-30 18:50:04
本篇被發問者faithseafood選為最佳解答,支付 20 G 幣回饋給最佳解答者^^
以下是我目前測試的結果 (使用DosBox 0.74官版):

1. 有音效,無CD音源
使用sb16會當在menu.exe (若用SVN版不會當, 但會有雜音), 要改option:
sbtype=sbpro2
這樣便可正常執行

2. 無音效,有CD音源
會當在open.exe顯示日文字(...女)的地方, 追蹤結果, 得知它在等待0:4FFh的值非0才會往下走. 修改程式讓它往下走, 則不定什麼地方當機. 檢查結果得知有隨機位置的記憶體被改寫成63h. 後來有找到另一版1996/12/25的cddrv.exe (我的光碟是1996/12/31), 取代後不會當在顯示日文的地方, 但到後面一樣會隨機當掉.

我試著將cddrv.exe掛載0Ah中斷的地方拿掉, 便不會當機. 可見是cddrv.exe透過中斷播放CD音源的地方出了問題, 目前正在檢視cddrv.exe的程式碼...

----- 以下為目前追蹤結果:

counter.exe: 掛載int 61, 每次0:4FC的值減一, 直到0時, 將0:4FF的值設成1
cddrv.exe: 掛載int 66, 0A. int 0A主要做為CD音源播放.
n18.exe: 掛載int 18, 08, 其中定時計數中斷08h改成原頻率的1/5, 然後在其中分別呼叫int 0A (CD音源播放), int 61 (計數減一), int 64

使用原光碟cddrv.exe會當在顯示日文處, 是因為n18.exe裡的int 08防重入未消除, (按理應該處理完會消除, 所以應該是int 0A處理時跳走導致), 試著修改n18.exe不去呼叫int 0A便不會當掉便可證明此點. 所以結論還是在cddrv.exe的int 0A處理.

asus1610 ( 老頑固 )
手機認證徽章基地新手榮譽徽章雙十國慶紀念徽章值日生值日模範生基地15週年慶紀念徽章2015羊年紀念徽章基地16週年慶紀念徽章猴年限定徽章
Lv. 23 | 文章數:642 | 推薦數:466 | 被推數:2138 #3. 2018-05-30 17:33:39
mount C c:\dosgame
模擬 dos的c槽 你電腦內要放遊戲資料夾的名稱,我設定是c槽的dosgame你可以自己改你要的名稱!例如123abc記得要先在自己的電腦建立想要名稱一樣的資料夾!注意dosbox只支援英文或數字名稱!中文名稱
不支援!
mount D g:\ -t cdrom
模擬 dos的d槽 你電腦光碟機的代號,玩光碟版遊戲會用到!我的光碟機是G槽.看你自己電腦的光碟機代號就改哪個.後面的參數必加才能模擬cdrom及播放音軌!
f9fxVW0
真實dos遊戲是無法使用win95跑的.除非他是雙版本例如紅色警戒.
  • f9fxVW0
▼ 顯示全部圖片
chiuinan ( 青衫,詩樂為心棋為友 )
Lv. 32 | 文章數:1888 | 推薦數:610 | 被推數:1665 #4. 2018-05-30 21:10:37

問題找出來了, 果然就是CDDRV.EXE的問題. 中間有一段程式有PUSH卻沒有對應的POP, 會造成後面的程式大亂. 修改碼如下:

解決CD音源播放當機問題:
CDDRV.EXE
  06 50 53 51 52 EB 40 90
  90 90 90 90 90 -- -- --

這樣就可以同時有音樂和音效了. (用DosBox 0.74版即可, 但記得將sbtype改成sbpro2, 你可以試看看其他版本是否也都ok) 按理, 這麼嚴重的BUG, 應該會有PATCH檔修正, 否則當初買原版光碟的玩家根本無法使用CD音源...

以上是測試我自己的光碟檔. 由於你並未提供相關檔案, 若因光碟版本不同使得上述修改碼無法解決你的問題, 請另行提供光碟檔以便測試.

以下是PTT上的供檔(光碟):
https://www.ptt.cc/bbs/Old-Games/M.1442075420.A.6F7.html

coolhaken ( 我不酷 )
手機認證徽章2015羊年紀念徽章基地15週年慶紀念徽章基地16週年慶紀念徽章
Lv. 19 | 文章數:492 | 推薦數:1107 | 被推數:1296 #5. 2018-05-31 20:26:51
引言回覆 chiuinan 的話:
問題找出來了, 果然就是CDDRV.EXE的問題. 中間有一段程式有PUSH卻沒有對應的POP, 會造成後面的程式大亂....
感謝青杉兄幫忙解決問題。
相信就算是初學組合語言的菜鳥,也知道 PUSH 沒有對應的 POP 是很嚴重的 bug,
通常編譯器都會偵測到並給予警告訊息。
這樣一個上市的商業軟體還包含這樣的錯誤真是不可思議...傻眼
chiuinan ( 青衫,詩樂為心棋為友 )
Lv. 32 | 文章數:1888 | 推薦數:610 | 被推數:1665 #8. 2018-06-09 03:21:52
我現在都用UltraEdit修改程式檔, 網路上應該有很多教學. 如果真的不會的話, 就下載我修改好的檔案吧:

https://onedrive.live.com/?id=40CD38B16EE8618F%21581&cid=40CD38B16EE8618F
快速回覆 | 註冊 使用完整編輯模式回覆
討論板頭像 [ 設定 ] |簽名檔 [ 設定 ]
有人回覆時通知我 【通知管理