古代数字格式(可能是定点数)

逆向工程 二元分析 文件格式
2021-07-02 18:18:33

我正在分析一种相当古老的 3D 网格格式(从 1995 年或 1996 年开始)。在文件内部,有一些我认为是顶点的块。

例如,以下是来自此类部件的直接十六进制转储:

7855DAFF
5BE60E00
353D0200
C82D0B00
5BE60E00
353D0200
C82D0B00
5BE60E00
B61AEDFF
7855DAFF
5BE60E00
B61AEDFF
7855DAFF
59D2FDFF
363D0200
C82D0B00
59D2FDFF
363D0200
C82D0B00
59D2FDFF
B61AEDFF
7855DAFF
59D2FDFF
B61AEDFF

这些块由一个小标题引入,其值可以是相应数据块中存在的顶点数。对于此摘录,有一个0x08. 由于我们有 24 个 32 位值,我认为可以安全地假设这些块是实际的顶点 ( 0x08 * 3 = 24, with xyz)。其他头也有这个值,它们的数据块也有 ) 的确切数量dwords ([value in header] * 3 => number of dwords

但是,现在我正在努力破译所使用的数字格式。它不是 IEEE754;我的一个朋友还指出,现在使用的硬件在处理浮点数时表现不佳,因此经常使用定点数。

那么,知道这可能是哪种格式吗?

1个回答

如果你颠倒字节顺序,并假设有符号数字,你会得到这些三元组:

-2468488  976475   146741
  732616  976475   146741
  732616  976475 -1238346
-2468488  976475 -1238346
-2468488 -142759   146742
  732616 -142759   146742
  732616 -142759 -1238346
-2468488 -142759 -1238346

这些看起来像是 3d 立方体的角坐标

x=(-2468488 .. 732616)
y=( -142759 .. 976475)
z=(-1238346 .. 146742)