Previous 15994 Revisions Next

r7150 Saturday 23rd January, 2010 at 16:12:17 UTC by Angelo Salese
[Super A'Can] Implemented vertical direction for sprites, fixes grappling throws in Sango Fighter
[src/mess/drivers]supracan.c

src/mess/drivers/supracan.c
r7149r7150
257257         xsize = 1 << (supracan_vram[i+1] & 7);
258258         ysize = ((supracan_vram[i+0] & 0x1e00) >> 9)+1;
259259
260//         if(vflip)
261
262
263         for(ytile = 0; ytile < ysize; ytile++)
260         if(vflip)
264261         {
265            if(hflip)
262            for(ytile = (ysize - 1); ytile >= 0; ytile--)
266263            {
267               for(xtile = (xsize - 1); xtile >= 0; xtile--)
264               if(hflip)
268265               {
269                  UINT16 data = supracan_vram[spr_offs/2+ytile*xsize+xtile];
270                  int tile = (bank * 0x200) + (data & 0x03ff);
271                  int xflip = (data & 0x0800) ? 0 : 1;
272                  int yflip = (data & 0x0400) ? 1 : 0;
273                  col = (data & 0xf000) >> 12;
274                  drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,col,xflip,yflip,x+((xsize - 1) - xtile)*8,y+ytile*8,0);
266                  for(xtile = (xsize - 1); xtile >= 0; xtile--)
267                  {
268                     UINT16 data = supracan_vram[spr_offs/2+ytile*xsize+xtile];
269                     int tile = (bank * 0x200) + (data & 0x03ff);
270                     int xflip = (data & 0x0800) ? 0 : 1;
271                     int yflip = (data & 0x0400) ? 0 : 1;
272                     col = (data & 0xf000) >> 12;
273                     drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,col,xflip,yflip,x+((xsize - 1) - xtile)*8,y+((ysize - 1) - ytile)*8,0);
274                  }
275275               }
276               else
277               {
278                  for(xtile = 0; xtile < xsize; xtile++)
279                  {
280                     UINT16 data = supracan_vram[spr_offs/2+ytile*xsize+xtile];
281                     int tile = (bank * 0x200) + (data & 0x03ff);
282                     int xflip = (data & 0x0800) ? 1 : 0;
283                     int yflip = (data & 0x0400) ? 0 : 1;
284                     col = (data & 0xf000) >> 12;
285                     drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,col,xflip,yflip,x+xtile*8,y+((ysize - 1) - ytile)*8,0);
286                  }
287               }
276288            }
277            else
289         }
290         else
291         {
292            for(ytile = 0; ytile < ysize; ytile++)
278293            {
279               for(xtile = 0; xtile < xsize; xtile++)
294               if(hflip)
280295               {
281                  UINT16 data = supracan_vram[spr_offs/2+ytile*xsize+xtile];
282                  int tile = (bank * 0x200) + (data & 0x03ff);
283                  int xflip = (data & 0x0800) ? 1 : 0;
284                  int yflip = (data & 0x0400) ? 1 : 0;
285                  col = (data & 0xf000) >> 12;
286                  drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,col,xflip,yflip,x+xtile*8,y+ytile*8,0);
296                  for(xtile = (xsize - 1); xtile >= 0; xtile--)
297                  {
298                     UINT16 data = supracan_vram[spr_offs/2+ytile*xsize+xtile];
299                     int tile = (bank * 0x200) + (data & 0x03ff);
300                     int xflip = (data & 0x0800) ? 0 : 1;
301                     int yflip = (data & 0x0400) ? 1 : 0;
302                     col = (data & 0xf000) >> 12;
303                     drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,col,xflip,yflip,x+((xsize - 1) - xtile)*8,y+ytile*8,0);
304                  }
287305               }
306               else
307               {
308                  for(xtile = 0; xtile < xsize; xtile++)
309                  {
310                     UINT16 data = supracan_vram[spr_offs/2+ytile*xsize+xtile];
311                     int tile = (bank * 0x200) + (data & 0x03ff);
312                     int xflip = (data & 0x0800) ? 1 : 0;
313                     int yflip = (data & 0x0400) ? 1 : 0;
314                     col = (data & 0xf000) >> 12;
315                     drawgfx_transpen(bitmap,cliprect,machine->gfx[region],tile,col,xflip,yflip,x+xtile*8,y+ytile*8,0);
316                  }
317               }
288318            }
289319         }
290320      }

Previous 15994 Revisions Next


© 1998-2018 The MESS Team