我正在尝试查看如何使用旧的 roms gfx 文件进行一些逆向工程保存瓷砖(此示例尝试使用 snow bros arcade set one)。
这就是我现在所知道的:
每种颜色都指向一个可以更改的调色板(然后当您更改调色板时,您会更改瓷砖中的颜色)。
瓷砖的尺寸为 16x16。
当我在十六进制编辑器中看到文件时,我有点困惑。我不知道一个像素有多少字节,也不知道它们是如何排列的。
知道这是如何工作的吗?
我正在尝试查看如何使用旧的 roms gfx 文件进行一些逆向工程保存瓷砖(此示例尝试使用 snow bros arcade set one)。
这就是我现在所知道的:
每种颜色都指向一个可以更改的调色板(然后当您更改调色板时,您会更改瓷砖中的颜色)。
瓷砖的尺寸为 16x16。
当我在十六进制编辑器中看到文件时,我有点困惑。我不知道一个像素有多少字节,也不知道它们是如何排列的。
知道这是如何工作的吗?
在没有任何文档的情况下,我首先假设每个像素是一个字节(只是 256 调色板的索引)并且 (16 x 16) 256 字节的块组成一个图块。
现在完全有可能还有一些标题信息。因此,您需要读取偏移量 + 256字节并使用加载的调色板或仅使用灰度调色板显示。
继续增加偏移量,直到你得到看起来像瓷砖的东西。现在通过读取后续图块来测试您的假设(之后将偏移量增加 256 个字节)。当然 - 如果图块之间还有其他数据,您将不得不再次执行此操作,直到确定步幅。
请注意,如果您没有加载正确的调色板,颜色很可能看起来很乱。您将不得不依靠您的模式识别技能。
综上所述,您可以为该控制台找到一个现有的开源模拟器,并尝试对其代码进行逆向工程以发现格式。
我找到了答案(至少在雪地兄弟游戏中):
瓦片以 128 个字节保存。
作为每个字节 2 种颜色(每种颜色 4 位(当然是索引))并以这种方式展开:
十六进制文件:
当然十六进制从 0 开始,但我认为这更直观,每个 celd 都是一个字节(2 个像素)。