Description: Ensure variables are only declared once
Author: Stephen Kitt <skitt@debian.org>

--- a/locales.h
+++ b/locales.h
@@ -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];
-
-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];
+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];
+
+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];
+
+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];
+
+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];
+
+extern char txt_Level_Author[TXT_MAX_COLS];
+extern char txt_endscreen_congrats[TXT_ENDSCREEN_CONGRATS_ROWS * 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];
+
+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];
+
+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];
+
+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);
@@ -243,10 +243,3 @@
 void sort_locales(void);
 void load_selected_locale(void);
 void set_locale_to_LANG(void);
-
-
-
-
-
-
-
--- a/locales.c
+++ b/locales.c
@@ -35,6 +35,203 @@
 /* Variables */
 extern char *data_state[];
 
+/* 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];
+
+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 */
 
 
--- a/sound.h
+++ b/sound.h
@@ -78,15 +78,15 @@
 /*
  * 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
--- a/sound.c
+++ b/sound.c
@@ -93,7 +93,16 @@
 int             next_song = 0;
 int             absent = 1;
 int             tempvol = 0;
- /*******************/
+
+int sound;
+int temp_game_sound;
+int             sfx_vol;
+int temp_sfx_vol;
+#ifdef HAVE_MUSIC
+int             volume;
+#endif
+
+/*******************/
  /*
   * table of sounds 
   */
--- a/rcfile.h
+++ b/rcfile.h
@@ -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 {
 	int save_frequency;
-} rcfile;
+};
+extern struct rcfile rcfile;
 
-int temp_rcfile_save_frequency;
+extern int temp_rcfile_save_frequency;
 
 /* Function prototypes */
 int read_resource_file(char *filename);
--- a/rcfile.c
+++ b/rcfile.c
@@ -28,7 +28,11 @@
 #define UNDEFINED2 -2
 
 /* Variables */
+char path_resource_file[100];
 
+struct rcfile rcfile;
+
+int temp_rcfile_save_frequency;
 
 /* Function prototypes */
 
--- a/skins.c
+++ b/skins.c
@@ -59,6 +59,28 @@
 /* Variables */
 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);
--- a/skins.h
+++ b/skins.h
@@ -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 @@
   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);
--- a/ROB_engine.h
+++ b/ROB_engine.h
@@ -118,7 +118,7 @@
 	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;
--- a/board.h
+++ b/board.h
@@ -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 @@
 #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
 {
   int x;			/* Board x position */
   int y;			/* Board y position */
@@ -180,10 +180,11 @@
   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 robbo;
 
 /* What is shown of the board is seen through this viewport */
-struct
+struct viewport
 {
   int x;			/* Board x position */
   int y;			/* Board y position */
@@ -199,15 +200,17 @@
   int yoffset;
   int cycles_to_dest;
   int maximise;
-} viewport;
+};
+extern struct viewport viewport;
 
 /* Some game mechanics that I have made available for modification via the rcfile */
-struct
+struct game_mechanics
 {
   int sensible_bears;
   int sensible_questionmarks;
   int sensible_solid_lasers;
-} game_mechanics;
+};
+extern struct game_mechanics game_mechanics;
 
 /* Function prototypes */
 void update_game (void);
--- a/controls.h
+++ b/controls.h
@@ -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 @@
 	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);
--- a/game.h
+++ b/game.h
@@ -184,25 +184,24 @@
 
 /* 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 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 ();
--- a/konstruktor.h
+++ b/konstruktor.h
@@ -93,14 +93,15 @@
 
 /* Thunor: This is now being defined and declared at the same
  * time since we only require one of them */
-struct {
+struct k_view {
 	int x;
 	int y;
 	int w;
 	int h;
 	int offsetx;
 	int offsety;
-} k_view;
+};
+extern struct k_view k_view;
 
 
 
@@ -108,17 +109,17 @@
 
 
 
-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,
+extern int K_exit;
+extern int             lastclick;
+extern int             K_direction;
+extern char            infostring[255];
+extern int             inforedraw;
+extern int             kmx,
                 kmy;
 /*
  * prototypes 
--- a/levels.h
+++ b/levels.h
@@ -31,7 +31,7 @@
 #define DEFAULT_LEVEL_COLOUR 0x608050
 
 /* Variables */
