Nie wiem czy tak sie rysowalo surface ale:
GML
obraz_tilesow=sprite_add("tilesy.png",0,0,0,0,0,0);
tiles=surface_create(/*szerokosc obrazu tilesow*/,/*wysokosc*/);
draw_sprite(obraz_tilesow,0,0,0);
for(j=0;j</*ilosc tilesow w pionie*/;j+=1){
for(i=0;i</*ilosc tilesow w poziomie*/;i+=1){
tile=sprite_create_from_surface(tiles,i*32,j*32,32,32,1,0,0,0,16,16);
}}