速查 › 動畫 anims.big
動畫 anims.big
投球、揮棒、守備、跑壘的每一個動作,全部在一個 8.5 MB 的檔案裡。 這一區有個很特別的地方:730 個項目裡有 244 個是純文字,其餘是標準格式的目標檔 —— 所以你電腦上現成的工具就讀得動。
這一頁講的是原廠檔案
本站測試機的 anims.big 檔案日期是 2005 年 1 月,
沒有被改過(判斷方法見模型那頁)。
所以這頁描述的是 EA 出貨時的樣子。
先看規模
| 項目 | 數字 | 備註 |
|---|---|---|
| 檔案大小 | 8.5 MB | data/anims/anims.big |
| 項目數 | 730 個 | 244 個 .axt + 243 個 .ord + 243 個 .orl |
| 動作庫(bank) | 243 個 | 每個 bank 三個檔 |
| 動畫檔總數 | 2,024 個 | 由建置清單加總得出;其中 sd_dugupset_int02_03a 被兩個庫各列一次,不重複的名字是 2,023 個 |
| 壓縮 | 0 個 | 這個封裝檔完全沒有壓縮,跟遊戲裡其他地方都不一樣 |
上面每個數字都是把 anims.big 現場打開數出來的,不是引用他人資料。
多出來的那一個檔
244 個 .axt 對 243 個 .ord,多出來的叫 Banklist.axt。
它只有 42 個位元組,內容是一行字:
CLOSE_UP DEF_BANK FACIAL HANDBANK MIDDLE
243 個 bank 裡,只有這 5 個被列在清單上。 實測這 5 個正好就是動畫數量最多的前 5 名,一個不差。 未確認 但清單的用途是什麼,本站沒有查出來。
.axt:直接就是純文字
不用解壓、不用工具,記事本打開就能看(244 個 .axt 加起來只有 156,755 個位元組,佔整包的 1.75%):
[Version 0.03]
1103890691 Dec 24 2004 04:18:11 這個 bank 何時打包
[Bank]
CLOSE_UP bank 名稱
[Directory]
D:/mvp2004/artwork/anims 當年的來源路徑
[Files] 84 這個 bank 裝了 84 個動畫
u_readyidle 1103876064 Dec 24 2004 00:14:24
sb_strike04 1103875954 Dec 24 2004 00:12:34
sb_strike03 1103875954 Dec 24 2004 00:12:34
...
檢查 243 個 .axt | 結果 |
|---|---|
| 版本標記 | 全部是 0.03 |
| 來源目錄 | 全部是 D:/mvp2004/artwork/anims |
| 打包時間範圍 | 2 分 36 秒 |
243 個 bank 全部在 2 分 36 秒內打包完(本地時間 04:17:57 到 04:20:33)。 而裡面的動畫檔本身是四個小時前編譯的 —— 這段時間差的故事在平安夜凌晨的兩次建置。
最重要的發現:.ord 跟 .orl 是同一個檔被切成兩半
先看 .ord 的開頭四個位元組:
7F 45 4C 46 = .ELF ← 這是標準的目標檔格式,不是 EA 私有格式
但如果你直接拿 ELF 工具去讀它,會失敗。原因是檔頭裡寫著
「section 表在第 342,176 個位元組」,而整個 .ord 只有 327,776 個位元組。
指到檔案外面去了。
把兩個檔接起來就對了
.ord 的長度 327,776 + .orl 的長度 14,640 = 342,416。
342,176 落在這個範圍內。
本站把 243 個 bank 全部接起來測試: 243 / 243 都變成可以正常解析的 ELF,section 名稱全部合法,一個例外都沒有。
接起來之後,裡面是這樣:
| section | 裝什麼 | CLOSE_UP 的大小 |
|---|---|---|
| .data | 動畫資料本體 | 327,712 |
| .shstrtab | section 的名字 | 48 |
| .strtab | 符號的名字 | 80 |
| .symtab | 符號表 | 64 |
| .rel.data | 重定位資料 | 14,208 |
切割點是有規則的
.ord 的長度,剛好等於 .data 這一段結束的位置。
243 個 bank 全部符合,零例外。
換句話說,EA 把一個完整的目標檔從資料結束的地方切開:
前半段(資料)叫 .ord,後半段(各種表格)叫 .orl。
這對你有什麼用
接起來之後,你電腦上現成的 ELF 工具就讀得動, 不必自己寫解析器。想看某個 bank 有哪些符號、資料多大、重定位表多長, 用系統內建的工具就有答案。
這在逆向裡是難得的好運:大部分遊戲資料都是廠商自己發明的格式, 這裡卻是業界標準。
ELF 檔頭透露的事
| 欄位 | 243 個 bank 的值 | 意思 |
|---|---|---|
| e_type | 1 | 可重定位目標檔(還沒連結成執行檔的中間產物) |
| e_machine | 8 | MIPS 架構 |
| section 數 | 6 | 243 個全部一樣 |
| 符號數 | 4 | 243 個全部一樣 |
每個 bank 的四個符號裡,有兩個是看得懂的:
__EAGL_TOOLLIB_VERSION:::EAGL_TOOLLIB_VERSION-4
__AnimationBank:::CLOSE_UP
這裡要誠實
e_machine = 8 在 ELF 規格裡就是 MIPS,這是讀出來的事實。
至於「為什麼 PC 版的遊戲資料是 MIPS 架構的目標檔」—— 合理的猜想跟同期主機平台有關, 推測 但本站沒有證據,不寫成定論。
整個遊戲有多少這種檔
上面講的是 anims.big。本站把原版全部 207 個封裝檔、29,816 個項目
逐一解開,看哪些的開頭是 7F 45 4C 46:
| 封裝檔 | 是 ELF 的項目 | 裝什麼 |
|---|---|---|
| data\models.big | 549 | 球員模型 |
| data\anims\anims.big | 243 | 動作庫(本頁上面在講的) |
| data\stadium\*.big | 87 × 31 = 2,697 | 球場 |
| data\misc\miscmod.big | 14 | 雜項模型 |
| 合計 | 3,503 |
87 個球場封裝檔,每一個剛好 31 個
零變異。不是「大部分是 31」,是 87 個檔全部剛好 31, 一個 30 或 32 都沒有。
87 是檔數不是場地數:檔名去掉 day/nite 之後只剩
58 個場地代號,其中 29 個日夜各一份、29 個只有一份
(astrdome、metrdome、olymdome、tropdome
這幾個巨蛋就在後面這半),29 × 2 + 29 = 87。
球場之間差很多 —— 有巨蛋、有露天、有 1900 年代的老球場 —— 可是模型檔的數量一模一樣。 這代表 EA 有一套固定的球場模型清單,每個檔照著填。 哪 31 個各是什麼,本站還沒對照出來
3,503 個裡面,只有 14 個是完整的
本頁上面說 .ord 的段落表指到檔案外面去,要接上 .orl 才完整。
把這個判斷套到全部 3,503 個身上:
| 段落表在哪 | 幾個 | 意思 |
|---|---|---|
| 指到檔案外面 | 3,489 | 要接上另一半 |
| 落在自己檔內 | 14 | 本身就是完整的 ELF |
那 14 個全部在 data\misc\miscmod.big 裡,
而那個檔的 ELF 項目剛好就是這 14 個 ——
換句話說:miscmod.big 裡 100% 是完整的,其他所有封裝檔 0%。
miscmod.big 裡那 14 個
aple.o bern.o bli1.o bli2.o lawn.o moon.o obj1.o
obj2.o obj3.o obj4.o pla1.o pla2.o roof.o tran.o
看名字像是場景裡的雜物(草皮、月亮、屋頂、植物之類), 但本站沒有把它們畫出來對照過,所以只講檔名長什麼樣。 內容未驗
這 14 個的價值在哪
它們證明「切成兩半」不是這個格式的規定。 同一款遊戲、同一個工具鏈、同樣是 MIPS 目標檔, 這 14 個就是整個放進去的。
所以拆開 .ord/.orl 這件事,
是 EA 針對某些用途做的選擇,不是格式逼他們這麼做。
為什麼只有這一個檔例外,本站沒有答案
3,503 個全部是 MIPS
e_machine 這個欄位在 3,503 個裡面全部都是 8,
一個例外都沒有 —— 不只 anims.big 的 243 個,
球場、球員模型、雜項模型也全是。
上面那段「為什麼 PC 版的資料是 MIPS」的疑問, 範圍因此從動作庫擴大到整個遊戲的模型資料。 答案還是未解。
243 個 bank 怎麼分
| 名稱 | bank 數 | 動畫數 | 說明 |
|---|---|---|---|
| DEF_BANK | 1 | 1,052 | 一個 bank 就裝了全部 2,024 個動畫的一半以上,3.08 MB |
| CLOSE_UP | 1 | 84 | 特寫鏡頭 |
| MIDDLE | 1 | 50 | |
| FACIAL | 1 | 48 | 表情 |
| HANDBANK | 1 | 16 | |
| SIGB#### | 66 | 536 | 打擊與投球的姿勢庫。SIGB 檔名裡是 b_ 開頭,
SIGP 則對應投球 命名佐證 |
| SIGP#### | 59 | ||
| N 開頭各系列 | 113 | — | NFHA/NDMGR/NBDECK 等,多數只有 1~2 個動畫 |
125 個專屬動作庫,多數掛著球員名字
SIGB 66 個加 SIGP 59 個 = 125 個專屬 bank,共 536 個動畫檔。
(2026-09-05 訂正:這一格原本寫「125 位球員有自己的動作」,那是錯的。
把 125 個庫的動作檔名全部列出來看,通篇掛著球員名字的是 102 個;
另外 23 個裝的是通用姿勢與投法 —— SIGB0000–SIGB0006 是共用的打擊擺動
(b_gwiggle、b_bwiggle、b_clwiggle 這種,
其中 SIGB0000 裡混了一個 b_jedmondshrtofirst_l)、SIGP0000–SIGP0009
是上肩/側投/下勾/蝴蝶球這類投法通稱(p_stlosubmarinelo、p_loloknucklelo)、
再加 cooperstown01–03 的泛用填充各兩組。)
打開其中最大的那個(SIGB0014,15 個動畫)會看到這些檔名:
b_ichirowiggle、b_ichirotobpreswing、b_ichiroswinglos。
連準備動作的小晃動都單獨做了一個。
能改到什麼程度
| 你可能想做的事 | 現況 |
|---|---|
| 知道某個 bank 裝了哪些動畫 | 完全可改 .axt 是純文字,直接讀 |
| 用標準工具檢視 bank 結構 | 完全可改 接起 .ord+.orl 即可 |
| 改動作本身(揮棒姿勢、投球姿勢) | 未解 .data 裡的動畫資料本站未解讀 |
| 幫新球員加專屬動作 | 未解 同上,且需要處理重定位表 |
誠實邊界
本站解出的是外層容器:bank 怎麼組織、檔案怎麼切、符號叫什麼。
.data 裡面那 327,712 個位元組實際代表什麼骨架、什麼影格,
本站沒有解讀。
所以目前這一頁的價值是「看得懂結構」,不是「改得動動作」。
動作的名字讀得出來
每個動作庫(.axt)都是純文字,裡面就是一份動作清單。
而這份清單自己會驗算:
每個庫都先宣告自己有幾個動作
[Files] 6
b_jeterpractice 1103875574 Dec 24 2004 00:06:14
b_jeterstepfwd 1103875574 Dec 24 2004 00:06:14
b_jetertostance 1103875574 Dec 24 2004 00:06:14
...
[Files] 後面那個數字,跟底下實際列出來的行數比對:
243 個動作庫全部相符,零例外。
第 244 個 .axt 是上面講過的那個清單檔,
它沒有 [Files] 這一行,所以不參與這個檢查。
動作名字的前綴
把 243 個庫裡全部 2,024 個動作名字攤開, 會看到它們都帶著一個字母開頭的前綴:
| 前綴 | 幾個動作 | 推測是什麼 |
|---|---|---|
| f_ | 592 | 守備 |
| b_ | 571 | 打擊(下面有直接證據) |
| r_ | 344 | 跑壘 |
| s_ | 151 | — |
| p_ | 139 | 投球(下面有直接證據) |
| c_ | 48 | — |
| u_ | 19 | — |
| h_ | 16 | — |
| 合計 | 1,880 | |
| 兩個字母的前綴 例如 sb_ |
144 | — |
| 總計 | 2,024 | 跟上面量到的動作總數一致 |
推測
「守備/打擊/跑壘」是從字母猜的(field、bat、run)。
但 b_ 與 p_ 這兩個有直接證據。
兩個前綴可以被完全證實
換打擊姿勢那一課量到:
打擊姿勢的編號對到 SIGB 開頭的庫、投球姿勢對到 SIGP。
把那些庫打開看裡面的動作前綴:
| 庫 | 幾個 | 裡面的動作前綴 |
|---|---|---|
| SIGB0000–SIGB0065 | 66 | 全部是 b_ |
| SIGP0000–SIGP0058 | 59 | 全部是 p_ |
125 個庫,零例外。
打擊姿勢庫裡只有打擊動作、投球姿勢庫裡只有投球動作 ——
b 是 bat、p 是 pitch,這兩個不是猜的。
244 個庫分成兩種
| 庫名開頭 | 幾個 | 是什麼 |
|---|---|---|
| SIGB/SIGP | 125 | 打擊與投球的姿勢庫 —— 66 個打擊姿勢 + 59 個投球姿勢 |
| 其他 41 種名字 DEF_BANK、FACIAL、HANDBANK、 CLOSE_UP、N 開頭的一批… |
119 | 共用動作 |
| 合計 | 244 | 其中一個是清單檔 |
本頁上面量到的「125 個專屬 bank」, 在換姿勢那一課被從完全不同的方向再量了一次 (66 + 59),兩邊撞到同一個數字。
📌 重點整理
- 一句話 8.5 MB 的
anims.big裝了 243 個動作庫、2,024 筆動畫清單(不重複的名字是 2,023 個),而且完全沒有壓縮;它 730 個項目裡有 244 個是記事本就讀得懂的純文字,其餘是業界標準的 ELF 目標檔,你電腦上現成的工具就讀得動。 - 最重要的發現
.ord開頭是7F 45 4C 46(.ELF),但檔頭寫「section 表在第 342,176 個位元組」,而整個.ord只有 327,776 個位元組。接上.orl的 14,640 就是 342,416,243 / 243 全部變成可正常解析的 ELF,而且.ord的長度剛好等於.data結束的位置,零例外。 - 規模數字 730 個項目 = 244 個
.axt+ 243 個.ord+ 243 個.orl。DEF_BANK一個庫就裝了 1,052 個動畫(3.08 MB),超過總數一半;SIGB66 +SIGP59 = 125 個專屬動作庫(其中 102 個的動作檔名帶著球員名字,另外 23 個是通用姿勢與投法),共 536 個動畫。 - 整個遊戲一起看 207 個封裝檔、29,816 個項目裡有 3,503 個 ELF(球員模型 549、動作庫 243、球場 87 × 31 = 2,697、雜項 14),
e_machine全部是 8(MIPS),一個例外都沒有。87 個球場封裝檔(58 個場地代號,日夜分開算)每一個剛好 31 個,零變異。 - 只有 14 個是完整的 3,489 個要接上另一半,那 14 個全部在
data\misc\miscmod.big,而那個檔的 ELF 項目剛好就是這 14 個。所以「切成兩半」是 EA 針對某些用途做的選擇,不是格式規定。 - 兩個前綴不是猜的
b_571 個、p_139 個。SIGB那 66 個庫裡全部是b_、SIGP那 59 個庫裡全部是p_,125 個庫零例外,所以b= bat、p= pitch。f_、r_那幾個仍然只是從字母猜的。 - 每個庫自己會驗算
.axt的[Files]宣告數跟底下實際列出的行數,243 個庫全部相符。243 個庫版本全是0.03、來源目錄全是D:/mvp2004/artwork/anims,整批在 2 分 36 秒內打包完,而裡面的動畫本身是四個小時前編譯的。 - 本站沒驗的
.data裡那 327,712 個位元組實際代表什麼骨架、什麼影格,本站沒有解讀,所以改不動動作本身;42 個位元組的Banklist.axt只列 5 個名字,用途沒有查出來;「為什麼 PC 版的資料全是 MIPS 目標檔」只有猜想沒有證據;87 個球場封裝檔裡那 31 個模型各是什麼、miscmod.big那 14 個檔裝什麼,都只看了檔名,沒有畫出來對照過。
接下來
- 平安夜凌晨的兩次建置 —— 這些時間戳背後的故事
- 五秒看穿一個檔案 —— 自己確認
.ord真的是 ELF - 什麼改得動、什麼還不行 —— 完整的現況分級