rnd-20060319-2-src
authorHolger Schemel <info@artsoft.org>
Sun, 19 Mar 2006 19:14:19 +0000 (20:14 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:51:14 +0000 (10:51 +0200)
* code cleanup for game action control for R'n'D and EMC game engine

21 files changed:
ChangeLog
src/conftime.h
src/engines.h
src/game_em/cave.c
src/game_em/convert.c
src/game_em/display.h [deleted file]
src/game_em/export.h [new file with mode: 0644]
src/game_em/game_em.h
src/game_em/graphics.c
src/game_em/init.c
src/game_em/input.c
src/game_em/level.h [deleted file]
src/game_em/main_em.h
src/game_em/sample.h
src/game_em/sound.c
src/game_em/synchro_1.c
src/game_em/synchro_2.c
src/game_em/synchro_3.c
src/game_em/tab_generate.c
src/game_em/tile.h [deleted file]
src/tools.c

index d1937675ac111a0a1435334bf621fa792e5daa8d..5361acefd49d258232c1d0c02654876814c7b50d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2006-03-19
+       * code cleanup for game action control for R'n'D and EMC game engine
+
 2006-03-18
        * fixed bug in multi-player movement with focus on both players
        * added option to control only the focussed player with all input
index aaa38b74a156e4da788e00ea895ef013ca92f602..ab9357c793217a88441a096f4cf66805c95ac9b9 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2006-03-19 02:11]"
+#define COMPILE_DATE_STRING "[2006-03-19 20:13]"
index e64f0f224436101d3b845f6c488a170ab0c7d3d8..8559dc55b043de334efe694ee0cdfc8cfc7124cc 100644 (file)
@@ -27,13 +27,6 @@ extern void SetBitmaps_EM(Bitmap **);
 extern void UpdateEngineValues(int, int);
 extern void DrawAllGameValues(int, int, int, int, int);
 
-#if 0
-extern void setCenteredPlayerNr_EM(int);
-extern int getCenteredPlayerNr_EM();
-extern void setSetCenteredPlayer_EM(boolean);
-extern boolean getSetCenteredPlayer_EM();
-#endif
-
 extern int getNumActivePlayers_EM();
 extern int getGameFrameDelay_EM(int);
 
index 47f7315eaeab5358bce2c7c8651748e91e2627ec..ab8e5c346fa76cba403bac73d3f45c7dd877f164 100644 (file)
@@ -3,9 +3,7 @@
  * cave data structures
  */
 
-#include "global.h"
-#include "tile.h"
-#include "level.h"
+#include "main_em.h"
 
 
 struct LevelInfo_EM native_em_level;
index 3aa00be4d19cc842565791444b865d68dab69f4e..281cd25bfec5527ba9701d61fcca6ea549fab45b 100644 (file)
@@ -8,9 +8,7 @@
  * inconsequential, but no doubt it will break some caves.
  */
 
-#include "global.h"
-#include "tile.h"
-#include "level.h"
+#include "main_em.h"
 
 
 static unsigned char remap_v6[256] =
