Blob Blame History Raw
--- board.c.orig	2014-02-15 13:48:19.000000000 -0700
+++ board.c	2020-02-07 09:06:44.108081526 -0700
@@ -32,7 +32,11 @@
 /*
  * Variables 
  */
-
+int restart_timeout;            /* Time to wait before restarting a level after Robbo dies */
+struct object board[MAX_W][MAX_H];
+struct robbo_struct robbo;
+struct viewport_struct viewport;
+struct game_mechanics_struct game_mechanics;
 
 /*
  * Function prototypes 
--- board.h.orig	2014-02-12 13:22:57.000000000 -0700
+++ board.h	2020-02-07 09:06:45.443058579 -0700
@@ -125,7 +125,7 @@
 #define EFFECT_NONE   -1
 
 /* Variables */
-int restart_timeout;		/* Time to wait before restarting a level after Robbo dies */
+extern int restart_timeout;		/* Time to wait before restarting a level after Robbo dies */
 
 struct Coords
 {
@@ -162,9 +162,9 @@ struct object
 #endif
   struct Coords icon[MAX_ICONS];	/* Coords of left-up point of icons drawed on bitmap */
 };
-struct object board[MAX_W][MAX_H];	/* This is the game area. Each board location holds one and only one of the above objects */
+extern struct object board[MAX_W][MAX_H];	/* This is the game area. Each board location holds one and only one of the above objects */
 
-struct
+struct robbo_struct
 {
   int x;			/* Board x position */
   int y;			/* Board y position */
@@ -180,10 +180,11 @@ struct
   int blocked;			/* robbo cannot move - possible magnet moving */
   int blocked_direction;	/* where robbo should be moved after blocking */
   int teleporting;		/* Set to TRUE when Robbo is teleporting */
-} robbo;
+};
+extern struct robbo_struct robbo;
 
 /* What is shown of the board is seen through this viewport */
-struct
+struct viewport_struct
 {
   int x;			/* Board x position */
   int y;			/* Board y position */
@@ -199,15 +200,17 @@ struct
   int yoffset;
   int cycles_to_dest;
   int maximise;
-} viewport;
+};
+extern struct viewport_struct viewport;
 
 /* Some game mechanics that I have made available for modification via the rcfile */
-struct
+struct game_mechanics_struct
 {
   int sensible_bears;
   int sensible_questionmarks;
   int sensible_solid_lasers;
-} game_mechanics;
+};
+extern struct game_mechanics_struct game_mechanics;
 
 /* Function prototypes */
 void update_game (void);
--- controls.c.orig	2011-04-17 10:55:41.000000000 -0600
+++ controls.c	2020-02-07 09:08:36.106156353 -0700
@@ -83,6 +83,27 @@
 
 /* Variables */
 SDL_Event event;
+SDL_Joystick *joystick;
+
+char default_joystick_name[MAX_JOYSTICK_NAME_LENGTH];
+int joystick_count;
+char joystick_list[MAX_JOYSTICKS][MAX_JOYSTICK_NAME_LENGTH];
+
+/* Configurable options */
+int key_repeat_delay;                   /* 20 to 1000 ms */
+int temp_key_repeat_delay;              /* 20 to 1000 ms */
+int key_repeat_interval;                /* 20 to 1000 ms */
+int temp_key_repeat_interval;   /* 20 to 1000 ms */
+int default_joystick;
+int temp_default_joystick;
+int joystick_dead_zone;
+int temp_joystick_dead_zone;
+
+struct control user_controls[USER_CONTROLS];
+struct control temp_user_controls[USER_CONTROLS];
+
+ROB_OpEnv gnurobbo_op_env;
+ROB_OpEnv temp_gnurobbo_op_env;
 
 /* Function prototypes */
 
--- controls.h.orig	2010-01-04 17:18:39.000000000 -0700
+++ controls.h	2020-02-07 09:08:34.442184954 -0700
@@ -85,21 +85,21 @@
 
 
 /* Variables */
-SDL_Joystick *joystick;
+extern SDL_Joystick *joystick;
 
-char default_joystick_name[MAX_JOYSTICK_NAME_LENGTH];
-int joystick_count;
-char joystick_list[MAX_JOYSTICKS][MAX_JOYSTICK_NAME_LENGTH];
+extern char default_joystick_name[MAX_JOYSTICK_NAME_LENGTH];
+extern int joystick_count;
+extern char joystick_list[MAX_JOYSTICKS][MAX_JOYSTICK_NAME_LENGTH];
 
 /* Configurable options */
