diff options
-rw-r--r-- | src/mame/drivers/aerofgt.c | 2 | ||||
-rw-r--r-- | src/mame/video/aerofgt.c | 61 |
2 files changed, 23 insertions, 40 deletions
diff --git a/src/mame/drivers/aerofgt.c b/src/mame/drivers/aerofgt.c index 7bf6cf50293..50da02dacd7 100644 --- a/src/mame/drivers/aerofgt.c +++ b/src/mame/drivers/aerofgt.c @@ -349,7 +349,7 @@ static ADDRESS_MAP_START( aerfboot_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0fe400, 0x0fe401) AM_WRITENOP AM_RANGE(0x0fe402, 0x0fe403) AM_WRITENOP AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_BASE(&aerofgt_rasterram) /* used only for the scroll registers */ - AM_RANGE(0x10b800, 0x10bfff) AM_RAM AM_BASE(&aerofgt_spriteram3) AM_SIZE(&aerofgt_spriteram3_size) + AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_BASE(&aerofgt_spriteram3) AM_SIZE(&aerofgt_spriteram3_size) ADDRESS_MAP_END static ADDRESS_MAP_START( wbbc97_map, ADDRESS_SPACE_PROGRAM, 16 ) diff --git a/src/mame/video/aerofgt.c b/src/mame/video/aerofgt.c index 01e066de2b9..007685e6106 100644 --- a/src/mame/video/aerofgt.c +++ b/src/mame/video/aerofgt.c @@ -479,15 +479,15 @@ static void pspikesb_draw_sprites(running_machine *machine, bitmap_t *bitmap,con static void aerfboot_draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect) { int attr_start;//,base,first; - +// int notdraw = 0; // base = chip * 0x0200; // first = 4 * aerofgt_spriteram3[0x1fe + base]; - for (attr_start = aerofgt_spriteram3_size/2 - 4;attr_start >= 0;attr_start -= 4) + for (attr_start = aerofgt_spriteram3_size/2 - 4 /* - 16 */;attr_start >= 0;attr_start -= 4) { int code; - int ox,oy,x,y,xsize,ysize,zoomx,zoomy,flipx,flipy,color,pri; + int ox,oy,sx,sy,zoomx,zoomy,flipx,flipy,color,pri; // some other drivers still use this wrong table, they have to be upgraded // int zoomtable[16] = { 0,7,14,20,25,30,34,38,42,46,49,52,54,57,59,61 }; @@ -497,52 +497,35 @@ static void aerfboot_draw_sprites(running_machine *machine, bitmap_t *bitmap,con flipy = aerofgt_spriteram3[attr_start + 2] & 0x8000; color = aerofgt_spriteram3[attr_start + 2] & 0x000f; -// xsize = (aerofgt_spriteram3[attr_start + 2] & 0x0700) >> 8; - xsize = (aerofgt_spriteram3[attr_start + 1] & 0x0e00) >> 9; zoomx = (aerofgt_spriteram3[attr_start + 1] & 0xf000) >> 12; -// ysize = (aerofgt_spriteram3[attr_start + 2] & 0x7000) >> 12; - ysize = (aerofgt_spriteram3[attr_start + 0] & 0x0e00) >> 9; zoomy = (aerofgt_spriteram3[attr_start + 0] & 0xf000) >> 12; - pri = aerofgt_spriteram3[attr_start + 2] & 0x0010; - code = aerofgt_spriteram3[attr_start + 3] & 0x3fff; +// code = aerofgt_spriteram3[attr_start + 3] & 0x3fff; + code = aerofgt_spriteram3[attr_start + 3] & 0x1fff; +// if ((!(aerofgt_spriteram3[attr_start + 0])) & (!(aerofgt_spriteram3[attr_start + 1])) & +// (!(aerofgt_spriteram3[attr_start + 2])) & (!(aerofgt_spriteram3[attr_start + 3]))) notdraw = 1; -// aerofgt has this adjustment, but doing it here would break turbo force title screen -// ox += (xsize*zoomx+2)/4; -// oy += (ysize*zoomy+2)/4; +// if (notdraw) continue; - zoomx = 32 - zoomx; - zoomy = 32 - zoomy; + if (!(aerofgt_spriteram3[attr_start + 2] & 0x0040)) code |= 0x2000; - for (y = 0;y <= ysize;y++) - { - int sx,sy; + zoomx = 32 + zoomx; + zoomy = 32 + zoomy; - if (flipy) sy = ((oy + zoomy * (ysize - y)/2 + 16) & 0x1ff) - 16; - else sy = ((oy + zoomy * y / 2 + 16) & 0x1ff) - 16; - - for (x = 0;x <= xsize;x++) - { - if (flipx) sx = ((ox + zoomx * (xsize - x) / 2 + 16) & 0x1ff) - 16; - else sx = ((ox + zoomx * x / 2 + 16) & 0x1ff) - 16; + sy = ((oy + 16) & 0x1ff) - 16; + + sx = ((ox + 16) & 0x1ff) - 16; - pdrawgfxzoom(bitmap,machine->gfx[sprite_gfx + (code >= 0x1000 ? 0 : 1)], - code, - color, - flipx,flipy, - sx,sy, - cliprect,TRANSPARENCY_PEN,15, - zoomx << 11,zoomy << 11, - pri ? 0 : 0x2); - code++; - } + pdrawgfxzoom(bitmap,machine->gfx[sprite_gfx + (code >= 0x1000 ? 0 : 1)], + code, + color, + flipx,flipy, + sx,sy, + cliprect,TRANSPARENCY_PEN,15, + zoomx << 11,zoomy << 11, + pri ? 0 : 0x2); -// if (xsize == 2) code += 1; -// if (xsize == 4) code += 3; -// if (xsize == 5) code += 2; -// if (xsize == 6) code += 1; - } } } |