教學 › 在 Mac 上玩 MVP 2005

在 Mac 上玩 MVP 2005

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

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

難度

★★☆ 要裝 Wine

時間

第一次約 30 分鐘

要會什麼

一台 Mac

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

把整個遊戲資料夾複製一份到別的地方, 包括裡面存放紀錄的資料夾。紀錄也可能放在遊戲資料夾外面: 「文件」裡的 Documents\MVP Baseball 2005,那一個要另外複製。

怎麼整包複製、紀錄(王朝、名單、設定)的兩個位置各在哪、找不到怎麼找: 看備份與還原 SOP 的「整包複製」。

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

  1. 裝 Wine(第一次會下載幾百 MB,慢是正常的)

    ⚠ 這一步在沒裝過 Wine 的 Mac 上走不通

    下面這一行裝的套件已經拿不到了,Homebrew 官方的 wine-stable 也從 2026-09-01 起停用(細節見下面第 1 步)。 替代做法本站還在實測。改模組用的 Python 腳本不需要 Wine,Mac 上照樣能用。

    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)。

⚠ 這一行在沒裝過 Wine 的 Mac 上走不通

wine-crossover 不在 Homebrew 官方的清單裡,它放在第三方的 gcenx/wine, 而那邊 2026-04-16 已經把它移除 —— 上面那一行在沒裝過的 Mac 上會說找不到這個套件。 本站測試機是在移除之前(2026-04-13)就裝好的,所以一直沒發現。 Homebrew 官方的 wine-stable(還有 wine@devel、wine@staging) 也從 2026-09-01 起停用,停用理由是過不了 macOS 的 Gatekeeper 檢查。

替代做法本站還在實測,測完才會改寫這一步,不先寫一條本站沒走過的路給你。 在那之前:改模組用的 Python 腳本完全不需要 Wine,Mac 上照樣能用 (見下面「Mac 上的模組工作」那一節)。

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

開始玩之前先記一件事:遊戲的存檔與設定(王朝、名單、手把設定)會落在「文件」資料夾的 MVP Baseball 2005,不在遊戲資料夾裡(本站在一台 Mac 上看到的就是這樣)。 Mac 上用 Wine 跑時,Wine 把「我的文件」連到你的 ~/Documents 的話,就是 ~/Documents/MVP Baseball 2005;沒連的話在 $WINEPREFIX 底下的 drive_c/users/〔使用者〕/Documents/MVP Baseball 2005。 備份時別漏了它,怎麼找、怎麼複製看備份與還原那一課「文件」資料夾那一步。

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

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

列檔名不要用 $NF。用 ls -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 有看到畫面、玩過,但那不是這一組測試。)

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

還沒驗 照本頁第 3 步新建的乾淨環境, 在有螢幕的 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 -vv 回 rejected / source=no usable signature)。 解法:macOS 15(Sequoia)以後,先雙擊一次讓它被擋,再到 「系統設定 → 隱私權與安全性」往下捲,按「強制打開」; macOS 14 以前是在那個檔案上按右鍵 →「打開」再按一次「打開」 (Apple 從 macOS 15 起拿掉了右鍵這條路)。 這兩招的按鈕字樣照 Apple 的說明寫,對 .command 會不會出現本站還沒實測; 都不行就開終端機:先打 cd 再打一個空白,把那個 .command 所在的資料夾拖進視窗 (不要加引號,路徑讓終端機自己補),按 Enter; 再打 pwd 確認印出來的是那個資料夾,最後跑 xattr -d com.apple.quarantine ./*.command (只處理這個資料夾最外層的 .command,不加 -r,不會往裡面的資料夾找; 換一位球員那一課的第 2 步有逐步的版本)。 另一種成因是那個檔沒有「可以執行」的權限, 見換一位球員那一課

🧪 想試別的繪圖轉接層:dgVoodoo2(外部做法,本站沒在 Mac 驗過)

⚠ 這一段整段都是「別人在 Windows 上驗過、本站沒驗」

上面的步驟是本站實際跑過的,這一段不是。它來自社群一個整合式啟動器(mvp2005modern,單一作者、單一開發機) 在 Windows 上驗證過的繪圖設定。本站沒有在 Wine / Mac 上試過,那位作者也沒有。 你的畫面如果已經正常,這一段不用看。

[General]
OutputAPI = bestavailable
FullScreenMode = false
ScalingMode = stretched
KeepWindowAspectRatio = false
CaptureMouse = false
CenterAppWindow = false

[GeneralExt]
FreeMouse = false

[DirectX]
DisableAndPassThru = false
VideoCard = geforce_9800_gt
VRAM = 1024
Resolution = unforced
AppControlledScreenMode = false
DisableAltEnterToToggleScreenMode = true
ForceVerticalSync = false
dgVoodooWatermark = false

[DirectXExt]
DefaultEnumeratedResolutions = all

Mac 上的模組工作

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

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

📌 重點整理

接下來