更新紀錄
這個站寫錯過什麼
這個站的規矩是:數字要量過才寫,沒量到的就標出來。實際做下來,猜的地方還是有, 而且不只被自己抓到過一次:有的是數字算錯,有的是把推測寫成了結論, 其中一次是整段結論寫反。這頁把散在各頁的訂正與改動集中起來,共 142 條, 一條一條列出原本寫什麼、後來改成什麼、為什麼會錯。
為什麼要有這一頁
訂正如果只留在原頁上,讀者得一頁一頁翻才看得到。集中列出來是為了讓一件事變得可以查證: 這個站寫錯的地方會留著改動紀錄,不會悄悄換掉。
本頁只收已經上線、後來被推翻、改寫或補救的內容。 上線前就修掉的不算,那不叫訂正,那叫還沒寫完。 (例如球員代號那頁的「兩位二刀流」,是那一頁第一次上線時就已經修好的,所以不在下表裡。)
一、訂正
下表 142 條,每一條都對應站上一次實際的改動,按上線批次排。 (這個數字是數表格列數數出來的,不是手寫的。2026-09-04 核實時發現原本三處都寫著 132,而表上已經有 134 列;加了 09-04 那一列之後,三處統一成量到的 135。2026-09-06 這一輪補了 7 列,三處再同步成 142。) 其中五頁在內文裡直接留著訂正段落(開頭寫著「本站改過這一段」或「本頁上線時寫」), 可以在該頁看到原文;其餘幾條的原文隨著頁面改版拿掉了,只留在版本紀錄裡。
| 批次 | 哪一頁 | 改了什麼 | 為什麼會錯 |
|---|---|---|---|
| ⭐ 開張前逐頁覆驗 | 怎麼看出哪些檔還沒被動過 | 一頁五件。 ① 「999 個檔、744 個出廠期、74.5%」是舊快照,
這台機器的 |
量過一次就寫死,資料夾卻一直在被動。 ①②⑤ 都是同一種病:沒寫「量的是哪一份、哪一天」。 ③ 是本站一再犯的全稱句,④ 是抄錯欄。 |
| ⭐ 開張前逐頁覆驗 | 王朝存檔 | 頁尾那句出處聲明是第二次出錯。 上一輪已經把「頁尾當時還寫著『差異分佈皆為量測 30 個存檔所得』」記進這張表, 但那句話當時沒有真的改掉,這次才動到頁尾。 同一頁另外四件:填充那張卡的三個數字(926,920 與 463,460 兩次)重跑不出來,
真值是 927,322 與 463,661 兩次,
而且兩份老闆模式存檔的填充長度本來就不一樣,不是一條固定的分界線;
二十段那張表的第 13 段不是「完全相同」,差 502 個位元組;
第一張表的欄名把「435 組兩兩比對」標成「聯集」,真正的 30 檔聯集是 26,123;
「名單與玩家檔案一處都沒有 |
把「這裡寫錯了」記進紀錄,不等於把它改掉。 這是本站第二次在同一句話上踩同一個坑 —— 訂正要附「怎麼驗」,下一個人跑一次就知道改了沒有。 |
| ⭐ 開張前逐頁覆驗 | 球場檔 | 四件已經發布過的事。
① 16 個光源設定檔共 381 種參數名、
16 個檔全部都有的是 357 種(原本寫 380/356,各少一種)。
② 頁上那段節錄是名稱表(編號+參數名),不是數值;
數值在同一個檔的第二筆記錄裡,用同一組編號對回來。
③ 0x8A500 是檔案裡的位置,不是項目內的位置。
④ lighting.csv 的日期改用世界標準時間 12 月 3 日,
跟本站另一頁同一套讀法對齊;距離 12 月 24 日是二十一天。 |
看到了不等於看懂了。 ②③ 都是把眼前那段東西的身分認錯, ④ 是同一個站對「檔案日期」用了兩套時區。 而 ① 那兩個數字,檔頭自己就寫著答案。 |
| ⭐ 開張前逐頁覆驗 | BIGF 封裝格式 | 五件。misc.big 檔頭那四個位元組當 big-endian 讀,
本站原本寫 2,114,978,816,重算是 2,114,125,824;
球場孤兒比例的中位數原本寫 39.96%,正確是 40.06%
(跟瘦身那一課對齊);
ingame.big 那 47 個項目沒標是哪一份,
補上「這是本站測試機那一份,剛安裝好的原版是 44 項」;
兩份 dodgnite.big 誰在服役講反了;
「295 個封裝檔裡 288 個 little-endian、7 個 big-endian」補上
2026-09-05 用同一套量法重跑的 384/374/10(結論沒變,變的是分母)。 |
換算、取中位數、母體、方向,四種錯法各中一個。 共同點是當初只寫了結果,沒寫是量哪一份、怎麼量 —— 所以資料夾一被動過,句子就從對的變成錯的,而沒有人會知道。 |
| ⭐ 開張前逐頁覆驗 | 文字表 .LOC | 兩件。一、原本寫名冊模組「沒動 IGENG.LOC」是錯的 ——
測試機那份跟剛安裝好的原版比有 203 條文字不同
(隊名與球場名一起更新過),模組漏掉的只有標題那一條。
二、重疊編號那張表原本只列測試機的 1,295/15,沒標是量哪一份;
剛安裝好的原版 1,310 個共用編號兩張表寫的字完全一樣、0 個不同,
那 15 個不一樣全是模組造成的。 |
只量一份就寫成通則,而那一份是被疊過的。 表格多加一欄「量的是哪一份」,這兩個錯當場就看得出來。 |
| ⭐ 開張前逐頁覆驗 | 大頭照 | 「原版整套安裝有 6,392 個帶那句話的圖檔」這個總數是對的,
錯的是它的分佈:本站原本寫多出來的 22 個是
「data\misc\textures\ 底下 23 個沒裝進封裝檔、自己就是圖檔的檔案」。
實際是 data\misc\textures\ 18 個、
data\igshapes\ 3 個,
再加上一個名字叫 .big、裡面其實是一張 SHPI 圖片的
data\frontend\feonlyln.big,合計 22 個。總數不變。 |
「22」跟「23 個全在同一個資料夾」是兩個宣稱,只驗了前面那個。 總數對得上的時候特別容易放過後半句 —— 而讀者照著去翻那個資料夾,只會數到 18 個。 |
| ⭐ 開張前逐頁覆驗 | 平安夜那天的建置 | 訂正了一次訂正。
本站原本在這一頁寫「894 / 890 / 893,有 4 個像素格式的例外、1 個內部標記的例外」,
還加了一句「本頁上線時寫『沒有一個例外』,那是錯的」。
這兩句都收回 —— 894 / 890 / 893 量的是本站測試機那份裝過模組的
models.big。剛安裝好的原版是 504 個球員臉皮、504 張同規格、零例外
(三份剛安裝好的原版都量過,結果一樣)。
那 4 個與 1 個「例外」反而才是 EA 出貨時用的規格,是後來被換掉的。 |
訂正也會踩同一個坑。 第一次錯在沒數過就寫全稱句,第二次錯在拿被疊過的那一份去推翻自己 —— 兩次的共同點都是沒有先問「我量的是哪一層」。 |
| ⭐ 班主任來正名:名冊以外的不是他做的 | 名冊以外,都是前輩做的(新)· 關於本站 · 首頁 · 十四年 | 站上寫了很久的一句話: 「toni 從 2008 年開始發布 MVP Baseball 2005 的台灣模組:球員名冊、球衣、球場、懶人包」。 球衣跟球場不是他做的。他本人來訂正: 「我必須正名,當年我做的都是台灣之光名冊, 因為絕大部分的球員名冊外的東西,都是前輩做的,我只是整合。」 訂正的依據是把他 2008 到 2023 年的部落格 全部 37 篇存檔原文抓下來逐篇讀。 最直接的證據是他自己的標題:七篇的標題就叫「好東西分享」, 每一篇都把作者名寫進標題。陰性對照更乾淨 —— 十五年、37 篇,全文找「我做」「自己做」「自製」,零命中。 新增一頁把十五位前輩與工具作者列出來,每一條附他當年的原話。 其中三個名字本站原本完全沒有提過: 大叔(製作與測試中文模組、中文版跑得動的球場)、 m9102335(王朝成長幅度修正檔)、 xRAP98x(2023 版模組 —— 本站測試機整台就建在上面)。 連帶推翻了另一頁的一個推論。 〈十四年後打開那個模組資料夾〉用「時間戳散在數週=自己做的工作日」 把 481 個 Photoshop 工作檔判成他的作品, 他說那是別人給的素材。 錯在那個指標在答案是「別人給的」時候也會亮 —— 素材不是一次收齊的,陸續收幾個月,時間一樣會散開。 諷刺的是那一頁自己就寫著「混用會把別人的工作寫成自己的」。 |
把「整合並發布」寫成「製作」。 那是二十年來社群裡最常見的一種失禮, 而他自己 2009 年轉載別人的檔時就已經在寫 「著作權為 m9102335 所擁有」 —— 這個站接手時反而做丟了。 |
| 稱呼統一成「班主任」 | 12 個檔共 30 處 | 站名是補習班,主事者叫班主任。 2026-08-30 已經改過一輪,但守門規則裡只寫了當時被指出的那一個舊稱呼, 另一個同義的說法整批漏掉,30 處全部倖存。 本站犯過同一種病:某一條守門規則只比對幾個英文詞, 而站上把同一件事寫成中文,於是那條規則整條看不見、一路綠燈。 |
守的是一個概念,列的卻只有剛好被指出的那一個說法。 規則已補齊,下餌驗過會紅。 順帶一提,本次寫這段說明時把那幾個詞逐字打進去,當場被守門攔下 —— 規則是活的。 |
| ⭐ 論證會反噬自己 | 介面座標圖 | 那一頁整頁的結論靠一句話撐著: 「相對解讀會讓一大半的元素跑到畫面外, 這在一款正式出貨的遊戲裡不可能發生」。 那句話會把自己也否掉 —— 照當時那張表,絕對解讀也只有 49.1% 的元素整框在畫面內(⚠️ 2026-08-29 再訂正:49.1% 本身算錯了,整欄左移一格,正確值是 96.4%,所以本站當初撤回的那個理由其實是對的)。 如果「跑到畫面外不可能發生」成立,絕對解讀一起陣亡。 換成一個看得見的元素當證據:
|
百分比論證有一個共同弱點:它同時適用於你想否定的那一方。 「一大半在畫面外很奇怪」——那 49.1% 也很奇怪。(⚠️ 後來查出來 49.1% 才是錯的那個數字。) 一個能直接觀察的單一反例,比四個百分比都硬。 |
| 🔴 首頁承諾三條有兩條做不到 | 首頁 · 全部教學 | 首頁的三個承諾裡,第二條寫「每篇教學動手前都先自動備份」、 第三條寫「每篇教學最後都附回報範本」。 實際上 15 課裡有 9 課沒有回報範本, 而首頁叫新手第一個點的暖身課根本沒有腳本、也沒有自動備份。 一個人第一次讀承諾、第一次點進去,就對不上。 這比任何一個技術錯誤都傷 —— 它讓讀者從第一分鐘就開始懷疑其他每一句話。 處理方式是兩邊都動: ① 補上 8 課的回報範本(改速度、換臉、當機診斷、備份、 看穿檔案、工具總覽、食譜、檢查原廠),每一份都照那一課實際會印出什麼設計欄位; ② 把承諾改成做得到的版本 —— 「凡是附腳本的教學…少數不用腳本的課,第一步會手把手帶你自己複製一份」、 「每篇動手的教學最後都附」。 剩下唯一沒有範本的球衣頁本來就標著「只看不動」。 (2026-09-06 補:「15 課裡有 9 課沒有」是當年只有 15 課時期的數字,
放到今天已經不是現況。今天重量:教學區 39 課、其中 20 課附回報範本;
章節裡有「👉 你要做的事」的動手教學 26 篇、其中 12 篇附。
量法寫在這裡,數字自己會變 ——
|
承諾寫得越漂亮,越要拿實際的頁面一頁一頁對過。 「每篇都…」這種全稱句寫在門面上特別危險: 它不會有人來糾正你,但每一個照著做卻對不上的人, 都會自己默默降低對整個站的信任。 |
| ⭐ 差點誤判原版不乾淨 | 怎麼看出哪些檔還沒被動過 | 本站在「剛安裝好、從未改動的原版」裡看到一個
看時間戳才發現:那是 EA 自己留下的。
它跟本尊 |
「有 .bak」不等於「被動過」。
判斷一個檔是不是原廠的,看副檔名不夠,要看時間戳。
這一條已經寫進那一課,因為讀者拿自己的遊戲對照時
一定會遇到同一個誤判。 |
| ⭐ 報告很漂亮,自己跑一次不成立 | 語音檔頭 | 本站跑了一輪內部覆驗。其中一份回報說語音檔頭
「多出來的部分」整段解開了,給了一條通用公式
( 本站照著跑:那條公式在 6,995 個檔裡只成立 56 個。 但它不是全錯 —— 指出的方向(第 4、第 5 個位元組)是對的,
它舉例的 |
「零例外」這種措辭本身要當紅燈。
它在對的時候是最強的證據,錯的時候是最強的誤導 ——
而讀的人分不出來,除非自己跑一次。 這一條跟同一輪本站自己犯的錯(把一個位移當成通則) 是同一種病:在一個樣本上成立就當成規律。 |
| 🔴 讀者第一步就會卡死 | 全部有下載按鈕的教學 | 站上五課寫「用上面的下載按鈕存檔,放到桌面」,
然後下一步就是 這是新手在第一步就出局的等級: 他還沒碰到任何遊戲檔案,就已經卡在一個站上沒提的地方。 已在每一個有下載按鈕的頁面補上「按了下載之後檔案跑到哪裡去了」, 分三小步(開檔案總管 → 點「下載」→ 拖到桌面), 並在出錯處理表補上對應那一列。 (2026-09-05 訂正:「每一個」這三個字現在不成立。
現場清點站上 29 個有下載按鈕的教學頁,其中 7 頁一樣叫讀者
「放到桌面」再 |
「放到桌面」這四個字,寫的人以為是一個動作,讀的人以為已經發生了。 凡是牽涉到「檔案現在在哪裡」的步驟,都要把中間那一段寫出來 —— 作者最容易跳過的,正好是他每天做到變成反射的那一步。 |
| ⭐ 四個用途標籤寫錯 | 檔案地圖 · 語系檔 · 兩套球員編號 | 四句話寫錯,而且都在「速查」這種會被當事實引用的頁面:
① bp*.big 寫成「球員卡模式/收集卡模式的資源」——
實際是老闆模式的球場資源(bp = ballpark)。
光看檔名就該發現:bpattrac 遊樂設施、bpticket 門票、
bpvendor 小販、bppromos 促銷、bpupgrad 升級。
字串表 5600–5611 也是一整排球場設定(場地形狀、圍牆顏色、割草紋路、包廂)。
② coop*.big 寫成「雙人合作模式」——
實際是 Cooperstown 經典解鎖內容:
三個版面檔裡有叫 COOPERSTOWN 的元素,
而 EA 官方繁中版自己就翻成「鎖住的 Cooperstown 球場」。
③ coopunis.big 寫成「王朝模式的球衣」,同上。
④ 語系檔那頁寫「編號 704 那組是 EA 原版就不一樣的,跟模組無關」——
反了:原版兩個語系檔的第 704 條都是 Home Run Showdown,
Home Run Derby 出現 0 次;
差異是本站測試機那份被 2023 年名冊模組換掉造成的。 |
①②③ 是同一種錯:看到 coop 想到 co-op、
看到 bp 想不到 ballpark。
英文縮寫的第一直覺常常是錯的,而檔名清單本身就是最好的反證 ——
把同前綴的檔名全部列出來一起看,意思往往就浮出來了。④ 則是本站已經寫過的教訓漏改了一處: 「把這台機器上的現象寫成 EA 的做法」。 |
| 🔴 本輪最大的一個錯 | 代號對照 · 姿勢故事頁 | 本站發表過一張「打擊姿勢 66 個編號的名稱表」與一段結論: 「2,921 個打者裡只有 10 人用以自己命名的姿勢, 1,430 個投手裡 0 人」,還列了 「Clemens 用 Hoffman 的、Schilling 用 Nelson 的」當佐證。 整段是假的。 成因是把編號對到名字的方式猜錯了: 看到字串表有一段連號、都是球員的姓、數量也剛好, 就假設「第 N 號 = 第 10000+N 條字串」。 用錯的字典去查,每個人查出來的當然都不是自己。 正確做法是找錨點:挑「整份名冊只有一兩個人在用」的編號,
看那一兩個人是誰,再回字串表找同姓的名字 ——
這種對應成立就不可能是巧合。重做之後結果完全相反:
打擊 43 個專屬編號裡 39 個是本人在用,
投球 46 個裡 41 個。
Randy Johnson 用 兩份表已用錨點法重做(對不上的標「未知」,不硬填),
故事頁那一整段換成訂正,
「Bonds 是第 42 號」那句也一併撤掉 —— 第 42 號其實叫 |
本站順手把全站掃了一遍,確認這個錯沒有擴散。
站上一共有 12 處寫出「第 N 欄 = 某個欄位名」,
逐條拿原版與模組版兩種配置去對:12 條全部成立,一條都沒錯。
寫得最完整的是改跑壘速度那一課 ——
它直接寫「本站測試機是第 22 欄,剛安裝好的原版是第 23 欄,腳本會自己從表頭找」。
教學一直是對的,出錯的是本站在做分析時沒照自己的教學做。 至於為什麼會被騙:用最多人的那幾個編號是通用姿勢, 而通用姿勢也有名字。拿全體去算, 幾百個共用通用姿勢的人會把訊號稀釋成看起來像零。 算比例之前先問:分母裡混了什麼。 還有一層:那個錯的結論「連 Clemens 都不用自己的姿勢」 讀起來太漂亮了 —— 而那份漂亮正是它能一路寫進兩個頁面沒被攔下來的原因。 |
| ⭐ 只憑數量吻合就下結論 | 球員代號對照表 | 本站發表了一條推論:「 一小時後本站把介面版面檔全部掃一遍,找「誰在用那七個字串」:
它們是 同一次掃描順便解掉另一條未解: |
數量吻合不是證據,是巧合的溫床。 7 個值配 7 個名字看起來天衣無縫, 但真正該問的是「誰在使用這些字串」—— 而那個問題有辦法直接查:去版面檔裡搜那個編號。 |
| ⭐ 差點推翻自己(而站上是對的) | 球員資料檔全欄位 | 本站想把 2009 年那份更新紀錄的姿勢對照從 3 條擴大驗到 12 條,
結果七條打者的全部對不上 —— 名冊裡那個欄位整排都是 0。
一度以為站上已經發表的「羅國輝 21 = 21」是錯的。
追下去發現:不是站上錯,是本站這次讀錯了欄。 原版的 attrib.dat 第 29 欄是打擊姿勢,
但 2009 那份名冊的第 29 欄是揮棒型態 ——
兩邊都是 46 欄、欄位名完全一樣,
可是 skin_tone 從第 12 位搬到第 38 位,
中間全部往前移一格,46 欄裡有 27 欄對不上。
用各自的表頭重讀,站上那三條全部成立。
已把完整的 27 欄差異表補上站。 |
站上早就寫著「不要記欄號,欄號會因名冊而異」—— 而這次沒照做的是本站自己。 寫下來的紀律,要在自己趕時間的時候還記得用,那才叫紀律。 |
| ⭐ 差 1 | 暖身課 | 暖身課教你用 2 + 段數×63 + (段數−1) 算出檔案總行數,
然後跟記事本顯示的數字對一下。
本站拿第二台機器上的另一份檔案重驗,算式成立 ——
但記事本會顯示 322,算式算出來是 321。
原因是那個檔最後一行結尾也有換行,所以最底下多一個空行,
記事本把它算進去了。
照著做的人會看到差 1,然後以為自己數錯了。
已改成「記事本的數字減 1 才等於算式」,並把三個數字
(算式 321 / 記事本 322 / 有內容的行 315)並排列出來。 |
「兩個數字要一樣」這種成功標準,一定要在真的機器上對過一次。 而且要換一個樣本再對一次 —— 這個差 1 在本站原本那台機器上也存在,只是沒有人去按 Ctrl+End。 |
| ⭐ 關掉一條懸案 | 王建民用的是 Smoltz 的投球姿勢 | 那一頁原本有一條驗不成的:2009 年的更新紀錄寫「蔣智賢 — Piazza」, 但本站在名冊裡找不到 Piazza,只好寫成「對照組不在了」。 這次拿到剛安裝好的原版再查一次 —— Piazza 就在原廠名冊裡,打擊姿勢欄是 13, 跟蔣智賢那一列一模一樣。 四條全部成立,當年那份紀錄一條都沒寫錯。 (2026-09-06 補:後來把驗過的擴大到十條,一樣全部成立; 故事那一頁現在寫的是十條。) | 比對不到的時候,先問「我比對的是哪一層」。 模組是一層一層疊上去的,本站原本拿測試機上那份已經被換過的名冊去找, 當然找不到。 |
| ⭐ 照名字猜錯了 | 播報與音訊系統 | 音訊分區表裡有五格的證據欄寫著「命名佐證」——
意思是「本站沒打開看,是照資料夾名字推的」。這次全部打開了,
其中一格猜錯:
plyr_cht 本站原本寫「球員專屬應援的索引」,
實際內容是場上球員互相喊話 ——
17 個群組、623 個音檔,最大的兩群是
playpredict(197 個)跟 defalign(守備佈陣,177 個),
還有純粹當停頓用的 100ms.wav、500ms.wav。
cht 是 chatter 不是 chant。
另外四格猜對了,但現在都換成實際內容,證據欄從「命名佐證」升級成「實測」。 |
「照名字推」標得再誠實,也還是沒打開看。 而它猜錯的那一次,錯法是猜成一個很像的東西 —— 這種錯不會有人來糾正你,因為它讀起來很合理。 |
| ⭐ 寫好了卻沒上線 | 總設定檔 | 新的一頁寫完、連好、六道檢查全綠、上線前的死亡檢查表 15 項全過 —— 而它從來沒有進過真正要推出去的那包。 原因是發布流程用的是逐檔白名單,新頁沒加進去就不會被複製; 而站內連結檢查、數字稽核、上線前檢查全部只讀原始的 site/ 資料夾, 一路綠燈。 是打開瀏覽器點進去看到「找不到頁面」才發現的。 鏡像檢查原本只比「兩邊都有的檔內容一不一樣」, 現在補上「只有一邊有的檔」——兩個方向都測過: 少一頁抓得到、多一頁也抓得到。 | 所有檢查都讀同一份來源時,它們會一起漏掉同一件事。 至少要有一道檢查是從產出端看回去的。 而最便宜的那道,是自己打開瀏覽器點一次。 |
| ⭐ 手打的表格 | 應援曲 | 本站把「EA 幫哪些球員錄了專屬應援曲」做成表格時, 先是用手打的,然後寫了一段程式把網頁上的表格讀回來、 跟原始檔重新量一次比對。結果抓到漏了 6 個人 —— 第一次抽取群組名稱時的過濾條件寫錯, 把幾個群組誤判成音檔行給濾掉了。 現在整張表改由程式從原始檔直接產生, 並且加了一條驗算:這個索引檔的非空行數 必須等於「群組數 + 音檔數」(193 = 90 + 103)。 | 會手打的東西就會打錯。 而且錯的方式往往不是「打錯字」,是來源本身就少了。 照著發表前的表格反向對回原始檔,比多讀兩遍有用。 |
| ⭐ 對照組補齊 | 資料檔總覽 | 站上一直用「3,247 位球員」這個數字,
旁邊也一直老實標著「這是本站測試機的數字,你自己跑會不一樣」。
但只給但書、不給對照組,讀者還是不知道自己那份正不正常。
這次把剛安裝好的原版量出來了:
2,921 位球員、1,430 位投手、2,970 筆名單。
於是多了一個一秒就能做的檢查 ——
打開 attrib.dat 看它幾行,不是 2,921 就是被換過了。
順帶發現一件更好的事:19 個檔的欄位數在兩份之間一個都沒差,
只有跟球員有關的檔列數變了,球隊 126、球團 34、續約表 140 完全沒動。
這正好是站上那句「結構不會變、數字會變」的實證。 |
「這個數字可能不準」不如「準的那個是多少」。 但書保護的是寫的人,對照組才幫得到讀的人。 |
| 檢查器誤讀 | 數字稽核器 | 本站在 commit 訊息裡寫過「實測期望頁數真的會擋」。 那句話對,但不完整:那一欄守的是下限 —— 頁數掉下去才報紅燈,多出來不會。 先前把新數字的期望值隨手填小,檢查器照樣全綠, 看起來像「驗過了」。已把註解寫清楚,並把所有值調到實際頁數。 | 檢查器通過不等於它檢查了你以為的那件事。寫下它守什麼、不守什麼。 |
| ⭐ 沒查就寫「查不到」 | 播報與音訊系統 | 本站在關掉「名字帶 mini 可能跟小遊戲有關」那條推測時,
順手寫了一句「FMG(守備小遊戲)在文字檔裡找不到對應的選單句子」。
那句話當下還沒查。
真的去查之後,事實比原本寫的更有意思:
玩家看得到的第三個小遊戲是 Untimed Pitching(無時限投球),不是守備;
而守備小遊戲在程式內部有音量群組、有專屬攝影機,
卻沒有任何一句玩家看得到的文字,也沒有自己的音效庫。
已改寫成三項具體查證的結果,並把「是不是做到一半沒出」標成未解。 |
順手寫下的否定句最危險 —— 它不是結論,是「我沒想到要查」。 寫「找不到」之前,先把「我找過哪裡」列出來。 |
| ⭐ 授權合規 | 法律與版權說明 | 字型改成自己托管之後,站上寫「授權全文放在
assets/fonts/LICENSE.txt」,
但那個檔是中文摘要,不是全文。
SIL Open Font License 1.1 第 2 條寫得很明確:
每一份拷貝都要含著作權聲明與授權條款本身,附網址不算。
而且下載來的字型檔是精簡過的子集,名稱表裡放授權全文的那一格被拿掉了——
「授權寫在字型檔裡」在這種檔上不成立,
那份文字檔就是唯一一份授權紀錄。
已補上英文全文 OFL.txt。
補的時候發布把關擋下了這個新檔(副檔名不在白名單),
那是對的 —— 已把它明確加進白名單,而不是把把關放寬。 |
「我有寫出處」跟「我符合授權條件」是兩件事。 用別人的東西之前,把授權條款逐條讀完,不要只讀名字。 |
| ⭐ 這一頁自己 | 更新紀錄 | 下面那份「新頁上線的順序」,停在 48 頁,而站上已經 59 頁。 中間 11 頁全部有紀錄可查,只是沒人回頭補這份清單。 這種過期方式很安靜:鏈子斷在中間,可是每一句自己看起來都對, 要把「N 到 M 頁」整串接起來才看得出來。 已補齊到 59,並且加了一條檢查: 批次鏈必須首尾相連,而且最後一個數字要等於站上實際頁數。 斷鏈與少頁兩種壞法都反向測過,確認抓得到。 | 會過期的數字要交給程式守,不能靠記得。 判斷「這個數字會不會過期」的方法:問它是不是 「全部」減掉「已經列出來的」。是的話就一定會過期。 |
| ⭐ 全稱句 | 資料檔總覽 | 標題寫「20 個純文字檔」,可是剛安裝好的原版資料夾裡只有 19 個。
多出來那個是 attrib.dat.csv ——
一份 2017 年的舊匯出檔,遊戲不讀它,原版也沒有它,
是從測試機的資料夾一起數進去的。
讀者照著去數自己的資料夾會數到 19,
然後懷疑是不是自己少了檔。已訂正成 19,
那一列改成灰字並標明「不在原版安裝裡」。 |
「站上的數字」跟「讀者會數到的數字」要對得起來。 在自己的工作資料夾量出來的東西,發表前要換到乾淨的原版再量一次。 |
| ⭐ 不能跑的指令 | BIGF 封裝格式 | 新寫的一節附了一行
--list "data\initstaz.big",
照著打會失敗:--list 吃的是遊戲資料夾不是封裝檔路徑,
而且它只列版面檔 —— initstaz.big 一個版面檔都沒有,
工具會直接報錯退出。
追下去發現這不是文件寫錯而已,是工具真的缺一個模式:
圖片、模型、球場那些封裝檔,本站的工具根本列不出裡面有什麼。
補了 --entries,兩種情況都實跑過才寫回文件。 |
文件裡的每一行指令都要真的跑過。 跑不動的時候先問「是我寫錯,還是工具真的缺這個功能」。 |
| 隱私稽核 | 臉皮檔、EA 官方繁中版 | 用「想從這個站挖出個人資訊的人」的角度讀一遍,抓到兩處 遮蔽被自己的說明抵銷: ① 臉皮那頁遮掉了打包者的使用者名稱, 卻同時寫出了資料夾名稱與日期 —— 把名字遮掉、卻附上「去哪裡找」,等於沒遮。已移除辨識資訊, 並把重點改成「這件事會發生」而不是「那個人是誰」。 ② 繁中版那頁逐字引用班主任 2008 年的公開貼文並註明出處 —— 逐字引用會變成可被搜尋的字串。改成寫大意,不逐字、不附連結。 | 遮蔽的價值取決於「還剩多少線索」,不是取決於「遮了幾個字」。 |
| ⭐ 粉絲體驗 | 2009 年那兩份說明書 | 那張 53 列的表把球員名字全部遮成 ○○○, 整頁只給統計。粉絲那條線說「這是全站最可惜的一頁」。 查了一下:遮掉的都是大聯盟球員 —— 而站上其他頁早就寫了 Rod Carew、Lou Gehrig 這些名字。遮這裡不一致。 拆掉遮蔽,並把八條逐一拿剛安裝好的原版對照: 五條精確吻合(林彥峰 c183 = Roberto Hernandez、 林旺億 c214 = Aaron Sele、陳鴻文 c114 = Armando Benitez、 川上憲伸 c190 = Keith Foulke、相川亮二 c192 = Antonio Alfonseca)。 | 十七年前寫在說明檔裡的一句話,拿今天剛安裝好的遊戲一對,編號跟人名一個不差。 |
| ⭐ 新發現 | 2009 年那兩份說明書 | 八條裡有一條不吻合,而那條最好看。
說明檔寫「把 Steve Kline 的臉皮編號 c423 給予之」,
但原版裡 Steve Kline 從來沒有 c423(他用通用臉 901)——
c423 是 Lou Gehrig 的。
而那份 2009 名冊裡 c423 底下站著兩個人:Gehrig 與洪晨恩,共用同一張臉。
本站在臉皮那頁獨立量到過這件事 ——
14 個撞號裡有 12 個被處理掉,只有兩個沒處理,Gehrig 是其中一個。
寫的人記錯了對象,於是那一次撞號就沒有被處理。 |
文件說的、檔案裡的、以及玩家實際會看到的,是三件不同的事。 |
| ⭐ 隱私 | 全站 59 頁 + 法律頁 | 在此之前,本站當時 59 頁裡有 58 頁會向 Google 要字型
(唯一沒有的是 404.html)
—— 也就是每一個讀者的 IP 都會送到 Google,而站上一個字都沒提。
本站的讀者是「不會電腦的人」,那種事不該在他們不知道的情況下發生。
字型改成自己托管:九個拉丁字型檔(latin 子集,合計 191 KB)
放進 assets/fonts/。中文刻意不自己托管 ——
中文字型檔動輒好幾 MB,而蘋方(Mac)與微軟正黑體(Windows)是系統本來就有的。
現在全站自動外部請求 0 個。
新增法律頁第 8-1 節說明本站不放追蹤碼、不用 Cookie、沒有表單,
並老實寫出唯一無法控制的部分:站放在 GitHub Pages 上,
GitHub 會記錄並保存你的 IP。
(2026-09-05 補:那一節 2026-09-03 又多了一列 ——
本站確實有用 localStorage 記教學頁的步驟打勾,
只寫「Cookie 沒有」會讓人以為瀏覽器裡什麼都沒存。
兩者是兩種東西,但對讀者是同一件事。) |
字型授權是 SIL OFL 1.1,明文允許自行托管。
(2026-09-05 訂正:這一格原本寫「授權全文附在
assets/fonts/LICENSE.txt」,那是錯的 ——
該檔是中文摘要與著作權人清單,英文全文是上面「⭐ 授權合規」那一列
才補上的 assets/fonts/OFL.txt。) |
| 檢查器 | 本站的檢查工具 | 兩道新的:① audit_launch 加「任何一頁都不可以有自動的外部請求」
(只擋 link/script/img 這類瀏覽器會自己去要的,
<a href> 是你點了才去,不算);
② 發布流程的 assets/ 白名單加上 woff2,
並加一條「字型檔不得超過 200 KB」防中文字型悄悄混進來。
加白名單而不是改黑名單:白名單漏列頂多少一個檔,黑名單漏列就是夾帶。 |
把字型放進去時,發布把關當場擋下來了 —— 它本來就該擋沒見過的檔型。那是它做對了,不是它壞了。 |
| ⭐ 本站自己造成的損害 | 7 篇教學 | 用新手的角度走一遍全站時抓到:7 篇教學的「你會看到」底下貼的不是畫面輸出,
而是整支 Python 原始碼(400 到 830 行)。
讀者照著打完指令、正要對照畫面時,看到的是一整支程式。
這是本站自己造成的:內嵌原始碼的同步腳本用
「找出頁面裡最大的 <pre> 然後覆蓋它」——
在有原始碼附錄的頁面上那是對的(附錄一定最大),
但在還沒有附錄的頁面上,最大的正是那段範例輸出。
從 git 歷史把七課的範例輸出一一還原(11/14/11/7/10/5/3 行),
並補上正式的原始碼附錄。 |
當時所有檢查都是綠的 —— 因為「內嵌原始碼跟下載的一致」正是它要的結果。 檢查器守住了它被交代的事,而那件事被交代錯了。 |
| 檢查器 | 本站的檢查工具 | 兩道新的:① 同步改用專屬腳本,只認
<details> 裡面那一塊,找不到就明說不亂猜;
② check_mirrors 加第 5 道:
教學正文(附錄以外)不可以有超過 40 行的 <pre>。
反向測過:把原始碼塞回正文 → 🔴 附錄外最大 449 行。 |
「一致」不等於「放對地方」。 |
| 法律與版權複查 | 法律頁、9 支腳本、授權檔 | 四條需要決定的全部落地:
① 舊部落格的連結留著,新增第 6-1 節說明
「本站不採集、不鏡像、不負責那邊的內容,連過去只是講來歷」。
② 拿掉美國 §1201(f)
—— 那是規避技術保護措施的例外,而本站第 3 節明寫不需要規避任何保護措施;
把一條規避例外列成依據,等於自認有東西要規避。
③ 9 支腳本改採 MIT(教學文字維持 CC BY),
而且每一支的檔案開頭都帶免責與非關聯聲明、檔尾附完整條款
—— 就算有人只拿走腳本、不帶走網站,那段聲明也會跟著走。
④ 新增第 3-1 節,把「站上四樣碰到光碟檢查邊」的東西
主動列出來並畫清界線。 |
③ 的理由值得記:CC BY 是給「作品」用的,它沒有免責與無擔保條款。(2026-09-06 訂正:這句不對——CC BY 4.0 第 5 條也有無擔保與責任限制。分開的理由改寫成「工具會改別人的檔案,用軟體授權比較清楚」,法律頁與 LICENSE 已同步改。) 而這些腳本會真的去改別人電腦裡的檔案。 |
| 檢查器 | 本站的檢查工具 | 加一道「</html> 之後不可以還有內容」。
當天實測:一段訂正說明因為插入點算錯被放到 </html> 之後,
瀏覽器多半還是會顯示它,但所有既有檢查都沒抓到。 |
結構檢查只看「標籤成不成對」,看不到「東西掉到文件外面」。 |
| ⭐ 粉絲體驗 | 2008 年那份名單裡的每一個人(新頁) | 用「2008 年玩過台灣模組的人」的角度走一遍全站,最刺眼的一條是:
整站找不到任何一個中職球隊名
(興農、La New、誠泰、米迪亞、中信、鯨、獅 全部 0 頁),
而站上到處是大聯盟球隊名。
翻出一份 2008-12-03 的名冊更新說明,裡面有一張
33 位旅美球員一人一行的表:臉皮編號、大頭照編號、
當時在哪一隊、那張臉是誰做的。抽九位驗,
編號十八年後全部還在(只有李振昌的大頭照 3497 兩份都找不到,標未解)。
同一批資料裡還有中職六隊的 .met,各 25 位球員。 |
一個台灣模組的教學站,零個中職球隊名 —— 那不是紅線問題,是沒人寫。 |
| 粉絲體驗 | 首頁 | 故事區的標題原本叫「不只是教學」,讀起來像附錄, 而且位置在整頁約 57% 處。改成「當年那些事」, 並加一句「如果你 2008 年玩過台灣模組,這一區是為你寫的」。 | 粉絲是靠導覽列第四個字才知道有東西可以看的。 |
| ⭐ 新手體驗 | 新手基本功(新增一節) | 全站沒有任何一頁教「怎麼找到你的遊戲資料夾」,
而那是每一課的第一個動作。實測全站「開啟檔案位置」「捷徑」0 命中,
暖身課的前置直接寫「你已經安裝好,而且找得到它的資料夾」——把最難的那一步假設掉了。
新增「操作零:找到你的遊戲資料夾」:三種找法(桌面捷徑右鍵、開始功能表、常見安裝路徑)、
怎麼確認找對了(同一層要同時有 mvp2005.exe 與 data)、
以及怎麼把路徑複製起來。順帶提醒這款遊戲不在 Steam/EA app 上。 |
假設掉的那一步,正是新手最常卡住的那一步。 |
| ⭐ 新手體驗 | 暖身課 | 首頁第一顆按鈕「我是新手,從暖身課開始」指向這一課,
而這一課的第一個動作是打開 controller.cfg ——
剛安裝好、還沒玩過的遊戲裡沒有這個檔
(拿三份剛安裝好的原版實測,三份都沒有)。
站上其實有寫,但埋在整頁最下面的出錯處理表裡 —— 新手會先撞牆才讀到。
把「你至少進過遊戲一次」移到「前置」的第二條。 |
資訊有寫不等於讀得到。位置本身就是內容的一部分。 |
| 檢查器 | 本站的檢查工具 | 「N 個基本操作」跟「還有 N 篇」一樣是會過期的數字,一起交給程式守:
必須等於 <h2>操作N 的實際個數,而且其他頁面引用時也不能寫成別的數字。
(寫規則時自己踩了貪婪比對的坑:
([\u4e00-\u9fff\d]+)個基本操作 會抓成「改遊戲之前先學會六」。
限縮成只認數字字、最多三個字才對。) |
今天第三次寫檢查規則、第三次規則自己先錯。 |
| 法律稽核 | 首頁、法律頁 | 首頁頁尾寫「本站僅為介紹與教學目的引用少量遊戲畫面」, 而法律頁第 5 節寫「本站不使用遊戲畫面截圖」——兩句直接打架。 查事實:全站只有 2 張圖(自繪的 favicon 與球衣對照圖),沒有任何遊戲畫面。 所以是首頁那句錯了,已改成跟法律頁一致。 | 兩句對立的話擺在不同頁,誰都沒發現 —— 直到有人用「想告這個站」的角度讀一遍。 |
| 法律稽核 | 法律頁 | 全站 58 頁 + 9 支腳本,「EULA」「使用者授權合約」「使用條款」出現 0 次。 一個教人改商業遊戲的站從頭到尾沒提過授權合約。 新增第 2-1 節:說明那是讀者與 EA 之間的約定、本站不是當事人也無法代為解釋、 著作權法的權利限制條款跟合約條款是兩件事、以及本站一貫立場 (改自己買的那一份、自己玩、不散布)。明寫本站作者不是律師。 | 不是加一句免責就好,是把「這件事本站不能回答」講清楚。 |
| 法律稽核 | 法律頁 | 下架管道原本只有一條 GitHub Issues:公開、需要帳號、沒有時限、 而且當時那個 repo 還不存在。改成三條,其中一條 不經過本站維護者也一樣有效(GitHub 自己的下架流程)。 並寫明承諾:先下架再討論、目標七日內回應、下架紀錄會寫進更新紀錄但不寫通知人是誰。 也誠實寫出已知限制:沒有公開的電子郵件管道,那是刻意的。 | 一條需要對方註冊帳號、公開發文才能用的管道,實務上等於半條。 |
| 法律稽核 | 全站 21 頁 | 58 頁裡有 21 頁沒有「與 Electronic Arts、中華職棒無任何官方關聯」, 而且缺的正好是 EA 內容最密集的速查頁。已全部補上, 並在 audit_launch 加一道:任何一頁少了這句就紅燈。 | 搜尋引擎會把任何一頁當入口,而多數人不會點到法律頁。 |
| ⭐ 未解 → 解開 | 大頭照 | 那 840 張通用大頭照的檔名是一張 15×7×1×8 的完整網格, 站上已經把三個軸對到「罐頭臉 15 種 × 髮色 × 鬍子 8 種」, 但髮色那一軸原本寫「對上宣告的 7 種,實際只用到 6 種」,掛了未解。 拿剛安裝好的原版一量:髮色 0 到 6 用滿 7 種。 會看到 6 種是因為量的是台灣名冊 —— 那份名冊剛好沒有人用第 7 種髮色。 三個軸現在全部精準對上。 | 又一個「用測試機量、以為是遊戲的性質」。這次的代價是一個掛了很久的未解。 |
| ⭐ 重要訂正 | 一個檔案裡的地層 | 那 92.6% 的孤兒資料有三種狀態,站上只講了兩種。逐檔量:
EA 出貨的檔碎片很小但不是零(models.big 4,005 bytes、
portrait.big 3,563、ingame.big 71);
被工具重新打包過的檔剛好 0(這台的 models.big 與 portrait.big);
被 append 模式改過的檔越積越多(這台的 ingame.big 92.6%)。
所以 92.6% 不是格式的性質,是「有人用 append 改過很多次」的痕跡。 |
連帶要換一條鐵律的理由 —— 見下一列。 |
| ⭐ 重要訂正 | 一個檔案裡的地層、BIGF 格式 | 「一律用 append 模式」的理由原本寫「不然 2.5 MB 會變成 198 KB」。
但這台的 models.big 早就被重新打包過了(碎片剛好 0),
而它好好的 —— 894 張臉皮全部讀得出來,遊戲也在跑。
所以正確的理由不是「重新打包一定會壞」,而是
「你不知道手上這一份被誰疊過什麼」:
重新打包會把「目錄沒指到、但可能還有人用」的東西一次丟掉,而你沒辦法事先知道有沒有。
append 的代價只是檔案變大,重新打包的代價是不可逆 —— 風險不對稱,所以選 append。 |
一條規則的理由錯了,規則本身還是對的 —— 但理由錯會讓人在該例外的時候不敢例外。 |
| ⭐ 新發現 | 臉皮檔 | 這台的 894 張臉皮,沒有任何一張跟原版逐位元組相同 (0 張存活)—— 499 張同名但內容被換掉、395 張是原版沒有的。 社群模組把臉皮整批換掉了,不是加上去而已。 | 又一個「只看數量看不到的事」。 |
| 新頁 | 十四年後打開自己的模組資料夾 | 檔案考古,不靠回憶。年份分佈(2006 年 4,392 個檔是高峰,第二名的三倍)、
最早的工作檔是 2004-01-15 的球衣底稿(遊戲 2005 年 2 月才出,
那是上一代帶過來的,而且先做貼圖、名冊是後來的事)、
81 個中文檔名的 .wav,其中 62 個只有一個字
(中文播報是一個字一個字錄再拼起來的)、
以及 2007 年那句「台灣之光取代釀酒人」拿 team.dat 驗到
artid 23 從 Milwaukee Brewers 變成 Taiwan Glory。
順帶解開 Standard/Plus:同一份 3,208 位球員的名冊,
標準版 436 人有專屬臉、plus 版 875 人,
逐人比對 435 位不同、其中 430 位是「通用臉 → 專屬臉」。
那正是 2008 年那份除錯清單裡「把臉皮編號改成 Standard 版」在動的東西。 |
「為什麼那樣就不會跳出」是當年那些人的解釋,本站沒辦法驗證,標未驗。 但至少現在知道那一步在動什麼了。 |
| ⭐ 新發現 | 語音檔頭 | 語音本體 .dat 的第 8–11 個位元組寫著「這個檔是哪一套工具做的」。
剛安裝好的原版全庫 4,580 個清一色 PT\0\0、零個 GSTR;
測試機裡跟原版逐位元組相同的 3,692 個也是零個 GSTR;
而後來加的 7,988 個裡有 5,778 個是 GSTR。
所以這是一條單向判定:看到 GSTR 一定不是 2005 原版留下來的,
但看到 PT\0\0 不代表是原廠的(後加的裡面也有 1,680 個)。 |
四個位元組就能判斷來歷 —— 這是站上第一條「打開檔案看一眼就知道」的判定。 |
| ⭐ 新發現 | 語音檔頭 | spch_pbp.txt:1.17 MB 的純文字對照表、31,902 行,
列的是原始錄音的檔名與位移(1000ms.wav 0、1100ms.wav 3840…)。
沒有縮排的是群組名,每個群組的位移從 0 重新起算。
這份表把 EA 當年錄音室裡的檔名留了下來 ——
1000ms.wav、800ms.wav 看得出是停頓長度。 |
沒有把它跟實際音訊對起來,也沒解讀群組命名規則,標未解。 |
| 研究打假 | 語音檔頭 | 這一頁的標題「16 個位元組」只對球員名那一庫成立。
五個語音檔頭庫的檔頭大小差很多:
spch_pa\pnamehdr.big 是 32(2,106 個全部一樣)、
spch_pbp\tnamehdr.big 是 72 ~ 148、九種。
但這一頁真正在講的那兩個欄位(編號在第 2–3、長度在第 8–9)
在五庫都一樣、6,995 次全部成立 —— 多出來的部分接在後面,本站沒有解讀。 |
發布隔天就抓到自己的標題比內容大。 |
| ⭐ 新發現 | 語音檔頭 | 整個遊戲最大的音訊檔 pbpdat.big(212,219,648 位元組,播報員的所有講評)
不是封裝檔 —— 開頭是 SCHl 不是 BIGF,
整個檔就是一長串音訊串流接在一起、沒有目錄。
它的索引是一個純文字檔:旁邊的 pbpdat.off,
2,056 行「起點,長度」,把所有長度加起來
剛好等於 212,219,648,一個位元組不多不少。
EA 在同一個遊戲裡用了兩套索引做法。 |
為什麼這個檔要特別處理,不知道,標未解。 |
| 研究打假 | 球場檔 | 「29 組日夜配對裡全部都相同的項目只有 8 項」——
剛安裝好的英文原版是 9 項,多的是 3dcrowd.ord(看台觀眾的幾何)。
而差別的來源只有一個位元組:
orionite.big 偏移 0x8A500,英文版 F6、
本站測試機 FE(第 3 個位元被設起來,位置對 32 取餘 0)——
那正是另一頁講的那 45 個損壞位元組之一。
英文原版的 3dcrowd.ord 白天版與夜間版逐位元組相同,算得進那份名單;
測試機那份被打到,就被踢出去了。於是本站量到 8,寫上了 8。 |
一個翻掉的位元改變了本站發布過的一個數字。 而且測試機的球場資料夾跟那份繁中備份逐位元組相同 —— 三份裡有兩份同源,那不算三個獨立證據。 |
| ⭐ 未解 → 解開一半 | EA 官方繁中版 | 今天上午那 45 個位元組的謎團,下午確定了是哪一側壞的。
那些位元組有幾個落在 models.big 的球衣貼圖裡。
把 u025k.fsh 在兩邊各解開一次:
英文版 28 張圖,格式代號全是正常的 0x6D/0x78;
本站那份繁中版備份解出 8 張 0x45
—— 那個代號在整個遊戲的任何地方都不存在,
而且其中一張的尺寸解出來是寬 0。
寬度 0 的圖不可能是誰刻意做的。加上第三份安裝 45 次全站英文版那邊,
結論是:那 45 個位元組是損壞,壞的是本站這份繁中版備份。 |
「是不是損壞」跟「是什麼機制」是兩個問題。前者答出來了,後者還沒 —— 什麼東西能系統性地在 32 位元組邊界上把同一個位元設起來,仍然不知道。 |
| 誠實但書 | 語音檔頭 | 既然那份繁中版備份有損壞,就得說清楚:受影響的 20 個檔裡包含
tnamedat.big(隊名語音)。這一頁的公式算的是檔案長度,
位元組損壞不會改變長度,所以那 124 筆不受影響、兩份也給出一樣的結果。
本站引用過的其他檔(.LOC、五個 hdr 封裝檔、
datafile 的光源檔、lighting.csv)逐一查過,全部乾淨。 |
對照組本身有問題的時候,要說出來,並且逐檔查過再說「不受影響」。 |
| 研究打假 | 臉皮檔 | 「編號從 c001 排到 c900,中間缺 6 個」是社群重新打包之後的樣子。
剛安裝好的原版是 504 張、c001–c606、中間缺 102 個。
模組把號碼填到 900、補掉了原版那 102 個空號的大部分,自己又缺了 6 個
—— 「缺號」這件事在兩份檔案裡是完全不同的兩回事。 |
又一個沒標範圍的數字。 |
| 研究打假 | 臉皮檔、大頭照 | playerattrib_photo「只有 0、1、2 三種值」也是這台的。
原版只有 1 與 2,沒有 0(1 有 1,301 人、2 有 1,620 人)。
而且它幾乎是「這位球員有沒有語音編號」的鏡像:
photo=2+audioid=0 有 1,620 人、
photo=1+audioid≠0 有 1,300 人,
2,921 位裡只有 1 個例外(Default Default,名冊第一列的空位)。
99.97%。 |
順手把一個「未確認用途」的欄位推進了一大步。 |
| 研究打假 | 檔案地圖、大頭照 | 站上到處講的「224 個封裝檔」,精確講是
data\ 底下副檔名叫 .big 的檔案數。
真正是 BIGF 封裝格式的只有 207 個 ——
另外 8 個開頭是 SCHl(音訊容器)、1 個是 SHPI(圖片)、
8 個沒有可辨識的開頭。已在檔案地圖那頁講清楚一次。 |
「封裝檔」跟「副檔名叫 .big 的檔」不是同一件事。 |
| ⭐ 未解 → 解開 | 球場檔 | 那張卡片原本寫「04day、07night 這些代號實際對應到什麼光源參數,
本站沒有找到定義它們的地方」,掛了「未解」。
找到了 —— 就在旁邊的資料夾。
lighting.csv 右欄那 16 種代號,每一種在 data\datafile\
裡都有一個同名的檔,16/16 全中。打開來是一長串具名的光源參數
(DugoutR_Light2_RGB、Bullpen_IR_Ground_Weight…),
16 個檔各 12 KB、共 381 種參數名,其中 357 種是 16 個檔全部都有的
—— 同一組欄位、不同的值。
(2026-09-06 訂正:這兩個數字原本寫 380/356,各少一種。
檔頭 0xaba1daef 後面那個數字自己就宣告 357/358/381,
逐檔取名稱表算聯集與交集也是 381/357。) |
找到它的方式值得記:EA 官方繁中版把 datafile.big 拆開出貨,
466 個散檔攤在資料夾裡,一眼就看到。英文版是打包的,要先解開才找得到。
同一份資料,換一個發行版就從「找不到」變成「一眼看到」。 |
| 研究打假 | 播報員為什麼不唸新球員的名字 | 原本寫「沒有語音的球員,EA 直接填 0」,讀起來像是「非 0 就有語音」。 反過來不成立:剛安裝好的原版那 1,300 個非零號碼裡, 118 個(9.1%)一個檔案都沒有,a/c/d 三件齊全的只有 998 個(76.8%)。 這是 EA 自己出貨的名冊就有的狀況。 | 「A 蘊含 B」寫完之後,順手檢查一下「非 A 蘊含非 B」有沒有跟著被讀進去。 |
| 研究打假 | 原版與這台的對照、播報員那頁 | 「多出來的 2,670 個號碼是後來被模組加進去的」——2,670 是淨值, 實際是加了 2,681、拿掉了 11。 換成用「檔案」當單位差更多:新增 7,988 個項目、 同名但內容被換掉 848 個、原封不動 3,692 個、刪掉 40 個。 模組不只是「加」,只看號碼總數會完全看不到這件事。 | 淨值把「同時發生的加與減」壓成一個數字。 |
| 自我訂正 | 王建民用的是 Smoltz 的投球姿勢 | 這一頁上線當天就被自己抓到一個錯:
「那份名冊有 47% 的名字是十六進位字串」是本站讀檔的程式寫錯造成的。
球員資料檔每一列開頭是「列的識別碼」,它沒有欄位編號而且開頭是數字;
本站的程式用「開頭數字 = 欄位編號」去掃,把 0f58f3c1b
讀成「第 0 欄 = f58f3c1b」—— 第 0 欄正好就是名字。
正確重量:真的是十六進位字串的只有 5 個(0.2%)。
那三條姿勢對照重驗過,全部成立(28、21、49 不受影響,因為識別碼只會撞到
「開頭數字剛好等於欄號」的格子)。
「蔣智賢 — Piazza」驗不成的原因也改了:Piazza 2007 年退休,不在 2009 名冊裡。 |
拿到一個很漂亮的數字時,先問「會不會是我量錯了」。 |
| 自我訂正 | 臉皮檔 | 撞號那張表也是同一個程式錯誤的產物。重驗後:14 個撞號裡 5 位改用通用臉、7 位不在 2009 名冊裡、2 位完全沒處理。 原本寫「Lou Gehrig、Rod Carew 整個從名冊移除」是錯的 —— 他們還在,而且還用著原本的編號, 也就是說裝了那個臉皮包之後這兩位名人堂球員會頂著別人的臉。 那反而是「用 EA 範圍內的編號要付什麼代價」最好的示範。 | 同一個 bug 汙染了兩頁。 |
| 研究打假 | 臉皮檔 | 原本寫「這台上那 890 張用的是 EA 沒有用過的格式與尺寸」,
下一句還加碼「只知道原版沒有這個格式」。兩句都是假的全稱句。
0x60 與 0x61 是 EA 自己大量在用的正規格式,只是沒用在臉皮上:
logos.big 有 920 張 0x61、bkgnds.big 有 105 張 0x60,
連「0x60 的 256×512」這個一模一樣的組合,球場檔 crosday.big 裡就有一張。 |
同一件事大頭照那頁寫對了 ——「EA 在這個倉庫裡沒有用過」。差別只在那個限定詞。 |
| 研究打假 | 臉皮檔等 3 頁 | 「七成七的球員共用那 15 張臉」只對本站測試機成立。 剛安裝好的原版是 84.1%(2,454/2,917),比這台還高 —— 模組加了臉之後比例反而降了。三頁一起補上標示。 | 又一次把這台機器的比例當成通則講。 |
| 研究打假 | 大頭照 | 「原版整套安裝的 6,370 個帶這句話的圖檔」少算了 22 個,實際是 6,392。
原因是當時的掃描只走封裝檔裡面,漏掉 data\misc\textures\ 底下
23 個沒有裝進封裝檔、自己就是圖檔的檔案。
結論不受影響(那些也全部是 metal),但「整套安裝」這四個字當時沒做到。 |
掃描器的覆蓋範圍跟宣稱的範圍不一樣,而宣稱寫得比較大。 |
| 吸收歷史資料 | EA 官方繁中版 | 挖到一份社群做的中文化模組,跟 EA 官方那份逐條比對同一個編號的翻譯:
比賽中那張表 97.2% 一模一樣、選單那張 99.0%。
社群不是從英文重新翻的,是把 EA 的官方中文搬進 ENG 槽位。
不一樣的 68 條才是他們自己動的手:13 條改年份,
其餘大多往「更像棒球」調 —— 補上「速球」(四縫線球 → 四縫線速球,
英文原文是 4-Seam Fastball)、把 EA 沒翻的 RHP 翻成「對右投」、
次打者改成「次棒」。還修了 EA 的一個錯字:
編號 6701 的 Rating,EA 寫「平等」,
而 EA 自己在其他 15 個地方都寫「評等」。 |
不是訂正,是補上「社群那一半」的故事。 |
| 吸收歷史資料 | 臉皮檔、換臉工具 | 新增一節「編號有三個區間,而且中間那個是雷區」。
EA 原版的專屬臉全部落在 c001–c606,c607–c900 是空號。
拿 2009 年那份模組的 26 張臉皮去對:26 個編號全部真的有人在用,
其中 15 個落在 EA 範圍內,14 個撞到 EA 已經指派過的球員;
另外 11 個落在空號區,一個都沒撞。
撞號是被處理過的 —— 現役球員改用通用臉(c192→c911、c114→c909、c190→c902),
退休傳奇直接從名冊移除。那是有人一個一個決定的。
(「退休傳奇直接從名冊移除」這句後來被本站自己推翻:
重驗後 Rod Carew 與 Lou Gehrig 都還在名冊上、還用著原本的編號 ——
見上面「自我訂正 · 臉皮檔」那一列。
原句留在這裡,因為這一頁記的就是寫錯過什麼。)
換臉工具同步加了撞號提醒:指定一個已經有人在用的專屬臉時會列出那些人。 |
站上原本只寫「901 以上是通用臉」,沒說 606 以下是 EA 的地盤。 |
| 吸收歷史資料 | 王建民用的是 Smoltz 的投球姿勢(新頁) | 2009 年那份台灣之光名冊的更新紀錄裡,社群逐人寫下「誰用誰的姿勢」,還附了理由
(「原本的 Schilling 比較偏高壓,Smoltz 比較接近小王的 3/4」)。
打開那份 pitcher.dat:王建民 28、Smoltz 28。
另外兩條也對上:羅國輝 21 = A-Rod 21、陳鏞基 49 = Helton 49。
順帶量到那份名冊有 47% 的名字是十六進位字串,不是人名。 |
不是訂正,是把教學裡那個「填一個整數」的動作接回它的來歷。 |
| 吸收歷史資料 | EA 官方繁中版 | 新增一節:繁中版沒有 anims.big,也沒有 datafile.big
—— 那兩包是拆開、解壓縮之後出貨的(730 + 466 個散檔,含中文的 0 個)。
全遊戲 .big 英文版 224 個、繁中版 222 個。
這對上了班主任 2008 年在 PTT 寫的一句「中文版的更新新球場就會必跳出」:
球場檔本身兩邊一樣(87 個裡 83 個逐位元組相同),
但社群模組安裝程式要改的那兩個封裝檔,在繁中版根本不存在。
本站沒有驗這是不是跳出的原因,只把兩件量到的事擺在一起。 |
一個 2008 年記下來、當年沒辦法解釋的現象。 |
| 吸收歷史資料 | EA 官方繁中版 | 原本只寫「兩邊各有自己獨有的檔」然後舉說明文件資料夾當例子, 讓人以為 913 個共同檔差不多就是全部。實際上英文版 1,191 個、繁中版 2,389 個, 獨有的分別是 278 與 1,476 個。 | 拿最小的差異當代表,把最大的那個蓋掉了。 |
| 吸收歷史資料 | 本站的隱私掃描器 | 拿一份真實的個資樣本當正向對照組去測,
抓到 76 個信箱、1 個手機、1 個 Windows 路徑,
卻完全沒抓到裡面的住址和本名。補上台灣地址與身分文件詞兩條規則。
另外記下一條放棄的規則:「護照式全名」在不分大小寫的掃描下
會把 http-equiv、sans-serif 全抓進來,同一份樣本噴 366 個誤判。 |
掃描器對著乾淨的站掃出 0,不代表它抓得到東西。要拿真的髒資料測。 |
| 吸收歷史資料 | 語音檔頭的 16 個位元組(新頁) | 2008 年遊戲基地精華區那篇〈語音檔製做法 新版〉的最後一步是 「用 WinHex 在第 2 欄填編號」,那是整篇最難照做也最沒解釋的一步。 把兩份原版全部 6,995 個檔頭拆開來數:編號在第 2–3 個位元組、 長度區塊數在第 8–9 個位元組(而且要減一),13,990 次比對零例外。 照原文字面做會把編號寫到左邊一格,而那一格是類別標記。 | 不是訂正,是把社群十八年前寫下的流程補上「為什麼」。 |
| 吸收歷史資料 | 語音資料夾裡的 23 個人 | 原本寫「語音庫涵蓋 4,343 個號碼,遠多於任何一份大聯盟名單」, 並用它去說明 EA 的收錄標準。4,343 是裝過模組的這台的數字, EA 原廠是 1,673 個。換掉數字之後結論也要換:本站更沒有立場 對 EA 的收錄標準下任何結論。 | 又一次拿這台機器的數字去推論 EA 的做法。 |
| 吸收歷史資料 | 速查總覽 | 語音那張卡片寫「語音庫有 4,343 個名字」,沒有標這是哪一份的值。 | 「本站已經在各頁把這台的值標出來」那句話,漏了這一處。 |
| 上線前複查 | EA 官方繁中版 | 同一輪裡自己訂正自己。上午剛寫「那 45 個位元組是兩份備份之一在某個環節掉了位元」, 下午多量兩件事就推翻了:45 個位置全部是 32 的倍數、 而且那些位元組的第 4 個位元兩份都是 1。隨機損壞不會這樣落點。 第三份安裝當公親,45 次全部站英文版那邊。已改成「不是損壞,是某種有結構的東西,但那是什麼不知道」。 | 把「想不到別的解釋」當成「找到解釋」。差別只在有沒有再多量一件事。 |
| 上線前複查 | EA 官方繁中版、文字表 | 原本寫「本站測試機的社群中文化模組只換了選單那張表、沒換比賽中那張」。 整句是錯的:測試機正在跑的兩張表一個中文字都沒有(含漢字的字串各 0 條)。 改掉選單那張的是 2023 年名冊模組;機器上另外留著一份中文化備份,那一份兩張表都換了 (IGENG 992 條、FEENG 4,914 條含漢字)。 | 把「這台機器上看到的現象」寫成「別人的做法」,而且拿它推出了一條教學結論。 |
| 上線前複查 | EA 官方繁中版 | 原本寫「913 個共同檔案裡只有 65 個不同,其餘 848 個位元組一模一樣」。 頁尾自己說方法是比檔案大小,而「位元組一模一樣」是更強的宣稱。逐位元組重量: 825 個相同、65 個大小不同、23 個大小相同但內容不同。 那 23 個裡有 20 個只差在「繁中版把某個位元組的第 3 個位元設成 1」,共 45 個位元組、方向零例外。 | 用比較弱的方法量,卻寫了比較強的結論。 |
| 上線前複查 | EA 官方繁中版 | 原本寫「整份繁中安裝 802 個檔」,跟同一頁的「913 個路徑相同的檔案」直接矛盾 —— 子集不可能比全集大。實測 2,389 個檔、2,386 個落在 2004-2005。 | 不用外部資料、光看同一頁就能發現的矛盾,而檢查器當時報不出來(見下一列)。 |
| 上線前複查 | 原版與這台的對照 | 原本寫「EA 的編號停在五千多,再往上都是後來加的」。
對臉皮根本不成立(原廠上限是 c606),而且會讓人反推「五千以下 = 原廠」。
實測反推大量失效:模組加的臉皮 26% 落在原廠編號範圍內、大頭照 40%、語音 37%。
改成「能證明不是原廠,證明不了是原廠」。 |
一條好記但會把人帶到相反結論的規律。 |
| 上線前複查 | 原版與這台的對照 | 原本寫「模組通常只會加不會減」,並拿臉皮少掉的 5 個當唯一案例。 同一台機器上大頭照少了 277 個原廠編號、語音少了 11 筆。 | 挑了三組裡最小的那一組講。 |
| 上線前複查 | 全欄位清單等 5 頁 | 速查頁還在把測試機的欄位編號當通則寫。實測 46 欄裡有 27 欄編號不同,
根源是原版把 skin_tone 排在第 12 欄、這台移到第 38,12 之後全部往前挪一格。
照「第 16 欄」去改剛安裝好的原版會改到 bodytype,而且不會有任何錯誤訊息。
全站改成認欄位名字。 |
腳本上一輪已經修好了,但速查頁沒跟著改。 |
| 上線前複查 | FEL 修改配方 | 原本有一組叫「把 EA 自己關掉的東西打開」。拿原版比 fes_ingameoverlay.fel:
原版 36 行裡開著 24 行,本站測試機 36 行全部關著。
打開它們不是解鎖 EA 藏的東西,是還原模組關掉的東西。 |
又一次把這台機器的狀態當成 EA 的決定。 |
| 上線前複查 | 關掉跑壘者速度 | 同一張卡片裡,第 62 行的訂正說「不能說那是原廠的決定」, 第 68 行卻留著「遊戲原廠就是用這個開關」。相隔六行,自己打自己。 | 訂正只改了被指出的那一句,沒看同一段還有沒有別的。 |
| 上線前複查 | 本站的檢查工具 | 跨頁數字一致性稽核那支結構上不可能報出矛盾: 28 條事實的比對式全部寫死數字字面值,配上「抓不到就跳過」, 合起來變成「數字打錯 → 抓不到 → 跳過 → 印綠燈」。 實測把某頁的 3,247 改成 3,427,它照樣報「分歧項目: 0」。 已改成記錄每條事實應該出現在幾頁,少一頁就紅燈。 | 檢查器報綠燈,也要先驗綠燈是真的。 |
| 上線前複查 | 兩支下載腳本 | 上一輪稽核自己加進去的兩個 bug:改賽程那支的「還原前先確認備份是賽程表」 查的是一個檔案裡根本不存在的字串,結果擋掉所有合法還原; 改打擊姿勢那支的「寫後複驗」拿改過的記憶體去比檔案,永遠算出 0, 於是每次成功修改都跳假警報,把人叫去把正確的修改還原掉。兩支都已修好並沙盒實測正反兩向。 | 加防護的時候沒有用真檔跑過一次。 |
| 第四批 | 檔案地圖 | 原本寫「cd\ 是選單音樂,佔音訊 99%,比賽中的播報、觀眾、應援加起來不到 1%」,
還附了一段記憶體的解釋。重量之後發現整個寫反了:
選單音樂 84.2 MB、語音與音效 644.8 MB,分別佔整個音訊資料夾的 11.4% 與 87.5%。
那段解釋沒有依據,一併移除。 |
佔比寫反,而且拿一個沒有量測撐著的機制去解釋它。 |
| 第四批 | FEL 版面語法 | 原本寫「VR 固定 78」「TS 是編譯時間」。
實際上 VR 有 78、71、69 三種值,表上改成列出這三個實測值;
TS 那 17 行內容一模一樣,不可能是時間戳,改標「未確認」。 |
這一頁是最早那批就寫好的,只看了一部分樣本就當成全部。 |
| 第十批 | BIGF 封裝格式 | 原本寫「殘骸區撈得出 156 種舊版畫面代號,而現行版本只有一個 HUDLEFT」。
實測是 134 種,而且每一種現行版本裡都還在,稱不上舊版;
現行的 fes_hudleft.fel 有 26 個 HUDLEFT。
(2026-09-06 補:「134 種」是那一次量的,重跑是 143 種 ——
143 種指的是讀得出整段文字的那 13 個區塊,156 是把整片沒被指向的位元組一起掃的口徑。
「每一種現行版本裡都還在」不變。) |
兩個數字都錯,而且第二個跟本站另一頁原本就寫對的數字打架。站內矛盾就是紅旗。 |
| 第十二批 | 三頁 + 一支腳本 | 同一個檔案大小(ingame.big,2,665,562 個位元組),
站上同時有 2.6 MB(十進位換算)與 2.5 MB(二進位換算)兩種寫法。
查站上最大的那個封裝檔 models.big(561,891,312 個位元組,站上寫 535.9 MB),
確認慣例是二進位,五處全部統一成 2.5 MB。
(2026-09-06 補:當時漏了社群工具那一頁的兩處
—— 正文與重點整理都還寫著 2.6 MB,已一併改齊。) |
兩種換算都「看起來對」,錯的是同一個站混用。 |
| 第十二批 | 找不到頁面 | 深色模式下的連結對比只有 2.90,低於無障礙標準要求的 4.5。調整樣式順序後是 8.06。 | 淺色的顏色規則寫在深色區塊後面,同權重下後者勝。 |
| 震撼版期間 | 故事索引 | 原本寫「2009 年做的球員臉皮至今仍在遊戲名單裡,一個都沒少」。 那是一句沒有數過的全稱句。去數才發現:實際有 26 個資料夾, 18 個還在名單上、8 個不在。 | 規劃時憑印象寫的數字,被直接抄進頁面文案。沒有連結的說明文字也是已發布內容。 |
| 上線前最後檢查之後 | 播報與音訊、 什麼改得動、 檔案地圖 | 三頁都寫「選單音樂檔案層級直接換,不必解析格式」。這句話拔掉了。
實測本站測試機那 9 個 .asf 開頭四碼全是 SCHl,
是 EA 自家容器不是微軟 ASF。這 9 個檔的日期是 2023 年,已經被模組換過,
所以 EA 原廠出貨時是不是也用 SCHl,本站無法確認。
而最內層的聲音編碼本站沒有解開,所以不寫這個教學。 |
一條沒有任何量測撐著的操作建議。照字面做等於在賭遊戲讀不讀得動。 |
| 過往研究吸收 | 兩套球員編號 | 原本寫「掃過 data\ 底下全部 295 個封裝檔」,實際是 224。 |
那 295 混進了測試機上的兩個備份資料夾。跨頁數字稽核報 13 項分歧, 查完只有這 1 項是站上真的錯,其餘 12 項是稽核器自己的問題,分四類:措辭變體、把兩個不同的量當成同一個、 比對樣式抓太寬,以及「N 個版面檔」這個常數本來就不只一個值。 |
| 過往研究吸收 | 球員代號對照表 | 原本寫「守備位置 8/10、慣用手 0/2 命中,證據不足,不可照登」。 重驗後是守位 10/10、慣用手 2/2 與 3/3,全部可以照登。 | 抽字串的程式把長度小於兩個字元的字串丟掉了,
P、C、L、R、S
在那個方法裡永遠不可能命中。 |
| 過往研究吸收 | 圖片的像素怎麼排 | 這頁上線時說本站工具裡有兩格「每像素幾個位元組」寫錯
(0x6D 4 改 2、0x7F 1 改 3)。
上線後複驗又抓到第三格:0x7D 3 改 4。 |
拿程式碼註解當證據。連「我抓到幾個錯」這件事本身,第一次也少算了一個。 |
| 過往研究吸收 | 兩套球員編號 | 原本以為「叫 cNNN.fsh 的就是臉皮」,並據此寫「臉皮只有 894 個,沒辦法增加」。
王朝球衣那個封裝檔也用同一套檔名,122 個,其中 c116 在臉皮檔裡根本不存在。
894 的範圍改寫成「已經裝進 models.big 的臉皮」,
「沒辦法增加」降級成「出貨時沒有任何 901 以上的臉皮檔」。 |
把「檔名唯一」當成不用檢驗的前提。另外,「沒有」跟「不能有」是兩件事,後者本站沒測過。 |
| 過往研究吸收 | 資料檔總覽 | 原本寫「org.dat 的編號對不到 team.dat,是另一套編號系統,本站沒有解出」。
它就是同一串識別碼的十進位寫法,124 個非零的值全部對得上。 |
「對不到」通常不是「是另一套系統」,是「還沒換算過」。 十六進位與十進位是最常見的那一種。 |
| 過往研究吸收 | 為什麼加不了新球隊 | 原本把「美術編號 1 到 126 對應隊徽 l000 到 l125」寫成事實,改標推測。 |
差 1 是實測沒錯,但「遊戲是照這一欄去拿隊徽」沒有驗過。 |
| 過往研究吸收 | 檔案地圖 | 那張 data\ 樹狀圖少列了三個資料夾:datafile\、easo\、
igshapes\。其中 easo\ 有 519 個檔。 |
easo\ 與 igshapes\ 底下一個封裝檔都沒有,
而那張表數的是「封裝檔」不是「檔案」:用某個條件產生的清單,
會把不符合那個條件的東西變成看不見。
datafile\ 不適用這個解釋,它有一個封裝檔,是單純漏抄。 |
| 過往研究吸收 | 播報員為什麼不唸新球員 | 什麼改得動原本把球員專屬語音列為未解,理由寫「語音索引的資料結構還沒逆向出來」。 對應那一層是解得開的,真正解不開的是聲音編碼本身。結論不變,理由改對。 | 把兩層混成一層,寫得比實際情況悲觀。 |
| 上線前審查 | 大頭照 portrait.big | 原本寫「本站沒有解出編號與球員的對應關係」。已經解開了,球員資料檔第 16 欄就是那個四位數編號。 真正卡住的是把新圖壓縮回去。舊說法保留在頁面上當紀錄。 | 別頁已經推翻,這頁的說法過期了。 |
| 上線前審查 | 七頁引用名冊數字的頁 | 補上「這些數字量自本站測試機,你的名單不一樣,數字就會不一樣;不會變的是結構」。 | 站上對字型、音訊、動畫都有這個揭露,唯獨名冊沒有。而名冊正是測試機上被改最多的檔。 |
| 上線前審查 | 首頁以外的四頁 | 同一課,首頁叫「第 2 課」,另外四頁叫「第 1 課」。「第 1 課」「第 2 課」這種排序序號從其他頁拿掉,只有首頁排序; 「第 0 課」是前置條件不是排序,保留。 | 跨頁硬寫序號。首頁改順序,其他頁不會跟著變。 |
| 上線前審查 | 平安夜那天的建置 | 原本寫「894 個球員臉皮全部使用同一個著色器,沒有一個例外」。 實測像素格式有 4 個例外、內部標記有 1 個例外,改成「幾乎完全同規格」並寫出例外數。 | 全稱句只要有一個例外就整句垮掉。而且那句話不在該頁頁尾保證的範圍內。 |
| 上線前審查 | 三支已出貨的腳本 | 萬用工具把封裝檔檔頭的大小寫成了相反的位元組順序;換姿勢腳本的還原會找錯檔案; 診斷腳本只認得四種備份副檔名裡的一種,另外三種當成沒有備份。三支都修掉並補上回歸測試。 | 前面每一輪審查都漏掉,因為審查的單位是「頁」不是「操作」。 而工具自己還印「複驗通過」:寫入端改壞的東西,要由讀取端以外的檢查抓。 |
| 上線前總稽核 | 播報員語音 | 整份名單的覆蓋率表五個數字全錯,最大的差了 2.5 倍, 而且結論剛好講反:原本寫「三樣都沒有 62.8%」,實際是 11.9%。 | 查表的時候沒有補零。倉庫裡的檔名一律補零到四位(0216.fsh),
名單裡的號碼不補零(216),所以 1000 以下的球員全部被判成「沒有」。
同一個坑本站在另一課解釋過,自己又踩了一次。 |
| 上線前總稽核 | 播報員語音 | 原本寫「沒有人錄過他的名字,無論你怎麼設定播報員都唸不出來」。 EA 沒錄是對的,「沒有人錄過」不成立 —— 2008 到 2009 年台灣的模組玩家自己做了 23 個人的語音。 | 把「我手上的資料裡沒有」寫成了「不存在」。 而反例就躺在同一台機器的遊戲資料夾旁邊。 |
| 上線前總稽核 | 王朝存檔 | 原本寫「後半 100 萬個位元組,三十個存檔一模一樣」。 實際只比對了一組;30 個檔的 435 組全比之後, 有 104 組在那個範圍仍有差異。 | 從一組樣本推出全稱句。更巧的是站上剛好挑到 435 組裡最不利的取樣 —— 那兩個檔正好同屬後來才發現的那個四檔小群。 頁尾當時還寫著「差異分佈皆為量測 30 個存檔所得」。 |
| 上線前總稽核 | 大頭照 | 原本寫「7,542 / 7,542,沒有一個例外」。實際是 7,539 / 7,542,
有三個檔把 metal 少打了兩個字母。 |
少掉的兩個字母後面補了一組換行符號,所以長度完全不變, 光靠檔案大小抓不出來。這也是為什麼第一次數的時候沒發現。 |
| 上線前總稽核 | BIGF 封裝格式 | 同一頁上下兩張表用了不同的母體:一張是 295 個封裝檔, 另一張把使用者自己的備份複本也算進去變成 590 個, 同一群檔案的數量從 7 變成 14。 | 兩張表隔不到一行,讀者一眼就看得到矛盾。 換母體的時候沒有把兩張表一起換。 |
| 上線前總稽核 | 球衣模組 | 頁上那張圖原本是整張球衣貼圖,1X 與 2X 並排。 稽核發現兩半都可以裁下來無損還原成原始檔案, 而同一頁自己寫著「不提供這些檔案的下載」。 | 本站宣告的事跟本站做的事不一致。改成只截胸前標誌那一小塊(各佔 6.2%), 教學效果反而更好。 |
| 上線前總稽核 | 介面座標圖 | 「位置落在畫面內:絕對 99.3% 對相對 41.4%」—— 那一對數字用五種合理的判定條件都重現不出來。 | 寫了百分比卻沒寫「落在畫面內」怎麼判定。改成列出四種判定各自的數字, 結論反而更強:不管怎麼定義,絕對解讀都是相對的兩倍以上。 同一組數字也寫死在讀者會下載的工具註解裡,一併改。 |
| 上線前總稽核 | FEL 版面語法 | 群組欄位對照表的「子元素數範圍」五列有三列錯,因為同一欄混了兩種算法 (直接子元素 vs 全部子孫)。 | 統一成「直接子元素」並把定義寫進表頭。全站其他表格本來就是這個慣例。 |
| 上線前總稽核 | FEL 版面語法 | GG 指令「名稱含 FLASH / BLINK 者 87/267」只算了 FLASH, 而括號舉的兩個例子都是 BLINK。實際是 150/267。 | 把兩個條件寫在一起,卻只跑了其中一個。 |
| 上線前總稽核 | FEL 版面語法 | 「頂層只會出現四種指令」漏了每個檔結尾的 END:,實測是五種。 |
又一句可證偽的全稱句,而反例就在同一頁上面那段程式碼範例裡。 |
| 上線前總稽核 | 球場檔 | 「四十座球場共用一組設定」量不出來。實測掛同一組光源的是 44 座, 組成是夜間版 38 + 巨蛋 4 + 兩座只有白天版卻掛夜間光源。改成三十八座。 | 取了一個沒有對應邊界的整數。改完順手把三個例外寫出來。 |
| 上線前總稽核 | 藏起來的網站 | 會跳訊息框的行數寫 73,實際 78;「被註解掉」寫 26,實際 31。 | 搜尋時只找 alert(,漏掉 5 行寫成 alert ((中間有空格)的。
那 5 行全部是被註解掉的,所以後面兩列不受影響。 |
| 上線前總稽核 | 文字表 .LOC | 「畫面上每一句話都在這兩個檔裡」是全稱句,被本站自己另一節的 「第三套文字表」推翻。四處都改成「遊戲本體介面的文字」。 | 反例寫在同一個站上,只是在另一頁。 |
| 上線前總稽核 | 檔案地圖 | 「+ 24 個純文字 .dat」兩個標籤都錯:24 是「非封裝檔」的數量,
.dat 只有 19 個,其中 18 個才是純文字。 |
拿一個數量去配一個沒對應的標籤。 |
| 上線前總稽核 | 播報員語音 | 三種後綴加起來是 12,525,頁上寫 12,528,差的 3 筆沒有交代
(兩個沒後綴的,加上一個 3632.wav)。 |
總數對,組成沒對。 |
| 原版對照 | 關掉跑壘者速度 | 招牌教學要改的 fes_ingameinfobar.fel
不在 EA 原版的 ingame.big 裡。
三份未改動的安裝都是 44 個項目、都沒有它;本站測試機是 47 個。 |
本站一直以為 47 個版面檔是遊戲原本就有的。腳本原本還叫使用者「確認有沒有選錯檔」—— 他選對了,是原版沒有。已改成先看項目數再給診斷。 |
| 原版對照 | 原版與這台機器差在哪 | 站上好幾個當成「EA 原廠」引用的數字,其實是模組堆上去的: 臉皮 504 對 894、大頭照 1,487 對 6,638、 語音號碼 1,673 對 4,343。 | 沒有對照組的時候,手上那一份就是全世界。 知道自己缺對照組,跟每次寫字都記得自己缺對照組,是兩件事。 新增一頁當唯一基準,並在九個引用到這些數字的頁面加了統一提示。 |
| 原版對照 | FEL 版面語法 | 「原廠檔案裡有兩個錯字」(SSH/TTX)不成立。
原版全遊戲 329 個版面檔,三字母指令一個都沒有。 |
對照組:同一支掃描在原版讀出 9,556 行 TX:,證明掃描有效。
那兩個錯字是這份檔案被改過的過程中產生的。 |
| 原版對照 | BIGF 封裝格式 | 四處被原版推翻:BIG4「罕見」其實是 0 個;
*hdr.big「不是封裝檔」其實 13 個裡有 5 個是;
「資料區預設 128 對齊」其實 207 個裡只有 8 個;
+0x0C「資料起始位置」其實是目錄區結束位置。 |
這一頁的數字本來就量得很仔細,錯的是把「這一份的觀察」寫成「格式的規則」。 |
| 原版對照 | QFS 壓縮 | 「schedule.big 9 個裡 6 個壓縮 3 個純文字」——
原版那 9 個全部都是壓縮的。 |
那 3 個純文字,正好是本站換賽程年份那一課會動到的檔 —— 是被本站自己的工具改寫成未壓縮的。 規則沒錯,錯在拿一個被改過的檔當例子。 |
| 原版對照 | EA 自己的繁體中文版 | 本站一直以為中文化是社群做的。2005 年 2 月,EA 自己出過官方繁中版。 | 913 個共同檔案只有 65 個不同;中文被放進日文的槽位;字型檔脹大八倍。
新增一頁記錄,並訂正 loc-strings 原本「中文化模組會換掉這兩個檔」的說法。 |
| 原版對照 | 修改球員跑壘速度 | 腳本在剛安裝好的原版名冊上會把速度值寫進跑壘欄,而且不報任何錯。 | 兩份名冊的表頭都是 46 個具名欄位(編號 0 到 45)、欄位名稱集合也相同,但排列順序不一樣; 每一格的前綴編號跟著換,所以「檢查前綴等於 22」那道防線在原版上照樣通過。 兩道檢查用了同一個前提,加第二道不會提高安全性。 改成執行時從表頭找欄位名。 |
| 原版對照 | 圖片的像素怎麼排 | 0x7B 原本標「兩個倉庫裡一張都沒有,無法實測」。
在原版裡找到了:52,747 筆影像記錄裡有 9 筆,每像素剛好 1.000 個位元組。 |
它不在大頭照或臉皮那兩個倉庫裡,所以之前才找不到。 「找不到」只代表在我找過的地方找不到。內部排法仍未解。 |
| 原版對照 | 大頭照 | 三個把 metal 拼成 mel 的檔,原本當成 EA 的錯字記錄。
那三個檔在原版裡根本不存在;原版 6,370 個帶那句話的圖檔全部是 metal。 |
對照組:同一套查法在原版查得到其他檔名,不是查法失靈。 |
| 原版對照 | 模型與臉皮 · 大頭照 | 「890 張是規格、4 張是例外」方向反了。
原版 504 張臉皮 100% 都是那個「例外」格式(0x78 128×256);
原版 1,487 張大頭照也 100% 是 0x7D 128×128,一張 0x61 都沒有。 |
本站把手上這份的多數派當成了「規格」。 多數不等於原廠。是誰換的、什麼時候換的,本站不知道,標未解。 |
| 原版對照 | 大頭照 | a2653.fsh 那個「同名重複、1 位元組」原本當成檔案被動過的痕跡,
其實是 EA 自己的封裝慣例:原版 224 個封裝檔裡有 17 個是同樣結構,
四個條件全中、零例外。 |
兩筆把資料區從頭尾夾起來。「絕不整包重新打包」那條鐵律仍然成立,但理由換了: 不是因為有可疑殘留,是因為你不知道自己會弄掉什麼。 |
| 原版對照 | 模型與臉皮 | 那份洩漏了 Windows 使用者名稱的 faces.txt
原版一個 .txt 都沒有。 |
證實本站原本的推測:那份清單是重打包時塞進來的,不是遊戲自帶。 |
| 原版對照 | 播報員語音 | 「audioid = 2 就是不唸、1,337 人共用」整段是名冊作者的做法。
原版 1,300 個非零 audioid 全部不重複、零共用,而且 1 與 2 一次都沒出現過。 |
EA 的設計是「要嘛 0,要嘛獨一無二」。 對讀者的實用結論沒變,但歸屬要講對。 |
| 原版對照 | 球員代號對照 | 「四個位置合計 908 人、左投 0 人、零例外」—— 原版是 785 人、左投 1 人。 | 這條反而讓論證更強:785 個裡 1 個例外是 0.13%,跟其他守位的 21%–29% 差兩個數量級。 剛好是零反而比較像人為整理過的名單。 |
| ⭐ 舊的沒清完 | 三頁(課程地圖、 速查總表、本頁) | 三處改寫時把舊文字的尾巴留在原地:課程地圖有五行舊描述漏在標籤外面、
速查總表有一句話印了兩次(一份半形逗號一份全形)、本頁有一個沒有開頭的
</strong>。 |
六道檢查器全綠,是我自己讀原始碼時看到的。
既有的成對檢查只驗 <div>、<table>、<p>,
沒有驗行內標籤。錨點檢查保證得了「改對地方」,保證不了「舊的清乾淨」 ——
後者只有標籤配對數得出來。現在 <span>、<strong>、
<li>、<ul>、<ol> 都納入檢查,
加進去當下就抓到另外兩處。 |
| 2026-09-04 | 約 20 支腳本與它們的課頁 fel-toolkit · team-logo · fix-chinese · new-face · run-in-2026 · make-voice · swap-face · menu-text · make-a-player 等 |
96 條「說明對不上程式碼」一次修完
(下面這一列是彙總不是逐條:96 條分散在 20 個檔、
合計 578 處文字改動,逐條列出來會讓這張表變成三倍長)。 兩個代表性的例子:換球隊隊徽那一課寫「原版 132/132、本站測試機 132/132, 零例外」,實際測試機是 126/132,六個例外是 l008 l012 l035
l056 l065 l104;
介面萬用工具寫守備攝影機的欄位名稱表在第 9,216 行,
那只對散裝的總設定檔成立,封裝版是第 8,516 行。 |
同一個根因:把一台機器、一種檔案版本的數字寫成通則。 這 96 條是 2026-08-30 替 29 支腳本補說明那一輪就被覆驗指出來的, 但說明先上站了、覆驗結果沒消化,順序是反的。 這一次全部重驗(96/96 仍成立)之後才修。 兩條代表性的訂正本站都自己重跑量過才寫。 |
一再重複的三種錯
上面這些條目裡,有三種錯是重複犯的。
一、「我找過了,沒有」,但工具本身是壞的
抽字串的程式丟掉單字母,所以報「找不到單字母」; 文字搜尋對二進位檔會靜默失效,所以報「全部 0 命中」; 用相鄰像素差當檢查器,遇到臉皮那種格式會選錯邊,誤讀的分數比正解還好看。
任何「我找過了,沒有」的宣稱,都要先證明「我找得到一個已知存在的東西」。 這條規矩是被同一類錯誤逼出來的。
二、清單會讓不符合條件的東西整個消失
數封裝檔的表格,把沒有封裝檔的資料夾整個吃掉,包括那個有 519 個檔的; 數字稽核器報 13 項分歧,其中 12 項出在稽核器自己(同一件事的措辭變體、 把兩個不同的量當成同一個、比對的樣式抓得太寬),差點把唯一那項真的錯埋掉。
表格上寫「N 個」的時候,要說清楚數的是什麼。 檢查器報一堆紅燈的時候,先驗檢查器。
三、把「還沒查」寫成「查不到」
「對不到 team.dat,是另一套系統」,其實只是還沒把十六進位換成十進位;
「語音索引沒逆向出來」,其實是把可解的那層跟不可解的那層混在一起講。
寫「未解」比寫錯安全,但寫成「未解」不等於就誠實了: 把沒查的事情寫成查不到的事情,一樣是錯的。
playerattrib_platediscipline 這種欄位 ——
不知道那是什麼的人,改了也不知道自己改了什麼。
76 條術語列成三欄對照,而且每一欄的證據強度不同、頁面上有標: 遊戲裡的英文(名冊欄位名 46 + 29 欄與 EA 自己的代號表,量出來的)、 EA 官方繁中(拿剛安裝好的英文版與官方繁中版兩份字串表, 同一個字串編號兩邊各讀一次配出來的,也是量出來的)、 台灣棒球圈的講法(慣用語不是量測,明講)。
⭐ 配對的過程抓到官方中文有十一個會誤導, 最要緊的是
Earned Run Average 譯成「得分率」——
它其實是防禦率,算的是自責分,而且數字越小越好。
其餘像 Range 譯「距離」(實為守備範圍)、
Movement 譯「動作」(實為球的尾勁)、
Bats 譯「打擊」(實為左打右打)——
照著官方中文理解會改錯欄位,所以單獨列一節。
名詞小教室同步加 18 個棒球詞(34 → 52), 挑的是讀者在正文裡可能卡住的那些;全壘打、安打這種每個球迷都懂的不標, 標了只是雜訊。導覽列加第 10 項,375px 實測整頁不橫向捲。第 112 頁。
二、新頁上線的順序
這一節原本逐批記著每一頁是什麼時候、用什麼方式做出來的 —— 哪一批做了什麼、內部覆驗抓到什麼、哪些是後來決定改掉的。 2026-08-30 把它整段移到線下了。
為什麼移走
那一節記的是怎麼做出來的,不是做出來的東西對不對。 前者是工作紀錄,對讀者沒有用;後者才是上面「一、訂正」那一整節, 那個留著 —— 本站寫錯過什麼、怎麼發現的、怎麼改的, 是你判斷要不要相信這個站的依據。
被移走的是內部覆驗的規模與流程用語。 它們不影響任何一課的正確性,也不影響上面每一條訂正的可查證性 —— 每一條訂正都寫著「量到什麼」,你可以自己重跑。
還沒關掉的
站上目前有 180 個小標籤寫著「未解」「推測」「未確認」「未驗」「未驗證」 「未實機驗證」「仍未解」這七種字樣。這個數字只數標籤, 內文裡同樣意思的句子沒有算進去。 (同一種樣式的標籤全站共 245 個。另外 65 個是字樣不在那七種之內的同款標籤, 裡面有「推論」「半解」這類程度標記,也有「看名字推測」「不可照登」這種 同樣是誠實邊界、只是沒用上面七種字樣的。這是照字樣切的,不是照意思切的。)
它們不是待辦事項,是邊界:標著「推測」的地方,代表本站看得出那樣寫很合理, 但沒有量到足以寫成定論的證據。
這些標記會隨著新的量測結果減少,也可能因為重驗而增加。
上面那張表裡就有四條是把原本的肯定句往回收的:TS 改標未確認、
美術編號改標推測、「臉皮沒辦法增加」改成「出貨時沒有 901 以上的檔」、
「沒有一個例外」改成「幾乎完全同規格」。方向跟直覺相反。