Previous 199869 Revisions Next

r17608 Monday 3rd September, 2012 at 01:56:29 UTC by Barry Rodewald
(MESS) svga_s3: Made co-ordinates always relative to the start of VRAM.  This fixes Virtual Pool using accelerated S3 video drivers.
[src/emu/video]pc_vga.c

trunk/src/emu/video/pc_vga.c
r17607r17608
27682768      break;
27692769   case 0x0060:
27702770      // video memory - presume the memory is sourced from the current X/Y co-ords
2771      src = vga.memory[(VGA_START_ADDRESS + (s3.curr_y * VGA_LINE_LENGTH) + s3.curr_x) % vga.svga_intf.vram_size];
2771      src = vga.memory[((s3.curr_y * VGA_LINE_LENGTH) + s3.curr_x) % vga.svga_intf.vram_size];
27722772      break;
27732773   }
27742774
r17607r17608
28492849      break;
28502850   case 0x0060:
28512851      // video memory - presume the memory is sourced from the current X/Y co-ords
2852      src = vga.memory[(VGA_START_ADDRESS + (s3.curr_y * VGA_LINE_LENGTH) + s3.curr_x) % vga.svga_intf.vram_size];
2852      src = vga.memory[((s3.curr_y * VGA_LINE_LENGTH) + s3.curr_x) % vga.svga_intf.vram_size];
28532853      break;
28542854   }
28552855
r17607r17608
31343134                  s3.curr_y,s3.rect_width,s3.rect_height,s3.fgcolour);
31353135            break;
31363136         }
3137         offset = VGA_START_ADDRESS;
3137         offset = 0;
31383138         offset += (VGA_LINE_LENGTH * s3.curr_y);
31393139         offset += s3.curr_x;
31403140         for(y=0;y<=s3.rect_height;y++)
r17607r17608
31833183               s3.curr_y,s3.rect_width,s3.rect_height,s3.fgcolour);
31843184         break;
31853185      case 0xc000:  // BitBLT
3186         offset = VGA_START_ADDRESS;
3186         offset = 0;
31873187         offset += (VGA_LINE_LENGTH * s3.dest_y);
31883188         offset += s3.dest_x;
3189         src = VGA_START_ADDRESS;
3189         src = 0;
31903190         src += (VGA_LINE_LENGTH * s3.curr_y);
31913191         src += s3.curr_x;
31923192         for(y=0;y<=s3.rect_height;y++)
r17607r17608
32413241               s3.curr_x,s3.curr_y,s3.dest_x,s3.dest_y,s3.rect_width,s3.rect_height);
32423242         break;
32433243      case 0xe000:  // Pattern Fill
3244         offset = VGA_START_ADDRESS;
3244         offset = 0;
32453245         offset += (VGA_LINE_LENGTH * s3.dest_y);
32463246         offset += s3.dest_x;
3247         src = VGA_START_ADDRESS;
3247         src = 0;
32483248         src += (VGA_LINE_LENGTH * s3.curr_y);
32493249         src += s3.curr_x;
32503250         if(data & 0x0020)
r17607r17608
35403540 */
35413541   case 0xf000:
35423542      s3.multifunc_sel = data & 0x000f;
3543      logerror("S3: Multifunction select write %04x\n",data);
35433544   default:
35443545      logerror("S3: Unimplemented multifunction register %i write %03x\n",data >> 12,data & 0x0fff);
35453546   }
r17607r17608
35573558      data_size = 16;
35583559   if(s3.bus_size == 2)  // 32-bit
35593560      data_size = 32;
3560   off = VGA_START_ADDRESS;
3561   off = 0;
35613562   off += (VGA_LINE_LENGTH * s3.curr_y);
35623563   off += s3.curr_x;
35633564   if(s3.current_cmd & 0x02) // "across plane mode"

Previous 199869 Revisions Next


© 1997-2024 The MAME Team