
org 41600
;-----------------------
; esta tabla contiene las entradas que definen las imagenes del mapa del mundo para 
; tus juegos con scroll. 
; la tabla se ensambla en la 42040 y contiene 3 parametros globales (que ocupan 5 bytes en total) y 
; y una lista de "map items", los cuales estan descritos por 3 parametros cada uno (x,y,direccion de imagen)
; la lista puede contener hasta 82 items pero se puede limitar con uno de los parametros globales.
; la lista ocupa los 5 bytes iniciales + 82 items x 6 bytes = 5+492=497 bytes
; Por tanto el mapa del mundo puede tener hasta 82 elementos o "map items"
; la tabla comienza con 3 parametros que definen el alto maximo, ancho maximo y el numero de items
; los elementos de mapa se transforman en sprites mediante MAP2SP() que es una funcion que debes invocar en cada ciclo de juego
; ya que los map items van cambiando cada vez que te mueves en un juego con scroll.
; al invocar MAP2SP(), los items que se encuentren dentro de la pantalla (total o parcialmente) se transforman en sprites
; empezando por el sprite 0 en adelante. Ojo por que si consumes los 32 sprites no te quedaran para tu personaje y enemigos, etc
; si usas este mecanismo, tu personaje y los enemigos deben usar los sprites desde 31 hacia abajo, de ese modo evitaras posibles
; choques entre los sprites que usa el mecanismo de scroll y tus personajes.

; las coordenadas de los elementos del mapa deben ser todas positivas, entre 0 y 320000 y el eje vertical a diferencia
; de la pantalla del amstrad, crece hacia arriba. 
;
;  32000
;    ^
;    |
;    |
;    |
;   0+---------> 32000
;    0
;
; coordy, coordx, image
; ---------------------

_MAP_TABLE

;----------------------------------------------------------------------------------------------
; primero 3 parametros antes de la lista de "map items"
MAX_SP_HEIGHT dw 180; maximo alto de un sprite por si se cuela por arriba y ya hay que pintar parte de el
MAX_SP_WIDTH dw -60; ancho maximo de cualquier map item. debe expresarse como numero negativo
MAPITEMS db 81; numero de elementos del mapa a considerar. como mucho debe ser 82

; la tabla de map items se recorre buscando items que puedan aparecer en pantalla.
; se tienen en cuenta los anchos y altos anteriores para items que puedan estar solo parcialmente
; A esos items se les aplica el clipping pero parte de ellos se pinta, logicamente
; si ambos "maximos" se ponen a cero, entonces es necesario que la esquina superior izq se encuentre dentro
; de la pantalla para ser representados
;
; en este ejemplo hay dos items que se deben pintar parcialmente en la pantalla
;
;                 +--+
;        +--------|  |---------+
;        |        |  |         |
;        |        +--+         |
;   +------+                   |
;   |      |      screen       |
;   +------+                   |
;        |                     |
;        |                     |
;        +---------------------+

; a partir de aqui comienzan los items

_BEGIN_MAP


dw 250,30,GRID;
dw 375,45,egg;
dw 450,30,GRID;
dw 600,30,GRID;
dw 750,30,GRID;
dw 950,30,GRID;
dw 1050,30,GRID;
dw 350,80,GRID;
dw 500,80,HOLE;
dw 700,80,egg;
dw 200,370,egg;
dw 350,410,egg;
dw 200,180,GRID;
dw 350,180,GRID;
dw 200,390,GRID;
dw 350,390,GRID;
dw 500,180,GRID;
dw 600,190,egg;
dw 700,180,GRID;
dw 730,250,CRUZ;ok b1
dw 730,280,CRUZ;
dw 760,250,CRUZ;
dw 760,280,CRUZ;ok 
dw 530,490,CRUZ;ok b3
dw 530,520,CRUZ;
dw 580,490,CRUZ;
dw 580,520,CRUZ;ok
dw 1150,300,CRUZ;ok b2   
dw 1150,340,CRUZ;
dw 1170,300,CRUZ;
dw 1170,340,CRUZ;ok
dw 1200,80,egg;
dw 1200,180,egg;
dw 1200,280,HOLE;
dw 1200,380,egg;
dw 1200,480,HOLE;
dw 1200,580,egg;
dw 1200,780,HOLE;
dw 1200,880,egg;
dw 1200,980,HOLE;
dw 1000,980,grid;
dw 1000,780,grid;
dw 1000,580,grid;
dw 1000,380,grid;
dw 1390,40,exit;ok    
dw 1390,90,exit;
dw 1450,40,exit;
dw 1450,90,exit;ok 
dw 200,230,grid;
dw 250,260,egg;
dw 300,300,grid;
dw 350,380,HOLE;
dw 300,100,egg;
dw 1000,50,egg;
dw 350,200,HOLE;
dw 320,280,HOLE;
dw 410,320,grid;
dw 410,110,HOLE;
dw 650,200,grid;
dw 410,390,hole;
dw 600,600,egg;
dw 500,580,hole;
_END_MAP
