教學 › 在 Mac 上玩 MVP 2005

在 Mac 上玩 MVP 2005

一個 2005 年的 32 位元 Windows 遊戲, 要在 2026 年的 Apple Silicon Mac 上跑。 這中間隔著兩道看起來過不去的牆,而它們疊起來反而通了。 這一課把本站實際測到的每一步寫下來,包括還沒過的那兩關

只看不動 這一課只裝環境跟啟動遊戲,不修改 data/ 底下任何東西。

難度

★★☆ 要裝 Wine

時間

第一次約 30 分鐘

要會什麼

一台 Mac

🛟 動手之前:先完整備份整個遊戲資料夾

把整個遊戲資料夾複製一份到別的地方包括裡面存放紀錄的資料夾。不要挑檔案,整包複製最省事也最保險。

「紀錄」是指這些(它們跟遊戲檔混在同一個資料夾裡):

dir /s /b "〔你的遊戲資料夾〕\*.sav"
find "〔你的遊戲資料夾〕" -name "*.sav"

上面第一行 Windows、第二行 Mac。 本站每一支工具都會自己備份它要動的那一個檔, 但那只保得住那一個檔 —— 整包備份保的是「你玩到現在的一切」。 完整做法看備份與還原 SOP

⚡ 只想趕快跑起來?照這五步

  1. 裝 Wine(第一次會下載幾百 MB,慢是正常的)
    brew install --cask wine-crossover
    wine --version
  2. 確認它真的是透過 Rosetta 2 在跑,要看到 x86_64 不是 arm64
    file $(which wine)
  3. 建一個獨立的 Windows 環境,放自己指定的位置,要重來整個刪掉就好
    export WINEPREFIX="$HOME/mvp-wine"
    wineboot -u
  4. 確認 32 位元那一層真的在,印出 ok 就代表整條路是通的
    ls "$WINEPREFIX/drive_c/windows/syswow64" | wc -l
    wine "$WINEPREFIX/drive_c/windows/syswow64/cmd.exe" /c echo ok
  5. 啟動遊戲(換一個終端機視窗,那行 export 就要重下一次)
    export WINEPREFIX="$HOME/mvp-wine"
    cd "〔你的遊戲資料夾〕"
    wine mvp2005.exe

檔名有空白或中文一定要加引號,列檔名用 ls -1。 畫面全黑或閃一下就沒了,試 wine explorer /desktop=mvp,1024x768 mvp2005.exe。 想知道兩道死牆為什麼疊起來反而有路,往下讀; 只想複習,跳到📌 重點整理

為什麼這一課要存在

本站三十幾課都在教「怎麼改」,卻一直沒有一課教「Mac 上怎麼跑起來」。 這是個奇怪的空缺——因為 Mac 正是這一切最早開始的地方。 所有的檔案格式、所有的腳本,都是在一台 Mac 上把遊戲的檔案一個一個拆開量出來的。

而且 Mac 這邊的難處跟 Windows 完全不同。Windows 上的問題是「2005 年的程式碰到 2026 年的系統」; Mac 上的問題是「這台電腦根本沒有能執行它的東西」。

兩道死牆

為什麼過不去
macOS 沒有 32 位元 Catalina 之後完全拿掉。而 MVP 2005 是 32 位元的。
Apple Silicon 不是 x86 M 系列是 ARM 架構,遊戲的機器碼是 Intel 的。

兩道牆各自都是死的。但它們是兩個不同層次的問題, 所以可以各自架一座橋,然後疊起來:

你的 Mac(Apple Silicon,ARM,只有 64 位元)
  └─ Rosetta 2          把 x86_64 的指令翻成 ARM
      └─ Wine(x86_64)  把 Windows 的呼叫翻成 macOS 的
          └─ Wine 內建的 WoW64  讓 64 位元環境跑得動 32 位元程式
              └─ 遊戲在這一層

關鍵在「32 位元不見了」這件事的層次

拿掉 32 位元的是 macOS,不是那顆 CPU。 Wine 自己帶了一整套 32 位元的 Windows 執行環境, 所以它不需要跟 macOS 借。這就是為什麼死牆疊起來反而有路。

還沒驗 上面那張圖沒有畫出「遊戲那些 32 位元的 x86 指令由誰翻成 ARM」—— Rosetta 2 那一行講的是 x86_64,而 WoW64 換的是 Windows 的呼叫、不是指令集。 本站在這台 Apple Silicon 上量過:syswow64 裡的 cmd.exe 讀檔頭是 machine=0x014C(32 位元 x86), 而它在 Wine 底下真的印得出 ok——這一層確實有東西在做, 只是本站還沒查證它由誰負責,所以這裡不編一個機制出來。

前置

👉 你要做的事

1

裝 Wine。Mac 上有好幾種 Wine,本站實測用的是這一種:

brew install --cask wine-crossover

第一次裝會下載幾百 MB,慢是正常的。裝完確認版本:

wine --version

本站測到的是 wine-8.0.1 (CrossOverFOSS 23.7.1)

2

確認它真的是透過 Rosetta 2 在跑。這一步很多教學會跳過, 但它是「路通不通」的關鍵證據:

file $(which wine)

要看到 Mach-O 64-bit executable x86_64。 注意是 x86_64 不是 arm64—— 在一台 ARM 的 Mac 上,這代表它正由 Rosetta 2 翻譯執行。

3