diff --git a/src/game_em/display.h b/src/game_em/display.h
deleted file mode 100644 (file)
index 9079fee..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#ifndef DISPLAY_H
-#define DISPLAY_H
-
-#include "main_em.h"
-
-#define ORIG_TILEX             16
-#define ORIG_TILEY             16
-#define ORIG_SCOREX            8
-#define ORIG_SCOREY            9
-#define ORIG_GFXMENUFONTX      14
-#define ORIG_GFXMENUFONTY      16
-#define ORIG_MENUFONTX         12
-#define ORIG_MENUFONTY         16
-
-#define ZOOM_FACTOR            2
-
-#define TILEX                  (ORIG_TILEX             * ZOOM_FACTOR)
-#define TILEY                  (ORIG_TILEY             * ZOOM_FACTOR)
-#define SCOREX                 (ORIG_SCOREX            * ZOOM_FACTOR)
-#define SCOREY                 (ORIG_SCOREY            * ZOOM_FACTOR)
-#define GFXMENUFONTX           (ORIG_GFXMENUFONTX      * ZOOM_FACTOR)
-#define GFXMENUFONTY           (ORIG_GFXMENUFONTY      * ZOOM_FACTOR)
-#define MENUFONTX              (ORIG_MENUFONTX         * ZOOM_FACTOR)
-#define MENUFONTY              (ORIG_MENUFONTY         * ZOOM_FACTOR)
-
-#define ORIG_SCR_MENUX         20
-#define ORIG_SCR_MENUY         12
-#define SCR_MENUX              17
-#define SCR_MENUY              12
-#define SCR_FIELDX             17
-#define SCR_FIELDY             17
-#define MAX_BUF_XSIZE          (SCR_FIELDX + 2)
-#define MAX_BUF_YSIZE          (SCR_FIELDY + 2)
-
-/* often used screen positions */
-#define ORIG_MENU_SX           ((ORIG_SCR_MENUX - SCR_MENUX) * TILEX / 2)
-#define ORIG_MENU_SY           0
-#define SY                     8
-#define SX                     8
-#define SY                     8
-#define SXSIZE                 (SCR_FIELDX * TILEX)
-#define SYSIZE                 (SCR_FIELDY * TILEY)
-
-#if 1
-
-#if 0
-#define FRAMES_PER_SECOND      50
-#endif
-
-#define ROUNDED_DIVIDE(x, y)   (((x) + (y) - 1) / (y))
-
-#define SECONDS_TO_FRAMES(x)   ((x) * FRAMES_PER_SECOND)
-#define FRAMES_TO_SECONDS(x)   ((x) / FRAMES_PER_SECOND)
-
-#define SECONDS_TO_CYCLES(x)   ROUNDED_DIVIDE((x) * FRAMES_PER_SECOND, 8)
-#define CYCLES_TO_SECONDS(x)   ROUNDED_DIVIDE((x) * 8, FRAMES_PER_SECOND)
-
-#define DISPLAY_TIME(x)                ROUNDED_DIVIDE(x, FRAMES_PER_SECOND)
-
-#else
-
-#define DISPLAY_TIME(x)                (((x) * 8 + 49) / 50)
-#endif
-
-extern Bitmap *screenBitmap;
-extern Bitmap *scoreBitmap;
-
-extern Bitmap *objBitmap;
-extern Bitmap *sprBitmap;
-extern Bitmap *ttlBitmap;
-extern Bitmap *botBitmap;
-
-extern Pixmap screenPixmap;
-extern Pixmap scorePixmap;
-extern Pixmap spriteBitmap;
-
-extern Pixmap objmaskBitmap;
-extern Pixmap sprmaskBitmap;
-
-extern GC spriteGC;
-
-#endif
diff --git a/src/game_em/export.h b/src/game_em/export.h
new file mode 100644 (file)
index 0000000..9801d0c
--- /dev/null
@@ -0,0 +1,717 @@
+#ifndef EXPORT_H
+#define EXPORT_H
+
+/* ========================================================================= */
+/* functions and definitions exported from game_em to main program           */
+/* ========================================================================= */
+
+/* ------------------------------------------------------------------------- */
+/* constant definitions                                                      */
+/* ------------------------------------------------------------------------- */
+
+/* define these for backwards compatibility */
+#define EM_ENGINE_BAD_ROLL
+#define EM_ENGINE_BAD_SPRING
+
+/* define these to use additional elements */
+#define EM_ENGINE_USE_ADDITIONAL_ELEMENTS
+
+/* internal definitions for EM engine */
+#ifdef EM_ENGINE_BAD_ROLL
+#define BAD_ROLL
+#endif
+
+#ifdef EM_ENGINE_BAD_SPRING
+#define BAD_SPRING
+#endif
+
+/* one border for ZBORDER elements, one border for steelwall, if needed */
+#define EM_MAX_CAVE_WIDTH              (MAX_PLAYFIELD_WIDTH  + 2 + 2)
+#define EM_MAX_CAVE_HEIGHT             (MAX_PLAYFIELD_HEIGHT + 2 + 2)
+
+/*
+  -----------------------------------------------------------------------------
+  definition of elements used in the Emerald Mine Club engine;
+  the element names have the following properties:
+  - elements that start with 'X' can be stored in a level file
+  - elements that start with 'Y' indicate moving elements
+  - elements that end with 'B' are the "backside" of moving elements
+  -----------------------------------------------------------------------------
+*/
+
+enum
+{
+  Xblank = 0,          /* still */
+  Yacid_splash_eB,     /* hmm */
+  Yacid_splash_wB,     /* hmm */
+
+#ifdef EM_ENGINE_BAD_ROLL
+  Xstone_force_e,      /* only use these in eater */
+  Xstone_force_w,
+  Xnut_force_e,
+  Xnut_force_w,
+  Xspring_force_e,
+  Xspring_force_w,
+  Xemerald_force_e,
+  Xemerald_force_w,
+  Xdiamond_force_e,
+  Xdiamond_force_w,
+  Xbomb_force_e,
+  Xbomb_force_w,
+#endif
+
+  Xstone,
+  Xstone_pause,
+  Xstone_fall,
+  Ystone_s,
+  Ystone_sB,
+  Ystone_e,
+  Ystone_eB,
+  Ystone_w,
+  Ystone_wB,
+  Xnut,
+  Xnut_pause,
+  Xnut_fall,
+  Ynut_s,
+  Ynut_sB,
+  Ynut_e,
+  Ynut_eB,
+  Ynut_w,
+  Ynut_wB,
+  Xbug_n,
+  Xbug_e,
+  Xbug_s,
+  Xbug_w,
+  Xbug_gon,
+  Xbug_goe,
+  Xbug_gos,
+  Xbug_gow,
+  Ybug_n,
+  Ybug_nB,
+  Ybug_e,
+  Ybug_eB,
+  Ybug_s,
+  Ybug_sB,
+  Ybug_w,
+  Ybug_wB,
+  Ybug_w_n,
+  Ybug_n_e,
+  Ybug_e_s,
+  Ybug_s_w,
+  Ybug_e_n,
+  Ybug_s_e,
+  Ybug_w_s,
+  Ybug_n_w,
+  Ybug_stone,
+  Ybug_spring,
+  Xtank_n,
+  Xtank_e,
+  Xtank_s,
+  Xtank_w,
+  Xtank_gon,
+  Xtank_goe,
+  Xtank_gos,
+  Xtank_gow,
+  Ytank_n,
+  Ytank_nB,
+  Ytank_e,
+  Ytank_eB,
+  Ytank_s,
+  Ytank_sB,
+  Ytank_w,
+  Ytank_wB,
+  Ytank_w_n,
+  Ytank_n_e,
+  Ytank_e_s,
+  Ytank_s_w,
+  Ytank_e_n,
+  Ytank_s_e,
+  Ytank_w_s,
+  Ytank_n_w,
+  Ytank_stone,
+  Ytank_spring,
+  Xandroid,
+  Xandroid_1_n,
+  Xandroid_2_n,
+  Xandroid_1_e,
+  Xandroid_2_e,
+  Xandroid_1_w,
+  Xandroid_2_w,
+  Xandroid_1_s,
+  Xandroid_2_s,
+  Yandroid_n,
+  Yandroid_nB,
+  Yandroid_ne,
+  Yandroid_neB,
+  Yandroid_e,
+  Yandroid_eB,
+  Yandroid_se,
+  Yandroid_seB,
+  Yandroid_s,
+  Yandroid_sB,
+  Yandroid_sw,
+  Yandroid_swB,
+  Yandroid_w,
+  Yandroid_wB,
+  Yandroid_nw,
+  Yandroid_nwB,
+  Xspring,
+  Xspring_pause,
+  Xspring_e,
+  Xspring_w,
+  Xspring_fall,
+  Yspring_s,
+  Yspring_sB,
+  Yspring_e,
+  Yspring_eB,
+  Yspring_w,
+  Yspring_wB,
+  Yspring_kill_e,
+  Yspring_kill_eB,
+  Yspring_kill_w,
+  Yspring_kill_wB,
+  Xeater_n,
+  Xeater_e,
+  Xeater_w,
+  Xeater_s,
+  Yeater_n,
+  Yeater_nB,
+  Yeater_e,
+  Yeater_eB,
+  Yeater_s,
+  Yeater_sB,
+  Yeater_w,
+  Yeater_wB,
+  Yeater_stone,
+  Yeater_spring,
+  Xalien,
+  Xalien_pause,
+  Yalien_n,
+  Yalien_nB,
+  Yalien_e,
+  Yalien_eB,
+  Yalien_s,
+  Yalien_sB,
+  Yalien_w,
+  Yalien_wB,
+  Yalien_stone,
+  Yalien_spring,
+  Xemerald,
+  Xemerald_pause,
+  Xemerald_fall,
+  Xemerald_shine,
+  Yemerald_s,
+  Yemerald_sB,
+  Yemerald_e,
+  Yemerald_eB,
+  Yemerald_w,
+  Yemerald_wB,
+  Yemerald_eat,
+  Yemerald_stone,
+  Xdiamond,
+  Xdiamond_pause,
+  Xdiamond_fall,
+  Xdiamond_shine,
+  Ydiamond_s,
+  Ydiamond_sB,
+  Ydiamond_e,
+  Ydiamond_eB,
+  Ydiamond_w,
+  Ydiamond_wB,
+  Ydiamond_eat,
+  Ydiamond_stone,
+  Xdrip_fall,
+  Xdrip_stretch,
+  Xdrip_stretchB,
+  Xdrip_eat,
+  Ydrip_s1,
+  Ydrip_s1B,
+  Ydrip_s2,
+  Ydrip_s2B,
+  Xbomb,
+  Xbomb_pause,
+  Xbomb_fall,
+  Ybomb_s,
+  Ybomb_sB,
+  Ybomb_e,
+  Ybomb_eB,
+  Ybomb_w,
+  Ybomb_wB,
+  Ybomb_eat,
+  Xballoon,
+  Yballoon_n,
+  Yballoon_nB,
+  Yballoon_e,
+  Yballoon_eB,
+  Yballoon_s,
+  Yballoon_sB,
+  Yballoon_w,
+  Yballoon_wB,
+  Xgrass,
+  Ygrass_nB,
+  Ygrass_eB,
+  Ygrass_sB,
+  Ygrass_wB,
+  Xdirt,
+  Ydirt_nB,
+  Ydirt_eB,
+  Ydirt_sB,
+  Ydirt_wB,
+  Xacid_ne,
+  Xacid_se,
+  Xacid_s,
+  Xacid_sw,
+  Xacid_nw,
+  Xacid_1,
+  Xacid_2,
+  Xacid_3,
+  Xacid_4,
+  Xacid_5,
+  Xacid_6,
+  Xacid_7,
+  Xacid_8,
+  Xball_1,
+  Xball_1B,
+  Xball_2,
+  Xball_2B,
+  Yball_eat,
+
+#ifdef EM_ENGINE_USE_ADDITIONAL_ELEMENTS
+  Ykey_1_eat,
+  Ykey_2_eat,
+  Ykey_3_eat,
+  Ykey_4_eat,
+  Ykey_5_eat,
+  Ykey_6_eat,
+  Ykey_7_eat,
+  Ykey_8_eat,
+  Ylenses_eat,
+  Ymagnify_eat,
+  Ygrass_eat,
+  Ydirt_eat,
+#endif
+
+  Xgrow_ns,
+  Ygrow_ns_eat,
+  Xgrow_ew,
+  Ygrow_ew_eat,
+  Xwonderwall,
+  XwonderwallB,
+  Xamoeba_1,
+  Xamoeba_2,
+  Xamoeba_3,
+  Xamoeba_4,
+  Xamoeba_5,
+  Xamoeba_6,
+  Xamoeba_7,
+  Xamoeba_8,
+  Xdoor_1,
+  Xdoor_2,
+  Xdoor_3,
+  Xdoor_4,
+  Xdoor_5,
+  Xdoor_6,
+  Xdoor_7,
+  Xdoor_8,
+  Xkey_1,
+  Xkey_2,
+  Xkey_3,
+  Xkey_4,
+  Xkey_5,
+  Xkey_6,
+  Xkey_7,
+  Xkey_8,
+  Xwind_n,
+  Xwind_e,
+  Xwind_s,
+  Xwind_w,
+  Xwind_nesw,
+  Xwind_stop,
+  Xexit,
+  Xexit_1,
+  Xexit_2,
+  Xexit_3,
+  Xdynamite,
+  Ydynamite_eat,
+  Xdynamite_1,
+  Xdynamite_2,
+  Xdynamite_3,
+  Xdynamite_4,
+  Xbumper,
+  XbumperB,
+  Xwheel,
+  XwheelB,
+  Xswitch,
+  XswitchB,
+  Xsand,
+  Xsand_stone,
+  Xsand_stonein_1,
+  Xsand_stonein_2,
+  Xsand_stonein_3,
+  Xsand_stonein_4,
+  Xsand_stonesand_1,
+  Xsand_stonesand_2,
+  Xsand_stonesand_3,
+  Xsand_stonesand_4,
+  Xsand_stoneout_1,
+  Xsand_stoneout_2,
+  Xsand_sandstone_1,
+  Xsand_sandstone_2,
+  Xsand_sandstone_3,
+  Xsand_sandstone_4,
+  Xplant,
+  Yplant,
+  Xlenses,
+  Xmagnify,
+  Xdripper,
+  XdripperB,
+  Xfake_blank,
+  Xfake_blankB,
+  Xfake_grass,
+  Xfake_grassB,
+  Xfake_door_1,
+  Xfake_door_2,
+  Xfake_door_3,
+  Xfake_door_4,
+  Xfake_door_5,
+  Xfake_door_6,
+  Xfake_door_7,
+  Xfake_door_8,
+
+#ifdef EM_ENGINE_USE_ADDITIONAL_ELEMENTS
+  Xfake_acid_1,
+  Xfake_acid_2,
+  Xfake_acid_3,
+  Xfake_acid_4,
+  Xfake_acid_5,
+  Xfake_acid_6,
+  Xfake_acid_7,
+  Xfake_acid_8,
+#endif
+
+  Xsteel_1,
+  Xsteel_2,
+  Xsteel_3,
+  Xsteel_4,
+  Xwall_1,
+  Xwall_2,
+  Xwall_3,
+  Xwall_4,
+  Xround_wall_1,
+  Xround_wall_2,
+  Xround_wall_3,
+  Xround_wall_4,
+  Xdecor_1,
+  Xdecor_2,
+  Xdecor_3,
+  Xdecor_4,
+  Xdecor_5,
+  Xdecor_6,
+  Xdecor_7,
+  Xdecor_8,
+  Xdecor_9,
+  Xdecor_10,
+  Xdecor_11,
+  Xdecor_12,
+  Xalpha_0,
+  Xalpha_1,
+  Xalpha_2,
+  Xalpha_3,
+  Xalpha_4,
+  Xalpha_5,
+  Xalpha_6,
+  Xalpha_7,
+  Xalpha_8,
+  Xalpha_9,
+  Xalpha_excla,
+  Xalpha_quote,
+  Xalpha_comma,
+  Xalpha_minus,
+  Xalpha_perio,
+  Xalpha_colon,
+  Xalpha_quest,
+  Xalpha_a,
+  Xalpha_b,
+  Xalpha_c,
+  Xalpha_d,
+  Xalpha_e,
+  Xalpha_f,
+  Xalpha_g,
+  Xalpha_h,
+  Xalpha_i,
+  Xalpha_j,
+  Xalpha_k,
+  Xalpha_l,
+  Xalpha_m,
+  Xalpha_n,
+  Xalpha_o,
+  Xalpha_p,
+  Xalpha_q,
+  Xalpha_r,
+  Xalpha_s,
+  Xalpha_t,
+  Xalpha_u,
+  Xalpha_v,
+  Xalpha_w,
+  Xalpha_x,
+  Xalpha_y,
+  Xalpha_z,
+  Xalpha_arrow_e,
+  Xalpha_arrow_w,
+  Xalpha_copyr,
+
+  Xboom_bug,           /* passed from explode to synchro (linked explosion);
+                          transition to explode_normal */
+  Xboom_bomb,          /* passed from explode to synchro (linked explosion);
+                          transition to explode_normal */
+  Xboom_android,       /* passed from explode to synchro;
+                          transition to boom_2 */
+  Xboom_1,             /* passed from explode to synchro;
+                          transition to boom_2 */
+  Xboom_2,             /* transition to boom[] */
+
+  Znormal,             /* passed from synchro to explode, only in next[];
+                          no picture */
+  Zdynamite,           /* passed from synchro to explode, only in next[];
+                          no picture */
+  Zplayer,             /* special code to indicate player;
+                          no picture */
+  ZBORDER,             /* special code to indicate border;
+                          no picture */
+
+  TILE_MAX
+};
+
+/* other definitions */
+
+enum
+{
+  SPR_still = 0,
+  SPR_walk  = 1,
+  SPR_push  = 5,
+  SPR_spray = 9,
+
+  SPR_MAX   = 13
+};
+
+enum
+{
+  SAMPLE_blank = 0,    /* player walks on blank */
+  SAMPLE_roll,         /* player pushes stone/bomb/nut/spring */
+  SAMPLE_stone,                /* stone hits ground */
+  SAMPLE_nut,          /* nut hits ground */
+  SAMPLE_crack,                /* stone hits nut */
+  SAMPLE_bug,          /* bug moves */
+  SAMPLE_tank,         /* tank moves */
+  SAMPLE_android_clone,        /* android places something */
+  SAMPLE_android_move, /* android moves */
+  SAMPLE_spring,       /* spring hits ground/wall/bumper, stone hits spring */
+  SAMPLE_slurp,                /* spring kills alien */
+  SAMPLE_eater,                /* eater sits */
+  SAMPLE_eater_eat,    /* eater eats diamond */
+  SAMPLE_alien,                /* alien moves */
+  SAMPLE_collect,      /* player collects object */
+  SAMPLE_diamond,      /* diamond/emerald hits ground */
+  SAMPLE_squash,       /* stone squashes diamond */
+  SAMPLE_wonderfall,   /* object falls thru wonderwall */
+  SAMPLE_drip,         /* drip hits ground */
+  SAMPLE_push,         /* player pushes balloon/android */
+  SAMPLE_dirt,         /* player walks on dirt */
+  SAMPLE_acid,         /* acid splashes */
+  SAMPLE_ball,         /* ball places something */
+  SAMPLE_grow,         /* growing wall grows */
+  SAMPLE_wonder,       /* wonderwall is active */
+  SAMPLE_door,         /* player goes thru door (gate) */
+  SAMPLE_exit_open,    /* exit opens */
+  SAMPLE_exit_leave,   /* player goes into exit */
+  SAMPLE_dynamite,     /* player places dynamite */
+  SAMPLE_tick,         /* dynamite ticks */
+  SAMPLE_press,                /* player presses wheel/wind/switch */
+  SAMPLE_wheel,                /* wheel moves */
+  SAMPLE_boom,         /* explosion */
+  SAMPLE_time,         /* time runs out */
+  SAMPLE_die,          /* player dies */
+
+  SAMPLE_MAX
+};
+
+
+/* ------------------------------------------------------------------------- */
+/* data structure definitions                                                */
+/* ------------------------------------------------------------------------- */
+
+struct LEVEL
+{
+  int home_initial;            /* number of players (initial) */
+  int home;                    /* number of players not yet at home */
+                               /* 0 == all players at home */
+
+  int width;                   /* playfield width */
+  int height;                  /* playfield height */
+
+  int time_seconds;            /* available time (seconds) */
+  int time_initial;            /* available time (initial) */
+  int time;                    /* time remaining (runtime) */
+
+  boolean killed_out_of_time;  /* kill player due to time out */
+
+  int required_initial;                /* emeralds needed (initial) */
+  int required;                        /* emeralds needed (runtime) */
+
+  int score;                   /* score */
+
+  /* all below entries must be filled every time a level is read */
+
+  int alien_score;             /* score for killing alien */
+  int amoeba_time;             /* amoeba speed */
+  int android_move_cnt_initial;        /* android move counter (initial) */
+  int android_move_cnt;                /* android move counter */
+  int android_move_time;       /* android move reset time */
+  int android_clone_cnt_initial;/* android clone counter (initial) */
+  int android_clone_cnt;       /* android clone counter */
+  int android_clone_time;      /* android clone reset time */
+  int ball_cnt;                        /* ball counter */
+  int ball_pos;                        /* ball array pos counter */
+  int ball_random;             /* ball is random flag */
+  int ball_state_initial;      /* ball active flag (initial) */
+  int ball_state;              /* ball active flag */
+  int ball_time;               /* ball reset time */
+  int bug_score;               /* score for killing bug */
+  int diamond_score;           /* score for collecting diamond */
+  int dynamite_score;          /* score for collecting dynamite */
+  int eater_pos;               /* eater array pos */
+  int eater_score;             /* score for killing eater */
+  int emerald_score;           /* score for collecting emerald */
+  int exit_score;              /* score for entering exit */
+  int key_score;               /* score for colleting key */
+  int lenses_cnt_initial;      /* lenses counter (initial) */
+  int lenses_cnt;              /* lenses counter */
+  int lenses_score;            /* score for collecting lenses */
+  int lenses_time;             /* lenses reset time */
+  int magnify_cnt_initial;     /* magnify counter (initial) */
+  int magnify_cnt;             /* magnify counter */
+  int magnify_score;           /* score for collecting magnifier */
+  int magnify_time;            /* magnify reset time */
+  int nut_score;               /* score for cracking nut */
+  int shine_cnt;               /* shine counter for emerald/diamond */
+  int slurp_score;             /* score for slurping alien */
+  int tank_score;              /* score for killing tank */
+  int wheel_cnt_initial;       /* wheel counter (initial) */
+  int wheel_cnt;               /* wheel counter */
+  int wheel_x_initial;         /* wheel x pos (initial) */
+  int wheel_x;                 /* wheel x pos */
+  int wheel_y_initial;         /* wheel y pos (initial) */
+  int wheel_y;                 /* wheel y pos */
+  int wheel_time;              /* wheel reset time */
+  int wind_cnt_initial;                /* wind counter (initial) */
+  int wind_cnt;                        /* wind time counter */
+  int wind_direction_initial;  /* wind direction (initial) */
+  int wind_direction;          /* wind direction */
+  int wind_time;               /* wind reset time */
+  int wonderwall_state_initial;        /* wonderwall active flag (initial) */
+  int wonderwall_state;                /* wonderwall active flag */
+  int wonderwall_time_initial; /* wonderwall time (initial) */
+  int wonderwall_time;         /* wonderwall time */
+  short eater_array[8][9];     /* eater data */
+  short ball_array[8][8];      /* ball data */
+  short android_array[TILE_MAX];/* android clone table */
+  int num_ball_arrays;         /* number of ball data arrays used */
+};
+
+struct PLAYER
+{
+  int num;
+  int exists;
+  int alive_initial;
+  int alive;
+
+  int dynamite;
+  int dynamite_cnt;
+  int keys;
+  int anim;
+
+  int x_initial;
+  int y_initial;
+  int x;
+  int y;
+  int oldx;
+  int oldy;
+
+  int last_move_dir;
+
+  int joy_n:1;
+  int joy_e:1;
+  int joy_s:1;
+  int joy_w:1;
+  int joy_snap:1;
+  int joy_drop:1;
+  int joy_stick:1;
+  int joy_spin:1;
+};
+
+struct GlobalInfo_EM
+{
+  Bitmap *screenbuffer;
+};
+
+struct GameInfo_EM
+{
+  boolean any_player_moving;
+  int last_moving_player;
+  int last_player_direction[MAX_PLAYERS];
+};
+
+struct LevelInfo_EM
+{
+  int file_version;
+
+  short cave[EM_MAX_CAVE_WIDTH][EM_MAX_CAVE_HEIGHT];
+
+  struct LEVEL *lev;
+  struct PLAYER *ply[MAX_PLAYERS];
+};
+
+struct GraphicInfo_EM
+{
+  Bitmap *bitmap;
+  int src_x, src_y;
+  int src_offset_x, src_offset_y;
+  int dst_offset_x, dst_offset_y;
+  int width, height;
+
+  Bitmap *crumbled_bitmap;
+  int crumbled_src_x, crumbled_src_y;
+  int crumbled_border_size;
+
+  boolean has_crumbled_graphics;
+  boolean preserve_background;
+
+  int unique_identifier;       /* used to identify needed screen updates */
+};
+
+
+/* ------------------------------------------------------------------------- */
+/* exported functions                                                        */
+/* ------------------------------------------------------------------------- */
+
+extern struct GlobalInfo_EM global_em_info;
+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 void em_open_all();
+extern void em_close_all();
+
+extern void InitGameEngine_EM();
+extern void GameActions_EM(byte *, boolean);
+
+extern unsigned int InitEngineRND_EM(long);
+
+extern void setLevelInfoToDefaults_EM();
+extern boolean LoadNativeLevel_EM(char *);
+
+extern void BlitScreenToBitmap_EM(Bitmap *);
+extern void RedrawPlayfield_EM(boolean);
+extern void DrawGameDoorValues_EM();
+
+#endif /* EXPORT_H */
index 7c512235f7004324f59a9f5915abf5e6d21559b8..0407fa5ca699ebaec4e4e585bd8c6180bf4ccd81 100644 (file)
 
 #define GAME_EM_VERSION_1_0_0
 