-struct {
+struct level {
 	int w;
 	int h;
 	char author[60];		/* The text displayed on the authorline above the viewport */
@@ -39,7 +39,8 @@
 	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 level;
 
 struct pack {
 	char filename[256];		/* e.g. /usr/local/share/gnurobbo/levels/original.dat or ~/.gnurobbo/levels/mylevels.dat */
@@ -49,11 +50,11 @@
 	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);
@@ -62,7 +63,3 @@
 void read_level_packs(void);
 void sort_level_packs(void);
 int load_level_data(int level_number);
-
-
-
-
--- a/pointer_controls.h
+++ b/pointer_controls.h
@@ -53,8 +53,8 @@
 	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);
--- a/screen.h
+++ b/screen.h
@@ -49,43 +49,38 @@
 #define EFX_SHOOT 8
 
 /* Variables */
-SDL_Surface *screen;
+extern SDL_Surface *screen;
 
-struct {
+struct screen {
 	int redraw;			/* An ORed combination of REDRAW_* bits */
-} intro_screen;
+};
+extern struct screen intro_screen;
+extern struct screen help_screen;
+extern struct screen options_screen;
+extern struct screen game_area;
 
-struct {
-	int redraw;			/* An ORed combination of REDRAW_* bits */
-} help_screen;
-
-struct {
-	int redraw;			/* An ORed combination of REDRAW_* bits */
-} options_screen;
-
-struct {
-	int redraw;			/* An ORed combination of REDRAW_* bits */
-} game_area;
-
-struct {
+struct scoreline {
 	int xoffset;
 	int yoffset;
 	int redraw;			/* An ORed combination of SCORELINE_* bits */
-} scoreline;
+};
+extern struct scoreline scoreline;
 
-struct {
+struct authorline {
 	int xoffset;
 	int yoffset;
-} authorline;
+};
+extern struct authorline authorline;
 
-struct {
+struct video {
 	int xres;
 	int yres;
 	int field_size;
 	int fullscreen;		/* 0 or SDL_FULLSCREEN */
 	int xshift;
 	int yshift;
-} video;
+};
+extern struct video video;
 
 typedef struct msgbox {
 	char name[256];			/* A unique name */
--- a/controls.c
+++ b/controls.c
@@ -84,6 +84,28 @@
 /* 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 */
 
 
--- a/screen.c
+++ b/screen.c
@@ -38,6 +38,15 @@
 /* Variables */
 SDL_Color bgcolor, fgcolor;	/* General purpose colours */
 SDL_Surface *image;		/* General purpose surface */
+SDL_Surface *screen;
+
+struct screen intro_screen;
+struct screen help_screen;
+struct screen options_screen;
+struct screen game_area;
+struct scoreline scoreline;
+struct authorline authorline;
+struct video video;
 
 /* Used for animating banners */
 int bannerstate = 0;
--- a/game.c
+++ b/game.c
@@ -66,6 +66,24 @@
 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);
--- a/levels.c
+++ b/levels.c
@@ -30,6 +30,14 @@
 /* Variables */
 extern char *data_state[];
 
+struct level 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);
 
--- a/board.c
+++ b/board.c
@@ -32,6 +32,15 @@
 /*
  * Variables 
  */
+int restart_timeout;		/* Time to wait before restarting a level after Robbo dies */
+
+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 robbo robbo;
+
+struct viewport viewport;
+
+struct game_mechanics game_mechanics;
 
 
 /*
--- a/konstruktor.c
+++ b/konstruktor.c
@@ -80,6 +80,16 @@
 
 struct k_icons  K_icons[K_MAXICONS];
 
+struct k_view 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 
  */
--- a/pointer_controls.c
+++ b/pointer_controls.c
@@ -39,6 +39,9 @@
 SDL_Rect toolbar_restart_image_srcrect;
 SDL_Rect toolbar_hide_image_srcrect;
 
+struct pointercontrols pointer_controls;
+struct pointercontrols temp_pointer_controls;
+
 /* Function prototypes */
 
 
--- a/ROB_engine.c
+++ b/ROB_engine.c
@@ -80,6 +80,8 @@
 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);
 void ROB_FreeAllObjects(void);