故事 › 這些工具不是為棒球寫的

這些工具不是為棒球寫的

這台電腦上有一個 294 MB 的資料夾,裝著社群做過的 MVP 模組工具。 一個一個打開來看,發現一件本來沒想到的事: 裡面最底層的幾支工具,原本都不是為棒球遊戲寫的。 它們來自賽車、籃球、足球、冰球的模組社群,被搬過來,換個名字,就一路用了下去。

這一頁在講什麼

不是教學,是一次盤點。內容全部來自打開檔案本身: 執行檔裡的版權字串、說明書的第一行、檔案與壓縮包的時間戳、以及 md5 比對。

凡是查不到出處的,這一頁會直接寫「未確認」,不用推測補上。 量到數字但解釋不了的,只寫數字,不補故事。

這個資料夾裡有什麼

工具箱位於遊戲資料夾底下的 MVPtools,最上層 102 個項目(98 個檔案加 4 個資料夾), 合計 294 MB。其中 60 個是壓縮包、19 個是可以直接跑的 .exe

檔案上的年份項目數這些是什麼
1997 – 2003137 個是 Windows 執行期元件(.dll / .ocx),6 個是工具本身
2004 – 200871社群做工具最密集的五年
2019-01-1062同一天下載的,不是同一天做的
20239DirectX 執行期與光碟模擬器的安裝檔、編輯器的反安裝檔、兩份 2023-05-23 的名冊相關檔,以及兩個沒歸到上面任何一類的雜項
202664 個資料夾本身、加 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.exekraw\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 碼
名冊編輯器 MVPeditfshtool.exe78,21798fd730a
球衣編輯器 MVP Studio 2006nfshtool.exe78,21798fd730a
同一組聯絡帳號的隊徽工具包nfshtool.exe78,21798fd730a

同一個執行檔,出現在三個各自發布的工具包裡,用了兩個不同的檔名, 日期都是 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 安裝檔裡的 kraw17 個 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.bigportrait.bigschedule.big 的前四個位元組都是 42 49 47 46,也就是 BIGF; 散裝圖檔的前四個位元組是 53 48 50 49,也就是 SHPI

再看那些外來工具的執行檔裡,寫著什麼字串:

執行檔出身社群BIGFSHPI備註
gfxpak.exe冰球 NHL720另有 2 次 C0FB,程式自己把它跟 BIGF 並列成另一種封裝檔
fifaFS.exe足球 FIFA22另有 1 次 BIG4
fshtool.exe賽車 NFS04只處理圖檔,不碰封裝檔
fshline.exe籃球 NBA Live03
eazip.exe籃球 NBA Live00這一格量不到,不是「不支援」

同一支工具在這個資料夾裡常常有好幾份,數字會不一樣。這張表逐一指定量了哪一份: gfxpak.exe 是 MVPedit 資料夾內那份(2002-10-12)、 fifaFS.exefshline.exekraw\ 底下那份、 fshtool.exeeazip.exe 是工具箱最上層那份。 換一份數字就會變:MVPedit 裡那支 fshtool.exeSHPI 是 5 不是 4。

最後那個 0 只能解讀成「量不到」

最上層那份 eazip.exefile 指令說它是 UPX 壓過的執行檔。 但把 kraw\ 底下那份沒有被 UPX 壓過eazip.exe 拿來掃, BIGF 一樣是 0(那份倒是掃到 2 次 BIG4)。

它會不會處理 BIGF?會,它的說明書整篇都在講這件事。 掃不到跟沒有是兩回事,這一格只能寫「量不到」。 至於為什麼掃不到,本站沒有查證,也不歸因給 UPX。

還有第三個四字母。把遊戲那 21 個 SHPI 圖檔全部掃過一遍, 21 個裡面有 21 個都含有同一句英文,說明這塊資料是給 「EAGL 執行期貼圖管理」用的附加資料。

EAGL 這個代號本站只在這一款遊戲的檔案裡量到, 它在 EA 其他遊戲裡是不是同一套,本站沒有查證,不寫成定論。 但可以確定的是:一支冰球社群寫的工具,認得棒球遊戲的 SHPI; 一支足球社群寫的工具,認得棒球遊戲的 BIGF工具會流動,是因為格式本來就相通。

年表

