- /* 
-  * src/maps.h 
-  * 
-  * Copyright (C) 1998-2002 BigOrno (bigorno@bigorno.net). All rights reserved. 
-  * 
-  * The use and distribution terms for this software are contained in the file 
-  * named README, which can be found in the root of this distribution. By 
-  * using this software in any fashion, you are agreeing to be bound by the 
-  * terms of this license. 
-  * 
-  * You must not remove this notice, or any other, from this software. 
-  */ 
-   
- #ifndef _MAPS_H 
- #define _MAPS_H 
-   
- #include "system.h" 
-   
- #define MAP_NBR_MAPS 0x05 
- #define MAP_NBR_SUBMAPS 0x2F 
- #define MAP_NBR_CONNECT 0x99 
- #define MAP_NBR_BNUMS 0x1FD8 
- #define MAP_NBR_BLOCKS 0x0100 
- #define MAP_NBR_MARKS 0x020B 
- #define MAP_NBR_EFLGC 0x0020 
-   
- /* 
-  * map row definitions, for three zones : hidden top, screen, hidden bottom 
-  * the three zones compose map_map, which contains the definition of the 
-  * current portion of the submap. 
-  */ 
- #define MAP_ROW_HTTOP 0x00 
- #define MAP_ROW_HTBOT 0x07 
- #define MAP_ROW_SCRTOP 0x08 
- #define MAP_ROW_SCRBOT 0x1F 
- #define MAP_ROW_HBTOP 0x20 
- #define MAP_ROW_HBBOT 0x27 
-   
- extern U8 map_map[0x2c][0x20]; 
-   
- /* 
-  * main maps 
-  */ 
- typedef struct 
- { 
-    U16 x, y;      /* initial position for rick */ 
-    U16 row;      /* initial map_map top row within the submap */ 
-    U16 submap;   /* initial submap */ 
-    char *tune;   /* map tune */ 
- } map_t; 
-   
- extern map_t map_maps[MAP_NBR_MAPS]; 
-   
- /* 
-  * sub maps 
-  */ 
- typedef struct 
- { 
-    U16 page;                  /* tiles page */ 
-    U16 bnum;                  /* first block number */ 
-    U16 connect;             /* first connection */ 
-    U16 mark;                  /* first entity mark */ 
- } submap_t; 
-   
- extern submap_t map_submaps[MAP_NBR_SUBMAPS]; 
-   
- /* 
-  * connections 
-  */ 
- typedef struct 
- { 
-    U8 dir; 
-    U8 rowout; 
-    U8 submap; 
-    U8 rowin; 
- } connect_t; 
-   
- extern connect_t map_connect[MAP_NBR_CONNECT]; 
-   
- /* 
-  * blocks - one block is 4 by 4 tiles. 
-  */ 
- typedef U8 block_t[0x10]; 
-   
- extern block_t map_blocks[MAP_NBR_BLOCKS]; 
-   
- /* 
-  * flags for map_marks[].ent ("yes" when set) 
-  * 
-  * MAP_MARK_NACT: this mark is not active anymore. 
-  */ 
- #define MAP_MARK_NACT (0x80) 
-   
- /* 
-  * mark structure 
-  */ 
- typedef struct 
- { 
-    U8 row; 
-    U8 ent; 
-    U8 flags; 
-    U8 xy;   /* bits XXXX XYYY (from b03) with X->x, Y->y */ 
-    U8 lt;   /* bits XXXX XNNN (from b04) with X->trig_x, NNN->lat & trig_y */ 
- } mark_t; 
-   
- extern mark_t map_marks[MAP_NBR_MARKS]; 
-   
- /* 
-  * block numbers, i.e. array of rows of 8 blocks 
-  */ 
- extern U8 map_bnums[MAP_NBR_BNUMS]; 
-   
- /* 
-  * flags for map_eflg[map_map[row][col]]   ("yes" when set) 
-  * 
-  * MAP_EFLG_VERT: vertical move only (usually on top of _CLIMB). 
-  * MAP_EFLG_SOLID: solid block, can't go through. 
-  * MAP_EFLG_SPAD: super pad. can't go through, but sends entities to the sky. 
-  * MAP_EFLG_WAYUP: solid block, can't go through except when going up. 
-  * MAP_EFLG_FGND: foreground (hides entities). 
-  * MAP_EFLG_LETHAL: lethal (kill entities). 
-  * MAP_EFLG_CLIMB: entities can climb here. 
-  * MAP_EFLG_01: 
-  */ 
- #define MAP_EFLG_VERT (0x80) 
- #define MAP_EFLG_SOLID (0x40) 
- #define MAP_EFLG_SPAD (0x20) 
- #define MAP_EFLG_WAYUP (0x10) 
- #define MAP_EFLG_FGND (0x08) 
- #define MAP_EFLG_LETHAL (0x04) 
- #define MAP_EFLG_CLIMB (0x02) 
- #define MAP_EFLG_01 (0x01) 
-   
- extern U8 map_eflg_c[MAP_NBR_EFLGC];   /* compressed */ 
- extern U8 map_eflg[0x100];   /* current */ 
-   
- /* 
-  * map_map top row within the submap 
-  */ 
- extern U8 map_frow; 
-   
- /* 
-  * tiles offset 
-  */ 
- extern U8 map_tilesBank; 
-   
- extern void map_expand (void); 
- extern void map_init (void); 
- extern U8 map_chain (void); 
- extern void map_resetMarks (void); 
-   
- #endif 
-