Non ho tempo di guardare bene tutto, ma a occhio posso sospettare che il problema sta nella scrittura sintetica che ti ho suggerito, che forse non hai colto a pieno. Prova a impostare il contatore iniziale su 1 invece che su 0, OPPURE (le due strade sono alternative ma ugualmente valide) a sostituire la funzione imgLoaded con questa, lasciando il contatore iniziale impostato su 0:

codice:
    function imgLoaded() {
        contatore++;
        if(contatore === tilesYNr) {
            drawScreen();
        }
L'errore probabilmente sta lì