FSHTOOL FSHTOOL:說明書自署版權 1998-2002 · 這個資料夾裡最新的一份 fshtool.exe 檔案日期 2006-10-03,內部留有 Visual Studio 2005 的編譯路徑 NFS 賽車 · 1998-2006 gfxpak gfxpak:圖片與 EA-SHPI 互轉 · 版權行的聯絡位址掛在以 NHL 為名的網域 · 兩個版本,397,312 位元組那份 1999-04-01、339,968 位元組那份 2002-10-12 NHL 冰球 · 1999-2002 fifaFS fifaFS:說明書自署 v.4.9,版權 2001-2006 · 這個資料夾裡兩個版本,98,816 位元組那份壓縮包內時間戳 2006-10-15、292,864 位元組那份 2008-03-25 FIFA 足球 · 2001-2008 bigGUI bigGUI:執行檔內產品名字串以 Fifa 開頭 · 檔案日期 2003-02-09 · 只查到這一個日期 FIFA 足球 · 2003 nFSHTOOL nFSHTOOL:nfshtool.exe 自報 nFSHTOOL 1.22 for NBA Live 2003 formats,安裝檔內時間戳 2003-01-16 · nfsdll.dll 自報 NFSHTOOL 2.20 for NBA Live 2005,2004,2003,時間戳 2005-05-26 NBA Live 籃球 · 2003-2005 EAZIP 4.02 EAZIP 4.02:說明書與執行檔同為 2005-05-17,另一份 163,840 位元組的版本是 2005-05-18 · 註:另一個壓縮包裡有一支更舊的同名 eazip.exe(2002-11-29),版本無法確認,未併入本條 NBA Live 籃球 · 2005 FSHLINE fshline.exe:與 nfsdll.dll 同為 2005-05-26(取自 TiT 安裝檔內部時間戳)· 只查到這一個日期 NBA Live 籃球 · 2005 MVPedit MVPedit:隨附 readme.html 的開發紀錄共 43 個日期、19 個 build 編號,第一筆 2004-02-22、最後一筆 2006-01-11 MVP 棒球 · 2004-2006 MVP Studio 06 MVP Studio 2006:說明書第一行自署 September 14th, 2006 · 只查到這一個日期 MVP 棒球 · 2006 compmaniac 11 包 同一組檔名前綴的 11 個壓縮包,10 份說明書署名 compmaniac,1 份寫明工具作者是 tywiggins · 包內 2007 年的時間戳落在 2007-01-11 到 2007-04-06 MVP 棒球 · 2007 MVP2005 Editor MVP2005 Editor v0.30:說明書第一、二行自署 by tywiggins、Released January 14, 2008 · 只查到這一個日期 MVP 棒球 · 2008 TiT 2.0.5 TiT 2.0.5:安裝檔 2008-08-25、說明書 2008-08-25、設定檔 2008-07-07(壓縮包內時間戳)· 註:另一個壓縮包裡的資料夾項目寫 2012-04-26,那是重新打包的日期,不採計 MVP 棒球 · 2008 這份工具箱 2019-01-10:62 個散裝檔同一天的日期 · 2022-12-28:遊戲的 data 資料夾裡留下 NFSHTool 索引檔 · 資料夾本身另有 2026 年的日期,來由本站沒有查證,不採計 2019-2022 2000 2005 2010 2015 2020 2025
資料來源:每一條長條的兩端,是在這台電腦上、針對長條上那個名字能查到的最早與最晚證據, 取自壓縮包內部時間戳、散裝檔案日期、以及說明書自己寫的版權年份。 它不代表該工具真正的開發起訖,只代表證據落在哪一段。 短到只剩一格的長條,表示證據全落在同一年之內。 滑鼠移到長條上會顯示該條的逐項依據,包含刻意不採計的日期。

棒球社群自己長出來的工具

借來的是底層,上面那層是這個社群自己蓋的。這些工具處理的是別的遊戲沒有的東西: 打擊率、輪值、球員能力值、王朝模式。

工具做什麼作者代號日期
MVPedit名冊編輯器。說明書指定的八個 .dat 資料檔要一次匯入,改完再匯出rglass42004-2006
MVP2005 Editor要先開著遊戲才能用。說明書寫:遊戲沒開會跳訊息,找記憶體位址要花幾秒鐘,改完存檔就直接進遊戲tywiggins2008-01-14
MVP Studio 2006球衣與隊徽的加裝介面fuzZOne2006-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
另兩支只剩下載日
走場音樂工具兩支換場中音樂與打者上場音樂iansimcox2005-05-18 / 05-23
Portrait Maker把主圖與 alpha 圖加上球員編號,打包成大頭照圖檔未確認2006-10-30
轉播與球場切換器主體是批次檔,靠複製檔案換轉播主播與球場;包內另附一支 2000 年的小程式做按鍵選單Sharpshooter2006-04-28 / 2008-05-21

日期一律取自壓縮包內部時間戳或說明書自署行;只寫年份的,代表該包內時間戳落在那一段。 六支計算機裡有兩支是散裝安裝檔,只剩 2019-01-10 這個下載日期,沒有年代可寫。

借東西這件事,他們自己講得很清楚

很容易在這裡編出一套「因為授權這樣寫,所以資料夾才長這樣」的故事。 本站試著驗,三條都驗不過,所以不寫:

能講的只有一句沒有因果的觀察:這些工具的授權條款都寫得很清楚, 而後來的人確實照著改、照著搬。

社群內部借來借去也一樣坦白。名冊編輯器 2006 年 1 月那次更新, 改用另一位作者的封裝工具處理圖片,更新紀錄裡逐條標了「感謝某某」; 同一條更新紀錄裡還有一句寫著 「Stole config file from SwinginSoriano, hope he doesn't mind」 (出自 MVPedit 2006.1 更新紀錄)。用偷這個字,後面接一個笑臉。

這才是這個資料夾真正的內容

294 MB 裡面裝的不只是程式。是四個遊戲社群、二十幾年、幾十位素不相識的人, 各自解開一小塊格式,然後把成果丟出去讓別人接著用。

本站做的事情跟他們一樣:量到什麼寫什麼,寫完公開。 這一頁就是那條鏈子往下接的一節。

名字這一欄的處理原則

這些說明書與執行檔裡有作者的真實姓名、電子信箱、贊助帳號、個人網站,本次至少讀到三位作者的本名; 那個索引檔裡甚至留著某人 Windows 帳號的完整桌面路徑。 這些本站一律不抄出來,只保留當年公開發表時的圈內代號、工具名稱、日期與功能。

唯一的例外是 FSHTOOL 的著作權人 Denis Auroux。 那支工具是 GPL 自由軟體,保留著作權聲明是授權條款本身的要求, 而他當年就是以本名公開發表的。這跟「把一個網友的真實身分挖出來」是兩件事。 即使如此,他留在檔案裡的電子信箱與個人網址,本站一樣不放。

📌 重點整理

接下來