-
-/* ========================================================================= */
-/* functions and definitions exported from game_em to main program           */
-/* ========================================================================= */
-
-#include "main_em.h"
-
-extern struct GlobalInfo_EM global_em_info;
-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 void em_open_all();
-extern void em_close_all();
-
-extern void InitGameEngine_EM();
-#if 1
-extern void GameActions_EM(byte *, boolean);
-#else
-extern void GameActions_EM(byte);
-#endif
-
-extern unsigned int InitEngineRND_EM(long);
-
-extern void setLevelInfoToDefaults_EM();
-extern boolean LoadNativeLevel_EM(char *);
-
-extern void BlitScreenToBitmap_EM(Bitmap *);
-extern void RedrawPlayfield_EM(boolean);
-extern void DrawGameDoorValues_EM();
+#include "export.h"
 
 #endif /* GAME_EM_H */
index fbddeb2b9e685f76aa55be1c2b46893e2d7c75fc..2935096df72837bce39b572704bd103c2d39f1c0 100644 (file)
@@ -3,9 +3,7 @@
  * graphics manipulation crap
  */
 
-#include "global.h"
-#include "display.h"
-#include "level.h"
+#include "main_em.h"
 
 #define MIN_SCREEN_XPOS                1
 #define MIN_SCREEN_YPOS                1
