14

我尝试使用http://imrannazar.com/GameBoy-Emulation-in-JavaScript:-Graphics中描述的背景调色板方案解码以下位图

CE ED 66 66 CC 0D 00 0B 03 73 00 83 00 0C 00 0D 00 08 11 1F 88 89 00 0E DC CC 6E E6 DD DD D9 99 BB BB 67 63 6E 0E EC CC DD DC 99 9F BB B9 33 3E

来源: http: //gbdev.gg8.se/wiki/articles/The_Cartridge_Header#0104-0133_-_Nintendo_Logo

但我只得到了类似于噪音的东西。

我应该往哪个方向走?是否使用压缩?我在互联网上找不到有关此转储的更多信息。

迄今为止最好的(20 倍变焦):在此处输入图像描述

4

3 回答 3

20
于 2014-07-08T11:21:21.340 回答
3

除了 PBurggraf 的答案之外,这里是我用来检查我对它的理解的代码片段。

static const uint8_t data[] = {
    0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B, 0x03, 0x73, 0x00, 0x83,
    0x00, 0x0C, 0x00, 0x0D, 0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E,
    0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99, 0xBB, 0xBB, 0x67, 0x63,
    0x6E, 0x0E, 0xEC, 0xCC, 0xDD, 0xDC, 0x99, 0x9F, 0xBB, 0xB9, 0x33, 0x3E,
};

for(int y=0; y<8; ++y)
{
    int i = ((y/2)%2)+(y/4)*24;
    for(int x=0; x<12; ++x,i+=2)
    {
        const uint8_t nibble = (y%2) ? (data[i]&0xF) : (data[i]>>4);
        for(int b=4; b--;) std::cout << (((nibble>>b)&1) ? "*" : " ");
    }
    std::cout << std::endl;
}

它输出:

**   ** **                             **       
***  ** **        **                   **       
***  **          ****                  **       
** * ** ** ** **  **  ****  ** **   *****  **** 
** * ** ** *** ** ** **  ** *** ** **  ** **  **
**  *** ** **  ** ** ****** **  ** **  ** **  **
**  *** ** **  ** ** **     **  ** **  ** **  **
**   ** ** **  ** **  ***** **  **  *****  **** 

希望它可以帮助某人。

于 2019-08-04T02:19:00.357 回答
-6

澄清:

并且标志上有一种加密/压缩。

  1. 您必须对十六进制字符串进行排序(解密)
  2. 您必须绘制每个位 4 次(解压缩)正如 pokechu22 之前所说。
于 2016-12-14T14:52:18.007 回答