src/mess/video/vdc.c
| r940 | r941 | |
| 69 | 69 | } else { |
| 70 | 70 | draw_overscan_line( vdc.current_bitmap_line ); |
| 71 | 71 | } |
| 72 | | } else { |
| 72 | } else { |
| 73 | 73 | /* We are in one of the blanking areas */ |
| 74 | 74 | draw_black_line( vdc.current_bitmap_line ); |
| 75 | 75 | } |
| r940 | r941 | |
| 155 | 155 | if(vdc.curline == 261 && ! vdc.vblank_triggered ) { |
| 156 | 156 | |
| 157 | 157 | vdc.vblank_triggered = 1; |
| 158 | | if(vdc.vdc_data[CR].w & CR_VR) { /* generate IRQ1 if enabled */ |
| 158 | if(vdc.vdc_data[CR].w & CR_VR) { /* generate IRQ1 if enabled */ |
| 159 | 159 | vdc.status |= VDC_VD; /* set vblank flag */ |
| 160 | 160 | ret = 1; |
| 161 | 161 | } |
| r940 | r941 | |
| 203 | 203 | |
| 204 | 204 | VIDEO_UPDATE( pce ) |
| 205 | 205 | { |
| 206 | | /* copy our rendering buffer to the display */ |
| 207 | | copybitmap (bitmap,vdc.bmp,0,0,0,0,cliprect,TRANSPARENCY_NONE,0); |
| 206 | /* copy our rendering buffer to the display */ |
| 207 | copybitmap (bitmap,vdc.bmp,0,0,0,0,cliprect,TRANSPARENCY_NONE,0); |
| 208 | 208 | return 0; |
| 209 | 209 | } |
| 210 | 210 | |
| r940 | r941 | |
| 212 | 212 | { |
| 213 | 213 | int i; |
| 214 | 214 | |
| 215 | | /* our line buffer */ |
| 216 | | UINT16 *line_buffer = BITMAP_ADDR16( vdc.bmp, line, 0 ); |
| 215 | /* our line buffer */ |
| 216 | UINT16 *line_buffer = BITMAP_ADDR16( vdc.bmp, line, 0 ); |
| 217 | 217 | |
| 218 | 218 | for( i=0; i< VDC_WPF; i++ ) |
| 219 | 219 | line_buffer[i] = get_black_pen( Machine ); |
| r940 | r941 | |
| 226 | 226 | /* Are we in greyscale mode or in color mode? */ |
| 227 | 227 | int color_base = vdc.vce_control & 0x80 ? 512 : 0; |
| 228 | 228 | |
| 229 | | /* our line buffer */ |
| 230 | | UINT16 *line_buffer = BITMAP_ADDR16( vdc.bmp, line, 0 ); |
| 229 | /* our line buffer */ |
| 230 | UINT16 *line_buffer = BITMAP_ADDR16( vdc.bmp, line, 0 ); |
| 231 | 231 | |
| 232 | 232 | for ( i = 0; i < VDC_WPF; i++ ) |
| 233 | 233 | line_buffer[i] = Machine->pens[color_base + vdc.vce_data[0x100].w]; |
| r940 | r941 | |
| 439 | 439 | /* bump internal address */ |
| 440 | 440 | vdc.vce_address.w = (vdc.vce_address.w + 1) & 0x01FF; |
| 441 | 441 | break; |
| 442 | | } |
| 442 | } |
| 443 | 443 | } |
| 444 | 444 | |
| 445 | 445 | |
| r940 | r941 | |
| 559 | 559 | |
| 560 | 560 | static void conv_obj(int i, int l, int hf, int vf, char *buf) |
| 561 | 561 | { |
| 562 | | int b0, b1, b2, b3, i0, i1, i2, i3, x; |
| 563 | | int xi; |
| 562 | int b0, b1, b2, b3, i0, i1, i2, i3, x; |
| 563 | int xi; |
| 564 | 564 | int tmp; |
| 565 | 565 | |
| 566 | l &= 0x0F; |
| 567 | if(vf) l = (15 - l); |
| 566 | 568 | |
| 567 | | l &= 0x0F; |
| 568 | | if(vf) l = (15 - l); |
| 569 | | |
| 570 | 569 | tmp = l + ( i << 5); |
| 571 | 570 | |
| 572 | | b0 = vram_read((tmp + 0x00)<<1); |
| 573 | | b0 |= vram_read(((tmp + 0x00)<<1)+1)<<8; |
| 571 | b0 = vram_read((tmp + 0x00)<<1); |
| 572 | b0 |= vram_read(((tmp + 0x00)<<1)+1)<<8; |
| 574 | 573 | b1 = vram_read((tmp + 0x10)<<1); |
| 575 | 574 | b1 |= vram_read(((tmp + 0x10)<<1)+1)<<8; |
| 576 | | b2 = vram_read((tmp + 0x20)<<1); |
| 577 | | b2 |= vram_read(((tmp + 0x20)<<1)+1)<<8; |
| 575 | b2 = vram_read((tmp + 0x20)<<1); |
| 576 | b2 |= vram_read(((tmp + 0x20)<<1)+1)<<8; |
| 578 | 577 | b3 = vram_read((tmp + 0x30)<<1); |
| 579 | 578 | b3 |= vram_read(((tmp + 0x30)<<1)+1)<<8; |
| 580 | 579 | |
| 581 | | for(x=0;x<16;x++) |
| 582 | | { |
| 583 | | if(hf) xi = x; else xi = (15 - x); |
| 584 | | i0 = (b0 >> xi) & 1; |
| 585 | | i1 = (b1 >> xi) & 1; |
| 586 | | i2 = (b2 >> xi) & 1; |
| 587 | | i3 = (b3 >> xi) & 1; |
| 588 | | buf[x] = (i3 << 3 | i2 << 2 | i1 << 1 | i0); |
| 589 | | } |
| 580 | for(x=0;x<16;x++) |
| 581 | { |
| 582 | if(hf) xi = x; else xi = (15 - x); |
| 583 | i0 = (b0 >> xi) & 1; |
| 584 | i1 = (b1 >> xi) & 1; |
| 585 | i2 = (b2 >> xi) & 1; |
| 586 | i3 = (b3 >> xi) & 1; |
| 587 | buf[x] = (i3 << 3 | i2 << 2 | i1 << 1 | i0); |
| 588 | } |
| 590 | 589 | } |
| 591 | 590 | |
| 592 | 591 | void pce_refresh_sprites(int bitmap_line, int line, UINT8 *drawn) |