private static void XGA_DrawPoint(/*Bitu*/ int x, /*Bitu*/ int y, /*Bitu*/ int c) { if ((xga.curcommand & 0x1) == 0) return; if ((xga.curcommand & 0x10) == 0) return; if (x < xga.scissors.x1) return; if (x > xga.scissors.x2) return; if (y < xga.scissors.y1) return; if (y > xga.scissors.y2) return; /*Bit32u*/ int memaddr = (y * XGA_SCREEN_WIDTH()) + x; /* Need to zero out all unused bits in modes that have any (15-bit or "32"-bit -- the last one is actually 24-bit. Without this step there may be some graphics corruption (mainly, during windows dragging. */ switch (XGA_COLOR_MODE()) { case VGA.M_LIN8: if ((memaddr >= VGA.vga.vmemsize)) break; RAM.writeb(VGA.vga.mem.linear + memaddr, (short) c); break; case VGA.M_LIN15: if ((memaddr * 2 >= VGA.vga.vmemsize)) break; RAM.writew(VGA.vga.mem.linear + memaddr * 2, c & 0x7fff); break; case VGA.M_LIN16: if ((memaddr * 2 >= VGA.vga.vmemsize)) break; RAM.writew(VGA.vga.mem.linear + memaddr * 2, c & 0xffff); break; case VGA.M_LIN32: if ((memaddr * 4 >= VGA.vga.vmemsize)) break; RAM.writed(VGA.vga.mem.linear + memaddr * 4, c); break; default: break; } }