index f29b589671c2a91da5b26d6d39327e40ef54875a..a756d24a1974aaf99b3353141f3704fc2f036622 100644 (file)
@@ -3,19 +3,15 @@
  * open X11 display and sound
  */
 
+#include "main_em.h"
+
+
 #include <signal.h>
 
 #if !defined(TARGET_SDL)
 #include <sys/wait.h>
 #endif
 
-#include "main_em.h"
-
-#include "global.h"
-#include "display.h"
-#include "sample.h"
-#include "level.h"
-
 
 Bitmap *objBitmap;
 Bitmap *sprBitmap;
index b54f5526f810ab557f9395b0880c9c5b9eafdade..353b36eec71687f862d7a44fd7b2f7a0061c9b16 100644 (file)
@@ -3,9 +3,7 @@
  * handle input from x11 and keyboard and joystick
  */
 
-#include "global.h"
-#include "display.h"
-#include "level.h"
+#include "main_em.h"
 
 
 unsigned long RandomEM;
diff --git a/src/game_em/level.h b/src/game_em/level.h
deleted file mode 100644 (file)
index 6aed968..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef LEVEL_H
-#define LEVEL_H
-
-#include "main_em.h"
-#include "tile.h"
-
-#define WIDTH          EM_MAX_CAVE_WIDTH
-#define HEIGHT         EM_MAX_CAVE_HEIGHT
-
-extern unsigned long RandomEM;
-
-extern struct LEVEL 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;
-
-#endif
index cd931fcf7913dbac25fd77133c2e1e556d8cc519..d6a768786ee70591cfd486bf88f397f52fd22bbb 100644 (file)
 #ifndef MAIN_EM_H
 #define MAIN_EM_H
 
+/* ========================================================================= */
+/* external functions and definitions imported from main program to game_em  */
+/* ========================================================================= */
+
 #include "../engines.h"
 
 
