FF8CG文件格式和跳CG解决方法
2003-06-12 16:41 | bsp
有鉴于绝大多数玩家(这么说不过分吧^-^)的FF8盘都有跳CG问题,希望能从CG文件的格式入手,找到
一个一劳永逸的解决方法.
声明:本文只讨论PC版的光盘文件,PS版的FF8.IMG偶还没有搞清楚-_-b.1.pak和bik文件的格式(对修改苦手的玩家完全可以跳过这部分)
FF8的CG文件(.pak)打包存放在4张光盘的disc1.pak到disc4.pak文件中,将它们拷贝到硬盘上再用
十六进制编辑器打开(我用的是UltraEdit,WinHex也可以),文件个头较大,耐心等一会.当然直接从光盘
打开也可以,尤其是拷贝不过去的时候.十六进制编辑基本知识(高手跳过):文件内容按地址分字节存放,低位在前,高位在后,如12h,3fh,67h
代表673f12h=6766354d(h结尾表示十六进制数,d结尾表示十进制数)..pak文件的结构很有规律,3个文件一组,一组一组排列:一个.bik文件的索引文件和.bik文件A和B
(分别是一段CG的高低分辨率版本).见下图:索引文件:
前3个字节是文件的标志,依次是46h,38h,50h,ASCII码是F8P.
下3个字节为??h,00h,00h,作用不明(??表示不定,通常为f7h).
下2个字节(不妨定义为length,下面多处用到)是接下来连续几长段字节的个数-1(比如disc1.pak中这
里是45h,01h也就是length=145h=325d).
连续的length+1个段字节:作用不明(与接下来的两个.bik文件密切相关),每段44d(2ch)个字节(比如
disc1.pak这里就是146h=326d个段),段尾的3个字节固定为45h,4eh,44h(ASCII:END)..bik文件:
由于没有明确的偏移地址指向它俩(.bik文件A和B),起始位置可以通过计算得到(比如disc1.pak的第
一个.bik文件,也就是学园的高分辨率CG的起始地址=8h+146h*2ch=3810h).
FF8的CG是标准的bik文件格式,而且没有压缩(接下来的叙述都是用.bik文件的地址作起始地址,用软
件提取出来看更清楚省劲一些).
.bik文件头由56个字节组成:
前4个字节是文件的标志,依次是42h,49h,4bh,66h,ASCII码是BIKf.
下4个字节是文件的长度,不过不包括这前8个字节.
下4个字节是采样(sample)的个数,共计length+1个.
下4个字节作用不明.
下4个字节仍然是采样个数.
下4个字节是视频图象的宽度,高分辨率是80h,02h,00h,00h(280h=640d),低分辨率是40h,01h,00h,00h(140h=320d).
下4个字节是视频图象的高度,高分辨率是c0h,01h,00h,00h(1c0h=448d),低分辨率e0h,00h,00h,00h(e0h=224d).
(注意并不是480和240,这就解释了为什么游戏截图的上下各有16个或8个象素高的黑边).
下4个字节是每秒的帧数(FF8的CG固定为0fh,00h,00h,00h,15帧/秒).
下16个字节固定为01h,00h,00h,00h,00h,00h,00h,00h,01h,00h,00h,00h,00h,1ch,02h,00h,作用不明.
下2个字节是声音的采样率,固定为44h,ach(ac44h=44100d,是不是有点眼熟啊).
最后6个字节固定为00h,e0h,00h,00h,00h,00h,作用不明.
接下来是采样的偏移地址表,偏移地址的个数为length+1个,表中每个偏移地址占4个字节,注意是.bik
文件内的偏移地址而不是.pak文件的,由于没有长度信息,每个采样的长度就由两个偏移地址之间的差值给
出.
最后就是这一大堆采样了,每个的位置都由上面的偏移地址表指定,一般最后一个偏移地址指向.bik文
件的末尾.采样的内容就没什么好说的了,太长,而且看不懂.*_*
一组里的.bik文件A与.bik文件B内容几乎一样(比如采样个数,每秒帧数等),不同在文件长度,图象宽
度和高度上,当然那一堆采样还是差别很大DI.2.跳CG的解决方法
由上面的分析可以知道(没有人被偶讲晕吧^-^),每个.bik文件都是由"BIKf"开头的,所以只要查找字
符串"BIKf",再把两个串之间的部分拉出来成一个新文件,改一下扩展名就行了(索引文件完全可以忽略,事
实上提取CG的软件Mrip就是这个原理),由于文件太大,就用Mrip代劳好了,本站下载区里有.我构想的解决方法很简单:请CG不跳的网友把提取出的CG片段放到网上,然后检查一下你的哪段CG跳出
就下载对应的那段再写回.pak文件就行了,这样不用一次下载整个.pak文件,节省不少时间.最后就是写入的问题,这个在十六进制编辑器里简单的复制粘贴就可以完成,当然也可以用程序写入,
关键是对应的CG在.pak文件中的位置,为了方便,我把每段CG的名称(这里用的是Qhimm的FF8FMV里的名称)
和在.pak文件中的偏移地址(十六进制)列在下面(已经过校验,理论正确):
CG名称 | 索引文件 偏移地址 | bik A 偏移地址 | bik B 偏移地址 |
disc1 | |||
Balamb Garden | 0 | 3810 | 5818a4 |
Quistis Trepe | 7e3960 | 7e5b9c | b4de60 |
Zell Dincht | cc18e8 | cc349c | f704ac |
Destination: Dollet | 10c8b4c | 10d4864 | 2392dd8 |
Selphie Tilmitt | 2bc5d1c | 2bc8218 | 2f62b9c |
The Comm. Tower | 30f06ac | 30fc62c | 441eb6c |
X-ATM092 and a Car | 4ca1550 | 4ca1c64 | 4d5a9d8 |
Escape from Dollet | 4daf63c | 4dbb094 | 6083a4c |
A Shooting Star | 68f59d0 | 68f9188 | 6d7d954 |
Dancing with Rinoa | 6f77cb4 | 6f86bd0 | 86961d4 |
Speeding Train | 9061810 | 9065ba4 | 9742850 |
A Stolen Wagon | 9a5fd5c | 9a64d50 | a27f298 |
(Static Transition) | a62a3c0 | a62ab84 | a6e252c |
(Tilted Camera) | a72bcd0 | a72bf6c | a768f28 |
Galbadia Garden | a7815bc | a7853a4 | ad98458 |
Irvine Kinneas | b03c618 | b03f9b0 | b53e264 |
Deling City | b7604a4 | b761e74 | ba07d00 |
Sorceress Edea | bb3f834 | bb49134 | ca60450 |
Edea's Speech | d21c860 | d21e93c | d5658d8 |
Huuuge Crowd | d7164dc | d7179b0 | d925d50 |
Lively Statues | da0c6e8 | da10bdc | e0e0800 |
Edea's Parade | e3dd548 | e3e63cc | f2305a0 |
More of the Parade | f89ec2c | f8a0470 | fb1766c |
Seifer Looking Happy | fc3646c | fc3c2fc | 105c24a4 |
20:00... It's time | 10a09a64 | 10a0fd40 | 11404fe4 |
Trapped! | 1187e858 | 1187feb8 | 11ad3598 |
Take the Shot! | 11be9bc4 | 11bead28 | 11da0768 |
Squall Steals a Car | 11e5fa40 | 11e62ee0 | 123b3e88 |
The Sorceress' Knight | 1261998c | 1261e3d4 | 12d68684 |
Edea's Magic | 13093db0 | 1309bea0 | 13d80110 |
Opening (Liberi Fatali) | 1433ccd0 | 1435bec4 | 172f2108 |
Disc 2 | |||
Prison Elevator | 0 | 4de4 | 7c5710 |
Desert Prison | b33d14 | b36ce4 | fdbac4 |
Hazardous Bridge | 11d2aa0 | 11d6360 | 1785e7c |
Now That's a Drill | 1a0fe98 | 1a14bf8 | 21ed4e4 |
Missile Launch | 257aab0 | 257c798 | 2861b18 |
Self Destruct | 29acca4 | 29af250 | 2d87fd0 |
(Just the 'Boom') | 2f4a228 | 2f4b410 | 3119aac |
More Missiles | 31ea288 | 31ebe10 | 34b2304 |
Target Acquired | 35f1dd8 | 35f5f5c | 3c937a8 |
Shelter Mechanism | 3f8ecf4 | 3f913d4 | 438d11c |
Garden Transformed | 4561500 | 4565c88 | 4ca6594 |
Missiles Inbound | 4fef478 | 4ff5c24 | 5a6ed20 |
It's a Hit! | 5f27990 | 5f2b32c | 650e57c |
No Longer in Danger | 67bf98c | 67c3b10 | 6e4a7e0 |
Rinoa in the Wind | 712f39c | 7134ee8 | 7a43d7c |
Close Call | 7e427f0 | 7e43c98 | 8062d70 |
Garden put to Sea | 815cf0c | 815e8b0 | 83fef90 |
Drifting Away | 85339dc | 85353ac | 87cdda8 |
White SeeD Ship | 88f8220 | 88fadfc | 8d6bc7c |
Crashing into FH | 8f6e218 | 8f72bb0 | 96ed220 |
Fisherman's Horizon | 9a52960 | 9a54330 | 9cdf81c |
Galbadia's Coming | 9dfcb10 | 9dfd7fc | 9f52678 |
Through the Woods | 9ff0310 | 9ff17b8 | a1fa290 |
Seifer Again | a2ddd50 | a2e0e54 | a7cdad0 |
Motorcycles...? | aa02a88 | aa06348 | afd3af8 |
Rinoa's in Trouble | b27b874 | b27ec0c | b7a8510 |
Galbadia Passes by | b9f5854 | b9f6cfc | bc0b104 |
They're Turning | bcfa5f4 | bcfb2e0 | be43af0 |
Head-on Collision | bed5114 | bed65bc | c0eab5c |
Jetpacks | c1da1d0 | c1e18c8 | cdc0d04 |
Another Collision | d306a80 | d307f28 | d51fce4 |
Payback Time | d612a70 | d6141ac | d871bc8 |
Escape Hatch | d985c60 | d98949c | df2a380 |
Saving Rinoa | e1abf80 | e1b8b60 | f60a380 |
Disc 3 | |||
De-cloaking Esthar | 0 | 21e4 | 37b0d4 |
Speed-lifts | 512f9c | 5180c4 | cef670 |
Leaving the City | 107cdb4 | 107dfc8 | 125f030 |
Entering the City | 133f88c | 1340aa0 | 151ee94 |
Leaving the Palace | 15fce80 | 15fe0c0 | 17caf10 |
Entering the Palace | 1895004 | 1896244 | 1a62d90 |
Taking the Elevator | 1b2cc38 | 1b2df28 | 1d184f8 |
Lunar Gate | 1df61f4 | 1df958c | 22ee308 |
Leaving the Planet | 251fad8 | 25207c4 | 2665738 |
Lunar Base | 26f34ac | 26fb1d4 | 3364b54 |
Lunar Monsters | 38dccc8 | 38de170 | 3af7998 |
Closer Look | 3bec260 | 3bef88c | 415ebc4 |
Lunatic Pandora | 43cce50 | 43cf530 | 47b2f08 |
Tear's Point | 496ed00 | 497560c | 53dee7c |
The Probe Destroyed | 5871428 | 587263c | 5a482b8 |
Adel Swallowed | 5b1dc38 | 5b20814 | 5f71794 |
Escape Pod | 6160484 | 6162c98 | 656ff94 |
Running Out of Air | 6744554 | 67454d4 | 68d2e58 |
No Time Left | 6984c14 | 6985b94 | 6b0fc68 |
Ran Out of Air | 6bbe184 | 6bbfd64 | 6e5b4e0 |
The Rings | 6f7f27c | 6f821c8 | 742f7e0 |
Backup System | 763d768 | 7640790 | 7a8e930 |
More Lunar Cry | 7c73e74 | 7c74df4 | 7e07dc4 |
What's That? | 7ebf258 | 7ec14c0 | 8226068 |
The Ragnarok | 83a27ac | 83a8ed4 | 8dc1404 |
Open the Hatch | 9220bc4 | 92210f4 | 92a9c3c |
Break the Seal | 92e87c4 | 92ece44 | 9a0f044 |
Attacking Pandora | 9d4d920 | 9d4ef80 | 9f9eb80 |
Shipping Off Adel | a0b1154 | a0b51fc | a7435a8 |
Breaching Pandora | aa3ba38 | aa3fe24 | b132368 |
Adel Enters Pandora | b460330 | b466ea4 | bf18340 |
The Lunar Cry | c3d389c | c3de3a8 | d4fedf0 |
Disc 4 | |||
Adel Seizes Rinoa | 0 | 4310 | 6c3f84 |
Time Compression | 9cba80 | 9d9318 | 1f828a0 |
Ultimecia Castle | 2927b9c | 292aca0 | 2e08b94 |
Ultimecia Herself | 302e890 | 3030f44 | 3411520 |
Ending (1st half) | 35cc698 | 35fb1f0 | 7dc4b0c |
Final Credits | 9cc83d8 | 9ce92ac | b7a47a8 |
Ending + Credits | c602654 | c64e920 | 13cdf734 |
用程序来做这些事更省心,点这里下载(很简单的小玩意,源代码就不帖了).
有些玩家的光盘可能是坏的,拷贝的过程中就会报错,而且直接打开看到的内容也不全(我的disc2就是
),这时可以用软件把文件提取出来,我用的是IsoBuster,其他的如WinIso只要好用就行.
3.用BinkPlay.exe播放CG
BinkPlay本站有下,把.bik文件拖到它上面就可以了.不过这样用的是默认的参数,要自定参数的话在
命令行或快捷方式里输入,以下是参数的意义(时间很仓促,翻译肯定有错误的地方^-^):
格式:BinkPlay <文件1 文件2 ...> [/参数]:
/P | 将整个Bink视频预读入内存 |
/L## | 循环播放动画##次(无限次:只用/L) |
/F#.# | 使用指定帧数(快速播放:只用/F) |
/T## | 播放指定音轨 |
/S | 播放结束后显示回放摘要 |
/X## | 指定回放的X轴坐标 |
/Y## | 指定回放的Y轴坐标 |
/W#.# | 拉伸象素至指定宽度(可能拖慢),使用负数作缩放比例 (例:2倍,'/W-2';全屏,'/W-1') |
/H#.# | 拉伸象素至指定高度(可能拖慢) |
/R | 用黑色背景填充屏幕 |
/C | 在Bink窗口中隐藏鼠标 |
/M## | 模拟指定读取速度(字节/秒) |
/E## | 指定读取缓冲所用内存量 |
/G | 打开Bink时不使用读取缓冲(更快打开) |
/K | 禁用多线程设备读取 |
/U## | 禁用下列控制键:1=暂停,2=跳过,4=退出 |
/N | 落后也不使用跳帧 |
/A## | 显示选项:1=2倍高度,2=2倍高度隔行扫描,3=2倍宽度 4=2倍高宽隔行扫描,5=2倍高宽, 6=1倍高度隔行扫描,7=禁用全部 |
/Q | 显示运行回放统计 |
/I# | 窗口风格:0=标准,1=无标题,2=无.+100:总在最前 |
/J | 失去焦点不暂停播放 |
/D## | 显示分辨率:1=320x200,2=320x240,3=320x400, 4=400x300,5=480x360,6=512x384,7=640x400 8=640x480,9=800x600,10=960x720,11=1024x768, 12=1152x864,13=1280x1024.设定色深,+0:16位, +100:24位,+200:32位,+300:8位 |
/B## | 双线过滤风格:0=自动,1=使用DirectDraw主 显示(最 佳画质,最快),2=DIB段(最佳画质,最好兼容性), 3=YV12覆载,4=YUY2覆载,5=UYVY覆载,6=YV12直接写屏, 7=YUY12直接写屏,8=UYVY直接写屏,9=DirectDrawRGB 显存直接写屏,10=DirectDrawRGB内存直接写屏 |
用几个常用的就行了,FF8FMV用的参数是"/D108 /R /C"和"/D102 /R /C".
-
Kweh!!Kweehhhh!!