盟军敢死队2及3 Y64文件格式表

盟军敢死队23 Y64文件格式表

地狱门神(F.R.C.)整理

数据区

数据块

小数据块

数据节

数据

数据类型

长度

描述

例数据

Header DA

Identifying DB

 

 

Identifying Sign

String

6

固定

464344450000(FCDE)

 

 

Version Sign

Int16

2

盟军版本。盟22,盟334

0200/0300,0400

 

Comment DS

 

 

40/105

2中占40字节,盟3中占105字节。

 

Palette DB 0

 

Y DS 0

 

 

16

固定。此块包含Y值。每一个数据节均是Y值的递增数列。

 

...... 16*16 = 总数256

 

Palette DB 1

 

Cb DS

 

 

32

此块是Cb值的递增数列。

 

Palette DB 2

 

Cr DS

 

 

32

此块是Cr值的递增数列。

 

Info DB for Angles of View

 

Number DS

Number of Views

Int32

4

这里定义了视角的数量。

04000000

Number of Pics

Int32

4

这里定义了每个视角的图片数量。

02000000

 

Address DS

Pic Address

Int32

4

View 00, Pic 00的起始地址。

98010000

Pic Address

Int32

4

View 00, Pic 01的起始地址。

A4210B00

Pic Address

Int32

4

View 01, Pic 00的起始地址。

F01D1100

...... Pic Addresses: 总数由Number DS定义

Picture DA 0

Info DB

 

 

Zoom Layer Number

Int32

4

这里定义了此图片的缩放层。

00000000

 

 

Pic Width

Int32

4

图片宽度。

29040000

 

 

Pic Height

Int32

4

图片高度。

E1020000

 

 

Number of Pic Block

Int32

4

这里定义了此图片的图块数(包括附加图块,不包括空图块)。

CC000000

 

 

Number of Extra Pic Block Index

Int32

4

这里定义了附加图块的索引数。

00000000

Block Locating DB

Index Table SDB

 

Index/Address

Int16

2/4

这是用于在图片上定位图块的索引表/地址表。索引0xFFFF表示空图块(如水)。

0000,0100

...... Index: 总数由Pic WidthPic Height定义

Extra Index Table SDB

Extra Index DS

Unknown Sign

Int32

4

固定

00000000

X Index

Int32

4

图块级别的横坐标

09000000

Y Index

Int32

4

图块级别的纵坐标

09000000

Index/Address

Int32

4

图块索引/图块地址

59070000

...... Extra Index DS: 总数由Number of Extra Pic Block Index定义

Picture DB

 

 

Separator

Int64

8

通常为0xFFFFFFFFFFFFFFFF,但是某些时候变成了0xFFFFFFF8F8F8F8F8

FFFFFFFFFFFFFFFF

Picture SDB

DS 0

Middle Digits

 

4bits

这些二进制位应该直接放在指针的位7至位4。但是首先你必须交换这两个字节,因为它们在Comm2.exe中被看作为一个little-endian16位整数。这些位是到Palette Y的指针(7-0)的一部分。

1000.b

...... 4*4bits = 总数2 Bytes

Unknown Sign

 

2

固定

0000

DS 1

High Digits

 

10bits

这些二进制位应该直接放在指针的位17至位8。但是首先你必须反转DS1的每4个字节,因为它们在Comm2.exe中被看作为一个32位整数。这些位是到Palette Cb的指针(17-13)和到Palette Cr的指针(12-8)

1110101001.b

...... 16*10bits = 总共20 Bytes

DS 2

Low Digits

 

4bits

这些二进制位应该直接放在指针的位3至位0。但是首先你必须反转DS2的每4个字节,因为它们在Comm2.exe中被看作为一个32位整数。这些位是到Palette Y的指针(7-0)的一部分。

0000.b

...... 64*4bits = 总数32 Bytes

...... 总共8*8Picture SDB

...... Picture DBs:总数由Number of Pic Block定义

Nothing/Unknown DB

 

 

 

 

0/6,不确定

版本36,版本4则很长。

14FF00000000

...... Picture DAs: 总数由Number DS定义

 

注意:

1、所有的整数数据类型都是little-endian的。

2、有“/”的项,盟军2的在左边,盟军3的在右边。

3、生成调色板时,从Palette DB 0,1,2的位置n0,n1,n2选取数据v0,v1,v2

(v0,v1,v2) 是一个YCbCr空间中的颜色向量,你可以找到如下的转换公式:

R = Y + 1.402 * (Cr - 128)
G = Y - 0.34414 * (Cb - 128) - 0.71414 * (Cr - 128)
B = Y + 1.772 * (Cb - 128)
 

Y = 0.299 * R + 0.587 * G + 0.114 * B
Cb = -0.1687 * R - 0.3313 * G + 0.5 * B + 128
Cr = 0.5 * R - 0.4187 * G - 0.0813 * B + 128
 

注意这样转换得到的值可能超出区间[0,255],所以可能需要将超出的值替换成0255

调色板的索引(指针)为(n1 << 13) Or (n2 << 8) Or n0

 

参考:

[1]invox4C2_3keyfiles.doc,盗版钦差,2006

posted @ 2007-02-05 00:04  地狱门神  阅读(552)  评论(0)    收藏  举报