-/* 2000-07-30T11:06:03Z ---------------------------------------------------- */
-
-#if 1
-/* one border for ZBORDER elements, one border for steelwall, if needed */
-#define EM_MAX_CAVE_WIDTH              (MAX_PLAYFIELD_WIDTH  + 2 + 2)
-#define EM_MAX_CAVE_HEIGHT             (MAX_PLAYFIELD_HEIGHT + 2 + 2)
-#else
-#define EM_MAX_CAVE_WIDTH              102
-#define EM_MAX_CAVE_HEIGHT             102
-#endif
-
-/* define these for backwards compatibility */
-#define EM_ENGINE_BAD_ROLL
-#define EM_ENGINE_BAD_SPRING
-
-
-/*
-  -----------------------------------------------------------------------------
-  definition of elements used in the Emerald Mine Club engine;
-  the element names have the following properties:
-  - elements that start with 'X' can be stored in a level file
-  - elements that start with 'Y' indicate moving elements
-  - elements that end with 'B' are the "backside" of moving elements
-  -----------------------------------------------------------------------------
-*/
-
-enum
-{
-  Xblank = 0,          /* still */
-  Yacid_splash_eB,     /* hmm */
-  Yacid_splash_wB,     /* hmm */
-
-#ifdef EM_ENGINE_BAD_ROLL
-  Xstone_force_e,      /* only use these in eater */
-  Xstone_force_w,
-  Xnut_force_e,
-  Xnut_force_w,
-  Xspring_force_e,
-  Xspring_force_w,
-  Xemerald_force_e,
-  Xemerald_force_w,
-  Xdiamond_force_e,
-  Xdiamond_force_w,
-  Xbomb_force_e,
-  Xbomb_force_w,
-#endif
-
-  Xstone,
-  Xstone_pause,
-  Xstone_fall,
-  Ystone_s,
-  Ystone_sB,
-  Ystone_e,
-  Ystone_eB,
-  Ystone_w,
-  Ystone_wB,
-  Xnut,
-  Xnut_pause,
-  Xnut_fall,
-  Ynut_s,
-  Ynut_sB,
-  Ynut_e,
-  Ynut_eB,
-  Ynut_w,
-  Ynut_wB,
-  Xbug_n,
-  Xbug_e,
-  Xbug_s,
-  Xbug_w,
-  Xbug_gon,
-  Xbug_goe,
-  Xbug_gos,
-  Xbug_gow,
-  Ybug_n,
-  Ybug_nB,
-  Ybug_e,
-  Ybug_eB,
-  Ybug_s,
-  Ybug_sB,
-  Ybug_w,
-  Ybug_wB,
-  Ybug_w_n,
-  Ybug_n_e,
-  Ybug_e_s,
-  Ybug_s_w,
-  Ybug_e_n,
-  Ybug_s_e,
-  Ybug_w_s,
-  Ybug_n_w,
-  Ybug_stone,
-  Ybug_spring,
-  Xtank_n,
-  Xtank_e,
-  Xtank_s,
-  Xtank_w,
-  Xtank_gon,
-  Xtank_goe,
-  Xtank_gos,
-  Xtank_gow,
-  Ytank_n,
-  Ytank_nB,
-  Ytank_e,
-  Ytank_eB,
-  Ytank_s,
-  Ytank_sB,
-  Ytank_w,
-  Ytank_wB,
-  Ytank_w_n,
-  Ytank_n_e,
-  Ytank_e_s,
-  Ytank_s_w,
-  Ytank_e_n,
-  Ytank_s_e,
-  Ytank_w_s,
-  Ytank_n_w,
-  Ytank_stone,
-  Ytank_spring,
-  Xandroid,
-  Xandroid_1_n,
-  Xandroid_2_n,
-  Xandroid_1_e,
-  Xandroid_2_e,
-  Xandroid_1_w,
-  Xandroid_2_w,
-  Xandroid_1_s,
-  Xandroid_2_s,
-  Yandroid_n,
-  Yandroid_nB,
-  Yandroid_ne,
-  Yandroid_neB,
-  Yandroid_e,
-  Yandroid_eB,
-  Yandroid_se,
-  Yandroid_seB,
-  Yandroid_s,
-  Yandroid_sB,
-  Yandroid_sw,
-  Yandroid_swB,
-  Yandroid_w,
-  Yandroid_wB,
-  Yandroid_nw,
-  Yandroid_nwB,
-  Xspring,
-  Xspring_pause,
-  Xspring_e,
-  Xspring_w,
-  Xspring_fall,
-  Yspring_s,
-  Yspring_sB,
-  Yspring_e,
-  Yspring_eB,
-  Yspring_w,
-  Yspring_wB,
-  Yspring_kill_e,
-  Yspring_kill_eB,
-  Yspring_kill_w,
-  Yspring_kill_wB,
-  Xeater_n,
-  Xeater_e,
-  Xeater_w,
-  Xeater_s,
-  Yeater_n,
-  Yeater_nB,
-  Yeater_e,
-  Yeater_eB,
-  Yeater_s,
-  Yeater_sB,
-  Yeater_w,
-  Yeater_wB,
-  Yeater_stone,
-  Yeater_spring,
-  Xalien,
-  Xalien_pause,
-  Yalien_n,
-  Yalien_nB,
-  Yalien_e,
-  Yalien_eB,
-  Yalien_s,
-  Yalien_sB,
-  Yalien_w,
-  Yalien_wB,
-  Yalien_stone,
-  Yalien_spring,
-  Xemerald,
-  Xemerald_pause,
-  Xemerald_fall,
-  Xemerald_shine,
-  Yemerald_s,
-  Yemerald_sB,
-  Yemerald_e,
-  Yemerald_eB,
-  Yemerald_w,
-  Yemerald_wB,
-  Yemerald_eat,
-  Yemerald_stone,
-  Xdiamond,
-  Xdiamond_pause,
-  Xdiamond_fall,
-  Xdiamond_shine,
-  Ydiamond_s,
-  Ydiamond_sB,
-  Ydiamond_e,
-  Ydiamond_eB,
-  Ydiamond_w,
-  Ydiamond_wB,
-  Ydiamond_eat,
-  Ydiamond_stone,
-  Xdrip_fall,
-  Xdrip_stretch,
-  Xdrip_stretchB,
-  Xdrip_eat,
-  Ydrip_s1,
-  Ydrip_s1B,
-  Ydrip_s2,
-  Ydrip_s2B,
-  Xbomb,
-  Xbomb_pause,
-  Xbomb_fall,
-  Ybomb_s,
-  Ybomb_sB,
-  Ybomb_e,
-  Ybomb_eB,
-  Ybomb_w,
-  Ybomb_wB,
-  Ybomb_eat,
-  Xballoon,
-  Yballoon_n,
-  Yballoon_nB,
-  Yballoon_e,
-  Yballoon_eB,
-  Yballoon_s,
-  Yballoon_sB,
-  Yballoon_w,
-  Yballoon_wB,
-  Xgrass,
-  Ygrass_nB,
-  Ygrass_eB,
-  Ygrass_sB,
-  Ygrass_wB,
-  Xdirt,
-  Ydirt_nB,
-  Ydirt_eB,
-  Ydirt_sB,
-  Ydirt_wB,
-  Xacid_ne,
-  Xacid_se,
-  Xacid_s,
-  Xacid_sw,
-  Xacid_nw,
-  Xacid_1,
-  Xacid_2,
-  Xacid_3,
-  Xacid_4,
-  Xacid_5,
-  Xacid_6,
-  Xacid_7,
-  Xacid_8,
-  Xball_1,
-  Xball_1B,
-  Xball_2,
-  Xball_2B,
-  Yball_eat,
-
-#if 1
-  Ykey_1_eat,
-  Ykey_2_eat,
-  Ykey_3_eat,
-  Ykey_4_eat,
-  Ykey_5_eat,
-  Ykey_6_eat,
-  Ykey_7_eat,
-  Ykey_8_eat,
-  Ylenses_eat,
-  Ymagnify_eat,
-  Ygrass_eat,
-  Ydirt_eat,
-#endif
-
-  Xgrow_ns,
-  Ygrow_ns_eat,
-  Xgrow_ew,
-  Ygrow_ew_eat,
-  Xwonderwall,
-  XwonderwallB,
-  Xamoeba_1,
-  Xamoeba_2,
-  Xamoeba_3,
-  Xamoeba_4,
-  Xamoeba_5,
-  Xamoeba_6,
-  Xamoeba_7,
-  Xamoeba_8,
-  Xdoor_1,
-  Xdoor_2,
-  Xdoor_3,
-  Xdoor_4,
-  Xdoor_5,
-  Xdoor_6,
-  Xdoor_7,
-  Xdoor_8,
-  Xkey_1,
-  Xkey_2,
-  Xkey_3,
-  Xkey_4,
-  Xkey_5,
-  Xkey_6,
-  Xkey_7,
-  Xkey_8,
-  Xwind_n,
-  Xwind_e,
-  Xwind_s,
-  Xwind_w,
-  Xwind_nesw,
-  Xwind_stop,
-  Xexit,
-  Xexit_1,
-  Xexit_2,
-  Xexit_3,
-  Xdynamite,
-  Ydynamite_eat,
-  Xdynamite_1,
-  Xdynamite_2,
-  Xdynamite_3,
-  Xdynamite_4,
-  Xbumper,
-  XbumperB,
-  Xwheel,
-  XwheelB,
-  Xswitch,
-  XswitchB,
-  Xsand,
-  Xsand_stone,
-  Xsand_stonein_1,
-  Xsand_stonein_2,
-  Xsand_stonein_3,
-  Xsand_stonein_4,
-  Xsand_stonesand_1,
-  Xsand_stonesand_2,
-  Xsand_stonesand_3,
-  Xsand_stonesand_4,
-  Xsand_stoneout_1,
-  Xsand_stoneout_2,
-  Xsand_sandstone_1,
-  Xsand_sandstone_2,
-  Xsand_sandstone_3,
-  Xsand_sandstone_4,
-  Xplant,
-  Yplant,
-  Xlenses,
-  Xmagnify,
-  Xdripper,
-  XdripperB,
-  Xfake_blank,
-  Xfake_blankB,
-  Xfake_grass,
-  Xfake_grassB,
-  Xfake_door_1,
-  Xfake_door_2,
-  Xfake_door_3,
-  Xfake_door_4,
-  Xfake_door_5,
-  Xfake_door_6,
-  Xfake_door_7,
-  Xfake_door_8,
-
-#if 1
-  Xfake_acid_1,
-  Xfake_acid_2,
-  Xfake_acid_3,
-  Xfake_acid_4,
-  Xfake_acid_5,
-  Xfake_acid_6,
-  Xfake_acid_7,
-  Xfake_acid_8,
-#endif
-
-  Xsteel_1,
-  Xsteel_2,
-  Xsteel_3,
-  Xsteel_4,
-  Xwall_1,
-  Xwall_2,
-  Xwall_3,
-  Xwall_4,
-  Xround_wall_1,
-  Xround_wall_2,
-  Xround_wall_3,
-  Xround_wall_4,
-  Xdecor_1,
-  Xdecor_2,
-  Xdecor_3,
-  Xdecor_4,
-  Xdecor_5,
-  Xdecor_6,
-  Xdecor_7,
-  Xdecor_8,
-  Xdecor_9,
-  Xdecor_10,
-  Xdecor_11,
-  Xdecor_12,
-  Xalpha_0,
-  Xalpha_1,
-  Xalpha_2,
-  Xalpha_3,
-  Xalpha_4,
-  Xalpha_5,
-  Xalpha_6,
-  Xalpha_7,
-  Xalpha_8,
-  Xalpha_9,
-  Xalpha_excla,
-  Xalpha_quote,
-  Xalpha_comma,
-  Xalpha_minus,
-  Xalpha_perio,
-  Xalpha_colon,
-  Xalpha_quest,
-  Xalpha_a,
-  Xalpha_b,
-  Xalpha_c,
-  Xalpha_d,
-  Xalpha_e,
-  Xalpha_f,
-  Xalpha_g,
-  Xalpha_h,
-  Xalpha_i,
-  Xalpha_j,
-  Xalpha_k,
-  Xalpha_l,
-  Xalpha_m,
-  Xalpha_n,
-  Xalpha_o,
-  Xalpha_p,
-  Xalpha_q,
-  Xalpha_r,
-  Xalpha_s,
-  Xalpha_t,
-  Xalpha_u,
-  Xalpha_v,
-  Xalpha_w,
-  Xalpha_x,
-  Xalpha_y,
-  Xalpha_z,
-  Xalpha_arrow_e,
-  Xalpha_arrow_w,
-  Xalpha_copyr,
-
-  Xboom_bug,           /* passed from explode to synchro (linked explosion);
-                          transition to explode_normal */
-  Xboom_bomb,          /* passed from explode to synchro (linked explosion);
-                          transition to explode_normal */
-  Xboom_android,       /* passed from explode to synchro;
-                          transition to boom_2 */
-  Xboom_1,             /* passed from explode to synchro;
-                          transition to boom_2 */
-  Xboom_2,             /* transition to boom[] */
-
-  Znormal,             /* passed from synchro to explode, only in next[];
-                          no picture */
-  Zdynamite,           /* passed from synchro to explode, only in next[];
-                          no picture */
-  Zplayer,             /* special code to indicate player;
-                          no picture */
-  ZBORDER,             /* special code to indicate border;
-                          no picture */
-
-  TILE_MAX
-};
-
-enum
-{
-  SPR_still = 0,
-  SPR_walk  = 1,
-  SPR_push  = 5,
-  SPR_spray = 9,
-
-  SPR_MAX   = 13
-};
-
-enum
-{
-  SAMPLE_blank = 0,    /* player walks on blank */
-  SAMPLE_roll,         /* player pushes stone/bomb/nut/spring */
-  SAMPLE_stone,                /* stone hits ground */
-  SAMPLE_nut,          /* nut hits ground */
-  SAMPLE_crack,                /* stone hits nut */
-  SAMPLE_bug,          /* bug moves */
-  SAMPLE_tank,         /* tank moves */
-  SAMPLE_android_clone,        /* android places something */
-  SAMPLE_android_move, /* android moves */
-  SAMPLE_spring,       /* spring hits ground/wall/bumper, stone hits spring */
-  SAMPLE_slurp,                /* spring kills alien */
-  SAMPLE_eater,                /* eater sits */
-  SAMPLE_eater_eat,    /* eater eats diamond */
-  SAMPLE_alien,                /* alien moves */
-  SAMPLE_collect,      /* player collects object */
-  SAMPLE_diamond,      /* diamond/emerald hits ground */
-  SAMPLE_squash,       /* stone squashes diamond */
-  SAMPLE_wonderfall,   /* object falls thru wonderwall */
-  SAMPLE_drip,         /* drip hits ground */
-  SAMPLE_push,         /* player pushes balloon/android */
-  SAMPLE_dirt,         /* player walks on dirt */
-  SAMPLE_acid,         /* acid splashes */
-  SAMPLE_ball,         /* ball places something */
-  SAMPLE_grow,         /* growing wall grows */
-  SAMPLE_wonder,       /* wonderwall is active */
-  SAMPLE_door,         /* player goes thru door (gate) */
-  SAMPLE_exit_open,    /* exit opens */
-  SAMPLE_exit_leave,   /* player goes into exit */
-  SAMPLE_dynamite,     /* player places dynamite */
-  SAMPLE_tick,         /* dynamite ticks */
-  SAMPLE_press,                /* player presses wheel/wind/switch */
-  SAMPLE_wheel,                /* wheel moves */
-  SAMPLE_boom,         /* explosion */
-  SAMPLE_time,         /* time runs out */
-  SAMPLE_die,          /* player dies */
-
-  SAMPLE_MAX
-};
-
-struct LEVEL
-{
-  int home_initial;            /* number of players (initial) */
-  int home;                    /* number of players not yet at home */
-                               /* 0 == all players at home */
-
-  int width;                   /* playfield width */
-  int height;                  /* playfield height */
-
-  int time_seconds;            /* available time (seconds) */
-  int time_initial;            /* available time (initial) */
-  int time;                    /* time remaining (runtime) */
-
-  boolean killed_out_of_time;  /* kill player due to time out */
-
-  int required_initial;                /* emeralds needed (initial) */
-  int required;                        /* emeralds needed (runtime) */
-
-  int score;                   /* score */
-
-  /* all below entries must be filled every time a level is read */
-
-  int alien_score;             /* score for killing alien */
-  int amoeba_time;             /* amoeba speed */
-  int android_move_cnt_initial;        /* android move counter (initial) */
-  int android_move_cnt;                /* android move counter */
-  int android_move_time;       /* android move reset time */
-  int android_clone_cnt_initial;/* android clone counter (initial) */
-  int android_clone_cnt;       /* android clone counter */
-  int android_clone_time;      /* android clone reset time */
-  int ball_cnt;                        /* ball counter */
-  int ball_pos;                        /* ball array pos counter */
-  int ball_random;             /* ball is random flag */
-  int ball_state_initial;      /* ball active flag (initial) */
-  int ball_state;              /* ball active flag */
-  int ball_time;               /* ball reset time */
-  int bug_score;               /* score for killing bug */
-  int diamond_score;           /* score for collecting diamond */
-  int dynamite_score;          /* score for collecting dynamite */
-  int eater_pos;               /* eater array pos */
-  int eater_score;             /* score for killing eater */
-  int emerald_score;           /* score for collecting emerald */
-  int exit_score;              /* score for entering exit */
-  int key_score;               /* score for colleting key */
-  int lenses_cnt_initial;      /* lenses counter (initial) */
-  int lenses_cnt;              /* lenses counter */
-  int lenses_score;            /* score for collecting lenses */
-  int lenses_time;             /* lenses reset time */
-  int magnify_cnt_initial;     /* magnify counter (initial) */
-  int magnify_cnt;             /* magnify counter */
-  int magnify_score;           /* score for collecting magnifier */
-  int magnify_time;            /* magnify reset time */
-  int nut_score;               /* score for cracking nut */
-  int shine_cnt;               /* shine counter for emerald/diamond */
-  int slurp_score;             /* score for slurping alien */
-  int tank_score;              /* score for killing tank */
-  int wheel_cnt_initial;       /* wheel counter (initial) */
-  int wheel_cnt;               /* wheel counter */
-  int wheel_x_initial;         /* wheel x pos (initial) */
-  int wheel_x;                 /* wheel x pos */
-  int wheel_y_initial;         /* wheel y pos (initial) */
-  int wheel_y;                 /* wheel y pos */
-  int wheel_time;              /* wheel reset time */
-  int wind_cnt_initial;                /* wind counter (initial) */
-  int wind_cnt;                        /* wind time counter */
-  int wind_direction_initial;  /* wind direction (initial) */
-  int wind_direction;          /* wind direction */
-  int wind_time;               /* wind reset time */
-  int wonderwall_state_initial;        /* wonderwall active flag (initial) */
-  int wonderwall_state;                /* wonderwall active flag */
-  int wonderwall_time_initial; /* wonderwall time (initial) */
-  int wonderwall_time;         /* wonderwall time */
-  short eater_array[8][9];     /* eater data */
-  short ball_array[8][8];      /* ball data */
-  short android_array[TILE_MAX];/* android clone table */
-  int num_ball_arrays;         /* number of ball data arrays used */
-};
-
-struct PLAYER
-{
-  int num;
-  int exists;
-  int alive_initial;
-  int alive;
-
-  int dynamite;
-  int dynamite_cnt;
-  int keys;
-  int anim;
-
-  int x_initial;
-  int y_initial;
-  int x;
-  int y;
-  int oldx;
-  int oldy;
-
-  int last_move_dir;
-
-  int joy_n:1;
-  int joy_e:1;
-  int joy_s:1;
-  int joy_w:1;
-  int joy_snap:1;
-  int joy_drop:1;
-  int joy_stick:1;
-  int joy_spin:1;
-};
+/* ========================================================================= */
+/* functions and definitions that are exported from game_em to main program  */
+/* ========================================================================= */
+
+#include "export.h"
+
+
+/* ========================================================================= */
+/* internal functions and definitions that are not exported to main program  */
+/* ========================================================================= */
+
+#include "global.h"
+#include "sample.h"
 
 
 /* ------------------------------------------------------------------------- */
