mirror of
https://github.com/dwsJason/xrick2gs.git
synced 2024-10-05 04:56:49 +00:00
151 lines
3.4 KiB
C
151 lines
3.4 KiB
C
|
/*
|
||
|
* xrick/include/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
|
||
|
|
||
|
/* eof */
|