我正在尝试从 1997 年一款名为 Swing(美国:Marble Master)的游戏中获取精灵。该文件名为NORMAL.SET,包含一组精灵。有一个名为 SHOWSET.EXE 的可执行文件,它在每个精灵上打印一个数字后显示整个集合。
还有一个文件叫做HINTERH.SWG(SWG 可能代表 SWING)。我能够弄清楚使用 TiledGGD 的文件类型是什么!它是没有标题的原始数据,大小为 640x480,16 bpp,大端,(A)RGB。请参阅下面的屏幕截图。
在 TiledGGD 中使用相同的设置,我得到了NORMAL.SET图像的近似值。下面是 SHOWSET.EXE 的输出(左),以及 TiledGGD 显示它的图像(右)。
使用 SHOWSET.EXE 输出的屏幕截图,我能够接近用于 NORMAL.SET 中像素数据的编解码器(?正确术语?)。我相信它基于 16 位 ARGB1555,但仍然不同。下面您会看到从屏幕截图中提取的图像。我们称之为屏幕截图精灵。
这些是 NORMAL.SET 的前 192 个字节
47 69 62 20 6D 69 72 20 27 6E 65 20 4B 75 67 65
6C 0A 00 1A 73 74 61 6E 64 61 72 64 00 00 00 00
00 00 00 00 9D 4F DD 32 00 00 00 00 68 27 01 00
14 00 01 0F 1E 00 1E 00 2C 03 00 00 03 00 00 00
00 00 00 00 03 00 0A 00 90 08 90 08 90 08 90 08 <1,2---
8F 08 8F 08 8E 08 6D 08 6C 04 6B 04 03 00 0A 00
03 00 08 00 90 08 91 08 91 08 91 08 91 08 91 08
90 08 90 08 8F 08 8E 08 6D 08 6C 04 6A 04 4A 04
03 00 08 00 03 00 06 00 91 08 91 08 B2 08 B2 08
B2 08 B2 08 B2 08 B2 08 B2 08 91 08 90 08 8F 08
8E 08 6D 08 6C 04 6B 04 49 04 48 04 03 00 06 00
03 00 05 00 90 08 B2 08 B2 08 B3 08 B3 0C B3 0C
这些是屏幕截图精灵的前 192 个字节。
42 4D 50 07 00 00 00 00 00 00 46 00 00 00 38 00
00 00 1E 00 00 00 E2 FF FF FF 01 00 10 00 03 00
00 00 0A 07 00 00 3B 00 00 00 3B 00 00 00 00 00
00 00 00 00 00 00 00 7C 00 00 E0 03 00 00 1F 00
00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 <1---
00 00 00 00 00 00 00 00 00 00 90 08 90 08 90 08 <2---
90 08 8F 08 8F 08 8E 08 6D 08 6C 04 6B 04 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 90 08 91 08 91 08 91 08 91 08 91 08 90 08
90 08 8F 08 8E 08 6D 08 6C 04 6A 04 4A 04 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
您可以看到数据可能开始的点(箭头 1),您会看到类似的十六进制字符串90 08 90 08 90 08
。
您还看到截图精灵中的数据可能以 10 个字节对开始(箭头 2)。在 NORMAL.SET 中,您可以找到0A 00
. 现在我读到了 RLE 并且有一些幻想,我可以看到 10 个字节对之间的链接0A 00
,我可以将其转换为“黑色像素的十倍”。
我仍然很困惑为什么我在 NORMAL.SET 中看到两个蓝色精灵,而截图中只有一个蓝色球体。但这是我以后会关心的事情。
注意
在这一点上,我非常确定我走在正确的轨道上!我认为 RLE 解压缩是这里唯一缺少的东西,除了弄清楚数据从哪里开始以及标题应该是什么意思。也许它们对我来说甚至没有多大用处。
我不确定,如果我现在还有问题。如果没有人不同意,我会把这个留在这里,直到我弄清楚其余的,希望有一天,这对某人会有所帮助。我会在解开谜语后立即更新。
在此之前,如果您已准备好 RLE 的解决方案,请不要羞于发布 ;)