我目前正在开发一款古老的经典PC游戏。在我进行编程的过程中,我面临着许多问题,主要是因为我没有接受过程序员或设计师的教育。虽然我对这个特别的游戏的热情使它变得更加有趣。
我目前正在尝试打开游戏的图像。这些图片是使用Paint Deluxe 2制作的。从我发现当你打开它们添加更改时,它们都是PCX格式的。然后他们被保存到游戏中的外部实现旁边的可执行文件作为.bmp文件(从我能理解的)。所使用的调色板对于6位通道(而不是你所期望的8位通道)实际上有点奇怪。
我在开发人员的方式上遇到了一个问题。在将图像添加到文件之前,会剥离标题,并将调色板存储在外部文件中。作为油漆,Deluxe 2保存190x107到20544字节的像素长度(189x107-190x107-191x107和192x107都存储为20544字节的像素,不包括标题和调色板)。而is实际上应该是20330个字节。这让我有些头疼。似乎游戏中使用的图像也是另一种方式。看起来图像是以相反的方向存储的。
澄清一下: FILE34是游戏加载到屏幕上的原始文件,它有20330个字节。20544字节的FILE34是我在将文件改回pcx格式然后再改成bmp格式后剥离出来的结果。例如,还包括pcx文件,并且可以使用GIMP打开该文件。BIN_PALETTE.PAL是用于图像的调色板。
有没有人熟悉这个问题,可以给我一些建议?enter link description here
发布于 2016-05-19 18:28:48
BMP文件通常是自下而上存储的(最后一条扫描线先存储,然后向上存储,直到第一条扫描线为止)。较新的BMP文件也可以像其他格式一样自上而下地存储,但这种情况不太常见。如果游戏的文件是从上到下存储的,与普通的BMP文件相比,它们将显示为颠倒。
此外,BMP格式将每个扫描线填充到32位(长字)边界,这就是宽度189-192的文件大小相同的原因(每个扫描线都需要192个字节)。如果游戏的文件存储时没有填充,这就是产生差异的原因。
有关更多信息,请参阅维基百科上的BMP file format。
将您的无头BMP重写为游戏中使用的格式非常容易(考虑到这是两个唯一的区别)。我将概述流程/使用伪代码,因为您的问题中没有语言标记:
(如果对您有帮助的话,我可以用Java编写上面的代码)。
https://stackoverflow.com/questions/37314286
复制相似问题