-/* definitions and structures for use by the main game functions             */
+/* constant definitions                                                      */
 /* ------------------------------------------------------------------------- */
 
 /* values for native Emerald Mine game version */
@@ -646,46 +35,122 @@ struct PLAYER
 
 #define FILE_VERSION_EM_ACTUAL FILE_VERSION_EM_V6
 
-struct GlobalInfo_EM
-{
-  Bitmap *screenbuffer;
-};
+/* 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 ORIG_TILEX             16
+#define ORIG_TILEY             16
+#define ORIG_SCOREX            8
+#define ORIG_SCOREY            9
+#define ORIG_GFXMENUFONTX      14
+#define ORIG_GFXMENUFONTY      16
+#define ORIG_MENUFONTX         12
+#define ORIG_MENUFONTY         16
+
+#define ZOOM_FACTOR            2
+
+#define TILEX                  (ORIG_TILEX             * ZOOM_FACTOR)
+#define TILEY                  (ORIG_TILEY             * ZOOM_FACTOR)
+#define SCOREX                 (ORIG_SCOREX            * ZOOM_FACTOR)
+#define SCOREY                 (ORIG_SCOREY            * ZOOM_FACTOR)
+#define GFXMENUFONTX           (ORIG_GFXMENUFONTX      * ZOOM_FACTOR)
+#define GFXMENUFONTY           (ORIG_GFXMENUFONTY      * ZOOM_FACTOR)
+#define MENUFONTX              (ORIG_MENUFONTX         * ZOOM_FACTOR)
+#define MENUFONTY              (ORIG_MENUFONTY         * ZOOM_FACTOR)
+
+#define ORIG_SCR_MENUX         20
+#define ORIG_SCR_MENUY         12
+#define SCR_MENUX              17
+#define SCR_MENUY              12
+#define SCR_FIELDX             17
+#define SCR_FIELDY             17
+#define MAX_BUF_XSIZE          (SCR_FIELDX + 2)
+#define MAX_BUF_YSIZE          (SCR_FIELDY + 2)
+
+/* often used screen positions */
+#define ORIG_MENU_SX           ((ORIG_SCR_MENUX - SCR_MENUX) * TILEX / 2)
+#define ORIG_MENU_SY           0
+#define SY                     8
+#define SX                     8
+#define SY                     8
+#define SXSIZE                 (SCR_FIELDX * TILEX)
+#define SYSIZE                 (SCR_FIELDY * TILEY)
+
+
+/* ------------------------------------------------------------------------- */
+/* macro function definitions                                                */
+/* ------------------------------------------------------------------------- */
 
-struct GameInfo_EM
-{
-  boolean any_player_moving;
-  int last_moving_player;
-  int last_player_direction[MAX_PLAYERS];
-};
+#define ROUNDED_DIVIDE(x, y)   (((x) + (y) - 1) / (y))
 
-struct LevelInfo_EM
-{
-  int file_version;
+#define SECONDS_TO_FRAMES(x)   ((x) * FRAMES_PER_SECOND)
+#define FRAMES_TO_SECONDS(x)   ((x) / FRAMES_PER_SECOND)
 
-  short cave[EM_MAX_CAVE_WIDTH][EM_MAX_CAVE_HEIGHT];
+#define SECONDS_TO_CYCLES(x)   ROUNDED_DIVIDE((x) * FRAMES_PER_SECOND, 8)
+#define CYCLES_TO_SECONDS(x)   ROUNDED_DIVIDE((x) * 8, FRAMES_PER_SECOND)
 
-  struct LEVEL *lev;
-  struct PLAYER *ply[MAX_PLAYERS];
-};
+#define DISPLAY_TIME(x)                ROUNDED_DIVIDE(x, FRAMES_PER_SECOND)
 
-struct GraphicInfo_EM
-{
-  Bitmap *bitmap;
-  int src_x, src_y;
-  int src_offset_x, src_offset_y;
-  int dst_offset_x, dst_offset_y;
-  int width, height;
 
-  Bitmap *crumbled_bitmap;
-  int crumbled_src_x, crumbled_src_y;
-  int crumbled_border_size;
+/* ------------------------------------------------------------------------- */
+/* data structure definitions                                                */
+/* ------------------------------------------------------------------------- */
+
+/* ------------------------------------------------------------------------- */
+/* exported variables                                                        */
+/* ------------------------------------------------------------------------- */
 
-  boolean has_crumbled_graphics;
-  boolean preserve_background;
+extern unsigned long RandomEM;
 
-  int unique_identifier;       /* used to identify needed screen updates */
-};
+extern struct LEVEL 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 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;
+
+extern Pixmap screenPixmap;
+extern Pixmap scorePixmap;
+extern Pixmap spriteBitmap;
+
+extern Pixmap objmaskBitmap;
+extern Pixmap sprmaskBitmap;
+
+extern GC spriteGC;
+
+
+/* ------------------------------------------------------------------------- */
+/* exported functions                                                        */
+/* ------------------------------------------------------------------------- */
+
 #endif /* MAIN_EM_H */