-int key_repeat_delay;			/* 20 to 1000 ms */
-int temp_key_repeat_delay;		/* 20 to 1000 ms */
-int key_repeat_interval;		/* 20 to 1000 ms */
-int temp_key_repeat_interval;	/* 20 to 1000 ms */
-int default_joystick;
-int temp_default_joystick;
-int joystick_dead_zone;
-int temp_joystick_dead_zone;
+extern int key_repeat_delay;		/* 20 to 1000 ms */
+extern int temp_key_repeat_delay;	/* 20 to 1000 ms */
+extern int key_repeat_interval;		/* 20 to 1000 ms */
+extern int temp_key_repeat_interval;	/* 20 to 1000 ms */
+extern int default_joystick;
+extern int temp_default_joystick;
+extern int joystick_dead_zone;
+extern int temp_joystick_dead_zone;
 
 struct control {
 	int device;			/* Keyboard, joystick or mouse */
@@ -110,11 +110,11 @@ struct control {
 	int delay;			/* The initial delay in cycles before repeating - 0 disables the delay */
 	int interval;		/* The repeat interval in cycles - 0 disables the interval */
 };
-struct control user_controls[USER_CONTROLS];
-struct control temp_user_controls[USER_CONTROLS];
+extern struct control user_controls[USER_CONTROLS];
+extern struct control temp_user_controls[USER_CONTROLS];
 
-ROB_OpEnv gnurobbo_op_env;
-ROB_OpEnv temp_gnurobbo_op_env;
+extern ROB_OpEnv gnurobbo_op_env;
+extern ROB_OpEnv temp_gnurobbo_op_env;
 
 /* Function prototypes */
 int get_user_action(int *actionid, int pollall, int *device, int *id, int *state);
--- game.c.orig	2011-04-17 10:55:41.000000000 -0600
+++ game.c	2020-02-07 09:35:29.728219156 -0700
@@ -66,6 +66,24 @@ int gua_device;			/* Used when getting a
 int gua_id;			/* Used when getting actions */
 int gua_state;			/* Used when getting actions */
 
+#ifdef DEBUG_COLOUR_SELECT
+int debug_colour_select_r;
+int debug_colour_select_g;
+int debug_colour_select_b;
+int debug_colour_select_component;
+#endif
+int game_mode;
+int game_cycle_delay;           /* Defaults to 10ms */
+int game_cycle_limit;           /* 20, 25, 33 Hz */
+int temp_game_cycle_limit;      /* 20, 25, 33 Hz */
+int cycle_count;                /* A running cycle count used for time stamping objects */
+int introscreenselecteditem;
+int helppage;
+int helppageselecteditem;
+int options[104];
+int optionspage;
+int optionspageselecteditem[OPTIONS_SCREEN_PAGES];
+
 /* Function prototypes */
 Uint32 game_timer (Uint32 interval, void *param);
 void clean_up_before_exit (void);
--- game.h.orig	2011-04-17 10:55:41.000000000 -0600
+++ game.h	2020-02-07 09:05:50.715999302 -0700
@@ -184,25 +184,25 @@
 
 /* Variables */
 #ifdef DEBUG_COLOUR_SELECT
-int debug_colour_select_r;
-int debug_colour_select_g;
-int debug_colour_select_b;
-int debug_colour_select_component;
+extern int debug_colour_select_r;
+extern int debug_colour_select_g;
+extern int debug_colour_select_b;
+extern int debug_colour_select_component;
 #endif
-int sound;
-int game_mode;
-int game_cycle_delay;		/* Defaults to 10ms */
-int game_cycle_limit;		/* 20, 25, 33 Hz */
-int temp_game_cycle_limit;	/* 20, 25, 33 Hz */
-int cycle_count;		/* A running cycle count used for time stamping objects */
-int temp_game_sound;
-int temp_sfx_vol;
-int introscreenselecteditem;
-int helppage;
-int helppageselecteditem;
-int options[104];
-int optionspage;
-int optionspageselecteditem[OPTIONS_SCREEN_PAGES];
+extern int sound;
+extern int game_mode;
+extern int game_cycle_delay;		/* Defaults to 10ms */
+extern int game_cycle_limit;		/* 20, 25, 33 Hz */
+extern int temp_game_cycle_limit;	/* 20, 25, 33 Hz */
+extern int cycle_count;		/* A running cycle count used for time stamping objects */
+extern int temp_game_sound;
+extern int temp_sfx_vol;
+extern int introscreenselecteditem;
+extern int helppage;
+extern int helppageselecteditem;
+extern int options[104];
+extern int optionspage;
+extern int optionspageselecteditem[OPTIONS_SCREEN_PAGES];
 
 /* Function prototypes */
 int my_rand ();
--- konstruktor.c.orig	2012-01-18 13:03:07.000000000 -0700
+++ konstruktor.c	2020-02-07 09:11:13.695447503 -0700
@@ -79,6 +79,15 @@ struct k_icon_init K_icons_list[] = {
 };
 
 struct k_icons  K_icons[K_MAXICONS];
+struct k_view_struct k_view;
+SDL_Surface    *k_icons;
+int K_exit;
+int             lastclick;
+int             K_direction;
+char            infostring[255];
+int             inforedraw;
+int             kmx,
+                kmy;
 
 /*
  * designer state variables 
--- konstruktor.h.orig	2012-01-18 13:03:07.000000000 -0700
+++ konstruktor.h	2020-02-07 09:11:12.815462629 -0700
@@ -93,33 +93,33 @@ struct k_icon_init {
 
 /* Thunor: This is now being defined and declared at the same
  * time since we only require one of them */
-struct {
+struct k_view_struct {
 	int x;
 	int y;
 	int w;
 	int h;
 	int offsetx;
 	int offsety;
-} k_view;
-
+};
+extern struct k_view_struct k_view;
 
 
 
 
 
 
-SDL_Surface    *k_icons;
+extern SDL_Surface    *k_icons;
 
 /*
  * variables 
  */
-int K_exit;
-int             lastclick;
-int             K_direction;
-char            infostring[255];
-int             inforedraw;
-int             kmx,
-                kmy;
+extern int K_exit;
+extern int             lastclick;
+extern int             K_direction;
+extern char            infostring[255];
+extern int             inforedraw;
+extern int             kmx,
+                       kmy;
 /*
  * prototypes 
  */
--- levels.c.orig	2014-02-20 11:15:52.000000000 -0700
+++ levels.c	2020-02-07 09:12:05.607555176 -0700
@@ -30,6 +30,13 @@
 /* Variables */
 extern char *data_state[];
 
+struct level_struct level;
+struct pack level_packs[MAX_LEVEL_PACKS];
+
+int found_pack_count;           /* How many packs were physically found */
+int level_pack_count;           /* How many packs are in the list (historical entries from the rc are added to the end) */
+int selected_pack;                      /* Which pack in the list is currently selected */
+
 /* Function prototypes */
 int transform_char (char c);
 
--- levels.h.orig	2010-08-24 15:57:10.000000000 -0600
+++ levels.h	2020-02-07 09:12:06.492539964 -0700
@@ -31,7 +31,7 @@
 #define DEFAULT_LEVEL_COLOUR 0x608050
 
 /* Variables */
-struct {
+struct level_struct {
 	int w;
 	int h;
 	char author[60];		/* The text displayed on the authorline above the viewport */
@@ -39,7 +39,8 @@ struct {
 	Uint32 colour;			/* The colour if found or the default_level_colour if found in the level pack */
 	Uint32 colour_override;	/* The colour if found or the default_level_colour if found in the skinrc */
 	char notes[1024];		/* This is displayed nowhere now, but contains information about notes */
-} level;
+};
+extern struct level_struct level;
 
 struct pack {
 	char filename[256];		/* e.g. /usr/local/share/gnurobbo/levels/original.dat or ~/.gnurobbo/levels/mylevels.dat */
@@ -49,11 +50,11 @@ struct pack {
 	int level_selected;		/* e.g. 3 is currently selected by the user */
 	int selected;			/* e.g. This pack is currently selected by the user */
 };
-struct pack level_packs[MAX_LEVEL_PACKS];
+extern struct pack level_packs[MAX_LEVEL_PACKS];
 
-int found_pack_count;		/* How many packs were physically found */
-int level_pack_count;		/* How many packs are in the list (historical entries from the rc are added to the end) */
-int selected_pack;			/* Which pack in the list is currently selected */
+extern int found_pack_count;		/* How many packs were physically found */
+extern int level_pack_count;		/* How many packs are in the list (historical entries from the rc are added to the end) */
+extern int selected_pack;			/* Which pack in the list is currently selected */
 
 /* Function prototypes */
 int level_init(void);
--- locales.c.orig	2012-01-18 13:03:07.000000000 -0700
+++ locales.c	2020-02-07 09:13:50.422753469 -0700
@@ -35,6 +35,202 @@
 /* Variables */
 extern char *data_state[];
 
+char txt_intro_story[TXT_INTRO_STORY_ROWS * TXT_MAX_COLS];
+char txt_intro_keys[TXT_INTRO_KEYS_ROWS * TXT_MAX_COLS];
+char txt_intro_keys_description[TXT_INTRO_KEYS_DESCRIPTION_ROWS * TXT_MAX_COLS];
+char txt_intro_menu[TXT_INTRO_MENU_ROWS * TXT_MAX_COLS];
+char txt_of[TXT_MAX_COLS];
+char txt_intro_credits[TXT_INTRO_CREDITS_ROWS * TXT_MAX_COLS];
+
+char txt_help_page0[TXT_HELP_PAGE0_ROWS * TXT_MAX_COLS];
+char txt_help_page1[TXT_HELP_PAGE1_ROWS * TXT_MAX_COLS];
+char txt_help_page2[TXT_HELP_PAGE2_ROWS * TXT_MAX_COLS];
+char txt_help_page3[TXT_HELP_PAGE3_ROWS * TXT_MAX_COLS];
+char txt_Back[TXT_MAX_COLS];
+char txt_Next[TXT_MAX_COLS];
+char txt_Exit[TXT_MAX_COLS];
+
+char txt_options_page1[TXT_OPTIONS_PAGE1_ROWS * TXT_MAX_COLS];
+char txt_Save[TXT_MAX_COLS];
+char txt_Game_Speed[TXT_MAX_COLS];
+char txt_Fast[TXT_MAX_COLS];
+char txt_Normal[TXT_MAX_COLS];
+char txt_Slow[TXT_MAX_COLS];
+char txt_Key_Repeat[TXT_MAX_COLS];
+char txt_Delay[TXT_MAX_COLS];
+char txt_Interval[TXT_MAX_COLS];
+char txt_Default_Joystick[TXT_MAX_COLS];
+char txt_No_joystick_found[TXT_MAX_COLS];
+char txt_Joystick_Axes_Dead_Zone[TXT_MAX_COLS];
+char txt_Language[TXT_MAX_COLS];
+char txt_Translation_by[TXT_MAX_COLS];
+char txt_Save_Frequency[TXT_MAX_COLS];
+char txt_On_Exit[TXT_MAX_COLS];
+char txt_On_Change[TXT_MAX_COLS];
+char txt_Move_Up[TXT_MAX_COLS];
+char txt_Move_Up_Right[TXT_MAX_COLS];
+char txt_Move_Right[TXT_MAX_COLS];
+char txt_Move_Down_Right[TXT_MAX_COLS];
+char txt_Move_Down[TXT_MAX_COLS];
+char txt_Move_Down_Left[TXT_MAX_COLS];
+char txt_Move_Left[TXT_MAX_COLS];
+char txt_Move_Up_Left[TXT_MAX_COLS];
+char txt_Shoot_Up[TXT_MAX_COLS];
+char txt_Shoot_Down[TXT_MAX_COLS];
+char txt_Shoot_Left[TXT_MAX_COLS];
+char txt_Shoot_Right[TXT_MAX_COLS];
+char txt_Restart[TXT_MAX_COLS];
+char txt_Confirm[TXT_MAX_COLS];
+char txt_Help[TXT_MAX_COLS];
+char txt_Options[TXT_MAX_COLS];
+char txt_Previous_Level[TXT_MAX_COLS];
+char txt_Next_Level[TXT_MAX_COLS];
+char txt_Previous_Pack[TXT_MAX_COLS];
+char txt_Next_Pack[TXT_MAX_COLS];
+char txt_Toggle_Fullscreen[TXT_MAX_COLS];
+char txt_Home[TXT_MAX_COLS];
+char txt_End[TXT_MAX_COLS];
+char txt_Page_Up[TXT_MAX_COLS];
+char txt_Page_Down[TXT_MAX_COLS];
+char txt_Volume_Up[TXT_MAX_COLS];
+char txt_Volume_Down[TXT_MAX_COLS];
+char txt_Modifier[TXT_MAX_COLS];
+char txt_Restore_Default_Controls[TXT_MAX_COLS];
+char txt_Toggle_Designer[TXT_MAX_COLS];
+char txt_Scroll_Up[TXT_MAX_COLS];
+char txt_Scroll_Down[TXT_MAX_COLS];
+char txt_Primary_Click[TXT_MAX_COLS];
+char txt_System_Pointer[TXT_MAX_COLS];
+char txt_Disabled[TXT_MAX_COLS];
+char txt_Enabled[TXT_MAX_COLS];
+char txt_Pointer_Controls_Pad_Type[TXT_MAX_COLS];
+char txt_Viewport[TXT_MAX_COLS];
+char txt_Screen[TXT_MAX_COLS];
+char txt_Sound[TXT_MAX_COLS];
+char txt_Sfx_Volume[TXT_MAX_COLS];
+char txt_Simulated_Pointer[TXT_MAX_COLS];
+
+char txt_Key[TXT_MAX_COLS];
+char txt_Joy[TXT_MAX_COLS];
+char txt_Ptr[TXT_MAX_COLS];
+char txt_Mod[TXT_MAX_COLS];
+char txt_Skin[TXT_MAX_COLS];
+char txt_By[TXT_MAX_COLS];
+
+char txt_Level_Author[TXT_MAX_COLS];
+char txt_endscreen_congrats[TXT_ENDSCREEN_CONGRATS_ROWS * TXT_MAX_COLS];
+
+char txt_Volume[TXT_MAX_COLS];
+char txt_Changes_saved[TXT_MAX_COLS];
+char txt_Default_controls_restored[TXT_MAX_COLS];
+char txt_Press_something_and_release[TXT_MAX_COLS];
+char txt_No_input_was_detected[TXT_MAX_COLS];
+
+char txt_ptr_BtnLeft[TXT_MAX_COLS];
+char txt_ptr_BtnMiddle[TXT_MAX_COLS];
+char txt_ptr_BtnRight[TXT_MAX_COLS];
+char txt_ptr_WheelUp[TXT_MAX_COLS];
+char txt_ptr_WheelDown[TXT_MAX_COLS];
+
+char txt_key_Backspace[TXT_MAX_COLS];
+char txt_key_Tab[TXT_MAX_COLS];
+char txt_key_Clear[TXT_MAX_COLS];
+char txt_key_Return[TXT_MAX_COLS];
+char txt_key_Pause[TXT_MAX_COLS];
+char txt_key_Escape[TXT_MAX_COLS];
+char txt_key_Space[TXT_MAX_COLS];
+char txt_key_Delete[TXT_MAX_COLS];
+char txt_key_KP[TXT_MAX_COLS];
+char txt_key_Up[TXT_MAX_COLS];
+char txt_key_Down[TXT_MAX_COLS];
+char txt_key_Right[TXT_MAX_COLS];
+char txt_key_Left[TXT_MAX_COLS];
+char txt_key_Insert[TXT_MAX_COLS];
+char txt_key_Home[TXT_MAX_COLS];
+char txt_key_End[TXT_MAX_COLS];
+char txt_key_PgUp[TXT_MAX_COLS];
+char txt_key_PgDn[TXT_MAX_COLS];
+char txt_key_NumLk[TXT_MAX_COLS];
+char txt_key_CapsLk[TXT_MAX_COLS];
+char txt_key_ScrlLk[TXT_MAX_COLS];
+char txt_key_RShift[TXT_MAX_COLS];
+char txt_key_LShift[TXT_MAX_COLS];
+char txt_key_RCtrl[TXT_MAX_COLS];
+char txt_key_LCtrl[TXT_MAX_COLS];
+char txt_key_RAlt[TXT_MAX_COLS];
+char txt_key_LAlt[TXT_MAX_COLS];
+char txt_key_RMeta[TXT_MAX_COLS];
+char txt_key_LMeta[TXT_MAX_COLS];
+char txt_key_LSuper[TXT_MAX_COLS];
+char txt_key_RSuper[TXT_MAX_COLS];
+char txt_key_AltGr[TXT_MAX_COLS];
+char txt_key_Compose[TXT_MAX_COLS];
+char txt_key_Help[TXT_MAX_COLS];
+char txt_key_PrScr[TXT_MAX_COLS];
+char txt_key_SysRq[TXT_MAX_COLS];
+char txt_key_Break[TXT_MAX_COLS];
+char txt_key_Menu[TXT_MAX_COLS];
+char txt_key_Power[TXT_MAX_COLS];
+char txt_key_Euro[TXT_MAX_COLS];
+char txt_key_Undo[TXT_MAX_COLS];
+
+char txt_konstruktor_Ground[TXT_MAX_COLS];
+char txt_konstruktor_Stop[TXT_MAX_COLS];
+char txt_konstruktor_Radioactive_Field[TXT_MAX_COLS];
+char txt_konstruktor_Push_Box[TXT_MAX_COLS];
+char txt_konstruktor_Capsule[TXT_MAX_COLS];
+char txt_konstruktor_Bomb[TXT_MAX_COLS];
+char txt_konstruktor_Bomb2[TXT_MAX_COLS];
+char txt_konstruktor_Door[TXT_MAX_COLS];
+char txt_konstruktor_Box[TXT_MAX_COLS];
+char txt_konstruktor_Empty_Field[TXT_MAX_COLS];
+char txt_konstruktor_Butterfly[TXT_MAX_COLS];
+char txt_konstruktor_Gun_Fire[TXT_MAX_COLS];
+char txt_konstruktor_Force_Field[TXT_MAX_COLS];
+char txt_konstruktor_Screw[TXT_MAX_COLS];
+char txt_konstruktor_Wall[TXT_MAX_COLS];
+char txt_konstruktor_Black_Wall[TXT_MAX_COLS];
+char txt_konstruktor_Teleport[TXT_MAX_COLS];
+char txt_konstruktor_Gun[TXT_MAX_COLS];
+char txt_konstruktor_Magnet[TXT_MAX_COLS];
+char txt_konstruktor_Bear[TXT_MAX_COLS];
+char txt_konstruktor_Black_Bear[TXT_MAX_COLS];
+char txt_konstruktor_Bird[TXT_MAX_COLS];
+char txt_konstruktor_Key[TXT_MAX_COLS];
+char txt_konstruktor_Bullets[TXT_MAX_COLS];
+char txt_konstruktor_on_map[TXT_MAX_COLS];
+char txt_konstruktor_Laser_Gun[TXT_MAX_COLS];
+char txt_konstruktor_Blaster_Gun[TXT_MAX_COLS];
+char txt_konstruktor_Regular_Gun[TXT_MAX_COLS];
+char txt_konstruktor_Fixed[TXT_MAX_COLS];
+char txt_konstruktor_Moveable[TXT_MAX_COLS];
+char txt_konstruktor_Rotating[TXT_MAX_COLS];
+char txt_konstruktor_Moveable_Rotating[TXT_MAX_COLS];
+char txt_konstruktor_Direction_right[TXT_MAX_COLS];
+char txt_konstruktor_Direction_down[TXT_MAX_COLS];
+char txt_konstruktor_Direction_left[TXT_MAX_COLS];
+char txt_konstruktor_Direction_up[TXT_MAX_COLS];
+char txt_konstruktor_Welcome_to_GNU_Robbo_Designer[TXT_MAX_COLS];
+char txt_konstruktor_Exit_designer_select_again_to_exit[TXT_MAX_COLS];
+char txt_konstruktor_Reload_level_select_again_to_reload[TXT_MAX_COLS];
+char txt_konstruktor_Level_reloaded[TXT_MAX_COLS];
+char txt_konstruktor_New_level_select_again_to_create[TXT_MAX_COLS];
+char txt_konstruktor_Level_created[TXT_MAX_COLS];
+char txt_konstruktor_Save_select_again_to_save_new_level[TXT_MAX_COLS];
+char txt_konstruktor_New_level_appended_to_pack[TXT_MAX_COLS];
+char txt_konstruktor_Clear_level_select_again_to_clear[TXT_MAX_COLS];
+char txt_konstruktor_Level_cleared[TXT_MAX_COLS];
+char txt_konstruktor_Save_select_again_to_save_changes[TXT_MAX_COLS];
+char txt_konstruktor_Changes_saved[TXT_MAX_COLS];
+char txt_konstruktor_Level_resized_to[TXT_MAX_COLS];
+char txt_konstruktor_Screws[TXT_MAX_COLS];
+
+struct locale locales[MAX_LOCALES];
+
+int locale_count;
+int selected_locale;
+int temp_selected_locale;
+
 /* Function prototypes */
 
 
--- locales.h.orig	2012-01-18 13:03:07.000000000 -0700
+++ locales.h	2020-02-07 09:16:29.851162510 -0700
@@ -36,206 +36,206 @@
 #define TXT_MAX_COLS 100
 
 /* Variables */
-char txt_intro_story[TXT_INTRO_STORY_ROWS * TXT_MAX_COLS];
-char txt_intro_keys[TXT_INTRO_KEYS_ROWS * TXT_MAX_COLS];
-char txt_intro_keys_description[TXT_INTRO_KEYS_DESCRIPTION_ROWS * TXT_MAX_COLS];
-char txt_intro_menu[TXT_INTRO_MENU_ROWS * TXT_MAX_COLS];
-char txt_of[TXT_MAX_COLS];
-char txt_intro_credits[TXT_INTRO_CREDITS_ROWS * TXT_MAX_COLS];
+extern char txt_intro_story[TXT_INTRO_STORY_ROWS * TXT_MAX_COLS];
+extern char txt_intro_keys[TXT_INTRO_KEYS_ROWS * TXT_MAX_COLS];
+extern char txt_intro_keys_description[TXT_INTRO_KEYS_DESCRIPTION_ROWS * TXT_MAX_COLS];
+extern char txt_intro_menu[TXT_INTRO_MENU_ROWS * TXT_MAX_COLS];
+extern char txt_of[TXT_MAX_COLS];
+extern char txt_intro_credits[TXT_INTRO_CREDITS_ROWS * TXT_MAX_COLS];
 
-char txt_help_page0[TXT_HELP_PAGE0_ROWS * TXT_MAX_COLS];
-char txt_help_page1[TXT_HELP_PAGE1_ROWS * TXT_MAX_COLS];
-char txt_help_page2[TXT_HELP_PAGE2_ROWS * TXT_MAX_COLS];
-char txt_help_page3[TXT_HELP_PAGE3_ROWS * TXT_MAX_COLS];
-char txt_Back[TXT_MAX_COLS];
-char txt_Next[TXT_MAX_COLS];
-char txt_Exit[TXT_MAX_COLS];
+extern char txt_help_page0[TXT_HELP_PAGE0_ROWS * TXT_MAX_COLS];
+extern char txt_help_page1[TXT_HELP_PAGE1_ROWS * TXT_MAX_COLS];
+extern char txt_help_page2[TXT_HELP_PAGE2_ROWS * TXT_MAX_COLS];
+extern char txt_help_page3[TXT_HELP_PAGE3_ROWS * TXT_MAX_COLS];
+extern char txt_Back[TXT_MAX_COLS];
+extern char txt_Next[TXT_MAX_COLS];
+extern char txt_Exit[TXT_MAX_COLS];
 
-char txt_options_page1[TXT_OPTIONS_PAGE1_ROWS * TXT_MAX_COLS];
-char txt_Save[TXT_MAX_COLS];
-char txt_Game_Speed[TXT_MAX_COLS];
-char txt_Fast[TXT_MAX_COLS];
-char txt_Normal[TXT_MAX_COLS];
-char txt_Slow[TXT_MAX_COLS];
-char txt_Key_Repeat[TXT_MAX_COLS];
-char txt_Delay[TXT_MAX_COLS];
-char txt_Interval[TXT_MAX_COLS];
-char txt_Default_Joystick[TXT_MAX_COLS];
-char txt_No_joystick_found[TXT_MAX_COLS];
-char txt_Joystick_Axes_Dead_Zone[TXT_MAX_COLS];
-char txt_Language[TXT_MAX_COLS];
-char txt_Translation_by[TXT_MAX_COLS];
-char txt_Save_Frequency[TXT_MAX_COLS];
-char txt_On_Exit[TXT_MAX_COLS];
-char txt_On_Change[TXT_MAX_COLS];
-char txt_Move_Up[TXT_MAX_COLS];
-char txt_Move_Up_Right[TXT_MAX_COLS];
-char txt_Move_Right[TXT_MAX_COLS];
-char txt_Move_Down_Right[TXT_MAX_COLS];
-char txt_Move_Down[TXT_MAX_COLS];
-char txt_Move_Down_Left[TXT_MAX_COLS];
-char txt_Move_Left[TXT_MAX_COLS];
-char txt_Move_Up_Left[TXT_MAX_COLS];
-char txt_Shoot_Up[TXT_MAX_COLS];
-char txt_Shoot_Down[TXT_MAX_COLS];
-char txt_Shoot_Left[TXT_MAX_COLS];
-char txt_Shoot_Right[TXT_MAX_COLS];
-char txt_Restart[TXT_MAX_COLS];
-char txt_Confirm[TXT_MAX_COLS];
-char txt_Help[TXT_MAX_COLS];
-char txt_Options[TXT_MAX_COLS];
-char txt_Previous_Level[TXT_MAX_COLS];
-char txt_Next_Level[TXT_MAX_COLS];
-char txt_Previous_Pack[TXT_MAX_COLS];
-char txt_Next_Pack[TXT_MAX_COLS];
-char txt_Toggle_Fullscreen[TXT_MAX_COLS];
-char txt_Home[TXT_MAX_COLS];
-char txt_End[TXT_MAX_COLS];
-char txt_Page_Up[TXT_MAX_COLS];
-char txt_Page_Down[TXT_MAX_COLS];
-char txt_Volume_Up[TXT_MAX_COLS];
-char txt_Volume_Down[TXT_MAX_COLS];
-char txt_Modifier[TXT_MAX_COLS];
-char txt_Restore_Default_Controls[TXT_MAX_COLS];
-char txt_Toggle_Designer[TXT_MAX_COLS];
-char txt_Scroll_Up[TXT_MAX_COLS];
-char txt_Scroll_Down[TXT_MAX_COLS];
-char txt_Primary_Click[TXT_MAX_COLS];
-char txt_System_Pointer[TXT_MAX_COLS];
-char txt_Disabled[TXT_MAX_COLS];
-char txt_Enabled[TXT_MAX_COLS];
-char txt_Pointer_Controls_Pad_Type[TXT_MAX_COLS];
-char txt_Viewport[TXT_MAX_COLS];
-char txt_Screen[TXT_MAX_COLS];
-char txt_Sound[TXT_MAX_COLS];
-char txt_Sfx_Volume[TXT_MAX_COLS];
-char txt_Simulated_Pointer[TXT_MAX_COLS];
+extern char txt_options_page1[TXT_OPTIONS_PAGE1_ROWS * TXT_MAX_COLS];
+extern char txt_Save[TXT_MAX_COLS];
+extern char txt_Game_Speed[TXT_MAX_COLS];
+extern char txt_Fast[TXT_MAX_COLS];
+extern char txt_Normal[TXT_MAX_COLS];
+extern char txt_Slow[TXT_MAX_COLS];
+extern char txt_Key_Repeat[TXT_MAX_COLS];
+extern char txt_Delay[TXT_MAX_COLS];
+extern char txt_Interval[TXT_MAX_COLS];
+extern char txt_Default_Joystick[TXT_MAX_COLS];
+extern char txt_No_joystick_found[TXT_MAX_COLS];
+extern char txt_Joystick_Axes_Dead_Zone[TXT_MAX_COLS];
+extern char txt_Language[TXT_MAX_COLS];
+extern char txt_Translation_by[TXT_MAX_COLS];
+extern char txt_Save_Frequency[TXT_MAX_COLS];
+extern char txt_On_Exit[TXT_MAX_COLS];
+extern char txt_On_Change[TXT_MAX_COLS];
+extern char txt_Move_Up[TXT_MAX_COLS];
+extern char txt_Move_Up_Right[TXT_MAX_COLS];
+extern char txt_Move_Right[TXT_MAX_COLS];
+extern char txt_Move_Down_Right[TXT_MAX_COLS];
+extern char txt_Move_Down[TXT_MAX_COLS];
+extern char txt_Move_Down_Left[TXT_MAX_COLS];
+extern char txt_Move_Left[TXT_MAX_COLS];
+extern char txt_Move_Up_Left[TXT_MAX_COLS];
+extern char txt_Shoot_Up[TXT_MAX_COLS];
+extern char txt_Shoot_Down[TXT_MAX_COLS];
+extern char txt_Shoot_Left[TXT_MAX_COLS];
+extern char txt_Shoot_Right[TXT_MAX_COLS];
+extern char txt_Restart[TXT_MAX_COLS];
+extern char txt_Confirm[TXT_MAX_COLS];
+extern char txt_Help[TXT_MAX_COLS];
+extern char txt_Options[TXT_MAX_COLS];
+extern char txt_Previous_Level[TXT_MAX_COLS];
+extern char txt_Next_Level[TXT_MAX_COLS];
+extern char txt_Previous_Pack[TXT_MAX_COLS];
+extern char txt_Next_Pack[TXT_MAX_COLS];
+extern char txt_Toggle_Fullscreen[TXT_MAX_COLS];
+extern char txt_Home[TXT_MAX_COLS];
+extern char txt_End[TXT_MAX_COLS];
+extern char txt_Page_Up[TXT_MAX_COLS];
+extern char txt_Page_Down[TXT_MAX_COLS];
+extern char txt_Volume_Up[TXT_MAX_COLS];
+extern char txt_Volume_Down[TXT_MAX_COLS];
+extern char txt_Modifier[TXT_MAX_COLS];
+extern char txt_Restore_Default_Controls[TXT_MAX_COLS];
+extern char txt_Toggle_Designer[TXT_MAX_COLS];
+extern char txt_Scroll_Up[TXT_MAX_COLS];
+extern char txt_Scroll_Down[TXT_MAX_COLS];
+extern char txt_Primary_Click[TXT_MAX_COLS];
+extern char txt_System_Pointer[TXT_MAX_COLS];
+extern char txt_Disabled[TXT_MAX_COLS];
+extern char txt_Enabled[TXT_MAX_COLS];
+extern char txt_Pointer_Controls_Pad_Type[TXT_MAX_COLS];
+extern char txt_Viewport[TXT_MAX_COLS];
+extern char txt_Screen[TXT_MAX_COLS];
+extern char txt_Sound[TXT_MAX_COLS];
+extern char txt_Sfx_Volume[TXT_MAX_COLS];
+extern char txt_Simulated_Pointer[TXT_MAX_COLS];
 
-char txt_Key[TXT_MAX_COLS];
-char txt_Joy[TXT_MAX_COLS];
-char txt_Ptr[TXT_MAX_COLS];
-char txt_Mod[TXT_MAX_COLS];
-char txt_Skin[TXT_MAX_COLS];
-char txt_By[TXT_MAX_COLS];
+extern char txt_Key[TXT_MAX_COLS];
+extern char txt_Joy[TXT_MAX_COLS];
+extern char txt_Ptr[TXT_MAX_COLS];
+extern char txt_Mod[TXT_MAX_COLS];
+extern char txt_Skin[TXT_MAX_COLS];
+extern char txt_By[TXT_MAX_COLS];
 
-char txt_Level_Author[TXT_MAX_COLS];
-char txt_endscreen_congrats[TXT_ENDSCREEN_CONGRATS_ROWS * TXT_MAX_COLS];
+extern char txt_Level_Author[TXT_MAX_COLS];
+extern char txt_endscreen_congrats[TXT_ENDSCREEN_CONGRATS_ROWS * TXT_MAX_COLS];
 
-char txt_Volume[TXT_MAX_COLS];
-char txt_Changes_saved[TXT_MAX_COLS];
-char txt_Default_controls_restored[TXT_MAX_COLS];
-char txt_Press_something_and_release[TXT_MAX_COLS];
-char txt_No_input_was_detected[TXT_MAX_COLS];
+extern char txt_Volume[TXT_MAX_COLS];
+extern char txt_Changes_saved[TXT_MAX_COLS];
+extern char txt_Default_controls_restored[TXT_MAX_COLS];
+extern char txt_Press_something_and_release[TXT_MAX_COLS];
+extern char txt_No_input_was_detected[TXT_MAX_COLS];
 
-char txt_ptr_BtnLeft[TXT_MAX_COLS];
-char txt_ptr_BtnMiddle[TXT_MAX_COLS];
-char txt_ptr_BtnRight[TXT_MAX_COLS];
-char txt_ptr_WheelUp[TXT_MAX_COLS];
-char txt_ptr_WheelDown[TXT_MAX_COLS];
+extern char txt_ptr_BtnLeft[TXT_MAX_COLS];
+extern char txt_ptr_BtnMiddle[TXT_MAX_COLS];
+extern char txt_ptr_BtnRight[TXT_MAX_COLS];
+extern char txt_ptr_WheelUp[TXT_MAX_COLS];
+extern char txt_ptr_WheelDown[TXT_MAX_COLS];
 
-char txt_key_Backspace[TXT_MAX_COLS];
-char txt_key_Tab[TXT_MAX_COLS];
-char txt_key_Clear[TXT_MAX_COLS];
-char txt_key_Return[TXT_MAX_COLS];
-char txt_key_Pause[TXT_MAX_COLS];
-char txt_key_Escape[TXT_MAX_COLS];
-char txt_key_Space[TXT_MAX_COLS];
-char txt_key_Delete[TXT_MAX_COLS];
-char txt_key_KP[TXT_MAX_COLS];
-char txt_key_Up[TXT_MAX_COLS];
-char txt_key_Down[TXT_MAX_COLS];
-char txt_key_Right[TXT_MAX_COLS];
-char txt_key_Left[TXT_MAX_COLS];
-char txt_key_Insert[TXT_MAX_COLS];
-char txt_key_Home[TXT_MAX_COLS];
-char txt_key_End[TXT_MAX_COLS];
-char txt_key_PgUp[TXT_MAX_COLS];
-char txt_key_PgDn[TXT_MAX_COLS];
-char txt_key_NumLk[TXT_MAX_COLS];
-char txt_key_CapsLk[TXT_MAX_COLS];
-char txt_key_ScrlLk[TXT_MAX_COLS];
-char txt_key_RShift[TXT_MAX_COLS];
-char txt_key_LShift[TXT_MAX_COLS];
-char txt_key_RCtrl[TXT_MAX_COLS];
-char txt_key_LCtrl[TXT_MAX_COLS];
-char txt_key_RAlt[TXT_MAX_COLS];
-char txt_key_LAlt[TXT_MAX_COLS];
-char txt_key_RMeta[TXT_MAX_COLS];
-char txt_key_LMeta[TXT_MAX_COLS];
-char txt_key_LSuper[TXT_MAX_COLS];
-char txt_key_RSuper[TXT_MAX_COLS];
-char txt_key_AltGr[TXT_MAX_COLS];
-char txt_key_Compose[TXT_MAX_COLS];
-char txt_key_Help[TXT_MAX_COLS];
-char txt_key_PrScr[TXT_MAX_COLS];
-char txt_key_SysRq[TXT_MAX_COLS];
-char txt_key_Break[TXT_MAX_COLS];
-char txt_key_Menu[TXT_MAX_COLS];
-char txt_key_Power[TXT_MAX_COLS];
-char txt_key_Euro[TXT_MAX_COLS];
-char txt_key_Undo[TXT_MAX_COLS];
+extern char txt_key_Backspace[TXT_MAX_COLS];
+extern char txt_key_Tab[TXT_MAX_COLS];
+extern char txt_key_Clear[TXT_MAX_COLS];
+extern char txt_key_Return[TXT_MAX_COLS];
+extern char txt_key_Pause[TXT_MAX_COLS];
+extern char txt_key_Escape[TXT_MAX_COLS];
+extern char txt_key_Space[TXT_MAX_COLS];
+extern char txt_key_Delete[TXT_MAX_COLS];
+extern char txt_key_KP[TXT_MAX_COLS];
+extern char txt_key_Up[TXT_MAX_COLS];
+extern char txt_key_Down[TXT_MAX_COLS];
+extern char txt_key_Right[TXT_MAX_COLS];
+extern char txt_key_Left[TXT_MAX_COLS];
+extern char txt_key_Insert[TXT_MAX_COLS];
+extern char txt_key_Home[TXT_MAX_COLS];
+extern char txt_key_End[TXT_MAX_COLS];
+extern char txt_key_PgUp[TXT_MAX_COLS];
+extern char txt_key_PgDn[TXT_MAX_COLS];
+extern char txt_key_NumLk[TXT_MAX_COLS];
+extern char txt_key_CapsLk[TXT_MAX_COLS];
+extern char txt_key_ScrlLk[TXT_MAX_COLS];
+extern char txt_key_RShift[TXT_MAX_COLS];
+extern char txt_key_LShift[TXT_MAX_COLS];
+extern char txt_key_RCtrl[TXT_MAX_COLS];
+extern char txt_key_LCtrl[TXT_MAX_COLS];
+extern char txt_key_RAlt[TXT_MAX_COLS];
+extern char txt_key_LAlt[TXT_MAX_COLS];
+extern char txt_key_RMeta[TXT_MAX_COLS];
+extern char txt_key_LMeta[TXT_MAX_COLS];
+extern char txt_key_LSuper[TXT_MAX_COLS];
+extern char txt_key_RSuper[TXT_MAX_COLS];
+extern char txt_key_AltGr[TXT_MAX_COLS];
+extern char txt_key_Compose[TXT_MAX_COLS];
+extern char txt_key_Help[TXT_MAX_COLS];
+extern char txt_key_PrScr[TXT_MAX_COLS];
+extern char txt_key_SysRq[TXT_MAX_COLS];
+extern char txt_key_Break[TXT_MAX_COLS];
+extern char txt_key_Menu[TXT_MAX_COLS];
+extern char txt_key_Power[TXT_MAX_COLS];
+extern char txt_key_Euro[TXT_MAX_COLS];
+extern char txt_key_Undo[TXT_MAX_COLS];
 
-char txt_konstruktor_Ground[TXT_MAX_COLS];
-char txt_konstruktor_Stop[TXT_MAX_COLS];
-char txt_konstruktor_Radioactive_Field[TXT_MAX_COLS];
-char txt_konstruktor_Push_Box[TXT_MAX_COLS];
-char txt_konstruktor_Capsule[TXT_MAX_COLS];
-char txt_konstruktor_Bomb[TXT_MAX_COLS];
-char txt_konstruktor_Bomb2[TXT_MAX_COLS];
-char txt_konstruktor_Door[TXT_MAX_COLS];
-char txt_konstruktor_Box[TXT_MAX_COLS];
-char txt_konstruktor_Empty_Field[TXT_MAX_COLS];
-char txt_konstruktor_Butterfly[TXT_MAX_COLS];
-char txt_konstruktor_Gun_Fire[TXT_MAX_COLS];
-char txt_konstruktor_Force_Field[TXT_MAX_COLS];
-char txt_konstruktor_Screw[TXT_MAX_COLS];
-char txt_konstruktor_Wall[TXT_MAX_COLS];
-char txt_konstruktor_Black_Wall[TXT_MAX_COLS];
-char txt_konstruktor_Teleport[TXT_MAX_COLS];
-char txt_konstruktor_Gun[TXT_MAX_COLS];
-char txt_konstruktor_Magnet[TXT_MAX_COLS];
-char txt_konstruktor_Bear[TXT_MAX_COLS];
-char txt_konstruktor_Black_Bear[TXT_MAX_COLS];
-char txt_konstruktor_Bird[TXT_MAX_COLS];
-char txt_konstruktor_Key[TXT_MAX_COLS];
-char txt_konstruktor_Bullets[TXT_MAX_COLS];
-char txt_konstruktor_on_map[TXT_MAX_COLS];
-char txt_konstruktor_Laser_Gun[TXT_MAX_COLS];
-char txt_konstruktor_Blaster_Gun[TXT_MAX_COLS];
-char txt_konstruktor_Regular_Gun[TXT_MAX_COLS];
-char txt_konstruktor_Fixed[TXT_MAX_COLS];
-char txt_konstruktor_Moveable[TXT_MAX_COLS];
-char txt_konstruktor_Rotating[TXT_MAX_COLS];
-char txt_konstruktor_Moveable_Rotating[TXT_MAX_COLS];
-char txt_konstruktor_Direction_right[TXT_MAX_COLS];
-char txt_konstruktor_Direction_down[TXT_MAX_COLS];
-char txt_konstruktor_Direction_left[TXT_MAX_COLS];
-char txt_konstruktor_Direction_up[TXT_MAX_COLS];
-char txt_konstruktor_Welcome_to_GNU_Robbo_Designer[TXT_MAX_COLS];
-char txt_konstruktor_Exit_designer_select_again_to_exit[TXT_MAX_COLS];
-char txt_konstruktor_Reload_level_select_again_to_reload[TXT_MAX_COLS];
-char txt_konstruktor_Level_reloaded[TXT_MAX_COLS];
-char txt_konstruktor_New_level_select_again_to_create[TXT_MAX_COLS];
-char txt_konstruktor_Level_created[TXT_MAX_COLS];
-char txt_konstruktor_Save_select_again_to_save_new_level[TXT_MAX_COLS];
-char txt_konstruktor_New_level_appended_to_pack[TXT_MAX_COLS];
-char txt_konstruktor_Clear_level_select_again_to_clear[TXT_MAX_COLS];
-char txt_konstruktor_Level_cleared[TXT_MAX_COLS];
-char txt_konstruktor_Save_select_again_to_save_changes[TXT_MAX_COLS];
-char txt_konstruktor_Changes_saved[TXT_MAX_COLS];
-char txt_konstruktor_Level_resized_to[TXT_MAX_COLS];
-char txt_konstruktor_Screws[TXT_MAX_COLS];
+extern char txt_konstruktor_Ground[TXT_MAX_COLS];
+extern char txt_konstruktor_Stop[TXT_MAX_COLS];
+extern char txt_konstruktor_Radioactive_Field[TXT_MAX_COLS];
+extern char txt_konstruktor_Push_Box[TXT_MAX_COLS];
+extern char txt_konstruktor_Capsule[TXT_MAX_COLS];
+extern char txt_konstruktor_Bomb[TXT_MAX_COLS];
+extern char txt_konstruktor_Bomb2[TXT_MAX_COLS];
+extern char txt_konstruktor_Door[TXT_MAX_COLS];
+extern char txt_konstruktor_Box[TXT_MAX_COLS];
+extern char txt_konstruktor_Empty_Field[TXT_MAX_COLS];
+extern char txt_konstruktor_Butterfly[TXT_MAX_COLS];
+extern char txt_konstruktor_Gun_Fire[TXT_MAX_COLS];
+extern char txt_konstruktor_Force_Field[TXT_MAX_COLS];
+extern char txt_konstruktor_Screw[TXT_MAX_COLS];
+extern char txt_konstruktor_Wall[TXT_MAX_COLS];
+extern char txt_konstruktor_Black_Wall[TXT_MAX_COLS];
+extern char txt_konstruktor_Teleport[TXT_MAX_COLS];
+extern char txt_konstruktor_Gun[TXT_MAX_COLS];
+extern char txt_konstruktor_Magnet[TXT_MAX_COLS];
+extern char txt_konstruktor_Bear[TXT_MAX_COLS];
+extern char txt_konstruktor_Black_Bear[TXT_MAX_COLS];
+extern char txt_konstruktor_Bird[TXT_MAX_COLS];
+extern char txt_konstruktor_Key[TXT_MAX_COLS];
+extern char txt_konstruktor_Bullets[TXT_MAX_COLS];
+extern char txt_konstruktor_on_map[TXT_MAX_COLS];
+extern char txt_konstruktor_Laser_Gun[TXT_MAX_COLS];
+extern char txt_konstruktor_Blaster_Gun[TXT_MAX_COLS];
+extern char txt_konstruktor_Regular_Gun[TXT_MAX_COLS];
+extern char txt_konstruktor_Fixed[TXT_MAX_COLS];
+extern char txt_konstruktor_Moveable[TXT_MAX_COLS];
+extern char txt_konstruktor_Rotating[TXT_MAX_COLS];
+extern char txt_konstruktor_Moveable_Rotating[TXT_MAX_COLS];
+extern char txt_konstruktor_Direction_right[TXT_MAX_COLS];
+extern char txt_konstruktor_Direction_down[TXT_MAX_COLS];
+extern char txt_konstruktor_Direction_left[TXT_MAX_COLS];
+extern char txt_konstruktor_Direction_up[TXT_MAX_COLS];
+extern char txt_konstruktor_Welcome_to_GNU_Robbo_Designer[TXT_MAX_COLS];
+extern char txt_konstruktor_Exit_designer_select_again_to_exit[TXT_MAX_COLS];
+extern char txt_konstruktor_Reload_level_select_again_to_reload[TXT_MAX_COLS];
+extern char txt_konstruktor_Level_reloaded[TXT_MAX_COLS];
+extern char txt_konstruktor_New_level_select_again_to_create[TXT_MAX_COLS];
+extern char txt_konstruktor_Level_created[TXT_MAX_COLS];
+extern char txt_konstruktor_Save_select_again_to_save_new_level[TXT_MAX_COLS];
+extern char txt_konstruktor_New_level_appended_to_pack[TXT_MAX_COLS];
+extern char txt_konstruktor_Clear_level_select_again_to_clear[TXT_MAX_COLS];
+extern char txt_konstruktor_Level_cleared[TXT_MAX_COLS];
+extern char txt_konstruktor_Save_select_again_to_save_changes[TXT_MAX_COLS];
+extern char txt_konstruktor_Changes_saved[TXT_MAX_COLS];
+extern char txt_konstruktor_Level_resized_to[TXT_MAX_COLS];
+extern char txt_konstruktor_Screws[TXT_MAX_COLS];
 
 struct locale {
 	char foldername[100];		/* e.g. de_DE, en_GB, es_ES, pl_PL ... */
 	char name[60];				/* e.g. Deutsch, English, EspaƱol, Polski ... */
 	char author[60];			/* Enables translators to get recognition for their work */
 };
-struct locale locales[MAX_LOCALES];
+extern struct locale locales[MAX_LOCALES];
 
-int locale_count;
-int selected_locale;
-int temp_selected_locale;
+extern int locale_count;
+extern int selected_locale;
+extern int temp_selected_locale;
 
 /* Function prototypes */
 int find_all_locales(void);
--- pointer_controls.c.orig	2010-01-16 13:41:55.000000000 -0700
+++ pointer_controls.c	2020-02-07 09:17:11.371496412 -0700
@@ -39,6 +39,9 @@ SDL_Rect toolbar_designer_image_srcrect;
 SDL_Rect toolbar_restart_image_srcrect;
 SDL_Rect toolbar_hide_image_srcrect;
 
+struct pointercontrols pointer_controls;
+struct pointercontrols temp_pointer_controls;
+
 /* Function prototypes */
 
 
--- pointer_controls.h.orig	2010-01-16 08:10:33.000000000 -0700
+++ pointer_controls.h	2020-02-07 09:17:18.713378625 -0700
@@ -53,8 +53,8 @@ struct pointercontrols {
 	int shoot_state;
 	int pad_type;
 };
-struct pointercontrols pointer_controls;
-struct pointercontrols temp_pointer_controls;
+extern struct pointercontrols pointer_controls;
+extern struct pointercontrols temp_pointer_controls;
 
 /* Function prototypes */
 void pointer_controls_event_processor(ROB_Event *rob_event);
--- rcfile.c.orig	2011-04-17 10:55:41.000000000 -0600
+++ rcfile.c	2020-02-07 09:18:32.914188233 -0700
@@ -28,7 +28,9 @@
 #define UNDEFINED2 -2
 
 /* Variables */
-
+char path_resource_file[100];
+struct rcfile_struct rcfile;
+int temp_rcfile_save_frequency;
 
 /* Function prototypes */
 
--- rcfile.h.orig	2011-04-17 10:55:41.000000000 -0600
+++ rcfile.h	2020-02-07 09:18:45.330989034 -0700
@@ -37,13 +37,14 @@
 #define RCFILE_SAVE_ON_CHANGE 1
 
 /* Variables */
-char path_resource_file[100];
+extern char path_resource_file[100];
 
-struct {
+struct rcfile_struct {
 	int save_frequency;
-} rcfile;
+};
+extern struct rcfile_struct rcfile;
 
-int temp_rcfile_save_frequency;
+extern int temp_rcfile_save_frequency;
 
 /* Function prototypes */
 int read_resource_file(char *filename);
--- ROB_engine.c.orig	2010-08-23 14:41:09.000000000 -0600
+++ ROB_engine.c	2020-02-07 09:20:17.090516958 -0700
@@ -79,6 +79,7 @@ ROB_Object *rob_oup = NULL;
 ROB_Object *rob_pressed_object = NULL;
 int rob_object_count = 0;
 char rob_last_error[ROB_ERROR_LENGTH];
+ROB_Object *rob_lyr_pointer;
 
 /* Function prototypes */
 int ROB_SetObjectZOrder(ROB_Object *rob_object, int position, ROB_Object *target);
--- ROB_engine.h.orig	2010-01-16 13:41:55.000000000 -0700
+++ ROB_engine.h	2020-02-07 09:20:19.817473210 -0700
@@ -118,7 +118,7 @@ typedef struct robobject {
 	void *pob;			/* Parent object pointer */
 } ROB_Object;
 
-ROB_Object *rob_lyr_pointer;
+extern ROB_Object *rob_lyr_pointer;
 
 typedef struct robevent {
 	ROB_Object *rob_object;
--- screen.c.orig	2014-02-05 08:00:57.000000000 -0700
+++ screen.c	2020-02-07 09:23:35.929259654 -0700
@@ -39,6 +39,15 @@
 SDL_Color bgcolor, fgcolor;	/* General purpose colours */
 SDL_Surface *image;		/* General purpose surface */
 
+SDL_Surface *screen;
+struct intro_screen_struct intro_screen;
+struct help_screen_struct help_screen;
+struct options_screen_struct options_screen;
+struct game_area_struct game_area;
+struct scoreline_struct scoreline;
+struct authorline_struct authorline;
+struct video_struct video;
+
 /* Used for animating banners */
 int bannerstate = 0;
 int bannerframe = 0;
--- screen.h.orig	2014-02-04 11:41:12.000000000 -0700
+++ screen.h	2020-02-07 09:23:33.087307614 -0700
@@ -49,43 +49,50 @@
 #define EFX_SHOOT 8
 
 /* Variables */
-SDL_Surface *screen;
+extern SDL_Surface *screen;
 
-struct {
+struct intro_screen_struct {
 	int redraw;			/* An ORed combination of REDRAW_* bits */
-} intro_screen;
+};
+extern struct intro_screen_struct intro_screen;
 
-struct {
+struct help_screen_struct {
 	int redraw;			/* An ORed combination of REDRAW_* bits */
-} help_screen;
+};
+extern struct help_screen_struct help_screen;
 
-struct {
+struct options_screen_struct {
 	int redraw;			/* An ORed combination of REDRAW_* bits */
-} options_screen;
+};
+extern struct options_screen_struct options_screen;
 
-struct {
+struct game_area_struct {
 	int redraw;			/* An ORed combination of REDRAW_* bits */
-} game_area;
+};
+extern struct game_area_struct game_area;
 
-struct {
+struct scoreline_struct {
 	int xoffset;
 	int yoffset;
 	int redraw;			/* An ORed combination of SCORELINE_* bits */
-} scoreline;
+};
+extern struct scoreline_struct scoreline;
 
-struct {
+struct authorline_struct {
 	int xoffset;
 	int yoffset;
-} authorline;
+};
+extern struct authorline_struct authorline;
 
-struct {
+struct video_struct {
 	int xres;
 	int yres;
 	int field_size;
 	int fullscreen;		/* 0 or SDL_FULLSCREEN */
 	int xshift;
 	int yshift;
-} video;
+};
+extern struct video_struct video;
 
 typedef struct msgbox {
 	char name[256];			/* A unique name */
--- skins.c.orig	2014-02-04 11:41:12.000000000 -0700
+++ skins.c	2020-02-07 09:25:13.342615731 -0700
@@ -60,6 +60,29 @@
 char *data_state[] =
   { "DATA_UNREAD", "DATA_READING", "DATA_READ", "DATA_INCOMPLETE" };
 
+SDL_Surface *wm_icon;
+SDL_Surface *icons;
+#ifdef LIGHTNINGENABLED
+SDL_Surface *efx;
+#endif
+SDL_Surface *ciphers;
+SDL_Surface *alpha;
+SDL_Surface *bgrnd;
+TTF_Font *font;
+
+SDL_Rect robbo_images_srcrect[8];
+SDL_Rect score_images_srcrect[10];
+SDL_Rect score_screw_srcrect;
+SDL_Rect score_key_srcrect;
+SDL_Rect score_bullet_srcrect;
+SDL_Rect score_level_srcrect;
+
+struct skin skins[MAX_SKINS];
+
+int skin_count;                 /* How many skins are in the list */
+int selected_skin;              /* Which skin in the list is currently selected */
+int temp_selected_skin;
+
 /* Function prototypes */
 void read_skin_project_colours (void);
 
--- skins.h.orig	2014-02-04 11:41:12.000000000 -0700
+++ skins.h	2020-02-07 09:25:12.206634902 -0700
@@ -44,22 +44,22 @@
 #define DESIGNER_OBJV_TILE_COLOUR 0x202020
 
 /* Variables */
-SDL_Surface *wm_icon;
-SDL_Surface *icons;
+extern SDL_Surface *wm_icon;
+extern SDL_Surface *icons;
 #ifdef LIGHTNINGENABLED
-SDL_Surface *efx;
+extern SDL_Surface *efx;
 #endif
-SDL_Surface *ciphers;
-SDL_Surface *alpha;
-SDL_Surface *bgrnd;
-TTF_Font *font;
+extern SDL_Surface *ciphers;
+extern SDL_Surface *alpha;
+extern SDL_Surface *bgrnd;
+extern TTF_Font *font;
 
-SDL_Rect robbo_images_srcrect[8];
-SDL_Rect score_images_srcrect[10];
-SDL_Rect score_screw_srcrect;
-SDL_Rect score_key_srcrect;
-SDL_Rect score_bullet_srcrect;
-SDL_Rect score_level_srcrect;
+extern SDL_Rect robbo_images_srcrect[8];
+extern SDL_Rect score_images_srcrect[10];
+extern SDL_Rect score_screw_srcrect;
+extern SDL_Rect score_key_srcrect;
+extern SDL_Rect score_bullet_srcrect;
+extern SDL_Rect score_level_srcrect;
 
 struct skin
 {
@@ -85,11 +85,11 @@ struct skin
   Uint32 designer_OBJS_tile_colour;
   Uint32 designer_OBJV_tile_colour;
 };
-struct skin skins[MAX_SKINS];
+extern struct skin skins[MAX_SKINS];
 
-int skin_count;			/* How many skins are in the list */
-int selected_skin;		/* Which skin in the list is currently selected */
-int temp_selected_skin;
+extern int skin_count;			/* How many skins are in the list */
+extern int selected_skin;		/* Which skin in the list is currently selected */
+extern int temp_selected_skin;
 
 /* Function prototypes */
 int find_all_skins (void);
--- sound.c.orig	2011-04-17 10:55:41.000000000 -0600
+++ sound.c	2020-02-07 09:35:15.455459696 -0700
@@ -122,6 +122,14 @@ struct snd_sample sounds[] = {
 
 struct snd_music playlist[MUS_MAXSONGS];
 
+int sound;
+int temp_game_sound;
+int sfx_vol;
+int temp_sfx_vol;
+#ifdef HAVE_MUSIC
+int             volume;
+#endif
+
 /*
  * Function prototypes 
  */
--- sound.h.orig	2010-02-20 09:38:41.000000000 -0700
+++ sound.h	2020-02-07 09:26:35.245233568 -0700
@@ -78,15 +78,15 @@ struct snd_music {
 /*
  * Variables 
  */
-int sound;
-int temp_game_sound;
-int             sfx_vol;
-int temp_sfx_vol;
+extern int sound;
+extern int temp_game_sound;
+extern int             sfx_vol;
+extern int temp_sfx_vol;
 /*
  * if we do not support music, we assume, that volume is sfx_volume 
  */
 #ifdef HAVE_MUSIC
-int             volume;
+extern int             volume;
 #else
 #define volume sfx_vol
 #endif