【问题标题】:How to decode the Nintendo logo from gameboy?如何从gameboy解码任天堂标志?
【发布时间】:2014-01-14 17:24:52
【问题描述】:

我尝试使用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 倍变焦):

【问题讨论】:

    标签: device-emulation gameboy


    【解决方案1】:

    根本没有压缩或加密。 标志是二进制编码的:1 是黑色,0 是白色/绿色/你想调用的游戏男孩的背景颜色)。

    只需将十六进制字符串按正确顺序排列,然后将十六进制字符转换为二进制即可:

    十六进制:

    C 6 C 0 0 0 0 0 0 1 8 0
    E 6 C 0 3 0 0 0 0 1 8 0
    E 6 0 0 7 8 0 0 0 1 8 0
    D 6 D B 3 3 C D 8 F 9 E
    
    D 6 D D B 6 6 E D 9 B 3
    C E D 9 B 7 E C D 9 B 3
    C E D 9 B 6 0 C D 9 B 3
    C 6 D 9 B 3 E C C F 9 E
    

    二进制:

    1100 0110 1100 0000 0000 0000 0000 0000 0000 0001 1000 0000
    1110 0110 1100 0000 0011 0000 0000 0000 0000 0001 1000 0000
    1110 0110 0000 0000 0111 1000 0000 0000 0000 0001 1000 0000
    1101 0110 1101 1011 0011 0011 1100 1101 1000 1111 1001 1110
    1101 0110 1101 1101 1011 0110 0110 1110 1101 1001 1011 0011
    1100 1110 1101 1001 1011 0111 1110 1100 1101 1001 1011 0011
    1100 1110 1101 1001 1011 0110 0000 1100 1101 1001 1011 0011
    1100 0110 1101 1001 1011 0011 1110 1100 1100 1111 1001 1110
    

    给你。您的 Nintendo 徽标(不含 0 和空格):

    11   11 11                             11       
    111  11 11        11                   11       
    111  11          1111                  11       
    11 1 11 11 11 11  11  1111  11 11   11111  1111 
    11 1 11 11 111 11 11 11  11 111 11 11  11 11  11
    11  111 11 11  11 11 111111 11  11 11  11 11  11
    11  111 11 11  11 11 11     11  11 11  11 11  11
    11   11 11 11  11 11  11111 11  11  11111  1111 
    

    使用 代替1

    ██   ██ ██                             ██       
    ███  ██ ██        ██                   ██       
    ███  ██          ████                  ██       
    ██ █ ██ ██ ██ ██  ██  ████  ██ ██   █████  ████ 
    ██ █ ██ ██ ███ ██ ██ ██  ██ ███ ██ ██  ██ ██  ██
    ██  ███ ██ ██  ██ ██ ██████ ██  ██ ██  ██ ██  ██
    ██  ███ ██ ██  ██ ██ ██     ██  ██ ██  ██ ██  ██
    ██   ██ ██ ██  ██ ██  █████ ██  ██  █████  ████ 
    

    【讨论】:

    • 请注意,单个二进制 1 对应的不是屏幕上的单个像素,而是四个。从这个意义上说,标志上有一些压缩。
    • @TreyKeown:嗯,没有。单个 bit 仍然代表单个 pixel。您混淆了位、字节和 - 因为字节是垂直条带化的 - 半字节。不同输入值的数据量不变,它是恒定的。因此,这是一种编码形式,而不是压缩形式。
    • PPU 如何知道将这些字节以完全相同的顺序排列?
    【解决方案2】:

    除了 PBurggraf 的回答,这里是我用来检查我对它的理解的代码的 sn-p。

    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;
    }
    

    它输出:

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

    希望对某人有所帮助。

    【讨论】:

      【解决方案3】:

      澄清:

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

      1. 您必须对十六进制字符串进行排序(解密)
      2. 每个位必须绘制 4 次(解压缩),正如 pokechu22 之前所说。

      【讨论】:

        猜你喜欢
        • 2011-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多