MCPcopy Create free account
hub / github.com/NetHack/NetHack / vesa_WritePixelRow

Function vesa_WritePixelRow

sys/msdos/vidvesa.c:462–484  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

460}
461
462static void
463vesa_WritePixelRow(unsigned long offset,
464 unsigned char const *p_row, unsigned p_row_size)
465{
466 if (vesa_segment != 0) {
467 /* Linear frame buffer in use */
468 movedata(_go32_my_ds(), (unsigned)p_row, vesa_segment, offset, p_row_size);
469 } else {
470 /* Windowed frame buffer in use */
471 unsigned long addr = vesa_SetWindow(vesa_write_win, offset);
472 unsigned i = 0;
473 while (offset + p_row_size > vesa_win_pos[vesa_write_win] + vesa_win_size) {
474 /* The row passes the end of the current window. Write what we can,
475 * and advance the window */
476 unsigned w = (vesa_win_pos[vesa_write_win] + vesa_win_size)
477 - (offset + i);
478 dosmemput(p_row + i, w, addr);
479 i += w;
480 addr = vesa_SetWindow(vesa_write_win, offset + i);
481 }
482 dosmemput(p_row + i, p_row_size - i, addr);
483 }
484}
485
486static unsigned long
487vesa_MakeColor(struct Pixel p)

Callers 4

vesa_FillRectFunction · 0.85
vesa_redrawmapFunction · 0.85
vesa_WriteTextRowFunction · 0.85
vesa_DisplayCellFunction · 0.85

Calls 1

vesa_SetWindowFunction · 0.85

Tested by

no test coverage detected