这是indexloc提供的服务,不要输入任何密码
Skip to content

puzzle: HP 1660 early boot bitfont #45

@fenugrec

Description

@fenugrec

I will not have time to figure out the details of this one; leaving it here if anyone has an appetite for puzzles.
Display is grayscale, 576x378, and to the best of my knowledge this code renders strings into a pixel buffer (note how the offsets increase by 0x48 : 8 bits per byte * 0x48 = 576). Raw bitmap data is attached; 16 bytes per 'glyph' , and based on the code it looks like char height may be 14 ?

  while( true ) {
    if (*text == 0) break;
    char_val = (int)(short)((ushort)(byte)*text << 4);
    pixd = *(uint *)(early_bitfont_41b11a[0].bitmap + char_val);
    *pixel_buf? = pixd;
    tmp = pixd << 0x1c | pixd >> 4;
    pixel_buf?[0x48] = tmp;
    tmp = tmp >> 4;
    pixd = (pixd >> 4) << 0x1c | tmp;
    pixel_buf?[0x90] = pixd;
    pixel_buf?[0xd8] = tmp << 0x1c | pixd >> 4;
    pixd = *(uint *)(early_bitfont_41b11a[0].bitmap + char_val + 4);
    pixel_buf?[0x120] = pixd;
    tmp = pixd << 0x1c | pixd >> 4;
    pixel_buf?[0x168] = tmp;
    tmp = tmp >> 4;
    pixd = (pixd >> 4) << 0x1c | tmp;
    pixel_buf?[0x1b0] = pixd;
    pixel_buf?[0x1f8] = tmp << 0x1c | pixd >> 4;
    pixd = *(uint *)(early_bitfont_41b11a[0].bitmap + char_val + 8);
    pixel_buf?[0x240] = pixd;
    tmp = pixd << 0x1c | pixd >> 4;
    pixel_buf?[0x288] = tmp;
    tmp = tmp >> 4;
    pixd = (pixd >> 4) << 0x1c | tmp;
    pixel_buf?[0x2d0] = pixd;
    pixel_buf?[0x318] = tmp << 0x1c | pixd >> 4;
    pixd = *(uint *)(early_bitfont_41b11a[0].bitmap + char_val + 0xc);
    pixel_buf?[0x360] = pixd;
    tmp = pixd << 0x1c | pixd >> 4;
    pixel_buf?[0x3a8] = tmp;
    pixel_buf?[0x3f0] = (pixd >> 4) << 0x1c | tmp >> 4;
    pixel_buf? = pixel_buf? + 1;
    text = (char *)((byte *)text + 1);
  }

Not sure what's up with all the bit shifts however.

hp1660_early_bitfont.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions