魔法門 HD 與重製

做法

三個專案有同一個限制:原版遊戲、手冊、美術和音樂的權利都不在專案手上,也不能改動原版的規則。所以譯文、HD 與配樂都放在原版之外,玩家自備原版,專案只散布自己寫的部分。在這個限制下,三款走了兩條不同的路。

重寫引擎:魔法門 II

《魔法門 II》沒有官方中文版,也沒有公開的引擎原始碼,所以從反組譯開始。DOS 版的 14 個 overlay 全部反組譯,622 個函式符號有可查的索引;壓縮、圖形、字型、文字、地圖、事件腳本、物品、怪物與法術的檔案格式全部解開。之後用 Go 和 Ebitengine 依規格重寫可以跨平台執行的引擎。

原版 DOS 執行檔是唯一的規則裁決者,手冊與攻略只當佐證,因為它們可能描述的是其他平台。每個斷言標上推論等級:已證實、強推論、假設、未知。「已證實」要附得出位址、位元組範圍與可以重跑的實驗。

中文走獨立的高解析點陣層,疊在原版 320×200 的畫面上。中文 24×24 全形、英數字 12×24 半形,用同一個字族,兩層畫在同一張畫布再一起縮放,拉動視窗時文字不會和原版像素錯位。

Amiga、MSX2 與 Mega Drive 三個版本也各自逆向。三個平台都走過同一條冤枉路:先猜編碼參數,猜了幾百組都錯;改讀機器碼後,第一次就對。

執行原版:魔法門 III 與魔法門 IV+V

這兩款都有過中文版,難處在讓舊的中文版在現代電腦上清楚、穩定地執行。做法是用 dosgolem 執行原版 DOS 程式。dosgolem 是專案自寫的 DOS 執行器,執行時攔截遊戲要畫的字和圖,換成高解析的中文字形與 HD 圖,再交給視窗顯示。遊戲規則、事件與存檔都是原版自己的程式碼在跑,磁碟上的遊戲檔案不改。

執行器先用 Go 寫,後來兩款各自改用 Rust 重寫,也都有 Android 版。《魔法門 IV+V》的 Rust 執行器核心只用標準函式庫,桌面視窗用 winit、wgpu 與 egui。

項目魔法門 III魔法門 IV+V
中文基底當年的中文版,保留祕密區的傳送功能,補上祕密區沒譯完的文字智冠中文版,名詞對照英文原版修正 215 列
字形一般介面用 Noto Sans CJK MediumNoto Sans CJK Bold,3 倍畫布重畫,筆畫端點削圓
HD沿原版版面、人物與動畫重繪線稿上色,涵蓋遊戲內、片頭、結局與過場
聲音改善音色與混音,加上臺灣國語配音原版驅動程式擷取 52 份曲目,加上立體聲與殘響
其他語言簡體、英文、日文、韓文簡體

換字換圖的時機是個難題。中文字或 HD 圖還沒準備好時,原版的字會先露出幾格再被蓋掉。《魔法門 III》在新畫面還沒準備好時暫留上一張畫面;《魔法門 IV+V》用命令畫布統一管理圖源、遮擋與保存還原。

怎麼確認和原版一致

還沒驗過的部分寫在各頁的「目前狀態」。三款的 Windows 與 macOS 都還沒在真機上驗收,Android 的手機真機也還待驗。