trunk/src/emu/video/pc_vga.c
r17607 | r17608 | |
2768 | 2768 | break; |
2769 | 2769 | case 0x0060: |
2770 | 2770 | // 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]; |
2772 | 2772 | break; |
2773 | 2773 | } |
2774 | 2774 | |
r17607 | r17608 | |
2849 | 2849 | break; |
2850 | 2850 | case 0x0060: |
2851 | 2851 | // 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]; |
2853 | 2853 | break; |
2854 | 2854 | } |
2855 | 2855 | |
r17607 | r17608 | |
3134 | 3134 | s3.curr_y,s3.rect_width,s3.rect_height,s3.fgcolour); |
3135 | 3135 | break; |
3136 | 3136 | } |
3137 | | offset = VGA_START_ADDRESS; |
| 3137 | offset = 0; |
3138 | 3138 | offset += (VGA_LINE_LENGTH * s3.curr_y); |
3139 | 3139 | offset += s3.curr_x; |
3140 | 3140 | for(y=0;y<=s3.rect_height;y++) |
r17607 | r17608 | |
3183 | 3183 | s3.curr_y,s3.rect_width,s3.rect_height,s3.fgcolour); |
3184 | 3184 | break; |
3185 | 3185 | case 0xc000: // BitBLT |
3186 | | offset = VGA_START_ADDRESS; |
| 3186 | offset = 0; |
3187 | 3187 | offset += (VGA_LINE_LENGTH * s3.dest_y); |
3188 | 3188 | offset += s3.dest_x; |
3189 | | src = VGA_START_ADDRESS; |
| 3189 | src = 0; |
3190 | 3190 | src += (VGA_LINE_LENGTH * s3.curr_y); |
3191 | 3191 | src += s3.curr_x; |
3192 | 3192 | for(y=0;y<=s3.rect_height;y++) |
r17607 | r17608 | |
3241 | 3241 | s3.curr_x,s3.curr_y,s3.dest_x,s3.dest_y,s3.rect_width,s3.rect_height); |
3242 | 3242 | break; |
3243 | 3243 | case 0xe000: // Pattern Fill |
3244 | | offset = VGA_START_ADDRESS; |
| 3244 | offset = 0; |
3245 | 3245 | offset += (VGA_LINE_LENGTH * s3.dest_y); |
3246 | 3246 | offset += s3.dest_x; |
3247 | | src = VGA_START_ADDRESS; |
| 3247 | src = 0; |
3248 | 3248 | src += (VGA_LINE_LENGTH * s3.curr_y); |
3249 | 3249 | src += s3.curr_x; |
3250 | 3250 | if(data & 0x0020) |
r17607 | r17608 | |
3540 | 3540 | */ |
3541 | 3541 | case 0xf000: |
3542 | 3542 | s3.multifunc_sel = data & 0x000f; |
| 3543 | logerror("S3: Multifunction select write %04x\n",data); |
3543 | 3544 | default: |
3544 | 3545 | logerror("S3: Unimplemented multifunction register %i write %03x\n",data >> 12,data & 0x0fff); |
3545 | 3546 | } |
r17607 | r17608 | |
3557 | 3558 | data_size = 16; |
3558 | 3559 | if(s3.bus_size == 2) // 32-bit |
3559 | 3560 | data_size = 32; |
3560 | | off = VGA_START_ADDRESS; |
| 3561 | off = 0; |
3561 | 3562 | off += (VGA_LINE_LENGTH * s3.curr_y); |
3562 | 3563 | off += s3.curr_x; |
3563 | 3564 | if(s3.current_cmd & 0x02) // "across plane mode" |