教學 › 在 Mac 上玩 MVP 2005
在 Mac 上玩 MVP 2005
一個 2005 年的 32 位元 Windows 遊戲, 要在 2026 年的 Apple Silicon Mac 上跑。 這中間隔著兩道看起來過不去的牆,而它們疊起來反而通了。 這一課把本站實際測到的每一步寫下來,包括還沒過的那兩關。
只看不動
這一課只裝環境跟啟動遊戲,不修改 data/ 底下任何東西。
難度
★★☆ 要裝 Wine
時間
第一次約 30 分鐘
要會什麼
一台 Mac
🛟 動手之前:先完整備份整個遊戲資料夾
把整個遊戲資料夾複製一份到別的地方,
包括裡面存放紀錄的資料夾。紀錄也可能放在遊戲資料夾外面:
「文件」裡的 Documents\MVP Baseball 2005,那一個要另外複製。
怎麼整包複製、紀錄(王朝、名單、設定)的兩個位置各在哪、找不到怎麼找: 看備份與還原 SOP 的「整包複製」。
⚡ 只想趕快跑起來?照這五步
- 裝 Wine(第一次會下載幾百 MB,慢是正常的)
⚠ 這一步在沒裝過 Wine 的 Mac 上走不通
下面這一行裝的套件已經拿不到了,Homebrew 官方的
wine-stable也從 2026-09-01 起停用(細節見下面第 1 步)。 替代做法本站還在實測。改模組用的 Python 腳本不需要 Wine,Mac 上照樣能用。brew install --cask wine-crossover wine --version - 確認它真的是透過 Rosetta 2 在跑,要看到
x86_64不是arm64
file $(which wine) - 建一個獨立的 Windows 環境,放自己指定的位置,要重來整個刪掉就好
export WINEPREFIX="$HOME/mvp-wine" wineboot -u - 確認 32 位元那一層真的在,印出
ok就代表整條路是通的
ls "$WINEPREFIX/drive_c/windows/syswow64" | wc -l wine "$WINEPREFIX/drive_c/windows/syswow64/cmd.exe" /c echo ok - 啟動遊戲(換一個終端機視窗,那行
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——這一層確實有東西在做,
只是本站還沒查證它由誰負責,所以這裡不編一個機制出來。
前置
- 一台 Apple Silicon 或 Intel 的 Mac
- 已安裝好的 MVP Baseball 2005(本站不提供遊戲本體)
- Homebrew。沒裝的話到 brew.sh 照官方一行指令裝
👉 你要做的事
裝 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 上的模組工作」那一節)。
確認它真的是透過 Rosetta 2 在跑。這一步很多教學會跳過, 但它是「路通不通」的關鍵證據:
file $(which wine)
要看到 Mach-O 64-bit executable x86_64。
注意是 x86_64 不是 arm64——
在一台 ARM 的 Mac 上,這代表它正由 Rosetta 2 翻譯執行。
建立一個獨立的 Windows 環境(prefix)。
不要用預設的 ~/.wine——把它放在你自己指定的位置,
這樣要重來的時候整個資料夾刪掉就好,不會影響其他東西:
export WINEPREFIX="$HOME/mvp-wine"
wineboot -u
第一次跑會建立整棵 Windows 目錄樹,大約 400 MB、要等一兩分鐘。
確認 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 就代表整條路是通的。
啟動遊戲。先切到遊戲資料夾,再執行。
換一個終端機視窗(或關掉再開)就要重下一次那行 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 上試過,那位作者也沒有。
你的畫面如果已經正常,這一段不用看。
- 它是什麼:dgVoodoo2 是第三方的「舊版 DirectX 轉接層」,把 DirectX 8 與 DirectDraw 的呼叫轉成較新的繪圖介面。
用法是把它的
D3D8.dll、DDraw.dll、D3DImm.dll放在mvp2005.exe旁邊, 設定寫在它自己的設定檔裡。請從它作者的官方發行頁下載,不要用來路不明的整合包。 - 為什麼可能有用:本頁測到載入的是 Wine 自己內建的
d3d8.dll(見上面「本站實測到什麼」那張表)。 如果你已經試過上面「出錯處理」的虛擬桌面,畫面仍然全黑、花掉或被拉得不對,換掉這一層是少數還沒試過的方向。 不保證有用,也可能更糟。 - 那位作者在 Windows 上用的設定(原文照列,只列他寫的那一段):
[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
- 在 Wine 上多半還要做的事(推論,沒驗):Wine 預設會用它內建的
d3d8, 要讓它改用遊戲資料夾裡的那幾個 DLL,得設 Wine 的 DLL 覆寫(環境變數WINEDLLOVERRIDES, 「先用原生的、再用內建的」)。要列哪幾個名字、轉接層底下又是接到 Wine 的哪一套繪圖,本站都沒驗。 - 怎麼退回來:把你放進去的那幾個 DLL 移走(先備份別刪),就回到本頁原本的做法。
這一段不會動到
data/底下的任何東西。 - 限制:上面那份設定是那位作者在 Windows、一台機器上調出來的,而且他的整合包同時處理了視窗與輸入, 這份設定單獨拿來用不等於他的整體效果。
Mac 上的模組工作
好消息是:改檔案完全不需要 Wine。
本站改檔案的腳本每一支都是 Python,Mac 上直接跑,
指令跟 Windows 只差開頭是 python3 而不是 python。
需要 Wine 的只有兩種情況:要玩, 或是要用那些只有 Windows 版的社群工具 (見 二十年工具清冊)。
📌 重點整理
- 一句話 兩道死牆(macOS 從 Catalina 之後拿掉 32 位元、Apple Silicon 不是 x86)是兩個不同層次的問題,所以可以各自架一座橋然後疊起來,關鍵是 Wine 自己帶了一整套 32 位元的 Windows 執行環境,不需要跟 macOS 借。
- 堆疊順序要記住 你的 Mac(Apple Silicon,ARM,只有 64 位元)→ Rosetta 2 把 x86_64 的指令翻成 ARM → Wine(x86_64)把 Windows 的呼叫翻成 macOS 的 → Wine 內建的 WoW64 讓 64 位元環境跑得動 32 位元程式 → 遊戲在最底下那一層。所以
file $(which wine)要看到Mach-O 64-bit executable x86_64,看到arm64反而不對。 - 關鍵數字 測試機 Apple M4 · macOS 26.5.2 · arm64 ·
wine-8.0.1 (CrossOverFOSS 23.7.1);syswow64有 779 個檔(數字不用完全一樣,但不能是 0);建 prefix 大約 400 MB;遊戲行程常駐 201.5 MB / 190.3 MB,同一組測試獨立跑兩次,兩次都活過三分鐘。 - 那 190 MB 是對得上的 中文版配大球場就跳出那一課把遊戲開場要的那一整塊記憶體池從 64 MB 調到 128 MB,128 MB 的池加上程式碼與系統元件差不多就是 190 MB(這裡取兩次裡較低的那次 190.3 MB,另一次是 201.5 MB)。也就是說它不只是啟動,是真的把記憶體池配下去了。
- 最容易踩的雷是自己打錯檔名 用
ls | awk '{print $NF}'列檔名,$NF只會印最後一個空白分隔的欄位,檔名前半段被切掉。照那個被切過的名字下指令,Wine 找不到檔就退去用「開啟文件」的方式處理,印出來的錯誤訊息看起來很像中文檔名不支援,但根本不是。列檔名用ls -1,路徑整個用引號包住。 - 安全網 這一課只看不動,不修改
data/底下任何東西。想整個重來,把 prefix 資料夾刪掉,重下一次export WINEPREFIX="$HOME/mvp-wine"再wineboot -u,遊戲資料夾不受影響。command not found: wine是PATH問題,Apple Silicon 先跑export PATH="/opt/homebrew/bin:$PATH",Intel Mac 的 Homebrew 在別的地方,要跑export PATH="/usr/local/bin:$PATH"。 - 存檔與設定在「文件」裡 王朝、名單、手把設定會落在「文件」資料夾的
MVP Baseball 2005(Mac 上用 Wine 跑時,Wine 把「我的文件」連到~/Documents的話就是~/Documents/MVP Baseball 2005),不在遊戲資料夾裡,備份時別漏,做法看備份與還原那一課。 - 改模組不需要 Wine 本站改檔案的腳本每一支都是 Python,Mac 上直接跑,指令跟 Windows 只差開頭是
python3而不是python。需要 Wine 的只有兩種情況,要玩,或是要用那些只有 Windows 版的社群工具。 - dgVoodoo2 那一段是外部做法 來自一位社群作者在 Windows 上的單機驗證,本站與原作者都沒有在 Wine / Mac 上驗過;畫面正常就不用理它,要試就先備份、試不好把 DLL 移走即可退回。
- 本站沒驗的 本頁這一組測試是在沒有人看著螢幕的情況下做的,沒有看到畫面(班主任自己的 Mac 有看到畫面、玩過,但照本頁第 3 步新建的乾淨環境還沒在有螢幕的 Mac 上驗過)。繪圖
d3d8.dll、音效dsound.dll、手把dinput.dll三套都載入了,但切換螢幕顯示模式(NtUserChangeDisplaySettings … returned -2)與畫第一張畫面(glClear的GL_INVALID_FRAMEBUFFER_OPERATION)兩關是 ❌,那也可能只是無頭環境的必然結果,本站分不出來,所以不寫成定論。
接下來
- 2026 年的電腦怎麼跑 —— Windows 那一側的對應課
- 不用每次放光碟 —— 保護你的正版光碟
- 中文版配大球場就跳出 —— 那 128 MB 是哪來的
- 備份與還原 SOP —— 動任何東西之前