A fast way to mark a sprite dirty is sprite.MoveOffset(0,0).
Are you sure your sprites are transparent and not occluding the background you drew to the screen? Sometimes it is really tricky getting various layers and transparency working. I just did some testing, and I can't verify that drawall() erases the background. I could be wrong, but with some quick limited testing, I don't think that it does.
' comp.DrawAll() 'DrawAll() does a clear screen???
<more code stuffis>
screen = CreateObject("roScreen", true, 640, 480)
sh = screen.GetHeight()
sw = screen.GetWidth()
backgroundBM = CreateObject("roBitmap", "pkg:/images/Background.jpg")
comp = CreateObject("roCompositor")
sbitMap = CreateObject("roBitmap", "pkg:/images/smallsprite.png")
sregion = CreateObject("roRegion", sBitMap, 0, 0, sBitMap.GetWidth(), sBitMap.Getheight())
sprite = comp.NewSprite(100, 100, sregion, 1)
Counter = 0
while Counter < 400
screen.DrawObject(0,0, backgroundBM) ' <<--- Image blit
if Counter < 200 then
if Counter = 0 then Print "Using DrawAll()"
if Counter = 200 then Print "Using Draw()"
sprite.MoveOffset(0,0) ' Mark sprite dirty.
Counter = Counter + 1