MCPcopy Create free account
hub / github.com/CE-Programming/CEmu / panel_write_pixel_continue_bug

Function panel_write_pixel_continue_bug

core/panel.c:795–823  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

793}
794
795static void panel_write_pixel_continue_bug(panel_mem_ptr_t *memPtr, uint32_t bgr666) {
796 panel.spiMemFlags = 0;
797 panel_update_write_pixel_method(memPtr);
798 uint16_t xAddr = memPtr->xAddr;
799 if (likely(xAddr != panel.windowEnd.xAddr)) {
800 panel.write_pixel(memPtr, bgr666);
801 return;
802 }
803 /* Write Continue bug */
804 /* If the first write wraps on X, write goes to the new Y address */
805 /* If it also wraps on Y and fills the window, the write is discarded */
806 if (!likely(panel_next_y_addr(memPtr))) {
807 return;
808 }
809 panel_update_write_pixel_method(memPtr);
810 memPtr->xAddr = panel.windowStart.xAddr;
811 uint16_t row;
812 uint8_t col;
813 if (panel_row_col_addr_swap()) {
814 row = xAddr;
815 col = memPtr->yAddr;
816 } else {
817 col = xAddr;
818 row = memPtr->yAddr;
819 }
820 if (likely(row < PANEL_NUM_ROWS && col < PANEL_NUM_COLS)) {
821 panel_write_pixel(&panel.frame[row][col], bgr666);
822 }
823}
824
825static inline void panel_write_pixel_18bpp(uint32_t bgr666) {
826 panel_spi_catchup();

Callers

nothing calls this directly

Calls 4

panel_next_y_addrFunction · 0.85
panel_row_col_addr_swapFunction · 0.85
panel_write_pixelFunction · 0.85

Tested by

no test coverage detected