src/mess/drivers/supracan.c
| r7150 | r7151 | |
| 109 | 109 | int region; |
| 110 | 110 | int gfx_mode; |
| 111 | 111 | int size; |
| 112 | | UINT16 tile_bank; |
| 112 | UINT16 tile_bank,pal_bank; |
| 113 | 113 | |
| 114 | 114 | count = (tilemap_base_addr[layer]); |
| 115 | 115 | /* FIXME: I guess that this truly controls tilemap paging. */ |
| r7150 | r7151 | |
| 126 | 126 | |
| 127 | 127 | switch(gfx_mode) |
| 128 | 128 | { |
| 129 | | case 7: region = 2; tile_bank = 0x1c00; break; |
| 130 | | case 4: region = 0; tile_bank = 0x400; break; |
| 131 | | case 2: region = 1; tile_bank = 0x400; break; |
| 132 | | case 0: region = 1; tile_bank = 0; break; |
| 133 | | default: region = 1; tile_bank = 0; break; |
| 129 | case 7: region = 2; tile_bank = 0x1c00; pal_bank = 0x38; break; |
| 130 | case 4: region = 0; tile_bank = 0x400; pal_bank = 0x00; break; |
| 131 | case 2: region = 1; tile_bank = 0x400; pal_bank = 0x00; break; |
| 132 | case 0: region = 1; tile_bank = 0; pal_bank = 0x00; break; |
| 133 | default: region = 1; tile_bank = 0; pal_bank = 0x00; break; |
| 134 | 134 | } |
| 135 | 135 | |
| 136 | 136 | |
| r7150 | r7151 | |
| 142 | 142 | tile = (supracan_vram[count] & 0x03ff) + tile_bank; |
| 143 | 143 | flipx = (supracan_vram[count] & 0x0800) ? 1 : 0; |
| 144 | 144 | flipy = (supracan_vram[count] & 0x0400) ? 1 : 0; |
| 145 | | pal = (supracan_vram[count] & 0xf000) >> 12; |
| 145 | pal = ((supracan_vram[count] & 0xf000) >> 12) + pal_bank; |
| 146 | 146 | |
| 147 | 147 | drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx,(y*8)-scrolly,0); |
| 148 | 148 | if(tilemap_flags[layer] & 0x20) //wrap-around enable |
| r7150 | r7151 | |
| 803 | 803 | { |
| 804 | 804 | if(data & 0x0100) //dma 0x00 fill (or fixed value?) |
| 805 | 805 | { |
| 806 | | //memory_write_word(space, acan_sprdma_regs.dst, 0); |
| 807 | | //acan_sprdma_regs.dst+=2; |
| 808 | | memset(supracan_vram,0x00,0x020000); |
| 806 | memory_write_word(space, acan_sprdma_regs.dst, 0); |
| 807 | acan_sprdma_regs.dst+=2; |
| 808 | //memset(supracan_vram,0x00,0x020000); |
| 809 | 809 | } |
| 810 | 810 | else |
| 811 | 811 | { |
| r7150 | r7151 | |
| 941 | 941 | static GFXDECODE_START( supracan ) |
| 942 | 942 | GFXDECODE_ENTRY( "ram_gfx", 0, supracan_gfx8bpp, 0, 1 ) |
| 943 | 943 | GFXDECODE_ENTRY( "ram_gfx", 0, supracan_gfx4bpp, 0, 0x10 ) |
| 944 | | GFXDECODE_ENTRY( "ram_gfx", 0, supracan_gfx2bpp, 0, 0x10 ) |
| 944 | GFXDECODE_ENTRY( "ram_gfx", 0, supracan_gfx2bpp, 0, 0x40 ) |
| 945 | 945 | GFXDECODE_END |
| 946 | 946 | |
| 947 | 947 | static INTERRUPT_GEN( supracan_irq ) |