今天仔细的看了看PlayerLin版主共享的解析代码,才弄明白了FIGANI文件的具体格式。现列在下面也供以后参考。
(所有存储都采用Big Endian)
文件头信息:
[6 Bytes: 32 4c 4c 4c 4c 4c 固定的6个字节,不明白具体含义]
[4 Bytes * 408] 保存了一共408 个动画序列(每个角色分 防御、攻击、特技,一共136个角色)的起始地址(最后一个地址为文件的结尾地址)
每个动画序列格式:
动画序列头信息:
[1Byte 总帧数F] [1Byte 是否有远程] [1Byte 远程帧编号RF] [1Byte 空][4Bytes 空?]
每一帧的偏移量:
[4Byte * 总帧数F]
每一帧图片的格式:
帧头:
[2Bytes PosX] [2Bytes PosY] [1Byte 击中] [1Byte 音效] [1Byte 显示时长] [2Byte ???]
帧内容:使用RLE8算法压缩存储,采用1个控制位+后面N个数据位的格式。控制位分为四种情况:
0x11[6 bits N]: 空白N+1个像素
0x10[6 bits N]: 直接拷贝后面的N+1个Byte到N+1个像素
0x01[6 bits N]: 用后面的1个Byte填补2N+2个像素 (每次间隔跳过1个Byte)
0x00[6 bits N]: 用后面的1个Byte填补N+1个像素
(所有存储都采用Big Endian)
文件头信息:
[6 Bytes: 32 4c 4c 4c 4c 4c 固定的6个字节,不明白具体含义]
[4 Bytes * 408] 保存了一共408 个动画序列(每个角色分 防御、攻击、特技,一共136个角色)的起始地址(最后一个地址为文件的结尾地址)
每个动画序列格式:
动画序列头信息:
[1Byte 总帧数F] [1Byte 是否有远程] [1Byte 远程帧编号RF] [1Byte 空][4Bytes 空?]
每一帧的偏移量:
[4Byte * 总帧数F]
每一帧图片的格式:
帧头:
[2Bytes PosX] [2Bytes PosY] [1Byte 击中] [1Byte 音效] [1Byte 显示时长] [2Byte ???]
帧内容:使用RLE8算法压缩存储,采用1个控制位+后面N个数据位的格式。控制位分为四种情况:
0x11[6 bits N]: 空白N+1个像素
0x10[6 bits N]: 直接拷贝后面的N+1个Byte到N+1个像素
0x01[6 bits N]: 用后面的1个Byte填补2N+2个像素 (每次间隔跳过1个Byte)
0x00[6 bits N]: 用后面的1个Byte填补N+1个像素










