trunk/src/mame/drivers/gunpey.c
| r21523 | r21524 | |
| 240 | 240 | UINT8 *vram = memregion("vram")->base(); |
| 241 | 241 | |
| 242 | 242 | // +0 +1 +2 +3 +4 +5 +6 +7 |
| 243 | | // cccc cccc e--b b--- | xxxx ---- u--- ---- | yyyy ---- --XX XXXX | nnnn nnnn ---Y YYYY | mmmm mmmm -MMM -NNN | hhhh hhhh wwww wwww | ---- ---- ---- ---- | ---- ---- ---- ---- | |
| 243 | // cccc cccc e--b b--- | xxxx ---- u--- ---- | yyyy yy-- --XX XXXX | nnnn nnnn ---Y YYYY | mmmm mmmm -MMM -NNN | hhhh hhhh wwww wwww | ---- ---- ---- ---- | ---- ---- ---- ---- | |
| 244 | 244 | |
| 245 | 245 | // c = color palette |
| 246 | 246 | // e = END marker |
| r21523 | r21524 | |
| 273 | 273 | //UINT32 col = 0xffffff; |
| 274 | 274 | // UINT32 val = (m_wram[count+1] << 16) | ((m_wram[count+2])); |
| 275 | 275 | int xsource = ((m_wram[count+2] & 0x003f) << 4) | ((m_wram[count+1] & 0xf000) >> 12); |
| 276 | | int ysource = ((m_wram[count+3] & 0x001f) << 4) | ((m_wram[count+2] & 0xf000) >> 12); |
| 276 | int ysource = ((m_wram[count+3] & 0x001f) << 6) | ((m_wram[count+2] & 0xfc00) >> 10); |
| 277 | 277 | //printf("%08x %04x %04x\n", val, m_wram[count+1],m_wram[count+2] ); |
| 278 | 278 | // UINT16 xsource = (m_wram[count+2] & 0x00ff << 4) | (m_wram[count+1] & 0xf000 >> 12); |
| 279 | 279 | //xsource<<=1; |
| 280 | 280 | |
| 281 | 281 | xsource<<=1; |
| 282 | | ysource <<=2; |
| 282 | // ysource <<=2; |
| 283 | 283 | |
| 284 | 284 | UINT8 testhack = vram[((((ysource+0)&0x7ff)*0x800) + ((xsource+0)&0x7ff))]; |
| 285 | 285 | UINT8 testhack2 = vram[((((ysource+0)&0x7ff)*0x800) + ((xsource+1)&0x7ff))]; |
| r21523 | r21524 | |
| 289 | 289 | |
| 290 | 290 | |
| 291 | 291 | |
| 292 | |
| 293 | |
| 292 | 294 | printf("sprite %04x %04x %04x %04x %04x %04x %04x %04x\n", m_wram[count+0], m_wram[count+1], m_wram[count+2], m_wram[count+3], m_wram[count+4], m_wram[count+5], m_wram[count+6], m_wram[count+7]); |
| 295 | printf("unused %04x %04x %04x %04x %04x %04x %04x %04x\n\n", m_wram[count+0]&~0xff98, m_wram[count+1]&~0xf080, m_wram[count+2]&~0xfc3f, m_wram[count+3]&~0xf01f, m_wram[count+4]&~0xff77, m_wram[count+5]&~0xffff, m_wram[count+6]&~0x0000, m_wram[count+7]&~0x0000); |
| 293 | 296 | |
| 294 | 297 | if ((testhack2 & 0x0f) == 0x08) |
| 295 | 298 | return m_wram[count+0] & 0x80; |
| r21523 | r21524 | |
| 687 | 690 | int scanline = param; |
| 688 | 691 | |
| 689 | 692 | if(scanline == 224) |
| 693 | { |
| 694 | printf("frame\n"); |
| 690 | 695 | gunpey_irq_check(0x50); |
| 696 | } |
| 691 | 697 | } |
| 692 | 698 | |
| 693 | 699 | |
| 694 | | static const gfx_layout fake_layout = |
| 695 | | { |
| 696 | | 8,8, |
| 697 | | RGN_FRAC(1,4), |
| 698 | | 4, |
| 699 | | { 0,1,2,3 }, |
| 700 | | { 0*4,1*4,2*4,3*4,4*4,5*4,6*4,7*4 }, |
| 701 | | { 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32}, |
| 702 | | 8*32 |
| 703 | | }; |
| 704 | 700 | |
| 705 | 701 | |
| 706 | 702 | |
| 707 | 703 | // this isn't a real decode as such, but the graphic data is all stored in pages 2048 bytes wide at varying BPP levelsl, some (BG data) compressed with what is likely a lossy scheme |
| 708 | 704 | // palette data is in here too, the blocks at the bottom right of all this? |
| 709 | 705 | static GFXLAYOUT_RAW( gunpey, 2048, 1, 2048*8, 2048*8 ) |
| 710 | | //static GFXLAYOUT_RAW( gunpey1024, 1024, 1, 1024*8, 1024*8 ) |
| 711 | 706 | |
| 712 | 707 | static GFXDECODE_START( gunpey ) |
| 713 | 708 | GFXDECODE_ENTRY( "blit_data", 0, gunpey, 0x0000, 0x1 ) |
| 714 | | //GFXDECODE_ENTRY( "vram", 0, gunpey1024, 0x0000, 0x1 ) |
| 715 | 709 | GFXDECODE_ENTRY( "vram", 0, gunpey, 0x0000, 0x1 ) |
| 716 | | |
| 717 | 710 | GFXDECODE_END |
| 718 | 711 | |
| 719 | 712 | |
| r21523 | r21524 | |
| 729 | 722 | |
| 730 | 723 | /* video hardware */ |
| 731 | 724 | MCFG_SCREEN_ADD("screen", RASTER) |
| 732 | | MCFG_SCREEN_RAW_PARAMS(57242400/8, 442, 0, 320, 264, 0, 224) /* just to get ~60 Hz */ |
| 725 | MCFG_SCREEN_RAW_PARAMS(57242400/8, 442, 0, 320, 264, 0, 240) /* just to get ~60 Hz */ |
| 733 | 726 | MCFG_SCREEN_UPDATE_DRIVER(gunpey_state, screen_update_gunpey) |
| 734 | 727 | |
| 735 | 728 | MCFG_PALETTE_LENGTH(0x10000) |