13号避难所
标题:
FRM 文件格式
[打印本页]
作者:
zealic
时间:
2007-4-19 23:34
标题:
FRM 文件格式
Fallout2 中的 图形/动画 文件格式
我在制作 Frameout 的之后写成了本文档
原始参考为 MOD 资源中的 #FRM
现在用文档描述为易懂的格式。
//*********************************************************
//* FRM file format
//* Author : BlackIsle;Zealic
//* File : FRM_FORMAT.txt
//* CreateDate : 2007-04-15
//* LastUpdate : 2007-04-21
//* Version : 1.3
//* ExtensionName : .frm
//* Description :
//* 当使用默认调色板时,第0个颜色是透明色。
//* 如果存在和 frame 名字相同的调色板文件,那么该Frame 有如下规则:
//* 需要增亮调色板颜色(RGB 各 <<2),第0个颜色不再是透明色。
//*
//* 如何计算当前帧的中心位置?
//* 当前帧的中心位置的计算公式如下:
//* Frame.X = Screen.Width / 2 + Frame.Width / 2 + IncrementOffsetX + (之前所有帧的IncrementOffsetX的总和)
//* Frame.Y = Screen.Height / 2 + Frame.Height / 2 + IncrementOffsetY + (之前所有帧的IncrementOffsetY的总和)
//*********************************************************
[Endian(Value = "big-endian")]
struct TFRM
{
[Const(Value = 0x00000004)]
int32 Magic;
int16 Fps;
// 标志该文件所描述的动作类型,如闪躲、投掷、近战攻击、远程攻击
int16 ActionType;
// 如果值为1,代表该文件为静态图
int16 FrameCount;
int32 TotalDataSize;
[List(Size = 6,IndexType = TDirection))]
TList<int16>[] DirectionOffsetX;
[List(Size = 6,IndexType = TDirection))]
TList<int16>[] DirectionOffsetY;
[List(Size = 6,IndexType = TDirection))]
TList<int32>[] DirectionImageDataOffset;
[ArrayList(Size = ActionCount,IndexType = TDirection)]
TArrayList<TAction>[] Actions;
}
struct TAction
{
[Array(Size = TDriection.MemberCount))]
TList<TFrameImage>[] FrameImages;
}
struct TFrameImage
{
int16 Width;
int16 Height;
int32 DataSize;
//增量 X 座标位移,要计算该帧的实际偏移,需要叠加之前所有帧的偏移
int16 IncrementOffsetX;
//增量 Y 座标位移,要计算该帧的实际偏移,需要叠加之前所有帧的偏移
int16 IncrementOffsetY;
[Array(Size = (this.DataSize))]
int8[] ImageData;
}
enum TDirection : int16
{
NorthEast = 0;
East = 1;
SouthEast = 2;
SouthWest = 3;
West = 4;
NorthWest = 5;
}
复制代码
作者:
bombboy
时间:
2011-9-24 14:46
还是有点不明白,有人继续做吗?
作者:
百想
时间:
2013-12-15 18:24
获选者 去年 过世 29岁,,,不是我朋友吧 ,FOL的爱好者
欢迎光临 13号避难所 (https://bn13.net/)
Powered by Discuz! X3.2