故事 › 這些工具不是為棒球寫的
這些工具不是為棒球寫的
這台電腦上有一個 294 MB 的資料夾,裝著社群做過的 MVP 模組工具。 一個一個打開來看,發現一件本來沒想到的事: 裡面最底層的幾支工具,原本都不是為棒球遊戲寫的。 它們來自賽車、籃球、足球、冰球的模組社群,被搬過來,換個名字,就一路用了下去。
這一頁在講什麼
不是教學,是一次盤點。內容全部來自打開檔案本身: 執行檔裡的版權字串、說明書的第一行、檔案與壓縮包的時間戳、以及 md5 比對。
凡是查不到出處的,這一頁會直接寫「未確認」,不用推測補上。 量到數字但解釋不了的,只寫數字,不補故事。
這個資料夾裡有什麼
工具箱位於遊戲資料夾底下的 MVPtools,最上層 102 個項目(98 個檔案加 4 個資料夾),
合計 294 MB。其中 60 個是壓縮包、19 個是可以直接跑的 .exe。
| 檔案上的年份 | 項目數 | 這些是什麼 |
|---|---|---|
| 1997 – 2003 | 13 | 7 個是 Windows 執行期元件(.dll / .ocx),6 個是工具本身 |
| 2004 – 2008 | 71 | 社群做工具最密集的五年 |
| 2019-01-10 | 62 | 同一天下載的,不是同一天做的 |
| 2023 | 9 | DirectX 執行期與光碟模擬器的安裝檔、編輯器的反安裝檔、兩份 2023-05-23 的名冊相關檔,以及兩個沒歸到上面任何一類的雜項 |
| 2026 | 6 | 4 個資料夾本身、加 2 個安裝腳本被動過的日期。這 6 個日期的來由本站沒有查證 |
這張表數的是最上層的 98 個檔案、4 個資料夾,再加上那 4 個資料夾第一層的內容, 合計 171 個項目,沒有再往更深的層數數。表上沒列到的是 2011、2013、2015、2016 各一到四個項目, 以及 2019 年另外三個日期(01-07、01-14、01-20)各一個。
修改日期有兩種,不能混著讀
散裝檔案的日期常常是下載日期。這個資料夾裡有 62 個檔案的日期都是 2019 年 1 月 10 日,那顯然是一次抓下來的,不是那天做的。
相對地,壓縮包內部的檔案時間戳通常會保留原始年代, 因為解壓縮不會改寫它。所以這一頁凡是講年代,都優先採用壓縮包內部的時間戳, 其次才是散裝檔的日期,並且會註明是哪一種。
但這條也有例外:壓縮包裡的資料夾項目記的常常是 重新打包那天,不是工具的年代。下面年表裡真的踩到一次,該處已標明。
順手訂正一個以為
不少檔名前面掛著一組數字,原本以為那是下載編號。攤開來看不是: 同一組數字底下有 11 個完全不同的工具,而這 11 包的說明書 全部署名同一個代號;另一組數字底下的兩個工具,一個是 2006 年的轉播畫面切換器、 一個是 2008 年的球場替換器,說明書也署名同一個人。
所以那組數字比較像是上傳者的編號,不是單一檔案的編號。 這一點只在這個資料夾的樣本內成立,原站怎麼編的本站沒有查證,不寫成定論。
先看一個八個位元組的檔案
在遊戲的 data\igshapes\ 底下,有一個被拆開來改過的圖檔資料夾,
裡面躺著一個 1,878 位元組的 index.fsh。
它的副檔名是 .fsh,但前四個位元組既不是 SHPI、也不是壓縮檔的 10 FB。
原因很單純:它是純文字。
4e 46 53 48 54 6f 6f 6c ← 前八個位元組
N F S H T o o l
整個 data 資料夾裡的散裝 .fsh 檔共 22 個,
其中 21 個的開頭都是 SHPI(EA 的圖檔標記)。
唯一的例外就是這一個,而它的第一行就是工具自己的名字:
NFSHTool generated file ... ← 第 1 行
(某人桌面上的完整路徑) ← 第 2 行,含 Windows 帳號,本站不轉載
FSH ← 第 3 行
SHPI 1 objects, tag G357 ← 第 4 行
第 3、4 行的意思不用猜,寫這支工具的說明書自己列了格式:第三行寫 QFS
代表這包是壓縮過的、寫 FSH 代表沒壓縮;第四行是 FSH 裡的物件數量,
說明書還特別註明「加新圖的時候要改這個數字」。
NFSH 的 NFS,就是 Need for Speed
這個檔案是某支工具拆解圖檔時留下的索引檔,而它會自報家門。
寫下這行字的程式,在這台電腦上找得到:
把整個遊戲資料夾底下的每一個檔案掃過一遍,含有這串文字的程式只有兩支:
kraw\nfshtool.exe 與 kraw\nfsdll.dll,
各有兩份副本、內容位元組完全相同。其餘掃到的,就是這種索引檔本身。
而這個索引檔的日期是 2022 年 12 月 28 日。 一支從賽車遊戲社群流出來的工具,在二十年後還在被拿來改棒球遊戲的畫面元件。
四個社群的簽名
順著這條線往回查,底層那幾支工具都自己留了版權行。下面每一條都是從檔案裡讀出來的,不是從網路上聽來的。
賽車:FSHTOOL
隨附的說明書開宗明義寫著它是「FSH/QFS 解壓縮與轉 BMP 的工具」, 版權年份 1998 到 2002,授權是 GNU 通用公共授權(GPL), 並且明文寫著散布這套軟體而不附原始碼是違法的。
全文提到 NFS3 兩次、NFS5 三次、NFS6 三次,提到 FIFA 一次, 其中 1.22 版的更新內容只有一條:為了相容足球遊戲的多尺度貼圖。 棒球出現零次。
工具箱裡那份 fshtool.txt 最上面多了兩行,署名 tywiggins,
說他拿原始碼「拿掉了一些東西,好讓它比較容易寫進批次檔裡跑」。
同名的那支 2006 年執行檔內部留著 Visual Studio 2005 的編譯路徑,
所以它確實是後來重新編過的。授權原文要求散布時附上原始碼;那份修改註記自己也寫「原始碼隨這個版本附上」,不過這個資料夾裡現在沒有原始碼。本站只記錄看到什麼,不下法律判斷。
籃球:nFSHTOOL、FSHLINE、EAZIP
籃球社群把上面那支工具接手改成了自己的版本。證據在同一個 DLL 裡,兩行版權並排:
FSHTOOL version 1.22 - (c) Denis Auroux 2002
NFSHTOOL version 2.20 - (c) (一個 NBA Live 網域) for NBA Live 2005,2004,2003
再往下三行接著寫「Original Version available at:」,把原始出處保留在檔案裡。
這是很典型的 GPL 衍生做法:改了、掛上自己的名字、但不抹掉上一手。
同一包裡的 nfshtool.exe 自報的是比較早的 nFSHTOOL 1.22,
版本行寫著「for NBA Live 2003 formats」。
同一批人還做了 EAZIP。它的說明書講得很白:
這是給 EA 運動遊戲的 .viv 與 .big 用的封裝檔工具,
版本紀錄從 NBA Live 2003、2000、2001 一路排到 2005,一句棒球都沒有。
連作者署名用的都是一個帶 NBA 字樣的代號。
足球:fifaFS、bigGUI
fifaFS 附了六份說明書,其中一份的標題直接寫「怎麼加新球員臉、新球衣」,
指令範例是把檔案塞進 zdata_15.big,
腳本手冊裡列的七個預定義變數,全是各代足球遊戲的安裝資料夾。
這些變數在棒球遊戲裡一個都用不到,但這支工具處理封裝檔的那半邊功能通用,
所以照樣被搬過來。
它的授權條件不是 GPL,而是一句白話規定: 可以放進你的模組與程式裡散布,但你要註明有用到它,而且要把全部文件跟著附上。 這個資料夾裡確實躺著一整包足球遊戲的文件 —— 但只在 8 個出現位置裡的 1 個,所以不能說是授權條款造成的。
另一支 bigGUI 更直接,執行檔裡的產品名稱字串第一個字就是 Fifa。
冰球:gfxpak
這支工具的版權行寫得最完整:它是「BMP/GIF/JPG/PCX/PNG 與 EA-SHPI 互轉」的程式,
作者留的聯絡位址與網址都掛在同一個以 NHL 為名的網域底下,程式裡還留著
「新增 NHL 98/99 臉部檔案」的功能說明,以及四個 FACES 封裝檔的檔名。
這支工具在這個資料夾裡有兩個版本:
397,312 位元組那份日期是 1999 年 4 月 1 日,
339,968 位元組那份是 2002 年 10 月 12 日。
這一頁不散布這些工具
上面提到的每一支都是別人的作品,著作權歸原作者。本站只寫名字與用途, 不放檔案、不放下載連結、不放安裝包。想找的人請自己循原社群的正式管道。
一個 md5,三個位置,兩個檔名
把工具箱裡所有同名檔案抓出來對雜湊值,對出一個很說明問題的結果。 下面三個檔案位元組完全相同:
| 所在的工具包 | 檔名 | 大小 | md5 前 8 碼 |
|---|---|---|---|
| 名冊編輯器 MVPedit | fshtool.exe | 78,217 | 98fd730a |
| 球衣編輯器 MVP Studio 2006 | nfshtool.exe | 78,217 | 98fd730a |
| 同一組聯絡帳號的隊徽工具包 | nfshtool.exe | 78,217 | 98fd730a |
同一個執行檔,出現在三個各自發布的工具包裡,用了兩個不同的檔名,
日期都是 2004 年 3 月 23 日。後兩包的說明書留的是同一組聯絡帳號,第一包是另一位作者。
而打開它看字串,它自報的身分是賽車社群那支 FSHTOOL 1.22,
而不是檔名上的 nfshtool。
換句話說,棒球社群這三份各自發布的東西,底層是同一顆從賽車社群拿來的引擎, 只是有人給它改了名字。
它們不是擺著好看的
這些外來工具不只是被複製進來,是真的在跑。棒球工具自己的批次檔一行一行點名:
eazip -s -d %1 %2.fsh ← delete.bat,呼叫籃球社群的 eazip
ImpBIG.exe /e %1 %2.fsh %2.fsh ← unpack.bat,呼叫另一位作者的 ImpBIG
fshtool %1 face ← makebmf.bat,呼叫賽車社群的 fshtool
整個資料夾也是這樣長出來的:最上層那八個散裝檔(兩支外來工具、兩份說明書、三個批次檔、一個主程式)
跟壓縮包裡的 MVP2005 Editor v0.30 逐一比對,八個 md5 全部相同;
遊戲根目錄下 kraw 資料夾裡出自 TiT 的那 17 個檔案,跟 TiT 2.0.5 安裝檔裡的 kraw,
17 個 md5 也全部相同。
2026-08-29 補:TiT 的原始碼還在,而且在 GitHub 上
本頁對 TiT 的描述是從二進位檔量出來的(17 個 md5 逐一比對)。
後來查到它的完整原始碼是公開的:
go2tom42/Total-Installer-Thingy,
主程式 TiT.au3 141 KB 的 AutoIt,
repo 裡連 kraw/ 那 17 個檔都在。
本站去比對了班主任遊戲根目錄下那個 kraw/ 與 repo 裡的那份:
17 個檔名全部相同,17 個大小也全部相同。
這替本頁原本的 md5 比對加了一個獨立的第二來源。
意義不只是多一個佐證。本頁講的是「工具是怎麼互相借出來的」, 而要講一個工具做了什麼,讀它的原始碼永遠好過拆它的執行檔 —— 後者是本站不做的事。這一份剛好不必拆。
⚠️ 這跟本頁下面那個 GPL 的觀察不是同一件事: 那一格講的是賽車社群那支工具的原始碼不在這個資料夾裡, 跟 TiT 自己的原始碼在不在無關。那一格維持原樣。
為什麼借得動
會這樣借,不是因為誰偷懶,而是因為這些遊戲的檔案格式本來就是同一套。 這件事可以直接量。
拿遊戲自己的檔案來看:ingame.big、portrait.big、
schedule.big 的前四個位元組都是 42 49 47 46,也就是
BIGF;
散裝圖檔的前四個位元組是 53 48 50 49,也就是 SHPI。
再看那些外來工具的執行檔裡,寫著什麼字串:
| 執行檔 | 出身社群 | BIGF | SHPI | 備註 |
|---|---|---|---|---|
| gfxpak.exe | 冰球 NHL | 7 | 20 | 另有 2 次 C0FB,程式自己把它跟 BIGF 並列成另一種封裝檔 |
| fifaFS.exe | 足球 FIFA | 2 | 2 | 另有 1 次 BIG4 |
| fshtool.exe | 賽車 NFS | 0 | 4 | 只處理圖檔,不碰封裝檔 |
| fshline.exe | 籃球 NBA Live | 0 | 3 | |
| eazip.exe | 籃球 NBA Live | 0 | 0 | 這一格量不到,不是「不支援」 |
同一支工具在這個資料夾裡常常有好幾份,數字會不一樣。這張表逐一指定量了哪一份:
gfxpak.exe 是 MVPedit 資料夾內那份(2002-10-12)、
fifaFS.exe 與 fshline.exe 是 kraw\ 底下那份、
fshtool.exe 與 eazip.exe 是工具箱最上層那份。
換一份數字就會變:MVPedit 裡那支 fshtool.exe 的 SHPI 是 5 不是 4。
最後那個 0 只能解讀成「量不到」
最上層那份 eazip.exe,file 指令說它是 UPX 壓過的執行檔。
但把 kraw\ 底下那份沒有被 UPX 壓過的 eazip.exe 拿來掃,
BIGF 一樣是 0(那份倒是掃到 2 次 BIG4)。
它會不會處理 BIGF?會,它的說明書整篇都在講這件事。
掃不到跟沒有是兩回事,這一格只能寫「量不到」。
至於為什麼掃不到,本站沒有查證,也不歸因給 UPX。
還有第三個四字母。把遊戲那 21 個 SHPI 圖檔全部掃過一遍,
21 個裡面有 21 個都含有同一句英文,說明這塊資料是給
「EAGL 執行期貼圖管理」用的附加資料。
EAGL 這個代號本站只在這一款遊戲的檔案裡量到,
它在 EA 其他遊戲裡是不是同一套,本站沒有查證,不寫成定論。
但可以確定的是:一支冰球社群寫的工具,認得棒球遊戲的 SHPI;
一支足球社群寫的工具,認得棒球遊戲的 BIGF。
工具會流動,是因為格式本來就相通。
年表
棒球社群自己長出來的工具
借來的是底層,上面那層是這個社群自己蓋的。這些工具處理的是別的遊戲沒有的東西: 打擊率、輪值、球員能力值、王朝模式。
| 工具 | 做什麼 | 作者代號 | 日期 |
|---|---|---|---|
| MVPedit | 名冊編輯器。說明書指定的八個 .dat 資料檔要一次匯入,改完再匯出 | rglass4 | 2004-2006 |
| MVP2005 Editor | 要先開著遊戲才能用。說明書寫:遊戲沒開會跳訊息,找記憶體位址要花幾秒鐘,改完存檔就直接進遊戲 | tywiggins | 2008-01-14 |
| MVP Studio 2006 | 球衣與隊徽的加裝介面 | fuzZOne | 2006-09-14 |
| TiT 2.0.5 | 一鍵安裝別人做好的模組。它裝進去的那個資料夾,就是本頁那堆外來工具 | 未署名 隨附 DLL 內有 krawhitham | 2008-08-25 |
| 11 個壓縮包 | 賽程產生、安裝檔製作、開場畫面、球場檔批次匯出入。11 份說明書裡有 10 份署名 compmaniac;另一份(改解析度那支)寫明工具是 tywiggins 做的,compmaniac 只組裝安裝檔 | compmaniac(10)/tywiggins(1) | 2007 |
| MVPSavReader | 讀王朝存檔,輸出成一整套網頁。這裡有三個版本包,包內時間戳分別是 2005-07-22、2007-04-01、2007-05-19 | 未確認 | 2005-2007 |
| 六支計算機 | 檔名寫的是打擊、守備、投球、投手續航力的能力值計算,另外兩支叫 MLECalc 與 SplitEstimator | 未確認 | 四支 2008-2011 另兩支只剩下載日 |
| 走場音樂工具兩支 | 換場中音樂與打者上場音樂 | iansimcox | 2005-05-18 / 05-23 |
| Portrait Maker | 把主圖與 alpha 圖加上球員編號,打包成大頭照圖檔 | 未確認 | 2006-10-30 |
| 轉播與球場切換器 | 主體是批次檔,靠複製檔案換轉播主播與球場;包內另附一支 2000 年的小程式做按鍵選單 | Sharpshooter | 2006-04-28 / 2008-05-21 |
日期一律取自壓縮包內部時間戳或說明書自署行;只寫年份的,代表該包內時間戳落在那一段。 六支計算機裡有兩支是散裝安裝檔,只剩 2019-01-10 這個下載日期,沒有年代可寫。
借東西這件事,他們自己講得很清楚
很容易在這裡編出一套「因為授權這樣寫,所以資料夾才長這樣」的故事。 本站試著驗,三條都驗不過,所以不寫:
- 足球那支要求散布時附上全部文件。但它在這個資料夾出現 8 次, 真的附了那六份說明書的只有 1 次。
- 籃球那支的授權寫的是「散布時要附上全部文件」,同一句還明文要求「不得修改、變更或省略散布內容」。 而它在這裡有三種不同的二進位(75,264/163,840/80,896 個位元組), 不是原封不動的同一份;是同一個作者先後發布的不同版本,還是有人改過,本站沒有查證,不下判斷。
- 賽車那支是 GPL,授權原文寫「不附原始碼散布是違法的」, 而這個資料夾裡找不到它的原始碼。這件事本站不下判斷。
能講的只有一句沒有因果的觀察:這些工具的授權條款都寫得很清楚, 而後來的人確實照著改、照著搬。
社群內部借來借去也一樣坦白。名冊編輯器 2006 年 1 月那次更新, 改用另一位作者的封裝工具處理圖片,更新紀錄裡逐條標了「感謝某某」; 同一條更新紀錄裡還有一句寫著 「Stole config file from SwinginSoriano, hope he doesn't mind」 (出自 MVPedit 2006.1 更新紀錄)。用偷這個字,後面接一個笑臉。
這才是這個資料夾真正的內容
294 MB 裡面裝的不只是程式。是四個遊戲社群、二十幾年、幾十位素不相識的人, 各自解開一小塊格式,然後把成果丟出去讓別人接著用。
本站做的事情跟他們一樣:量到什麼寫什麼,寫完公開。 這一頁就是那條鏈子往下接的一節。
名字這一欄的處理原則
這些說明書與執行檔裡有作者的真實姓名、電子信箱、贊助帳號、個人網站,本次至少讀到三位作者的本名; 那個索引檔裡甚至留著某人 Windows 帳號的完整桌面路徑。 這些本站一律不抄出來,只保留當年公開發表時的圈內代號、工具名稱、日期與功能。
唯一的例外是 FSHTOOL 的著作權人 Denis Auroux。 那支工具是 GPL 自由軟體,保留著作權聲明是授權條款本身的要求, 而他當年就是以本名公開發表的。這跟「把一個網友的真實身分挖出來」是兩件事。 即使如此,他留在檔案裡的電子信箱與個人網址,本站一樣不放。
📌 重點整理
- 一句話 這個 294 MB 工具箱裡最底層那幾支工具,原本都不是為棒球寫的,它們來自賽車、籃球、足球、冰球社群,而它們借得動的原因是這些遊戲的檔案格式本來就是同一套。
- 八個位元組就破了案 遊戲
data\igshapes\底下有個index.fsh,開頭既不是SHPI也不是壓縮標記,而是純文字NFSHTool。整個data底下 22 個散裝.fsh只有它是例外,而 NFSH 的 NFS 就是 Need for Speed。掃過整個遊戲資料夾,含這串文字的程式只有兩支,都在kraw\底下;那個索引檔的日期是 2022 年 12 月 28 日,一支從賽車社群流出來的工具,二十年後還在改棒球遊戲的畫面元件。 - 一個 md5、三個位置、兩個檔名 78,217 位元組、md5 前八碼
98fd730a的同一個執行檔,出現在名冊編輯器、球衣編輯器與隊徽工具包三個各自發布的工具包裡,用了fshtool.exe與nfshtool.exe兩個檔名,日期都是 2004-03-23。打開看字串,它自報的身分是賽車社群那支 FSHTOOL 1.22,不是檔名上的nfshtool。 - 借得動是因為格式相通 賽車那支的說明書一路點名 NFS3、NFS5、NFS6,提到 FIFA 一次,棒球零次,卻照樣認得棒球的
SHPI;冰球的gfxpak.exe裡BIGF出現 7 次、SHPI20 次。而遊戲這邊 21 個散裝SHPI圖檔,21 個都含有同一句 EAGL 貼圖管理的字串。這些工具也不是擺著好看,棒球工具自己的批次檔一行一行點名在呼叫它們。 - 最容易誤讀的:修改日期有兩種 散裝檔案的日期常常是下載日期,這個資料夾裡有 62 個檔的日期都是 2019 年 1 月 10 日,那顯然是一次抓下來的。所以這頁講年代一律優先採用壓縮包內部的時間戳。但這條也有例外:壓縮包裡的資料夾項目記的常是重新打包那天,年表裡真的踩到一次,該處已標明不採計。
- 本站訂正與新增 檔名前面那組數字原本以為是下載編號,攤開來看不是,同一組數字底下有 11 個完全不同的工具、說明書全部署名同一個代號,比較像上傳者的編號。2026-08-29 又補了一條:TiT 的完整原始碼是公開的(
go2tom42/Total-Installer-Thingy,主程式是 141 KB 的 AutoIt),班主任遊戲根目錄那個kraw/的 17 個檔名與大小跟 repo 全部相同,替原本的 md5 比對加了獨立的第二來源。要講一個工具做了什麼,讀原始碼永遠好過拆執行檔。 - 很想編、但三條都驗不過的故事 「因為授權這樣寫,資料夾才長這樣」很好聽,可是足球那支要求散布時附上全部文件,它在這裡出現 8 次真的附了只有 1 次;籃球那支的授權明文寫著「不得修改、變更或省略散布內容」,而它在這裡有三種不同的二進位(版本先後還是有人改過,本站沒有查證);賽車那支是 GPL、原文寫不附原始碼散布是違法的,而這個資料夾裡找不到它的原始碼(這件事本站不下判斷)。能講的只有一句沒有因果的觀察:授權都寫得很清楚,後來的人確實照著改、照著搬。社群內部借來借去也一樣坦白,名冊編輯器的更新紀錄裡直接寫著向某人「偷」了設定檔,後面接一個笑臉。
- 本站沒驗的
eazip.exe掃不到BIGF那一格只能寫「量不到」而不是「不支援」,它的說明書整篇都在講這件事;為什麼掃不到本站沒查證,也不歸因給 UPX。EAGL 這個代號在 EA 其他遊戲裡是不是同一套沒查證;資料夾那 6 個 2026 年的日期來由沒查證;檔名數字前綴在原站怎麼編的也沒查證。名字一律只留當年公開發表的圈內代號,唯一例外是 GPL 條款本身要求保留著作權聲明的 Denis Auroux,即使如此他的信箱與個人網址一樣不放。
接下來
- BIGF 封裝格式:上面所有工具搶著處理的那層外殼,規格全在這一頁
- QFS / RefPack 壓縮:賽車社群 1998 年的說明書就在講的那層壓縮,今天照樣適用
- 當年那兩份說明書,一句一句拿今天的檔案對過:同一批工具在台灣這邊做出了什麼
- 什麼改得動、什麼還不行:二十年後的今天,還剩哪些沒解開