教學 › 暖身課:打開一個遊戲的檔案

暖身課:打開一個遊戲的檔案

本站的第 0 課要你先學會開命令提示字元,之後每一課還要裝 Python、解壓縮。這一課排在第 0 課前面 —— 什麼都不用。遊戲資料夾裡有一個純文字檔, 用記事本就打得開、看得懂、改得動,而且改壞了一定回得來

這一課要你學會的不是「改鍵位」

改鍵位在遊戲的設定畫面裡就能做,不需要碰檔案。

這一課真正在教的是三件事,而這三件事後面每一課都會用到:

一、遊戲的檔案不是天書,有些是純文字。
二、先找到還原的方法,再動手
三、看到一個沒看過的檔案,怎麼從它自己身上找出規律

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

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

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

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

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

⚡ 只想趕快做完?照這五步

  1. 打開遊戲資料夾(裡面有 mvp2005.exe 的那一層),找到 controller.cfg,對著它按右鍵複製貼上,把複製檔拖到桌面
  2. 用記事本打開原本那個 controller.cfg,先看形狀:每一行都是「名字= 值」,一行例外都沒有(本站那份 315 行全部符合)。
  3. 從頭往下數 profile= 出現幾次,那就是幾個輸入裝置;代入算式,記事本右下角顯示的行數要等於算出來的數字、或比它多 1(差 0 或差 1 都正常,看檔尾有沒有多一個換行)。
    2 + 段數 × 63 + (段數 − 1) = 總行數
  4. Ctrl+FCROSS,找得到就完成最後一項成功標準,然後直接關掉,不要存檔
  5. 不小心存壞了:先把桌面那份複製回去覆蓋;還是不對,再進遊戲 → 設定 → 手把設定 → 選「還原預設」。

這一課不用任何工具,所以沒有指令可以還原 —— 上面第 1 步那份手動備份就是你的安全網

記事本要先把「自動換行」關掉、把「狀態列」勾起來,右下角才會出現行數。 Mac 的「文字編輯」沒有行號,第三步改驗「隨便挑一段,從它的 profile= 數到下一個 profile= 之前剛好 63 行」。 想知道這個檔為什麼長這樣,往下讀;只想複習,跳到📌 重點整理

為什麼從這個檔開始

條件這個檔
要不要解壓縮不用,它就攤在遊戲資料夾最外層
要不要工具不用,記事本就行
是不是純文字,整份都讀得出來:以英數字、底線、等號為主,另外會有 + - . 與括號(來自裝置名稱與搖桿軸向)
改壞了怎麼辦遊戲設定畫面裡有一個「還原預設」按鈕
會不會弄壞存檔不會,它跟球員名單、賽季進度完全無關

前置

👉 你要做的事

步驟 1:先做一份備份。這是本站所有教學的第一步,永遠不會變。

為什麼要拖到桌面

留在原地的備份,很容易在下次整理資料夾時被自己刪掉,或被遊戲一起覆蓋。 備份要放在「不會被你正在做的事情碰到」的地方。

步驟 2:用記事本打開原本那個 controller.cfg

你會看到
profile= Keyboard_Profile_1
device= Keyboard_Profile_1
player= 2
number_of_buttons= 0
number_of_povs= 0
number_of_axis= 0
VPAD_VIRTUAL_BUTTON_START= key sc_esc
VPAD_VIRTUAL_BUTTON_SELECT= key sc_divide
VPAD_VIRTUAL_BUTTON_CROSS= key sc_down
VPAD_VIRTUAL_BUTTON_CIRCLE= key sc_right
VPAD_VIRTUAL_BUTTON_SQUARE= key sc_left
VPAD_VIRTUAL_BUTTON_TRIANGLE= key sc_up
...

看不懂沒關係,先看形狀:每一行都是 名字= 值,等號前面沒有空格、等號後面剛好一個空格。 全檔 315 行都是這個形狀,一行例外都沒有。

步驟 3:數一數這個檔有幾段。

你會看到

每一次 profile= 就是一個輸入裝置。 本站測試機上有五段:兩支 USB 手把、兩組鍵盤配置、一支 Xbox 手把。 你的電腦上通常會比較少,因為它記的是「這台電腦接過什麼」。

每一段的長度是固定的:63 行

6 行裝置資訊 + 24 行按鈕對照 + 33 行動作設定 = 63。所以整個檔案的行數是算得出來的:

開頭 2 行空白 + 5 段 × 63 行 + 段與段之間 4 行空白 = 321 行

本站測試機那份剛好 321 行你可以拿自己的檔案驗這條算式2 + 段數 × 63 + (段數 − 1) = 總行數

