速查 › 官方繁體中文版的三個更新檔,到底改了什麼
官方繁體中文版的三個更新檔,到底改了什麼
把官方中文版原版跟裝完三個更新檔的版本逐檔比對:2,389 個檔裡只有 19 個變了,沒有新增也沒有刪掉任何檔,整套 1.4 GB 淨長 6,930 個位元組。它是一份 2005 年開季名單更新,不是相容性修正 —— 中文版配大球場跳出的那件事,它一個位元組都沒碰。
🛟 動手之前:先完整備份整個遊戲資料夾
把整個遊戲資料夾複製一份到別的地方, 包括裡面存放紀錄的資料夾。不要挑檔案,整包複製最省事也最保險。
「紀錄」是指這些(它們跟遊戲檔混在同一個資料夾裡):
Support\MVP Baseball 2005\—— 遊戲自己建的, 裡面是設定(MVPOptions_Options.sav)與手把設定 (controller.cfg)。剛安裝好時沒有這個資料夾,玩過才出現。- 王朝、老闆模式、名單與玩家檔案的存檔(
*_Franchise.sav、*_Owner Mode.sav、*_Rosters.sav、*_Profile.sav)—— 沒有固定的資料夾名,你或你裝的模組包叫它什麼它就叫什麼。找不到就用這一行找:
dir /s /b "〔你的遊戲資料夾〕\*.sav"
find "〔你的遊戲資料夾〕" -name "*.sav"
上面第一行 Windows、第二行 Mac。 本站每一支工具都會自己備份它要動的那一個檔, 但那只保得住那一個檔 —— 整包備份保的是「你玩到現在的一切」。 完整做法看備份與還原 SOP。
⚡ 速解:想知道你手上那份更新過沒有
- 看
mvp2005.exe的檔案大小。7,525,175 bytes = 沒更新過;7,533,368 bytes = 三個都裝了。 - 大小被動過或不確定,就用 2026 年怎麼跑得起來那課的腳本唯讀看一次(不加
--apply不會動到檔案)Windows:
python mvp_modernize.py "<遊戲資料夾>/mvp2005.exe"Mac / Linux:
python3 mvp_modernize.py "<遊戲資料夾>/mvp2005.exe" - 看它印出來的編譯時間戳。
2005-02-16= 原版;2005-04-21= 更新過。 - 不想碰指令的話:開遊戲看授權聲明畫面上那行
Team Rosters Current as of。01/12/05= 原版,04/05/05= 更新過。
Windows 打 python 說「不是內部或外部命令」的話,改打 py -3。第 4 步那兩行字是本站把 sushared.big 裡那張圖算出來讀到的,本站沒有實機開過遊戲。想知道它到底改了什麼,往下讀;只想複習,跳到 📌 重點整理。
一句話
官方繁體中文版的那三個更新檔做的事是:把名單從 2005 年 1 月 12 日更新到 4 月 5 日,順手改了 18 條連線對戰與換人的中文句子、換掉一張載入畫面、把授權畫面上的名單日期改掉。
它不是相容性修正。最常被問的那題「裝了官方更新檔,中文版配大球場就不會跳出了吧」,答案是不會,下面有量到的理由。
這一頁跟官方更新檔動了哪些檔那一頁不一樣
那一頁講的是英文版的四個更新檔(mvp2005patch1/2/3/5.exe),用的方法是掃安裝程式裡那份「我要覆蓋哪些路徑」的清單,沒有真的執行過它們。
這一頁講的是官方繁體中文版的三個更新檔(MVP2005PATCH1/2/3_TC.EXE),用的方法是拿一份沒裝過更新檔的安裝、跟一份三個都裝完的安裝,2,389 個檔逐一比對位元組。所以這一頁回答的是「跑完之後檔案真的變成什麼」。
本站不提供這三個更新檔。它們是 EA 的檔案,要用得自己去找。
先看規模:2,389 個檔裡只動了 19 個
兩份都是剛安裝好、誰都沒動過的遊戲(比對時排除 macOS 自己產生的 .DS_Store):
| 更新前的檔案數 | 2,389 個 / 1,441,798,039 bytes |
| 更新後共同的檔案數 | 2,389 個(同一批檔) |
| 新增的檔 | 0 個 |
| 消失的檔 | 0 個 |
| 內容有變的檔 | 19 個(佔 0.80%) |
| 大小一樣但內容不同的 | 0 個 |
| 19 個檔的淨增量 | +6,930 bytes |
一套 1.4 GB 的遊戲,更新完淨長 6,930 個位元組。這個數字本身就已經說明它的性質了。
更新後那個資料夾實際上是 2,393 個檔,多出來的四個是 MVP2005PATCH1/2/3_TC.EXE 與一顆備份用的 mvp2005 - 全新未更新.exe,是留在資料夾裡的東西,不是更新檔裝出來的。扣掉它們之後整套淨增量正好也是 6,930,兩邊對得起來。那顆「全新未更新」的 md5 跟更新前的主程式完全相同(725bbe80…),所以比對基準是對的。
那 19 個檔全部集中在三個地方:
| 位置 | 幾個 | 是什麼 |
|---|---|---|
data\database\ | 14 | 名單與成績表 |
data\(FEJPN.LOC IGJPN.LOC) | 2 | 中文介面文字 |
data\frontend\ | 2 | 兩張介面圖 |
根目錄(mvp2005.exe) | 1 | 主程式 |
反過來說,這些資料夾一個檔都沒被動到:
| 資料夾 | 裡面有幾個檔 | 被動到幾個 |
|---|---|---|
data\fonts\ | 1 | 0 |
data\stadium\ | 88 | 0 |
data\audio\ | 110 | 0 |
data\anims\ | 730 | 0 |
data\datafile\ | 466 | 0 |
data\misc\ | 33 | 0 |
Support\ | 284 | 0 |
字型跟球場各動了零個檔。這一條先記著,等一下講跳出那題會用到。
三個更新檔各自宣告要蓋掉什麼
上面那 19 個是「三個都裝完」的總和。想知道第 1、2、3 個各做什麼,還有另一條路:每個安裝程式裡面存著一份「我要覆蓋哪些路徑」的清單,用文字掃描就讀得到(這正是英文版那一頁用的方法)。三個 _TC 安裝程式掃出來是:
| 宣告的目標數 | 內容 | |
|---|---|---|
| PATCH1 | 23 | 主程式 + 18 個 database\*.dat + FEJPN.LOC IGJPN.LOC + fonts\fonts.big + frontend\sushared.big |
| PATCH2 | 2 | 主程式 + frontend\load53.big |
| PATCH3 | 20 | 主程式 + 同樣 18 個 database\*.dat + frontend\sushared.big |
三份清單的聯集是 24 個路徑,而實際變了的是 19 個檔。差的那 5 個是清單裡有、但裝完之後內容一模一樣的:manager.dat、org.dat、team.dat、tstat.dat,還有 fonts\fonts.big。
⭐ 字型那一項特別值得注意
PATCH1 宣告它要覆蓋 data\fonts\fonts.big,可是裝完之後那個檔逐位元組沒變。合理的解釋是它蓋上去的就是同一份 —— 官方中文版出貨時字型本來就已經是中文的,不需要換。
這也示範了「宣告的清單」跟「實際的改動」是兩件事。只讀清單會高估,只比對結果會不知道是哪一個更新檔幹的。兩種方法各有各的盲點。
兩個「19」不是同一組檔
英文版那一頁的結論是「四個更新檔加起來只碰 19 個檔案」。這一頁量到的也是 19 個。這是巧合,兩組不一樣。
| 英文版四個更新檔(宣告的聯集) | 繁中版三個更新檔(實際變動) | |
|---|---|---|
database\ 的 .dat | 16 個 | 14 個 |
| 差在哪 | 多了 manager.dat org.dat | 少了那兩個,多了 FEJPN.LOC IGJPN.LOC |
frontend\ 的圖 | 2(sushared load53) | 2(同兩個) |
| 主程式 | 1 | 1 |
| 合計 | 19 | 19 |
本站自己重掃了那四個英文安裝程式,各自宣告 16 / 17 / 17 / 19 個目標,聯集 19 —— 跟那一頁寫的一樣。但那 19 個裡有 manager.dat 與 org.dat、沒有語系檔;繁中這 19 個剛好相反。
⚠️ 這是本站踩過好幾次的坑:兩個數字一樣,不代表在數同一件事。引用的時候要連「這是哪一組」一起講。
一、名單:更新到 2005 年 4 月 5 日
這是更新檔的主體。data\database\ 底下那些 .dat 其實是純文字的逗號分隔表,第一行是帶編號的欄位名,每個值前面還會再標一次自己的欄號(像 2 55 就是「第 2 欄,值 55」)。這種自己標號的寫法很好用,因為欄位對齊對不對,檔案自己會講。
列數幾乎沒變,而且是刻意的
| 表 | 更新前 | 更新後 | 差 |
|---|---|---|---|
打者類 8 張(attrib bstats career fbstats lhattrib lhbstats rhattrib rhbstats) | 2,921 筆 | 2,921 筆 | 0 |
投手類 5 張(pitcher pstats careerp lhpstats rhpstats) | 1,430 筆 | 1,429 筆 | −1 |
roster.dat(誰在哪一隊) | 2,970 列 / 126 隊 / 2,920 名球員 | 2,970 列 / 126 隊 / 2,920 名球員 | 0 |
| 14 張表的欄位定義 | 完全沒變(表頭逐字相同) | ||
EA 自己更新名單的做法是在固定的格子裡換人,不是把表加長:attrib.dat 換掉 74 個人、換進 74 個人,總數一位都沒變。這對想自己改名單的人是很實用的一條情報。
完全沒被動到的表是 hist.dat、manager.dat、org.dat、team.dat、tstat.dat(注意還有一個 resign.csv,副檔名不是 .dat),以及 progress.big、rookie.big、schedule.big 三個封裝檔。
換掉的是誰
拿球員編號當鍵去比對(同一個人在更新前後編號不變),74 進 74 出:
- 出去的:Barry Larkin、Roberto Alomar、Andres Galarraga、Robb Nen、Kevin Appier、Marty Cordova、Rusty Greer、Danny Bautista、Todd Ritchie 這類 2004 年球季後退休或離隊的,加上一批本來就是湊數用的虛構球員。
- 進來的:Huston Street、Tadahito Iguchi(井口資仁)、Norihiro Nakamura(中村紀洋)、J.J. Hardy、Mark Teahen、Luke Scott、Emil Brown、Mark Ellis、Dae-Sung Koo(具臺晟)、Keiichi Yabu(藪恵壹)、Tony Blanco、John Franco、Pete Orr 這些 2005 年才上大聯盟或才轉隊的。
但幾乎沒有改能力值
這一點跟直覺相反,所以要把數字攤開。把 attrib.dat 裡兩邊都存在的 2,847 個人逐欄比對,有變的欄位一共 14 個:
| 欄位 | 幾個人 |
|---|---|
| 背號 | 245 |
| 薪水 | 137 |
| 主守位 | 50 |
| 合約年限 | 27 |
| 副守位 | 19 |
| 明星光環 | 4 |
| 選球 · 盜壘積極度 · 速度 · 守備 · 守備範圍 · 傳球準度 | 各 1 |
| 球棒顏色(Brian Jordan 3→2)· 守備手套顏色(Pedro Martinez 4→3) | 各 1 |
換句話說,更新的是行政資料(誰在哪一隊、穿幾號、領多少錢),不是重新評分。而 bstats、career、fbstats 這些成績表,共同球員的數字改動 0 筆 —— 2004 年球季已經打完了,成績當然不會變。
真正大搬風的是 roster.dat:2,970 個名單格裡有 854 格換了人,四欄守位各重排 502 至 549 格、四欄打序各重排 487 至 504 格。這就是「換隊」。
打者能力只有一個人被改:Rick Ankiel
上面那六個「各 1 人」的能力欄位,查出來是同一個人。而且他還是本站在另外兩張表裡唯一量到改動的人:
| 表 | 欄位 | 更新前 | 更新後 |
|---|---|---|---|
attrib | 主守位 | 10 | 6 |
attrib | 副守位 | 0 | 11 |
attrib | 速度 | 42 | 62 |
attrib | 盜壘積極度 | 0 | 4 |
attrib | 選球 | 4 | 7 |
attrib | 守備 | 4 | 7 |
attrib | 守備範圍 | 5 | 6 |
attrib | 傳球準度 | 12 | 7 |
lhattrib(對左投) | 擊球 / 力量 | 25 / 21 | 45 / 41 |
rhattrib(對右投) | 擊球 / 力量 | 24 / 25 | 54 / 55 |
這張表列的是那六個能力欄位加上守位。他在 attrib 裡還有薪水 2→3 與明星光環 2→1,那兩欄不是只有他一個人被改,已經算在上一張表的 137 與 4 裡面。
守位代號不用猜,EA 自己的編輯器設定檔(MVPtools\config.txt)裡就寫著:主守位 10 = RP(後援投手)、6 = LF(左外野手);副守位 0 = P(投手)、11 = OF(外野手)。
再對一下投手表:Rick Ankiel 在更新前的 pitcher.dat 裡有 1 筆,更新後0 筆。投手少掉的那一位,就是他。
這就是 2005 年 Rick Ankiel 從投手改練外野手那件事
四條分別來自不同表的證據指向同一個結論:他從投手表被刪掉、主守位從後援投手改成左外野手、速度 +20、對左右投的擊球與力量各加了 20 到 30。EA 把這件真實世界的轉職寫進更新檔裡了。
投手那邊另外有 8 個人被改,而且有一位台灣人
pitcher.dat 的 1,395 名共同投手裡,有 8 個人被改,改的全部是同一欄 —— 續航力:
| 投手 | 更新前 | 更新後 |
|---|---|---|
| Miguel Batista | 90 | 55 |
| Shawn Chacon | 45 | 75 |
| Ryan Dempster | 44 | 59 |
| Brandon Lyon | 66 | 56 |
| Rafael Soriano | 40 | 50 |
| Steve Karsay | 44 | 54 |
| Mike Gosling | 53 | 58 |
| Chin-Hui Tsao(曹錦輝) | 64 | 54 |
Miguel Batista 從 90 掉到 55 是整包更新裡幅度最大的一筆。本站沒有查證這 8 個人在真實世界發生了什麼,只能說 EA 動的全是同一欄。
二、語系:改了 18 條句子,一條字串都沒增減
先講一件值得知道的事:EA 官方繁體中文版的文字放在日文的檔名裡。中文版的 data\ 底下只有 FEJPN.LOC(219,136)跟 IGJPN.LOC(42,696),沒有 ENG 那一對;英文版則只有 FEENG.LOC(415,528)跟 IGENG.LOC(59,432)。三顆執行檔裡四個檔名都各出現 1 次,所以是 EA 本來就留了這個位置。詳細見EA 自己的繁體中文版。
用本站解開的 .LOC 格式把兩邊都讀出來:
| 檔 | 更新前條數 | 更新後條數 | 文字有變的 |
|---|---|---|---|
IGJPN.LOC(比賽中) | 1,663 | 1,663 | 11 條 |
FEJPN.LOC(選單) | 6,436 | 6,436 | 7 條 |
字串編號一個都沒增減,前後兩份的編號表逐筆相同。那 18 條裡 12 條是連線對戰(對手斷線、延誤比賽、中途離開判敗)、4 條是換人與牛棚、2 條是「被逐出比賽」。改法一致:18 條全部變長,沒有一條變短或一樣長。
| 更新前 | 更新後 | |
|---|---|---|
| 換人完成 | 替換完成。 | 球員的替換動作以經完成了。 |
| 投手熱身 | 投手被召往練投區。 | 投手已經被召往練投區熱身了。 |
| 投手召回 | 投手從練投區召回。 | 熱身中的投手已經從練投區召回了。 |
| 被驅逐出場 | %1被逐出比賽。 | %1 已經被逐出這一場的遊戲比賽了。 |
| 對手斷線 | 你的對手已從網路上消失,並被遊戲除名。 | 你的對手已從網路上消失了,並也被遊戲比賽除名。 |
EA 這次又多打錯兩次同一個字
新版的「球員的替換動作以經完成了」應該是「已經」。這一條同時出現在 IGJPN.LOC 第 735 條與 FEJPN.LOC 第 3302 條,兩邊都錯。
但這不是第一次。更新前的 FEJPN.LOC 裡就已經有一條「%s的禁賽以經結束。」(編號 17992,第 4591 條)。所以正確的講法是:這個錯字原本 1 條,更新之後變成 3 條。
三、介面:換了兩張圖
data\frontend\ 底下 114 個檔(98 個 .big 加 movies\ 裡 16 個)只有兩個變了,而且各自只裝一張 1024 × 512 的圖:
載入畫面 load53.big:整張換掉
裡面是一個 load53.fsh,解開後 262,304 bytes(每像素 0.5 byte,DXT1 壓縮),前後83.0% 的位元組不同 —— 也就是重畫。把它算成圖讀出來,內容從一則 MVP Online 連線功能的說明(標題「美國職棒大聯盟 Online」),換成一則打擊迷你遊戲的提示(標題「迷你遊戲」,內文「打不到快速球嗎?…把三振都變成打擊!」)。照片跟文字都換了。
授權畫面 sushared.big:只改一行字
裡面是一個 license.fsh,解開後 2,097,296 bytes(每像素 4 byte,32 位元無壓縮),只有 1.5% 的位元組不同,而且集中在兩塊:y 381–400(x 89–578)與 y 417–454(x 90–450)。那個形狀一看就是兩塊文字。把它算成圖讀出來:
| 更新前 | Team Rosters Current as of 01/12/05 |
| 更新後 | Team Rosters Current as of 04/05/05 |
更新檔自己把名單日期寫在授權畫面上。從 2005 年 1 月 12 日推到 4 月 5 日 —— 開季前後。這跟前面量到的 Rick Ankiel、Huston Street、井口資仁完全對得起來,而且是兩條互相獨立的證據:一條在名單資料裡,一條畫在圖上。
下面那一塊(y 417–454)是「©2005 Electronic Arts Inc. / All rights reserved.」。它的位元組確實變了,但本站把兩張都算出來看,文字讀起來一模一樣,看不出改了什麼 —— 上面那塊的最大色差是 249,下面那塊只有 118,像是整區重新算過一次造成的細微差異。未解 到底變了什麼,本站看不出來。
四、最重要的一題:有沒有解決「中文版配大球場就跳出」
沒有。
拿本站 2026 年的電腦怎麼跑得起 2005 年的遊戲 那課的 mvp_modernize.py,對更新前後兩顆執行檔各跑一次唯讀檢查(不加 --apply 就完全不會動到檔案):
| 項目 | 更新前 | 更新後 |
|---|---|---|
| 大位址旗標 | 2 GB(沒開) | 2 GB(沒開) |
| 解析度表 | 8 筆,最大 1280×1024 | 8 筆,逐位元組相同 |
| 記憶體池 | 找不到 | 找不到 |
| 編譯時間戳 | 2005-02-16 | 2005-04-21 |
| 解析度表的位址 | 0x52F860 | 0x530830(往後挪 4,048 bytes) |
大位址旗標是直接讀 PE 檔頭那個位元量的:兩邊都是 Characteristics = 0x010F,0x0020 那一位都是 0。解析度表那 128 個位元組前後完全相同,只是整張表被往後推了 4,048 個位元組(因為前面的程式碼長了)。
⚠️ 順便訂正一個很容易掉進去的誤會
寫這一頁的過程中一度以為「英文版的解析度表只有 6 筆、最大 1024×768,中文版才有 8 筆」,還差點拿它當中英版的差異寫上去。那是錯的。
本站用三種方式各驗一次:跑腳本、直接讀原始位元組、拿後四筆的位元組樣態去全檔搜尋。結論是英文版原版(表在 0x4C3FD8)、中文版原版(0x52F860)、中文版更新後(0x530830)三顆的那 128 個位元組逐位元組相同,全部 8 筆、全部到 1280×1024,樣態在三顆檔案裡也都各只出現 1 次。
⭐ 這條錯誤的形狀值得記下來:它憑空造出一個不存在的差別。而且腳本自己的開頭說明就寫著英文版的表在 0x4C3FD8 —— 資料一直都在,是量的人沒去對。
「記憶體池找不到」這一行,不能拿來當證據
這裡要誠實。兩邊都印「找不到」,並不代表兩邊的記憶體池一樣,只代表工具在這兩顆執行檔裡都看不到它。
做個對照組就知道了:拿英文版原版跟另一份社群流傳的安裝跑同一支腳本,也都是「找不到」。所以這一行講的是工具的極限,不是更新檔的行為。詳細見中文版為什麼會跳出那一頁(記憶體池那一段在那一頁勾完同意之後才會出現)。
為什麼看不到:程式碼在硬碟上是密文
量熵就破案了(單一位元組的熵最大是 8.0000):
| 執行檔 | .text 的熵 | .rdata 的熵 |
|---|---|---|
| 中文版 更新前 | 7.9990 | 5.6078 |
| 中文版 更新後 | 7.9989 | 5.5435 |
| 英文版 原版 | 7.9990 | 5.5704 |
對照:同資料夾的 eauninstall.exe | 6.6107 | 5.0953 |
同一個資料夾裡那支普通的 EA 反安裝程式是 6.6107,那才是正常編譯出來的 x86 程式碼該有的樣子。遊戲執行檔的 .text 幾乎頂到滿值,而隔壁的 .rdata 卻很正常 —— 只有程式碼那一段被加密。
這同時解釋了另一個乍看嚇人的數字:更新前後兩顆執行檔的 .text 有 94.4% 的位元組不同。這不代表 EA 改寫了 94.4% 的程式,而是重新保護時換了金鑰,密文自然整片不一樣。同樣的道理,拿那支腳本找記憶體池用的機器碼樣態(push 一個常數、緊接著呼叫再返回)去掃 32 / 64 / 128 / 192 / 256 / 384 / 512 MB 這幾種大小,更新前後都是 0 次,英文版原版也是 0 次。密文裡當然找不到。
⚠️ 這個「0 次」要照上面那個完整樣態數才對得起來。只把那幾個數字當成四個位元組在整顆檔裡數是不行的 —— 那樣數更新前是 344 / 500 / 252 / 107 / 361 / 211 / 385 次、更新後是 344 / 544 / 250 / 103 / 392 / 217 / 422 次,一個都不是 0。四個位元組的樣式在 7 MB 的檔案裡到處都會撞到,不能拿來當「程式碼裡有沒有這個常數」的依據。
✅ 這一格已經對帳完畢。本站另一課對同一顆英文版執行檔原本寫的是 7.998,2026-09-05 重新逐區段量過之後改成 7.9990,跟本頁量到的一致;兩邊的結論本來就一樣(接近滿值 = 加密)。
所以誠實的講法是這樣
- 量到的:大位址旗標前後都沒開;解析度表前後那 128 個位元組逐位元組相同;字型 0 個檔被改、球場 0 個檔被改;更新後的執行檔程式碼段仍然是加密的。
- 推論:跳出那件事的成因(中文語系 + 大球場)所牽涉的東西,這個更新檔一樣都沒碰,所以它極不可能修好那個問題。
- 本站沒驗:沒有真的拿更新後的版本配大球場開來玩。
更糟的一點:更新完之後,還是修不了
本站 中文版配大球場就跳出 那課的做法,是把執行檔裡那個 64 MB 的記憶體池常數改大。那一課已經寫得很清楚:「看到『找不到』就是光碟原版,這一項做不到。」
裝完三個官方更新檔,執行檔還是「找不到」。也就是說,官方更新檔沒有把一顆不能修的執行檔變成能修的。想用那一課的方法,前提仍然是手上要有一顆程式碼沒被加密的執行檔。
五、防拷保護層:更新前後都在
直接讀 PE 的區段表跟程式進入點:
| 更新前 | 更新後 | 英文版原版 | |
|---|---|---|---|
| 區段數 | 7 | 7 | 7 |
| 最後兩個區段 | stxt774 stxt371 | stxt774 stxt371 | stxt774 stxt371 |
| 進入點落在 | stxt371 | stxt371 | stxt371 |
| 進入點 RVA | 0x005F409E | 0x005F609E | 0x0056609E |
一般程式的進入點會落在 .text。這三顆都落在最後那個叫 stxt371 的區段,代表程式是先從保護層的程式碼開始跑,由它把 .text 解密之後再交棒。遊戲資料夾裡的 DrvMgt.dll(23,552 bytes,更新前後逐位元組相同)內含 SECDRV、SECDRV.SYS、SecDrv 三個字串,那是這一代光碟保護的驅動程式名稱。
更新前後的 stxt774 與 stxt371 大小完全一樣(12,288 與 16,384 bytes),內容各只差 126 與 110 個位元組 —— 同一套保護重新包一次的樣子。
三個更新檔的安裝程式本身則是普通的 PE 檔:7 個區段(.text .bss .rdata .data .idata .rsrc .reloc)、進入點在 .text、沒有那兩個保護區段,而且三個的 PE 檔頭一模一樣(時間戳都是 2002-12-03,那是安裝程式外殼的日期,不是 EA 發布這三個更新檔的日期)。
本站不提供、不教學、也不包含任何規避技術保護措施的方法。上面只是把 PE 檔頭裡公開可讀的欄位念出來,用途是解釋「為什麼那支腳本讀不到記憶體池」。這條紅線見法律與版權說明第 3 節。
六、那它對誰還是有用的
對想自己更新名單的人,這份更新檔是很好的教材,因為它是 EA 自己示範的標準做法:
- 表的大小是固定的。2,921 個打者格、126 支球隊、2,970 個名單格,更新前後一格都沒多。要加人就得先挪掉一個人。
- 欄位定義不要動。14 張有變的表,表頭逐字沒變。
- 球員編號是穩定的鍵。同一個人更新前後編號不變,所以比對名單要用編號,不要用名字。
- 換隊改的是
roster.dat,不是attrib.dat。能力值跟隊籍是分開的兩張表。 - 轉守位要改四個地方。看 Rick Ankiel:
attrib的主守位、副守位、相關能力,還要從pitcher.dat移除,對左右投的兩張表也要跟著調。少改一個就會前後不一致。 - 成績表不用動。上個球季的數字是歷史,EA 自己也一筆都沒改。
各張表的欄位意義見名冊資料庫。
七、幾個日期的順序
| 2005-01-12 | 原版的名單基準日(寫在授權畫面上) |
| 2005-01-22 | 英文版執行檔的編譯時間戳 |
| 2005-02-16 | 中文版原版執行檔的編譯時間戳 |
| 2005-04-05 | 更新後的名單基準日(寫在授權畫面上) |
| 2005-04-21 | 更新後執行檔的編譯時間戳 |
執行檔的編譯時間戳在名單基準日之後 16 天,順序合理。
(本站手上這三個安裝程式的檔案日期都是 2009-03-24,那是這份備份被存下來的時間;PE 檔頭裡的 2002-12-03 是安裝程式外殼的日期。兩個都不是 EA 發布這三個更新檔的日期,不要拿它們當發布日。)
📌 重點整理
- 一句話 那三個官方繁體中文更新檔是「2005 年開季名單更新」,不是相容性修正。整套 1.4 GB、2,389 個檔裡只有 19 個變了,沒有新增檔也沒有刪檔,淨長 6,930 個位元組。
- 三個各自宣告要蓋什麼 PATCH1 宣告 23 個目標(含兩個語系檔與字型)、PATCH2 只有 2 個(主程式與一張載入畫面)、PATCH3 宣告 20 個。聯集 24 個路徑,實際只有 19 個檔真的變了 —— 差的 5 個(
managerorgteamtstat與fonts.big)是蓋上去也一樣的。宣告的清單跟實際的改動是兩件事。 - 更新的主體是名單 74 個球員換進換出,854 個名單格換人,但表的大小完全固定(2,921 個打者格、投手 1,430→1,429、126 支球隊、2,970 個名單格),欄位定義一個字都沒改。
bstatscareerfbstats這些成績表共同球員改動 0 筆。 - 幾乎沒有重新評分 2,847 名共同打者裡改的是背號(245)、薪水(137)、守位(50)這些行政欄位,一共 14 欄。打者能力只有一個人被改,就是 2005 年從投手轉外野手的 Rick Ankiel(主守位 10 後援投手 → 6 左外野手、速度 42→62、對左右投的擊球力量各 +20 到 +30,並從投手表移除)。投手那邊另有 8 人的續航力被動,最大是 Miguel Batista 90→55,名單裡還有曹錦輝 64→54。
- 名單基準日更新檔自己寫在授權畫面上
Team Rosters Current as of從01/12/05改成04/05/05。這跟名單內容是兩條互相獨立的證據。 - 中文介面只改了 18 條句子,字串總數一條都沒增減,12 條是連線對戰、4 條換人與牛棚、2 條「被逐出比賽」,而且 18 條全部變長。順帶一提「以經」這個錯字更新前就已經有 1 條,這次又多打錯兩次,總共 3 條。
- 它沒有解決中文版配大球場跳出 大位址旗標前後都沒開(
Characteristics都是0x010F),解析度表前後那 128 個位元組逐位元組相同,字型 0 個檔、球場 0 個檔被改。而且英文版原版的解析度表也是同一張 8 筆到 1280×1024 —— 本站一度以為它只有 6 筆,那是錯的,已訂正。更新後的執行檔程式碼段還是加密的(.text熵 7.9989,而同資料夾普通程式是 6.6107),保護區段stxt774stxt371還在、進入點仍落在stxt371,所以fix-chinese那課的記憶體池改法一樣用不上去。 - 本站沒驗的 沒有真的拿更新後的版本配大球場開來玩,「解決不了跳出」是從量到的旗標、解析度表、字型與球場零改動推的;三個安裝程式只掃了它們宣告的路徑清單,沒有拆開差分資料,所以「第 N 個實際改了哪些位元組」講不出來;
.text有 94.4% 的位元組不同只代表換了加密金鑰,EA 到底改了多少程式碼本站量不出來;授權畫面下半那塊(y 417–454)位元組變了但文字讀起來一模一樣,變了什麼看不出來。