我正在寻找反编译旧的DOS游戏(宝藏湾)中的精灵数据。如果有帮助,我发现该游戏是使用Borland C ++编程语言编写的。

子画面似乎位于TLD文件中,尽管我无法确认或否认。如果我的理论正确,那么是否有任何程序可以打开TLD文件?



您建议我用这些信息做什么?它在Borland C ++中,我想找到一种提取它的方法。

此文件似乎包含Bitmap签名。我寻找了GIF签名,却一无所获。

评论

您好,欢迎来到RE.SE!在当前状态下,您的问题过于模糊和广泛。您是否可以添加有关手头问题的更多详细信息,尝试的方法,假设的原因是什么等。现在,您唯一的查询是“是否存在这样的软件”,这不是实际的RE问题。

我为含糊不清表示歉意。我使用HEX编辑器尝试查看是否有任何位图或JPG数据。我尝试使用作弊引擎(有一个快照功能可以在单独的图层中捕获每个视觉对象)。到目前为止,除了TLD文件之外,我没有其他理论。您建议我如何提取精灵?

我建议您使用HEX Editor(像您一样)查看TLD文件,并尝试为该时间段的某些已知格式查找魔术字符串。例如,GIF魔术字符串是“ GIF87a”。这样您可以确认精灵格式。确认格式后,您可以寻找提取精灵的正确工具。

嗯,好而且,对于JPG,BMP或GIF,建议使用哪些工具?

#1 楼

有一个名为QuickBMS的应用程序,可用于导入/导出数据。
这里有一个有关如何创建BMS脚本的教程:制作BMS脚本

还有一些社区,例如Xentax和ZenHax专门用于视频游戏数据提取/修改。

#2 楼

好的,首先您提到Borland C ++ IIRC,在那里,此IDE /编译器的反编译器将从可执行文件创建源代码。通过反编译的源进行挖掘可能会帮助您了解gfx(查找诸如访问VGA寄存器或VRAM段之类的明显内容)...但是不记得它的名称了...
现在可以改善您的问题和机会有效结果的显示,您需要添加一些信息:


游戏中的一些屏幕截图
它们可能有助于我们推断子画面的分辨率,所使用的gfx算法以及更多...以及游戏中的精灵数量,您可以猜测gfx数据的大小,这可能会帮助您找到它。游戏还使用每像素16/256 / ...颜色吗?


测试数据文件
您只需将文件作为数据文件处理,然后将它们复制到屏幕上即可。它们在指定像素宽度的图像上。您可以像这样查看文件。如果发现重复图案,则使用文件的该部分,并尝试更改“图像”的宽度,直到看到(或看不到)图像为止。有一些实用程序可以像PV.EXE一样为您执行此操作,也可以编写您自己的...
这里您可以将文件的预览简单地作为512x??? 24 bit偏移量中的00000000h未压缩图像:

清楚地看到有些图案...经过一小会儿的图像宽度播放后,对我来说这看起来像图像:

那里还有更多的“图像”,其中一些包含200个像素为201像素的图像宽度,但是看起来扫描线最初并没有对齐,这可能表明RLE编码...
我将3个字节渲染为单个像素,但是很可能每个像素只有1个或2个字节,并且某种256色使用调色板...因此图像的实际分辨率在200*2200*3 ...左右,具体取决于编码


一旦找到可能的图像源尝试对其进行解码
您需要找出编码是RAW还是RLE或LZW或不同的打包/编码方式,您需要知道像素的位宽,图像分辨率等...


如果您有更多文件,则可以推断出块结构
,当您以多种文件格式以十六进制打开文件时,通常会获得有关文件的单独块的信息,在通常情况下将其分为以下部分:
signature
offset
size

对于每个块或至少对于第一个块(其他块可能没有签名),因此请尝试从等于或略小于文件大小的文件编号的开头开始以十六进制查找...如果您找到的所有文件头中的位置都保持一致...

,这可能会大大简化解析/解码分离图像的操作...