建立一個獨立的 Windows 環境(prefix)。 不要用預設的 ~/.wine——把它放在你自己指定的位置, 這樣要重來的時候整個資料夾刪掉就好,不會影響其他東西:

export WINEPREFIX="$HOME/mvp-wine"
wineboot -u

第一次跑會建立整棵 Windows 目錄樹,大約 400 MB、要等一兩分鐘。

4

確認 32 位元那一層真的在。建好之後檢查:

ls "$WINEPREFIX/drive_c/windows/syswow64" | wc -l

本站測到 779 個檔。這個目錄就是 32 位元的系統元件, 數字不用完全一樣,但不能是 0

再實際跑一個 32 位元程式試試(用 Windows 自己的 cmd.exe):

wine "$WINEPREFIX/drive_c/windows/syswow64/cmd.exe" /c echo ok

印出 ok 就代表整條路是通的。

5

啟動遊戲。先切到遊戲資料夾,再執行。 換一個終端機視窗(或關掉再開)就要重下一次那行 export—— 不然 Wine 會回頭用預設的 ~/.wine, 那不是你第 3、4 步驗過的那一個,而且它不會報錯:

export WINEPREFIX="$HOME/mvp-wine"
cd "〔你的遊戲資料夾〕"
wine mvp2005.exe

⚠ 檔名有空白或中文的話,一定要加引號

本站測試時吃過一次虧:用 ls | awk '{print $NF}' 列檔名, $NF 只會印最後一個空白分隔的欄位, 檔名前半段被切掉了。照著那個被切過的名字下指令, Wine 找不到檔、退去用「開啟文件」的方式處理, 印出的錯誤訊息看起來很像「中文檔名不支援」——但根本不是

列檔名不要用 $NFls -1 就好。

✅ 本站實測到什麼

測試機:Apple M4 · macOS 26.5.2 · arm64 · wine-8.0.1。 測的是本站 中文版配大球場就跳出那一課做出來的執行檔。 同一組測試獨立跑了兩次

階段結果
遊戲行程起得來✅ 兩次都起來,常駐 201.5 MB / 190.3 MB
持續存活✅ 兩次都活過三分鐘(不是啟動就掛)
繪圖 d3d8.dll✅ 載入
音效 dsound.dll✅ 載入
手把 dinput.dll✅ 載入
切換螢幕顯示模式NtUserChangeDisplaySettings … returned -2
畫第一張畫面GL_INVALID_FRAMEBUFFER_OPERATION from glClear
顯示卡辨識⚠ Wine 認不得 GL_VENDOR "Apple",退回當成 NVIDIA

那 190 MB 是什麼

本站中文版配大球場就跳出那一課量過, 這個遊戲開場會一次要一整塊記憶體池,然後所有東西都從那裡面切。 那一課把它從 64 MB 調到 128 MB。 常駐 190 MB(這裡取兩次裡較低的那次 190.3 MB,另一次是 201.5 MB) ≈ 128 MB 的池 + 程式碼 + 系統元件,數字是對得上的。 換句話說,它不只是啟動,是真的把記憶體池配下去了

⚠️ 這一課沒有驗到什麼——說清楚

本站是在沒有人看著螢幕的情況下測的:只能量行程活不活著、 載了哪些元件、印了哪些訊息。本站沒有看到畫面。

所以這一課能保證的是「遊戲真的執行起來了,而且繪圖音效手把三套都初始化完成」, 不能保證你會看到可以玩的畫面。上面那兩個 ❌ 就是最後兩關, 它們也可能只是無頭環境的必然結果——本站分不出來,所以不寫成定論。

還沒驗 有人在有螢幕的 Mac 上跑到畫面出來的話, 那會是這一課最需要的一塊拼圖。

❌ 出錯處理

症狀怎麼辦
command not found: wine Homebrew 的路徑不在 PATH 裡。Apple Silicon 先跑 export PATH="/opt/homebrew/bin:$PATH"; Intel Mac 的 Homebrew 在別的地方,要跑 export PATH="/usr/local/bin:$PATH"
訊息說「找不到檔案」或跑出 start.exe 八成是檔名打錯,不是編碼問題。 用 ls -1 把完整檔名複製起來,整個用引號包住
畫面全黑或閃一下就沒了 試著讓它在一個虛擬桌面裡跑,不要讓它去動你真正的螢幕:
wine explorer /desktop=mvp,1024x768 mvp2005.exe
想整個重來 把 prefix 資料夾刪掉,重下一次 export WINEPREFIX="$HOME/mvp-wine"wineboot -u遊戲資料夾不受影響
雙擊 .command 沒反應 macOS 的 quarantine 標記:從網頁抓下來的檔案都會被貼上它, Gatekeeper 找不到可用的簽署就拒絕執行(本站測試機 2026-09 量到的是 macOS 26.6.2, spctl -a -vvrejected / source=no usable signature)。 兩種解法:在那個檔案上按右鍵 →「打開」再按一次「打開」, 或在終端機跑 xattr -dr com.apple.quarantine "整個資料夾" (路徑用拖的,不要用打的)。 另一種成因是那個檔沒有「可以執行」的權限, 見換一位球員那一課

Mac 上的模組工作

好消息是:改檔案完全不需要 Wine。 本站改檔案的腳本每一支都是 Python,Mac 上直接跑, 指令跟 Windows 只差開頭是 python3 而不是 python

需要 Wine 的只有兩種情況:要玩, 或是要用那些只有 Windows 版的社群工具 (見 二十年工具清冊)。

📌 重點整理

接下來