-
Notifications
You must be signed in to change notification settings - Fork 54
Open
Description
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.
Metadata
Metadata
Assignees
Labels
No labels