1 #ifndef MAIN_EM_H 2 #define MAIN_EM_H 3 4 /* ========================================================================= */ 5 /* external functions and definitions imported from main program to game_em */ 6 /* ========================================================================= */ 7 8 #include "../engines.h" 9 10 11 /* ========================================================================= */ 12 /* functions and definitions that are exported from game_em to main program */ 13 /* ========================================================================= */ 14 15 #include "export.h" 16 17 18 /* ========================================================================= */ 19 /* internal functions and definitions that are not exported to main program */ 20 /* ========================================================================= */ 21 22 #include "global.h" 23 #include "sample.h" 24 25 26 /* ------------------------------------------------------------------------- */ 27 /* constant definitions */ 28 /* ------------------------------------------------------------------------- */ 29 30 /* values for native Emerald Mine game version */ 31 #define FILE_VERSION_EM_UNKNOWN 0 32 #define FILE_VERSION_EM_V1 1 33 #define FILE_VERSION_EM_V2 2 34 #define FILE_VERSION_EM_V3 3 35 #define FILE_VERSION_EM_V4 4 /* (there really was no version 4) */ 36 #define FILE_VERSION_EM_V5 5 37 #define FILE_VERSION_EM_V6 6 38 39 #define FILE_VERSION_EM_ACTUAL FILE_VERSION_EM_V6 40 41 /* level sizes and positions for EM engine */ 42 43 #define WIDTH EM_MAX_CAVE_WIDTH 44 #define HEIGHT EM_MAX_CAVE_HEIGHT 45 46 /* screen sizes and positions for EM engine */ 47 48 #define NEW_TILESIZE 1 49 50 #define ORIG_TILESIZE 16 51 52 #define ORIG_TILEX 16 53 #define ORIG_TILEY 16 54 #define ORIG_SCOREX 8 55 #define ORIG_SCOREY 9 56 #define ORIG_GFXMENUFONTX 14 57 #define ORIG_GFXMENUFONTY 16 58 #define ORIG_MENUFONTX 12 59 #define ORIG_MENUFONTY 16 60 61 #if NEW_TILESIZE 62 #define ZOOM_FACTOR (2 * TILESIZE_VAR / TILESIZE) 63 #else 64 #define ZOOM_FACTOR 2 65 #endif 66 67 #define TILESIZE 32 68 69 #if NEW_TILESIZE 70 extern int TILESIZE_VAR; 71 #define TILEX TILESIZE_VAR 72 #define TILEY TILESIZE_VAR 73 #else 74 #define TILEX (ORIG_TILEX * ZOOM_FACTOR) 75 #define TILEY (ORIG_TILEY * ZOOM_FACTOR) 76 #endif 77 #define SCOREX (ORIG_SCOREX * ZOOM_FACTOR) 78 #define SCOREY (ORIG_SCOREY * ZOOM_FACTOR) 79 #define GFXMENUFONTX (ORIG_GFXMENUFONTX * ZOOM_FACTOR) 80 #define GFXMENUFONTY (ORIG_GFXMENUFONTY * ZOOM_FACTOR) 81 #define MENUFONTX (ORIG_MENUFONTX * ZOOM_FACTOR) 82 #define MENUFONTY (ORIG_MENUFONTY * ZOOM_FACTOR) 83 84 #define ORIG_SCR_MENUX 20 85 #define ORIG_SCR_MENUY 12 86 #define SCR_MENUX 17 87 #define SCR_MENUY 12 88 #if 1 89 extern int SCR_FIELDX, SCR_FIELDY; 90 #else 91 #define SCR_FIELDX 17 92 #define SCR_FIELDY 17 93 #endif 94 #define MAX_BUF_XSIZE (SCR_FIELDX + 2) 95 #define MAX_BUF_YSIZE (SCR_FIELDY + 2) 96 97 /* often used screen positions */ 98 #define ORIG_MENU_SX ((ORIG_SCR_MENUX - SCR_MENUX) * TILEX / 2) 99 #define ORIG_MENU_SY 0 100 #if 1 101 extern int SX, SY; 102 #else 103 #define SX 8 104 #define SY 8 105 #endif 106 #define SXSIZE (SCR_FIELDX * TILEX) 107 #define SYSIZE (SCR_FIELDY * TILEY) 108 109 /* other settings */ 110 #define PLAY_ELEMENT_SOUND FALSE 111 112 113 /* ------------------------------------------------------------------------- */ 114 /* macro function definitions */ 115 /* ------------------------------------------------------------------------- */ 116 117 #define ROUNDED_DIVIDE(x, y) (((x) + (y) - 1) / (y)) 118 119 #define SECONDS_TO_FRAMES(x) ((x) * FRAMES_PER_SECOND) 120 #define FRAMES_TO_SECONDS(x) ((x) / FRAMES_PER_SECOND) 121 122 #define SECONDS_TO_CYCLES(x) ROUNDED_DIVIDE((x) * FRAMES_PER_SECOND, 8) 123 #define CYCLES_TO_SECONDS(x) ROUNDED_DIVIDE((x) * 8, FRAMES_PER_SECOND) 124 125 #define DISPLAY_TIME(x) ROUNDED_DIVIDE(x, FRAMES_PER_SECOND) 126 127 128 /* ------------------------------------------------------------------------- */ 129 /* data structure definitions */ 130 /* ------------------------------------------------------------------------- */ 131 132 /* ------------------------------------------------------------------------- */ 133 /* exported variables */ 134 /* ------------------------------------------------------------------------- */ 135 136 extern unsigned int RandomEM; 137 138 extern struct LEVEL lev; 139 extern struct PLAYER ply[MAX_PLAYERS]; 140 141 extern struct LevelInfo_EM native_em_level; 142 extern struct GraphicInfo_EM graphic_info_em_object[TILE_MAX][8]; 143 extern struct GraphicInfo_EM graphic_info_em_player[MAX_PLAYERS][SPR_MAX][8]; 144 145 extern short **Boom; 146 extern short **Cave; 147 extern short **Next; 148 extern short **Draw; 149 150 extern struct GameInfo_EM game_em; 151 152 extern unsigned char tab_blank[TILE_MAX]; 153 extern unsigned char tab_acid[TILE_MAX]; 154 extern unsigned char tab_amoeba[TILE_MAX]; 155 extern unsigned char tab_android_move[TILE_MAX]; 156 extern unsigned short tab_explode_normal[TILE_MAX]; 157 extern unsigned short tab_explode_dynamite[TILE_MAX]; 158 159 extern unsigned short map_obj[8][TILE_MAX]; 160 extern unsigned short map_spr[2][8][SPR_MAX]; 161 extern unsigned short map_ttl[128]; 162 163 extern Bitmap *screenBitmap; 164 extern Bitmap *scoreBitmap; 165 166 extern Bitmap *objBitmap; 167 extern Bitmap *sprBitmap; 168 extern Bitmap *ttlBitmap; 169 extern Bitmap *botBitmap; 170 171 extern Pixmap screenPixmap; 172 extern Pixmap scorePixmap; 173 extern Pixmap spriteBitmap; 174 175 extern Pixmap objmaskBitmap; 176 extern Pixmap sprmaskBitmap; 177 178 extern GC spriteGC; 179 180 181 /* ------------------------------------------------------------------------- */ 182 /* exported functions */ 183 /* ------------------------------------------------------------------------- */ 184 185 #endif /* MAIN_EM_H */ 186