Many thanks for all the suggestions and help. I changed the code to LoadSprite, but it made little difference. The images on average are about 10k in size and 800 x 800 pixels. They are all PNG's with a transparent background. I have stripped the code down to a bare minimum to demonstrate. The act of displaying these sprites cost 30fps!
`Load Knots
LoadSprite(1, "knots_" + str(random(1,2))+ ".png")
SetSpriteSize(1,GetVirtualWidth(),-1)
SetSpriteColor(1,98,0,115,255)
`Load Hair
LoadSprite(2, "hair_" + str(random(1,3))+ ".png")
SetSpriteSize(2,GetVirtualWidth(),-1)
SetSpriteColor(2,0,0,0,255)
`Load Bandana
LoadSprite(3, "bandana.png")
SetSpriteSize(3,GetVirtualWidth(),-1)
SetSpriteColor(3,98,0,115,255)
`Load Face Sprite
LoadSprite(4, "skin.png")
SetSpriteSize(4,GetVirtualWidth(),-1)
SetSpriteColor(4,237,203,166,255)
`Load Earrings
LoadSprite(5, "earring_" + str(random(1,4))+ ".png")
SetSpriteSize(5,GetVirtualWidth(),-1)
`Load Mouth
LoadSprite(6, "mouth_" + str(random(1,2))+ ".png")
SetSpriteSize(6,GetVirtualWidth(),-1)
`Load Eyebag
LoadSprite(8, "eyebag.png")
SetSpriteSize(8,GetVirtualWidth(),-1)
`Load Eyebackground
LoadSprite(9, "eye_background.png")
SetSpriteSize(9,GetVirtualWidth(),-1)
`Load Iris
LoadSprite(10, "iris.png")
SetSpriteSize(10,GetVirtualWidth(),-1)
SetSpriteColor(10,110,51,25,255)
`Load Eyebackground
LoadSprite(11, "eye_foreground.png")
SetSpriteSize(11,GetVirtualWidth(),-1)
`Load Scar
LoadSprite(12, "scar_" + str(random(1,3))+ ".png")
SetSpriteSize(12,GetVirtualWidth(),-1)
`Load Moustache
LoadSprite(13, "moustache_" + str(random(1,6))+ ".png")
SetSpriteSize(13,GetVirtualWidth(),-1)
SetSpriteColor(13,0,0,0,255)
do
Print( ScreenFPS() )
Sync()
loop