|
|
@@ -43,11 +43,15 @@ inline const EpdCommand PANEL_583_GDEQ0583T31_INIT[] = {
|
|
|
{0x04, nullptr, 0, /*delay_before_ms=*/0, /*delay_after_ms=*/0, /*wait_busy_after=*/true}, // power on
|
|
|
};
|
|
|
|
|
|
-// _setPartialRamArea(0, 0, 648, 480): xe = (0+648-1)|0x0007 = 655 (byte-
|
|
|
-// boundary inclusive), ye = 479; x masked to byte boundary is 0 either way.
|
|
|
+// _setPartialRamArea(0, 0, 648, 480): xe = (0+648-1)|0x0007 = 647 (already
|
|
|
+// byte-boundary inclusive - 647 % 8 == 7), ye = 479; x masked to byte
|
|
|
+// boundary is 0 either way. First pass wrote xe%256 as 0x8F (655) instead
|
|
|
+// of 0x87 (647) - an 8-column-too-wide window that shifted each row's data
|
|
|
+// by a byte relative to the next, hardware-confirmed as diagonal smear/
|
|
|
+// noise rather than a clean image (2026-09-19).
|
|
|
inline const uint8_t PANEL_583_GDEQ0583T31_WINDOW_REGION[] = {
|
|
|
0x00, 0x00, // x/256, x%256 = 0, 0
|
|
|
- 0x02, 0x8F, // xe/256, xe%256 = 655
|
|
|
+ 0x02, 0x87, // xe/256, xe%256 = 647
|
|
|
0x00, 0x00, // y/256, y%256 = 0, 0
|
|
|
0x01, 0xDF, // ye/256, ye%256 = 479
|
|
|
0x01,
|