Listing 3: Function RenderSprites
/* RenderSprites - Draw all sprites into the master bitmap. This routine does no on-screen drawing */ void RenderSprites(HWND hwnd) { int maxx,maxy,x,y,baseInc; BYTE *base,*s; struct SPRITE *sprite; maxx=info->bmiHeader.biWidth; maxy=-info->bmiHeader.biHeight; GdiFlush(); sprite=firstSprite; while(sprite!=NULL) { if( (sprite->xLoc>0) && (sprite->yLoc>0) && ((sprite->xLoc+sprite->w)<maxx) && ((sprite->yLoc+sprite->h)<maxy) ) { s=sprite->base; base=bitmap+(sprite->yLoc*maxx)+sprite->xLoc; baseInc=maxx-sprite->w; x=0; y=sprite->h; while(y) { if(*s!=*sprite->base) *base=*s; base++; s++; x++; /* Is it time to wrap to the next line? */ if(x==sprite->w) { base+=baseInc; x=0; y--; } } } sprite=sprite->next; } GdiFlush(); } /* End of File */