index 90c45a9ba54e5bb95b0d7b858d9b3e12c96c6334..853b27d378ef6887576aa6f0ec2f9c2653cccfe5 100644 (file)
@@ -4,51 +4,6 @@
 #include "main_em.h"
 
 
-#if 0
-
-enum
-{
-  SAMPLE_blank = 0,    /* player walks on blank */
-  SAMPLE_roll,         /* player pushes stone/bomb/nut/spring */
-  SAMPLE_stone,                /* stone hits ground */
-  SAMPLE_nut,          /* nut hits ground */
-  SAMPLE_crack,                /* stone hits nut */
-  SAMPLE_bug,          /* bug moves */
-  SAMPLE_tank,         /* tank moves */
-  SAMPLE_android_clone,        /* android places something */
-  SAMPLE_android_move, /* android moves */
-  SAMPLE_spring,       /* spring hits ground/wall/bumper, stone hits spring */
-  SAMPLE_slurp,                /* spring kills alien */
-  SAMPLE_eater,                /* eater sits */
-  SAMPLE_eater_eat,    /* eater eats diamond */
-  SAMPLE_alien,                /* alien moves */
-  SAMPLE_collect,      /* player collects object */
-  SAMPLE_diamond,      /* diamond/emerald hits ground */
-  SAMPLE_squash,       /* stone squashes diamond */
-  SAMPLE_wonderfall,   /* object falls thru wonderwall */
-  SAMPLE_drip,         /* drip hits ground */
-  SAMPLE_push,         /* player pushes balloon/android */
-  SAMPLE_dirt,         /* player walks on dirt */
-  SAMPLE_acid,         /* acid splashes */
-  SAMPLE_ball,         /* ball places something */
-  SAMPLE_grow,         /* growing wall grows */
-  SAMPLE_wonder,       /* wonderwall moves (is active) */
-  SAMPLE_door,         /* player goes thru door */
-  SAMPLE_exit_open,    /* exit opens */
-  SAMPLE_exit_leave,   /* player goes into exit */
-  SAMPLE_dynamite,     /* player places dynamite */
-  SAMPLE_tick,         /* dynamite ticks */
-  SAMPLE_press,                /* player presses wheel/wind/switch */
-  SAMPLE_wheel,                /* wheel moves */
-  SAMPLE_boom,         /* explosion */
-  SAMPLE_time,         /* time runs out */
-  SAMPLE_die,          /* player dies */
-
-  SAMPLE_MAX
-};
-
-#endif
-
 extern void play_sound(int, int, int);
 extern void play_element_sound(int, int, int, int);
 
index 9bdd2be8745c027f07aebe83b3694bd2b0bf7db9..5aedabb35abb1cbf42faaa23b67b32e6502e6883 100644 (file)
@@ -20,9 +20,6 @@
 #include <soundcard.h>
 #endif
 
-#include "global.h"
-#include "sample.h"
-
 static char audioname[] = "/dev/audio";
 
 static const int sound_priority[SAMPLE_MAX] =
index 48bccb9ba55e6b778b08c88a2743eb2b14473d9d..38607713370c2cf3e6e136aefc48e8dabd85d2ae 100644 (file)
@@ -5,10 +5,7 @@
  * large switch statement for tiles the player interacts with.
  */
 
-#include "tile.h"
-#include "level.h"
-#include "sample.h"
-#include "display.h"
+#include "main_em.h"
 
 
 #if 0
index 3207f3688b685e5e9f4736b680f0a00a17225baf..1ab59546bc14d613ef83c50f0916f547bb32707a 100644 (file)
@@ -8,10 +8,7 @@
  * compilers suck.
  */
 
-#include "display.h"
-#include "tile.h"
-#include "level.h"
-#include "sample.h"
+#include "main_em.h"
 
 
 #define RANDOM (random = random << 31 | random >> 1)
index 226d0194420fffbafd7cb75afffaa78f7a583d02..bafc581f8f458d5174084b7bd7f0423f1b43a31c 100644 (file)
@@ -5,9 +5,7 @@
  * this should be spread over the frames for reduced cpu load.
  */
 
-#include "tile.h"
-#include "level.h"
-#include "sample.h"
+#include "main_em.h"
 
 
 void synchro_3(void)
index 2828ecd32b672ba3d7ab4f6eef9e83a180343d50..8a3f731ad55ccf0549658b5d326fde7ba2796784 100644 (file)
  * modify.
  */
 
-#include "tile.h"
-#include "display.h"
+#include "main_em.h"
 
 
-/* ---------------------------------------------------------------------- */
+/* ------------------------------------------------------------------------- */
 
 /* 0=stop 1=blank */
 int tile_blank[] =
@@ -69,7 +68,8 @@ int tile_android_move[] =
   TILE_MAX
 };
 
-/* ---------------------------------------------------------------------- */
+
+/* ------------------------------------------------------------------------- */
 
 /* explosions: special format */
 /* everything is initially filled with Xboom_1 */
@@ -152,7 +152,8 @@ int tile_explode[] =
   TILE_MAX                     /* up until here are dynamite explosions */
 };
 
