My code is optimised to only have to draw the background blocks once per screen into an imagebuffer
You an do the equivalent in BlitzMax -- there's code knocking around for blitting pixmaps onto each other (see the myPixmap.Paste() method) or you could just construct the scene on the backbuffer initially then grab it into an image.