記事本要先做兩件事才看得到行數

很多人到這一步會卡住,因為記事本預設不顯示行號

  • (a) 上方選單 格式 → 把「自動換行關掉開著的時候,狀態列會被停用 —— 這是最常見的原因。
  • (b) 上方選單 檢視 → 勾「狀態列」。 右下角就會出現「第 X 列,第 Y 行」。
  • (c)Ctrl + End 跳到檔案最後面, 看右下角那個「第 X 列」。

⚠️ 這裡會差 1,那是正常的

有些機器上,這個檔最後一行結尾還有一個換行,最底下就會多一個空行, 記事本會把那個空行也算進去。

那種情況下,算式算出來的數字會比記事本顯示的少 1。 本站量了三份檔案,兩份是這樣;另外一份最後一行沒有換行, 記事本顯示的數字就剛好等於算式。差 0 或差 1 都算過關。

(2026-09-05 訂正:本站原本寫成「兩台不同機器上的檔案都是這樣」、 把「減 1」寫成必然。再量第三份才發現不是每一份檔尾都有那個換行。)

五段的情況
算式 2 + 5×63 + 4321
記事本 Ctrl+End 顯示321 或 322
真正有內容的行315

所以:記事本顯示的數字,等於算式算出來的數字、或比它多 1,兩種都算對。

本站原本沒寫這一段,成功標準寫成「兩個數字一致」—— 檔尾有那個換行的機器上,照著做的人會看到差 1,然後以為自己數錯了。 這是拿第二個樣本重驗才發現的

🍎 Mac 的「文字編輯」沒有行號,這個算式在 Mac 上驗不了。 Mac 讀者跳過這一項就好,下面的成功標準也有寫。 (這款遊戲本來就是 Windows 遊戲,Mac 上多半是透過相容層在跑。)

步驟 4:找出這個遊戲的一個小祕密。

PC 版遊戲,內部是一支 PlayStation 手把

24 個按鈕名字全部是 PlayStation 的講法: CROSS(×)、CIRCLE(○)、SQUARE(□)、TRIANGLE(△)、 L1R1L2R2STARTSELECT

沒有任何一顆叫 A/B/X/Y。 連 Xbox 手把那一段也是 —— 一支根本沒有「×」鍵的手把, 在這個檔裡被記成 CROSS = button 1。 鍵盤也一樣:CROSS = key sc_down,方向鍵下被登記成「×鍵」。

換句話說,遊戲把手把、鍵盤、Xbox 手把全部先翻譯成同一支虛擬的 PlayStation 手把, 這 24 行就是那張翻譯表。

這是移植遊戲留下的痕跡。想看更多這種痕跡,見 平安夜凌晨的兩次建置

⚠️ 一件必須先知道的事

這個檔不是「給你填的」,是「遊戲自己寫出來的」

本站在遊戲主程式裡找到整整 17 種輸出模板, 形狀就是這個檔每一行的樣子。拿那 17 種模板去比對整個檔案: 315 行全部命中,沒有任何一行落單,而且 17 種模板每一種都真的用到了

意思是:你在遊戲的設定畫面按下確定的時候,遊戲會把整個檔案重印一次。 你手動改的內容,可能會在那個時候被蓋掉。

所以 這一課的目的是看懂它。真的要改鍵位,在遊戲的設定畫面改比較保險

附帶:按鍵名稱表也在主程式裡

檔案裡的鍵盤按鍵寫成 key sc_downkey sc_numpad6 這樣。 那些 sc_ 名字不是隨便取的 —— 完整的清單就在遊戲主程式裡, 只是全部大寫:

SC_ESC  SC_1  SC_2  …  SC_NUMPAD0  …  SC_LWIN  SC_RWIN  SC_KANJI …

實測 122 個不重複的名字,而你的 controller.cfg 只用到其中一小部分。 裡面甚至有 SC_KANJI(日文鍵)、SC_SLEEP(睡眠鍵)這種 這個遊戲根本用不到的按鍵。

這代表什麼

那是一張通用的鍵盤按鍵對照表,不是為這個遊戲寫的。 遊戲把整張表帶著走,用到哪個算哪個。

跟前面「PC 版內部是一支 PlayStation 手把」是同一件事的兩面: 輸入這一層是通用的,遊戲只是接上去。

✅ 成功標準

以下全部做到就算過關:

❌ 出錯處理

狀況怎麼辦
找不到 controller.cfg 你可能開在錯的資料夾。先確認同一層有 mvp2005.exe。 如果從來沒有玩過這款遊戲,這個檔可能還沒被建立出來 —— 先進遊戲玩一次再回來
打開是一堆亂碼 你開錯檔了。這個檔整份都是看得懂的英數字, 最「特別」的字元也只有 =、底線,以及裝置名稱與搖桿軸向會用到的 + - . ( )
行數算式對不上 先確認你數的是 profile= 而不是 device=(兩者長得很像、值也一樣)。 如果還是對不上,那是有意義的發現 —— 照下面的範本回報
不小心存檔了,遊戲怪怪的 三個辦法,從上往下試
一、把桌面那份備份複製回去覆蓋
二、進遊戲 → 設定 → 手把設定 → 選「還原預設」
三、看下面「原廠預設值放在哪」

原廠預設值放在哪

可以拿來對照的預設值有兩份,兩份還不一樣(第二份不是遊戲安裝時就有的,是玩過之後才出現):

哪一份位置內容
原廠裝置表data\profiles.big 28 種裝置的完整預設綁定。它是純文字 CSV、沒有壓縮, 用記事本打開 .big 就看得到內容
遊戲自己留下的一份Support\MVP Baseball 2005\controller.cfg 只有兩組鍵盤配置,126 行(跟上面 315 行同一種數法:有內容的行;記事本會顯示 130)

⚠️ 那份「備份」反而不是原廠值

直覺會以為 Support\ 那份是最乾淨的原廠檔。反過來。

把它跟 profiles.big 的原廠表逐欄比對,有 8 欄不同, 全部集中在同一個地方:兩組鍵盤配置的右類比搖桿四個方向。 原廠表寫「未綁定」,那份備份卻綁了小鍵盤與 WASD。

而遊戲根目錄那份反而跟原廠表一致所以要還原,用遊戲裡的「還原預設」最保險。

一個你可以自己做的驗算

把原廠表裡兩組鍵盤配置那兩列,照下面的換算規則翻成 controller.cfg 的寫法:

na       →  not_assigned -1
sc_xxx   →  key sc_xxx
p0       →  pov0 1
a-3      →  axis- 3
7        →  button 7

再跟你電腦上的 controller.cfg 逐欄比對。 本站測試機的結果是 34 / 34 完全相同,兩組鍵盤配置都是。

如果你的也是 34/34,代表你的鍵盤設定從來沒被改過

在 Wine 底下按鈕會對不上,而那不是你設錯

本站原本沒有講這件事

MVP 2005 用的是 2005 年的 DirectInput 按鈕編號。 那些編號跟現代手把上印的標籤不保證對得上 —— 透過 USB 轉接器接老手把時更亂。

在 Wine 底下最麻煩:Linux、Wine、遊戲三邊 可能各自用不同的編號在描述同一顆按鈕

症狀很好認:手把只有一半能用 —— 左類比可以瞄投球,但選球種、傳球、跑壘或右類比的動作跑到別顆按鈕上。 那不是你設錯,是編號對不上。

有人做了一支工具解決它

2026 年 7 月出現的 mvp2005padcfg(MIT 授權,原始碼公開)。 本站沒有使用它,但它的做法有兩點值得學:

⚠️ 本站沒有實際跑過那支工具,上面是讀它的說明與原始碼得到的。 這一課的做法(自己讀懂 controller.cfg 再手改)仍然成立, 而且你會知道每一格是什麼 —— 那是工具給不了的。

難度

★☆☆ 什麼工具都不用

時間

約 10 分鐘

要會什麼

會用記事本

本站沒有測的一件事

直接刪掉 controller.cfg 會怎樣?

未解 本站沒有測。

從「遊戲會自己重印這個檔」這件事推測它會重新產生一份, 但本站的紀律是全程唯讀、不動使用者的檔案,所以沒有實際刪掉來驗。

不要拿這件事當還原方法。用備份或遊戲裡的「還原預設」。

如果你有完整備份、願意實測,歡迎照下面的範本回報,本站會把結果補上並註明來源。

📋 回報範本

卡住或有發現,複製下面這段填一填:

暖身課 status: ✅ / ❌
我的 profile= 有幾段: ___
記事本顯示的總行數: ___    (看不到行號就填「沒有行號」)
算式 2 + 段數×63 + (段數-1) 算出來: ___
記事本那個數字跟算式差多少: 0 / 1 / 其他 ___ / 沒驗
一段是不是剛好 63 行: 是 / 否    (上面那項沒驗的人填這個)
找得到 CROSS 嗎: 是 / 否
卡在哪一步: ___
其他發現: ___

📌 重點整理

接下來去第 0 課

學會「打開、看懂、還原」之後,可以往兩個方向走: