Procedure PreloadTiles(filename.s)
LoadSprite(#TileImage,filename,#PB_Sprite_Memory)
If IsSprite(#TileImage)=0
MessageRequester("Error","Couldn't load tiles.")
ProcedureReturn
EndIf
UseBuffer(#TileImage)
Global Dim TileGraphics.l(SpriteWidth(#TileImage)/#SpriteSize,SpriteHeight(#TileImage)/#SpriteSize)
Global TileImageHeight.l : TileImageHeight=SpriteHeight(#TileImage)
Global TileImageWidth.l : TileImageWidth=SpriteWidth(#TileImage)
For i = 0 To TileImageWidth/#SpriteSize
For j = 0 To TileImageHeight/#SpriteSize
CompilerIf #_MAP_EDITOR_=0
TileGraphics(i,j)=CreateSprite(#PB_Any,#SpriteSize,#SpriteSize)
UseBuffer(TileGraphics(i,j))
ClipSprite(#TileImage,i*#SpriteSize,j*#SpriteSize,#SpriteSize,#SpriteSize)
DisplaySprite(#TileImage,0,0)
CompilerElse
TileGraphics(i,j)=GrabSprite(#PB_Any,i*#SpriteSize,j*#SpriteSize,#SpriteSize,#SpriteSize)
CompilerEndIf
Next
Next
FreeSprite(#TileImage)
UseBuffer(-1)
EndProcedure