trunk/src/mame/drivers/gunpey.c
| r21535 | r21536 | |
| 208 | 208 | DECLARE_READ8_MEMBER(gunpey_status_r); |
| 209 | 209 | DECLARE_READ8_MEMBER(gunpey_inputs_r); |
| 210 | 210 | DECLARE_WRITE8_MEMBER(gunpey_blitter_w); |
| 211 | DECLARE_WRITE8_MEMBER(gunpey_blitter_upper_w); |
| 212 | DECLARE_WRITE8_MEMBER(gunpey_blitter_upper2_w); |
| 211 | 213 | DECLARE_WRITE8_MEMBER(gunpey_output_w); |
| 212 | 214 | DECLARE_WRITE16_MEMBER(gunpey_vram_bank_w); |
| 213 | 215 | DECLARE_WRITE16_MEMBER(gunpey_vregs_addr_w); |
| r21535 | r21536 | |
| 563 | 565 | gunpey_irq_check(4); |
| 564 | 566 | } |
| 565 | 567 | |
| 568 | #define SHOW_COMPRESSED_DATA_DEBUG |
| 569 | |
| 566 | 570 | WRITE8_MEMBER(gunpey_state::gunpey_blitter_w) |
| 567 | 571 | { |
| 568 | 572 | // UINT16 *blit_buffer = m_blit_buffer; |
| r21535 | r21536 | |
| 608 | 612 | dstx<<=1; |
| 609 | 613 | xsize<<=1; |
| 610 | 614 | |
| 615 | |
| 616 | //int color = space.machine().rand()&0x1f; |
| 617 | |
| 618 | |
| 611 | 619 | if(rle) |
| 612 | 620 | { |
| 613 | 621 | if(rle == 8) |
| 614 | 622 | { |
| 623 | |
| 624 | // compressed stream format: |
| 625 | // |
| 626 | // byte 0 = source width (data is often stored in fairly narrow columns) |
| 627 | |
| 628 | #ifdef SHOW_COMPRESSED_DATA_DEBUG |
| 629 | printf("%02x %02x %02x %02x|%02x %02x %02x %02x|%02x %02x %02x %02x|%02x %02x %02x %02x\n" |
| 630 | ,blit_ram[0],blit_ram[1],blit_ram[2],blit_ram[3] |
| 631 | ,blit_ram[4],blit_ram[5],blit_ram[6],blit_ram[7] |
| 632 | ,blit_ram[8],blit_ram[9],blit_ram[0xa],blit_ram[0xb] |
| 633 | ,blit_ram[0xc],blit_ram[0xd],blit_ram[0xe],blit_ram[0xf]); |
| 634 | int count = 0; |
| 635 | printf("data: "); |
| 636 | #endif |
| 637 | |
| 638 | UINT8 sourcewide = blit_rom[(((srcy)&0x7ff)*0x800)+((srcx)&0x7ff)]; |
| 639 | |
| 615 | 640 | for (int y=0;y<ysize;y++) |
| 616 | 641 | { |
| 617 | 642 | for (int x=0;x<xsize;x++) |
| 618 | 643 | { |
| 619 | | //blit_rom[(((srcy+y)&0x7ff)*0x800)+((srcx+x)&0x7ff)]; |
| 620 | | vram[(((dsty+y)&0x7ff)*0x800)+((dstx+x)&0x7ff)] = 0; |
| 644 | UINT8 dat = blit_rom[(((srcy+y)&0x7ff)*0x800)+((srcx+x)&0x7ff)]; |
| 645 | |
| 646 | // test.. (it's correct) |
| 647 | if (x>sourcewide) dat = 0; |
| 648 | |
| 649 | vram[(((dsty+y)&0x7ff)*0x800)+((dstx+x)&0x7ff)] = dat; |
| 650 | |
| 651 | |
| 652 | #ifdef SHOW_COMPRESSED_DATA_DEBUG |
| 653 | if (count<8) |
| 654 | { |
| 655 | count++; |
| 656 | printf("%02x", dat); |
| 657 | } |
| 658 | #endif |
| 621 | 659 | } |
| 622 | 660 | } |
| 661 | #ifdef SHOW_COMPRESSED_DATA_DEBUG |
| 662 | printf("\n"); |
| 663 | #endif |
| 623 | 664 | } |
| 624 | 665 | else |
| 625 | 666 | printf("unknown RLE mode %02x\n",rle); |
| r21535 | r21536 | |
| 639 | 680 | |
| 640 | 681 | |
| 641 | 682 | /* |
| 642 | | printf("%02x %02x %02x %02x|%02x %02x %02x %02x|%02x %02x %02x %02x|%02x %02x %02x %02x\n" |
| 643 | | ,blit_ram[0],blit_ram[1],blit_ram[2],blit_ram[3] |
| 644 | | ,blit_ram[4],blit_ram[5],blit_ram[6],blit_ram[7] |
| 645 | | ,blit_ram[8],blit_ram[9],blit_ram[0xa],blit_ram[0xb] |
| 646 | | ,blit_ram[0xc],blit_ram[0xd],blit_ram[0xe],blit_ram[0xf]); |
| 683 | |
| 647 | 684 | */ |
| 648 | 685 | } |
| 649 | 686 | } |
| 650 | 687 | |
| 688 | WRITE8_MEMBER(gunpey_state::gunpey_blitter_upper_w) |
| 689 | { |
| 690 | //printf("gunpey_blitter_upper_w %02x %02x\n", offset, data); |
| 691 | |
| 692 | } |
| 693 | |
| 694 | WRITE8_MEMBER(gunpey_state::gunpey_blitter_upper2_w) |
| 695 | { |
| 696 | //printf("gunpey_blitter_upper2_w %02x %02x\n", offset, data); |
| 697 | |
| 698 | } |
| 699 | |
| 700 | |
| 651 | 701 | WRITE8_MEMBER(gunpey_state::gunpey_output_w) |
| 652 | 702 | { |
| 653 | 703 | //bit 0 is coin counter |
| r21535 | r21536 | |
| 685 | 735 | |
| 686 | 736 | AM_RANGE(0x7fc8, 0x7fc9) AM_READWRITE8(gunpey_status_r, gunpey_status_w, 0xffff ) |
| 687 | 737 | AM_RANGE(0x7fd0, 0x7fdf) AM_WRITE8(gunpey_blitter_w, 0xffff ) |
| 738 | AM_RANGE(0x7fe0, 0x7fe5) AM_WRITE8(gunpey_blitter_upper_w, 0xffff ) |
| 739 | AM_RANGE(0x7ff0, 0x7ff5) AM_WRITE8(gunpey_blitter_upper2_w, 0xffff ) |
| 740 | |
| 688 | 741 | //AM_RANGE(0x7FF0, 0x7FF1) AM_RAM |
| 689 | 742 | AM_RANGE(0x7fec, 0x7fed) AM_WRITE(gunpey_vregs_addr_w) |
| 690 | 743 | AM_RANGE(0x7fee, 0x7fef) AM_WRITE(gunpey_vram_bank_w) |