trunk/src/mame/drivers/gunpey.c
| r21517 | r21518 | |
| 287 | 287 | for(int xi=0;xi<width/2;xi++) |
| 288 | 288 | { |
| 289 | 289 | UINT8 data = vram[((((ysource+yi)&0x7ff)*0x800) + ((xsource+xi)&0x7ff))]; |
| 290 | | |
| 291 | 290 | UINT8 pix; |
| 291 | UINT32 col_offs; |
| 292 | UINT16 color_data; |
| 292 | 293 | |
| 293 | 294 | pix = (data & 0x0f); |
| 295 | col_offs = ((pix + color*0x10) & 0xff) << 1; |
| 296 | col_offs+= ((pix + color*0x10) >> 8)*0x800; |
| 297 | color_data = (vram[col_offs])|(vram[col_offs+1]<<8); |
| 294 | 298 | |
| 299 | if(!(color_data & 0x8000)) |
| 295 | 300 | if(cliprect.contains(x+(xi*2), y+yi)) |
| 296 | | bitmap.pix16(y+yi, x+(xi*2)) = pix + color*0x10; |
| 301 | bitmap.pix16(y+yi, x+(xi*2)) = color_data & 0x7fff; |
| 297 | 302 | |
| 298 | 303 | pix = (data & 0xf0)>>4; |
| 304 | col_offs = ((pix + color*0x10) & 0xff) << 1; |
| 305 | col_offs+= ((pix + color*0x10) >> 8)*0x800; |
| 306 | color_data = (vram[col_offs])|(vram[col_offs+1]<<8); |
| 299 | 307 | |
| 308 | if(!(color_data & 0x8000)) |
| 300 | 309 | if(cliprect.contains(x+1+(xi*2), y+yi)) |
| 301 | | bitmap.pix16(y+yi, x+1+(xi*2)) = pix + color*0x10; |
| 310 | bitmap.pix16(y+yi, x+1+(xi*2)) = color_data & 0x7fff; |
| 302 | 311 | } |
| 303 | 312 | } |
| 304 | 313 | } |
| r21517 | r21518 | |
| 311 | 320 | { |
| 312 | 321 | UINT8 data = vram[((((ysource+yi)&0x7ff)*0x800) + ((xsource+xi)&0x7ff))]; |
| 313 | 322 | UINT8 pix; |
| 323 | UINT32 col_offs; |
| 324 | UINT16 color_data; |
| 314 | 325 | |
| 315 | 326 | pix = (data & 0x3f); |
| 316 | 327 | |
| r21517 | r21518 | |
| 328 | 339 | { |
| 329 | 340 | UINT8 data = vram[((((ysource+yi)&0x7ff)*0x800) + ((xsource+xi)&0x7ff))]; |
| 330 | 341 | UINT8 pix; |
| 342 | UINT32 col_offs; |
| 343 | UINT16 color_data; |
| 331 | 344 | |
| 332 | 345 | pix = (data & 0xff); |
| 346 | col_offs = ((pix + color*0x100) & 0xff) << 1; |
| 347 | col_offs+= ((pix + color*0x100) >> 8)*0x800; |
| 348 | color_data = (vram[col_offs])|(vram[col_offs+1]<<8); |
| 333 | 349 | |
| 350 | if(!(color_data & 0x8000)) |
| 334 | 351 | if(cliprect.contains(x+xi, y+yi)) |
| 335 | | bitmap.pix16(y+yi, x+xi) = pix + color*0x100; |
| 352 | bitmap.pix16(y+yi, x+xi) = color_data & 0x7fff; |
| 336 | 353 | } |
| 337 | 354 | } |
| 338 | 355 | } |
| r21517 | r21518 | |
| 399 | 416 | gunpey_irq_check(4); |
| 400 | 417 | } |
| 401 | 418 | |
| 419 | //flush_pal_data((dstx+x) & 0x7fe,(dsty+y) & 0x7ff); |
| 420 | |
| 402 | 421 | void gunpey_state::flush_pal_data(int x, int y) |
| 403 | 422 | { |
| 404 | 423 | if(y < 512 && x < 512) |
| r21517 | r21518 | |
| 466 | 485 | for (int x=0;x<xsize;x++) |
| 467 | 486 | { |
| 468 | 487 | vram[(((dsty+y)&0x7ff)*0x800)+((dstx+x)&0x7ff)] = blit_rom[(((srcy+y)&0x7ff)*0x800)+((srcx+x)&0x7ff)]; |
| 469 | | flush_pal_data((dstx+x) & 0x7fe,(dsty+y) & 0x7ff); |
| 488 | //flush_pal_data((dstx+x) & 0x7fe,(dsty+y) & 0x7ff); |
| 470 | 489 | } |
| 471 | 490 | } |
| 472 | 491 | |
| r21517 | r21518 | |
| 620 | 639 | |
| 621 | 640 | /***************************************************************************************/ |
| 622 | 641 | |
| 623 | | /* test hack */ |
| 624 | 642 | void gunpey_state::palette_init() |
| 625 | 643 | { |
| 626 | | #if 0 |
| 627 | | int i,r,g,b,val; |
| 628 | | UINT8 *blit_rom = memregion("blit_data")->base(); |
| 644 | int i; |
| 629 | 645 | |
| 630 | | for (i = 0; i < 512; i+=2) |
| 631 | | { |
| 632 | | val = (blit_rom[i+0x3B1DFD]) | (blit_rom[i+0x3B1DFD+1]<<8); |
| 633 | | |
| 634 | | b = (val & 0x001f) >> 0; |
| 635 | | b<<=3; |
| 636 | | g = (val & 0x03e0) >> 5; |
| 637 | | g<<=3; |
| 638 | | r = (val & 0x7c00) >> 10; |
| 639 | | r<<=3; |
| 640 | | |
| 641 | | palette_set_color(machine(), i/2, MAKE_RGB(r, g, b)); |
| 642 | | } |
| 643 | | #endif |
| 646 | for (i = 0; i < 0x8000; i++) |
| 647 | palette_set_color(machine(), i, MAKE_RGB( pal5bit((i >> 10)&0x1f), pal5bit(((i >> 5))&0x1f), pal5bit((i >> 0)&0x1f))); |
| 644 | 648 | } |
| 645 | 649 | |
| 646 | 650 | |
| 647 | 651 | /*: |
| 648 | 652 | 0x01 |
| 649 | 653 | 0x04 blitter ready |
| 650 | | 0x10 vblank too? |
| 654 | 0x10 vblank too? (otherwise you'll get various hangs/inputs stop to work) |
| 651 | 655 | 0x40 almost certainly vblank (reads inputs) |
| 652 | 656 | 0x80 |
| 653 | 657 | */ |