tecmosys: added sprite buffering / list select so that sprites render properly at 60fps, without 'trails'

(yes I know this is a lot of submits, but maybe some of the new additions will be interested in seeing how a driver develops..)
This commit is contained in:
davidhay 2008-05-31 11:38:14 +00:00
parent e73cabb6ad
commit 33da405e0e

View File

@ -194,6 +194,7 @@ static UINT16* bg2tilemap_ram;
static UINT16* bg1tilemap_ram;
static UINT16* bg0tilemap_ram;
static UINT16* fgtilemap_ram;
static int tecmosys_spritelist;
static MACHINE_RESET( deroon );
@ -276,12 +277,17 @@ static WRITE16_HANDLER( unk880000_w )
{
switch( offset )
{
case 0x08/2:
tecmosys_spritelist = data & 0x3; // which of the 4 spritelists to use (buffering)
break;
case 0x22/2:
watchdog_reset( machine );
//logerror( "watchdog_w( %06x, %04x ) @ %06x\n", (offset * 2)+0x880000, data, activecpu_get_pc() );
break;
default:
//logerror( "unk880000_w( %06x, %04x ) @ %06x\n", (offset * 2)+0x880000, data, activecpu_get_pc() );
logerror( "unk880000_w( %06x, %04x ) @ %06x\n", (offset * 2)+0x880000, data, activecpu_get_pc() );
break;
}
}
@ -521,9 +527,11 @@ static VIDEO_UPDATE(deroon)
tilemap_mark_all_tiles_dirty(bg0tilemap);
tilemap_draw(bitmap,cliprect,bg0tilemap,0,0);
/* there are multiple spritelists in here, to allow for buffering */
for (i=0;i<0x10000/2;i+=8)
for (i=(tecmosys_spritelist*0x4000)/2;i<((tecmosys_spritelist+1)*0x4000)/2;i+=8)
{
int xcnt,ycnt;
int drawx, drawy;