r7287 Sunday 7th February, 2010 at 22:46:32 UTC by Angelo Salese
[Super A'Can]: Fixed playfield in African Monopoly
[src/mess/drivers]supracan.c

src/mess/drivers/supracan.c
r7286r7287
135135   int scrollx,scrolly;
136136   int region;
137137   int gfx_mode;
138   int size;
138   int xsize,ysize;
139139   UINT16 tile_bank,pal_bank;
140140
141141   count = (state->tilemap_base_addr[layer]);
142142   /* FIXME: I guess that this truly controls tilemap paging. */
143143   if((state->tilemap_flags[layer] & 0x0f00) == 0xa00)
144      size = 128;
144   {
145      xsize = 128;
146      ysize = 32;
147   }
145148   else
146      size = (state->video_flags & 0x100) ? 64 : 32;
149      xsize = ysize = (state->video_flags & 0x100) ? 64 : 32;
147150
148   /* FIXME: swap scrollx / scrolly */
149   scrolly = (state->tilemap_scrolly[layer] & 0x800) ? ((state->tilemap_scrolly[layer] & (size*8-1)) - size*8) : (state->tilemap_scrolly[layer] & (size*8-1));
150   scrollx = (state->tilemap_scrollx[layer] & 0x800) ? ((state->tilemap_scrollx[layer] & (size*8-1)) - size*8) : (state->tilemap_scrollx[layer] & (size*8-1));
151   scrollx = (state->tilemap_scrollx[layer] & 0x800) ? ((state->tilemap_scrollx[layer] & (xsize*8-1)) - xsize*8) : (state->tilemap_scrollx[layer] & (xsize*8-1));
152   scrolly = (state->tilemap_scrolly[layer] & 0x800) ? ((state->tilemap_scrolly[layer] & (ysize*8-1)) - ysize*8) : (state->tilemap_scrolly[layer] & (ysize*8-1));
151153
152154   gfx_mode = (state->tilemap_mode[layer] & 0x7000) >> 12;
153155
r7286r7287
161163   }
162164
163165
164   for (y=0;y<size;y++)
166   for (y=0;y<ysize;y++)
165167   {
166      for (x=0;x<size;x++)
168      for (x=0;x<xsize;x++)
167169      {
168170         int tile, flipx, flipy, pal;
169171         tile = (supracan_vram[count] & 0x03ff) + tile_bank;
r7286r7287
174176         drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx,(y*8)-scrolly,0);
175177         if(state->tilemap_flags[layer] & 0x20) //wrap-around enable
176178         {
177            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx+size*8,(y*8)-scrolly,0);
178            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx,(y*8)-scrolly+size*8,0);
179            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx+size*8,(y*8)-scrolly+size*8,0);
180            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx-size*8,(y*8)-scrolly,0);
181            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx,(y*8)-scrolly-size*8,0);
182            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx-size*8,(y*8)-scrolly-size*8,0);
179            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx+xsize*8,(y*8)-scrolly,0);
180            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx,(y*8)-scrolly+ysize*8,0);
181            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx+xsize*8,(y*8)-scrolly+ysize*8,0);
182            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx-xsize*8,(y*8)-scrolly,0);
183            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx,(y*8)-scrolly-ysize*8,0);
184            drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,pal,flipx,flipy,(x*8)-scrollx-xsize*8,(y*8)-scrolly-ysize*8,0);
183185         }
184186         count++;
185187      }
r7286r7287
445447   if(state->video_flags & 4)
446448      draw_roz(screen->machine,bitmap,cliprect);
447449
448
449450   return 0;
450451}
451452

Previous 509076 RevisionsNext 50


© 1998-2010 The MESS Team