Scroll 2

HTML

<div id="screen" style="position:relative"></div>

JavaScript

/*
   Primero, las constantes: TILE_WIDTH y TILE_HEIGHT definen el numero de caracteres
   de ancho y alto dentro de cada tile.
   
   El mapa de juego es de MAPTILE_WIDTH*MAPTILE_HEIGHT tiles.
   
   La pantalla es de VISIBLEMAP_ROWS*VISIBLEMAP_COLS caracteres.
  
*/

var TILE_WIDTH=5;
var TILE_HEIGHT=5;
var MAPTILE_WIDTH=128;
var MAPTILE_HEIGHT=128;
var VISIBLEMAP_COLS=40;
var VISIBLEMAP_ROWS=25;

/*
    Lo anterior define varios "espacios" donde es necesario construir coordenadas:
	- El espacio de mapa, donde x e y definen un tile.
	- El espacio de tile, donde x e y definen un caracter dentro del tile
	- El espacio de pantalla, donde x e y definen un caracter.
	- El espacio de pantalla/tile, donde cada posicion de la pantalla se define como
	  un tile en coordenadas de mapa, mas un offset X/Y dentro del tile.
	  
	  Para eso se usa SCREENMAP(X/Y), que indica que tile esta en la esquina superior izquierda,
	  y SCREENTILEOFF(X/Y) indican las coordenadas de ese tile que llevan al caracter. 

*/
var SCREENMAPX=0; 
var SCREENMAPY=0; 
var SCREENTILEOFFX=0;
var SCREENTILEOFFY=0;
var SCREENMAPX_COUNTER;
var SCREENTILEOFFX_COUNTER;
var SCREENMAPY_COUNTER;
var SCREENTILEOFFY_COUNTER;

var CHARX=0;
var CHARY=0;

var globalMap=[];
for(var k=0;k<MAPTILE_WIDTH*MAPTILE_HEIGHT;k++)
{
   globalMap.push(k%256);
}
var tileMap=[];
// Se inicializan los tiles.Van a ser memoria continua
var counter=0;
for(var j=0;j<256;j++)
{
	// Los vamos a inicializar a un numero aleatorio de hasta 8 digitos.   
   for(var i=0;i<TILE_HEIGHT;i++)
   {	  
	  for(var k=0;k<TILE_WIDTH;k++)
	  {
		tileMap.push(counter%10);		
	  }   
   }
   counter++;
}

var screenMemory=[];
function repaintScreen()
{
	// Se inicializan los contadores al top de la pantalla.
	SCREENMAPX_COUNTER=SCREENMAPX;
	SCREENTILEOFFX_COUNTER=SCREENTILEOFFX;
	SCREENMAPY_COUNTER=SCREENMAPY;
	SCREENTILEOFFY_COUNTER=SCREENTILEOFFY;
	
	// screenCounter lleva el contador de la posicion de memoria donde tenemos
	// que almacenar el...