not using DXImageList.Find even better not even using a DXImageList, but simply an array of TDirectDrawSurface objects. The DXImageList is yet another computer which both uses memory and your program has to go through (another layer to get to the core if you like) so it slows your code down. If I'm not mistaken the Find function iterates through all the images until the image with that exact name is found, so you'll be entering a loop which uses a lot of cpu power (100%) so all these things slow you down. I have found that a large "tiled"-bitmap (one bitmap which contains all your graphics) could even make the your application take ages to start up, a long time ago I tried adding a 5 MB bitmap to the DXImageList and the application needed about 1-2 minutes to start up.

A simple array of TDirectDrawSurface objects would solve most of these problems and the cool part of this is that you have more control and that the TDirectDrawSurface object is quite similar to a TBitmap object, however drawing to the DXDraw surface is a bit different and will require getting used to.


EDIT: Another thing you might consider (if you haven't allready) is drawing only the tiles that are visible to you on the screen instead of the entire map!