+ /* EOF */
+Index: src/supertux/menu/menu_storage.hpp\r
+===================================================================\r
+--- src/supertux/menu/menu_storage.hpp (revision 6139)\r
++++ src/supertux/menu/menu_storage.hpp (working copy)\r
+@@ -32,12 +32,16 @@\r
+ static ProfileMenu* get_profile_menu();
+ static KeyboardMenu* get_key_options_menu();
+ static JoystickMenu* get_joystick_options_menu();
++ static KeyboardMenu* get_key_options_p2_menu();
++ static JoystickMenu* get_joystick_options_p2_menu();
+
+ private:
+ static OptionsMenu* options_menu;
+ static ProfileMenu* profile_menu;
+ static KeyboardMenu* key_options_menu;
+ static JoystickMenu* joystick_options_menu;
++ static KeyboardMenu* key_options_p2_menu;
++ static JoystickMenu* joystick_options_p2_menu;
+
+ private:
+ MenuStorage(const MenuStorage&);
+Index: src/supertux/menu/options_menu.cpp\r
+===================================================================\r
+--- src/supertux/menu/options_menu.cpp (revision 6139)\r
++++ src/supertux/menu/options_menu.cpp (working copy)\r
+@@ -161,6 +161,13 @@\r
+
+ add_submenu(_("Setup Joystick"), MenuStorage::get_joystick_options_menu())
+ ->set_help(_("Configure joystick control-action mappings"));
++
++ add_submenu(_("Setup P2 Keyboard"), MenuStorage::get_key_options_p2_menu())
++ ->set_help(_("Configure key-action mappings"));
++
++ add_submenu(_("Setup P2 Joystick"), MenuStorage::get_joystick_options_p2_menu())
++ ->set_help(_("Configure joystick control-action mappings"));
++
+ add_hl();
+ add_back(_("Back"));
+ }
+Index: src/supertux/player_status.cpp\r
+===================================================================\r
+--- src/supertux/player_status.cpp (revision 6139)\r
++++ src/supertux/player_status.cpp (working copy)\r
+@@ -30,6 +30,7 @@\r
+ static const int MAX_COINS = 9999;
+
+ PlayerStatus* player_status = 0;
++PlayerStatus* second_player_status = 0;
+
+ PlayerStatus::PlayerStatus() :
+ coins(START_COINS),
+Index: src/supertux/resources.cpp\r
+===================================================================\r
+--- src/supertux/resources.cpp (revision 6139)\r
++++ src/supertux/resources.cpp (working copy)\r
+@@ -48,6 +48,7 @@\r
+ sprite_manager = new SpriteManager();
+
+ player_status = new PlayerStatus();
++ second_player_status = new PlayerStatus();
+ }
+
+ /* Free shared data: */
+@@ -67,6 +68,9 @@\r
+
+ delete player_status;
+ player_status = NULL;
++
++ delete second_player_status;
++ second_player_status = NULL;
+ }
+
+ /* EOF */
+Index: src/supertux/screen_manager.cpp\r
+===================================================================\r
+--- src/supertux/screen_manager.cpp (revision 6139)\r
++++ src/supertux/screen_manager.cpp (working copy)\r
+@@ -190,11 +190,13 @@\r
+ ScreenManager::process_events()
+ {
+ g_main_controller->update();
++ g_secondary_controller->update();
+ Uint8* keystate = SDL_GetKeyState(NULL);
+ SDL_Event event;
+ while(SDL_PollEvent(&event))
+ {
+ g_main_controller->process_event(event);
++ g_secondary_controller->process_event(event);
+
+ if(MenuManager::current() != NULL)
+ MenuManager::current()->event(event);
+Index: src/supertux/sector.cpp\r
+===================================================================\r
+--- src/supertux/sector.cpp (revision 6139)\r
++++ src/supertux/sector.cpp (working copy)\r
+@@ -84,6 +84,7 @@\r
+ effect(0)