r7288 Sunday 7th February, 2010 at 23:32:01 UTC by Angelo Salese
[Super A'Can]: Improved tilemap paging and wrap-around
[src/mess/drivers]supracan.c

src/mess/drivers/supracan.c
r7287r7288
139139   UINT16 tile_bank,pal_bank;
140140
141141   count = (state->tilemap_base_addr[layer]);
142   /* FIXME: I guess that this truly controls tilemap paging. */
143   if((state->tilemap_flags[layer] & 0x0f00) == 0xa00)
142
143   switch(state->tilemap_flags[layer] & 0x0f00)
144144   {
145      xsize = 128;
146      ysize = 32;
145      case 0x600: xsize = 64; ysize = 32; break;
146      case 0xa00:   xsize = 128; ysize = 32; break;
147      case 0xc00: xsize = 64; ysize = 64; break;
148      default: xsize = 32; ysize = 32; break;
147149   }
148   else
149      xsize = ysize = (state->video_flags & 0x100) ? 64 : 32;
150150
151151   scrollx = (state->tilemap_scrollx[layer] & 0x800) ? ((state->tilemap_scrollx[layer] & (xsize*8-1)) - xsize*8) : (state->tilemap_scrollx[layer] & (xsize*8-1));
152152   scrolly = (state->tilemap_scrolly[layer] & 0x800) ? ((state->tilemap_scrolly[layer] & (ysize*8-1)) - ysize*8) : (state->tilemap_scrolly[layer] & (ysize*8-1));
r7287r7288
155155
156156   switch(gfx_mode)
157157   {
158      case 7:  region = 2; tile_bank = 0x1c00; pal_bank = 0x38; break;
158      case 7:  region = 2; tile_bank = 0x1c00; pal_bank = 0x00; break;
159159      case 4:  region = 0; tile_bank = 0x400;  pal_bank = 0x00; break;
160160      case 2:  region = 1; tile_bank = 0x400;  pal_bank = 0x00; break;
161161      case 0:  region = 1; tile_bank = 0;      pal_bank = 0x00; break;
r7287r7288
182182            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx-xsize*8,(y*8)-scrolly,0);
183183            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx,(y*8)-scrolly-ysize*8,0);
184184            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx-xsize*8,(y*8)-scrolly-ysize*8,0);
185            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx+xsize*8,(y*8)-scrolly-ysize*8,0);
186            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx-xsize*8,(y*8)-scrolly+ysize*8,0);
185187         }
186188         count++;
187189      }

Previous 509076 RevisionsNext 50


© 1998-2010 The MESS Team