我希望从旧的 DOS 游戏(Treasure Cove)中反编译精灵数据。如果有帮助,我发现游戏是用 Borland C++ 编程语言编写的。
精灵似乎位于 TLD 文件中,但我无法确认或否认这一点。如果我的理论是正确的,是否有任何程序能够打开 TLD 文件?
你建议我用这些信息做什么?它在Borland C++中,我想找到一种提取它的方法。
该文件似乎包含位图签名。我寻找 GIF 签名,但一无所获。
我希望从旧的 DOS 游戏(Treasure Cove)中反编译精灵数据。如果有帮助,我发现游戏是用 Borland C++ 编程语言编写的。
精灵似乎位于 TLD 文件中,但我无法确认或否认这一点。如果我的理论是正确的,是否有任何程序能够打开 TLD 文件?
你建议我用这些信息做什么?它在Borland C++中,我想找到一种提取它的方法。
该文件似乎包含位图签名。我寻找 GIF 签名,但一无所获。
有一个名为 QuickBMS 的应用程序可用于导入/导出数据。这是一个关于如何通过创建 BMS 脚本来执行此操作的教程:制作 BMS 脚本
还有一些社区,例如 Xentax 和 ZenHax,它们致力于视频游戏数据的提取/修改。
好的,首先你提到了 Borland C++ IIRC,在那里,这个 IDE/编译器的反编译器将从可执行文件创建源代码。挖掘反编译的源代码可能会帮助您了解 gfx(寻找明显的东西,例如访问 VGA 寄存器或 VRAM 段)……但是不记得它是如何被调用的……
现在要改善您的问题和有效结果的机会,您需要添加一些信息:
部分游戏截图
它们可能会帮助我们推断精灵的分辨率、使用的 gfx 算法等等...从游戏中精灵的分辨率和近似数量,您可以猜测 gfx 数据的大小,这可能有助于您找到它。游戏是否也使用 16/256/... 每像素颜色?
测试数据文件
您只需将您的文件作为数据文件处理,并将它们复制到屏幕上作为指定像素宽度的图像。您可以像这样查看您的文件。如果您发现重复的模式,则使用文件的那部分并尝试更改“图像”的宽度,直到您看到图像(或看不到图像)。有一些实用程序可以为您执行此操作,例如PV.EXE或编写您自己的...
这是您的文件作为512x??? 24 bit
未压缩图像的简单预览00000000h
:
正如您可以清楚地看到的那样,有一些模式......在对图像宽度进行了一些调整后,这对我来说看起来像图像:
那里有更多的“图像”,其中一些还有 200 个其他的 201 像素宽度,但是看起来扫描线一开始没有对齐,这可能表明 RLE 编码......
我呈现3个字节作为单个像素,但最有可能出现只有1或每个像素和某种类型的256色调色板的2个字节是用来...所以图像的实际分辨率是围绕200*2
或200*3
...这取决于编码
一旦找到可能的图像源尝试解码它
您需要找出编码是 RAW、RLE 或 LZW 还是不同的打包/编码,您需要知道像素的位宽、图像分辨率等...
如果你有更多的文件,你可以推断出块结构
当您以多种文件格式以十六进制打开文件时,通常会有关于单独的文件块的信息,这些文件在通常存在的地方被划分为:
signature
offset
size
对于每个或至少对于第一个块(其他块可能没有签名),因此尝试从等于或略小于文件大小的文件号的开头以十六进制查找......如果位置在所有情况下都是一致的你找到的文件头...
这可能会大大简化解析/解码分离图像的过程......