trunk/src/mame/drivers/gunpey.c
| r21501 | r21502 | |
| 220 | 220 | TIMER_DEVICE_CALLBACK_MEMBER(gunpey_scanline); |
| 221 | 221 | void gunpey_irq_check(UINT8 irq_type); |
| 222 | 222 | UINT16 m_vram_bank; |
| 223 | |
| 224 | UINT16 main_vram[0x800][0x800]; |
| 223 | 225 | }; |
| 224 | 226 | |
| 225 | 227 | |
| r21501 | r21502 | |
| 398 | 400 | { |
| 399 | 401 | // UINT16 *blit_buffer = m_blit_buffer; |
| 400 | 402 | UINT16 *blit_ram = m_blit_ram; |
| 401 | | // UINT8 *blit_rom = memregion("blit_data")->base(); |
| 402 | | // int x,y; |
| 403 | UINT8 *blit_rom = memregion("blit_data")->base(); |
| 404 | UINT8 *vram = memregion("vram")->base(); |
| 403 | 405 | |
| 406 | // int x,y; |
| 407 | |
| 404 | 408 | //printf("gunpey_blitter_w offset %01x data %02x\n", offset,data); |
| 405 | 409 | |
| 406 | 410 | blit_ram[offset] = data; |
| r21501 | r21502 | |
| 415 | 419 | int ysize = blit_ram[0x0e]+1; |
| 416 | 420 | // int color,color_offs; |
| 417 | 421 | |
| 418 | | printf("%04x %04x %04x %04x %02x %02x\n",srcx,srcy,dstx,dsty,xsize,ysize); |
| 422 | /* |
| 423 | printf("%02x %02x %02x %02x| (X SRC 4: %02x 5: %02x (val %04x)) (Y SRC 6: %02x 7: %02x (val %04x)) | (X DEST 8: %02x 9: %02x (val %04x)) (Y DEST a: %02x b: %02x (val %04x)) | %02x %02x %02x %02x\n" |
| 424 | ,blit_ram[0],blit_ram[1],blit_ram[2],blit_ram[3] |
| 419 | 425 | |
| 426 | |
| 427 | ,blit_ram[4],blit_ram[5], srcx |
| 428 | ,blit_ram[6],blit_ram[7], srcy |
| 429 | |
| 430 | ,blit_ram[8],blit_ram[9], dstx |
| 431 | ,blit_ram[0xa],blit_ram[0xb], dsty |
| 432 | ,blit_ram[0xc], |
| 433 | |
| 434 | blit_ram[0xd],blit_ram[0xe],blit_ram[0xf]); |
| 435 | */ |
| 436 | //if (srcx & 0xf800) printf("(error srcx &0xf800)"); |
| 437 | //if (srcy & 0xf800) printf("(error srcy &0xf800)"); |
| 438 | |
| 439 | |
| 420 | 440 | gunpey_irq_check(4); |
| 421 | 441 | |
| 422 | | #if 0 |
| 423 | | if(blit_ram[0x01] == 8) //1bpp? |
| 442 | for (int y=0;y<ysize;y++) |
| 424 | 443 | { |
| 425 | | // ... |
| 444 | for (int x=0;x<xsize;x++) |
| 445 | { |
| 446 | vram[(((dsty+y)&0x7ff)*0x800)+((dstx+x)&0x7ff)] = blit_rom[(((srcy+y)&0x7ff)*0x800)+((srcx+x)&0x7ff)]; |
| 447 | } |
| 426 | 448 | } |
| 427 | | else //4bpp |
| 428 | | { |
| 429 | | for(y=0;y<ysize;y++) |
| 430 | | { |
| 431 | | for(x=0;x<xsize;x+=2) |
| 432 | | { |
| 433 | | UINT32 src_index = ((srcy+y)*2048+(srcx+x)) & 0x3fffff; |
| 434 | | UINT32 dst_index = ((dsty+y)*512+(dstx+x)) & 0x3ffff; |
| 435 | 449 | |
| 436 | | color_offs = ((blit_rom[src_index] & 0xf0)>>4) + 0x10; |
| 437 | | color = (blit_rom[color_offs*2+0x3B1DFD]) | (blit_rom[color_offs*2+0x3B1DFD+1]<<8); |
| 438 | | blit_buffer[dst_index+1] = color; |
| 450 | |
| 439 | 451 | |
| 440 | | color_offs = ((blit_rom[src_index] & 0xf)>>0) + 0x10; |
| 441 | | color = (blit_rom[color_offs*2+0x3B1DFD]) | (blit_rom[color_offs*2+0x3B1DFD+1]<<8); |
| 442 | | blit_buffer[dst_index] = color; |
| 443 | | } |
| 444 | | } |
| 445 | | } |
| 446 | | #endif |
| 447 | 452 | /* |
| 448 | 453 | printf("%02x %02x %02x %02x|%02x %02x %02x %02x|%02x %02x %02x %02x|%02x %02x %02x %02x\n" |
| 449 | 454 | ,blit_ram[0],blit_ram[1],blit_ram[2],blit_ram[3] |
| r21501 | r21502 | |
| 652 | 657 | static GFXDECODE_START( gunpey ) |
| 653 | 658 | GFXDECODE_ENTRY( "blit_data", 0, gunpey, 0x0000, 0x1 ) |
| 654 | 659 | GFXDECODE_ENTRY( "fakerom", 0x18000, fake_layout, 0x0, 2 ) |
| 660 | GFXDECODE_ENTRY( "vram", 0, gunpey, 0x0000, 0x1 ) |
| 655 | 661 | |
| 656 | 662 | GFXDECODE_END |
| 657 | 663 | |
| r21501 | r21502 | |
| 700 | 706 | |
| 701 | 707 | ROM_REGION( 0x400000, "blit_data", 0 ) |
| 702 | 708 | ROM_LOAD( "gp_rom3.025", 0x00000, 0x400000, CRC(f2d1f9f0) SHA1(0d20301fd33892074508b9d127456eae80cc3a1c) ) |
| 709 | ROM_REGION( 0x400000, "vram", ROMREGION_ERASEFF ) |
| 703 | 710 | |
| 704 | 711 | ROM_REGION( 0x400000, "ymz", 0 ) |
| 705 | 712 | ROM_LOAD( "gp_rom4.525", 0x000000, 0x400000, CRC(78dd1521) SHA1(91d2046c60e3db348f29f776def02e3ef889f2c1) ) // 11xxxxxxxxxxxxxxxxxxxx = 0xFF |