- State is not saved (just like a real Psion :p)
- LCD controller is almost entirely unimplemented aside from the very basics to display the framebuffer
- EPOC misbehaves massively with memory banks larger than 0x800000 (may be an OS design flaw? need to confirm)
-- 4bpp display mode does not decode correctly
Copyright
---------
for (int x = 0; x < img.width(); x++) {
uint8_t byte = lcdBuf[lineOffs + (x / ppb)];
int shift = (x & (ppb - 1)) * bpp;
- int mask = (bpp << 1) - 1;
+ int mask = (1 << bpp) - 1;
int palIdx = (byte >> shift) & mask;
int palValue = palette[palIdx];
- if (bpp <= 1)
- palValue |= (palValue << 1);
- if (bpp <= 2)
- palValue |= (palValue << 2);
- if (bpp <= 4)
- palValue |= (palValue << 4);
+ palValue |= (palValue << 4);
scanline[x] = palValue ^ 0xFF;
}
}