-/* ---------------------------------------------------------------------- */
+
+/* ------------------------------------------------------------------------- */
 
 /* map the graphics file to internal tiles and animations
  *
diff --git a/src/game_em/tile.h b/src/game_em/tile.h
deleted file mode 100644 (file)
index 6b6dc3e..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-#ifndef TILE_H
-#define TILE_H
-
-#include "main_em.h"
-
-#ifdef EM_ENGINE_BAD_ROLL
-#define BAD_ROLL
-#endif
-
-#ifdef EM_ENGINE_BAD_SPRING
-#define BAD_SPRING
-#endif
-
-
-#if 0
-
-/* 2000-07-30T11:06:03Z
- */
-
-/* define these for backwards compatibility */
-#define BAD_ROLL
-#define BAD_SPRING
-
-enum
-{
-  Xblank = 0, /* still */
-  Yacid_splash_eB, /* hmm */
-  Yacid_splash_wB, /* hmm */
-
-#ifdef BAD_ROLL
-  Xstone_force_e, /* only use these in eater */
-  Xstone_force_w,
-  Xnut_force_e,
-  Xnut_force_w,
-  Xspring_force_e,
-  Xspring_force_w,
-  Xemerald_force_e,
-  Xemerald_force_w,
-  Xdiamond_force_e,
-  Xdiamond_force_w,
-  Xbomb_force_e,
-  Xbomb_force_w,
-#endif
-
-  Xstone,
-  Xstone_pause,
-  Xstone_fall,
-  Ystone_s,
-  Ystone_sB,
-  Ystone_e,
-  Ystone_eB,
-  Ystone_w,
-  Ystone_wB,
-  Xnut,
-  Xnut_pause,
-  Xnut_fall,
-  Ynut_s,
-  Ynut_sB,
-  Ynut_e,
-  Ynut_eB,
-  Ynut_w,
-  Ynut_wB,
-  Xbug_n,
-  Xbug_e,
-  Xbug_s,
-  Xbug_w,
-  Xbug_gon,
-  Xbug_goe,
-  Xbug_gos,
-  Xbug_gow,
-  Ybug_n,
-  Ybug_nB,
-  Ybug_e,
-  Ybug_eB,
-  Ybug_s,
-  Ybug_sB,
-  Ybug_w,
-  Ybug_wB,
-  Ybug_w_n,
-  Ybug_n_e,
-  Ybug_e_s,
-  Ybug_s_w,
-  Ybug_e_n,
-  Ybug_s_e,
-  Ybug_w_s,
-  Ybug_n_w,
-  Ybug_stone,
-  Ybug_spring,
-  Xtank_n,
-  Xtank_e,
-  Xtank_s,
-  Xtank_w,
-  Xtank_gon,
-  Xtank_goe,
-  Xtank_gos,
-  Xtank_gow,
-  Ytank_n,
-  Ytank_nB,
-  Ytank_e,
-  Ytank_eB,
-  Ytank_s,
-  Ytank_sB,
-  Ytank_w,
-  Ytank_wB,
-  Ytank_w_n,
-  Ytank_n_e,
-  Ytank_e_s,
-  Ytank_s_w,
-  Ytank_e_n,
-  Ytank_s_e,
-  Ytank_w_s,
-  Ytank_n_w,
-  Ytank_stone,
-  Ytank_spring,
-  Xandroid,
-  Xandroid_1_n,
-  Xandroid_2_n,
-  Xandroid_1_e,
-  Xandroid_2_e,
-  Xandroid_1_w,
-  Xandroid_2_w,
-  Xandroid_1_s,
-  Xandroid_2_s,
-  Yandroid_n,
-  Yandroid_nB,
-  Yandroid_ne,
-  Yandroid_neB,
-  Yandroid_e,
-  Yandroid_eB,
-  Yandroid_se,
-  Yandroid_seB,
-  Yandroid_s,
-  Yandroid_sB,
-  Yandroid_sw,
-  Yandroid_swB,
-  Yandroid_w,
-  Yandroid_wB,
-  Yandroid_nw,
-  Yandroid_nwB,
-  Xspring,
-  Xspring_pause,
-  Xspring_e,
-  Xspring_w,
-  Xspring_fall,
-  Yspring_s,
-  Yspring_sB,
-  Yspring_e,
-  Yspring_eB,
-  Yspring_w,
-  Yspring_wB,
-  Yspring_kill_e,
-  Yspring_kill_eB,
-  Yspring_kill_w,
-  Yspring_kill_wB,
-  Xeater_n,
-  Xeater_e,
-  Xeater_w,
-  Xeater_s,
-  Yeater_n,
-  Yeater_nB,
-  Yeater_e,
-  Yeater_eB,
-  Yeater_s,
-  Yeater_sB,
-  Yeater_w,
-  Yeater_wB,
-  Yeater_stone,
-  Yeater_spring,
-  Xalien,
-  Xalien_pause,
-  Yalien_n,
-  Yalien_nB,
-  Yalien_e,
-  Yalien_eB,
-  Yalien_s,
-  Yalien_sB,
-  Yalien_w,
-  Yalien_wB,
-  Yalien_stone,
-  Yalien_spring,
-  Xemerald,
-  Xemerald_pause,
-  Xemerald_fall,
-  Xemerald_shine,
-  Yemerald_s,
-  Yemerald_sB,
-  Yemerald_e,
-  Yemerald_eB,
-  Yemerald_w,
-  Yemerald_wB,
-  Yemerald_eat,
-  Yemerald_stone,
-  Xdiamond,
-  Xdiamond_pause,
-  Xdiamond_fall,
-  Xdiamond_shine,
-  Ydiamond_s,
-  Ydiamond_sB,
-  Ydiamond_e,
-  Ydiamond_eB,
-  Ydiamond_w,
-  Ydiamond_wB,
-  Ydiamond_eat,
-  Ydiamond_stone,
-  Xdrip_fall,
-  Xdrip_stretch,
-  Xdrip_stretchB,
-  Xdrip_eat,
-  Ydrip_s1,
-  Ydrip_s1B,
-  Ydrip_s2,
-  Ydrip_s2B,
-  Xbomb,
-  Xbomb_pause,
-  Xbomb_fall,
-  Ybomb_s,
-  Ybomb_sB,
-  Ybomb_e,
-  Ybomb_eB,
-  Ybomb_w,
-  Ybomb_wB,
-  Ybomb_eat,
-  Xballoon,
-  Yballoon_n,
-  Yballoon_nB,
-  Yballoon_e,
-  Yballoon_eB,
-  Yballoon_s,
-  Yballoon_sB,
-  Yballoon_w,
-  Yballoon_wB,
-  Xgrass,
-  Ygrass_nB,
-  Ygrass_eB,
-  Ygrass_sB,
-  Ygrass_wB,
-  Xdirt,
-  Ydirt_nB,
-  Ydirt_eB,
-  Ydirt_sB,
-  Ydirt_wB,
-  Xacid_ne,
-  Xacid_se,
-  Xacid_s,
-  Xacid_sw,
-  Xacid_nw,
-  Xacid_1,
-  Xacid_2,
-  Xacid_3,
-  Xacid_4,
-  Xacid_5,
-  Xacid_6,
-  Xacid_7,
-  Xacid_8,
-  Xball_1,
-  Xball_1B,
-  Xball_2,
-  Xball_2B,
-  Yball_eat,
-  Xgrow_ns,
-  Ygrow_ns_eat,
-  Xgrow_ew,
-  Ygrow_ew_eat,
-  Xwonderwall,
-  XwonderwallB,
-  Xamoeba_1,
-  Xamoeba_2,
-  Xamoeba_3,
-  Xamoeba_4,
-  Xamoeba_5,
-  Xamoeba_6,
-  Xamoeba_7,
-  Xamoeba_8,
-  Xdoor_1,
-  Xdoor_2,
-  Xdoor_3,
-  Xdoor_4,
-  Xdoor_5,
-  Xdoor_6,
-  Xdoor_7,
-  Xdoor_8,
-  Xkey_1,
-  Xkey_2,
-  Xkey_3,
-  Xkey_4,
-  Xkey_5,
-  Xkey_6,
-  Xkey_7,
-  Xkey_8,
-  Xwind_n,
-  Xwind_e,
-  Xwind_s,
-  Xwind_w,
-  Xwind_nesw,
-  Xwind_stop,
-  Xexit,
-  Xexit_1,
-  Xexit_2,
-  Xexit_3,
-  Xdynamite,
-  Ydynamite_eat,
-  Xdynamite_1,
-  Xdynamite_2,
-  Xdynamite_3,
-  Xdynamite_4,
-  Xbumper,
-  XbumperB,
-  Xwheel,
-  XwheelB,
-  Xswitch,
-  XswitchB,
-  Xsand,
-  Xsand_stone,
-  Xsand_stonein_1,
-  Xsand_stonein_2,
-  Xsand_stonein_3,
-  Xsand_stonein_4,
-  Xsand_stonesand_1,
-  Xsand_stonesand_2,
-  Xsand_stonesand_3,
-  Xsand_stonesand_4,
-  Xsand_stoneout_1,
-  Xsand_stoneout_2,
-  Xsand_sandstone_1,
-  Xsand_sandstone_2,
-  Xsand_sandstone_3,
-  Xsand_sandstone_4,
-  Xplant,
-  Yplant,
-  Xlenses,
-  Xmagnify,
-  Xdripper,
-  XdripperB,
-  Xfake_blank,
-  Xfake_blankB,
-  Xfake_grass,
-  Xfake_grassB,
-  Xfake_door_1,
-  Xfake_door_2,
-  Xfake_door_3,
-  Xfake_door_4,
-  Xfake_door_5,
-  Xfake_door_6,
-  Xfake_door_7,
-  Xfake_door_8,
-  Xsteel_1,
-  Xsteel_2,
-  Xsteel_3,
-  Xsteel_4,
-  Xwall_1,
-  Xwall_2,
-  Xwall_3,
-  Xwall_4,
-  Xround_wall_1,
-  Xround_wall_2,
-  Xround_wall_3,
-  Xround_wall_4,
-  Xdecor_1,
-  Xdecor_2,
-  Xdecor_3,
-  Xdecor_4,
-  Xdecor_5,
-  Xdecor_6,
-  Xdecor_7,
-  Xdecor_8,
-  Xdecor_9,
-  Xdecor_10,
-  Xdecor_11,
-  Xdecor_12,
-  Xalpha_0,
-  Xalpha_1,
-  Xalpha_2,
-  Xalpha_3,
-  Xalpha_4,
-  Xalpha_5,
-  Xalpha_6,
-  Xalpha_7,
-  Xalpha_8,
-  Xalpha_9,
-  Xalpha_excla,
-  Xalpha_quote,
-  Xalpha_comma,
-  Xalpha_minus,
-  Xalpha_perio,
-  Xalpha_colon,
-  Xalpha_quest,
-  Xalpha_a,
-  Xalpha_b,
-  Xalpha_c,
-  Xalpha_d,
-  Xalpha_e,
-  Xalpha_f,
-  Xalpha_g,
-  Xalpha_h,
-  Xalpha_i,
-  Xalpha_j,
-  Xalpha_k,
-  Xalpha_l,
-  Xalpha_m,
-  Xalpha_n,
-  Xalpha_o,
-  Xalpha_p,
-  Xalpha_q,
-  Xalpha_r,
-  Xalpha_s,
-  Xalpha_t,
-  Xalpha_u,
-  Xalpha_v,
-  Xalpha_w,
-  Xalpha_x,
-  Xalpha_y,
-  Xalpha_z,
-  Xalpha_arrow_e,
-  Xalpha_arrow_w,
-  Xalpha_copyr,
-
-  Xboom_bug, /* passed from explode to synchro (linked explosion); transition to explode_normal */
-  Xboom_bomb, /* passed from explode to synchro (linked explosion); transition to explode_normal */
-  Xboom_android, /* passed from explode to synchro; transition to boom_2 */
-  Xboom_1, /* passed from explode to synchro; transition to boom_2 */
-  Xboom_2, /* transition to boom[] */
-
-  Znormal, /* no picture */ /* this tile is passed from synchro to explode, only in next[] */
-  Zdynamite, /* no picture */ /* this tile is passed from synchro to explode, only in next[] */
-  Zplayer, /* no picture */ /* special code to indicate player */
-  ZBORDER, /* no picture */ /* special code to indicate border */
-
-  TILE_MAX
-};
-
-enum
-{
-  SPR_still = 0,
-  SPR_walk  = 1,
-  SPR_push  = 5,
-  SPR_spray = 9,
-
-  SPR_MAX   = 13
-};
-
-#endif
-
-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];
-
-#endif
index 74e4c8d8dbee2eab499ad784424dd6655ebb8684..3bdf371f09e197e831f5e95ad620ddb7c7f3e937 100644 (file)
@@ -63,6 +63,12 @@ void DumpTile(int x, int y)
   int sx = SCREENX(x);
   int sy = SCREENY(y);
 
+  if (level.game_engine_type == GAME_ENGINE_TYPE_EM)
+  {
+    x--;
+    y--;
+  }
+
   printf_line("-", 79);
   printf("Field Info: SCREEN(%d, %d), LEVEL(%d, %d)\n", sx, sy, x, y);
   printf_line("-", 79);
@@ -5171,6 +5177,7 @@ int getNumActivePlayers_EM()
   return num_players;
 }
 
+#if 1
 int getGameFrameDelay_EM(int native_em_game_frame_delay)
 {
   int game_frame_delay_value;
@@ -5185,6 +5192,7 @@ int getGameFrameDelay_EM(int native_em_game_frame_delay)
 
   return game_frame_delay_value;
 }
+#endif
 
 unsigned int InitRND(long seed)
 {