+// ============================================================================
+// Rocks'n'Diamonds - McDuffin Strikes Back!
+// ----------------------------------------------------------------------------
+// (c) 1995-2024 by Artsoft Entertainment
+// Holger Schemel
+// info@artsoft.org
+// https://www.artsoft.org/
+// ----------------------------------------------------------------------------
+// main_em.h
+// ============================================================================
+
#ifndef MAIN_EM_H
#define MAIN_EM_H
// external functions and definitions imported from main program to game_em
// ============================================================================
-#include "../engines.h"
+#include "import_em.h"
// ============================================================================
// functions and definitions that are exported from game_em to main program
// ============================================================================
-#include "export.h"
+#include "export_em.h"
// ============================================================================
// ============================================================================
#include "global.h"
-#include "sample.h"
// ----------------------------------------------------------------------------
#define FILE_VERSION_EM_ACTUAL FILE_VERSION_EM_V6
-/* level sizes and positions for EM engine */
-
-#define WIDTH EM_MAX_CAVE_WIDTH
-#define HEIGHT EM_MAX_CAVE_HEIGHT
-
/* screen sizes and positions for EM engine */
#define TILESIZE 32
extern int SCR_FIELDX, SCR_FIELDY;
-#define MAX_BUF_XSIZE (SCR_FIELDX + 2)
-#define MAX_BUF_YSIZE (SCR_FIELDY + 2)
+#define MAX_BUF_XSIZE (SCR_FIELDX + 2 * CAVE_BUFFER_XOFFSET)
+#define MAX_BUF_YSIZE (SCR_FIELDY + 2 * CAVE_BUFFER_YOFFSET)
/* often used screen positions */
#define DISPLAY_TIME(x) ROUNDED_DIVIDE(x, FRAMES_PER_SECOND)
+#define CAVE_POS_X(x) ((x) - lev.left)
+#define CAVE_POS_Y(x) ((x) - lev.top)
+
// ----------------------------------------------------------------------------
// data structure definitions
// exported variables
// ----------------------------------------------------------------------------
-extern unsigned int RandomEM;
-
-extern struct LEVEL lev;
+extern struct CAVE cav;
+extern struct LOGIC lev;
extern struct PLAYER ply[MAX_PLAYERS];
extern struct LevelInfo_EM native_em_level;
-extern struct GraphicInfo_EM graphic_info_em_object[TILE_MAX][8];
-extern struct GraphicInfo_EM graphic_info_em_player[MAX_PLAYERS][SPR_MAX][8];
-
-extern short **Boom;
-extern short **Cave;
-extern short **Next;
-extern short **Draw;
-
+extern struct GraphicInfo_EM graphic_info_em_object[GAME_TILE_MAX][8];
+extern struct GraphicInfo_EM graphic_info_em_player[MAX_PLAYERS][PLY_MAX][8];
extern struct GameInfo_EM game_em;
-extern unsigned char tab_blank[TILE_MAX];
-extern unsigned char tab_acid[TILE_MAX];
-extern unsigned char tab_amoeba[TILE_MAX];
-extern unsigned char tab_android_move[TILE_MAX];
-extern unsigned short tab_explode_normal[TILE_MAX];
-extern unsigned short tab_explode_dynamite[TILE_MAX];
-
-extern unsigned short map_obj[8][TILE_MAX];
-extern unsigned short map_spr[2][8][SPR_MAX];
-extern unsigned short map_ttl[128];
-
extern Bitmap *screenBitmap;
-extern Bitmap *scoreBitmap;
-
-extern Bitmap *objBitmap;
-extern Bitmap *sprBitmap;
-extern Bitmap *ttlBitmap;
-extern Bitmap *botBitmap;
// ----------------------------------------------------------------------------