[trackballs] 01/09: New upstream version 1.2.4

Markus Koschany apo at moszumanska.debian.org
Sun Oct 29 22:12:59 UTC 2017


This is an automated email from the git hooks/post-receive script.

apo pushed a commit to branch master
in repository trackballs.

commit c43d68c520cd2e2ffdf2be0efe1ad8c3b5e2fcfc
Author: Markus Koschany <apo at debian.org>
Date:   Sun Oct 29 22:02:50 2017 +0100

    New upstream version 1.2.4
---
 CMakeLists.txt                              |  12 +-
 README.md                                   |   4 +-
 po/de.po                                    | 834 ++++++++++++++------------
 po/fr.po                                    | 378 ++++++------
 po/hu.po                                    | 378 +++++++-----
 po/it.po                                    | 378 +++++++-----
 po/sk.po                                    | 378 +++++++-----
 po/sv.po                                    | 378 +++++++-----
 po/trackballs.pot                           | 374 +++++++-----
 share/images/displayHighscoreBackground.jpg | Bin 66224 -> 82739 bytes
 share/images/enterHighscoreBackground.jpg   | Bin 91051 -> 0 bytes
 share/images/help0_1024.png                 | Bin 164279 -> 0 bytes
 share/images/help0_640.png                  | Bin 185959 -> 0 bytes
 share/images/help1_1024.png                 | Bin 103776 -> 0 bytes
 share/images/help1_640.png                  | Bin 63426 -> 0 bytes
 share/images/left_panel.png                 | Bin 14143 -> 0 bytes
 share/images/trackballs-32x32.png           | Bin 0 -> 1827 bytes
 share/images/trackballs32x32.png            | Bin 1663 -> 0 bytes
 share/images/trackballs48x48.png            | Bin 2686 -> 0 bytes
 share/levels/Shop1.map                      | Bin 59393 -> 59379 bytes
 share/levels/Shop2.map                      | Bin 59432 -> 59419 bytes
 share/levels/bonus.map                      | Bin 60091 -> 60087 bytes
 share/levels/bonusb.map                     | Bin 63058 -> 63047 bytes
 share/levels/boot.scm                       |  13 +
 share/levels/bx1.map                        | Bin 64161 -> 64156 bytes
 share/levels/bx2.map                        | Bin 88544 -> 88541 bytes
 share/levels/bx3.map                        | Bin 106649 -> 106651 bytes
 share/levels/bx3.scm                        |  22 +-
 share/levels/castle1.map                    | Bin 60844 -> 60841 bytes
 share/levels/castle1.scm                    |   2 +-
 share/levels/castle2.map                    | Bin 62055 -> 62041 bytes
 share/levels/castle2.scm                    |   2 +-
 share/levels/castle3.map                    | Bin 63208 -> 63204 bytes
 share/levels/castle3.scm                    |   2 +-
 share/levels/castle4.map                    | Bin 61940 -> 61937 bytes
 share/levels/castle4.scm                    |   4 +-
 share/levels/child1.map                     | Bin 59821 -> 59817 bytes
 share/levels/child2.map                     | Bin 60259 -> 60255 bytes
 share/levels/child3.map                     | Bin 59463 -> 59459 bytes
 share/levels/child4.map                     | Bin 59830 -> 59826 bytes
 share/levels/child5.map                     | Bin 59658 -> 59654 bytes
 share/levels/child6.map                     | Bin 61945 -> 61923 bytes
 share/levels/child6.scm                     |   4 +-
 share/levels/con1.map                       | Bin 62033 -> 62037 bytes
 share/levels/con2.map                       | Bin 61429 -> 61422 bytes
 share/levels/con3.map                       | Bin 66968 -> 66860 bytes
 share/levels/con4.map                       | Bin 66930 -> 66824 bytes
 share/levels/con5.map                       | Bin 64900 -> 64898 bytes
 share/levels/dn1.map                        | Bin 59436 -> 59431 bytes
 share/levels/dn2.map                        | Bin 59566 -> 59561 bytes
 share/levels/dn3.map                        | Bin 60280 -> 60269 bytes
 share/levels/dn4.map                        | Bin 59957 -> 59951 bytes
 share/levels/dn5.map                        | Bin 59652 -> 59599 bytes
 share/levels/dn6.map                        | Bin 60403 -> 60390 bytes
 share/levels/fourSeasons_1.map              | Bin 64148 -> 64043 bytes
 share/levels/fourSeasons_2.map              | Bin 61039 -> 61028 bytes
 share/levels/fourSeasons_3.map              | Bin 66125 -> 66118 bytes
 share/levels/frg1.map                       | Bin 60297 -> 60285 bytes
 share/levels/frg10.map                      | Bin 60686 -> 60675 bytes
 share/levels/frg2.map                       | Bin 60747 -> 60735 bytes
 share/levels/frg3.map                       | Bin 61015 -> 61003 bytes
 share/levels/frg4.map                       | Bin 60436 -> 60423 bytes
 share/levels/frg5.map                       | Bin 60456 -> 60444 bytes
 share/levels/frg6.map                       | Bin 61110 -> 61098 bytes
 share/levels/frg7.map                       | Bin 60235 -> 60224 bytes
 share/levels/frg8.map                       | Bin 61862 -> 61851 bytes
 share/levels/frg9.map                       | Bin 61611 -> 61597 bytes
 share/levels/frgb.map                       | Bin 62233 -> 62220 bytes
 share/levels/{child1.map => help.map}       | Bin 59821 -> 61252 bytes
 share/levels/help.scm                       | 169 ++++++
 share/levels/jump1.map                      | Bin 59547 -> 59538 bytes
 share/levels/jump2.map                      | Bin 61896 -> 61713 bytes
 share/levels/jump3.map                      | Bin 59464 -> 59452 bytes
 share/levels/jump4.map                      | Bin 59366 -> 59321 bytes
 share/levels/jump5.map                      | Bin 59600 -> 59600 bytes
 share/levels/ki1.map                        | Bin 59624 -> 59624 bytes
 share/levels/ki2.map                        | Bin 59959 -> 59954 bytes
 share/levels/ki3.map                        | Bin 60337 -> 60336 bytes
 share/levels/ki4.map                        | Bin 61461 -> 61464 bytes
 share/levels/ki5.map                        | Bin 59701 -> 59701 bytes
 share/levels/lv1.map                        | Bin 65145 -> 65142 bytes
 share/levels/lv2.map                        | Bin 63011 -> 63012 bytes
 share/levels/lv3.map                        | Bin 61433 -> 61432 bytes
 share/levels/lv4.map                        | Bin 61485 -> 61473 bytes
 share/levels/lv5.map                        | Bin 60616 -> 60624 bytes
 share/levels/lv6.map                        | Bin 60425 -> 60413 bytes
 share/levels/lv7.map                        | Bin 107578 -> 107455 bytes
 share/levels/lv8.map                        | Bin 61929 -> 61918 bytes
 share/levels/lv9.map                        | Bin 65637 -> 65626 bytes
 share/levels/mhm1.map                       | Bin 65317 -> 65305 bytes
 share/levels/mhm2.map                       | Bin 85626 -> 85615 bytes
 share/levels/mhm3.map                       | Bin 130632 -> 130629 bytes
 share/levels/mhm3.scm                       |   2 +-
 share/levels/motion1.map                    | Bin 67903 -> 67898 bytes
 share/levels/sl1.map                        | Bin 61291 -> 61279 bytes
 share/levels/sl1.scm                        |   2 +-
 share/levels/sl2.map                        | Bin 63281 -> 63267 bytes
 share/levels/sl3.map                        | Bin 60717 -> 60703 bytes
 share/levels/sl4.map                        | Bin 68705 -> 68689 bytes
 share/levels/sl5.map                        | Bin 75187 -> 75174 bytes
 share/levels/sl5.scm                        |   2 +-
 share/levels/sl6.map                        | Bin 67023 -> 67006 bytes
 share/levels/sl6.scm                        |  17 +-
 share/trackballs.6                          |  59 +-
 src/animated.cc                             |  45 ++
 src/animated.h                              |   1 +
 src/animatedCollection.cc                   | 895 ++++++++++++++++++++++++++++
 src/{modPill.h => animatedCollection.h}     |  45 +-
 src/ball.cc                                 |  33 +-
 src/ball.h                                  |   3 -
 src/bird.cc                                 |  15 +-
 src/cactus.cc                               |  16 +-
 src/calibrateJoystickMode.cc                |  63 +-
 src/cyclicPlatform.cc                       |   9 +-
 src/editMode.cc                             |   4 +-
 src/editWindows.cc                          |   2 +-
 src/enterHighScoreMode.cc                   |  18 +-
 src/font.cc                                 |  21 +-
 src/font.h                                  |  14 +-
 src/game.cc                                 |  36 +-
 src/game.h                                  |   6 +-
 src/glHelp.cc                               |  35 +-
 src/glHelp.h                                |   4 +-
 src/helpMode.cc                             | 267 ++++++---
 src/helpMode.h                              |   7 +-
 src/hofMode.cc                              |  58 +-
 src/mainMode.cc                             |  50 +-
 src/menuMode.cc                             |  22 +-
 src/menusystem.cc                           |  66 +-
 src/menusystem.h                            |   8 +-
 src/mmad.cc                                 |  25 +-
 src/modPill.cc                              |   1 +
 src/modPill.h                               |   2 +-
 src/player.cc                               |   3 +-
 src/settings.cc                             |  23 +-
 src/settings.h                              |   2 +-
 src/settingsMode.cc                         |   7 +-
 src/setupMode.cc                            | 186 +++---
 src/sideSpike.cc                            |   9 +-
 src/spike.cc                                |   9 +-
 src/teleport.cc                             |   6 +
 141 files changed, 3518 insertions(+), 1912 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a64a444..a692be5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,7 +27,7 @@ else()
 endif()
 
 add_definitions(-DPACKAGE="trackballs")
-add_definitions(-DVERSION="1.2.3")
+add_definitions(-DVERSION="1.2.4")
 add_definitions(-DLOCALEDIR="${TRACKBALLS_LOCALE}")
 add_definitions(-DHAVE_CONFIG_H)
 add_definitions(-DSHARE_DIR="${TRACKBALLS_SHARE}")
@@ -99,14 +99,8 @@ foreach(file ${icons})
 endforeach()
 install(FILES ${PROJECT_SOURCE_DIR}/share/icons/trackballs.svg
         DESTINATION ${TRACKBALLS_SHARE}/../icons/hicolor/scalable/apps/)
-
-add_custom_command(OUTPUT execstring
-                  COMMAND echo "Exec=${CMAKE_INSTALL_PREFIX}/bin/trackballs" > execstring)
-add_custom_command(OUTPUT trackballs.desktop
-                  COMMAND cat ${PROJECT_SOURCE_DIR}/share/icons/trackballs.desktop execstring > ${CMAKE_CURRENT_BINARY_DIR}/trackballs.desktop
-                  DEPENDS ${PROJECT_SOURCE_DIR}/share/icons/trackballs.desktop execstring)
-add_custom_target(desktop ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/trackballs.desktop)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/trackballs.desktop DESTINATION ${TRACKBALLS_SHARE}/../applications)
+install(FILES ${PROJECT_SOURCE_DIR}/share/icons/trackballs.desktop
+        DESTINATION ${TRACKBALLS_SHARE}/../applications)
 
 # Translations!
 find_package(Gettext)
diff --git a/README.md b/README.md
index 984a68e..80f5d5d 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ it. Also we aim at making the game highly configurable by a scripting
 extension (Guile) and provide a simple editor by which new levels easily 
 can be created.
 
-You start /Trackballs/ by giving the command `trackballs` which
+You start *Trackballs* by giving the command `trackballs` which
 instructs the game to load the first level. If you wish to cheat or simply
 are testing out a level you are currently designing you can give the command
 `trackballs -l foo` which jumps to level "foo". For more descriptions on how
@@ -70,6 +70,8 @@ they may be passed in via the issue system.
 
 If you have a question that needs answering, check the [FAQ](FAQ.md) first.
 
+Trackballs source code is under the [GPL v2](COPYING).
+
 The change log for Trackballs is [NEWS.md](NEWS.md).
 
 To read about translating Trackballs, see [ABOUT-NLS.md](ABOUT-NLS.md).
diff --git a/po/de.po b/po/de.po
index c3d1f61..1f421cf 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: v1.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-06-25 17:46-0400\n"
-"PO-Revision-Date: 2017-06-28 19:38-0400\n"
+"POT-Creation-Date: 2017-10-14 23:50-0400\n"
+"PO-Revision-Date: 2017-10-16 09:45-0400\n"
 "Last-Translator: Mathias <matbr at home.se>\n"
 "Language-Team: Swedish <sv at li.org>\n"
 "Language: de\n"
@@ -16,49 +16,49 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.0.2\n"
+"X-Generator: Poedit 2.0.4\n"
 
-#: ../src/calibrateJoystickMode.cc:94
+#: ../src/calibrateJoystickMode.cc:105
 msgid "Calibrating Joystick"
-msgstr ""
+msgstr "Joystick kalibrieren"
 
-#: ../src/calibrateJoystickMode.cc:103
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Center joystick"
-msgstr ""
+msgstr "Den Joystick zentrieren"
 
-#: ../src/calibrateJoystickMode.cc:107
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Move joystick left"
-msgstr ""
+msgstr "Den Joystick nach links"
 
 #: ../src/calibrateJoystickMode.cc:111
 msgid "Move joystick right"
-msgstr ""
+msgstr "Den Joystick nach rechts"
 
-#: ../src/calibrateJoystickMode.cc:115
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick up"
-msgstr ""
+msgstr "Den Joystick nach oben"
 
-#: ../src/calibrateJoystickMode.cc:119
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick down"
-msgstr ""
+msgstr "Den Joystick nach unten"
 
-#: ../src/calibrateJoystickMode.cc:123
+#: ../src/calibrateJoystickMode.cc:118
 msgid "Press any button to continue"
-msgstr ""
+msgstr "Drücken Sie eine beliebige Taste, um fortzufahren"
 
-#: ../src/calibrateJoystickMode.cc:125
+#: ../src/calibrateJoystickMode.cc:120
 msgid "Press escape to cancel"
-msgstr ""
+msgstr "Drücke Esc, um abzubrechen"
 
-#: ../src/calibrateJoystickMode.cc:128
+#: ../src/calibrateJoystickMode.cc:122
 #, c-format
 msgid "now: %d %d"
-msgstr ""
+msgstr "jetzt: %d %d"
 
-#: ../src/calibrateJoystickMode.cc:133
+#: ../src/calibrateJoystickMode.cc:127
 #, c-format
 msgid "center: %d %d left: %d right: %d up: %d down: %d"
-msgstr ""
+msgstr "Mitte: %d %d links: %d rechts: %d oben: %d unten: %d"
 
 #: ../src/diamond.cc:112
 msgid "Save point"
@@ -79,34 +79,34 @@ msgstr "Farbe"
 
 #: ../src/editMode.cc:167
 msgid "Flags"
-msgstr ""
+msgstr "Flaggen"
 
 #: ../src/editMode.cc:167
 msgid "Feature"
-msgstr ""
+msgstr "Eigenschaften"
 
 #: ../src/editMode.cc:168
 msgid "Repair"
-msgstr ""
+msgstr "Reparieren"
 
 #: ../src/editMode.cc:168
 msgid "Move"
-msgstr ""
+msgstr "Bewegen"
 
 #: ../src/editMode.cc:168
 msgid "Window"
-msgstr ""
+msgstr "Fenster"
 
 #: ../src/editMode.cc:168
 msgid "View"
-msgstr ""
+msgstr "Ansicht"
 
 #. TRANSLATORS: This is a list of all the submenus in the map
 #. editor, if the initial character is * or / then that character
 #. must be perserved as it is.
 #: ../src/editMode.cc:176
 msgid "New"
-msgstr ""
+msgstr "Neu"
 
 #: ../src/editMode.cc:176 ../src/editWindows.cc:480
 msgid "Open"
@@ -122,7 +122,7 @@ msgstr "Speichern"
 
 #: ../src/editMode.cc:176
 msgid "Exit"
-msgstr ""
+msgstr "Beenden"
 
 #: ../src/editMode.cc:176
 msgid "Test level"
@@ -130,79 +130,79 @@ msgstr "Niveau ausprobieren"
 
 #: ../src/editMode.cc:177
 msgid "Edit height"
-msgstr ""
+msgstr "Höhe bearbeiten"
 
 #: ../src/editMode.cc:177
 msgid "Edit color"
-msgstr ""
+msgstr "Farbe bearbeiten"
 
 #: ../src/editMode.cc:177
 msgid "Edit water"
-msgstr ""
+msgstr "Wasser bearbeiten"
 
 #: ../src/editMode.cc:177
 msgid "Edit velocity"
-msgstr ""
+msgstr "Geschwindigkeit bearbeiten"
 
 #: ../src/editMode.cc:177
 msgid "Edit lines"
-msgstr ""
+msgstr "Linien bearbeiten"
 
 #: ../src/editMode.cc:178
 msgid "*<SPACE> Whole cell"
-msgstr ""
+msgstr "* <LEERTASTE> Ganze Zelle"
 
 #: ../src/editMode.cc:178
 msgid "Upper corner"
-msgstr ""
+msgstr "Obere Ecke"
 
 #: ../src/editMode.cc:178
 msgid "Bottom corner"
-msgstr ""
+msgstr "Untere Ecke"
 
 #: ../src/editMode.cc:178
 msgid "Right corner"
-msgstr ""
+msgstr "Rechte Ecke"
 
 #: ../src/editMode.cc:179
 msgid "Left corner"
-msgstr ""
+msgstr "Linke Ecke"
 
 #: ../src/editMode.cc:179
 msgid "Center"
-msgstr ""
+msgstr "Mitte"
 
 #: ../src/editMode.cc:179
 msgid "Raise increment"
-msgstr ""
+msgstr "Schrittweite erhöhen"
 
 #: ../src/editMode.cc:179
 msgid "Lower increment"
-msgstr ""
+msgstr "Schrittweite erniedrigen"
 
 #: ../src/editMode.cc:180
 msgid "*<SHIFT> reversed"
-msgstr ""
+msgstr "*<UMSCHALT> umgekehrt"
 
 #: ../src/editMode.cc:180
 msgid "*<CTRL> walls"
-msgstr ""
+msgstr "*<STRG> Wände"
 
 #: ../src/editMode.cc:181
 msgid "Inc. red"
-msgstr ""
+msgstr "Erh. rot"
 
 #: ../src/editMode.cc:181
 msgid "Inc. green"
-msgstr ""
+msgstr "Erh. grün"
 
 #: ../src/editMode.cc:181
 msgid "Inc. blue"
-msgstr ""
+msgstr "Erh. blau"
 
 #: ../src/editMode.cc:181
 msgid "Inc. alpha"
-msgstr ""
+msgstr "Erh. alpha"
 
 #: ../src/editMode.cc:182 ../src/editMode.cc:198
 msgid "Ice"
@@ -218,191 +218,191 @@ msgstr "Sand"
 
 #: ../src/editMode.cc:182 ../src/editMode.cc:199
 msgid "Kill"
-msgstr ""
+msgstr "Tod"
 
 #: ../src/editMode.cc:182
 msgid "Bounce"
-msgstr ""
+msgstr "Feder"
 
 #: ../src/editMode.cc:182 ../src/editMode.cc:199
 msgid "No grid"
-msgstr ""
+msgstr "Kein Gitter"
 
 #: ../src/editMode.cc:182 ../src/editMode.cc:200
 msgid "Track"
-msgstr ""
+msgstr "Spur"
 
 #: ../src/editMode.cc:183 ../src/editMode.cc:200
 msgid "Shade flat"
-msgstr ""
+msgstr "Flache Facetten"
 
 #: ../src/editMode.cc:183
 msgid "Texture"
-msgstr ""
+msgstr "Textur"
 
 #: ../src/editMode.cc:183
 msgid "ch. texture"
-msgstr ""
+msgstr "änd. Textur"
 
 #: ../src/editMode.cc:184 ../src/editMode.cc:203
 msgid "Spike"
-msgstr ""
+msgstr "Spitze"
 
 #: ../src/editMode.cc:184 ../src/editMode.cc:203
 msgid "Small hill"
-msgstr ""
+msgstr "Kleiner Hügel"
 
 #: ../src/editMode.cc:184 ../src/editMode.cc:203
 msgid "Medium hill"
-msgstr ""
+msgstr "Mittlerer Hügel"
 
 #: ../src/editMode.cc:184 ../src/editMode.cc:204
 msgid "Large hill"
-msgstr ""
+msgstr "Großer Hügel"
 
 #: ../src/editMode.cc:184 ../src/editMode.cc:204
 msgid "Huge hill"
-msgstr ""
+msgstr "Riesiger Hügel"
 
 #: ../src/editMode.cc:185
 msgid "Smooth small"
-msgstr ""
+msgstr "Kleine Glättung"
 
 #: ../src/editMode.cc:185
 msgid "Smooth large"
-msgstr ""
+msgstr "Große Glättung"
 
 #: ../src/editMode.cc:186
 msgid "Cell cont."
-msgstr ""
+msgstr "Zellkontinuität"
 
 #: ../src/editMode.cc:186
 msgid "Water cont."
-msgstr ""
+msgstr "Wasserkontinuität"
 
 #: ../src/editMode.cc:186
 msgid "Color cont."
-msgstr ""
+msgstr "Farbenkontinuität"
 
 #: ../src/editMode.cc:186
 msgid "Cell center"
-msgstr ""
+msgstr "Höhen hobeln"
 
 #: ../src/editMode.cc:187
 msgid "Water center"
-msgstr ""
+msgstr "Wasser hobeln"
 
 #: ../src/editMode.cc:187
 msgid "Color center"
-msgstr ""
+msgstr "Farben hobeln"
 
 #: ../src/editMode.cc:187
 msgid "Cell round"
-msgstr ""
+msgstr "Höhen runden"
 
 #: ../src/editMode.cc:187
 msgid "Water round"
-msgstr ""
+msgstr "Wasser runden"
 
 #: ../src/editMode.cc:188
 msgid "Color round"
-msgstr ""
+msgstr "Farbe runden"
 
 #: ../src/editMode.cc:188
 msgid "Vel. round"
-msgstr ""
+msgstr "Geschw. runden"
 
 #: ../src/editMode.cc:189
 msgid "/UP Move up"
-msgstr ""
+msgstr "/AUF Nach oben"
 
 #: ../src/editMode.cc:189
 msgid "/DOWN Move down"
-msgstr ""
+msgstr "/AB Nach unten"
 
 #: ../src/editMode.cc:189
 msgid "/LEFT Move left"
-msgstr ""
+msgstr "/LINKS Nach links"
 
 #: ../src/editMode.cc:189
 msgid "/RIGHT Move right"
-msgstr ""
+msgstr "/RECHTS Nach rechts"
 
 #: ../src/editMode.cc:190
 msgid "Shift map up"
-msgstr ""
+msgstr "Karte nach oben"
 
 #: ../src/editMode.cc:190
 msgid "Shift map down"
-msgstr ""
+msgstr "Karte nach unten"
 
 #: ../src/editMode.cc:190
 msgid "Shift map left"
-msgstr ""
+msgstr "Karte nach links"
 
 #: ../src/editMode.cc:190
 msgid "Shift map right"
-msgstr ""
+msgstr "Karte nach rechts"
 
 #: ../src/editMode.cc:191
 msgid "*<SHIFT> x5"
-msgstr ""
+msgstr "*<UMSCHALT> x5"
 
 #: ../src/editMode.cc:191
 msgid "Set region marker"
-msgstr ""
+msgstr "Bereichsmarkierung setzen"
 
 #: ../src/editMode.cc:191
 msgid "Clear marker"
-msgstr ""
+msgstr "Bereichsmarkierung löschen"
 
 #: ../src/editMode.cc:191
 msgid "Copy region"
-msgstr ""
+msgstr "Bereich copieren"
 
 #: ../src/editMode.cc:192
 msgid "Paste region"
-msgstr ""
+msgstr "Bereich einfügen"
 
 #: ../src/editMode.cc:193
 msgid "Editor"
-msgstr ""
+msgstr "Karteneditor"
 
 #: ../src/editMode.cc:193
 msgid "Toolbar"
-msgstr ""
+msgstr "Symbolleiste"
 
 #: ../src/editMode.cc:193
 msgid "Status"
-msgstr ""
+msgstr "Status"
 
 #: ../src/editMode.cc:194
 msgid "Birds's eye"
-msgstr ""
+msgstr "Vogelperspektive"
 
 #: ../src/editMode.cc:194
 msgid "Rotate view"
-msgstr ""
+msgstr "Ansicht drehen"
 
 #: ../src/editMode.cc:194
 msgid "Load entities"
-msgstr ""
+msgstr "Objekte laden"
 
 #: ../src/editMode.cc:194
 msgid "Clear entities"
-msgstr ""
+msgstr "Objekte löschen"
 
 #: ../src/editMode.cc:199
 msgid "Trampoline"
-msgstr ""
+msgstr "Trampolin"
 
 #: ../src/editMode.cc:204
 msgid "Small smooth"
-msgstr ""
+msgstr "Kleine Glättung"
 
 #: ../src/editMode.cc:205
 msgid "Large smooth"
-msgstr ""
+msgstr "Große Glättung"
 
 #: ../src/editMode.cc:341 ../src/mainMode.cc:178
 msgid "Track:"
@@ -410,15 +410,15 @@ msgstr "Strecke:"
 
 #: ../src/editMode.cc:342
 msgid "This is the default script file for this track."
-msgstr ""
+msgstr "Dies ist die Standard-Skriptdatei für diese Ebene."
 
 #: ../src/editMode.cc:344
 msgid "Read the documentation for the editor and look at the examples"
-msgstr ""
+msgstr "Lesen Sie die Dokumentation für den Editor und sehen Sie sich die"
 
 #: ../src/editMode.cc:345
 msgid "to learn how to customize it"
-msgstr ""
+msgstr "Beispiele an, um zu erfahren, wie Sie die Ebene anpassen können"
 
 #: ../src/editMode.cc:348
 msgid "Enter your name here"
@@ -426,19 +426,19 @@ msgstr "Namen eingeben"
 
 #: ../src/editMode.cc:352
 msgid "Add the name of the next level here"
-msgstr ""
+msgstr "Fügen Sie hier den Namen der nächsten Ebene hinzu"
 
 #: ../src/editMode.cc:499
 msgid "Cell height"
-msgstr ""
+msgstr "Zellenhöhe"
 
 #: ../src/editMode.cc:499
 msgid "Cell water height"
-msgstr ""
+msgstr "Zellwasserhöhe"
 
 #: ../src/editMode.cc:499
 msgid "Textures"
-msgstr ""
+msgstr "Texturen"
 
 #: ../src/editWindows.cc:141
 msgid "y"
@@ -450,129 +450,129 @@ msgstr "n"
 
 #: ../src/editWindows.cc:193
 msgid "height"
-msgstr ""
+msgstr "Höhe"
 
 #: ../src/editWindows.cc:193
 msgid "color"
-msgstr ""
+msgstr "Farbe"
 
 #: ../src/editWindows.cc:193
 msgid "water"
-msgstr ""
+msgstr "Wasser"
 
 #: ../src/editWindows.cc:194
 msgid "velocity"
-msgstr ""
+msgstr "Geschwindigkeit"
 
 #: ../src/editWindows.cc:194
 msgid "lines"
-msgstr ""
+msgstr "Linien"
 
 #: ../src/editWindows.cc:194
 msgid "feature"
-msgstr ""
+msgstr "Eigenshaft"
 
 #: ../src/editWindows.cc:196
 #, c-format
 msgid "Pos: %d,%d"
-msgstr ""
+msgstr "Pos: %d,%d"
 
 #: ../src/editWindows.cc:198
 #, c-format
 msgid "Increment: %3.2f"
-msgstr ""
+msgstr "Stufe: %3.2f"
 
 #: ../src/editWindows.cc:200
 #, c-format
 msgid "Edit: %s"
-msgstr ""
+msgstr "Bearbeiten: %s"
 
 #: ../src/editWindows.cc:214
 msgid "Heights"
-msgstr ""
+msgstr "Höhen"
 
 #: ../src/editWindows.cc:230
 msgid "Water heights"
-msgstr ""
+msgstr "Wasserhöhen"
 
 #: ../src/editWindows.cc:246
 #, c-format
 msgid "red: %2.2f"
-msgstr ""
+msgstr "rot: %2.2f"
 
 #: ../src/editWindows.cc:248
 #, c-format
 msgid "green: %2.2f"
-msgstr ""
+msgstr "grün: %2.2f"
 
 #: ../src/editWindows.cc:251
 #, c-format
 msgid "blue: %2.2f"
-msgstr ""
+msgstr "blau: %2.2f"
 
 #: ../src/editWindows.cc:254
 #, c-format
 msgid "alpha: %2.2f"
-msgstr ""
+msgstr "alpha: %2.2f"
 
 #: ../src/editWindows.cc:263
 #, c-format
 msgid "dx: %2.2f"
-msgstr ""
+msgstr "dx: %2.2f"
 
 #: ../src/editWindows.cc:265
 #, c-format
 msgid "dy: %2.2f"
-msgstr ""
+msgstr "dy: %2.2f"
 
 #: ../src/editWindows.cc:268
 msgid "Lines"
-msgstr ""
+msgstr "Linien"
 
 #: ../src/editWindows.cc:302
 msgid "spike"
-msgstr ""
+msgstr "Spitze"
 
 #: ../src/editWindows.cc:305
 msgid "small hill"
-msgstr ""
+msgstr "kleiner Hügel"
 
 #: ../src/editWindows.cc:308
 msgid "medium hill"
-msgstr ""
+msgstr "mittlerer Hügel"
 
 #: ../src/editWindows.cc:311
 msgid "large hill"
-msgstr ""
+msgstr "großer Hügel"
 
 #: ../src/editWindows.cc:314
 msgid "huge hill"
-msgstr ""
+msgstr "riesiger Hügel"
 
 #: ../src/editWindows.cc:317
 msgid "small smooth"
-msgstr ""
+msgstr "kleine Glättung"
 
 #: ../src/editWindows.cc:320
 msgid "large smooth"
-msgstr ""
+msgstr "große Glättung"
 
 #: ../src/editWindows.cc:360
 msgid "Quit without saving?"
-msgstr ""
+msgstr "Beenden ohne zu speichern?"
 
 #: ../src/editWindows.cc:361 ../src/editWindows.cc:400
-#: ../src/editWindows.cc:447 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:175
-#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:447 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:177
+#: ../src/settingsMode.cc:179 ../src/settingsMode.cc:189
 msgid "Yes"
 msgstr "Ja"
 
 #: ../src/editWindows.cc:362 ../src/editWindows.cc:401
-#: ../src/editWindows.cc:448 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:136
-#: ../src/settingsMode.cc:175 ../src/settingsMode.cc:177
-#: ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:448 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:138
+#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:179
+#: ../src/settingsMode.cc:189
 #, c-format
 msgid "No"
 msgstr "Nein"
@@ -583,19 +583,19 @@ msgstr "Karte abspeichern?"
 
 #: ../src/editWindows.cc:403
 msgid "Saving"
-msgstr ""
+msgstr "Speichern"
 
 #: ../src/editWindows.cc:446
 msgid "Close without saving?"
-msgstr ""
+msgstr "Schließen ohne zu speichern?"
 
 #: ../src/editWindows.cc:477
 msgid "Name of map"
-msgstr ""
+msgstr "Name der Karte"
 
 #: ../src/editWindows.cc:479 ../src/editWindows.cc:536
 msgid "Cancel"
-msgstr ""
+msgstr "Absagen"
 
 #: ../src/editWindows.cc:527
 msgid "Open map"
@@ -604,14 +604,18 @@ msgstr "Karte öffnen"
 #: ../src/editWindows.cc:534
 #, c-format
 msgid "page %d / %d"
-msgstr ""
+msgstr "Seite %d / %d"
+
+#: ../src/enterHighScoreMode.cc:59
+msgid "High Score"
+msgstr "Highscore"
 
-#: ../src/enterHighScoreMode.cc:54
+#: ../src/enterHighScoreMode.cc:63
 #, c-format
 msgid "You got %d points"
 msgstr "Sie haben %d Punkte erreicht"
 
-#: ../src/enterHighScoreMode.cc:59
+#: ../src/enterHighScoreMode.cc:66
 #, c-format
 msgid "Enter your name: %s"
 msgstr "Namen eingeben: %s"
@@ -620,178 +624,204 @@ msgstr "Namen eingeben: %s"
 msgid "John Doe"
 msgstr "Peter Schmidt"
 
-#: ../src/glHelp.cc:1266
+#: ../src/glHelp.cc:1264
 #, c-format
 msgid "Framerate: %.1f"
 msgstr "Bildrate: %.1f"
 
-#: ../src/glHelp.cc:1268
+#: ../src/glHelp.cc:1266
 #, c-format
 msgid "Framerate unknown"
 msgstr "Unbekannte Bildrate"
 
-#: ../src/glHelp.cc:1270
+#: ../src/glHelp.cc:1268
 #, c-format
 msgid "%.1f ms/Frame"
 msgstr "%.1f ms/Bild"
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:183
 msgid "Your marble:"
 msgstr "Euer Ball:"
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:184
 msgid "Steer this with your mouse, numpad or arrows. "
-msgstr ""
+msgstr "Steuere den Ball mit der Maus, dem Ziffernblock oder den Pfeilen. "
 
-#: ../src/helpMode.cc:113
+#: ../src/helpMode.cc:185
 msgid "Left mouse or spacebar is jump."
-msgstr ""
+msgstr "Man kann mit der linken Maustaste oder der Leertaste springen."
 
-#: ../src/helpMode.cc:114
+#: ../src/helpMode.cc:186
 msgid "Shift gives top speed when using keyboard."
 msgstr ""
+"Bei Verwendung der Tastatur, die Umschalttaste gibt Höchstgeschwindigkeit."
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:188
 msgid "Mr Black:"
-msgstr ""
+msgstr "Herr Schwarz:"
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:189
 msgid "Your enemy. Defeat with Modpill - Spike."
-msgstr ""
+msgstr "Dein Feind. Besiege mit Modpille-Stacheln."
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:191
 msgid "Modpill Speed:"
-msgstr ""
+msgstr "Modpille Geschwindigkeit:"
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:192
 msgid "Makes you go faster for short period of time."
-msgstr ""
+msgstr "Macht den Ball für kurze Zeit schneller."
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:194
 msgid "Modpill Spikes:"
-msgstr ""
+msgstr "Modpille Stacheln:"
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:195
 msgid "Weapon against Mr Black and grip for icy terrain."
-msgstr ""
+msgstr "Waffe gegen Herr Schwarz und Griff für eisiges Gelände."
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:198
 msgid "Modpill Freeze:"
-msgstr ""
+msgstr "Modpille Einfrieren:"
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:199
 msgid "This will freeze you - avoid it."
-msgstr ""
+msgstr "Dies wird Sie einfrieren - vermeiden Sie es."
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:201
 msgid "Modpill Glass:"
-msgstr ""
+msgstr "Modpille Glas:"
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:202
 msgid "Protects you from acid, but makes you more fragile."
-msgstr ""
+msgstr "Schützt den Ball vor Säure, aber macht es zerbrechlich."
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:204
 msgid "Modpill Nitro:"
-msgstr ""
+msgstr "Modpille Nitro:"
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:205
 msgid "Move really fast. Active nitro with second button."
-msgstr ""
+msgstr "Sehr schnell bewegen. Mit dem zweiten Knopf Nitro aktivieren."
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:207
 msgid "Switch:"
-msgstr ""
+msgstr "Schalter:"
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:208
 msgid "Activates/deactivates some object/element in the level."
-msgstr ""
+msgstr "Aktiviert / deaktiviert ein Objekt / Element in der Ebene."
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:211
 msgid "Moving spike:"
-msgstr ""
+msgstr "Bewegliche Spitze:"
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:212
 msgid "Obstacle to avoid."
-msgstr ""
+msgstr "Hindernis zu vermeiden."
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:214
 msgid "Flag:"
-msgstr ""
+msgstr "Flagge:"
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:215
 msgid "Collect for bonus points."
-msgstr ""
+msgstr "Sammeln für Bonuspunkte."
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:218
 msgid "Normal terrain:"
-msgstr ""
+msgstr "Normales Gelände:"
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:219
 msgid "Can be of any color and is safe to move on."
-msgstr ""
+msgstr "Kann von jeder Farbe sein und darf man sicher durchqueren."
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:221
 msgid "Acid terrain:"
-msgstr ""
+msgstr "Saures Gelände:"
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:222
 msgid "Will kill your marble unless you have a glass modpill."
-msgstr ""
+msgstr "Wird den Ball töten, wenn Sie keine Glasmodpille haben."
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:225
 msgid "Icy terrain:"
-msgstr ""
+msgstr "Eisiges Gelände:"
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:226
 msgid "Slippery terrain unless you have a spikes modpill."
-msgstr ""
+msgstr "Rutschiges Terrain, außer Sie eine Stachelmodpille haben."
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:228
 msgid "Sandy terrain:"
-msgstr ""
+msgstr "Sandiges Gelände:"
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:229
 msgid "Soft to land on but will slow you down."
-msgstr ""
+msgstr "Weiche Landungen aber wird Sie verlangsamen."
 
-#: ../src/helpMode.cc:128
+#: ../src/helpMode.cc:232
 msgid "Goal:"
-msgstr ""
+msgstr "Ziel:"
 
-#: ../src/helpMode.cc:128
-msgid "Will take you to the next level. "
-msgstr ""
+#: ../src/helpMode.cc:233
+msgid "Will take you to the next level."
+msgstr "Bringt euch zum nächsten Level."
 
-#: ../src/helpMode.cc:129
+#: ../src/helpMode.cc:234
 msgid "Get here before time runs out."
-msgstr ""
+msgstr "Kommen Sie her, bevor die Zeit abläuft."
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:237
 msgid "Force Field:"
-msgstr ""
+msgstr "Kraftfeld:"
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:238
 msgid "You cannot pass this unless you switch it off."
-msgstr ""
+msgstr "Sie können dies nur übergehen, wenn Sie es ausschalten."
 
-#: ../src/helpMode.cc:131
+#: ../src/helpMode.cc:239
 msgid "Some are lethal and some are one way."
+msgstr "Einige sind tödlich und einige sind einbahnig."
+
+#: ../src/helpMode.cc:242
+msgid "Cactus:"
+msgstr "Kaktus:"
+
+#: ../src/helpMode.cc:243
+msgid "Spiky plant, lethal unless you have a spikes modpill."
 msgstr ""
+"Stachlige Pflanze, tödlich, es sei denn, Sie haben ein Stachelmodpille."
+
+#: ../src/helpMode.cc:246
+msgid "Bird:"
+msgstr "Vogel:"
+
+#: ../src/helpMode.cc:247
+msgid "Kills balls it flies across unless they have spikes."
+msgstr "Tötet Bälle, die es durchfliegt, es sei denn, sie haben stacheln."
+
+#: ../src/helpMode.cc:250
+msgid "Teleport:"
+msgstr "Teleport:"
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:251
+msgid "Will send your marble somewhere else."
+msgstr "Wird Ihre Murmel woanders schicken."
+
+#: ../src/helpMode.cc:254
 msgid "Tunnel:"
-msgstr ""
+msgstr "Tunnel:"
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:255
 msgid "Takes you places, sometimes with great speed."
-msgstr ""
+msgstr "Transportiert Sie, manchmal mit großer Geschwindigkeit."
 
-#: ../src/helpMode.cc:156
+#: ../src/helpMode.cc:285
 msgid "More Help"
-msgstr ""
+msgstr "Mehr Hilfe"
 
-#: ../src/helpMode.cc:158 ../src/settingsMode.cc:239
+#: ../src/helpMode.cc:287 ../src/hofMode.cc:107 ../src/settingsMode.cc:242
 msgid "Back"
 msgstr "Zurück"
 
@@ -800,11 +830,15 @@ msgstr "Zurück"
 msgid "Anonymous Coward"
 msgstr "Anonymer Feigling"
 
-#: ../src/hofMode.cc:108 ../src/setupMode.cc:159
+#: ../src/hofMode.cc:89
+msgid "High Scores"
+msgstr "Highscores"
+
+#: ../src/hofMode.cc:92 ../src/setupMode.cc:212
 msgid "Level Set"
 msgstr "Niveaumenge"
 
-#: ../src/hofMode.cc:118
+#: ../src/hofMode.cc:101
 #, c-format
 msgid "%d points"
 msgstr "%d Punkte"
@@ -855,46 +889,58 @@ msgstr "Sie haben das Spiel beendet!"
 msgid "Good luck!"
 msgstr "Viel Glück!"
 
-#: ../src/mainMode.cc:635
+#: ../src/mainMode.cc:581
+msgid "Lives"
+msgstr "Leben"
+
+#: ../src/mainMode.cc:581
+msgid "Score"
+msgstr "Punkte"
+
+#: ../src/mainMode.cc:581
+msgid "Time left"
+msgstr "Zeit"
+
+#: ../src/mainMode.cc:653
 #, c-format
 msgid "Level bonuses"
 msgstr "Bonus"
 
-#: ../src/mainMode.cc:637
+#: ../src/mainMode.cc:655
 #, c-format
 msgid "Lives left:"
 msgstr "Leben übrig:"
 
-#: ../src/mainMode.cc:638
+#: ../src/mainMode.cc:656
 #, c-format
 msgid "%d x 100 = %d points"
 msgstr "%d x 100 = %d Punkte"
 
-#: ../src/mainMode.cc:639
+#: ../src/mainMode.cc:657
 #, c-format
 msgid "Time left:"
 msgstr "Zeit übrig:"
 
-#: ../src/mainMode.cc:640
+#: ../src/mainMode.cc:658
 #, c-format
 msgid "%d minutes = %d points"
 msgstr "%d Minuten = %d Punkte"
 
-#: ../src/mainMode.cc:642
+#: ../src/mainMode.cc:660
 #, c-format
 msgid "Difficulty:"
 msgstr "Schwierigkeit:"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "easy"
 msgstr "leicht"
 
-#: ../src/mainMode.cc:644 ../src/settingsMode.cc:197
+#: ../src/mainMode.cc:662 ../src/settingsMode.cc:199
 #, c-format
 msgid "normal"
 msgstr "normal"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "hard"
 msgstr "schwierig"
 
@@ -918,6 +964,14 @@ msgid ""
 "out.                                               You steer the ball using "
 "the mouse and by pressing >spacebar< you can jump a short distance."
 msgstr ""
+"Trackballs ist ein Spiel ähnlich dem klassischen Spiel Marble Madness aus "
+"den 80ern. Der Spieler sammelt Punkte, indem er eine Kugel aus Marmor durch "
+"ein Labyrinth führt, das mit scharfen Spitzen, Säulen und anderen "
+"Hindernissen gefüllt ist. Wenn der Ball das Ziel erreicht hat, geht es "
+"weiter zum nächsten, schwierigeren Level - es sei denn, die Zeit ist "
+"abgelaufen.                                               Sie steuern den "
+"Ball mit der Maus und durch Drücken von der Leertaste können Sie eine kurze "
+"Strecke springen."
 
 #: ../src/menuMode.cc:103
 msgid "New Game"
@@ -943,106 +997,106 @@ msgstr "Hilfe"
 msgid "Map Editor"
 msgstr "Karteneditor"
 
-#: ../src/mmad.cc:215
+#: ../src/mmad.cc:214
 msgid "Usage:"
-msgstr ""
+msgstr "Verwendung:"
 
-#: ../src/mmad.cc:216
+#: ../src/mmad.cc:215
 msgid "[-w, -m] [-e, -l -t <level>] [-r <width>] [-s <sensitivity>]"
-msgstr ""
+msgstr "[-w, -m] [-e, -l -t <Ebene>] [-r <Breite>] [-s <Empfindlichkeit>]"
 
-#: ../src/mmad.cc:218
+#: ../src/mmad.cc:217
 msgid "Display this usage information."
-msgstr ""
+msgstr "Zeige diese Verwendungsinformationen an."
 
-#: ../src/mmad.cc:219
+#: ../src/mmad.cc:218
 msgid "Start from level."
-msgstr ""
+msgstr "Beginne mit Level."
 
-#: ../src/mmad.cc:220
+#: ../src/mmad.cc:219
 msgid "Run in window (Default is fullscreen)"
-msgstr ""
+msgstr "Im Fenster ausführen (Standard ist Vollbild)"
 
-#: ../src/mmad.cc:221
+#: ../src/mmad.cc:220
 msgid "Mute sound."
-msgstr ""
+msgstr "Ton stummschalten."
 
-#: ../src/mmad.cc:222
+#: ../src/mmad.cc:221
 msgid "Set resolution to 640, 800 or 1024"
-msgstr ""
+msgstr "Stelle die Auflösung auf 640, 800 oder 1024 ein"
 
-#: ../src/mmad.cc:223
+#: ../src/mmad.cc:222
 msgid "Mouse sensitivity, default 1.0"
-msgstr ""
+msgstr "Mausempfindlichkeit, Standardwert 1.0"
 
-#: ../src/mmad.cc:224
+#: ../src/mmad.cc:223
 msgid "Displays framerate"
-msgstr ""
+msgstr "Zeigt die Bildrate an"
 
-#: ../src/mmad.cc:225
+#: ../src/mmad.cc:224
 msgid "Prints current version number"
-msgstr ""
+msgstr "Druckt die aktuelle Versionsnummer"
 
-#: ../src/mmad.cc:226
+#: ../src/mmad.cc:225
 msgid "Updates a map to the latest format"
-msgstr ""
+msgstr "Aktualisiert eine Karte auf das neueste Format"
 
-#: ../src/mmad.cc:227
+#: ../src/mmad.cc:226
 msgid "Attempt to conserve memory usage"
-msgstr ""
+msgstr "Speicherverbrauch sparen"
 
-#: ../src/mmad.cc:228
+#: ../src/mmad.cc:227
 msgid "Debug joystick status"
-msgstr ""
+msgstr "Joystick debuggen"
 
-#: ../src/mmad.cc:229
+#: ../src/mmad.cc:228
 msgid "Correct for bad joysticks"
-msgstr ""
+msgstr "Schlechte Joysticks korrigieren"
 
-#: ../src/mmad.cc:233
+#: ../src/mmad.cc:232
 msgid "Important keyboard shortcuts"
 msgstr "Wichtige Tastenkürzel"
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Escape"
-msgstr ""
+msgstr "Escape"
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Soft quit"
-msgstr ""
+msgstr "Weich beenden"
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "CapsLock"
-msgstr ""
+msgstr "Feststell"
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "Unhide mouse pointer"
-msgstr ""
+msgstr "Mauszeiger sichtbar machen"
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "CTRL-q"
-msgstr ""
+msgstr "STRG-q"
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "Quit the game immediately"
-msgstr ""
+msgstr "Sofort beenden"
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "CTRL-f"
-msgstr ""
+msgstr "STRG-f"
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "Toggle between fullscreen/windowed mode"
-msgstr ""
+msgstr "Zwischen Vollbildmodus und Fenstermodus wechseln"
 
-#: ../src/mmad.cc:238
+#: ../src/mmad.cc:237
 msgid "Kill the ball"
-msgstr ""
+msgstr "Ball töten"
 
 #: ../src/mmad.cc:349
 #, c-format
 msgid "Unknown screen resolution of width %d"
-msgstr ""
+msgstr "Unbekannte Bildschirmauflösung der Breite %d"
 
 #: ../src/mmad.cc:382
 msgid "Welcome to Trackballs."
@@ -1053,281 +1107,281 @@ msgstr "Willkommen bei Trackballs."
 msgid "Using %s as gamedata directory."
 msgstr "Mit %s als Spieldaten-Verzeichnis."
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Speed ball"
 msgstr "Geschwindigkeits ball"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Extra jump"
 msgstr "Extra-Sprung"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Spikes"
 msgstr "Stacheln"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Glass ball"
 msgstr "Glasball"
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Dizzy!"
 msgstr "Schwindlig!"
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Freeze!"
 msgstr "Einfrieren!"
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Floating"
 msgstr "Schwimmend"
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Extra life"
 msgstr "Extra Leben"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Small ball"
 msgstr "Kleiner Ball"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Large ball"
 msgstr "Großer Ball"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Nitro"
 msgstr "Nitro"
 
-#: ../src/settingsMode.cc:82
+#: ../src/settingsMode.cc:84
 msgid "Game Settings"
 msgstr "Spielkonfiguration"
 
-#: ../src/settingsMode.cc:92
+#: ../src/settingsMode.cc:94
 #, c-format
 msgid "Is resolution %dx%dx%d ok?"
 msgstr "Ist die Auflösung %dx%dx%d in Ordnung?"
 
-#: ../src/settingsMode.cc:95
+#: ../src/settingsMode.cc:97
 #, c-format
 msgid "Is resolution Auto-%d ok?"
 msgstr "Ist die Auflösung Auto-%d in Ordnung?"
 
-#: ../src/settingsMode.cc:99
+#: ../src/settingsMode.cc:101
 msgid "Ok, use this resolution"
 msgstr "Ja, verwende diese Auflösung"
 
-#: ../src/settingsMode.cc:100
+#: ../src/settingsMode.cc:102
 msgid "No, revert to old resolution"
 msgstr "Nein, zur alten Auslosung zurückkehren"
 
-#: ../src/settingsMode.cc:102
+#: ../src/settingsMode.cc:104
 #, c-format
 msgid "Timeout in %d seconds"
 msgstr "Timeout in %d Sekunden"
 
-#: ../src/settingsMode.cc:114
+#: ../src/settingsMode.cc:116
 msgid "Video"
 msgstr "Video"
 
-#: ../src/settingsMode.cc:121
+#: ../src/settingsMode.cc:123
 #, c-format
 msgid "Auto-%d"
 msgstr "Auto-%d"
 
-#: ../src/settingsMode.cc:123
+#: ../src/settingsMode.cc:125
 msgid "Resolution"
 msgstr "Auflösung"
 
-#: ../src/settingsMode.cc:124
+#: ../src/settingsMode.cc:126
 msgid "Test this resolution"
 msgstr "Auflösung testen"
 
-#: ../src/settingsMode.cc:127
+#: ../src/settingsMode.cc:129
 msgid "Fullscreen"
 msgstr "Vollbild"
 
-#: ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:132
 msgid "VSync"
 msgstr "VSync"
 
-#: ../src/settingsMode.cc:139
+#: ../src/settingsMode.cc:141
 #, c-format
 msgid "Frame rate"
 msgstr "Bildrate"
 
-#: ../src/settingsMode.cc:142
+#: ../src/settingsMode.cc:144
 #, c-format
 msgid "Frame time"
 msgstr "Bildzeit"
 
-#: ../src/settingsMode.cc:145
+#: ../src/settingsMode.cc:147
 msgid "Show FPS"
 msgstr "FPS anzeigen"
 
-#: ../src/settingsMode.cc:150
+#: ../src/settingsMode.cc:152
 msgid "Graphics"
 msgstr "Detailstufe"
 
-#: ../src/settingsMode.cc:155
+#: ../src/settingsMode.cc:157
 #, c-format
 msgid "None"
 msgstr "Nichts"
 
-#: ../src/settingsMode.cc:158
+#: ../src/settingsMode.cc:160
 #, c-format
 msgid "Minimalistic"
 msgstr "Minimalistisch"
 
-#: ../src/settingsMode.cc:161
+#: ../src/settingsMode.cc:163
 #, c-format
 msgid "Simple"
 msgstr "Einfach"
 
-#: ../src/settingsMode.cc:164
+#: ../src/settingsMode.cc:166
 #, c-format
 msgid "Standard"
 msgstr "Standard"
 
-#: ../src/settingsMode.cc:167
+#: ../src/settingsMode.cc:169
 #, c-format
 msgid "Extra"
 msgstr "Extra"
 
-#: ../src/settingsMode.cc:170
+#: ../src/settingsMode.cc:172
 #, c-format
 msgid "Everything"
 msgstr "Alles"
 
-#: ../src/settingsMode.cc:173
+#: ../src/settingsMode.cc:175
 msgid "Details"
 msgstr "Details"
 
-#: ../src/settingsMode.cc:174
+#: ../src/settingsMode.cc:176
 msgid "Reflections"
 msgstr "Reflexionen"
 
-#: ../src/settingsMode.cc:176
+#: ../src/settingsMode.cc:178
 msgid "Shadows"
 msgstr "Schatten"
 
-#: ../src/settingsMode.cc:183
+#: ../src/settingsMode.cc:185
 msgid "Controls"
 msgstr "Kontrollen"
 
-#: ../src/settingsMode.cc:186
+#: ../src/settingsMode.cc:188
 msgid "Use mouse"
 msgstr "Maus benutzen"
 
-#: ../src/settingsMode.cc:192
+#: ../src/settingsMode.cc:194
 msgid "Sensitivity"
 msgstr "Empfindlichkeit"
 
-#: ../src/settingsMode.cc:199
+#: ../src/settingsMode.cc:201
 #, c-format
 msgid "+%d degrees"
 msgstr "+%d Grad"
 
-#: ../src/settingsMode.cc:201
+#: ../src/settingsMode.cc:203
 #, c-format
 msgid "-%d degrees"
 msgstr "-%d Grad"
 
-#: ../src/settingsMode.cc:202
+#: ../src/settingsMode.cc:204
 msgid "Steering"
 msgstr "Steuerung"
 
-#: ../src/settingsMode.cc:209
+#: ../src/settingsMode.cc:211
 #, c-format
 msgid "no joystick found"
 msgstr "kein Joystick gefunden"
 
-#: ../src/settingsMode.cc:213
+#: ../src/settingsMode.cc:215
 msgid "Joystick:"
 msgstr "Joystick:"
 
-#: ../src/settingsMode.cc:223
+#: ../src/settingsMode.cc:225
 msgid "Other"
 msgstr "Weiteres"
 
-#: ../src/settingsMode.cc:227
+#: ../src/settingsMode.cc:229
 msgid "Music volume"
 msgstr "Musiklautstärke"
 
-#: ../src/settingsMode.cc:229
+#: ../src/settingsMode.cc:231
 msgid "Effects volume"
 msgstr "Effektlautstärke"
 
-#: ../src/settingsMode.cc:231
+#: ../src/settingsMode.cc:233
 msgid "Language"
 msgstr "Sprache"
 
-#: ../src/setupMode.cc:151
+#: ../src/setupMode.cc:203
 msgid "Setup new game"
 msgstr "Neues Spiel aufstellen"
 
-#: ../src/setupMode.cc:155
+#: ../src/setupMode.cc:208
 msgid "Player Name"
 msgstr "Spielername"
 
-#: ../src/setupMode.cc:161
+#: ../src/setupMode.cc:214
 msgid "N/A"
 msgstr "N/A"
 
-#: ../src/setupMode.cc:167
+#: ../src/setupMode.cc:220
 msgid "Level"
 msgstr "Spielniveau"
 
-#: ../src/setupMode.cc:175
+#: ../src/setupMode.cc:228
 msgid "Difficulty"
 msgstr "Schwierigkeit"
 
-#: ../src/setupMode.cc:180
+#: ../src/setupMode.cc:232
 msgid "Sandbox (Easy)"
 msgstr "Sandkasten (Leicht)"
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Normal)"
 msgstr "Sandkasten (Normal)"
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Hard)"
 msgstr "Sandkasten (Schwierig)"
 
-#: ../src/setupMode.cc:183
+#: ../src/setupMode.cc:235
 msgid "Easy"
 msgstr "Leicht"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Normal"
 msgstr "Normal"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Hard"
 msgstr "Schwierig"
 
-#: ../src/setupMode.cc:188
-msgid "Start Game"
-msgstr "Spiel beginnen"
-
-#: ../src/setupMode.cc:192
+#: ../src/setupMode.cc:241
 #, c-format
 msgid "Total games played: %d"
 msgstr "Anzahl Spiele gespielt: %d"
 
-#: ../src/setupMode.cc:196
+#: ../src/setupMode.cc:245
 #, c-format
 msgid "Average score: %d"
 msgstr "Durchschnittliche Punktzahl: %d"
 
-#: ../src/setupMode.cc:198
+#: ../src/setupMode.cc:247
 #, c-format
 msgid "Average score: N/A"
 msgstr "Durchschnittliche Punktzahl: nd"
 
-#: ../src/setupMode.cc:201
+#: ../src/setupMode.cc:250
 #, c-format
 msgid "Levels completed: %d"
 msgstr "Level abgeschlossen: %d"
 
+#: ../src/setupMode.cc:262
+msgid "Start Game"
+msgstr "Spiel beginnen"
+
 #: ../share/levels/bx.set:1 ../share/levels/bx1.scm:4
 msgid "Box-O'-Fun"
 msgstr "Spaßkasten"
@@ -1339,14 +1393,20 @@ msgstr "Spaßkasten"
 #: ../share/levels/bx.set:4
 msgid "This is a set of three quite large levels created by Warren D. Ober."
 msgstr ""
+"Dies ist ein Satz von drei ziemlich großen Ebenen erstellt von Warren D. "
+"Ober. Hier finden"
 
 #: ../share/levels/bx.set:5
 msgid "Here you will find some interesting use of pipes and other objects."
 msgstr ""
+"Sie eine interessante Verwendung von Rohren und anderen Objekten. Hinweis: "
+"Wenn"
 
 #: ../share/levels/bx.set:6
 msgid "Hint: If you have difficult entering a pipe try to jump a little."
 msgstr ""
+"Sie Schwierigkeiten haben, eine Pfeife zu betreten, versuchen Sie ein wenig "
+"zu springen."
 
 #: ../share/levels/castles.set:1
 msgid "Castles"
@@ -1358,23 +1418,24 @@ msgstr "Blaue Burg"
 
 #: ../share/levels/castles.set:4
 msgid "Do YOU dare to enter and brave these four castles? Only the most"
-msgstr ""
+msgstr "Trauen Sie sich, diese vier Burgen zu betreten? Nur die erfahrensten"
 
 #: ../share/levels/castles.set:5
 msgid "experienced and skilled Trackballs players will make it as far"
 msgstr ""
+" und geschicktesten Trackballspieler werden es bis zur härtesten Burg "
 
 #: ../share/levels/castles.set:6
 msgid "as to the thoughest Ice and Glass castle - a place where you may"
-msgstr ""
+msgstr "aus Eis und Glas schaffen - ein Ort, an dem Sie vielleicht zweimal "
 
 #: ../share/levels/castles.set:7
 msgid "need to think twice to find you way through the maze. Use the digits"
-msgstr ""
+msgstr "nachdenken müssen, um den Weg durch das Labyrinth zu finden."
 
 #: ../share/levels/castles.set:8
 msgid "of PI as a clue in the last maze."
-msgstr ""
+msgstr "Benutzen Sie die Ziffern von PI als Hinweis im letzten Labyrinth."
 
 #: ../share/levels/child.set:1
 msgid "Child of Tales"
@@ -1386,11 +1447,11 @@ msgstr "Labyrinth"
 
 #: ../share/levels/child.set:4
 msgid "This is an easy and short level for young children made by Attila"
-msgstr ""
+msgstr "Dies ist eine einfache und kurze Ebene für junge Kinder von Attila"
 
 #: ../share/levels/child.set:5
 msgid "Boros. It was created for my little goddaughter."
-msgstr ""
+msgstr "Boros. Es wurde für meine kleine Patentochter geschaffen."
 
 # There's many ways to translate this, and all warp the connotations.
 #: ../share/levels/contrib.set:1
@@ -1403,15 +1464,15 @@ msgstr "Steil"
 
 #: ../share/levels/contrib.set:4
 msgid "How do you stand up in the international tribe where no level"
-msgstr ""
+msgstr "Wie stehen Sie in der internationalen Stamm, wo kein Niveau"
 
 #: ../share/levels/contrib.set:5
 msgid "is like the other? This is a collection of levels created by"
-msgstr ""
+msgstr "wie der andere ist? Dies ist eine Sammlung von Ebenen von"
 
 #: ../share/levels/contrib.set:6
 msgid "different people all around the world. Enjoy!"
-msgstr ""
+msgstr " verschiedenen Menschen auf der ganzen Welt geschaffen. Viel Spaß!"
 
 #: ../share/levels/dn.set:1
 msgid "Strange"
@@ -1423,11 +1484,11 @@ msgstr "Der erste Fremde"
 
 #: ../share/levels/dn.set:4
 msgid "A strange set of levels with a strange name -"
-msgstr ""
+msgstr "Eine seltsame Reihe von Ebenen mit einem seltsamen Namen -"
 
 #: ../share/levels/dn.set:5
 msgid "All made by Francek."
-msgstr ""
+msgstr "Alles von Francek gemacht."
 
 #: ../share/levels/elite.set:1
 msgid "Elite"
@@ -1439,15 +1500,15 @@ msgstr "Burg"
 
 #: ../share/levels/elite.set:4
 msgid "This is a single level set consiting of a huge level made"
-msgstr ""
+msgstr "Dieses Levelset besteht aus einem riesigen Level von Dietrich Radel."
 
 #: ../share/levels/elite.set:5
 msgid "by Dietrich Radel. This classic will go down in history like"
-msgstr ""
+msgstr "Dieser Klassiker wird in die Geschichte eingehen wie \"Krieg und"
 
 #: ../share/levels/elite.set:6
 msgid "\"War and Peace\". ;-)"
-msgstr ""
+msgstr "Frieden\". ;-)"
 
 #: ../share/levels/fourSeasons.set:1
 msgid "The Four Seasons"
@@ -1460,6 +1521,7 @@ msgstr "Winter"
 #: ../share/levels/fourSeasons.set:4
 msgid "Play all year round! First comes the winter, then comes the..."
 msgstr ""
+"Spielen Sie das ganze Jahr über! Zuerst kommt der Winter, dann kommt der ..."
 
 #: ../share/levels/frg.set:1
 msgid "Great Escape"
@@ -1473,18 +1535,24 @@ msgstr "Aufwärmen"
 #: ../share/levels/frg.set:4
 msgid "Prepare for the real Marble Madness-like adventure in this game! "
 msgstr ""
+"Bereiten Sie sich auf das echte Marble Madness-ähnliche Abenteuer in diesem "
+"Spiel!"
 
 #: ../share/levels/frg.set:5
 msgid "Race down one of the many hills, and beat the time limit and avoid"
 msgstr ""
+"Rennen Sie einen der vielen Hügel hinunter, schlagen Sie die "
+"Zeitbegrenzung, "
 
 #: ../share/levels/frg.set:6
 msgid "badguys and hazards. Can you finish all the nine levels?"
 msgstr ""
+"und vermeiden Sie Bösewichten und Gefahren. Können Sie alle neun Ebenen "
+"beenden?"
 
 #: ../share/levels/frg.set:7
 msgid "Made by: Ulrik Enstad."
-msgstr ""
+msgstr "Hergestellt von: Ulrik Enstad."
 
 #: ../share/levels/jump.set:1 ../share/levels/lv5.scm:4
 msgid "Jump"
@@ -1496,15 +1564,15 @@ msgstr "Brücke"
 
 #: ../share/levels/jump.set:4
 msgid "A set of very difficult levels by Gerard Pudenz. Don't worry"
-msgstr ""
+msgstr "Eine Reihe von sehr schwierigen Ebenen von Gerard Pudenz."
 
 #: ../share/levels/jump.set:5
 msgid "if you can't make it on the first attempt. I promise, it can"
-msgstr ""
+msgstr "Keine Sorge, wenn Sie es nicht beim ersten Versuch machen."
 
 #: ../share/levels/jump.set:6
 msgid "be done eventually!"
-msgstr ""
+msgstr "Ich verspreche, es kann letztendlich gemacht werden!"
 
 #: ../share/levels/ki.set:1
 msgid "Kidz"
@@ -1516,15 +1584,15 @@ msgstr "Rechte Winkel"
 
 #: ../share/levels/ki.set:4
 msgid "This is meant to be a very easy and basic level for ages 4-5."
-msgstr ""
+msgstr "Dies soll ein sehr einfaches Level für 4-5 Jahre sein."
 
 #: ../share/levels/ki.set:5
 msgid "Also, since I am a beginner at designing levels, I want to keep it"
-msgstr ""
+msgstr "Außerdem, da ich ein Anfänger beim Level-Design bin,"
 
 #: ../share/levels/ki.set:6
 msgid "simple at first. Made by Keith Winston."
-msgstr ""
+msgstr " will ich es zuerst einfach halten. Hergestellt von Keith Winston."
 
 #: ../share/levels/lv.set:1
 msgid "A long way home"
@@ -1532,19 +1600,19 @@ msgstr "Der lange Weg nach Hause"
 
 #: ../share/levels/lv.set:4
 msgid "This is the original levelset for Trackballs containing"
-msgstr ""
+msgstr "Dies ist der ursprüngliche Levelsatz für Trackballs mit 9 Ebenen"
 
 #: ../share/levels/lv.set:5
 msgid "9 levels of varying difficulty. It does not have any"
-msgstr ""
+msgstr "unterschiedlicher Schwierigkeit. Es hat kein zentrales Thema"
 
 #: ../share/levels/lv.set:6
 msgid "central theme and is meant to show most features of the game."
-msgstr ""
+msgstr "und soll die meisten Funktionen des Spiels zeigen."
 
 #: ../share/levels/lv.set:8
 msgid "By: Mathias Broxvall"
-msgstr ""
+msgstr "Von: Mathias Broxvall"
 
 #: ../share/levels/mhm.set:1
 msgid "Marble Mayhem"
@@ -1556,11 +1624,11 @@ msgstr "Spionierende Bälle"
 
 #: ../share/levels/mhm.set:4
 msgid "A set of three skillfully made levels by Warren D Ober."
-msgstr ""
+msgstr "Ein Satz von drei gekonnten Leveln von Warren D Ober."
 
 #: ../share/levels/mhm.set:5
 msgid "May the mayhem begin!"
-msgstr ""
+msgstr "Möge das Chaos beginnen!"
 
 #: ../share/levels/motion1.set:1 ../share/levels/motion1.scm:1
 msgid "Pendulum Motion"
@@ -1572,11 +1640,11 @@ msgstr "Bewegung Einz"
 
 #: ../share/levels/motion1.set:4
 msgid "This is a single level in a level set by Warren D. Ober."
-msgstr ""
+msgstr "Dies ist eine einzelne Ebene von Warren D. Ober."
 
 #: ../share/levels/motion1.set:5
 msgid "Be prepared for some fast paced action here."
-msgstr ""
+msgstr "Erwarten Sie hier einige schnelle Action."
 
 #: ../share/levels/sl.set:1
 msgid "Six Levels"
@@ -1588,23 +1656,23 @@ msgstr "Die Wüste"
 
 #: ../share/levels/sl.set:4
 msgid "\"Six Levels\" is, of course,"
-msgstr ""
+msgstr "\"Sechs Levels\" ist, natürlich, ein Levelset mit sechs Levels."
 
 #: ../share/levels/sl.set:5
 msgid "a level set containing six levels. Prepare to scale mountains,"
-msgstr ""
+msgstr "Bereiten Sie sich darauf vor, Berge zu skalieren, Bosse zu"
 
 #: ../share/levels/sl.set:6
 msgid "kill bosses, roll through the world's longest pipe and"
-msgstr ""
+msgstr "töten, durch das längste Rohr der Welt zu rollen, und vieles "
 
 #: ../share/levels/sl.set:7
 msgid "much more. Can you beat all the six levels?"
-msgstr ""
+msgstr "mehr. Können Sie alle sechs Ebenen bestehen?"
 
 #: ../share/levels/sl.set:8
 msgid "Made By Ulrik Enstad, ulrik.enstad at gmail.com"
-msgstr ""
+msgstr "Hergestellt von Ulrik Enstad, ulrik.enstad at gmail.com"
 
 #: ../share/levels/bonusb.scm:1
 msgid "Bonus Level"
diff --git a/po/fr.po b/po/fr.po
index c2e2ea4..6a8a554 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,25 +7,25 @@ msgid ""
 msgstr ""
 "Project-Id-Version: fr\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-06-25 17:46-0400\n"
-"PO-Revision-Date: 2017-06-28 17:13-0400\n"
+"POT-Creation-Date: 2017-10-14 23:50-0400\n"
+"PO-Revision-Date: 2017-09-04 09:46-0400\n"
 "Last-Translator: Guillaume Bedot <littletux at zarb.org>\n"
 "Language-Team: Français >\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.2\n"
+"X-Generator: Poedit 2.0.3\n"
 
-#: ../src/calibrateJoystickMode.cc:94
+#: ../src/calibrateJoystickMode.cc:105
 msgid "Calibrating Joystick"
 msgstr "Calibration de la manette de jeu"
 
-#: ../src/calibrateJoystickMode.cc:103
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Center joystick"
 msgstr "Centre de la manette"
 
-#: ../src/calibrateJoystickMode.cc:107
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Move joystick left"
 msgstr "Gauche de la manette"
 
@@ -33,28 +33,28 @@ msgstr "Gauche de la manette"
 msgid "Move joystick right"
 msgstr "Droite de la manette"
 
-#: ../src/calibrateJoystickMode.cc:115
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick up"
 msgstr "Haut de la manette"
 
-#: ../src/calibrateJoystickMode.cc:119
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick down"
 msgstr "Bas de la manette"
 
-#: ../src/calibrateJoystickMode.cc:123
+#: ../src/calibrateJoystickMode.cc:118
 msgid "Press any button to continue"
 msgstr "Pressez un bouton pour continuer"
 
-#: ../src/calibrateJoystickMode.cc:125
+#: ../src/calibrateJoystickMode.cc:120
 msgid "Press escape to cancel"
 msgstr "Pressez Échap. pour annuler"
 
-#: ../src/calibrateJoystickMode.cc:128
+#: ../src/calibrateJoystickMode.cc:122
 #, c-format
 msgid "now: %d %d"
 msgstr "maintenant: %d %d"
 
-#: ../src/calibrateJoystickMode.cc:133
+#: ../src/calibrateJoystickMode.cc:127
 #, c-format
 msgid "center: %d %d left: %d right: %d up: %d down: %d"
 msgstr "centre: %d %d gauche: %d droite: %d haut: %d bas: %d"
@@ -561,17 +561,17 @@ msgid "Quit without saving?"
 msgstr "Quitter sans enregistrer ?"
 
 #: ../src/editWindows.cc:361 ../src/editWindows.cc:400
-#: ../src/editWindows.cc:447 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:175
-#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:447 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:177
+#: ../src/settingsMode.cc:179 ../src/settingsMode.cc:189
 msgid "Yes"
 msgstr "Oui"
 
 #: ../src/editWindows.cc:362 ../src/editWindows.cc:401
-#: ../src/editWindows.cc:448 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:136
-#: ../src/settingsMode.cc:175 ../src/settingsMode.cc:177
-#: ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:448 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:138
+#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:179
+#: ../src/settingsMode.cc:189
 #, c-format
 msgid "No"
 msgstr "Non"
@@ -605,12 +605,16 @@ msgstr "Ouvrir une carte"
 msgid "page %d / %d"
 msgstr "page %d / %d"
 
-#: ../src/enterHighScoreMode.cc:54
+#: ../src/enterHighScoreMode.cc:59
+msgid "High Score"
+msgstr "Score Élevé"
+
+#: ../src/enterHighScoreMode.cc:63
 #, c-format
 msgid "You got %d points"
 msgstr "Vous avez %d points"
 
-#: ../src/enterHighScoreMode.cc:59
+#: ../src/enterHighScoreMode.cc:66
 #, c-format
 msgid "Enter your name: %s"
 msgstr "Entrez votre nom: %s"
@@ -619,179 +623,203 @@ msgstr "Entrez votre nom: %s"
 msgid "John Doe"
 msgstr "Jean Dupont"
 
-#: ../src/glHelp.cc:1266
+#: ../src/glHelp.cc:1264
 #, c-format
 msgid "Framerate: %.1f"
 msgstr "Images/sec: %.1f"
 
-#: ../src/glHelp.cc:1268
+#: ../src/glHelp.cc:1266
 #, c-format
 msgid "Framerate unknown"
 msgstr "Taux d'images par seconde inconnu"
 
-#: ../src/glHelp.cc:1270
+#: ../src/glHelp.cc:1268
 #, c-format
 msgid "%.1f ms/Frame"
 msgstr "%.1f ms/Image"
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:183
 msgid "Your marble:"
 msgstr "Votre boule :"
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:184
 msgid "Steer this with your mouse, numpad or arrows. "
 msgstr "Déplacez-la avec la souris, le pave numérique ou les flèches. "
 
-#: ../src/helpMode.cc:113
+#: ../src/helpMode.cc:185
 msgid "Left mouse or spacebar is jump."
 msgstr "Le bouton gauche de la souris ou espace pour sauter."
 
-#: ../src/helpMode.cc:114
+#: ../src/helpMode.cc:186
 msgid "Shift gives top speed when using keyboard."
 msgstr "Maj donne de la vitesse quand on utilise le clavier."
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:188
 msgid "Mr Black:"
 msgstr "M. Black:"
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:189
 msgid "Your enemy. Defeat with Modpill - Spike."
 msgstr "Votre ennemi. Détruisez-le avec une pilule piquante."
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:191
 msgid "Modpill Speed:"
 msgstr "Pilule de vitesse:"
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:192
 msgid "Makes you go faster for short period of time."
 msgstr "Augmente votre vitesse de déplacement temporairement."
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:194
 msgid "Modpill Spikes:"
 msgstr "Pilule piquante:"
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:195
 msgid "Weapon against Mr Black and grip for icy terrain."
 msgstr "Arme contre M. Black et utile sur terrain glissant."
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:198
 msgid "Modpill Freeze:"
 msgstr "Pilule de glace:"
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:199
 msgid "This will freeze you - avoid it."
 msgstr "Celle-ci vous congèle. Évitez-la."
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:201
 msgid "Modpill Glass:"
 msgstr "Pilule de verre:"
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:202
 msgid "Protects you from acid, but makes you more fragile."
 msgstr "Vous protège de l'acide, mais vous rend plus fragile."
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:204
 msgid "Modpill Nitro:"
 msgstr "Pilule de nitro:"
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:205
 msgid "Move really fast. Active nitro with second button."
 msgstr ""
 "Activée avec le second bouton, elle permet des déplacements très rapides."
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:207
 msgid "Switch:"
 msgstr "Interrupteur:"
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:208
 msgid "Activates/deactivates some object/element in the level."
 msgstr "Active/désactive un objet ou élément du niveau."
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:211
 msgid "Moving spike:"
 msgstr "Pics mouvant:"
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:212
 msgid "Obstacle to avoid."
 msgstr "Obstacle a eviter."
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:214
 msgid "Flag:"
 msgstr "Drapeau:"
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:215
 msgid "Collect for bonus points."
 msgstr "Donne des points bonus."
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:218
 msgid "Normal terrain:"
 msgstr "Terrain normal:"
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:219
 msgid "Can be of any color and is safe to move on."
 msgstr "Peut être de diverses couleurs, et est sans danger."
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:221
 msgid "Acid terrain:"
 msgstr "Terrain acide:"
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:222
 msgid "Will kill your marble unless you have a glass modpill."
 msgstr "Tue votre boule a moins que vous ayez pris une pilule de verre."
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:225
 msgid "Icy terrain:"
 msgstr "Terrain gelé:"
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:226
 msgid "Slippery terrain unless you have a spikes modpill."
 msgstr "Terrain glissant a moins que vous ayez pris une pilule piquante."
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:228
 msgid "Sandy terrain:"
 msgstr "Terrain ensable:"
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:229
 msgid "Soft to land on but will slow you down."
 msgstr "Mou pour atterrir mais ralentit les déplacements."
 
-#: ../src/helpMode.cc:128
+#: ../src/helpMode.cc:232
 msgid "Goal:"
 msgstr "But:"
 
-#: ../src/helpMode.cc:128
-msgid "Will take you to the next level. "
+#: ../src/helpMode.cc:233
+msgid "Will take you to the next level."
 msgstr "Vous amène au niveau suivant."
 
-#: ../src/helpMode.cc:129
+#: ../src/helpMode.cc:234
 msgid "Get here before time runs out."
 msgstr "Allez-y avant que le temps soit écoulé."
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:237
 msgid "Force Field:"
 msgstr "Champ de force:"
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:238
 msgid "You cannot pass this unless you switch it off."
 msgstr "Vous ne pouvez pas passer sans le désactiver."
 
-#: ../src/helpMode.cc:131
+#: ../src/helpMode.cc:239
 msgid "Some are lethal and some are one way."
 msgstr "Certains sont mortels, d'autres a sens unique."
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:242
+msgid "Cactus:"
+msgstr "Cactus:"
+
+#: ../src/helpMode.cc:243
+msgid "Spiky plant, lethal unless you have a spikes modpill."
+msgstr "Plante hérissés, mortelle à moins que vous avez des pointes vous-même."
+
+#: ../src/helpMode.cc:246
+msgid "Bird:"
+msgstr "Oiseau:"
+
+#: ../src/helpMode.cc:247
+msgid "Kills balls it flies across unless they have spikes."
+msgstr "Tue balles il vole à travers à moins qu'ils ont des pointes."
+
+#: ../src/helpMode.cc:250
+msgid "Teleport:"
+msgstr "Téléporteur:"
+
+#: ../src/helpMode.cc:251
+msgid "Will send your marble somewhere else."
+msgstr "Il enverra votre marbre ailleurs."
+
+#: ../src/helpMode.cc:254
 msgid "Tunnel:"
 msgstr "Tunnel:"
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:255
 msgid "Takes you places, sometimes with great speed."
 msgstr "Vous amène a un autre endroit, parfois très rapidement."
 
-#: ../src/helpMode.cc:156
+#: ../src/helpMode.cc:285
 msgid "More Help"
 msgstr "Plus d'aide"
 
-#: ../src/helpMode.cc:158 ../src/settingsMode.cc:239
+#: ../src/helpMode.cc:287 ../src/hofMode.cc:107 ../src/settingsMode.cc:242
 msgid "Back"
 msgstr "Retour"
 
@@ -800,11 +828,15 @@ msgstr "Retour"
 msgid "Anonymous Coward"
 msgstr "Lâche anonyme"
 
-#: ../src/hofMode.cc:108 ../src/setupMode.cc:159
+#: ../src/hofMode.cc:89
+msgid "High Scores"
+msgstr "Scores Élevés"
+
+#: ../src/hofMode.cc:92 ../src/setupMode.cc:212
 msgid "Level Set"
 msgstr "Groupe de niveaux"
 
-#: ../src/hofMode.cc:118
+#: ../src/hofMode.cc:101
 #, c-format
 msgid "%d points"
 msgstr "%d points"
@@ -855,46 +887,58 @@ msgstr "Vous avez termine le jeu !"
 msgid "Good luck!"
 msgstr "Bonne chance !"
 
-#: ../src/mainMode.cc:635
+#: ../src/mainMode.cc:581
+msgid "Lives"
+msgstr "Vies"
+
+#: ../src/mainMode.cc:581
+msgid "Score"
+msgstr "Points"
+
+#: ../src/mainMode.cc:581
+msgid "Time left"
+msgstr "Temps"
+
+#: ../src/mainMode.cc:653
 #, c-format
 msgid "Level bonuses"
 msgstr "Niveaux bonus"
 
-#: ../src/mainMode.cc:637
+#: ../src/mainMode.cc:655
 #, c-format
 msgid "Lives left:"
 msgstr "Vies restantes:"
 
-#: ../src/mainMode.cc:638
+#: ../src/mainMode.cc:656
 #, c-format
 msgid "%d x 100 = %d points"
 msgstr "%d x 100 = %d points"
 
-#: ../src/mainMode.cc:639
+#: ../src/mainMode.cc:657
 #, c-format
 msgid "Time left:"
 msgstr "Temps restant:"
 
-#: ../src/mainMode.cc:640
+#: ../src/mainMode.cc:658
 #, c-format
 msgid "%d minutes = %d points"
 msgstr "%d minutes = %d points"
 
-#: ../src/mainMode.cc:642
+#: ../src/mainMode.cc:660
 #, c-format
 msgid "Difficulty:"
 msgstr "Difficulté:"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "easy"
 msgstr "facile"
 
-#: ../src/mainMode.cc:644 ../src/settingsMode.cc:197
+#: ../src/mainMode.cc:662 ../src/settingsMode.cc:199
 #, c-format
 msgid "normal"
 msgstr "normale"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "hard"
 msgstr "difficile"
 
@@ -950,99 +994,99 @@ msgstr "Aide"
 msgid "Map Editor"
 msgstr "Éditeur de cartes"
 
-#: ../src/mmad.cc:215
+#: ../src/mmad.cc:214
 msgid "Usage:"
 msgstr "Utilisation:"
 
-#: ../src/mmad.cc:216
+#: ../src/mmad.cc:215
 msgid "[-w, -m] [-e, -l -t <level>] [-r <width>] [-s <sensitivity>]"
 msgstr "[-w, -m] [-e, -l -t <niveau>] [-r <largeur>] [-s <sensibilite>]"
 
-#: ../src/mmad.cc:218
+#: ../src/mmad.cc:217
 msgid "Display this usage information."
 msgstr "Affiche ce message d'aide."
 
-#: ../src/mmad.cc:219
+#: ../src/mmad.cc:218
 msgid "Start from level."
 msgstr "Commencer à partir du niveau."
 
-#: ../src/mmad.cc:220
+#: ../src/mmad.cc:219
 msgid "Run in window (Default is fullscreen)"
 msgstr "Mode fenêtre (plein écran par défaut)"
 
-#: ../src/mmad.cc:221
+#: ../src/mmad.cc:220
 msgid "Mute sound."
 msgstr "Son muet."
 
-#: ../src/mmad.cc:222
+#: ../src/mmad.cc:221
 msgid "Set resolution to 640, 800 or 1024"
 msgstr "Définit la résolution a 640, 800 ou 1024"
 
-#: ../src/mmad.cc:223
+#: ../src/mmad.cc:222
 msgid "Mouse sensitivity, default 1.0"
 msgstr "Sensibilité de la souris, 1.0 par défaut"
 
-#: ../src/mmad.cc:224
+#: ../src/mmad.cc:223
 msgid "Displays framerate"
 msgstr "Affiche le taux d'image"
 
-#: ../src/mmad.cc:225
+#: ../src/mmad.cc:224
 msgid "Prints current version number"
 msgstr "Affiche la version courante"
 
-#: ../src/mmad.cc:226
+#: ../src/mmad.cc:225
 msgid "Updates a map to the latest format"
 msgstr "Met a jour une carte vers le format actuel"
 
-#: ../src/mmad.cc:227
+#: ../src/mmad.cc:226
 msgid "Attempt to conserve memory usage"
 msgstr "Essaie de limiter l'utilisation de mémoire"
 
-#: ../src/mmad.cc:228
+#: ../src/mmad.cc:227
 msgid "Debug joystick status"
 msgstr "Déboguer les manettes"
 
-#: ../src/mmad.cc:229
+#: ../src/mmad.cc:228
 msgid "Correct for bad joysticks"
 msgstr "Pour certaines (mauvaises) manettes de jeu"
 
-#: ../src/mmad.cc:233
+#: ../src/mmad.cc:232
 msgid "Important keyboard shortcuts"
 msgstr "Raccourcis clavier importants:"
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Escape"
 msgstr "Échap."
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Soft quit"
 msgstr "Quitter doucement"
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "CapsLock"
 msgstr "VerrMaj"
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "Unhide mouse pointer"
 msgstr "Révéler le pointeur de la souris"
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "CTRL-q"
 msgstr "CTRL-q"
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "Quit the game immediately"
 msgstr "Quitter le jeu immédiatement"
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "CTRL-f"
 msgstr "CTRL-f"
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "Toggle between fullscreen/windowed mode"
 msgstr "Basculer entre le mode plein écran / fenêtré"
 
-#: ../src/mmad.cc:238
+#: ../src/mmad.cc:237
 msgid "Kill the ball"
 msgstr "Tuer la balle"
 
@@ -1060,281 +1104,281 @@ msgstr "Bienvenue dans Trackballs."
 msgid "Using %s as gamedata directory."
 msgstr "Utilise %s comme répertoire de données."
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Speed ball"
 msgstr "Vitesse"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Extra jump"
 msgstr "Saut supplémentaire"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Spikes"
 msgstr "Piquante"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Glass ball"
 msgstr "Balle de verre"
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Dizzy!"
 msgstr "Pris de vertige!"
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Freeze!"
 msgstr "Glacé!"
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Floating"
 msgstr "Flottant"
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Extra life"
 msgstr "Vie supplémentaire"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Small ball"
 msgstr "Petite balle"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Large ball"
 msgstr "Grande balle"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Nitro"
 msgstr "Nitro"
 
-#: ../src/settingsMode.cc:82
+#: ../src/settingsMode.cc:84
 msgid "Game Settings"
 msgstr "Paramètres de jeu"
 
-#: ../src/settingsMode.cc:92
+#: ../src/settingsMode.cc:94
 #, c-format
 msgid "Is resolution %dx%dx%d ok?"
 msgstr "La résolution %dx%dx%d est-elle acceptable?"
 
-#: ../src/settingsMode.cc:95
+#: ../src/settingsMode.cc:97
 #, c-format
 msgid "Is resolution Auto-%d ok?"
 msgstr "La résolution Auto-%d est-elle acceptable?"
 
-#: ../src/settingsMode.cc:99
+#: ../src/settingsMode.cc:101
 msgid "Ok, use this resolution"
 msgstr "Oui, utilisez cette résolution"
 
-#: ../src/settingsMode.cc:100
+#: ../src/settingsMode.cc:102
 msgid "No, revert to old resolution"
 msgstr "Non, revenir à l'ancienne résolution"
 
-#: ../src/settingsMode.cc:102
+#: ../src/settingsMode.cc:104
 #, c-format
 msgid "Timeout in %d seconds"
 msgstr "Délai d'attente en %d secondes"
 
-#: ../src/settingsMode.cc:114
+#: ../src/settingsMode.cc:116
 msgid "Video"
 msgstr "Vidéo"
 
-#: ../src/settingsMode.cc:121
+#: ../src/settingsMode.cc:123
 #, c-format
 msgid "Auto-%d"
 msgstr "Auto-%d"
 
-#: ../src/settingsMode.cc:123
+#: ../src/settingsMode.cc:125
 msgid "Resolution"
 msgstr "Résolution"
 
-#: ../src/settingsMode.cc:124
+#: ../src/settingsMode.cc:126
 msgid "Test this resolution"
 msgstr "Testez cette résolution"
 
-#: ../src/settingsMode.cc:127
+#: ../src/settingsMode.cc:129
 msgid "Fullscreen"
 msgstr "Plein écran"
 
-#: ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:132
 msgid "VSync"
 msgstr "VSYNC"
 
-#: ../src/settingsMode.cc:139
+#: ../src/settingsMode.cc:141
 #, c-format
 msgid "Frame rate"
 msgstr "Taux d'images"
 
-#: ../src/settingsMode.cc:142
+#: ../src/settingsMode.cc:144
 #, c-format
 msgid "Frame time"
 msgstr "Temps d'image"
 
-#: ../src/settingsMode.cc:145
+#: ../src/settingsMode.cc:147
 msgid "Show FPS"
 msgstr "Montrer les IPS"
 
-#: ../src/settingsMode.cc:150
+#: ../src/settingsMode.cc:152
 msgid "Graphics"
 msgstr "Graphismes"
 
-#: ../src/settingsMode.cc:155
+#: ../src/settingsMode.cc:157
 #, c-format
 msgid "None"
 msgstr "Aucun"
 
-#: ../src/settingsMode.cc:158
+#: ../src/settingsMode.cc:160
 #, c-format
 msgid "Minimalistic"
 msgstr "Minimalistes"
 
-#: ../src/settingsMode.cc:161
+#: ../src/settingsMode.cc:163
 #, c-format
 msgid "Simple"
 msgstr "Simples"
 
-#: ../src/settingsMode.cc:164
+#: ../src/settingsMode.cc:166
 #, c-format
 msgid "Standard"
 msgstr "Standard"
 
-#: ../src/settingsMode.cc:167
+#: ../src/settingsMode.cc:169
 #, c-format
 msgid "Extra"
 msgstr "Extra"
 
-#: ../src/settingsMode.cc:170
+#: ../src/settingsMode.cc:172
 #, c-format
 msgid "Everything"
 msgstr "Tout"
 
-#: ../src/settingsMode.cc:173
+#: ../src/settingsMode.cc:175
 msgid "Details"
 msgstr "Détails"
 
-#: ../src/settingsMode.cc:174
+#: ../src/settingsMode.cc:176
 msgid "Reflections"
 msgstr "Réflexions"
 
-#: ../src/settingsMode.cc:176
+#: ../src/settingsMode.cc:178
 msgid "Shadows"
 msgstr "Ombres"
 
-#: ../src/settingsMode.cc:183
+#: ../src/settingsMode.cc:185
 msgid "Controls"
 msgstr "Contrôles"
 
-#: ../src/settingsMode.cc:186
+#: ../src/settingsMode.cc:188
 msgid "Use mouse"
 msgstr "Utiliser la souris"
 
-#: ../src/settingsMode.cc:192
+#: ../src/settingsMode.cc:194
 msgid "Sensitivity"
 msgstr "Sensibilité"
 
-#: ../src/settingsMode.cc:199
+#: ../src/settingsMode.cc:201
 #, c-format
 msgid "+%d degrees"
 msgstr "+%d degrés"
 
-#: ../src/settingsMode.cc:201
+#: ../src/settingsMode.cc:203
 #, c-format
 msgid "-%d degrees"
 msgstr "-%d degrés"
 
-#: ../src/settingsMode.cc:202
+#: ../src/settingsMode.cc:204
 msgid "Steering"
 msgstr "Direction"
 
-#: ../src/settingsMode.cc:209
+#: ../src/settingsMode.cc:211
 #, c-format
 msgid "no joystick found"
 msgstr "Aucun joystick n'a été trouvé"
 
-#: ../src/settingsMode.cc:213
+#: ../src/settingsMode.cc:215
 msgid "Joystick:"
 msgstr "Manette de jeu:"
 
-#: ../src/settingsMode.cc:223
+#: ../src/settingsMode.cc:225
 msgid "Other"
 msgstr "Autre"
 
-#: ../src/settingsMode.cc:227
+#: ../src/settingsMode.cc:229
 msgid "Music volume"
 msgstr "Volume de la musique"
 
-#: ../src/settingsMode.cc:229
+#: ../src/settingsMode.cc:231
 msgid "Effects volume"
 msgstr "Volume des effets"
 
-#: ../src/settingsMode.cc:231
+#: ../src/settingsMode.cc:233
 msgid "Language"
 msgstr "Langage"
 
-#: ../src/setupMode.cc:151
+#: ../src/setupMode.cc:203
 msgid "Setup new game"
 msgstr "Configurer un nouveau jeu"
 
-#: ../src/setupMode.cc:155
+#: ../src/setupMode.cc:208
 msgid "Player Name"
 msgstr "Nom du joueur"
 
-#: ../src/setupMode.cc:161
+#: ../src/setupMode.cc:214
 msgid "N/A"
 msgstr "ND"
 
-#: ../src/setupMode.cc:167
+#: ../src/setupMode.cc:220
 msgid "Level"
 msgstr "Niveau"
 
-#: ../src/setupMode.cc:175
+#: ../src/setupMode.cc:228
 msgid "Difficulty"
 msgstr "Difficulté"
 
-#: ../src/setupMode.cc:180
+#: ../src/setupMode.cc:232
 msgid "Sandbox (Easy)"
 msgstr "Contrôle (Facile)"
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Normal)"
 msgstr "Contrôle (Normale)"
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Hard)"
 msgstr "Contrôle (Difficile)"
 
-#: ../src/setupMode.cc:183
+#: ../src/setupMode.cc:235
 msgid "Easy"
 msgstr "Facile"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Normal"
 msgstr "Normale"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Hard"
 msgstr "Difficile"
 
-#: ../src/setupMode.cc:188
-msgid "Start Game"
-msgstr "Commencer une partie"
-
-#: ../src/setupMode.cc:192
+#: ../src/setupMode.cc:241
 #, c-format
 msgid "Total games played: %d"
 msgstr "Nombre de partie jouées : %d"
 
-#: ../src/setupMode.cc:196
+#: ../src/setupMode.cc:245
 #, c-format
 msgid "Average score: %d"
 msgstr "Score moyen : %d"
 
-#: ../src/setupMode.cc:198
+#: ../src/setupMode.cc:247
 #, c-format
 msgid "Average score: N/A"
 msgstr "Score moyen : N/A"
 
-#: ../src/setupMode.cc:201
+#: ../src/setupMode.cc:250
 #, c-format
 msgid "Levels completed: %d"
 msgstr "Niveaux terminés : %d"
 
+#: ../src/setupMode.cc:262
+msgid "Start Game"
+msgstr "Commencer une partie"
+
 #: ../share/levels/bx.set:1 ../share/levels/bx1.scm:4
 msgid "Box-O'-Fun"
 msgstr "Boîte d'amusement"
diff --git a/po/hu.po b/po/hu.po
index c48c679..ddfd995 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 1.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-06-25 20:27-0400\n"
+"POT-Creation-Date: 2017-10-14 23:50-0400\n"
 "PO-Revision-Date: 2017-06-25 20:05-0400\n"
 "Last-Translator: Attila Boros <wraith13 at gmail dot com>\n"
 "Language-Team: Hungarian\n"
@@ -19,15 +19,15 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 2.0.2\n"
 
-#: ../src/calibrateJoystickMode.cc:94
+#: ../src/calibrateJoystickMode.cc:105
 msgid "Calibrating Joystick"
 msgstr "Botkormány beállítása"
 
-#: ../src/calibrateJoystickMode.cc:103
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Center joystick"
 msgstr "Botkormányt középre"
 
-#: ../src/calibrateJoystickMode.cc:107
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Move joystick left"
 msgstr "Botkormányt balra"
 
@@ -35,28 +35,28 @@ msgstr "Botkormányt balra"
 msgid "Move joystick right"
 msgstr "Botkormányt jobbra"
 
-#: ../src/calibrateJoystickMode.cc:115
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick up"
 msgstr "Botkormányt fel"
 
-#: ../src/calibrateJoystickMode.cc:119
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick down"
 msgstr "Botkormányt le"
 
-#: ../src/calibrateJoystickMode.cc:123
+#: ../src/calibrateJoystickMode.cc:118
 msgid "Press any button to continue"
 msgstr "Folytatás bármely gomb megnyomásával"
 
-#: ../src/calibrateJoystickMode.cc:125
+#: ../src/calibrateJoystickMode.cc:120
 msgid "Press escape to cancel"
 msgstr "Esc: Kilépés"
 
-#: ../src/calibrateJoystickMode.cc:128
+#: ../src/calibrateJoystickMode.cc:122
 #, c-format
 msgid "now: %d %d"
 msgstr "most: %d %d"
 
-#: ../src/calibrateJoystickMode.cc:133
+#: ../src/calibrateJoystickMode.cc:127
 #, c-format
 msgid "center: %d %d left: %d right: %d up: %d down: %d"
 msgstr "közép: %d %d bal: %d jobb: %d fel: %d le: %d"
@@ -583,17 +583,17 @@ msgid "Quit without saving?"
 msgstr "Kilépés mentés nélkül?"
 
 #: ../src/editWindows.cc:361 ../src/editWindows.cc:400
-#: ../src/editWindows.cc:447 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:175
-#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:447 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:177
+#: ../src/settingsMode.cc:179 ../src/settingsMode.cc:189
 msgid "Yes"
 msgstr "Igen"
 
 #: ../src/editWindows.cc:362 ../src/editWindows.cc:401
-#: ../src/editWindows.cc:448 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:136
-#: ../src/settingsMode.cc:175 ../src/settingsMode.cc:177
-#: ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:448 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:138
+#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:179
+#: ../src/settingsMode.cc:189
 #, c-format
 msgid "No"
 msgstr "Nem"
@@ -628,12 +628,16 @@ msgstr "Pálya megnyitása"
 msgid "page %d / %d"
 msgstr "oldal %d / %d"
 
-#: ../src/enterHighScoreMode.cc:54
+#: ../src/enterHighScoreMode.cc:59
+msgid "High Score"
+msgstr ""
+
+#: ../src/enterHighScoreMode.cc:63
 #, fuzzy, c-format
 msgid "You got %d points"
 msgstr "%d pont"
 
-#: ../src/enterHighScoreMode.cc:59
+#: ../src/enterHighScoreMode.cc:66
 #, c-format
 msgid "Enter your name: %s"
 msgstr ""
@@ -642,178 +646,204 @@ msgstr ""
 msgid "John Doe"
 msgstr ""
 
-#: ../src/glHelp.cc:1266
+#: ../src/glHelp.cc:1264
 #, c-format
 msgid "Framerate: %.1f"
 msgstr "Képfrissítés: %.1f"
 
-#: ../src/glHelp.cc:1268
+#: ../src/glHelp.cc:1266
 #, c-format
 msgid "Framerate unknown"
 msgstr "Ismeretlen képfrissítés"
 
-#: ../src/glHelp.cc:1270
+#: ../src/glHelp.cc:1268
 #, c-format
 msgid "%.1f ms/Frame"
 msgstr ""
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:183
 msgid "Your marble:"
 msgstr "A labdád:"
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:184
 msgid "Steer this with your mouse, numpad or arrows. "
 msgstr "Görgesd az egérrel, numerikus billentyűkkel vagy a nyilakkal. "
 
-#: ../src/helpMode.cc:113
+#: ../src/helpMode.cc:185
 msgid "Left mouse or spacebar is jump."
 msgstr "Ugrás a bal egérgombbal vagy a szóközzel."
 
-#: ../src/helpMode.cc:114
+#: ../src/helpMode.cc:186
 msgid "Shift gives top speed when using keyboard."
 msgstr "A Shift billentyű megnyomása max. sebességet eredményez."
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:188
 msgid "Mr Black:"
 msgstr "Mr Black:"
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:189
 msgid "Your enemy. Defeat with Modpill - Spike."
 msgstr "Az ellenség. Tüske módosítóval legyőzhető."
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:191
 msgid "Modpill Speed:"
 msgstr "Sebesség módosító:"
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:192
 msgid "Makes you go faster for short period of time."
 msgstr "Rövid ideig nagyobb sebesség."
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:194
 msgid "Modpill Spikes:"
 msgstr "Tüske módosító:"
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:195
 msgid "Weapon against Mr Black and grip for icy terrain."
 msgstr "Mr Black elleni fegyver és csúszásgátló jeges talajon."
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:198
 msgid "Modpill Freeze:"
 msgstr "Fagyasztás módosító:"
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:199
 msgid "This will freeze you - avoid it."
 msgstr "Lefagyaszt - óvakodj tőle."
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:201
 msgid "Modpill Glass:"
 msgstr "Üveg módosító:"
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:202
 msgid "Protects you from acid, but makes you more fragile."
 msgstr "Megvéd a savtól, de törékenyebbé tesz."
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:204
 msgid "Modpill Nitro:"
 msgstr "Nitro módosító:"
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:205
 msgid "Move really fast. Active nitro with second button."
 msgstr "Nagyon gyors mozgás. A második gombbal aktiválható."
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:207
 msgid "Switch:"
 msgstr "Kapcsoló:"
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:208
 msgid "Activates/deactivates some object/element in the level."
 msgstr "Bekacsol/kikapcsol valamilyen tárgyat a pályán."
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:211
 msgid "Moving spike:"
 msgstr "Mozgó tüske:"
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:212
 msgid "Obstacle to avoid."
 msgstr "Kerüld el."
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:214
 msgid "Flag:"
 msgstr "Zászló:"
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:215
 msgid "Collect for bonus points."
 msgstr "Bónusz pontokért gyűjthető."
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:218
 msgid "Normal terrain:"
 msgstr "Normál talaj:"
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:219
 msgid "Can be of any color and is safe to move on."
 msgstr "Bármilyen színű lehet, a rajta való mozgás biztonságos."
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:221
 msgid "Acid terrain:"
 msgstr "Savas terület:"
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:222
 msgid "Will kill your marble unless you have a glass modpill."
 msgstr "Üveg módosító nélkül elpusztítja a labdát."
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:225
 msgid "Icy terrain:"
 msgstr "Jeges talaj:"
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:226
 msgid "Slippery terrain unless you have a spikes modpill."
 msgstr "Csúszós tüske módosító nélkül "
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:228
 msgid "Sandy terrain:"
 msgstr "Homokos talaj:"
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:229
 msgid "Soft to land on but will slow you down."
 msgstr "Könnyű földet érést biztosít, de lelassít."
 
-#: ../src/helpMode.cc:128
+#: ../src/helpMode.cc:232
 msgid "Goal:"
 msgstr "Cél:"
 
-#: ../src/helpMode.cc:128
-msgid "Will take you to the next level. "
+#: ../src/helpMode.cc:233
+#, fuzzy
+msgid "Will take you to the next level."
 msgstr "A következő pályára juttat. "
 
-#: ../src/helpMode.cc:129
+#: ../src/helpMode.cc:234
 msgid "Get here before time runs out."
 msgstr "Ide kell jutni mielőtt az idő letelik."
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:237
 msgid "Force Field:"
 msgstr "Erőtér:"
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:238
 msgid "You cannot pass this unless you switch it off."
 msgstr "Kikapcsolása nélkül nem lehet rajta áthaladni."
 
-#: ../src/helpMode.cc:131
+#: ../src/helpMode.cc:239
 msgid "Some are lethal and some are one way."
 msgstr "Némelyik halálos, némelyik egyirányú."
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:242
+msgid "Cactus:"
+msgstr ""
+
+#: ../src/helpMode.cc:243
+#, fuzzy
+msgid "Spiky plant, lethal unless you have a spikes modpill."
+msgstr "Csúszós tüske módosító nélkül "
+
+#: ../src/helpMode.cc:246
+msgid "Bird:"
+msgstr ""
+
+#: ../src/helpMode.cc:247
+msgid "Kills balls it flies across unless they have spikes."
+msgstr ""
+
+#: ../src/helpMode.cc:250
+msgid "Teleport:"
+msgstr ""
+
+#: ../src/helpMode.cc:251
+msgid "Will send your marble somewhere else."
+msgstr ""
+
+#: ../src/helpMode.cc:254
 msgid "Tunnel:"
 msgstr "Cső:"
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:255
 msgid "Takes you places, sometimes with great speed."
 msgstr "Más helyre juttat, időnként nagy sebességgel."
 
-#: ../src/helpMode.cc:156
+#: ../src/helpMode.cc:285
 msgid "More Help"
 msgstr "További segítség"
 
-#: ../src/helpMode.cc:158 ../src/settingsMode.cc:239
+#: ../src/helpMode.cc:287 ../src/hofMode.cc:107 ../src/settingsMode.cc:242
 msgid "Back"
 msgstr "Vissza"
 
@@ -822,11 +852,15 @@ msgstr "Vissza"
 msgid "Anonymous Coward"
 msgstr ""
 
-#: ../src/hofMode.cc:108 ../src/setupMode.cc:159
+#: ../src/hofMode.cc:89
+msgid "High Scores"
+msgstr ""
+
+#: ../src/hofMode.cc:92 ../src/setupMode.cc:212
 msgid "Level Set"
 msgstr "Pályacsoport"
 
-#: ../src/hofMode.cc:118
+#: ../src/hofMode.cc:101
 #, c-format
 msgid "%d points"
 msgstr "%d pont"
@@ -877,46 +911,60 @@ msgstr "Teljesítetted a játékot"
 msgid "Good luck!"
 msgstr "Sok szerencsét!"
 
-#: ../src/mainMode.cc:635
+#: ../src/mainMode.cc:581
+#, fuzzy
+msgid "Lives"
+msgstr "Megmaradt életek:"
+
+#: ../src/mainMode.cc:581
+msgid "Score"
+msgstr ""
+
+#: ../src/mainMode.cc:581
+#, fuzzy
+msgid "Time left"
+msgstr "Hátralévő idő:"
+
+#: ../src/mainMode.cc:653
 #, c-format
 msgid "Level bonuses"
 msgstr "Pálya bónuszok"
 
-#: ../src/mainMode.cc:637
+#: ../src/mainMode.cc:655
 #, c-format
 msgid "Lives left:"
 msgstr "Megmaradt életek:"
 
-#: ../src/mainMode.cc:638
+#: ../src/mainMode.cc:656
 #, c-format
 msgid "%d x 100 = %d points"
 msgstr "%d x 100 = %d pont"
 
-#: ../src/mainMode.cc:639
+#: ../src/mainMode.cc:657
 #, c-format
 msgid "Time left:"
 msgstr "Hátralévő idő:"
 
-#: ../src/mainMode.cc:640
+#: ../src/mainMode.cc:658
 #, c-format
 msgid "%d minutes = %d points"
 msgstr "%d perc = %d pont"
 
-#: ../src/mainMode.cc:642
+#: ../src/mainMode.cc:660
 #, c-format
 msgid "Difficulty:"
 msgstr "Nehézségi szint:"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "easy"
 msgstr "könnyű"
 
-#: ../src/mainMode.cc:644 ../src/settingsMode.cc:197
+#: ../src/mainMode.cc:662 ../src/settingsMode.cc:199
 #, c-format
 msgid "normal"
 msgstr "normál"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "hard"
 msgstr "nehéz"
 
@@ -971,99 +1019,99 @@ msgstr "Súgó"
 msgid "Map Editor"
 msgstr "Pályaszerkesztő"
 
-#: ../src/mmad.cc:215
+#: ../src/mmad.cc:214
 msgid "Usage:"
 msgstr "Használat:"
 
-#: ../src/mmad.cc:216
+#: ../src/mmad.cc:215
 msgid "[-w, -m] [-e, -l -t <level>] [-r <width>] [-s <sensitivity>]"
 msgstr "[-w, -m] [-e, -l -t <pálya>] [-r <szélesség>] [-s <érzékenység>]"
 
-#: ../src/mmad.cc:218
+#: ../src/mmad.cc:217
 msgid "Display this usage information."
 msgstr "Megjeleníti ezt a használati útmutatót."
 
-#: ../src/mmad.cc:219
+#: ../src/mmad.cc:218
 msgid "Start from level."
 msgstr "Indítás pályától."
 
-#: ../src/mmad.cc:220
+#: ../src/mmad.cc:219
 msgid "Run in window (Default is fullscreen)"
 msgstr "Ablakban futtatás (teljes képernyős az alapértelmezett)"
 
-#: ../src/mmad.cc:221
+#: ../src/mmad.cc:220
 msgid "Mute sound."
 msgstr "Hang elnémítása."
 
-#: ../src/mmad.cc:222
+#: ../src/mmad.cc:221
 msgid "Set resolution to 640, 800 or 1024"
 msgstr "Felbontás beállítása 640, 800 vagy 1024 értékre."
 
-#: ../src/mmad.cc:223
+#: ../src/mmad.cc:222
 msgid "Mouse sensitivity, default 1.0"
 msgstr "Egér érzékenység, 1.0 az alapértelmezett."
 
-#: ../src/mmad.cc:224
+#: ../src/mmad.cc:223
 msgid "Displays framerate"
 msgstr ""
 
-#: ../src/mmad.cc:225
+#: ../src/mmad.cc:224
 msgid "Prints current version number"
 msgstr "Aktuális verziószám kiírása."
 
-#: ../src/mmad.cc:226
+#: ../src/mmad.cc:225
 msgid "Updates a map to the latest format"
 msgstr "Aktualizálja a pályát a legutóbbi formátumra."
 
-#: ../src/mmad.cc:227
+#: ../src/mmad.cc:226
 msgid "Attempt to conserve memory usage"
 msgstr "Kevesebb memóriát használ."
 
-#: ../src/mmad.cc:228
+#: ../src/mmad.cc:227
 msgid "Debug joystick status"
 msgstr ""
 
-#: ../src/mmad.cc:229
+#: ../src/mmad.cc:228
 msgid "Correct for bad joysticks"
 msgstr "Hibás botkormány javítása."
 
-#: ../src/mmad.cc:233
+#: ../src/mmad.cc:232
 msgid "Important keyboard shortcuts"
 msgstr "Fontos gyorsbillentyűk"
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Escape"
 msgstr "Escape"
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Soft quit"
 msgstr "Kilépés"
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "CapsLock"
 msgstr "Caps Lock"
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "Unhide mouse pointer"
 msgstr "Egérmutató megjelenítése"
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "CTRL-q"
 msgstr "CTRL-q"
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "Quit the game immediately"
 msgstr "Azonnali kilépés"
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "CTRL-f"
 msgstr "CTRL-f"
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "Toggle between fullscreen/windowed mode"
 msgstr "Váltás teljes képernyős/ablakos mód között"
 
-#: ../src/mmad.cc:238
+#: ../src/mmad.cc:237
 msgid "Kill the ball"
 msgstr "Játék feladása"
 
@@ -1081,286 +1129,286 @@ msgstr "Üdvözöllek a Trackballs játékban. "
 msgid "Using %s as gamedata directory."
 msgstr "%s használata adatkönyvtárnak."
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Speed ball"
 msgstr ""
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 #, fuzzy
 msgid "Extra jump"
 msgstr "Extra"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 #, fuzzy
 msgid "Spikes"
 msgstr "Tüske"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Glass ball"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Dizzy!"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Freeze!"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Floating"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 #, fuzzy
 msgid "Extra life"
 msgstr "Extra"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 #, fuzzy
 msgid "Small ball"
 msgstr "Kis domb"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 #, fuzzy
 msgid "Large ball"
 msgstr "Nagy domb"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Nitro"
 msgstr ""
 
-#: ../src/settingsMode.cc:82
+#: ../src/settingsMode.cc:84
 msgid "Game Settings"
 msgstr "Játék beállítások"
 
-#: ../src/settingsMode.cc:92
+#: ../src/settingsMode.cc:94
 #, c-format
 msgid "Is resolution %dx%dx%d ok?"
 msgstr "Rendben van a %dx%dx%d képernyőfelbontás?"
 
-#: ../src/settingsMode.cc:95
+#: ../src/settingsMode.cc:97
 #, fuzzy, c-format
 msgid "Is resolution Auto-%d ok?"
 msgstr "Rendben van a %dx%dx%d képernyőfelbontás?"
 
-#: ../src/settingsMode.cc:99
+#: ../src/settingsMode.cc:101
 msgid "Ok, use this resolution"
 msgstr "Rendben, használd ezt a felbontást"
 
-#: ../src/settingsMode.cc:100
+#: ../src/settingsMode.cc:102
 msgid "No, revert to old resolution"
 msgstr "Nem, visszatérés az előző felbontáshoz"
 
-#: ../src/settingsMode.cc:102
+#: ../src/settingsMode.cc:104
 #, c-format
 msgid "Timeout in %d seconds"
 msgstr "Lejár az idő %d másodperc múlva"
 
-#: ../src/settingsMode.cc:114
+#: ../src/settingsMode.cc:116
 msgid "Video"
 msgstr ""
 
-#: ../src/settingsMode.cc:121
+#: ../src/settingsMode.cc:123
 #, c-format
 msgid "Auto-%d"
 msgstr ""
 
-#: ../src/settingsMode.cc:123
+#: ../src/settingsMode.cc:125
 msgid "Resolution"
 msgstr "Felbontás"
 
-#: ../src/settingsMode.cc:124
+#: ../src/settingsMode.cc:126
 msgid "Test this resolution"
 msgstr "Ennek a felbontásnak a tesztelése"
 
-#: ../src/settingsMode.cc:127
+#: ../src/settingsMode.cc:129
 msgid "Fullscreen"
 msgstr "Teljes képernyő"
 
-#: ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:132
 msgid "VSync"
 msgstr ""
 
-#: ../src/settingsMode.cc:139
+#: ../src/settingsMode.cc:141
 #, c-format
 msgid "Frame rate"
 msgstr "Képfrissítés"
 
-#: ../src/settingsMode.cc:142
+#: ../src/settingsMode.cc:144
 #, c-format
 msgid "Frame time"
 msgstr ""
 
-#: ../src/settingsMode.cc:145
+#: ../src/settingsMode.cc:147
 msgid "Show FPS"
 msgstr "FPS mutatása"
 
-#: ../src/settingsMode.cc:150
+#: ../src/settingsMode.cc:152
 msgid "Graphics"
 msgstr "Grafika"
 
-#: ../src/settingsMode.cc:155
+#: ../src/settingsMode.cc:157
 #, c-format
 msgid "None"
 msgstr "Nincs"
 
-#: ../src/settingsMode.cc:158
+#: ../src/settingsMode.cc:160
 #, c-format
 msgid "Minimalistic"
 msgstr "Minimális"
 
-#: ../src/settingsMode.cc:161
+#: ../src/settingsMode.cc:163
 #, c-format
 msgid "Simple"
 msgstr "Egyszerű"
 
-#: ../src/settingsMode.cc:164
+#: ../src/settingsMode.cc:166
 #, c-format
 msgid "Standard"
 msgstr "Általános"
 
-#: ../src/settingsMode.cc:167
+#: ../src/settingsMode.cc:169
 #, c-format
 msgid "Extra"
 msgstr "Extra"
 
-#: ../src/settingsMode.cc:170
+#: ../src/settingsMode.cc:172
 #, c-format
 msgid "Everything"
 msgstr "Minden"
 
-#: ../src/settingsMode.cc:173
+#: ../src/settingsMode.cc:175
 msgid "Details"
 msgstr "Részletek"
 
-#: ../src/settingsMode.cc:174
+#: ../src/settingsMode.cc:176
 msgid "Reflections"
 msgstr "Tükröződés (beta)"
 
-#: ../src/settingsMode.cc:176
+#: ../src/settingsMode.cc:178
 msgid "Shadows"
 msgstr ""
 
-#: ../src/settingsMode.cc:183
+#: ../src/settingsMode.cc:185
 msgid "Controls"
 msgstr "Irányítás"
 
-#: ../src/settingsMode.cc:186
+#: ../src/settingsMode.cc:188
 msgid "Use mouse"
 msgstr "Egér használata"
 
-#: ../src/settingsMode.cc:192
+#: ../src/settingsMode.cc:194
 msgid "Sensitivity"
 msgstr "Érzékenység"
 
-#: ../src/settingsMode.cc:199
+#: ../src/settingsMode.cc:201
 #, c-format
 msgid "+%d degrees"
 msgstr "+%d fok"
 
-#: ../src/settingsMode.cc:201
+#: ../src/settingsMode.cc:203
 #, c-format
 msgid "-%d degrees"
 msgstr "-%d fok"
 
-#: ../src/settingsMode.cc:202
+#: ../src/settingsMode.cc:204
 msgid "Steering"
 msgstr "Kormányzás"
 
-#: ../src/settingsMode.cc:209
+#: ../src/settingsMode.cc:211
 #, c-format
 msgid "no joystick found"
 msgstr "Nem található botkormány"
 
-#: ../src/settingsMode.cc:213
+#: ../src/settingsMode.cc:215
 msgid "Joystick:"
 msgstr "Botkormány:"
 
-#: ../src/settingsMode.cc:223
+#: ../src/settingsMode.cc:225
 msgid "Other"
 msgstr "Egyebek"
 
-#: ../src/settingsMode.cc:227
+#: ../src/settingsMode.cc:229
 msgid "Music volume"
 msgstr "Zene hangereje"
 
-#: ../src/settingsMode.cc:229
+#: ../src/settingsMode.cc:231
 msgid "Effects volume"
 msgstr "Effektek hangereje"
 
-#: ../src/settingsMode.cc:231
+#: ../src/settingsMode.cc:233
 msgid "Language"
 msgstr "Nyelv"
 
-#: ../src/setupMode.cc:151
+#: ../src/setupMode.cc:203
 msgid "Setup new game"
 msgstr "Új játék beállítása"
 
-#: ../src/setupMode.cc:155
+#: ../src/setupMode.cc:208
 msgid "Player Name"
 msgstr "Játékos neve"
 
-#: ../src/setupMode.cc:161
+#: ../src/setupMode.cc:214
 msgid "N/A"
 msgstr "Nincs"
 
-#: ../src/setupMode.cc:167
+#: ../src/setupMode.cc:220
 msgid "Level"
 msgstr "Pálya"
 
-#: ../src/setupMode.cc:175
+#: ../src/setupMode.cc:228
 msgid "Difficulty"
 msgstr "Nehézség"
 
-#: ../src/setupMode.cc:180
+#: ../src/setupMode.cc:232
 msgid "Sandbox (Easy)"
 msgstr "Homokozó (Könnyű)"
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Normal)"
 msgstr "Homokozó (Normál)"
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Hard)"
 msgstr "Homokozó (Nehéz)"
 
-#: ../src/setupMode.cc:183
+#: ../src/setupMode.cc:235
 msgid "Easy"
 msgstr "Könnyű"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Normal"
 msgstr "Normál"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Hard"
 msgstr "Nehéz"
 
-#: ../src/setupMode.cc:188
-msgid "Start Game"
-msgstr "Játék indítása"
-
-#: ../src/setupMode.cc:192
+#: ../src/setupMode.cc:241
 #, c-format
 msgid "Total games played: %d"
 msgstr "Összes eddigi játék: %d"
 
-#: ../src/setupMode.cc:196
+#: ../src/setupMode.cc:245
 #, c-format
 msgid "Average score: %d"
 msgstr "Átlagos pontszám: %d"
 
-#: ../src/setupMode.cc:198
+#: ../src/setupMode.cc:247
 #, c-format
 msgid "Average score: N/A"
 msgstr "Átlagos pontszám: nincs"
 
-#: ../src/setupMode.cc:201
+#: ../src/setupMode.cc:250
 #, c-format
 msgid "Levels completed: %d"
 msgstr "Teljesített pályák: %d"
 
+#: ../src/setupMode.cc:262
+msgid "Start Game"
+msgstr "Játék indítása"
+
 #: ../share/levels/bx.set:1 ../share/levels/bx1.scm:4
 msgid "Box-O'-Fun"
 msgstr ""
diff --git a/po/it.po b/po/it.po
index b27526e..c094caf 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 1.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-06-25 20:27-0400\n"
+"POT-Creation-Date: 2017-10-14 23:50-0400\n"
 "PO-Revision-Date: 2017-06-25 20:22-0400\n"
 "Last-Translator: Francesco (ThN1saHead) Guatieri <nisacorp at ncsinfo.it>\n"
 "Language-Team: francesco\n"
@@ -17,15 +17,15 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 2.0.2\n"
 
-#: ../src/calibrateJoystickMode.cc:94
+#: ../src/calibrateJoystickMode.cc:105
 msgid "Calibrating Joystick"
 msgstr "Calibrazione Joystick"
 
-#: ../src/calibrateJoystickMode.cc:103
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Center joystick"
 msgstr "Centra joystick"
 
-#: ../src/calibrateJoystickMode.cc:107
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Move joystick left"
 msgstr "Muovi joystick a sinistra"
 
@@ -33,28 +33,28 @@ msgstr "Muovi joystick a sinistra"
 msgid "Move joystick right"
 msgstr "Muovi joystick a destra"
 
-#: ../src/calibrateJoystickMode.cc:115
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick up"
 msgstr "Muovi joystick verso l'alto"
 
-#: ../src/calibrateJoystickMode.cc:119
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick down"
 msgstr "Muovi joystick in basso"
 
-#: ../src/calibrateJoystickMode.cc:123
+#: ../src/calibrateJoystickMode.cc:118
 msgid "Press any button to continue"
 msgstr "Premere qualunque tasto per continuare"
 
-#: ../src/calibrateJoystickMode.cc:125
+#: ../src/calibrateJoystickMode.cc:120
 msgid "Press escape to cancel"
 msgstr "Premere ESC per annullare"
 
-#: ../src/calibrateJoystickMode.cc:128
+#: ../src/calibrateJoystickMode.cc:122
 #, c-format
 msgid "now: %d %d"
 msgstr "correntemente: %d %d"
 
-#: ../src/calibrateJoystickMode.cc:133
+#: ../src/calibrateJoystickMode.cc:127
 #, c-format
 msgid "center: %d %d left: %d right: %d up: %d down: %d"
 msgstr "centro: %d %d sinistra: %d destra: %d alto: %d basso: %d"
@@ -582,17 +582,17 @@ msgid "Quit without saving?"
 msgstr "Si desidera uscire senza salvare?"
 
 #: ../src/editWindows.cc:361 ../src/editWindows.cc:400
-#: ../src/editWindows.cc:447 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:175
-#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:447 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:177
+#: ../src/settingsMode.cc:179 ../src/settingsMode.cc:189
 msgid "Yes"
 msgstr "Sì"
 
 #: ../src/editWindows.cc:362 ../src/editWindows.cc:401
-#: ../src/editWindows.cc:448 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:136
-#: ../src/settingsMode.cc:175 ../src/settingsMode.cc:177
-#: ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:448 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:138
+#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:179
+#: ../src/settingsMode.cc:189
 #, c-format
 msgid "No"
 msgstr "No"
@@ -627,12 +627,16 @@ msgstr "Carica mappa"
 msgid "page %d / %d"
 msgstr "Pagina %d / %d"
 
-#: ../src/enterHighScoreMode.cc:54
+#: ../src/enterHighScoreMode.cc:59
+msgid "High Score"
+msgstr ""
+
+#: ../src/enterHighScoreMode.cc:63
 #, fuzzy, c-format
 msgid "You got %d points"
 msgstr "%d punti"
 
-#: ../src/enterHighScoreMode.cc:59
+#: ../src/enterHighScoreMode.cc:66
 #, c-format
 msgid "Enter your name: %s"
 msgstr ""
@@ -641,181 +645,207 @@ msgstr ""
 msgid "John Doe"
 msgstr ""
 
-#: ../src/glHelp.cc:1266
+#: ../src/glHelp.cc:1264
 #, c-format
 msgid "Framerate: %.1f"
 msgstr "Fotogrammi al secondo: %.1f"
 
-#: ../src/glHelp.cc:1268
+#: ../src/glHelp.cc:1266
 #, c-format
 msgid "Framerate unknown"
 msgstr "Fotogrammi al secondo: sconosciuti"
 
-#: ../src/glHelp.cc:1270
+#: ../src/glHelp.cc:1268
 #, c-format
 msgid "%.1f ms/Frame"
 msgstr ""
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:183
 msgid "Your marble:"
 msgstr "La tua sfera"
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:184
 msgid "Steer this with your mouse, numpad or arrows. "
 msgstr ""
 "Guidala utilizzando il tuo mouse, il tastierino numerico, oppure i tasti "
 "freccia."
 
-#: ../src/helpMode.cc:113
+#: ../src/helpMode.cc:185
 msgid "Left mouse or spacebar is jump."
 msgstr "Salta utilizzando il click destro del mouse o la barra spaziatrice"
 
-#: ../src/helpMode.cc:114
+#: ../src/helpMode.cc:186
 msgid "Shift gives top speed when using keyboard."
 msgstr "MAIUSC dà la velocità massima quando si utilizza la tastiera."
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:188
 msgid "Mr Black:"
 msgstr "Mr Black:"
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:189
 msgid "Your enemy. Defeat with Modpill - Spike."
 msgstr "Il tuo nemico. Sconfiggilo utilizzando la pillola-spina."
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:191
 msgid "Modpill Speed:"
 msgstr "Pillola della velocità:"
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:192
 msgid "Makes you go faster for short period of time."
 msgstr ""
 "Ti permette di procedere più velocemente per un breve periodo di tempo."
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:194
 msgid "Modpill Spikes:"
 msgstr "Pillola-spina:"
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:195
 msgid "Weapon against Mr Black and grip for icy terrain."
 msgstr "Arma contro Mr Black, inoltre rampichino per il terreno ghiacciato."
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:198
 msgid "Modpill Freeze:"
 msgstr "Pillola congelante:"
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:199
 msgid "This will freeze you - avoid it."
 msgstr "Ti congela. Evitala."
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:201
 msgid "Modpill Glass:"
 msgstr "Pillola di vetro:"
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:202
 msgid "Protects you from acid, but makes you more fragile."
 msgstr "Ti protegge dall'acido, ma ti rende più fragile."
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:204
 msgid "Modpill Nitro:"
 msgstr "Pillola a steroidi:"
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:205
 msgid "Move really fast. Active nitro with second button."
 msgstr ""
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:207
 msgid "Switch:"
 msgstr "Interruttore:"
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:208
 msgid "Activates/deactivates some object/element in the level."
 msgstr "Attiva/disattiva alcuni oggetti/elementi all'interno del livello."
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:211
 msgid "Moving spike:"
 msgstr "Aculeo semovente:"
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:212
 msgid "Obstacle to avoid."
 msgstr "Ostacolo da evitare."
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:214
 msgid "Flag:"
 msgstr "Bandierina:"
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:215
 msgid "Collect for bonus points."
 msgstr "Raccoglila per ottenere punti extra."
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:218
 msgid "Normal terrain:"
 msgstr "Terreno normale:"
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:219
 msgid "Can be of any color and is safe to move on."
 msgstr "Può essere di qualunque colore ed è sicuro procedervi sopra."
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:221
 msgid "Acid terrain:"
 msgstr "Terreno acido:"
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:222
 msgid "Will kill your marble unless you have a glass modpill."
 msgstr "Ti ucciderà, a meno che tu non sia protetto dalla pillola di vetro."
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:225
 msgid "Icy terrain:"
 msgstr "Terreno ghiacciato:"
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:226
 msgid "Slippery terrain unless you have a spikes modpill."
 msgstr "Terreno scivoloso, a meno che tu utilizzi la pillola-spina."
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:228
 msgid "Sandy terrain:"
 msgstr "Terreno sabbioso:"
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:229
 msgid "Soft to land on but will slow you down."
 msgstr "Superficie morbida per atterrare, ma ti rallenterà."
 
-#: ../src/helpMode.cc:128
+#: ../src/helpMode.cc:232
 msgid "Goal:"
 msgstr "Obbiettivo:"
 
-#: ../src/helpMode.cc:128
-msgid "Will take you to the next level. "
+#: ../src/helpMode.cc:233
+#, fuzzy
+msgid "Will take you to the next level."
 msgstr "Ti condurrà al livello successivo."
 
-#: ../src/helpMode.cc:129
+#: ../src/helpMode.cc:234
 msgid "Get here before time runs out."
 msgstr "Arriva qui prima che scada il tempo."
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:237
 msgid "Force Field:"
 msgstr "Campo di forza:"
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:238
 msgid "You cannot pass this unless you switch it off."
 msgstr "Non puoi oltrepassarlo, a meno che tu non non lo disattivi."
 
-#: ../src/helpMode.cc:131
+#: ../src/helpMode.cc:239
 msgid "Some are lethal and some are one way."
 msgstr "Alcuni sono letali, altri sono a senso unico."
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:242
+msgid "Cactus:"
+msgstr ""
+
+#: ../src/helpMode.cc:243
+#, fuzzy
+msgid "Spiky plant, lethal unless you have a spikes modpill."
+msgstr "Terreno scivoloso, a meno che tu utilizzi la pillola-spina."
+
+#: ../src/helpMode.cc:246
+msgid "Bird:"
+msgstr ""
+
+#: ../src/helpMode.cc:247
+msgid "Kills balls it flies across unless they have spikes."
+msgstr ""
+
+#: ../src/helpMode.cc:250
+msgid "Teleport:"
+msgstr ""
+
+#: ../src/helpMode.cc:251
+msgid "Will send your marble somewhere else."
+msgstr ""
+
+#: ../src/helpMode.cc:254
 msgid "Tunnel:"
 msgstr "Tunnel:"
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:255
 msgid "Takes you places, sometimes with great speed."
 msgstr "Ti porta in un altro luogo, a volte a gran velocità."
 
-#: ../src/helpMode.cc:156
+#: ../src/helpMode.cc:285
 msgid "More Help"
 msgstr "Avanti"
 
-#: ../src/helpMode.cc:158 ../src/settingsMode.cc:239
+#: ../src/helpMode.cc:287 ../src/hofMode.cc:107 ../src/settingsMode.cc:242
 msgid "Back"
 msgstr "Indietro"
 
@@ -824,11 +854,15 @@ msgstr "Indietro"
 msgid "Anonymous Coward"
 msgstr ""
 
-#: ../src/hofMode.cc:108 ../src/setupMode.cc:159
+#: ../src/hofMode.cc:89
+msgid "High Scores"
+msgstr ""
+
+#: ../src/hofMode.cc:92 ../src/setupMode.cc:212
 msgid "Level Set"
 msgstr "Livelloteca:"
 
-#: ../src/hofMode.cc:118
+#: ../src/hofMode.cc:101
 #, c-format
 msgid "%d points"
 msgstr "%d punti"
@@ -879,46 +913,60 @@ msgstr "Hai terminato il gioco!"
 msgid "Good luck!"
 msgstr "Buona fortuna!"
 
-#: ../src/mainMode.cc:635
+#: ../src/mainMode.cc:581
+#, fuzzy
+msgid "Lives"
+msgstr "Vite rimaste:"
+
+#: ../src/mainMode.cc:581
+msgid "Score"
+msgstr ""
+
+#: ../src/mainMode.cc:581
+#, fuzzy
+msgid "Time left"
+msgstr "Tempo rimanente:"
+
+#: ../src/mainMode.cc:653
 #, c-format
 msgid "Level bonuses"
 msgstr "Bonus del livello"
 
-#: ../src/mainMode.cc:637
+#: ../src/mainMode.cc:655
 #, c-format
 msgid "Lives left:"
 msgstr "Vite rimaste:"
 
-#: ../src/mainMode.cc:638
+#: ../src/mainMode.cc:656
 #, c-format
 msgid "%d x 100 = %d points"
 msgstr "%d x 100 = %d punti"
 
-#: ../src/mainMode.cc:639
+#: ../src/mainMode.cc:657
 #, c-format
 msgid "Time left:"
 msgstr "Tempo rimanente:"
 
-#: ../src/mainMode.cc:640
+#: ../src/mainMode.cc:658
 #, c-format
 msgid "%d minutes = %d points"
 msgstr "%d minuti = %d punti"
 
-#: ../src/mainMode.cc:642
+#: ../src/mainMode.cc:660
 #, c-format
 msgid "Difficulty:"
 msgstr "Difficoltà:"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "easy"
 msgstr "facile"
 
-#: ../src/mainMode.cc:644 ../src/settingsMode.cc:197
+#: ../src/mainMode.cc:662 ../src/settingsMode.cc:199
 #, c-format
 msgid "normal"
 msgstr "normale"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "hard"
 msgstr "difficile"
 
@@ -975,100 +1023,100 @@ msgstr "Guida"
 msgid "Map Editor"
 msgstr "Editor di livelli"
 
-#: ../src/mmad.cc:215
+#: ../src/mmad.cc:214
 msgid "Usage:"
 msgstr "Utilizzo:"
 
-#: ../src/mmad.cc:216
+#: ../src/mmad.cc:215
 msgid "[-w, -m] [-e, -l -t <level>] [-r <width>] [-s <sensitivity>]"
 msgstr "[-w, -m] [-e, -l -t <livello>] [-r <larghezza>] [-s <sensibilità>]"
 
-#: ../src/mmad.cc:218
+#: ../src/mmad.cc:217
 msgid "Display this usage information."
 msgstr "Visualizza questa guida."
 
-#: ../src/mmad.cc:219
+#: ../src/mmad.cc:218
 msgid "Start from level."
 msgstr "Parte dal livello."
 
-#: ../src/mmad.cc:220
+#: ../src/mmad.cc:219
 msgid "Run in window (Default is fullscreen)"
 msgstr "Avvia in una finestra (predefinito tuttoschermo)"
 
-#: ../src/mmad.cc:221
+#: ../src/mmad.cc:220
 msgid "Mute sound."
 msgstr "Senza audio."
 
-#: ../src/mmad.cc:222
+#: ../src/mmad.cc:221
 msgid "Set resolution to 640, 800 or 1024"
 msgstr "Imposta la risoluzione a 640, 800 o 1024"
 
-#: ../src/mmad.cc:223
+#: ../src/mmad.cc:222
 msgid "Mouse sensitivity, default 1.0"
 msgstr "Sensibilità del mouse, predefinita 1.0"
 
-#: ../src/mmad.cc:224
+#: ../src/mmad.cc:223
 msgid "Displays framerate"
 msgstr "Visualizza i fotogrammi al secondo"
 
-#: ../src/mmad.cc:225
+#: ../src/mmad.cc:224
 msgid "Prints current version number"
 msgstr "Visualizza la versione corrente"
 
-#: ../src/mmad.cc:226
+#: ../src/mmad.cc:225
 msgid "Updates a map to the latest format"
 msgstr "Aggiorna una mappa all'ultimo FileFormat"
 
-#: ../src/mmad.cc:227
+#: ../src/mmad.cc:226
 msgid "Attempt to conserve memory usage"
 msgstr "Ottimizza l'utilizzo della memoria"
 
-#: ../src/mmad.cc:228
+#: ../src/mmad.cc:227
 #, fuzzy
 msgid "Debug joystick status"
 msgstr "Muovi joystick verso l'alto"
 
-#: ../src/mmad.cc:229
+#: ../src/mmad.cc:228
 msgid "Correct for bad joysticks"
 msgstr "Correzione per joystick difettosi"
 
-#: ../src/mmad.cc:233
+#: ../src/mmad.cc:232
 msgid "Important keyboard shortcuts"
 msgstr ""
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Escape"
 msgstr ""
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Soft quit"
 msgstr ""
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "CapsLock"
 msgstr ""
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "Unhide mouse pointer"
 msgstr ""
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "CTRL-q"
 msgstr ""
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "Quit the game immediately"
 msgstr ""
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "CTRL-f"
 msgstr ""
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "Toggle between fullscreen/windowed mode"
 msgstr ""
 
-#: ../src/mmad.cc:238
+#: ../src/mmad.cc:237
 msgid "Kill the ball"
 msgstr ""
 
@@ -1086,287 +1134,287 @@ msgstr "Benvenuti in Trackballs."
 msgid "Using %s as gamedata directory."
 msgstr "Utilizza la catella %s per i dati del gioco."
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Speed ball"
 msgstr ""
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 #, fuzzy
 msgid "Extra jump"
 msgstr "Molti"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 #, fuzzy
 msgid "Spikes"
 msgstr "Aculeo"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Glass ball"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Dizzy!"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Freeze!"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Floating"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 #, fuzzy
 msgid "Extra life"
 msgstr "Molti"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 #, fuzzy
 msgid "Small ball"
 msgstr "Collina piccola"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 #, fuzzy
 msgid "Large ball"
 msgstr "Collina grande"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Nitro"
 msgstr ""
 
-#: ../src/settingsMode.cc:82
+#: ../src/settingsMode.cc:84
 msgid "Game Settings"
 msgstr "Impostazioni"
 
-#: ../src/settingsMode.cc:92
+#: ../src/settingsMode.cc:94
 #, c-format
 msgid "Is resolution %dx%dx%d ok?"
 msgstr ""
 
-#: ../src/settingsMode.cc:95
+#: ../src/settingsMode.cc:97
 #, c-format
 msgid "Is resolution Auto-%d ok?"
 msgstr ""
 
-#: ../src/settingsMode.cc:99
+#: ../src/settingsMode.cc:101
 #, fuzzy
 msgid "Ok, use this resolution"
 msgstr "Risoluzione"
 
-#: ../src/settingsMode.cc:100
+#: ../src/settingsMode.cc:102
 msgid "No, revert to old resolution"
 msgstr ""
 
-#: ../src/settingsMode.cc:102
+#: ../src/settingsMode.cc:104
 #, c-format
 msgid "Timeout in %d seconds"
 msgstr ""
 
-#: ../src/settingsMode.cc:114
+#: ../src/settingsMode.cc:116
 msgid "Video"
 msgstr ""
 
-#: ../src/settingsMode.cc:121
+#: ../src/settingsMode.cc:123
 #, c-format
 msgid "Auto-%d"
 msgstr ""
 
-#: ../src/settingsMode.cc:123
+#: ../src/settingsMode.cc:125
 msgid "Resolution"
 msgstr "Risoluzione"
 
-#: ../src/settingsMode.cc:124
+#: ../src/settingsMode.cc:126
 msgid "Test this resolution"
 msgstr "Risoluzione"
 
-#: ../src/settingsMode.cc:127
+#: ../src/settingsMode.cc:129
 msgid "Fullscreen"
 msgstr "Schermo intero"
 
-#: ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:132
 msgid "VSync"
 msgstr ""
 
-#: ../src/settingsMode.cc:139
+#: ../src/settingsMode.cc:141
 #, fuzzy, c-format
 msgid "Frame rate"
 msgstr "Fotogrammi al secondo: %.1f"
 
-#: ../src/settingsMode.cc:142
+#: ../src/settingsMode.cc:144
 #, c-format
 msgid "Frame time"
 msgstr ""
 
-#: ../src/settingsMode.cc:145
+#: ../src/settingsMode.cc:147
 msgid "Show FPS"
 msgstr "Visualizza FPS"
 
-#: ../src/settingsMode.cc:150
+#: ../src/settingsMode.cc:152
 msgid "Graphics"
 msgstr "Grafica"
 
-#: ../src/settingsMode.cc:155
+#: ../src/settingsMode.cc:157
 #, c-format
 msgid "None"
 msgstr "Nessuno"
 
-#: ../src/settingsMode.cc:158
+#: ../src/settingsMode.cc:160
 #, c-format
 msgid "Minimalistic"
 msgstr "Minimi"
 
-#: ../src/settingsMode.cc:161
+#: ../src/settingsMode.cc:163
 #, c-format
 msgid "Simple"
 msgstr "Pochi"
 
-#: ../src/settingsMode.cc:164
+#: ../src/settingsMode.cc:166
 #, c-format
 msgid "Standard"
 msgstr "Standard"
 
-#: ../src/settingsMode.cc:167
+#: ../src/settingsMode.cc:169
 #, c-format
 msgid "Extra"
 msgstr "Molti"
 
-#: ../src/settingsMode.cc:170
+#: ../src/settingsMode.cc:172
 #, c-format
 msgid "Everything"
 msgstr "Tutti"
 
-#: ../src/settingsMode.cc:173
+#: ../src/settingsMode.cc:175
 msgid "Details"
 msgstr "Dettagli"
 
-#: ../src/settingsMode.cc:174
+#: ../src/settingsMode.cc:176
 msgid "Reflections"
 msgstr "Riflessi (beta)"
 
-#: ../src/settingsMode.cc:176
+#: ../src/settingsMode.cc:178
 msgid "Shadows"
 msgstr ""
 
-#: ../src/settingsMode.cc:183
+#: ../src/settingsMode.cc:185
 msgid "Controls"
 msgstr "Controlli"
 
-#: ../src/settingsMode.cc:186
+#: ../src/settingsMode.cc:188
 msgid "Use mouse"
 msgstr "Utilizza mouse"
 
-#: ../src/settingsMode.cc:192
+#: ../src/settingsMode.cc:194
 msgid "Sensitivity"
 msgstr "Sensibilità"
 
-#: ../src/settingsMode.cc:199
+#: ../src/settingsMode.cc:201
 #, c-format
 msgid "+%d degrees"
 msgstr "+%d gradi"
 
-#: ../src/settingsMode.cc:201
+#: ../src/settingsMode.cc:203
 #, c-format
 msgid "-%d degrees"
 msgstr "-%d gradi"
 
-#: ../src/settingsMode.cc:202
+#: ../src/settingsMode.cc:204
 msgid "Steering"
 msgstr "Direzione"
 
-#: ../src/settingsMode.cc:209
+#: ../src/settingsMode.cc:211
 #, fuzzy, c-format
 msgid "no joystick found"
 msgstr "Muovi joystick in basso"
 
-#: ../src/settingsMode.cc:213
+#: ../src/settingsMode.cc:215
 msgid "Joystick:"
 msgstr "Joystick:"
 
-#: ../src/settingsMode.cc:223
+#: ../src/settingsMode.cc:225
 msgid "Other"
 msgstr "Altro"
 
-#: ../src/settingsMode.cc:227
+#: ../src/settingsMode.cc:229
 msgid "Music volume"
 msgstr "Volume musica"
 
-#: ../src/settingsMode.cc:229
+#: ../src/settingsMode.cc:231
 msgid "Effects volume"
 msgstr "Volume effetti"
 
-#: ../src/settingsMode.cc:231
+#: ../src/settingsMode.cc:233
 msgid "Language"
 msgstr ""
 
-#: ../src/setupMode.cc:151
+#: ../src/setupMode.cc:203
 msgid "Setup new game"
 msgstr "Prepara nuovo gioco."
 
-#: ../src/setupMode.cc:155
+#: ../src/setupMode.cc:208
 msgid "Player Name"
 msgstr "Nome del giocatore"
 
-#: ../src/setupMode.cc:161
+#: ../src/setupMode.cc:214
 msgid "N/A"
 msgstr "N/D"
 
-#: ../src/setupMode.cc:167
+#: ../src/setupMode.cc:220
 msgid "Level"
 msgstr "Livello"
 
-#: ../src/setupMode.cc:175
+#: ../src/setupMode.cc:228
 msgid "Difficulty"
 msgstr "Difficoltà:"
 
-#: ../src/setupMode.cc:180
+#: ../src/setupMode.cc:232
 msgid "Sandbox (Easy)"
 msgstr ""
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Normal)"
 msgstr ""
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Hard)"
 msgstr ""
 
-#: ../src/setupMode.cc:183
+#: ../src/setupMode.cc:235
 msgid "Easy"
 msgstr "Facile"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Normal"
 msgstr "Normale"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Hard"
 msgstr "Difficile"
 
-#: ../src/setupMode.cc:188
-msgid "Start Game"
-msgstr "Gioca!"
-
-#: ../src/setupMode.cc:192
+#: ../src/setupMode.cc:241
 #, c-format
 msgid "Total games played: %d"
 msgstr "Partite giocate: %d"
 
-#: ../src/setupMode.cc:196
+#: ../src/setupMode.cc:245
 #, c-format
 msgid "Average score: %d"
 msgstr "Punteggio medio: %d"
 
-#: ../src/setupMode.cc:198
+#: ../src/setupMode.cc:247
 #, c-format
 msgid "Average score: N/A"
 msgstr "Punteggio medio: N/D"
 
-#: ../src/setupMode.cc:201
+#: ../src/setupMode.cc:250
 #, c-format
 msgid "Levels completed: %d"
 msgstr "Livelli completati: %d"
 
+#: ../src/setupMode.cc:262
+msgid "Start Game"
+msgstr "Gioca!"
+
 #: ../share/levels/bx.set:1 ../share/levels/bx1.scm:4
 msgid "Box-O'-Fun"
 msgstr ""
diff --git a/po/sk.po b/po/sk.po
index 0dd01ef..2080c80 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Trackballs\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-06-25 20:27-0400\n"
+"POT-Creation-Date: 2017-10-14 23:50-0400\n"
 "PO-Revision-Date: 2017-06-25 20:11-0400\n"
 "Last-Translator: Jozef Říha <jose1711 at gmail.com>\n"
 "Language-Team: Slovak <LL at li.org>\n"
@@ -16,15 +16,15 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 2.0.2\n"
 
-#: ../src/calibrateJoystickMode.cc:94
+#: ../src/calibrateJoystickMode.cc:105
 msgid "Calibrating Joystick"
 msgstr "Kalibrujem Joystick"
 
-#: ../src/calibrateJoystickMode.cc:103
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Center joystick"
 msgstr "Centrujte joystick"
 
-#: ../src/calibrateJoystickMode.cc:107
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Move joystick left"
 msgstr "Pohnite joystickom vľavo"
 
@@ -32,28 +32,28 @@ msgstr "Pohnite joystickom vľavo"
 msgid "Move joystick right"
 msgstr "Pohnite joystickom vpravo"
 
-#: ../src/calibrateJoystickMode.cc:115
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick up"
 msgstr "Pohnite joystickom hore"
 
-#: ../src/calibrateJoystickMode.cc:119
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick down"
 msgstr "Pohnite joystickom dole"
 
-#: ../src/calibrateJoystickMode.cc:123
+#: ../src/calibrateJoystickMode.cc:118
 msgid "Press any button to continue"
 msgstr "Stlačte ľubovoľný kláves pre pokračovanie"
 
-#: ../src/calibrateJoystickMode.cc:125
+#: ../src/calibrateJoystickMode.cc:120
 msgid "Press escape to cancel"
 msgstr "Stlačte escape pre zrušenie"
 
-#: ../src/calibrateJoystickMode.cc:128
+#: ../src/calibrateJoystickMode.cc:122
 #, c-format
 msgid "now: %d %d"
 msgstr "teraz: %d %d"
 
-#: ../src/calibrateJoystickMode.cc:133
+#: ../src/calibrateJoystickMode.cc:127
 #, c-format
 msgid "center: %d %d left: %d right: %d up: %d down: %d"
 msgstr "stred: %d %d ľavý: %d pravý: %d horný: %d spodný: %d"
@@ -579,17 +579,17 @@ msgid "Quit without saving?"
 msgstr "Ukončiť bez uloženia?"
 
 #: ../src/editWindows.cc:361 ../src/editWindows.cc:400
-#: ../src/editWindows.cc:447 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:175
-#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:447 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:177
+#: ../src/settingsMode.cc:179 ../src/settingsMode.cc:189
 msgid "Yes"
 msgstr "Áno"
 
 #: ../src/editWindows.cc:362 ../src/editWindows.cc:401
-#: ../src/editWindows.cc:448 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:136
-#: ../src/settingsMode.cc:175 ../src/settingsMode.cc:177
-#: ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:448 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:138
+#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:179
+#: ../src/settingsMode.cc:189
 #, c-format
 msgid "No"
 msgstr "Nie"
@@ -624,12 +624,16 @@ msgstr "Otvoriť mapu"
 msgid "page %d / %d"
 msgstr "stránka %d / %d"
 
-#: ../src/enterHighScoreMode.cc:54
+#: ../src/enterHighScoreMode.cc:59
+msgid "High Score"
+msgstr ""
+
+#: ../src/enterHighScoreMode.cc:63
 #, fuzzy, c-format
 msgid "You got %d points"
 msgstr "%d bodov"
 
-#: ../src/enterHighScoreMode.cc:59
+#: ../src/enterHighScoreMode.cc:66
 #, c-format
 msgid "Enter your name: %s"
 msgstr ""
@@ -638,178 +642,204 @@ msgstr ""
 msgid "John Doe"
 msgstr ""
 
-#: ../src/glHelp.cc:1266
+#: ../src/glHelp.cc:1264
 #, c-format
 msgid "Framerate: %.1f"
 msgstr "Rýchlosť snímkov: %.1f"
 
-#: ../src/glHelp.cc:1268
+#: ../src/glHelp.cc:1266
 #, c-format
 msgid "Framerate unknown"
 msgstr "Rýchlosť snímkov neznáma"
 
-#: ../src/glHelp.cc:1270
+#: ../src/glHelp.cc:1268
 #, c-format
 msgid "%.1f ms/Frame"
 msgstr ""
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:183
 msgid "Your marble:"
 msgstr "Vaša gulička:"
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:184
 msgid "Steer this with your mouse, numpad or arrows. "
 msgstr "Navádzaj guličku pomocou myši, numerickej klávesnice a šípiek."
 
-#: ../src/helpMode.cc:113
+#: ../src/helpMode.cc:185
 msgid "Left mouse or spacebar is jump."
 msgstr "Ľavým tlačidlom myši alebo medzerníkom sa skáče."
 
-#: ../src/helpMode.cc:114
+#: ../src/helpMode.cc:186
 msgid "Shift gives top speed when using keyboard."
 msgstr "Shift prepne na najvyššiu rýchlosť pri používaní klávesnice."
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:188
 msgid "Mr Black:"
 msgstr "Pán Čierny:"
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:189
 msgid "Your enemy. Defeat with Modpill - Spike."
 msgstr "Váš nepriateľ. Poraziť sa dá s Modpill - Bodce"
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:191
 msgid "Modpill Speed:"
 msgstr "Modpill Rýchlosť:"
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:192
 msgid "Makes you go faster for short period of time."
 msgstr "Zväčší na krátky čas vašu rýchlosť"
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:194
 msgid "Modpill Spikes:"
 msgstr "Modpill Bodce:"
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:195
 msgid "Weapon against Mr Black and grip for icy terrain."
 msgstr "Zbraň proti p. Čiernom a ochrana pred zľadovatelým povrchom."
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:198
 msgid "Modpill Freeze:"
 msgstr "Modpill Mráz:"
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:199
 msgid "This will freeze you - avoid it."
 msgstr "Toto vás zamrazí - vyhnite sa jej."
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:201
 msgid "Modpill Glass:"
 msgstr "Modpill Sklo:"
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:202
 msgid "Protects you from acid, but makes you more fragile."
 msgstr "Ochráni vás pred kyselinou, ale za cenu väčšej zraniteľnosti."
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:204
 msgid "Modpill Nitro:"
 msgstr "Modpill Nitro:"
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:205
 msgid "Move really fast. Active nitro with second button."
 msgstr ""
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:207
 msgid "Switch:"
 msgstr "Prepnúť:"
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:208
 msgid "Activates/deactivates some object/element in the level."
 msgstr "Aktivuje/deaktivuje určitý objekt/element v leveli."
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:211
 msgid "Moving spike:"
 msgstr ""
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:212
 msgid "Obstacle to avoid."
 msgstr "Prekážka"
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:214
 msgid "Flag:"
 msgstr "Vlajka:"
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:215
 msgid "Collect for bonus points."
 msgstr "Zbierajte na získanie bonusových bodov."
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:218
 msgid "Normal terrain:"
 msgstr "Normálny povrch:"
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:219
 msgid "Can be of any color and is safe to move on."
 msgstr "Môže byť ľubovoľnej farby a je bezpečný pre pohyb."
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:221
 msgid "Acid terrain:"
 msgstr "Povrch kyselina:"
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:222
 msgid "Will kill your marble unless you have a glass modpill."
 msgstr "Pokiaľ nemáte Modpill Sklo, zabije vás."
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:225
 msgid "Icy terrain:"
 msgstr "Zľadovatelý povrch:"
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:226
 msgid "Slippery terrain unless you have a spikes modpill."
 msgstr "Šmykľavý povrch, ak nemáte Modpill Bodce."
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:228
 msgid "Sandy terrain:"
 msgstr "Piesočný povrch:"
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:229
 msgid "Soft to land on but will slow you down."
 msgstr "Mäkký na pristátie, ale spomalí vás."
 
-#: ../src/helpMode.cc:128
+#: ../src/helpMode.cc:232
 msgid "Goal:"
 msgstr "Cieľ:"
 
-#: ../src/helpMode.cc:128
-msgid "Will take you to the next level. "
+#: ../src/helpMode.cc:233
+#, fuzzy
+msgid "Will take you to the next level."
 msgstr "Vezme vás do dalšieho levelu. "
 
-#: ../src/helpMode.cc:129
+#: ../src/helpMode.cc:234
 msgid "Get here before time runs out."
 msgstr "Dostaňte sa sem pred vypršaním času."
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:237
 msgid "Force Field:"
 msgstr ""
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:238
 msgid "You cannot pass this unless you switch it off."
 msgstr "Nemôžete prejsť cez toto, pokiaľ ho nevypnete."
 
-#: ../src/helpMode.cc:131
+#: ../src/helpMode.cc:239
 msgid "Some are lethal and some are one way."
 msgstr "Niektoré sú smrtiaci a iné jednosmerky."
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:242
+msgid "Cactus:"
+msgstr ""
+
+#: ../src/helpMode.cc:243
+#, fuzzy
+msgid "Spiky plant, lethal unless you have a spikes modpill."
+msgstr "Šmykľavý povrch, ak nemáte Modpill Bodce."
+
+#: ../src/helpMode.cc:246
+msgid "Bird:"
+msgstr ""
+
+#: ../src/helpMode.cc:247
+msgid "Kills balls it flies across unless they have spikes."
+msgstr ""
+
+#: ../src/helpMode.cc:250
+msgid "Teleport:"
+msgstr ""
+
+#: ../src/helpMode.cc:251
+msgid "Will send your marble somewhere else."
+msgstr ""
+
+#: ../src/helpMode.cc:254
 msgid "Tunnel:"
 msgstr "Tunel:"
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:255
 msgid "Takes you places, sometimes with great speed."
 msgstr "Presunie vás na iné miesto, niekedy pridá rýchlosť."
 
-#: ../src/helpMode.cc:156
+#: ../src/helpMode.cc:285
 msgid "More Help"
 msgstr "Ďalšia pomoc"
 
-#: ../src/helpMode.cc:158 ../src/settingsMode.cc:239
+#: ../src/helpMode.cc:287 ../src/hofMode.cc:107 ../src/settingsMode.cc:242
 msgid "Back"
 msgstr "Späť"
 
@@ -818,11 +848,15 @@ msgstr "Späť"
 msgid "Anonymous Coward"
 msgstr ""
 
-#: ../src/hofMode.cc:108 ../src/setupMode.cc:159
+#: ../src/hofMode.cc:89
+msgid "High Scores"
+msgstr ""
+
+#: ../src/hofMode.cc:92 ../src/setupMode.cc:212
 msgid "Level Set"
 msgstr ""
 
-#: ../src/hofMode.cc:118
+#: ../src/hofMode.cc:101
 #, c-format
 msgid "%d points"
 msgstr "%d bodov"
@@ -873,46 +907,60 @@ msgstr "Úspešne ste ukončili hru!"
 msgid "Good luck!"
 msgstr "Veľa šťastia!"
 
-#: ../src/mainMode.cc:635
+#: ../src/mainMode.cc:581
+#, fuzzy
+msgid "Lives"
+msgstr "Ešte životov:"
+
+#: ../src/mainMode.cc:581
+msgid "Score"
+msgstr ""
+
+#: ../src/mainMode.cc:581
+#, fuzzy
+msgid "Time left"
+msgstr "Ešte času:"
+
+#: ../src/mainMode.cc:653
 #, c-format
 msgid "Level bonuses"
 msgstr "Bonusové levely"
 
-#: ../src/mainMode.cc:637
+#: ../src/mainMode.cc:655
 #, c-format
 msgid "Lives left:"
 msgstr "Ešte životov:"
 
-#: ../src/mainMode.cc:638
+#: ../src/mainMode.cc:656
 #, c-format
 msgid "%d x 100 = %d points"
 msgstr "%d x 100 = %d bodov"
 
-#: ../src/mainMode.cc:639
+#: ../src/mainMode.cc:657
 #, c-format
 msgid "Time left:"
 msgstr "Ešte času:"
 
-#: ../src/mainMode.cc:640
+#: ../src/mainMode.cc:658
 #, c-format
 msgid "%d minutes = %d points"
 msgstr "%d minút = %d bodov"
 
-#: ../src/mainMode.cc:642
+#: ../src/mainMode.cc:660
 #, c-format
 msgid "Difficulty:"
 msgstr "Náročnosť"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "easy"
 msgstr "ľahká"
 
-#: ../src/mainMode.cc:644 ../src/settingsMode.cc:197
+#: ../src/mainMode.cc:662 ../src/settingsMode.cc:199
 #, c-format
 msgid "normal"
 msgstr "bežná"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "hard"
 msgstr "ťažká"
 
@@ -966,100 +1014,100 @@ msgstr "Pomoc"
 msgid "Map Editor"
 msgstr "Editor máp"
 
-#: ../src/mmad.cc:215
+#: ../src/mmad.cc:214
 msgid "Usage:"
 msgstr "Použitie"
 
-#: ../src/mmad.cc:216
+#: ../src/mmad.cc:215
 msgid "[-w, -m] [-e, -l -t <level>] [-r <width>] [-s <sensitivity>]"
 msgstr "[-w, -m] [-e, -l -t <level>] [-r <sirka>] [-s <citlivost>]"
 
-#: ../src/mmad.cc:218
+#: ../src/mmad.cc:217
 msgid "Display this usage information."
 msgstr "Zobrazenie tohto navodu na pouzivanie."
 
-#: ../src/mmad.cc:219
+#: ../src/mmad.cc:218
 msgid "Start from level."
 msgstr "Spustit od levelu."
 
-#: ../src/mmad.cc:220
+#: ../src/mmad.cc:219
 msgid "Run in window (Default is fullscreen)"
 msgstr "Spustit v okne (vychodzie je na celu obrazovku"
 
-#: ../src/mmad.cc:221
+#: ../src/mmad.cc:220
 msgid "Mute sound."
 msgstr "Vypnut zvuk."
 
-#: ../src/mmad.cc:222
+#: ../src/mmad.cc:221
 msgid "Set resolution to 640, 800 or 1024"
 msgstr "Nastavit rozlisenia na 640, 800 alebo 1024"
 
-#: ../src/mmad.cc:223
+#: ../src/mmad.cc:222
 msgid "Mouse sensitivity, default 1.0"
 msgstr "Citlivost mysi, vychodzia 1.0"
 
-#: ../src/mmad.cc:224
+#: ../src/mmad.cc:223
 msgid "Displays framerate"
 msgstr " Zobrazovat rychlost snimkov"
 
-#: ../src/mmad.cc:225
+#: ../src/mmad.cc:224
 msgid "Prints current version number"
 msgstr "Zobrazi aktualne cislo verzie"
 
-#: ../src/mmad.cc:226
+#: ../src/mmad.cc:225
 msgid "Updates a map to the latest format"
 msgstr "Aktualizuje mapu na najnovsi format"
 
-#: ../src/mmad.cc:227
+#: ../src/mmad.cc:226
 msgid "Attempt to conserve memory usage"
 msgstr "Pokusi sa setrit spotrebu pamate"
 
-#: ../src/mmad.cc:228
+#: ../src/mmad.cc:227
 #, fuzzy
 msgid "Debug joystick status"
 msgstr "Pohnite joystickom hore"
 
-#: ../src/mmad.cc:229
+#: ../src/mmad.cc:228
 msgid "Correct for bad joysticks"
 msgstr "Oprava pre zle joysticky"
 
-#: ../src/mmad.cc:233
+#: ../src/mmad.cc:232
 msgid "Important keyboard shortcuts"
 msgstr "Dôležité klávesové skratky"
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Escape"
 msgstr "Escape"
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Soft quit"
 msgstr "Normálne ukončenie"
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "CapsLock"
 msgstr "CapsLock"
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "Unhide mouse pointer"
 msgstr "Zobraziť kurzor myši"
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "CTRL-q"
 msgstr "CTRL-q"
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "Quit the game immediately"
 msgstr "Okamžité ukončenie hry"
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "CTRL-f"
 msgstr "CTRL-f"
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "Toggle between fullscreen/windowed mode"
 msgstr "Prepína medzi plnoobrazovkovým a okenným režimom"
 
-#: ../src/mmad.cc:238
+#: ../src/mmad.cc:237
 msgid "Kill the ball"
 msgstr "Zrušiť guličku"
 
@@ -1077,286 +1125,286 @@ msgstr "Vitajte v hre Trackballs. "
 msgid "Using %s as gamedata directory."
 msgstr "Používam %s ako adresár s dátami hry."
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Speed ball"
 msgstr ""
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 #, fuzzy
 msgid "Extra jump"
 msgstr "Extra"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 #, fuzzy
 msgid "Spikes"
 msgstr "Bodce"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Glass ball"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Dizzy!"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Freeze!"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Floating"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 #, fuzzy
 msgid "Extra life"
 msgstr "Extra"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 #, fuzzy
 msgid "Small ball"
 msgstr "Malý kopec"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 #, fuzzy
 msgid "Large ball"
 msgstr "Veľký kopec"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Nitro"
 msgstr ""
 
-#: ../src/settingsMode.cc:82
+#: ../src/settingsMode.cc:84
 msgid "Game Settings"
 msgstr "Nastavenia hry"
 
-#: ../src/settingsMode.cc:92
+#: ../src/settingsMode.cc:94
 #, c-format
 msgid "Is resolution %dx%dx%d ok?"
 msgstr "Je rozlíšenie %dx%d%d v poriadku?"
 
-#: ../src/settingsMode.cc:95
+#: ../src/settingsMode.cc:97
 #, fuzzy, c-format
 msgid "Is resolution Auto-%d ok?"
 msgstr "Je rozlíšenie %dx%d%d v poriadku?"
 
-#: ../src/settingsMode.cc:99
+#: ../src/settingsMode.cc:101
 msgid "Ok, use this resolution"
 msgstr "Áno, použi toto rozlíšenie"
 
-#: ../src/settingsMode.cc:100
+#: ../src/settingsMode.cc:102
 msgid "No, revert to old resolution"
 msgstr "Nie, vráť sa k minulému rozlíšeniu"
 
-#: ../src/settingsMode.cc:102
+#: ../src/settingsMode.cc:104
 #, c-format
 msgid "Timeout in %d seconds"
 msgstr "Timeout %d sekúnd"
 
-#: ../src/settingsMode.cc:114
+#: ../src/settingsMode.cc:116
 msgid "Video"
 msgstr ""
 
-#: ../src/settingsMode.cc:121
+#: ../src/settingsMode.cc:123
 #, c-format
 msgid "Auto-%d"
 msgstr ""
 
-#: ../src/settingsMode.cc:123
+#: ../src/settingsMode.cc:125
 msgid "Resolution"
 msgstr "Rozlíšenie"
 
-#: ../src/settingsMode.cc:124
+#: ../src/settingsMode.cc:126
 msgid "Test this resolution"
 msgstr "Vyskúšať toto rozlíšenie"
 
-#: ../src/settingsMode.cc:127
+#: ../src/settingsMode.cc:129
 msgid "Fullscreen"
 msgstr "Celá obrazovka"
 
-#: ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:132
 msgid "VSync"
 msgstr ""
 
-#: ../src/settingsMode.cc:139
+#: ../src/settingsMode.cc:141
 #, c-format
 msgid "Frame rate"
 msgstr "Rýchlosť snímkov"
 
-#: ../src/settingsMode.cc:142
+#: ../src/settingsMode.cc:144
 #, c-format
 msgid "Frame time"
 msgstr ""
 
-#: ../src/settingsMode.cc:145
+#: ../src/settingsMode.cc:147
 msgid "Show FPS"
 msgstr "Zobraziť rýchlosť snímkov"
 
-#: ../src/settingsMode.cc:150
+#: ../src/settingsMode.cc:152
 msgid "Graphics"
 msgstr "Grafika"
 
-#: ../src/settingsMode.cc:155
+#: ../src/settingsMode.cc:157
 #, c-format
 msgid "None"
 msgstr "Žiadne"
 
-#: ../src/settingsMode.cc:158
+#: ../src/settingsMode.cc:160
 #, c-format
 msgid "Minimalistic"
 msgstr "Minimalistické"
 
-#: ../src/settingsMode.cc:161
+#: ../src/settingsMode.cc:163
 #, c-format
 msgid "Simple"
 msgstr "Jednoduché"
 
-#: ../src/settingsMode.cc:164
+#: ../src/settingsMode.cc:166
 #, c-format
 msgid "Standard"
 msgstr "Štandardné"
 
-#: ../src/settingsMode.cc:167
+#: ../src/settingsMode.cc:169
 #, c-format
 msgid "Extra"
 msgstr "Extra"
 
-#: ../src/settingsMode.cc:170
+#: ../src/settingsMode.cc:172
 #, c-format
 msgid "Everything"
 msgstr "Všetko"
 
-#: ../src/settingsMode.cc:173
+#: ../src/settingsMode.cc:175
 msgid "Details"
 msgstr "Detaily"
 
-#: ../src/settingsMode.cc:174
+#: ../src/settingsMode.cc:176
 msgid "Reflections"
 msgstr "Odrazy (beta)"
 
-#: ../src/settingsMode.cc:176
+#: ../src/settingsMode.cc:178
 msgid "Shadows"
 msgstr "Zobraziť rýchlosť snímkov"
 
-#: ../src/settingsMode.cc:183
+#: ../src/settingsMode.cc:185
 msgid "Controls"
 msgstr "Ovládanie"
 
-#: ../src/settingsMode.cc:186
+#: ../src/settingsMode.cc:188
 msgid "Use mouse"
 msgstr "Používať myš"
 
-#: ../src/settingsMode.cc:192
+#: ../src/settingsMode.cc:194
 msgid "Sensitivity"
 msgstr "Citlivosť"
 
-#: ../src/settingsMode.cc:199
+#: ../src/settingsMode.cc:201
 #, c-format
 msgid "+%d degrees"
 msgstr "+%d stupňov"
 
-#: ../src/settingsMode.cc:201
+#: ../src/settingsMode.cc:203
 #, c-format
 msgid "-%d degrees"
 msgstr "-%d stupňov"
 
-#: ../src/settingsMode.cc:202
+#: ../src/settingsMode.cc:204
 msgid "Steering"
 msgstr "Manévrovanie"
 
-#: ../src/settingsMode.cc:209
+#: ../src/settingsMode.cc:211
 #, c-format
 msgid "no joystick found"
 msgstr "joystick nebol nájdený"
 
-#: ../src/settingsMode.cc:213
+#: ../src/settingsMode.cc:215
 msgid "Joystick:"
 msgstr "Joystick:"
 
-#: ../src/settingsMode.cc:223
+#: ../src/settingsMode.cc:225
 msgid "Other"
 msgstr "Iné"
 
-#: ../src/settingsMode.cc:227
+#: ../src/settingsMode.cc:229
 msgid "Music volume"
 msgstr "Hlasitosť hudby"
 
-#: ../src/settingsMode.cc:229
+#: ../src/settingsMode.cc:231
 msgid "Effects volume"
 msgstr "Hlasitosť efektov"
 
-#: ../src/settingsMode.cc:231
+#: ../src/settingsMode.cc:233
 msgid "Language"
 msgstr "Jazyk"
 
-#: ../src/setupMode.cc:151
+#: ../src/setupMode.cc:203
 msgid "Setup new game"
 msgstr "Nastaviť novú hru"
 
-#: ../src/setupMode.cc:155
+#: ../src/setupMode.cc:208
 msgid "Player Name"
 msgstr "Meno hráča"
 
-#: ../src/setupMode.cc:161
+#: ../src/setupMode.cc:214
 msgid "N/A"
 msgstr "N/A"
 
-#: ../src/setupMode.cc:167
+#: ../src/setupMode.cc:220
 msgid "Level"
 msgstr "Level"
 
-#: ../src/setupMode.cc:175
+#: ../src/setupMode.cc:228
 msgid "Difficulty"
 msgstr "Náročnosť"
 
-#: ../src/setupMode.cc:180
+#: ../src/setupMode.cc:232
 msgid "Sandbox (Easy)"
 msgstr "Sandbox (Ľahká)"
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Normal)"
 msgstr "Sandbox (Bežná)"
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Hard)"
 msgstr "Sandbox (Ťažká)"
 
-#: ../src/setupMode.cc:183
+#: ../src/setupMode.cc:235
 msgid "Easy"
 msgstr "Ľahká"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Normal"
 msgstr "Bežná"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Hard"
 msgstr "Ťažká"
 
-#: ../src/setupMode.cc:188
-msgid "Start Game"
-msgstr "Spustiť hru"
-
-#: ../src/setupMode.cc:192
+#: ../src/setupMode.cc:241
 #, c-format
 msgid "Total games played: %d"
 msgstr "Všetkých odohraných hier: %d"
 
-#: ../src/setupMode.cc:196
+#: ../src/setupMode.cc:245
 #, c-format
 msgid "Average score: %d"
 msgstr "Priemerné skóre: %d"
 
-#: ../src/setupMode.cc:198
+#: ../src/setupMode.cc:247
 #, c-format
 msgid "Average score: N/A"
 msgstr "Priemerné skóre: nedostupné"
 
-#: ../src/setupMode.cc:201
+#: ../src/setupMode.cc:250
 #, c-format
 msgid "Levels completed: %d"
 msgstr "Hotových levelov: %d"
 
+#: ../src/setupMode.cc:262
+msgid "Start Game"
+msgstr "Spustiť hru"
+
 #: ../share/levels/bx.set:1 ../share/levels/bx1.scm:4
 msgid "Box-O'-Fun"
 msgstr ""
diff --git a/po/sv.po b/po/sv.po
index b5d2f8e..ef6c641 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: v1.1.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-06-25 20:27-0400\n"
+"POT-Creation-Date: 2017-10-14 23:50-0400\n"
 "PO-Revision-Date: 2017-06-25 20:17-0400\n"
 "Last-Translator: Mathias <matbr at home.se>\n"
 "Language-Team: Swedish <sv at li.org>\n"
@@ -19,15 +19,15 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 2.0.2\n"
 
-#: ../src/calibrateJoystickMode.cc:94
+#: ../src/calibrateJoystickMode.cc:105
 msgid "Calibrating Joystick"
 msgstr "Kalibrerar Joysticken"
 
-#: ../src/calibrateJoystickMode.cc:103
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Center joystick"
 msgstr "Centrera Joysticken"
 
-#: ../src/calibrateJoystickMode.cc:107
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Move joystick left"
 msgstr "Styr vänster"
 
@@ -35,28 +35,28 @@ msgstr "Styr vänster"
 msgid "Move joystick right"
 msgstr "Styr höger"
 
-#: ../src/calibrateJoystickMode.cc:115
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick up"
 msgstr "Styr upp"
 
-#: ../src/calibrateJoystickMode.cc:119
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick down"
 msgstr "Styr nedat"
 
-#: ../src/calibrateJoystickMode.cc:123
+#: ../src/calibrateJoystickMode.cc:118
 msgid "Press any button to continue"
 msgstr "Tryck valfri knapp för att fortsatta"
 
-#: ../src/calibrateJoystickMode.cc:125
+#: ../src/calibrateJoystickMode.cc:120
 msgid "Press escape to cancel"
 msgstr "Tryck escape för att avbryta"
 
-#: ../src/calibrateJoystickMode.cc:128
+#: ../src/calibrateJoystickMode.cc:122
 #, c-format
 msgid "now: %d %d"
 msgstr "nu: %d %d"
 
-#: ../src/calibrateJoystickMode.cc:133
+#: ../src/calibrateJoystickMode.cc:127
 #, c-format
 msgid "center: %d %d left: %d right: %d up: %d down: %d"
 msgstr "center: %d %d vänster: %d höger: %d up: %d ner: %d"
@@ -581,17 +581,17 @@ msgid "Quit without saving?"
 msgstr ""
 
 #: ../src/editWindows.cc:361 ../src/editWindows.cc:400
-#: ../src/editWindows.cc:447 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:175
-#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:447 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:177
+#: ../src/settingsMode.cc:179 ../src/settingsMode.cc:189
 msgid "Yes"
 msgstr "Ja"
 
 #: ../src/editWindows.cc:362 ../src/editWindows.cc:401
-#: ../src/editWindows.cc:448 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:136
-#: ../src/settingsMode.cc:175 ../src/settingsMode.cc:177
-#: ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:448 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:138
+#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:179
+#: ../src/settingsMode.cc:189
 #, c-format
 msgid "No"
 msgstr "Nej"
@@ -627,12 +627,16 @@ msgstr "Öppna"
 msgid "page %d / %d"
 msgstr ""
 
-#: ../src/enterHighScoreMode.cc:54
+#: ../src/enterHighScoreMode.cc:59
+msgid "High Score"
+msgstr ""
+
+#: ../src/enterHighScoreMode.cc:63
 #, fuzzy, c-format
 msgid "You got %d points"
 msgstr "%d poang"
 
-#: ../src/enterHighScoreMode.cc:59
+#: ../src/enterHighScoreMode.cc:66
 #, c-format
 msgid "Enter your name: %s"
 msgstr ""
@@ -641,180 +645,206 @@ msgstr ""
 msgid "John Doe"
 msgstr ""
 
-#: ../src/glHelp.cc:1266
+#: ../src/glHelp.cc:1264
 #, c-format
 msgid "Framerate: %.1f"
 msgstr "Framerate: %.1f"
 
-#: ../src/glHelp.cc:1268
+#: ../src/glHelp.cc:1266
 #, c-format
 msgid "Framerate unknown"
 msgstr "Okänd framerate"
 
-#: ../src/glHelp.cc:1270
+#: ../src/glHelp.cc:1268
 #, c-format
 msgid "%.1f ms/Frame"
 msgstr ""
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:183
 msgid "Your marble:"
 msgstr "Din kula"
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:184
 msgid "Steer this with your mouse, numpad or arrows. "
 msgstr "Styr den här med din mus, tangentbordet eller pilarna. "
 
-#: ../src/helpMode.cc:113
+#: ../src/helpMode.cc:185
 msgid "Left mouse or spacebar is jump."
 msgstr "Vänster knapp eller mellanslag för att hoppa."
 
-#: ../src/helpMode.cc:114
+#: ../src/helpMode.cc:186
 msgid "Shift gives top speed when using keyboard."
 msgstr "Shift ger högre fart med tangentbordet"
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:188
 msgid "Mr Black:"
 msgstr "Mr Black:"
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:189
 msgid "Your enemy. Defeat with Modpill - Spike."
 msgstr "Din fiende. Bekämpa med Modification - Taggar."
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:191
 msgid "Modpill Speed:"
 msgstr "Modifikation Hastighet:"
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:192
 msgid "Makes you go faster for short period of time."
 msgstr "Snabbare hastighet för en tid."
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:194
 msgid "Modpill Spikes:"
 msgstr "Modifikation Tagggar:"
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:195
 msgid "Weapon against Mr Black and grip for icy terrain."
 msgstr "Vapen mot Mr Black och bra grepp på is."
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:198
 msgid "Modpill Freeze:"
 msgstr "Modifikation Freeze:"
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:199
 msgid "This will freeze you - avoid it."
 msgstr "Får dig att frysa - undvik."
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:201
 msgid "Modpill Glass:"
 msgstr "Modifikation Glas:"
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:202
 msgid "Protects you from acid, but makes you more fragile."
 msgstr "Skyddar mot syra, men ömtålig."
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:204
 #, fuzzy
 msgid "Modpill Nitro:"
 msgstr "Modifikation Tagggar:"
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:205
 msgid "Move really fast. Active nitro with second button."
 msgstr ""
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:207
 msgid "Switch:"
 msgstr "Spak:"
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:208
 msgid "Activates/deactivates some object/element in the level."
 msgstr "Slår av/på någonting i banan."
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:211
 msgid "Moving spike:"
 msgstr "Rörlig spik:"
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:212
 msgid "Obstacle to avoid."
 msgstr "Hinder att undika."
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:214
 msgid "Flag:"
 msgstr "Flagga:"
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:215
 msgid "Collect for bonus points."
 msgstr "Samla för bonus poang."
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:218
 msgid "Normal terrain:"
 msgstr "Normal terrang:"
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:219
 msgid "Can be of any color and is safe to move on."
 msgstr "Kan ha olika färger och är säker att röra sig på."
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:221
 msgid "Acid terrain:"
 msgstr "Terräng Syra:"
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:222
 msgid "Will kill your marble unless you have a glass modpill."
 msgstr "Farlig om du inte har Modifikation Glas."
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:225
 msgid "Icy terrain:"
 msgstr "Terräng Is:"
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:226
 msgid "Slippery terrain unless you have a spikes modpill."
 msgstr "Halt om du inte har taggar."
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:228
 msgid "Sandy terrain:"
 msgstr "Terräng Sand:"
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:229
 msgid "Soft to land on but will slow you down."
 msgstr "Mjuk att landa på men långsam att röra sig i."
 
-#: ../src/helpMode.cc:128
+#: ../src/helpMode.cc:232
 msgid "Goal:"
 msgstr "Mål:"
 
-#: ../src/helpMode.cc:128
-msgid "Will take you to the next level. "
+#: ../src/helpMode.cc:233
+#, fuzzy
+msgid "Will take you to the next level."
 msgstr "Tar dig till nästa bana."
 
-#: ../src/helpMode.cc:129
+#: ../src/helpMode.cc:234
 msgid "Get here before time runs out."
 msgstr "Åk hit innann tiden har gatt ut."
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:237
 msgid "Force Field:"
 msgstr "Kraftfält"
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:238
 msgid "You cannot pass this unless you switch it off."
 msgstr "Kan inte passeras om du inte slår av den först."
 
-#: ../src/helpMode.cc:131
+#: ../src/helpMode.cc:239
 msgid "Some are lethal and some are one way."
 msgstr "Några är farliga, några enkelriktade."
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:242
+msgid "Cactus:"
+msgstr ""
+
+#: ../src/helpMode.cc:243
+#, fuzzy
+msgid "Spiky plant, lethal unless you have a spikes modpill."
+msgstr "Halt om du inte har taggar."
+
+#: ../src/helpMode.cc:246
+msgid "Bird:"
+msgstr ""
+
+#: ../src/helpMode.cc:247
+msgid "Kills balls it flies across unless they have spikes."
+msgstr ""
+
+#: ../src/helpMode.cc:250
+msgid "Teleport:"
+msgstr ""
+
+#: ../src/helpMode.cc:251
+msgid "Will send your marble somewhere else."
+msgstr ""
+
+#: ../src/helpMode.cc:254
 msgid "Tunnel:"
 msgstr "Tunnel:"
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:255
 msgid "Takes you places, sometimes with great speed."
 msgstr "Tar dig till andra platser, ibland snabbt."
 
-#: ../src/helpMode.cc:156
+#: ../src/helpMode.cc:285
 #, fuzzy
 msgid "More Help"
 msgstr "Hjälp"
 
-#: ../src/helpMode.cc:158 ../src/settingsMode.cc:239
+#: ../src/helpMode.cc:287 ../src/hofMode.cc:107 ../src/settingsMode.cc:242
 msgid "Back"
 msgstr ""
 
@@ -823,13 +853,17 @@ msgstr ""
 msgid "Anonymous Coward"
 msgstr ""
 
+#: ../src/hofMode.cc:89
+msgid "High Scores"
+msgstr ""
+
 # Level fardig
-#: ../src/hofMode.cc:108 ../src/setupMode.cc:159
+#: ../src/hofMode.cc:92 ../src/setupMode.cc:212
 #, fuzzy
 msgid "Level Set"
 msgstr "Banan avklarad"
 
-#: ../src/hofMode.cc:118
+#: ../src/hofMode.cc:101
 #, c-format
 msgid "%d points"
 msgstr "%d poang"
@@ -881,46 +915,60 @@ msgstr ""
 msgid "Good luck!"
 msgstr "Lycka till!"
 
-#: ../src/mainMode.cc:635
+#: ../src/mainMode.cc:581
+#, fuzzy
+msgid "Lives"
+msgstr "Liv kvar"
+
+#: ../src/mainMode.cc:581
+msgid "Score"
+msgstr ""
+
+#: ../src/mainMode.cc:581
+#, fuzzy
+msgid "Time left"
+msgstr "Tid kvar:"
+
+#: ../src/mainMode.cc:653
 #, c-format
 msgid "Level bonuses"
 msgstr "Level bonusar"
 
-#: ../src/mainMode.cc:637
+#: ../src/mainMode.cc:655
 #, c-format
 msgid "Lives left:"
 msgstr "Liv kvar"
 
-#: ../src/mainMode.cc:638
+#: ../src/mainMode.cc:656
 #, c-format
 msgid "%d x 100 = %d points"
 msgstr "%d x 100 = %d poang"
 
-#: ../src/mainMode.cc:639
+#: ../src/mainMode.cc:657
 #, c-format
 msgid "Time left:"
 msgstr "Tid kvar:"
 
-#: ../src/mainMode.cc:640
+#: ../src/mainMode.cc:658
 #, c-format
 msgid "%d minutes = %d points"
 msgstr "%d minuter = %d poang"
 
-#: ../src/mainMode.cc:642
+#: ../src/mainMode.cc:660
 #, c-format
 msgid "Difficulty:"
 msgstr "Svarighetsgrad"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "easy"
 msgstr "lätt"
 
-#: ../src/mainMode.cc:644 ../src/settingsMode.cc:197
+#: ../src/mainMode.cc:662 ../src/settingsMode.cc:199
 #, c-format
 msgid "normal"
 msgstr "normalt"
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "hard"
 msgstr "svårt"
 
@@ -975,99 +1023,99 @@ msgstr "Hjälp"
 msgid "Map Editor"
 msgstr ""
 
-#: ../src/mmad.cc:215
+#: ../src/mmad.cc:214
 msgid "Usage:"
 msgstr "Användning: "
 
-#: ../src/mmad.cc:216
+#: ../src/mmad.cc:215
 msgid "[-w, -m] [-e, -l -t <level>] [-r <width>] [-s <sensitivity>]"
 msgstr "[-w, -m] [-e, -l -t <level>] [-r <bredd>] [-s <känslighet>]"
 
-#: ../src/mmad.cc:218
+#: ../src/mmad.cc:217
 msgid "Display this usage information."
 msgstr "Visa användningsinformation."
 
-#: ../src/mmad.cc:219
+#: ../src/mmad.cc:218
 msgid "Start from level."
 msgstr "Starta från level."
 
-#: ../src/mmad.cc:220
+#: ../src/mmad.cc:219
 msgid "Run in window (Default is fullscreen)"
 msgstr "Kör i fönsterläge (Default är fullscreen)"
 
-#: ../src/mmad.cc:221
+#: ../src/mmad.cc:220
 msgid "Mute sound."
 msgstr "Inget ljud."
 
-#: ../src/mmad.cc:222
+#: ../src/mmad.cc:221
 msgid "Set resolution to 640, 800 or 1024"
 msgstr "Sätt upplösningen till 640, 800 or 1024 punkter"
 
-#: ../src/mmad.cc:223
+#: ../src/mmad.cc:222
 msgid "Mouse sensitivity, default 1.0"
 msgstr "Känslighet för musen, default är 1.0"
 
-#: ../src/mmad.cc:224
+#: ../src/mmad.cc:223
 msgid "Displays framerate"
 msgstr "Visa framerate"
 
-#: ../src/mmad.cc:225
+#: ../src/mmad.cc:224
 msgid "Prints current version number"
 msgstr "Skrivut nuvarande version number"
 
-#: ../src/mmad.cc:226
+#: ../src/mmad.cc:225
 msgid "Updates a map to the latest format"
 msgstr "Uppdaterar en karta till den senaste versionen"
 
-#: ../src/mmad.cc:227
+#: ../src/mmad.cc:226
 msgid "Attempt to conserve memory usage"
 msgstr "Spara på minnesanvändandet"
 
-#: ../src/mmad.cc:228
+#: ../src/mmad.cc:227
 msgid "Debug joystick status"
 msgstr ""
 
-#: ../src/mmad.cc:229
+#: ../src/mmad.cc:228
 msgid "Correct for bad joysticks"
 msgstr "Korrigera för dålig joystick"
 
-#: ../src/mmad.cc:233
+#: ../src/mmad.cc:232
 msgid "Important keyboard shortcuts"
 msgstr ""
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Escape"
 msgstr ""
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Soft quit"
 msgstr ""
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "CapsLock"
 msgstr ""
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "Unhide mouse pointer"
 msgstr ""
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "CTRL-q"
 msgstr ""
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "Quit the game immediately"
 msgstr ""
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "CTRL-f"
 msgstr ""
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "Toggle between fullscreen/windowed mode"
 msgstr ""
 
-#: ../src/mmad.cc:238
+#: ../src/mmad.cc:237
 msgid "Kill the ball"
 msgstr ""
 
@@ -1085,289 +1133,289 @@ msgstr "Välkommen till Trackballs."
 msgid "Using %s as gamedata directory."
 msgstr "Anvander direktory %s för speldata."
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Speed ball"
 msgstr ""
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 #, fuzzy
 msgid "Extra jump"
 msgstr "Extra"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 #, fuzzy
 msgid "Spikes"
 msgstr "Taggar"
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Glass ball"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Dizzy!"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Freeze!"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Floating"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 #, fuzzy
 msgid "Extra life"
 msgstr "Extra"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 #, fuzzy
 msgid "Small ball"
 msgstr "Liten kulle"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 #, fuzzy
 msgid "Large ball"
 msgstr "Stor kulle"
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Nitro"
 msgstr ""
 
-#: ../src/settingsMode.cc:82
+#: ../src/settingsMode.cc:84
 #, fuzzy
 msgid "Game Settings"
 msgstr "Inställningar"
 
-#: ../src/settingsMode.cc:92
+#: ../src/settingsMode.cc:94
 #, c-format
 msgid "Is resolution %dx%dx%d ok?"
 msgstr ""
 
-#: ../src/settingsMode.cc:95
+#: ../src/settingsMode.cc:97
 #, c-format
 msgid "Is resolution Auto-%d ok?"
 msgstr ""
 
-#: ../src/settingsMode.cc:99
+#: ../src/settingsMode.cc:101
 msgid "Ok, use this resolution"
 msgstr ""
 
-#: ../src/settingsMode.cc:100
+#: ../src/settingsMode.cc:102
 msgid "No, revert to old resolution"
 msgstr ""
 
-#: ../src/settingsMode.cc:102
+#: ../src/settingsMode.cc:104
 #, c-format
 msgid "Timeout in %d seconds"
 msgstr ""
 
-#: ../src/settingsMode.cc:114
+#: ../src/settingsMode.cc:116
 msgid "Video"
 msgstr ""
 
-#: ../src/settingsMode.cc:121
+#: ../src/settingsMode.cc:123
 #, c-format
 msgid "Auto-%d"
 msgstr ""
 
-#: ../src/settingsMode.cc:123
+#: ../src/settingsMode.cc:125
 msgid "Resolution"
 msgstr "Upplösning"
 
-#: ../src/settingsMode.cc:124
+#: ../src/settingsMode.cc:126
 msgid "Test this resolution"
 msgstr ""
 
-#: ../src/settingsMode.cc:127
+#: ../src/settingsMode.cc:129
 msgid "Fullscreen"
 msgstr "Fullskärm"
 
-#: ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:132
 msgid "VSync"
 msgstr ""
 
-#: ../src/settingsMode.cc:139
+#: ../src/settingsMode.cc:141
 #, c-format
 msgid "Frame rate"
 msgstr ""
 
-#: ../src/settingsMode.cc:142
+#: ../src/settingsMode.cc:144
 #, c-format
 msgid "Frame time"
 msgstr ""
 
-#: ../src/settingsMode.cc:145
+#: ../src/settingsMode.cc:147
 msgid "Show FPS"
 msgstr "Visa FPS"
 
-#: ../src/settingsMode.cc:150
+#: ../src/settingsMode.cc:152
 msgid "Graphics"
 msgstr "Grafik"
 
-#: ../src/settingsMode.cc:155
+#: ../src/settingsMode.cc:157
 #, c-format
 msgid "None"
 msgstr "Ingen"
 
-#: ../src/settingsMode.cc:158
+#: ../src/settingsMode.cc:160
 #, c-format
 msgid "Minimalistic"
 msgstr "Minimalistisk"
 
-#: ../src/settingsMode.cc:161
+#: ../src/settingsMode.cc:163
 #, c-format
 msgid "Simple"
 msgstr "Enkel"
 
-#: ../src/settingsMode.cc:164
+#: ../src/settingsMode.cc:166
 #, c-format
 msgid "Standard"
 msgstr "Standard"
 
-#: ../src/settingsMode.cc:167
+#: ../src/settingsMode.cc:169
 #, c-format
 msgid "Extra"
 msgstr "Extra"
 
-#: ../src/settingsMode.cc:170
+#: ../src/settingsMode.cc:172
 #, c-format
 msgid "Everything"
 msgstr "Allt"
 
-#: ../src/settingsMode.cc:173
+#: ../src/settingsMode.cc:175
 msgid "Details"
 msgstr "Detaljer"
 
-#: ../src/settingsMode.cc:174
+#: ../src/settingsMode.cc:176
 msgid "Reflections"
 msgstr "Reflektioner"
 
-#: ../src/settingsMode.cc:176
+#: ../src/settingsMode.cc:178
 msgid "Shadows"
 msgstr ""
 
-#: ../src/settingsMode.cc:183
+#: ../src/settingsMode.cc:185
 msgid "Controls"
 msgstr "Kontroller"
 
-#: ../src/settingsMode.cc:186
+#: ../src/settingsMode.cc:188
 msgid "Use mouse"
 msgstr "Använd musen"
 
-#: ../src/settingsMode.cc:192
+#: ../src/settingsMode.cc:194
 msgid "Sensitivity"
 msgstr "Känslighet"
 
-#: ../src/settingsMode.cc:199
+#: ../src/settingsMode.cc:201
 #, c-format
 msgid "+%d degrees"
 msgstr ""
 
-#: ../src/settingsMode.cc:201
+#: ../src/settingsMode.cc:203
 #, c-format
 msgid "-%d degrees"
 msgstr ""
 
-#: ../src/settingsMode.cc:202
+#: ../src/settingsMode.cc:204
 msgid "Steering"
 msgstr ""
 
-#: ../src/settingsMode.cc:209
+#: ../src/settingsMode.cc:211
 #, fuzzy, c-format
 msgid "no joystick found"
 msgstr "Styr nedat"
 
-#: ../src/settingsMode.cc:213
+#: ../src/settingsMode.cc:215
 msgid "Joystick:"
 msgstr ""
 
-#: ../src/settingsMode.cc:223
+#: ../src/settingsMode.cc:225
 msgid "Other"
 msgstr "Annat"
 
-#: ../src/settingsMode.cc:227
+#: ../src/settingsMode.cc:229
 msgid "Music volume"
 msgstr "Musik volym"
 
-#: ../src/settingsMode.cc:229
+#: ../src/settingsMode.cc:231
 msgid "Effects volume"
 msgstr "Ljudeffektsvolym"
 
-#: ../src/settingsMode.cc:231
+#: ../src/settingsMode.cc:233
 msgid "Language"
 msgstr ""
 
-#: ../src/setupMode.cc:151
+#: ../src/setupMode.cc:203
 msgid "Setup new game"
 msgstr ""
 
-#: ../src/setupMode.cc:155
+#: ../src/setupMode.cc:208
 msgid "Player Name"
 msgstr ""
 
-#: ../src/setupMode.cc:161
+#: ../src/setupMode.cc:214
 msgid "N/A"
 msgstr ""
 
-#: ../src/setupMode.cc:167
+#: ../src/setupMode.cc:220
 msgid "Level"
 msgstr ""
 
-#: ../src/setupMode.cc:175
+#: ../src/setupMode.cc:228
 #, fuzzy
 msgid "Difficulty"
 msgstr "Svarighetsgrad"
 
-#: ../src/setupMode.cc:180
+#: ../src/setupMode.cc:232
 msgid "Sandbox (Easy)"
 msgstr ""
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Normal)"
 msgstr ""
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Hard)"
 msgstr ""
 
-#: ../src/setupMode.cc:183
+#: ../src/setupMode.cc:235
 msgid "Easy"
 msgstr "Lätt"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Normal"
 msgstr "Normalt"
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Hard"
 msgstr "Svårt"
 
-#: ../src/setupMode.cc:188
-msgid "Start Game"
-msgstr ""
-
-#: ../src/setupMode.cc:192
+#: ../src/setupMode.cc:241
 #, c-format
 msgid "Total games played: %d"
 msgstr ""
 
-#: ../src/setupMode.cc:196
+#: ../src/setupMode.cc:245
 #, c-format
 msgid "Average score: %d"
 msgstr ""
 
-#: ../src/setupMode.cc:198
+#: ../src/setupMode.cc:247
 #, c-format
 msgid "Average score: N/A"
 msgstr ""
 
 # Level fardig
-#: ../src/setupMode.cc:201
+#: ../src/setupMode.cc:250
 #, fuzzy, c-format
 msgid "Levels completed: %d"
 msgstr "Banan avklarad"
 
+#: ../src/setupMode.cc:262
+msgid "Start Game"
+msgstr ""
+
 #: ../share/levels/bx.set:1 ../share/levels/bx1.scm:4
 msgid "Box-O'-Fun"
 msgstr ""
diff --git a/po/trackballs.pot b/po/trackballs.pot
index 9fe418b..d846756 100644
--- a/po/trackballs.pot
+++ b/po/trackballs.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-06-25 20:27-0400\n"
+"POT-Creation-Date: 2017-10-16 09:42-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -17,15 +17,15 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../src/calibrateJoystickMode.cc:94
+#: ../src/calibrateJoystickMode.cc:105
 msgid "Calibrating Joystick"
 msgstr ""
 
-#: ../src/calibrateJoystickMode.cc:103
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Center joystick"
 msgstr ""
 
-#: ../src/calibrateJoystickMode.cc:107
+#: ../src/calibrateJoystickMode.cc:111
 msgid "Move joystick left"
 msgstr ""
 
@@ -33,28 +33,28 @@ msgstr ""
 msgid "Move joystick right"
 msgstr ""
 
-#: ../src/calibrateJoystickMode.cc:115
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick up"
 msgstr ""
 
-#: ../src/calibrateJoystickMode.cc:119
+#: ../src/calibrateJoystickMode.cc:112
 msgid "Move joystick down"
 msgstr ""
 
-#: ../src/calibrateJoystickMode.cc:123
+#: ../src/calibrateJoystickMode.cc:118
 msgid "Press any button to continue"
 msgstr ""
 
-#: ../src/calibrateJoystickMode.cc:125
+#: ../src/calibrateJoystickMode.cc:120
 msgid "Press escape to cancel"
 msgstr ""
 
-#: ../src/calibrateJoystickMode.cc:128
+#: ../src/calibrateJoystickMode.cc:122
 #, c-format
 msgid "now: %d %d"
 msgstr ""
 
-#: ../src/calibrateJoystickMode.cc:133
+#: ../src/calibrateJoystickMode.cc:127
 #, c-format
 msgid "center: %d %d left: %d right: %d up: %d down: %d"
 msgstr ""
@@ -561,17 +561,17 @@ msgid "Quit without saving?"
 msgstr ""
 
 #: ../src/editWindows.cc:361 ../src/editWindows.cc:400
-#: ../src/editWindows.cc:447 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:175
-#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:447 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:177
+#: ../src/settingsMode.cc:179 ../src/settingsMode.cc:189
 msgid "Yes"
 msgstr ""
 
 #: ../src/editWindows.cc:362 ../src/editWindows.cc:401
-#: ../src/editWindows.cc:448 ../src/settingsMode.cc:128
-#: ../src/settingsMode.cc:131 ../src/settingsMode.cc:136
-#: ../src/settingsMode.cc:175 ../src/settingsMode.cc:177
-#: ../src/settingsMode.cc:187
+#: ../src/editWindows.cc:448 ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:133 ../src/settingsMode.cc:138
+#: ../src/settingsMode.cc:177 ../src/settingsMode.cc:179
+#: ../src/settingsMode.cc:189
 #, c-format
 msgid "No"
 msgstr ""
@@ -605,12 +605,16 @@ msgstr ""
 msgid "page %d / %d"
 msgstr ""
 
-#: ../src/enterHighScoreMode.cc:54
+#: ../src/enterHighScoreMode.cc:59
+msgid "High Score"
+msgstr ""
+
+#: ../src/enterHighScoreMode.cc:63
 #, c-format
 msgid "You got %d points"
 msgstr ""
 
-#: ../src/enterHighScoreMode.cc:59
+#: ../src/enterHighScoreMode.cc:66
 #, c-format
 msgid "Enter your name: %s"
 msgstr ""
@@ -619,178 +623,202 @@ msgstr ""
 msgid "John Doe"
 msgstr ""
 
-#: ../src/glHelp.cc:1266
+#: ../src/glHelp.cc:1264
 #, c-format
 msgid "Framerate: %.1f"
 msgstr ""
 
-#: ../src/glHelp.cc:1268
+#: ../src/glHelp.cc:1266
 #, c-format
 msgid "Framerate unknown"
 msgstr ""
 
-#: ../src/glHelp.cc:1270
+#: ../src/glHelp.cc:1268
 #, c-format
 msgid "%.1f ms/Frame"
 msgstr ""
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:183
 msgid "Your marble:"
 msgstr ""
 
-#: ../src/helpMode.cc:112
+#: ../src/helpMode.cc:184
 msgid "Steer this with your mouse, numpad or arrows. "
 msgstr ""
 
-#: ../src/helpMode.cc:113
+#: ../src/helpMode.cc:185
 msgid "Left mouse or spacebar is jump."
 msgstr ""
 
-#: ../src/helpMode.cc:114
+#: ../src/helpMode.cc:186
 msgid "Shift gives top speed when using keyboard."
 msgstr ""
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:188
 msgid "Mr Black:"
 msgstr ""
 
-#: ../src/helpMode.cc:115
+#: ../src/helpMode.cc:189
 msgid "Your enemy. Defeat with Modpill - Spike."
 msgstr ""
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:191
 msgid "Modpill Speed:"
 msgstr ""
 
-#: ../src/helpMode.cc:116
+#: ../src/helpMode.cc:192
 msgid "Makes you go faster for short period of time."
 msgstr ""
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:194
 msgid "Modpill Spikes:"
 msgstr ""
 
-#: ../src/helpMode.cc:117
+#: ../src/helpMode.cc:195
 msgid "Weapon against Mr Black and grip for icy terrain."
 msgstr ""
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:198
 msgid "Modpill Freeze:"
 msgstr ""
 
-#: ../src/helpMode.cc:118
+#: ../src/helpMode.cc:199
 msgid "This will freeze you - avoid it."
 msgstr ""
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:201
 msgid "Modpill Glass:"
 msgstr ""
 
-#: ../src/helpMode.cc:119
+#: ../src/helpMode.cc:202
 msgid "Protects you from acid, but makes you more fragile."
 msgstr ""
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:204
 msgid "Modpill Nitro:"
 msgstr ""
 
-#: ../src/helpMode.cc:120
+#: ../src/helpMode.cc:205
 msgid "Move really fast. Active nitro with second button."
 msgstr ""
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:207
 msgid "Switch:"
 msgstr ""
 
-#: ../src/helpMode.cc:121
+#: ../src/helpMode.cc:208
 msgid "Activates/deactivates some object/element in the level."
 msgstr ""
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:211
 msgid "Moving spike:"
 msgstr ""
 
-#: ../src/helpMode.cc:122
+#: ../src/helpMode.cc:212
 msgid "Obstacle to avoid."
 msgstr ""
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:214
 msgid "Flag:"
 msgstr ""
 
-#: ../src/helpMode.cc:123
+#: ../src/helpMode.cc:215
 msgid "Collect for bonus points."
 msgstr ""
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:218
 msgid "Normal terrain:"
 msgstr ""
 
-#: ../src/helpMode.cc:124
+#: ../src/helpMode.cc:219
 msgid "Can be of any color and is safe to move on."
 msgstr ""
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:221
 msgid "Acid terrain:"
 msgstr ""
 
-#: ../src/helpMode.cc:125
+#: ../src/helpMode.cc:222
 msgid "Will kill your marble unless you have a glass modpill."
 msgstr ""
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:225
 msgid "Icy terrain:"
 msgstr ""
 
-#: ../src/helpMode.cc:126
+#: ../src/helpMode.cc:226
 msgid "Slippery terrain unless you have a spikes modpill."
 msgstr ""
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:228
 msgid "Sandy terrain:"
 msgstr ""
 
-#: ../src/helpMode.cc:127
+#: ../src/helpMode.cc:229
 msgid "Soft to land on but will slow you down."
 msgstr ""
 
-#: ../src/helpMode.cc:128
+#: ../src/helpMode.cc:232
 msgid "Goal:"
 msgstr ""
 
-#: ../src/helpMode.cc:128
-msgid "Will take you to the next level. "
+#: ../src/helpMode.cc:233
+msgid "Will take you to the next level."
 msgstr ""
 
-#: ../src/helpMode.cc:129
+#: ../src/helpMode.cc:234
 msgid "Get here before time runs out."
 msgstr ""
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:237
 msgid "Force Field:"
 msgstr ""
 
-#: ../src/helpMode.cc:130
+#: ../src/helpMode.cc:238
 msgid "You cannot pass this unless you switch it off."
 msgstr ""
 
-#: ../src/helpMode.cc:131
+#: ../src/helpMode.cc:239
 msgid "Some are lethal and some are one way."
 msgstr ""
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:242
+msgid "Cactus:"
+msgstr ""
+
+#: ../src/helpMode.cc:243
+msgid "Spiky plant, lethal unless you have a spikes modpill."
+msgstr ""
+
+#: ../src/helpMode.cc:246
+msgid "Bird:"
+msgstr ""
+
+#: ../src/helpMode.cc:247
+msgid "Kills balls it flies across unless they have spikes."
+msgstr ""
+
+#: ../src/helpMode.cc:250
+msgid "Teleport:"
+msgstr ""
+
+#: ../src/helpMode.cc:251
+msgid "Will send your marble somewhere else."
+msgstr ""
+
+#: ../src/helpMode.cc:254
 msgid "Tunnel:"
 msgstr ""
 
-#: ../src/helpMode.cc:132
+#: ../src/helpMode.cc:255
 msgid "Takes you places, sometimes with great speed."
 msgstr ""
 
-#: ../src/helpMode.cc:156
+#: ../src/helpMode.cc:285
 msgid "More Help"
 msgstr ""
 
-#: ../src/helpMode.cc:158 ../src/settingsMode.cc:239
+#: ../src/helpMode.cc:287 ../src/hofMode.cc:107 ../src/settingsMode.cc:242
 msgid "Back"
 msgstr ""
 
@@ -799,11 +827,15 @@ msgstr ""
 msgid "Anonymous Coward"
 msgstr ""
 
-#: ../src/hofMode.cc:108 ../src/setupMode.cc:159
+#: ../src/hofMode.cc:89
+msgid "High Scores"
+msgstr ""
+
+#: ../src/hofMode.cc:92 ../src/setupMode.cc:212
 msgid "Level Set"
 msgstr ""
 
-#: ../src/hofMode.cc:118
+#: ../src/hofMode.cc:101
 #, c-format
 msgid "%d points"
 msgstr ""
@@ -854,46 +886,58 @@ msgstr ""
 msgid "Good luck!"
 msgstr ""
 
-#: ../src/mainMode.cc:635
+#: ../src/mainMode.cc:581
+msgid "Lives"
+msgstr ""
+
+#: ../src/mainMode.cc:581
+msgid "Score"
+msgstr ""
+
+#: ../src/mainMode.cc:581
+msgid "Time left"
+msgstr ""
+
+#: ../src/mainMode.cc:653
 #, c-format
 msgid "Level bonuses"
 msgstr ""
 
-#: ../src/mainMode.cc:637
+#: ../src/mainMode.cc:655
 #, c-format
 msgid "Lives left:"
 msgstr ""
 
-#: ../src/mainMode.cc:638
+#: ../src/mainMode.cc:656
 #, c-format
 msgid "%d x 100 = %d points"
 msgstr ""
 
-#: ../src/mainMode.cc:639
+#: ../src/mainMode.cc:657
 #, c-format
 msgid "Time left:"
 msgstr ""
 
-#: ../src/mainMode.cc:640
+#: ../src/mainMode.cc:658
 #, c-format
 msgid "%d minutes = %d points"
 msgstr ""
 
-#: ../src/mainMode.cc:642
+#: ../src/mainMode.cc:660
 #, c-format
 msgid "Difficulty:"
 msgstr ""
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "easy"
 msgstr ""
 
-#: ../src/mainMode.cc:644 ../src/settingsMode.cc:197
+#: ../src/mainMode.cc:662 ../src/settingsMode.cc:199
 #, c-format
 msgid "normal"
 msgstr ""
 
-#: ../src/mainMode.cc:644
+#: ../src/mainMode.cc:662
 msgid "hard"
 msgstr ""
 
@@ -942,99 +986,99 @@ msgstr ""
 msgid "Map Editor"
 msgstr ""
 
-#: ../src/mmad.cc:215
+#: ../src/mmad.cc:214
 msgid "Usage:"
 msgstr ""
 
-#: ../src/mmad.cc:216
+#: ../src/mmad.cc:215
 msgid "[-w, -m] [-e, -l -t <level>] [-r <width>] [-s <sensitivity>]"
 msgstr ""
 
-#: ../src/mmad.cc:218
+#: ../src/mmad.cc:217
 msgid "Display this usage information."
 msgstr ""
 
-#: ../src/mmad.cc:219
+#: ../src/mmad.cc:218
 msgid "Start from level."
 msgstr ""
 
-#: ../src/mmad.cc:220
+#: ../src/mmad.cc:219
 msgid "Run in window (Default is fullscreen)"
 msgstr ""
 
-#: ../src/mmad.cc:221
+#: ../src/mmad.cc:220
 msgid "Mute sound."
 msgstr ""
 
-#: ../src/mmad.cc:222
+#: ../src/mmad.cc:221
 msgid "Set resolution to 640, 800 or 1024"
 msgstr ""
 
-#: ../src/mmad.cc:223
+#: ../src/mmad.cc:222
 msgid "Mouse sensitivity, default 1.0"
 msgstr ""
 
-#: ../src/mmad.cc:224
+#: ../src/mmad.cc:223
 msgid "Displays framerate"
 msgstr ""
 
-#: ../src/mmad.cc:225
+#: ../src/mmad.cc:224
 msgid "Prints current version number"
 msgstr ""
 
-#: ../src/mmad.cc:226
+#: ../src/mmad.cc:225
 msgid "Updates a map to the latest format"
 msgstr ""
 
-#: ../src/mmad.cc:227
+#: ../src/mmad.cc:226
 msgid "Attempt to conserve memory usage"
 msgstr ""
 
-#: ../src/mmad.cc:228
+#: ../src/mmad.cc:227
 msgid "Debug joystick status"
 msgstr ""
 
-#: ../src/mmad.cc:229
+#: ../src/mmad.cc:228
 msgid "Correct for bad joysticks"
 msgstr ""
 
-#: ../src/mmad.cc:233
+#: ../src/mmad.cc:232
 msgid "Important keyboard shortcuts"
 msgstr ""
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Escape"
 msgstr ""
 
-#: ../src/mmad.cc:234
+#: ../src/mmad.cc:233
 msgid "Soft quit"
 msgstr ""
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "CapsLock"
 msgstr ""
 
-#: ../src/mmad.cc:235
+#: ../src/mmad.cc:234
 msgid "Unhide mouse pointer"
 msgstr ""
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "CTRL-q"
 msgstr ""
 
-#: ../src/mmad.cc:236
+#: ../src/mmad.cc:235
 msgid "Quit the game immediately"
 msgstr ""
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "CTRL-f"
 msgstr ""
 
-#: ../src/mmad.cc:237
+#: ../src/mmad.cc:236
 msgid "Toggle between fullscreen/windowed mode"
 msgstr ""
 
-#: ../src/mmad.cc:238
+#: ../src/mmad.cc:237
 msgid "Kill the ball"
 msgstr ""
 
@@ -1052,281 +1096,281 @@ msgstr ""
 msgid "Using %s as gamedata directory."
 msgstr ""
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Speed ball"
 msgstr ""
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Extra jump"
 msgstr ""
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Spikes"
 msgstr ""
 
-#: ../src/modPill.cc:122
+#: ../src/modPill.cc:123
 msgid "Glass ball"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Dizzy!"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Freeze!"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Floating"
 msgstr ""
 
-#: ../src/modPill.cc:123
+#: ../src/modPill.cc:124
 msgid "Extra life"
 msgstr ""
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Small ball"
 msgstr ""
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Large ball"
 msgstr ""
 
-#: ../src/modPill.cc:124
+#: ../src/modPill.cc:125
 msgid "Nitro"
 msgstr ""
 
-#: ../src/settingsMode.cc:82
+#: ../src/settingsMode.cc:84
 msgid "Game Settings"
 msgstr ""
 
-#: ../src/settingsMode.cc:92
+#: ../src/settingsMode.cc:94
 #, c-format
 msgid "Is resolution %dx%dx%d ok?"
 msgstr ""
 
-#: ../src/settingsMode.cc:95
+#: ../src/settingsMode.cc:97
 #, c-format
 msgid "Is resolution Auto-%d ok?"
 msgstr ""
 
-#: ../src/settingsMode.cc:99
+#: ../src/settingsMode.cc:101
 msgid "Ok, use this resolution"
 msgstr ""
 
-#: ../src/settingsMode.cc:100
+#: ../src/settingsMode.cc:102
 msgid "No, revert to old resolution"
 msgstr ""
 
-#: ../src/settingsMode.cc:102
+#: ../src/settingsMode.cc:104
 #, c-format
 msgid "Timeout in %d seconds"
 msgstr ""
 
-#: ../src/settingsMode.cc:114
+#: ../src/settingsMode.cc:116
 msgid "Video"
 msgstr ""
 
-#: ../src/settingsMode.cc:121
+#: ../src/settingsMode.cc:123
 #, c-format
 msgid "Auto-%d"
 msgstr ""
 
-#: ../src/settingsMode.cc:123
+#: ../src/settingsMode.cc:125
 msgid "Resolution"
 msgstr ""
 
-#: ../src/settingsMode.cc:124
+#: ../src/settingsMode.cc:126
 msgid "Test this resolution"
 msgstr ""
 
-#: ../src/settingsMode.cc:127
+#: ../src/settingsMode.cc:129
 msgid "Fullscreen"
 msgstr ""
 
-#: ../src/settingsMode.cc:130
+#: ../src/settingsMode.cc:132
 msgid "VSync"
 msgstr ""
 
-#: ../src/settingsMode.cc:139
+#: ../src/settingsMode.cc:141
 #, c-format
 msgid "Frame rate"
 msgstr ""
 
-#: ../src/settingsMode.cc:142
+#: ../src/settingsMode.cc:144
 #, c-format
 msgid "Frame time"
 msgstr ""
 
-#: ../src/settingsMode.cc:145
+#: ../src/settingsMode.cc:147
 msgid "Show FPS"
 msgstr ""
 
-#: ../src/settingsMode.cc:150
+#: ../src/settingsMode.cc:152
 msgid "Graphics"
 msgstr ""
 
-#: ../src/settingsMode.cc:155
+#: ../src/settingsMode.cc:157
 #, c-format
 msgid "None"
 msgstr ""
 
-#: ../src/settingsMode.cc:158
+#: ../src/settingsMode.cc:160
 #, c-format
 msgid "Minimalistic"
 msgstr ""
 
-#: ../src/settingsMode.cc:161
+#: ../src/settingsMode.cc:163
 #, c-format
 msgid "Simple"
 msgstr ""
 
-#: ../src/settingsMode.cc:164
+#: ../src/settingsMode.cc:166
 #, c-format
 msgid "Standard"
 msgstr ""
 
-#: ../src/settingsMode.cc:167
+#: ../src/settingsMode.cc:169
 #, c-format
 msgid "Extra"
 msgstr ""
 
-#: ../src/settingsMode.cc:170
+#: ../src/settingsMode.cc:172
 #, c-format
 msgid "Everything"
 msgstr ""
 
-#: ../src/settingsMode.cc:173
+#: ../src/settingsMode.cc:175
 msgid "Details"
 msgstr ""
 
-#: ../src/settingsMode.cc:174
+#: ../src/settingsMode.cc:176
 msgid "Reflections"
 msgstr ""
 
-#: ../src/settingsMode.cc:176
+#: ../src/settingsMode.cc:178
 msgid "Shadows"
 msgstr ""
 
-#: ../src/settingsMode.cc:183
+#: ../src/settingsMode.cc:185
 msgid "Controls"
 msgstr ""
 
-#: ../src/settingsMode.cc:186
+#: ../src/settingsMode.cc:188
 msgid "Use mouse"
 msgstr ""
 
-#: ../src/settingsMode.cc:192
+#: ../src/settingsMode.cc:194
 msgid "Sensitivity"
 msgstr ""
 
-#: ../src/settingsMode.cc:199
+#: ../src/settingsMode.cc:201
 #, c-format
 msgid "+%d degrees"
 msgstr ""
 
-#: ../src/settingsMode.cc:201
+#: ../src/settingsMode.cc:203
 #, c-format
 msgid "-%d degrees"
 msgstr ""
 
-#: ../src/settingsMode.cc:202
+#: ../src/settingsMode.cc:204
 msgid "Steering"
 msgstr ""
 
-#: ../src/settingsMode.cc:209
+#: ../src/settingsMode.cc:211
 #, c-format
 msgid "no joystick found"
 msgstr ""
 
-#: ../src/settingsMode.cc:213
+#: ../src/settingsMode.cc:215
 msgid "Joystick:"
 msgstr ""
 
-#: ../src/settingsMode.cc:223
+#: ../src/settingsMode.cc:225
 msgid "Other"
 msgstr ""
 
-#: ../src/settingsMode.cc:227
+#: ../src/settingsMode.cc:229
 msgid "Music volume"
 msgstr ""
 
-#: ../src/settingsMode.cc:229
+#: ../src/settingsMode.cc:231
 msgid "Effects volume"
 msgstr ""
 
-#: ../src/settingsMode.cc:231
+#: ../src/settingsMode.cc:233
 msgid "Language"
 msgstr ""
 
-#: ../src/setupMode.cc:151
+#: ../src/setupMode.cc:203
 msgid "Setup new game"
 msgstr ""
 
-#: ../src/setupMode.cc:155
+#: ../src/setupMode.cc:208
 msgid "Player Name"
 msgstr ""
 
-#: ../src/setupMode.cc:161
+#: ../src/setupMode.cc:214
 msgid "N/A"
 msgstr ""
 
-#: ../src/setupMode.cc:167
+#: ../src/setupMode.cc:220
 msgid "Level"
 msgstr ""
 
-#: ../src/setupMode.cc:175
+#: ../src/setupMode.cc:228
 msgid "Difficulty"
 msgstr ""
 
-#: ../src/setupMode.cc:180
+#: ../src/setupMode.cc:232
 msgid "Sandbox (Easy)"
 msgstr ""
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Normal)"
 msgstr ""
 
-#: ../src/setupMode.cc:181
+#: ../src/setupMode.cc:233
 msgid "Sandbox (Hard)"
 msgstr ""
 
-#: ../src/setupMode.cc:183
+#: ../src/setupMode.cc:235
 msgid "Easy"
 msgstr ""
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Normal"
 msgstr ""
 
-#: ../src/setupMode.cc:184
+#: ../src/setupMode.cc:236
 msgid "Hard"
 msgstr ""
 
-#: ../src/setupMode.cc:188
-msgid "Start Game"
-msgstr ""
-
-#: ../src/setupMode.cc:192
+#: ../src/setupMode.cc:241
 #, c-format
 msgid "Total games played: %d"
 msgstr ""
 
-#: ../src/setupMode.cc:196
+#: ../src/setupMode.cc:245
 #, c-format
 msgid "Average score: %d"
 msgstr ""
 
-#: ../src/setupMode.cc:198
+#: ../src/setupMode.cc:247
 #, c-format
 msgid "Average score: N/A"
 msgstr ""
 
-#: ../src/setupMode.cc:201
+#: ../src/setupMode.cc:250
 #, c-format
 msgid "Levels completed: %d"
 msgstr ""
 
+#: ../src/setupMode.cc:262
+msgid "Start Game"
+msgstr ""
+
 #: ../share/levels/bx.set:1 ../share/levels/bx1.scm:4
 msgid "Box-O'-Fun"
 msgstr ""
diff --git a/share/images/displayHighscoreBackground.jpg b/share/images/displayHighscoreBackground.jpg
index 1d543b0..0f875d3 100644
Binary files a/share/images/displayHighscoreBackground.jpg and b/share/images/displayHighscoreBackground.jpg differ
diff --git a/share/images/enterHighscoreBackground.jpg b/share/images/enterHighscoreBackground.jpg
deleted file mode 100644
index ea8ca48..0000000
Binary files a/share/images/enterHighscoreBackground.jpg and /dev/null differ
diff --git a/share/images/help0_1024.png b/share/images/help0_1024.png
deleted file mode 100644
index 0333680..0000000
Binary files a/share/images/help0_1024.png and /dev/null differ
diff --git a/share/images/help0_640.png b/share/images/help0_640.png
deleted file mode 100644
index 9c6b433..0000000
Binary files a/share/images/help0_640.png and /dev/null differ
diff --git a/share/images/help1_1024.png b/share/images/help1_1024.png
deleted file mode 100644
index ecb3012..0000000
Binary files a/share/images/help1_1024.png and /dev/null differ
diff --git a/share/images/help1_640.png b/share/images/help1_640.png
deleted file mode 100644
index 9cfac2c..0000000
Binary files a/share/images/help1_640.png and /dev/null differ
diff --git a/share/images/left_panel.png b/share/images/left_panel.png
deleted file mode 100644
index a68e30c..0000000
Binary files a/share/images/left_panel.png and /dev/null differ
diff --git a/share/images/trackballs-32x32.png b/share/images/trackballs-32x32.png
new file mode 100644
index 0000000..9cb9c13
Binary files /dev/null and b/share/images/trackballs-32x32.png differ
diff --git a/share/images/trackballs32x32.png b/share/images/trackballs32x32.png
deleted file mode 100644
index 7774c76..0000000
Binary files a/share/images/trackballs32x32.png and /dev/null differ
diff --git a/share/images/trackballs48x48.png b/share/images/trackballs48x48.png
deleted file mode 100644
index 867aef7..0000000
Binary files a/share/images/trackballs48x48.png and /dev/null differ
diff --git a/share/levels/Shop1.map b/share/levels/Shop1.map
index 9dee0b3..3213ec5 100644
Binary files a/share/levels/Shop1.map and b/share/levels/Shop1.map differ
diff --git a/share/levels/Shop2.map b/share/levels/Shop2.map
index 4abfea0..74d44f3 100644
Binary files a/share/levels/Shop2.map and b/share/levels/Shop2.map differ
diff --git a/share/levels/bonus.map b/share/levels/bonus.map
index 5cc057c..fcfd176 100644
Binary files a/share/levels/bonus.map and b/share/levels/bonus.map differ
diff --git a/share/levels/bonusb.map b/share/levels/bonusb.map
index 3bcddfe..61f532b 100644
Binary files a/share/levels/bonusb.map and b/share/levels/bonusb.map differ
diff --git a/share/levels/boot.scm b/share/levels/boot.scm
index 91935bb..b1111d5 100644
--- a/share/levels/boot.scm
+++ b/share/levels/boot.scm
@@ -27,3 +27,16 @@
             (multi-pipe (cdr coords) radius connectors))
           (multi-pipe (cdr coords) radius connectors))))))
           
+;; arguments are like (trigger . . . .)
+;; namely, position x y, radius of effect, and function to call
+;; the thunk is executed only the first time the player enters the
+;; radius and never again.
+;; useful to avoid overcreating a fixed object (pipe, teleporter)
+(define trigger-once
+  (lambda (x y r thunk)
+    (let ((first-time #t))
+      (trigger x y r
+        (lambda ()
+          (if first-time
+            (begin (set! first-time #f)
+              (thunk))))))))
diff --git a/share/levels/bx1.map b/share/levels/bx1.map
index 9f14817..6b8952f 100644
Binary files a/share/levels/bx1.map and b/share/levels/bx1.map differ
diff --git a/share/levels/bx2.map b/share/levels/bx2.map
index a58ebd3..0cd395d 100644
Binary files a/share/levels/bx2.map and b/share/levels/bx2.map differ
diff --git a/share/levels/bx3.map b/share/levels/bx3.map
index 14056ab..e0dd2fe 100644
Binary files a/share/levels/bx3.map and b/share/levels/bx3.map differ
diff --git a/share/levels/bx3.scm b/share/levels/bx3.scm
index e5e1854..efe9894 100644
--- a/share/levels/bx3.scm
+++ b/share/levels/bx3.scm
@@ -98,7 +98,7 @@
 ;; Trigger to access complex.
 
 (define blinker1 (add-colormodifier 3 128 124 0.5 1.0 0.5 1.0))
-(trigger 128 124 0.5 (lambda ()
+(trigger-once 128 124 0.5 (lambda ()
 (set-cell-heights 122 107 130 107 -3.5 -3.5 -3.5 -3.5)
 (set-cell-heights 122 106 130 106 -3.5 -3.5 -3.5 -3.5)
 (set-cell-heights 122 106 130 103 -3.0 -3.0 -3.0 -3.0)
@@ -113,7 +113,7 @@
 ;; Trigger to access 2nd pyramid.
 
 (define blinker2 (add-colormodifier 3 119 54 0.5 1.0 0.5 1.0))
-(trigger 119 54 0.5 (lambda ()
+(trigger-once 119 54 0.5 (lambda ()
 (set-cell-heights 87 119 101 119 -8.0 -8.0 -8.0 -8.0)
 (set-cell-heights 87 118 101 118 -8.0 -8.0 -8.0 -8.0)
 (set-cell-heights 87 117 101 117 -8.0 -8.0 -8.0 -8.0)
@@ -130,7 +130,7 @@
 ;; Trigger to access Arena.
 
 (define blinker3 (add-colormodifier 3 64 118 0.5 1.0 0.5 1.0))
-(trigger 65 118 0.5 (lambda ()
+(trigger-once 64 118 0.5 (lambda ()
 (set-cell-heights 57 102 77 102 -7.0 -7.0 -7.0 -7.0)
 (set-primary-color (sign (_ "You must enter the Arena.") 0.8 1.0 -0.1 64 118) 0.2 0.5 1.0 1.0)
 (set-onoff blinker3 #f)
@@ -138,7 +138,7 @@
 
 ;; Triggers to raise temple slide.
 
-(trigger 76 117 0.5 (lambda ()
+(trigger-once 76 117 0.5 (lambda ()
 (set-cell-heights 77 116 77 116 -5.0 -5.0 -5.5 -5.5)
 (set-cell-heights 77 117 77 117 -4.5 -5.0 -5.0 -5.5)
 (set-cell-heights 77 118 77 118 -5.0 -4.5 -5.5 -5.0)
@@ -151,7 +151,7 @@
 (set-cell-flag 79 119 86 116  *cell-sand* #t)
 (set-cell-flag 79 119 86 116  *cell-nogrid* #f)
 ))
-(trigger 75 117 0.5 (lambda ()
+(trigger-once 76 118 0.5 (lambda ()
 (set-cell-heights 77 116 77 116 -5.0 -5.0 -5.5 -5.5)
 (set-cell-heights 77 117 77 117 -4.5 -5.0 -5.0 -5.5)
 (set-cell-heights 77 118 77 118 -5.0 -4.5 -5.5 -5.0)
@@ -190,28 +190,28 @@
 ;;Triggers in Arena.
 
 (define blinker4 (add-colormodifier 3 103 73 0.5 1.0 0.5 1.0))
-(trigger 103 73 0.5 (lambda ()
+(trigger-once 103 73 0.5 (lambda ()
 (set-cell-heights 103 61 104 53 -3.5 -3.5 -3.5 -3.5)
 (set-primary-color (sign (_ "A wall has been lowered.") 0.8 1.0 -0.1 103 73) 0.2 0.5 1.0 1.0)
 (set-onoff blinker4 #f)
 ))
 
 (define blinker5 (add-colormodifier 3 103 92 0.5 1.0 0.5 1.0))
-(trigger 103 92 0.5 (lambda ()
+(trigger-once 103 92 0.5 (lambda ()
 (set-cell-heights 115 93 116 91 -1.5 -1.5 -1.5 -1.5)
 (set-primary-color (sign (_ "A wall has been lowered.") 0.8 1.0 -0.1 103 92) 0.2 0.5 1.0 1.0)
 (set-onoff blinker5 #f)
 ))
 
 (define blinker6 (add-colormodifier 3 83 73 0.5 1.0 0.5 1.0))
-(trigger 83 73 0.5 (lambda ()
+(trigger-once 83 73 0.5 (lambda ()
 (set-cell-heights 66 80 72 66 -0.5 -0.5 -0.5 -0.5)
 (set-primary-color (sign (_ "A roof has been raised.") 0.8 1.0 -0.1 83 73) 0.2 0.5 1.0 1.0)
 (set-onoff blinker6 #f)
 ))
 
 (define blinker7 (add-colormodifier 3 83 92 0.5 1.0 0.5 1.0))
-(trigger 83 92 0.5 (lambda ()
+(trigger-once 83 92 0.5 (lambda ()
 (set-cell-heights 76 146 86 146 -9.0 -9.0 -9.0 -9.0)
 (set-cell-heights 76 147 86 147 -8.5 -8.5 -8.5 -8.5)
 (set-cell-heights 76 148 86 148 -8.0 -8.0 -8.0 -8.0)
@@ -227,7 +227,7 @@
 ))
 
 (define blinker8 (add-colormodifier 3 75 162 0.5 1.0 0.5 1.0))
-(trigger 75 162 0.5 (lambda ()
+(trigger-once 75 162 0.5 (lambda ()
 (set-cell-heights 59 53 66 53 -4.0 -4.0 -4.0 -4.0)
 (set-cell-heights 59 52 66 52 -3.5 -3.5 -3.5 -3.5)
 (set-cell-heights 59 51 66 51 -3.0 -3.0 -3.0 -3.0)
@@ -244,7 +244,7 @@
 ;;Trigger to enter final temple.
 
 (define blinker9 (add-colormodifier 3 53 101 0.5 1.0 0.5 1.0))
-(trigger 53 101 0.5 (lambda ()
+(trigger-once 53 101 0.5 (lambda ()
 (set-cell-heights 119 77 125 77 4.0 4.0 4.0 4.0)
 (set-primary-color (sign (_ "The exit is now open.") 0.8 1.0 -0.1 53 101) 0.2 0.5 1.0 1.0)
 (set-onoff blinker9 #f)
diff --git a/share/levels/castle1.map b/share/levels/castle1.map
index 036f12a..bf693bb 100644
Binary files a/share/levels/castle1.map and b/share/levels/castle1.map differ
diff --git a/share/levels/castle1.scm b/share/levels/castle1.scm
index 412cc23..45dd15e 100644
--- a/share/levels/castle1.scm
+++ b/share/levels/castle1.scm
@@ -44,7 +44,7 @@
 (set-cell-wall-colors 0 0 255 255 3 .3 .3 .9)
 
 ;;Secret treasure
-(trigger 240.5 241.5 1.0 (lambda() (set-cell-heights 240 241 241 242 -1 -1 -1 -1)))
+(trigger-once 240.5 241.5 1.0 (lambda() (set-cell-heights 240 241 241 242 -1 -1 -1 -1)))
 (add-flag 240 241 50 #t 0.1) 
 (add-flag 240 242 50 #t 0.1) 
 (add-flag 241 241 50 #t 0.1) 
diff --git a/share/levels/castle2.map b/share/levels/castle2.map
index ed198be..0671b59 100644
Binary files a/share/levels/castle2.map and b/share/levels/castle2.map differ
diff --git a/share/levels/castle2.scm b/share/levels/castle2.scm
index 790041e..cbb2798 100644
--- a/share/levels/castle2.scm
+++ b/share/levels/castle2.scm
@@ -73,5 +73,5 @@
 (add-spike 244 247 0.4 0.0)
 
 ;;Secret Teleport
-(trigger 236 220 0.5 (lambda() (add-teleport 236 220 240 234 0.3)))
+(trigger-once 236 220 0.5 (lambda() (add-teleport 236 220 240 234 0.3)))
 
diff --git a/share/levels/castle3.map b/share/levels/castle3.map
index fdce240..b597bf1 100644
Binary files a/share/levels/castle3.map and b/share/levels/castle3.map differ
diff --git a/share/levels/castle3.scm b/share/levels/castle3.scm
index 4f6712f..b96052d 100644
--- a/share/levels/castle3.scm
+++ b/share/levels/castle3.scm
@@ -70,7 +70,7 @@
 (set-cell-wall-colors 0 0 255 255 3 .6 .3 .1)
 
 ;;Secret teleports
-(trigger 253 220 0.5 (lambda() (add-teleport 251 220 250 230 0.25)(add-teleport 251 230 252 220 0.25)))
+(trigger-once 253 220 0.5 (lambda() (add-teleport 251 220 250 230 0.25)(add-teleport 251 230 252 220 0.25)))
 
 ;;Bonus Life
 (add-modpill 246 229 *mod-extra-life* 10 0)
diff --git a/share/levels/castle4.map b/share/levels/castle4.map
index 4ef992f..aa4dea1 100644
Binary files a/share/levels/castle4.map and b/share/levels/castle4.map differ
diff --git a/share/levels/castle4.scm b/share/levels/castle4.scm
index 7c5d0b2..56e3bec 100644
--- a/share/levels/castle4.scm
+++ b/share/levels/castle4.scm
@@ -106,8 +106,8 @@
 (set-cell-heights  5 68  5 68 -2.0 -2.0 -2.0 -2.0 -2.0)
 ))
 
-(trigger 11 51 1.5 (lambda() (diamond 11 51)))
-(trigger 16 41 1.5 (lambda() (diamond 16 41)))
+(trigger-once 11 51 1.5 (lambda() (diamond 11 51)))
+(trigger-once 16 41 1.5 (lambda() (diamond 16 41)))
 
 
 ;; If you are lost in maze of PI, try this:
diff --git a/share/levels/child1.map b/share/levels/child1.map
index 08c9ff9..d77bd78 100644
Binary files a/share/levels/child1.map and b/share/levels/child1.map differ
diff --git a/share/levels/child2.map b/share/levels/child2.map
index 2527e51..22d0708 100644
Binary files a/share/levels/child2.map and b/share/levels/child2.map differ
diff --git a/share/levels/child3.map b/share/levels/child3.map
index c410bce..50d74db 100644
Binary files a/share/levels/child3.map and b/share/levels/child3.map differ
diff --git a/share/levels/child4.map b/share/levels/child4.map
index 1da45e0..767e8df 100644
Binary files a/share/levels/child4.map and b/share/levels/child4.map differ
diff --git a/share/levels/child5.map b/share/levels/child5.map
index fd3cd4f..05095a3 100644
Binary files a/share/levels/child5.map and b/share/levels/child5.map differ
diff --git a/share/levels/child6.map b/share/levels/child6.map
index 1ab1e32..184d7c2 100644
Binary files a/share/levels/child6.map and b/share/levels/child6.map differ
diff --git a/share/levels/child6.scm b/share/levels/child6.scm
index 21b2f6e..fa7a479 100644
--- a/share/levels/child6.scm
+++ b/share/levels/child6.scm
@@ -51,9 +51,9 @@
 (add-cyclic-platform 204 201 204 201 -5.0 -4.0 0.3 0.4)
 (add-cyclic-platform 198 200 198 200 -3.0 -2.0 0.5 0.6)
 
-(trigger 203 194 0.5 (lambda() (set-cell-heights 203 194 204 194 -7.5 -7.5 -7.5 -7.5 -7.5)))
+(trigger-once 203 194 0.5 (lambda() (set-cell-heights 203 194 204 194 -7.5 -7.5 -7.5 -7.5 -7.5)))
 
-(trigger 199 196 0.5 (lambda() (set-cell-heights 199 196 200 196 -6.0 -5.0 -6.0 -5.0 -5.0)))
+(trigger-once 199 196 0.5 (lambda() (set-cell-heights 199 196 200 196 -6.0 -5.0 -6.0 -5.0 -5.0)))
 
 (set-cell-wall-colors 185 194 190 203 0 .9 .9 .6)
 (set-cell-wall-colors 185 194 190 203 1 .9 .9 .6)
diff --git a/share/levels/con1.map b/share/levels/con1.map
index 9970246..2813832 100644
Binary files a/share/levels/con1.map and b/share/levels/con1.map differ
diff --git a/share/levels/con2.map b/share/levels/con2.map
index bf46399..a571adc 100644
Binary files a/share/levels/con2.map and b/share/levels/con2.map differ
diff --git a/share/levels/con3.map b/share/levels/con3.map
index 95b35b0..a7089d4 100644
Binary files a/share/levels/con3.map and b/share/levels/con3.map differ
diff --git a/share/levels/con4.map b/share/levels/con4.map
index ca077d8..34a5bc6 100644
Binary files a/share/levels/con4.map and b/share/levels/con4.map differ
diff --git a/share/levels/con5.map b/share/levels/con5.map
index b1fad03..e1df974 100644
Binary files a/share/levels/con5.map and b/share/levels/con5.map differ
diff --git a/share/levels/dn1.map b/share/levels/dn1.map
index fc3a3e4..aaa01fe 100644
Binary files a/share/levels/dn1.map and b/share/levels/dn1.map differ
diff --git a/share/levels/dn2.map b/share/levels/dn2.map
index 08b8db4..95e9924 100644
Binary files a/share/levels/dn2.map and b/share/levels/dn2.map differ
diff --git a/share/levels/dn3.map b/share/levels/dn3.map
index aca941e..5ec9235 100644
Binary files a/share/levels/dn3.map and b/share/levels/dn3.map differ
diff --git a/share/levels/dn4.map b/share/levels/dn4.map
index 76abe3e..4ea5be3 100644
Binary files a/share/levels/dn4.map and b/share/levels/dn4.map differ
diff --git a/share/levels/dn5.map b/share/levels/dn5.map
index bf2974d..2b324ec 100644
Binary files a/share/levels/dn5.map and b/share/levels/dn5.map differ
diff --git a/share/levels/dn6.map b/share/levels/dn6.map
index 55ce0df..dadf2c2 100644
Binary files a/share/levels/dn6.map and b/share/levels/dn6.map differ
diff --git a/share/levels/fourSeasons_1.map b/share/levels/fourSeasons_1.map
index db75cc3..502177d 100644
Binary files a/share/levels/fourSeasons_1.map and b/share/levels/fourSeasons_1.map differ
diff --git a/share/levels/fourSeasons_2.map b/share/levels/fourSeasons_2.map
index 5697eb6..733549a 100644
Binary files a/share/levels/fourSeasons_2.map and b/share/levels/fourSeasons_2.map differ
diff --git a/share/levels/fourSeasons_3.map b/share/levels/fourSeasons_3.map
index 90c9b7f..11fa6e5 100644
Binary files a/share/levels/fourSeasons_3.map and b/share/levels/fourSeasons_3.map differ
diff --git a/share/levels/frg1.map b/share/levels/frg1.map
index ddda222..14e4bc4 100644
Binary files a/share/levels/frg1.map and b/share/levels/frg1.map differ
diff --git a/share/levels/frg10.map b/share/levels/frg10.map
index 0492534..244abbd 100644
Binary files a/share/levels/frg10.map and b/share/levels/frg10.map differ
diff --git a/share/levels/frg2.map b/share/levels/frg2.map
index 71f4984..dcc27f4 100644
Binary files a/share/levels/frg2.map and b/share/levels/frg2.map differ
diff --git a/share/levels/frg3.map b/share/levels/frg3.map
index e6941c4..49092ff 100644
Binary files a/share/levels/frg3.map and b/share/levels/frg3.map differ
diff --git a/share/levels/frg4.map b/share/levels/frg4.map
index fd69eba..1fe3b98 100644
Binary files a/share/levels/frg4.map and b/share/levels/frg4.map differ
diff --git a/share/levels/frg5.map b/share/levels/frg5.map
index cf8c4c7..8b027bb 100644
Binary files a/share/levels/frg5.map and b/share/levels/frg5.map differ
diff --git a/share/levels/frg6.map b/share/levels/frg6.map
index ab23358..5a969b3 100644
Binary files a/share/levels/frg6.map and b/share/levels/frg6.map differ
diff --git a/share/levels/frg7.map b/share/levels/frg7.map
index 72d5fce..905e1ac 100644
Binary files a/share/levels/frg7.map and b/share/levels/frg7.map differ
diff --git a/share/levels/frg8.map b/share/levels/frg8.map
index ad5bd39..d8f1e2f 100644
Binary files a/share/levels/frg8.map and b/share/levels/frg8.map differ
diff --git a/share/levels/frg9.map b/share/levels/frg9.map
index a736524..9b87c19 100644
Binary files a/share/levels/frg9.map and b/share/levels/frg9.map differ
diff --git a/share/levels/frgb.map b/share/levels/frgb.map
index 0354045..a3e62b8 100644
Binary files a/share/levels/frgb.map and b/share/levels/frgb.map differ
diff --git a/share/levels/child1.map b/share/levels/help.map
similarity index 73%
copy from share/levels/child1.map
copy to share/levels/help.map
index 08c9ff9..bc5b007 100644
Binary files a/share/levels/child1.map and b/share/levels/help.map differ
diff --git a/share/levels/help.scm b/share/levels/help.scm
new file mode 100644
index 0000000..156ef77
--- /dev/null
+++ b/share/levels/help.scm
@@ -0,0 +1,169 @@
+;; This level contains the scenes used in the help menu
+(set-track-name "help")
+(set-author "msto")
+(add-flag 248 250 50 #t 0.1)
+(fog 1)
+
+;; Helper macros...
+(define step 16.)
+(define dx (lambda (s) (+ s (* xoff step))))
+(define dy (lambda (s) (+ s (* yoff step))))
+
+;; Exhibit A -- the Player
+
+(define xoff 0)
+(define yoff 0)
+
+(set-start-position (dx 4) (dy 4))
+(start-time 999999999)
+
+;; Exhibit B -- the Mr Blacks
+
+(define xoff 0)
+(define yoff 1)
+
+(define fenway (new-mr-black (dx 2.5) (dy 4.5)))
+(define qualbert (new-mr-black (dx 3.5) (dy 3.5)))
+(define justeaze (new-mr-black (dx 4.5) (dy 2.5)))
+(set-primary-color fenway 0.0 0.0 0.6 1.0)
+(set-primary-color qualbert 0. 0. 0. 1.0)
+(set-primary-color justeaze 1. 0.8 0.8 1.0)
+(set-modtime qualbert *mod-spike* -1.)
+(set-modtime justeaze *mod-small* -1.)
+(set-modtime justeaze *mod-nitro* -1.)
+
+(define metchley (new-mr-black (dx 5) (dy 5)))
+(set-modtime metchley *mod-large* -1.)
+(set-primary-color metchley 0.0 0.8 0.0 1.0)
+(set-texture metchley "track.png")
+
+
+;; Exhibit C -- Speed modpill
+
+(define xoff 1)
+(define yoff 0)
+
+(add-modpill (dx 4) (dy 4) *mod-speed* 3 2)
+
+
+;; Exhibit D -- Spike modpill
+
+(define xoff 1)
+(define yoff 1)
+
+(add-modpill (dx 4) (dy 4) *mod-spike* 3 2)
+
+;; Exhibit E -- Freeze modpill
+
+(define xoff 2)
+(define yoff 0)
+
+(add-modpill (dx 4) (dy 4) *mod-frozen* 3 2)
+
+
+;; Exhibit F -- Glass modpill
+
+(define xoff 2)
+(define yoff 1)
+
+(add-modpill (dx 4) (dy 4) *mod-glass* 3 2)
+
+;; Exhibit G -- Nitro modpill
+
+(define xoff 3)
+(define yoff 0)
+
+(add-modpill (dx 4) (dy 4) *mod-nitro* 3 2)
+
+
+;; Exhibit H -- Switch
+
+(define xoff 3)
+(define yoff 1)
+
+(define nop (lambda () #f))
+(set-primary-color (set-onoff (switch (dx 4.5) (dy 3.5) nop nop) #t) 0.5 0.5 0.5 1.0)
+(set-primary-color (set-onoff (switch (dx 3.5) (dy 4.5) nop nop) #f) 0.5 0.5 0.5 1.0)
+(set-primary-color (set-onoff (switch (dx 3.5) (dy 3.5) nop nop) #f) 1.0 1.0 0.2 1.0)
+(set-primary-color (set-onoff (switch (dx 4.5) (dy 4.5) nop nop) #t) 0.2 1.0 1.0 1.0)
+
+
+;; Exhibit I -- Spike
+
+(define xoff 4)
+(define yoff 0)
+
+(add-sidespike (dx 3) (dy 4) 0.3 0.5 2)
+(add-sidespike (dx 4) (dy 3) 0.2 0.4 4)
+(add-spike (dx 4) (dy 4) 0.1 0.3)
+
+
+
+
+;; Exhibit J -- Flag
+
+(define xoff 4)
+(define yoff 1)
+
+(set-primary-color (add-flag (dx 4) (dy 4) 50 #t 0.1) 0.0 1.0 0.0)
+(set-primary-color (add-flag (dx 3) (dy 5) 50 #t 0.1) 0.0 0.0 1.0)
+(set-primary-color (add-flag (dx 5) (dy 3) 50 #t 0.1) 1.0 0.0 0.0)
+
+
+
+;; Exhibit N -- Goal
+
+(define xoff 7)
+(define yoff 0)
+
+(add-goal (dx 3.2) (dy 4) #f "")
+(add-goal (dx 4) (dy 3.2) #t "")
+
+
+;; Exhibit O -- Force field
+
+(define xoff 7)
+(define yoff 1)
+
+(define ff1 (forcefield (dx 3) (dy 3.5) 0 0.0 1.0 0.0 1.0 *ff-bounce*))
+(set-primary-color ff1 0. 0. 1. 1.0)
+(define ff2 (forcefield (dx 5) (dy 3.5) 0 0.0 1.0 0.0 1.0 *ff-bounce*))
+(set-primary-color ff2 0. 1. 0. 1.0)
+
+
+;; Exhibit P -- Cactus
+
+(define xoff 8)
+(define yoff 0)
+
+(add-cactus (dx 3) (dy 5) 0.35)
+(add-cactus (dx 4) (dy 4) 0.55)
+(add-cactus (dx 5) (dy 3) 0.75)
+
+
+
+;; Exhibit Q -- Bird
+
+(define xoff 8)
+(define yoff 1)
+
+(add-bird (dx 3.3) (dy 4.5) (dx 4.5) (dy 2.7) 0.4 1.5)
+
+
+
+;; Exhibit R -- Teleport
+
+(define xoff 9)
+(define yoff 0)
+
+(add-teleport (dx 4) (dy 4) 224 252 0.3)
+
+
+;; Exhibit S -- Tunnel/Pipe
+
+(define xoff 9)
+(define yoff 1)
+
+(set-primary-color (pipe (dx 3) (dy 4.5) -6.1 (dx 4) (dy 5.0) -6.5 0.30) 1.0 1.0 1.0 1.0)
+(set-primary-color (pipe (dx 2.3) (dy 3) -7.0 (dx 5.5) (dy 3) -7.0 0.45) 0.5 0.5 0.5 0.9)
+
diff --git a/share/levels/jump1.map b/share/levels/jump1.map
index 9197888..3c711ea 100644
Binary files a/share/levels/jump1.map and b/share/levels/jump1.map differ
diff --git a/share/levels/jump2.map b/share/levels/jump2.map
index 896d36e..325d675 100644
Binary files a/share/levels/jump2.map and b/share/levels/jump2.map differ
diff --git a/share/levels/jump3.map b/share/levels/jump3.map
index 25ea4f2..b6b2af7 100644
Binary files a/share/levels/jump3.map and b/share/levels/jump3.map differ
diff --git a/share/levels/jump4.map b/share/levels/jump4.map
index fd9ce3d..9e86708 100644
Binary files a/share/levels/jump4.map and b/share/levels/jump4.map differ
diff --git a/share/levels/jump5.map b/share/levels/jump5.map
index ee5d576..9ee823b 100644
Binary files a/share/levels/jump5.map and b/share/levels/jump5.map differ
diff --git a/share/levels/ki1.map b/share/levels/ki1.map
index 2bc9e19..f09533e 100644
Binary files a/share/levels/ki1.map and b/share/levels/ki1.map differ
diff --git a/share/levels/ki2.map b/share/levels/ki2.map
index 87fb5f0..59e215a 100644
Binary files a/share/levels/ki2.map and b/share/levels/ki2.map differ
diff --git a/share/levels/ki3.map b/share/levels/ki3.map
index d737dfc..9905fa5 100644
Binary files a/share/levels/ki3.map and b/share/levels/ki3.map differ
diff --git a/share/levels/ki4.map b/share/levels/ki4.map
index 1c4dac2..560851a 100644
Binary files a/share/levels/ki4.map and b/share/levels/ki4.map differ
diff --git a/share/levels/ki5.map b/share/levels/ki5.map
index dfea7b0..5104e74 100644
Binary files a/share/levels/ki5.map and b/share/levels/ki5.map differ
diff --git a/share/levels/lv1.map b/share/levels/lv1.map
index fd95038..cdc6175 100644
Binary files a/share/levels/lv1.map and b/share/levels/lv1.map differ
diff --git a/share/levels/lv2.map b/share/levels/lv2.map
index 81bc633..860fd9e 100644
Binary files a/share/levels/lv2.map and b/share/levels/lv2.map differ
diff --git a/share/levels/lv3.map b/share/levels/lv3.map
index 473ecf2..495278e 100644
Binary files a/share/levels/lv3.map and b/share/levels/lv3.map differ
diff --git a/share/levels/lv4.map b/share/levels/lv4.map
index 85e8698..69f035a 100644
Binary files a/share/levels/lv4.map and b/share/levels/lv4.map differ
diff --git a/share/levels/lv5.map b/share/levels/lv5.map
index 62c6032..4f80ac7 100644
Binary files a/share/levels/lv5.map and b/share/levels/lv5.map differ
diff --git a/share/levels/lv6.map b/share/levels/lv6.map
index 4a174f3..aa058a9 100644
Binary files a/share/levels/lv6.map and b/share/levels/lv6.map differ
diff --git a/share/levels/lv7.map b/share/levels/lv7.map
index d7a4994..183a130 100644
Binary files a/share/levels/lv7.map and b/share/levels/lv7.map differ
diff --git a/share/levels/lv8.map b/share/levels/lv8.map
index ce432b8..38173c6 100644
Binary files a/share/levels/lv8.map and b/share/levels/lv8.map differ
diff --git a/share/levels/lv9.map b/share/levels/lv9.map
index 80a3c5d..4d0bdea 100644
Binary files a/share/levels/lv9.map and b/share/levels/lv9.map differ
diff --git a/share/levels/mhm1.map b/share/levels/mhm1.map
index 60bf870..ba635c1 100644
Binary files a/share/levels/mhm1.map and b/share/levels/mhm1.map differ
diff --git a/share/levels/mhm2.map b/share/levels/mhm2.map
index ba1757c..424cc28 100644
Binary files a/share/levels/mhm2.map and b/share/levels/mhm2.map differ
diff --git a/share/levels/mhm3.map b/share/levels/mhm3.map
index 07e0ca8..46cf2a4 100644
Binary files a/share/levels/mhm3.map and b/share/levels/mhm3.map differ
diff --git a/share/levels/mhm3.scm b/share/levels/mhm3.scm
index d0ac1bb..056c8db 100644
--- a/share/levels/mhm3.scm
+++ b/share/levels/mhm3.scm
@@ -243,7 +243,7 @@
 ;blinker & ramp.
 
 (define blinker (add-colormodifier 3 159 148 0.5 1.0 0.5 1.0))
-(trigger 158.5 147.5 0.5 (lambda ()
+(trigger-once 158.5 147.5 0.5 (lambda ()
 (set-cell-heights 164 184 164 186 -0.5 -0.5 0.0 0.0)
 (set-cell-heights 165 184 165 186 0.0 0.0 0.5 0.5)
 (set-cell-heights 166 184 166 186 0.5 0.5 1.0 1.0)
diff --git a/share/levels/motion1.map b/share/levels/motion1.map
index 8236b52..a54b170 100644
Binary files a/share/levels/motion1.map and b/share/levels/motion1.map differ
diff --git a/share/levels/sl1.map b/share/levels/sl1.map
index 3725bea..3505525 100644
Binary files a/share/levels/sl1.map and b/share/levels/sl1.map differ
diff --git a/share/levels/sl1.scm b/share/levels/sl1.scm
index 1acc963..27dec6c 100644
--- a/share/levels/sl1.scm
+++ b/share/levels/sl1.scm
@@ -161,7 +161,7 @@
 
 ;; roll over this spot to higher the four-colored field
 (define blinker (add-colormodifier 3 226 221 0.5 1.0 0.5 1.0))
-(trigger 226 221 0.5 (lambda ()
+(trigger-once 226 221 0.5 (lambda ()
 (set-cell-heights 231 215 234 218 -0.8 -0.8 -0.8 -0.8)
 (set-onoff blinker #f)
 ))
diff --git a/share/levels/sl2.map b/share/levels/sl2.map
index 17688d7..ea31b86 100644
Binary files a/share/levels/sl2.map and b/share/levels/sl2.map differ
diff --git a/share/levels/sl3.map b/share/levels/sl3.map
index cf7e151..f2def4e 100644
Binary files a/share/levels/sl3.map and b/share/levels/sl3.map differ
diff --git a/share/levels/sl4.map b/share/levels/sl4.map
index 15f1225..d520eda 100644
Binary files a/share/levels/sl4.map and b/share/levels/sl4.map differ
diff --git a/share/levels/sl5.map b/share/levels/sl5.map
index bc26756..dd522bb 100644
Binary files a/share/levels/sl5.map and b/share/levels/sl5.map differ
diff --git a/share/levels/sl5.scm b/share/levels/sl5.scm
index 9b86f49..068219e 100644
--- a/share/levels/sl5.scm
+++ b/share/levels/sl5.scm
@@ -79,7 +79,7 @@
 (add-teleport 48 97 96 78 0.2)
 
 (set-primary-color (add-flag 100 114 0 #t 0.1) 1.0 0.5 0.0)
-(trigger 100 114 0.3 (lambda () (scale-oxygen 3.0)))
+(trigger-once 100 114 0.3 (lambda () (scale-oxygen 3.0)))
 (sign (_ "Oxygen") 0.8 20.0 -1 100 114)
 
 (define mr-grey
diff --git a/share/levels/sl6.map b/share/levels/sl6.map
index 04dd49c..5b0e6ac 100644
Binary files a/share/levels/sl6.map and b/share/levels/sl6.map differ
diff --git a/share/levels/sl6.scm b/share/levels/sl6.scm
index 677bac2..d1b75c7 100644
--- a/share/levels/sl6.scm
+++ b/share/levels/sl6.scm
@@ -23,15 +23,11 @@
 
 
 ;; turning off the HQ entry Forcefield
-(define iced-once #f)
-(trigger 147.5 72.5 2.0
+(trigger-once 147.5 72.5 2.0
  (lambda ()
-  (if (not iced-once)
-    (begin
-      (set-cell-flag 144 72 149 77 *cell-ice* #t)
-      (set! iced-once #t))
+  (set-cell-flag 144 72 149 77 *cell-ice* #t)
  )
-))
+)
 
 
 
@@ -344,7 +340,7 @@
 (sign (_ "Bonus") 0.8 20.0 -1 232.5 108.5)
 
 
-(trigger 232 100 0.5
+(trigger-once 232 100 0.5
  (lambda ()
   (set-primary-color
    (pipe 221 100 4.7 228 108 4.7 0.4)
@@ -354,7 +350,6 @@
 
 
 
-
 (define mr-white
  (set-acceleration
   (set-modtime
@@ -463,7 +458,7 @@
 
 
 (define magic-platform
- (animator 0.2 0.0 0.0 3.3 8.7 *animator-stop*
+ (animator 0.2 0.0 0.0 2.8 8.7 *animator-stop*
   (lambda (v)
    (set-cell-heights 249 75 249 75 v v v v)
   )
@@ -576,7 +571,7 @@
 
 
 (define the-trigger
- (trigger 249 115 1.5
+ (trigger-once 249 115 1.5
   (lambda ()
    (set-horizon marwin 50.0)
   )
diff --git a/share/trackballs.6 b/share/trackballs.6
index 0db8026..9ddd0f0 100644
--- a/share/trackballs.6
+++ b/share/trackballs.6
@@ -1,13 +1,9 @@
 .\" This man page is a consise summary of Trackballs. Full documentation for the game and the editor can be found in the README.html file included in this package.
 .TH "trackballs" "6" "" "Mathias Broxwall" "Games"
 .SH "NAME"
-.LP 
-/trackballs/
-
-.br 
-A marble game for Linux that is similiar to the classic arcade game 'Marble Madness'.
+Trackballs \- marble game similar to the classic arcade game 'Marble Madness'
 .SH "SYNTAX"
-.LP 
+.LP
 trackballs [\-w, \-m] [\-e, \-l <level>] [\-r <width>] ...
 
   \-h  \-\-help         Display this usage information.
@@ -18,55 +14,56 @@ trackballs [\-w, \-m] [\-e, \-l <level>] [\-r <width>] ...
   \-r  \-\-resolution   Set resolution to 640, 800 or 1024
   \-s  \-\-sensitivity  Mouse sensitivity, default 1.0
   \-f  \-\-fps          Displays framerate
+  \-v  \-\-version      Indicate the current version number
 
 The last 5 options are all but obsolete as these can now be accessed through the games menu system.
 .SH "DESCRIPTION"
-.LP 
-Trackballs is a simple game similar to the classic Atari 1980's arcade game 'Marble Madness' (later released by Electronic Arts for the Amiga and other platforms). 
+.LP
+Trackballs is a simple game inspired by the classic Atari 1980's arcade game 'Marble Madness' (later released by Electronic Arts for the Amiga and other platforms).
 
-By steering a marble ball through a labyrinth filled with vicious hammers, pools of acid and other obstacles the player collects points. When the ball reaches the destination it continues to the next, more difficult track \- unless the time runs out. 
+By steering a marble ball through a labyrinth filled with sharp objects, pools of acid and other obstacles the player collects points. When the ball passes through the goal it continues to the next, more difficult track \- unless the time runs out.
 
-It should be noted that this game is _not_ intended to be a replica of Marble Madness but rather merely inspired by it. For instance the game uses 3D graphics even though the original game had no real use for it. Also we aim at making the game highly configurable by a scripting extension (Guile) and provide a simple editor by which new levels easily can be created. 
+It should be noted that this game is _not_ intended to be a replica of Marble Madness but rather merely inspired by it. For instance the game uses 3D graphics even though the original game had no real use for it. Also the game is fully programmable with a scripting extension (Guile), and includes a level editor with which to easily create new levels.
 .SH "FILES"
-.LP 
-Binary:				/usr/local/bin/trackballs
-.br 
-Shared files directory:	/usr/local/share/trackballs/
-.br 
-Settings directory:		~/.trackballs/
+.LP
+Binary: trackballs
+.br
+Shared files directory: /usr/local/share/trackballs/ or /usr/share/trackballs or /usr/share/games/trackballs
+.br
+Settings directory: ~/.trackballs/
 .SH "ENVIRONMENT VARIABLES"
-.LP 
-.TP 
+.LP
+.TP
 \fBGUILE_LOAD_PATH\fP
 Specifies the directory where the guile files are
 .SH "EXAMPLES"
-.LP 
+.LP
 To run this program the standard way type:
-.LP 
+.LP
     trackballs
-.LP 
+.LP
 Alternativly you edit a level using this command:
-.LP 
+.LP
     trackballs \-e steep
-.LP 
+.LP
 Alternativly you can test a level with:
-.LP 
+.LP
     trackballs \-l steep
 .SH "AUTHOR"
-.LP 
+.LP
 Mathias Broxvall <matbr at home.se>
 
 
 .SH "CONTRIBUTORS"
 Music and UI Graphics \- Dietrich Radel <radel at inet.net.nz>
-.br 
-Sound Effects \- Beno�t Rouits <brouits at free.fr>
+.br
+Sound Effects \- Benoît Rouits <brouits at free.fr>
 
 Packagers:
-.br 
+.br
 Mandrake \- Guillaume Bedot <guillaume.bedot at wanadoo.fr>
-.br 
+.br
 Debian \- Ari Pollak <ari at debian.org>
 .SH "SEE ALSO"
-.LP 
-Full documentation for the game and the editor can be found in the README.html file included in this package.
+.LP
+Full documentation for the game and the editor can be found in the documentation included with the source code.
diff --git a/src/animated.cc b/src/animated.cc
index 6c27743..25e43dc 100644
--- a/src/animated.cc
+++ b/src/animated.cc
@@ -87,6 +87,8 @@ void Animated::draw() {
     nVBOs = generateBuffers(idxVBOs, dataVBOs);
   }
   drawBuffers1(idxVBOs, dataVBOs);
+  /* For debug */
+  if (0) drawBoundingBox();
 }
 void Animated::draw2() {
   if (theFrameNumber != lastFrameNumber) {
@@ -104,6 +106,49 @@ void Animated::draw2() {
   }
   drawBuffers2(idxVBOs, dataVBOs);
 }
+void Animated::drawBoundingBox() {
+  if (activeView.calculating_shadows) return;
+
+  /* Create and fill buffers */
+  GLuint idxbuf, databuf;
+  glGenBuffers(1, &idxbuf);
+  glGenBuffers(1, &databuf);
+
+  GLfloat data[8][3];
+  ushort idxs[12][2];
+  for (int i = 0; i < 8; i++)
+    for (int j = 0; j < 3; j++) data[i][j] = position[j] + boundingBox[(i >> j) & 1][j];
+
+  ushort square[4][2] = {{0, 1}, {0, 2}, {2, 3}, {1, 3}};
+  for (int i = 0; i < 4; i++) {
+    idxs[i][0] = square[i][0];
+    idxs[i][1] = square[i][1];
+    idxs[i + 4][0] = i;
+    idxs[i + 4][1] = i + 4;
+    idxs[i + 8][0] = 4 + square[i][0];
+    idxs[i + 8][1] = 4 + square[i][1];
+  }
+
+  glBindBuffer(GL_ARRAY_BUFFER, databuf);
+  glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
+
+  glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, idxbuf);
+  glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(idxs), idxs, GL_STATIC_DRAW);
+
+  /* Draw buffers */
+  glEnable(GL_CULL_FACE);
+  glDisable(GL_BLEND);
+
+  setActiveProgramAndUniforms(shaderLine);
+  glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
+
+  glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, idxbuf);
+  glBindBuffer(GL_ARRAY_BUFFER, databuf);
+  glDrawElements(GL_LINES, 24, GL_UNSIGNED_SHORT, (void*)0);
+  /* Cleanup buffers */
+  glDeleteBuffers(1, &idxbuf);
+  glDeleteBuffers(1, &databuf);
+}
 void Animated::computeBoundingBox() {
   /* Use a default size 2x2x2 boundingbox around object */
   boundingBox[0][0] = -1.0;
diff --git a/src/animated.h b/src/animated.h
index 92c5a60..e9cceda 100644
--- a/src/animated.h
+++ b/src/animated.h
@@ -51,6 +51,7 @@ class Animated : public GameHook {
   /* Object drawing passes */
   void draw();
   void draw2();
+  void drawBoundingBox();
   /** Recomputes the bounding box of the object. Needed after changes in size */
   virtual void computeBoundingBox();
   void onRemove();
diff --git a/src/animatedCollection.cc b/src/animatedCollection.cc
new file mode 100644
index 0000000..1b89e6f
--- /dev/null
+++ b/src/animatedCollection.cc
@@ -0,0 +1,895 @@
+/* animatedCollection.cc
+   Routines for a collection of objects, esp. intersection finding
+
+   Copyright (C) 2017  Manuel Stoeckl
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+#include "animatedCollection.h"
+
+/* For std::sort, std::nth_element */
+#include <algorithm>
+
+static int AC_DEBUG = 0;
+static int SANITY_CHECK = 0;
+
+template<unsigned int D>
+struct Rectangle {
+  Real lower[D];
+  Real upper[D];
+  void* tag;
+};
+
+typedef struct {
+  Real r;
+  void* tag;
+} PtAscending;
+typedef struct {
+  Real r;
+  void* tag;
+} PtDescending;
+bool operator<(const PtAscending& l, const PtAscending& r) { return l.r < r.r; }
+bool operator<(const PtDescending& l, const PtDescending& r) { return l.r > r.r; }
+
+class SingleCycleAllocator {
+ public:
+  SingleCycleAllocator(size_t maxbytes, size_t istacklen) {
+    size_t nints = istacklen / sizeof(int) + 1;
+    data = new char[maxbytes];
+    istack = new int[nints];
+    index = 0;
+    stackdex = 0;
+    maxlen = maxbytes;
+    stacklen = istacklen;
+  }
+  ~SingleCycleAllocator() {
+    delete[] data;
+    delete[] istack;
+  }
+  void* allocate(size_t bytes) {
+    char* ret = &data[index];
+    index += bytes;
+    if (index >= maxlen) { error("Tried to allocate block %d over cap %d", bytes, maxlen); }
+    return ret;
+  }
+  template<class T>
+  T* allocateFor() {
+    return (T*)allocate(sizeof(T));
+  }
+  size_t used() { return index; }
+
+  void* stackPush(size_t bytes) {
+    size_t nints = bytes / sizeof(int) + 1;
+    void* r = (void*)&istack[stackdex];
+    stackdex += nints + 1;
+    if (index >= maxlen) {
+      error("Tried to acquire %d more stack bytes (limit %d)", nints, stackdex);
+    }
+    istack[stackdex - 1] = nints;
+    return r;
+  }
+  void stackPop() { stackdex -= istack[stackdex - 1] + 1; }
+
+ private:
+  char* data;
+  int* istack;
+  size_t index;
+  size_t maxlen;
+  size_t stackdex;
+  size_t stacklen;
+};
+
+/* The auxiliary tree for D=1 */
+class OverlapTree1D {
+ public:
+  OverlapTree1D() {
+    N = 0;
+    lendpoints = NULL;
+    rendpoints = NULL;
+  }
+  template<unsigned int K>
+  void init(const struct Rectangle<K>* rectangles, int* input, int iN,
+            SingleCycleAllocator* alloc) {
+    N = iN;
+    /* Since this is never modified, we use a sorted list rather than a tree */
+    lendpoints = (PtAscending*)alloc->allocate(sizeof(PtAscending) * N);
+    rendpoints = (PtDescending*)alloc->allocate(sizeof(PtDescending) * N);
+    for (int i = 0; i < N; i++) {
+      PtAscending lpt;
+      lpt.tag = rectangles[input[i]].tag;
+      lpt.r = rectangles[input[i]].lower[D - 1];
+      lendpoints[i] = lpt;
+      PtDescending rpt;
+      rpt.tag = rectangles[input[i]].tag;
+      rpt.r = rectangles[input[i]].upper[D - 1];
+      rendpoints[i] = rpt;
+    }
+    std::sort(lendpoints, lendpoints + N);
+    std::sort(rendpoints, rendpoints + N);
+  }
+  ~OverlapTree1D() {
+    delete[] lendpoints;
+    delete[] rendpoints;
+  }
+  operator bool() const { return N > 0; }
+
+  int allTags(void** acc) const {
+    for (int i = 0; i < N; i++) { acc[i] = lendpoints[i].tag; }
+    return N;
+  }
+  int numTags() const { return N; }
+  int leftEndsLeftOf(void** acc, Real ubound) const {
+    int nfound = 0;
+    for (int i = 0; i < N; i++) {
+      if (lendpoints[i].r <= ubound) {
+        acc[nfound] = lendpoints[i].tag;
+        nfound++;
+      } else {
+        break;
+      }
+    }
+    return nfound;
+  }
+  int rightEndsRightOf(void** acc, Real lbound) const {
+    int nfound = 0;
+    for (int i = 0; i < N; i++) {
+      if (rendpoints[i].r >= lbound) {
+        acc[nfound] = rendpoints[i].tag;
+        nfound++;
+      } else {
+        break;
+      }
+    }
+    return nfound;
+  }
+  void dumpTree(int depth = 0) const {
+    char* lsp = new char[2 * depth + 2];
+    memset(lsp, ' ', 2 * depth + 2);
+    lsp[2 * depth + 1] = '\0';
+    warning("%s>A %d", lsp, N);
+    for (int i = 0; i < N; i++) {
+      warning("%s - | %f %d | %f %d |", lsp, lendpoints[i].r, lendpoints[i].tag,
+              rendpoints[i].r, rendpoints[i].tag);
+    }
+    delete[] lsp;
+  }
+
+  static size_t maxAllocatedMemoryUse(size_t Nrects) {
+    return sizeof(OverlapTree1D) + sizeof(PtAscending) * Nrects +
+           sizeof(PtDescending) * Nrects;
+  }
+
+ private:
+  static const int D = 1;
+
+  int N;
+  PtAscending* lendpoints;
+  PtDescending* rendpoints;
+};
+
+template<unsigned int D>
+class DFoldRectangleTree;
+
+template<unsigned int D>
+class OverlapTree {
+ public:
+  /* Constructor and destructor are delayed */
+  OverlapTree() {
+    N = 0;
+    lendpoints = NULL;
+    rendpoints = NULL;
+    ltrees = NULL;
+    rtrees = NULL;
+    atree = NULL;
+  }
+  template<unsigned int K>
+  void init(const struct Rectangle<K>* rectangles, int* input, int N,
+            SingleCycleAllocator* alloc);
+  ~OverlapTree();
+  operator bool() const { return N > 0; }
+
+  DFoldRectangleTree<D - 1>* allTags() const { return atree; }
+  int leftEndsLeftOf(Real rbound, void** acc, Real low[D], Real high[D]) const;
+  int rightEndsRightOf(Real lbound, void** acc, Real low[D], Real high[D]) const;
+
+  void dumpTree(int depth = 0) const {
+    char* lsp = new char[2 * depth + 2];
+    memset(lsp, ' ', 2 * depth + 2);
+    lsp[2 * depth + 1] = '\0';
+    warning("%s>A %d", lsp, N);
+    for (int i = 0; i < N; i++) {
+      warning("%s - | %f | %f |", lsp, lendpoints[i].r, rendpoints[i].r);
+    }
+    atree->dumpTree(depth + 1);
+  }
+
+  static size_t maxAllocatedMemoryUse(size_t Nrects) {
+    size_t total = sizeof(OverlapTree<D>);
+    total += (sizeof(PtAscending) + sizeof(PtDescending)) * Nrects;
+    if (Nrects <= 1) {
+      total += DFoldRectangleTree<D - 1>::maxMemoryUse(1);
+      return total;
+    }
+
+    size_t j = 1;
+    while (j < Nrects) {
+      int ofsizej = 2 * Nrects / j;
+      total += ofsizej * DFoldRectangleTree<D - 1>::maxMemoryUse(j);
+      j *= 2;
+    }
+    total += sizeof(DFoldRectangleTree<D - 1>*) * j * 2;
+    return total;
+  }
+
+ private:
+  int N;
+  PtAscending* lendpoints;
+  PtDescending* rendpoints;
+  DFoldRectangleTree<D - 1>** ltrees;
+  DFoldRectangleTree<D - 1>** rtrees;
+  DFoldRectangleTree<D - 1>* atree;
+};
+
+template<unsigned int D>
+OverlapTree<D>::~OverlapTree() {
+  if (N > 1) {
+    int k = 1;
+    while (k < N) { k *= 2; }
+    for (int i = 0; i < k; i++) {
+      if (ltrees[i]) delete ltrees[i];
+      if (rtrees[i]) delete rtrees[i];
+    }
+    delete[] ltrees;
+    delete[] rtrees;
+  }
+  delete[] lendpoints;
+  delete[] rendpoints;
+  delete atree;
+}
+
+typedef enum {
+  NoContainedAncestors = 0,
+  RightOfFirstContainment = 1,
+  LeftOfFirstContainment = -1
+} AncTestValues;
+
+template<unsigned int D, unsigned int K>
+Real computeSplitpoint(const struct Rectangle<K>* rectangles, int* input, int N,
+                       SingleCycleAllocator* alloc) {
+  /* sort the 2d points and pick the center. */
+  Real* dco = (Real*)alloc->stackPush(sizeof(Real) * 2 * N);
+  for (int i = 0; i < N; i++) {
+    dco[2 * i] = rectangles[input[i]].lower[D - 1];
+    dco[2 * i + 1] = rectangles[input[i]].upper[D - 1];
+  }
+  /* Typically N<=4, in which case this is slower than sorting, but
+   * this is much faster for the few large N calls */
+  std::nth_element(dco, dco + N, dco + 2 * N);
+  Real upper = dco[N];
+  Real lower = dco[0];
+  for (int i = 1; i < N; i++) { lower = std::max(dco[i], lower); }
+  Real splitpoint = 0.5 * (lower + upper);
+  alloc->stackPop();
+  return splitpoint;
+}
+
+template<unsigned int D, unsigned int K>
+Real splitRectangles(const struct Rectangle<K>* rectangles, int* input, int N, int& nleft,
+                     int& noverlap, int& nright, SingleCycleAllocator* alloc) {
+  if (!N) { error("Must have rectangles to split"); }
+  nleft = 0;
+  nright = 0;
+  noverlap = 0;
+  if (N == 1) {
+    noverlap = 1;
+    return 0.5 * (rectangles[input[0]].lower[D - 1] + rectangles[input[0]].upper[D - 1]);
+  }
+
+  Real splitpoint = computeSplitpoint<D, K>(rectangles, input, N, alloc);
+
+  /* Divide list into three segments */
+  for (int i = 0; i < N; i++) {
+    int p = nleft + noverlap;
+    Real lbound = rectangles[input[p]].lower[D - 1];
+    Real ubound = rectangles[input[p]].upper[D - 1];
+    if (splitpoint > ubound) {
+      /* Rectangle entirely below the split point */
+      std::swap(input[p], input[nleft]);
+      nleft++;
+    } else if (splitpoint < lbound) {
+      /* Rectangle entirely above the split point */
+      std::swap(input[p], input[N - 1 - nright]);
+      nright++;
+    } else {
+      /* Rectangle overlaps the split point */
+      noverlap++;
+    }
+  }
+
+  if (nleft == N) { error("Left size fail: %d %d %d (%d)", nleft, noverlap, nright, N); }
+  if (nright == N) { error("Right size fail: %d %d %d (%d)", nleft, noverlap, nright, N); }
+  return splitpoint;
+}
+
+template<unsigned int D>
+class DFoldRectangleTree {
+ public:
+  template<unsigned int K>
+  DFoldRectangleTree(const struct Rectangle<K>* rectangles, int* input, int N,
+                     SingleCycleAllocator* alloc)
+      : auxtree(), lefttree(NULL), righttree(NULL) {
+    int nleft, noverlap, nright;
+    splitpoint = splitRectangles<D, K>(rectangles, input, N, nleft, noverlap, nright, alloc);
+
+    /* Construct left and right trees */
+    if (nleft) {
+      lefttree = alloc->allocateFor<DFoldRectangleTree<D> >();
+      new (lefttree) DFoldRectangleTree<D>(rectangles, &input[0], nleft, alloc);
+    }
+    if (nright) {
+      righttree = alloc->allocateFor<DFoldRectangleTree<D> >();
+      new (righttree)
+          DFoldRectangleTree<D>(rectangles, &input[nleft + noverlap], nright, alloc);
+    }
+
+    /* Project middle subtree down a dimension */
+    if (noverlap) { auxtree.init(rectangles, &input[nleft], noverlap, alloc); }
+  }
+  ~DFoldRectangleTree() {
+    if (lefttree) delete lefttree;
+    if (righttree) delete righttree;
+  }
+
+  /* This coordinate passes all tests, so drop down to the next coordinate */
+  int allsub(void** acc, Real low[D], Real high[D]) const {
+    int nfound = 0;
+    if (auxtree) { nfound += auxtree.allTags()->intersect(&acc[nfound], low, high); }
+    if (lefttree) { nfound += lefttree->allsub(&acc[nfound], low, high); }
+    if (righttree) { nfound += righttree->allsub(&acc[nfound], low, high); }
+    return nfound;
+  }
+
+  /* Returns the number of intersections found, and adds indices corresponding
+   * to the order of addition to the index accumulator. */
+  int intersect(void** acc, Real low[D], Real high[D],
+                AncTestValues _anctest = NoContainedAncestors) const {
+    /* Return the 'tag' list for the rectangles */
+    int nfound = 0;
+    Real lbound = low[D - 1];
+    Real rbound = high[D - 1];
+    if (AC_DEBUG) {
+      warning("intersect %d %f [%f,%f] %d %x", D, splitpoint, lbound, rbound, _anctest, this);
+    }
+
+    if (_anctest == LeftOfFirstContainment) {
+      /* An ancestor of this node is in [lbound,ubound],
+       * and the current splitpoint on the left branch relative to that node */
+      if (splitpoint >= lbound) {
+        if (lefttree)
+          nfound += lefttree->intersect(&acc[nfound], low, high, LeftOfFirstContainment);
+        if (auxtree) nfound += auxtree.allTags()->intersect(&acc[nfound], low, high);
+        if (righttree) nfound += righttree->allsub(&acc[nfound], low, high);
+      } else {
+        if (auxtree) nfound += auxtree.rightEndsRightOf(lbound, &acc[nfound], low, high);
+        if (righttree)
+          nfound += righttree->intersect(&acc[nfound], low, high, LeftOfFirstContainment);
+      }
+    } else if (_anctest == RightOfFirstContainment) {
+      /* An ancestor of this node is in [lbound,ubound],
+       * and the current splitpoint on the right branch relative to that node */
+      if (splitpoint <= rbound) {
+        if (righttree)
+          nfound += righttree->intersect(&acc[nfound], low, high, RightOfFirstContainment);
+        if (auxtree) nfound += auxtree.allTags()->intersect(&acc[nfound], low, high);
+        if (lefttree) nfound += lefttree->allsub(&acc[nfound], low, high);
+      } else {
+        if (auxtree) nfound += auxtree.leftEndsLeftOf(rbound, &acc[nfound], low, high);
+        if (lefttree)
+          nfound += lefttree->intersect(&acc[nfound], low, high, RightOfFirstContainment);
+      }
+    } else {
+      /* No ancestors contained in [lbound,ubound]. */
+      if (lbound <= splitpoint && splitpoint <= rbound) {
+        /* [lbound, splitpoint, rbound] */
+        if (lefttree)
+          nfound += lefttree->intersect(&acc[nfound], low, high, LeftOfFirstContainment);
+        if (auxtree) nfound += auxtree.allTags()->intersect(&acc[nfound], low, high);
+        if (righttree)
+          nfound += righttree->intersect(&acc[nfound], low, high, RightOfFirstContainment);
+      } else if (splitpoint <= lbound) {
+        /* splitpoint, [lbound,rbound] */
+        if (auxtree) nfound += auxtree.rightEndsRightOf(lbound, &acc[nfound], low, high);
+        if (righttree)
+          nfound += righttree->intersect(&acc[nfound], low, high, NoContainedAncestors);
+      } else if (splitpoint >= rbound) {
+        /* [lbound,rbound], splitpoint*/
+        if (auxtree) nfound += auxtree.leftEndsLeftOf(rbound, &acc[nfound], low, high);
+        if (lefttree)
+          nfound += lefttree->intersect(&acc[nfound], low, high, NoContainedAncestors);
+      } else {
+        error("branch failure");
+      }
+    }
+
+    if (AC_DEBUG && nfound) {
+      warning("yield %d %f -> %d %x", D, splitpoint, nfound, this);
+      for (int i = 0; i < nfound; i++) { warning("   yres %d", acc[i]); }
+    }
+    return nfound;
+  }
+
+  void dumpTree(int depth = 0) const {
+    char* lsp = new char[2 * depth + 2];
+    memset(lsp, ' ', 2 * depth + 2);
+    lsp[2 * depth + 1] = '\0';
+    warning("%s>%d %f %c %c %c", lsp, D, splitpoint, lefttree != NULL ? 'L' : '_',
+            auxtree != NULL ? 'A' : '_', righttree != NULL ? 'R' : '_');
+    if (lefttree) lefttree->dumpTree(depth + 1);
+    if (auxtree) auxtree.dumpTree(depth + 1);
+    if (righttree) righttree->dumpTree(depth + 1);
+    delete[] lsp;
+  }
+
+  int rectcount() const {
+    int s = 0;
+    if (lefttree) s += lefttree->rectcount();
+    if (righttree) s += righttree->rectcount();
+    if (auxtree) s += auxtree.allTags()->rectcount();
+    return s;
+  }
+
+  Real getSplitpoint() const { return splitpoint; }
+
+  static size_t maxMemoryUse(size_t Nrects) {
+    if (Nrects <= 1) {
+      return sizeof(DFoldRectangleTree<D>) + OverlapTree<D>::maxAllocatedMemoryUse(1);
+    }
+
+    /* We assume total is bounded by the two extreme cases */
+    size_t fully_split =
+        Nrects * (DFoldRectangleTree<D>::maxMemoryUse(1) + sizeof(DFoldRectangleTree<D>));
+    size_t fully_consolidated =
+        sizeof(DFoldRectangleTree<D>) + OverlapTree<D>::maxAllocatedMemoryUse(Nrects);
+
+    return std::max(fully_split, fully_consolidated);
+  }
+
+ private:
+  Real splitpoint;
+  OverlapTree<D> auxtree;
+  DFoldRectangleTree<D>* lefttree;
+  DFoldRectangleTree<D>* righttree;
+};
+
+template<>
+class DFoldRectangleTree<1> {
+ public:
+  template<unsigned int K>
+  DFoldRectangleTree<1>(const struct Rectangle<K>* rectangles, int* input, int N,
+                        SingleCycleAllocator* alloc)
+      : auxtree1d(), lefttree(NULL), righttree(NULL) {
+    int nleft, noverlap, nright;
+    splitpoint = splitRectangles<1, K>(rectangles, input, N, nleft, noverlap, nright, alloc);
+
+    /* Construct left and right trees */
+    if (nleft) {
+      lefttree = alloc->allocateFor<DFoldRectangleTree<1> >();
+      new (lefttree) DFoldRectangleTree<1>(rectangles, &input[0], nleft, alloc);
+    }
+    if (nright) {
+      righttree = alloc->allocateFor<DFoldRectangleTree<1> >();
+      new (righttree)
+          DFoldRectangleTree<1>(rectangles, &input[nleft + noverlap], nright, alloc);
+    }
+
+    /* Project middle subtree down a dimension */
+    if (noverlap) { auxtree1d.init(rectangles, &input[nleft], noverlap, alloc); }
+  }
+  ~DFoldRectangleTree<1>() {
+    if (lefttree) delete lefttree;
+    if (righttree) delete righttree;
+  }
+
+  /* Returns the number of intersections found, and adds indices corresponding
+   * to the order of addition to the index accumulator. */
+  int intersect(void** acc, Real low[1], Real high[1],
+                AncTestValues _anctest = NoContainedAncestors) const {
+    /* Return the 'tag' list for the rectangles */
+    int nfound = 0;
+    Real lbound = low[D - 1];
+    Real rbound = high[D - 1];
+    if (AC_DEBUG) {
+      warning("intersect %d %f [%f,%f] %d %x", D, splitpoint, lbound, rbound, _anctest, this);
+    }
+
+    /* Q: meta pass the ancestor info as `anctest` */
+    if (_anctest == LeftOfFirstContainment) {
+      /* An ancestor of this node is in [lbound,ubound],
+       * and the current splitpoint on the left branch relative to that node */
+      if (splitpoint >= lbound) {
+        /* [lbound, splitpoint, alpha, rbound] */
+        if (lefttree)
+          nfound += lefttree->intersect(&acc[nfound], low, high, LeftOfFirstContainment);
+        if (auxtree1d) nfound += auxtree1d.allTags(&acc[nfound]);
+        if (righttree) nfound += righttree->allTags(&acc[nfound]);
+      } else {
+        /* splitpoint, [lbound, alpha, rbound] */
+        if (auxtree1d) nfound += auxtree1d.rightEndsRightOf(&acc[nfound], lbound);
+        if (righttree)
+          nfound += righttree->intersect(&acc[nfound], low, high, LeftOfFirstContainment);
+      }
+    } else if (_anctest == RightOfFirstContainment) {
+      /* An ancestor of this node is in [lbound,ubound],
+       * and the current splitpoint on the right branch relative to that node */
+      if (splitpoint <= rbound) {
+        /* [lbound, alpha, splitpoint, rbound] */
+        if (righttree)
+          nfound += righttree->intersect(&acc[nfound], low, high, RightOfFirstContainment);
+        if (auxtree1d) nfound += auxtree1d.allTags(&acc[nfound]);
+        if (lefttree) nfound += lefttree->allTags(&acc[nfound]);
+      } else {
+        /* [lbound, alpha, rbound], splitpoint */
+        if (auxtree1d) nfound += auxtree1d.leftEndsLeftOf(&acc[nfound], rbound);
+        if (lefttree)
+          nfound += lefttree->intersect(&acc[nfound], low, high, RightOfFirstContainment);
+      }
+    } else {
+      /* No ancestors contained in [lbound,ubound]. */
+      if (lbound <= splitpoint && splitpoint <= rbound) {
+        /* [lbound, splitpoint, rbound] */
+        if (auxtree1d) nfound += auxtree1d.allTags(&acc[nfound]);
+        if (lefttree)
+          nfound += lefttree->intersect(&acc[nfound], low, high, LeftOfFirstContainment);
+        if (righttree)
+          nfound += righttree->intersect(&acc[nfound], low, high, RightOfFirstContainment);
+      } else if (splitpoint <= lbound) {
+        /* splitpoint, [lbound,rbound] */
+        if (auxtree1d) nfound += auxtree1d.rightEndsRightOf(&acc[nfound], lbound);
+        if (righttree)
+          nfound += righttree->intersect(&acc[nfound], low, high, NoContainedAncestors);
+      } else if (rbound <= splitpoint) {
+        /* [lbound,rbound], splitpoint*/
+        if (auxtree1d) nfound += auxtree1d.leftEndsLeftOf(&acc[nfound], rbound);
+        if (lefttree)
+          nfound += lefttree->intersect(&acc[nfound], low, high, NoContainedAncestors);
+      } else {
+        error("branch failure");
+      }
+    }
+
+    if (AC_DEBUG && nfound) {
+      warning("yield %d %f -> %d %x", D, splitpoint, nfound, this);
+      for (int i = 0; i < nfound; i++) { warning("   yres %d", acc[i]); }
+    }
+    return nfound;
+  }
+
+  void dumpTree(int depth = 0) const {
+    char* lsp = new char[2 * depth + 2];
+    memset(lsp, ' ', 2 * depth + 2);
+    lsp[2 * depth + 1] = '\0';
+    warning("%s>%d %f %c %c %c", lsp, D, splitpoint, lefttree != NULL ? 'L' : '_',
+            (bool)auxtree1d ? 'A' : '_', righttree != NULL ? 'R' : '_');
+    if (lefttree) lefttree->dumpTree(depth + 1);
+    if (auxtree1d) auxtree1d.dumpTree(depth + 1);
+    if (righttree) righttree->dumpTree(depth + 1);
+    delete[] lsp;
+  }
+
+  int allTags(void** acc) const {
+    int nfound = 0;
+    if (lefttree) nfound += lefttree->allTags(&acc[nfound]);
+    if (righttree) nfound += righttree->allTags(&acc[nfound]);
+    if (auxtree1d) nfound += auxtree1d.allTags(&acc[nfound]);
+    return nfound;
+  }
+
+  int rectcount() const {
+    int s = 0;
+    if (lefttree) s += lefttree->rectcount();
+    if (righttree) s += righttree->rectcount();
+    if (auxtree1d) s += auxtree1d.numTags();
+    if (s < 1) error("Need at least one rectangle");
+    return s;
+  }
+
+  Real getSplitpoint() const { return splitpoint; }
+
+  static size_t maxMemoryUse(size_t Nrects) {
+    if (Nrects <= 1) {
+      return sizeof(DFoldRectangleTree<D>) + OverlapTree1D::maxAllocatedMemoryUse(1);
+    }
+
+    /* We assume total is bounded by the two extreme cases */
+    size_t fully_split =
+        Nrects * (DFoldRectangleTree<D>::maxMemoryUse(1) + sizeof(DFoldRectangleTree<D>));
+    size_t fully_consolidated =
+        sizeof(DFoldRectangleTree<D>) + OverlapTree1D::maxAllocatedMemoryUse(Nrects);
+
+    return std::max(fully_split, fully_consolidated);
+  }
+
+ private:
+  static const int D = 1;
+
+  Real splitpoint;
+  OverlapTree1D auxtree1d;
+  DFoldRectangleTree<1>* lefttree;
+  DFoldRectangleTree<1>* righttree;
+};
+
+template<unsigned int D>
+template<unsigned int K>
+void OverlapTree<D>::init(const struct Rectangle<K>* rectangles, int* input, int iN,
+                          SingleCycleAllocator* alloc) {
+  N = iN;
+  lendpoints = (PtAscending*)alloc->allocate(sizeof(PtAscending) * N);
+  rendpoints = (PtDescending*)alloc->allocate(sizeof(PtDescending) * N);
+
+  for (int i = 0; i < N; i++) {
+    PtAscending lpt;
+    lpt.tag = (void*)(ptrdiff_t)input[i];
+    lpt.r = rectangles[input[i]].lower[D - 1];
+    lendpoints[i] = lpt;
+    PtDescending rpt;
+    rpt.tag = (void*)(ptrdiff_t)input[i];
+    rpt.r = rectangles[input[i]].upper[D - 1];
+    rendpoints[i] = rpt;
+  }
+  std::sort(lendpoints, lendpoints + N);
+  std::sort(rendpoints, rendpoints + N);
+
+  if (N > 1) {
+    int k = 1;
+    while (k < N) { k *= 2; }
+
+    ltrees =
+        (DFoldRectangleTree<D - 1>**)alloc->allocate(sizeof(DFoldRectangleTree<D - 1>*) * k);
+    rtrees =
+        (DFoldRectangleTree<D - 1>**)alloc->allocate(sizeof(DFoldRectangleTree<D - 1>*) * k);
+    for (int i = 0; i < k; i++) {
+      ltrees[i] = NULL;
+      rtrees[i] = NULL;
+    }
+
+    /* Construct all the trees */
+    int j = 1;
+    while (j < N) {
+      int S = k / (2 * j);
+
+      int* iscratch = (int*)alloc->stackPush(sizeof(int) * S);
+      for (int p = 0; S * (2 * p + 1) < N; p++) {
+        /* Create left subtrees of size S */
+        for (int i = 0; i < S; i++) { iscratch[i] = (ptrdiff_t)lendpoints[S * 2 * p + i].tag; }
+        ltrees[j - 1 + p] = alloc->allocateFor<DFoldRectangleTree<D - 1> >();
+        new (ltrees[j - 1 + p]) DFoldRectangleTree<D - 1>(rectangles, iscratch, S, alloc);
+
+        /* Create right subtrees of size S */
+        for (int i = 0; i < S; i++) { iscratch[i] = (ptrdiff_t)rendpoints[S * 2 * p + i].tag; }
+        rtrees[j - 1 + p] = alloc->allocateFor<DFoldRectangleTree<D - 1> >();
+        new (rtrees[j - 1 + p]) DFoldRectangleTree<D - 1>(rectangles, iscratch, S, alloc);
+      }
+      alloc->stackPop();
+
+      j *= 2;
+    }
+
+  } else {
+    ltrees = NULL;
+    rtrees = NULL;
+  }
+  atree = alloc->allocateFor<DFoldRectangleTree<D - 1> >();
+  new (atree) DFoldRectangleTree<D - 1>(rectangles, input, N, alloc);
+}
+
+template<unsigned int D>
+int OverlapTree<D>::leftEndsLeftOf(Real rbound, void** acc, Real low[D], Real high[D]) const {
+  /* lendpoints in ascending order */
+  /* fast cases, all and nothing */
+  if (lendpoints[N - 1].r <= rbound) {
+    if (AC_DEBUG) {
+      warning("triv lelo %f <= %f | %d %d", lendpoints[N - 1].r, rbound, D,
+              atree->rectcount());
+    }
+    return atree->intersect(&acc[0], low, high);
+  }
+  if (rbound < lendpoints[0].r) {
+    if (AC_DEBUG) { warning("triv lelo %f < %f | %d", rbound, lendpoints[0].r, D); }
+    return 0;
+  }
+
+  /* simulateneously binary search and build tree list  */
+  int k = 1;
+  while (2 * k < N) { k *= 2; }
+
+  int j = 0;
+  int v = 1;
+  int nfound = 0;
+  while (k > 0) {
+    if (j + k - 1 >= N) {
+      v = v * 2;
+    } else if (lendpoints[j + k - 1].r <= rbound) {
+      if (!ltrees[v - 1]) error("Null tree");
+      nfound += ltrees[v - 1]->intersect(&acc[nfound], low, high);
+      j = j + k;
+      v = v * 2 + 1;
+    } else {
+      v = v * 2;
+    }
+    k = k / 2;
+  }
+  if (AC_DEBUG) { warning("nontriv lelo %f D=%d nfo=%d", rbound, D, nfound); }
+  return nfound;
+}
+template<unsigned int D>
+int OverlapTree<D>::rightEndsRightOf(Real lbound, void** acc, Real low[D],
+                                     Real high[D]) const {
+  /* rendpoints in descending order */
+  /* fast cases, all and nothing */
+  if (rendpoints[N - 1].r >= lbound) {
+    if (AC_DEBUG) {
+      warning("triv rero %f >= %f | %d %f %d", rendpoints[N - 1].r, lbound, D,
+              atree->getSplitpoint(), atree->rectcount());
+    }
+    return atree->intersect(&acc[0], low, high);
+  }
+  if (lbound > rendpoints[0].r) {
+    if (AC_DEBUG) { warning("triv rero %f > %f | %d", lbound, rendpoints[0].r, D); }
+    return 0;
+  }
+
+  /* simulateneously binary search and build tree list  */
+  int k = 1;
+  while (2 * k < N) { k *= 2; }
+
+  int j = 0;
+  int v = 1;
+  int nfound = 0;
+  while (k > 0) {
+    if (j + k - 1 >= N) {
+      v = v * 2;
+    } else if (rendpoints[j + k - 1].r >= lbound) {
+      if (!rtrees[v - 1]) error("Null tree");
+      nfound += rtrees[v - 1]->intersect(&acc[nfound], low, high);
+      j = j + k;
+      v = v * 2 + 1;
+    } else {
+      v = v * 2;
+    }
+    k = k / 2;
+  }
+  if (AC_DEBUG) { warning("nontriv rero %f D=%d nfo=%d", lbound, D, nfound); }
+  return nfound;
+}
+
+AnimatedCollection::AnimatedCollection()
+    : store(), map(NULL), alloc(NULL), retlist(NULL), ntot(0) {}
+
+AnimatedCollection::~AnimatedCollection() {
+  if (alloc) delete (SingleCycleAllocator*)alloc;
+  if (retlist) delete[] retlist;
+}
+
+void AnimatedCollection::insert(Animated* a) { store.insert(a); }
+
+void AnimatedCollection::remove(Animated* a) { store.erase(a); }
+
+static struct Rectangle<3>* staticinput = NULL;
+
+static struct Rectangle<3> rectFromAnim(const Animated* a) {
+  struct Rectangle<3> r;
+  r.tag = (void*)a;
+  /* Reverse dimension order to avoid Z-clustering */
+  r.lower[2] = a->position[0] + a->boundingBox[0][0];
+  r.upper[2] = a->position[0] + a->boundingBox[1][0];
+  r.lower[1] = a->position[1] + a->boundingBox[0][1];
+  r.upper[1] = a->position[1] + a->boundingBox[1][1];
+  r.lower[0] = a->position[2] + a->boundingBox[0][2];
+  r.upper[0] = a->position[2] + a->boundingBox[1][2];
+
+  for (int i = 0; i < 3; i++) {
+    if (r.lower[i] > r.upper[i]) { error("Impossible rectangle"); }
+  }
+  return r;
+}
+
+void AnimatedCollection::recalculateBboxMap() {
+  if (alloc) {
+    delete (SingleCycleAllocator*)alloc;
+    alloc = NULL;
+    map = NULL;
+  }
+
+  ntot = store.size();
+  struct Rectangle<3>* input = new struct Rectangle<3>[ntot];
+  int* rect_indices = new int[ntot];
+  std::set<Animated*>::iterator iter = store.begin();
+  std::set<Animated*>::iterator end = store.end();
+  for (int i = 0; iter != end; iter++, i++) {
+    struct Rectangle<3> r = rectFromAnim(*iter);
+    input[i] = r;
+    rect_indices[i] = i;
+  }
+  if (SANITY_CHECK) {
+    if (staticinput) delete[] staticinput;
+    staticinput = new struct Rectangle<3>[ntot];
+    memcpy(staticinput, input, sizeof(struct Rectangle<3>) * ntot);
+  }
+
+  /* For < 200 entities, maxmem < 5MB, and in practice ~200Kb is used */
+  size_t maxmem = DFoldRectangleTree<3>::maxMemoryUse(ntot);
+  size_t nstack = (ntot + 1) * (sizeof(int) * 3 + sizeof(Real) * 2);
+  alloc = new SingleCycleAllocator(maxmem, nstack);
+  map = ((SingleCycleAllocator*)alloc)->allocate(sizeof(DFoldRectangleTree<3>));
+  new (map) DFoldRectangleTree<3>(input, rect_indices, ntot, (SingleCycleAllocator*)alloc);
+  size_t usage = ((SingleCycleAllocator*)alloc)->used();
+  (void)usage;
+  delete[] input;
+  delete[] rect_indices;
+
+  if (retlist) {
+    delete[] retlist;
+    retlist = NULL;
+  }
+  retlist = new void*[ntot];
+}
+
+std::set<Animated*> AnimatedCollection::bboxOverlapsWith(const Animated* a) const {
+  if (!map) {
+    warning("Map not yet created");
+    return std::set<Animated*>();
+  }
+  DFoldRectangleTree<3>* dmap = (DFoldRectangleTree<3>*)map;
+  struct Rectangle<3> r = rectFromAnim(a);
+
+  int nfound = dmap->intersect(retlist, r.lower, r.upper);
+
+  std::set<Animated*> ret;
+  for (int i = 0; i < nfound; i++) { ret.insert((Animated*)retlist[i]); }
+  if (SANITY_CHECK) {
+    /* Sanity check via O(n^2) algorithm */
+
+    /* As the Animateds move during the step, we use their initial positions */
+    std::set<Animated*> coll;
+    int nco = 0;
+    for (int l = 0; l < ntot; l++) {
+      struct Rectangle<3> s = staticinput[l];
+
+      int nover = 0;
+      for (int i = 0; i < 3; i++) {
+        if (r.lower[i] <= s.upper[i] && r.upper[i] >= s.lower[i]) { nover++; }
+      }
+      if (nover == 3) {
+        coll.insert((Animated*)s.tag);
+        if (ret.count((Animated*)s.tag)) { nco++; }
+      }
+    }
+
+    static int psu = 0;
+    if (coll.size() != nco || coll.size() != ret.size() | ret.size() != nfound) {
+      warning("Interval tree %d error %d -> %d (ideal %d (%d present)), %d prior passed", ntot,
+              nfound, ret.size(), coll.size(), nco, psu);
+      psu = 0;
+    } else {
+      psu++;
+    }
+    return coll;
+  }
+
+  return ret;
+}
+
+const std::set<Animated*>& AnimatedCollection::asSet() const { return store; }
diff --git a/src/modPill.h b/src/animatedCollection.h
similarity index 53%
copy from src/modPill.h
copy to src/animatedCollection.h
index 4991a90..c510f88 100644
--- a/src/modPill.h
+++ b/src/animatedCollection.h
@@ -1,7 +1,7 @@
-/* modPill.h
-   A "pill" which gives the player mods when taken
+/* animatedCollection.h
+   Routines for a collection of objects, esp. intersection finding
 
-   Copyright (C) 2000  Mathias Broxvall
+   Copyright (C) 2017  Manuel Stoeckl
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -18,28 +18,31 @@
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-#ifndef MODPILL_H
-#define MODPILL_H
+#ifndef ANIMATED_COLLECTION_H
+#define ANIMATED_COLLECTION_H
 
-#include "ball.h"
+#include "animated.h"
 
-class ModPill : public Ball {
+#include <set>
+
+class AnimatedCollection {
  public:
-  /* resurrecting: 0  - Not resurrected
-                      -1  - Resurrected when player is restarted
-                                  >0  - Time between resurrections */
-  ModPill(Real x, Real y, int kind, int length, int resurrecting);
-  ~ModPill();
-  void draw();
-  void draw2();
-  void tick(Real);
-  void playerRestarted();
-  void die(int);
+  AnimatedCollection();
+  ~AnimatedCollection();
+  void insert(Animated*);
+  void remove(Animated*);
+
+  void recalculateBboxMap();
+  std::set<Animated*> bboxOverlapsWith(const Animated*) const;
+
+  const std::set<Animated*>& asSet() const;
 
  private:
-  int kind, resurrecting, state, time;
-  Real timeLeft;
-  Real clock;  // used for animation
+  std::set<Animated*> store;
+  void* map;
+  void* alloc;
+  void** retlist;
+  int ntot;
 };
 
-#endif
+#endif /* ANIMATED_COLLECTION_H */
diff --git a/src/ball.cc b/src/ball.cc
index d3dcd4d..ff7edb8 100644
--- a/src/ball.cc
+++ b/src/ball.cc
@@ -21,6 +21,7 @@
 
 #include "ball.h"
 
+#include "animatedCollection.h"
 #include "debris.h"
 #include "forcefield.h"
 #include "game.h"
@@ -36,25 +37,20 @@
 #include <math.h>
 #include <set>
 
-class std::set<Ball *> *Ball::balls;
 GLfloat Ball::dizzyTexCoords[4] = {0.f, 0.f, 1.f, 1.f};
 extern GLuint hiresSphere;
 
 void Ball::init() {
-  balls = new std::set<Ball *>();
   loadTexture("dizzy.png");
   dizzyTexCoords[0] = 0.f;
   dizzyTexCoords[1] = 0.f;
   dizzyTexCoords[2] = 1.f;
   dizzyTexCoords[3] = 1.f;
 }
-void Ball::reset() {
-  delete balls;
-  balls = new std::set<Ball *>();
-}
+
 void Ball::onRemove() {
   Animated::onRemove();
-  balls->erase(this);
+  Game::current->balls->remove(this);
 }
 
 Ball::Ball() : Animated() {
@@ -76,7 +72,7 @@ Ball::Ball() : Animated() {
   gravity = 8.0;
   bounceFactor = 0.8;
   crashTolerance = 7;
-  balls->insert(this);
+  Game::current->balls->insert(this);
   no_physics = 0;
   inPipe = 0;
 
@@ -106,7 +102,10 @@ int Ball::generateBuffers(GLuint *&idxbufs, GLuint *&databufs) {
   allocateBuffers(N, idxbufs, databufs);
 
   GLfloat color[4] = {
-      primaryColor[0], primaryColor[1], primaryColor[2], 1.,
+      primaryColor[0],
+      primaryColor[1],
+      primaryColor[2],
+      1.,
   };
   GLfloat loc[3] = {(GLfloat)position[0], (GLfloat)position[1], (GLfloat)(position[2] - sink)};
   if (modTimeLeft[MOD_GLASS]) {
@@ -1105,13 +1104,14 @@ void Ball::generateDebris(GLfloat color[4]) {
 }
 
 void Ball::handleBallCollisions() {
-  std::set<Ball *>::iterator iter = balls->begin();
-  std::set<Ball *>::iterator end = balls->end();
+  const std::set<Animated *> &balls = Game::current->balls->bboxOverlapsWith(this);
+  std::set<Animated *>::iterator iter = balls.begin();
+  std::set<Animated *>::iterator end = balls.end();
   Coord3d v;
   double dist, err, speed;
   Ball *ball;
   for (; iter != end; iter++) {
-    ball = *iter;
+    ball = (Ball *)*iter;
     if (ball == this) continue;
     if (!ball->alive) continue;
     if (ball->no_physics) continue;
@@ -1355,11 +1355,10 @@ void Ball::handlePipes(Real time) {
     normalize(dirNorm);
     Coord3d v0;  // pipe enterance -> ball position
     sub(position, pipe->from, v0);
-    double l =
-        std::max(0.0, std::min(1.0,
-                               dotProduct(v0, dirNorm) /
-                                   length(direction)));  // where along pipe ball is projected
-    Coord3d proj;  // where (as pos) the ball is projected
+    double l = std::max(
+        0.0, std::min(1.0, dotProduct(v0, dirNorm) /
+                               length(direction)));  // where along pipe ball is projected
+    Coord3d proj;                                    // where (as pos) the ball is projected
     for (int i = 0; i < 3; i++) proj[i] = pipe->from[i] + l * direction[i];
     Coord3d v1;  // projection point -> ball position
     sub(position, proj, v1);
diff --git a/src/ball.h b/src/ball.h
index c7ad7e9..fcfb425 100644
--- a/src/ball.h
+++ b/src/ball.h
@@ -66,7 +66,6 @@ class Ball : public Animated {
   virtual void die(int how);
 
   static void init();
-  static void reset();
 
   Coord3d velocity;
   int inTheAir, inPipe;
@@ -82,8 +81,6 @@ class Ball : public Animated {
        for high res balls (eg. player) */
   int ballResolution;
 
-  static std::set<Ball*>* balls;
-
   /** how far the ball has sunk into acid / sand / etc. */
   double sink;
   Matrix4d rotations;
diff --git a/src/bird.cc b/src/bird.cc
index e4fcd57..163fffa 100644
--- a/src/bird.cc
+++ b/src/bird.cc
@@ -21,6 +21,8 @@
 */
 
 #include "bird.h"
+
+#include "animatedCollection.h"
 #include "ball.h"
 #include "game.h"
 #include "map.h"
@@ -47,6 +49,12 @@ Bird::Bird(Real x, Real y, Real dx, Real dy, Real size, Real speed) {
   rotation = M_PI - atan2(this->dx / lng, this->dy / lng);
   scoreOnDeath = Game::defaultScores[SCORE_BIRD][0];
   timeOnDeath = Game::defaultScores[SCORE_BIRD][1];
+  boundingBox[0][0] = -size;
+  boundingBox[1][0] = size;
+  boundingBox[0][1] = -size;
+  boundingBox[1][1] = size;
+  boundingBox[0][2] = -size;
+  boundingBox[1][2] = size;
 }
 
 int Bird::generateBuffers(GLuint *&idxbufs, GLuint *&databufs) {
@@ -134,11 +142,12 @@ void Bird::tick(Real t) {
   // check for collisions with balls
   Ball *ball;
   Coord3d diff;
-  std::set<Ball *>::iterator iter = Ball::balls->begin();
-  std::set<Ball *>::iterator end = Ball::balls->end();
+  const std::set<Animated *> &balls = Game::current->balls->bboxOverlapsWith(this);
+  std::set<Animated *>::iterator iter = balls.begin();
+  std::set<Animated *>::iterator end = balls.end();
 
   for (; iter != end; iter++) {
-    ball = *iter;
+    ball = (Ball *)*iter;
     if (!ball->alive) continue;
     if (ball->no_physics) continue;
 
diff --git a/src/cactus.cc b/src/cactus.cc
index 87ccb9c..18cfa25 100644
--- a/src/cactus.cc
+++ b/src/cactus.cc
@@ -20,6 +20,8 @@
 */
 
 #include "cactus.h"
+
+#include "animatedCollection.h"
 #include "ball.h"
 #include "game.h"
 #include "map.h"
@@ -40,6 +42,13 @@ Cactus::Cactus(Real x, Real y, Real radius) {
   this->killed_time = 1.;
   this->base_radius = radius;
 
+  boundingBox[0][0] = -base_radius;
+  boundingBox[1][0] = base_radius;
+  boundingBox[0][1] = -base_radius;
+  boundingBox[1][1] = base_radius;
+  boundingBox[0][2] = -base_radius;
+  boundingBox[1][2] = std::max(1., base_radius);
+
   scoreOnDeath = Game::defaultScores[SCORE_CACTUS][0];
   timeOnDeath = Game::defaultScores[SCORE_CACTUS][1];
 }
@@ -187,10 +196,11 @@ void Cactus::tick(Real t) {
 
   // do I parse all the balls (incl. Mr Black) or just the player ?
   Ball *ball;
-  std::set<Ball *>::iterator iter = Ball::balls->begin();
-  std::set<Ball *>::iterator end = Ball::balls->end();
+  const std::set<Animated *> &balls = Game::current->balls->bboxOverlapsWith(this);
+  std::set<Animated *>::iterator iter = balls.begin();
+  std::set<Animated *>::iterator end = balls.end();
   for (; iter != end; iter++) {
-    ball = *iter;
+    ball = (Ball *)*iter;
     if (!ball->alive) continue;
     if (ball->no_physics) continue;
 
diff --git a/src/calibrateJoystickMode.cc b/src/calibrateJoystickMode.cc
index 47794a3..c50f03e 100644
--- a/src/calibrateJoystickMode.cc
+++ b/src/calibrateJoystickMode.cc
@@ -96,61 +96,50 @@ void CalibrateJoystickMode::display() {
     error("called CalibrateJoystickMode without valid joystick!");
   }
 
-  Font::drawCenterSimpleText(_("Calibrating Joystick"), screenWidth / 2,
-                             screenHeight / 2 - 230, 20., 1.0, 1.0, 1.0, 1.0);
+  clearSelectionAreas();
+
+  int headerSize = computeHeaderSize();
+  int menusize = computeMenuSize();
+  int linesize = computeLineSize();
+  addText_Center(0, headerSize, screenHeight / 2 - 100 - headerSize * 1 - menusize * 4,
+                 _("Calibrating Joystick"), screenWidth / 2);
+
   snprintf(str, sizeof(str), "%s",
            SDL_JoystickNameForIndex(Settings::settings->joystickIndex - 1));
-  Font::drawCenterSimpleText(str, screenWidth / 2, screenHeight / 2 - 190, 16., 1.0, 1.0, 1.0,
-                             1.0);
+  addText_Center(0, menusize, screenHeight / 2 - 100 - menusize * 3, str, screenWidth / 2);
 
-  switch (stage) {
-  case 0:
-    Font::drawCenterSimpleText(_("Center joystick"), screenWidth / 2, screenHeight / 2 - 120,
-                               20., 1.0, 1.0, 1.0, 1.0);
-    break;
-  case 1:
-    Font::drawCenterSimpleText(_("Move joystick left"), screenWidth / 2,
-                               screenHeight / 2 - 120, 20., 1.0, 1.0, 1.0, 1.0);
-    break;
-  case 2:
-    Font::drawCenterSimpleText(_("Move joystick right"), screenWidth / 2,
-                               screenHeight / 2 - 120, 20., 1.0, 1.0, 1.0, 1.0);
-    break;
-  case 3:
-    Font::drawCenterSimpleText(_("Move joystick up"), screenWidth / 2, screenHeight / 2 - 120,
-                               20., 1.0, 1.0, 1.0, 1.0);
-    break;
-  case 4:
-    Font::drawCenterSimpleText(_("Move joystick down"), screenWidth / 2,
-                               screenHeight / 2 - 120, 20., 1.0, 1.0, 1.0, 1.0);
-    break;
-  }
-  Font::drawCenterSimpleText(_("Press any button to continue"), screenWidth / 2,
-                             screenHeight / 2 + 190, 16., 1.0, 1.0, 1.0, 1.0);
-  Font::drawCenterSimpleText(_("Press escape to cancel"), screenWidth / 2,
-                             screenHeight / 2 + 220, 16., 1.0, 1.0, 1.0, 1.0);
+  char *stages[5] = {_("Center joystick"), _("Move joystick left"), _("Move joystick right"),
+                     _("Move joystick up"), _("Move joystick down")};
+
+  addText_Center(0, menusize, screenHeight / 2 - 100 - menusize * 1, stages[stage],
+                 screenWidth / 2);
+
+  addText_Center(0, menusize, screenHeight / 2 + 100 + menusize * 1,
+                 _("Press any button to continue"), screenWidth / 2);
+  addText_Center(0, menusize, screenHeight / 2 + 100 + menusize * 3,
+                 _("Press escape to cancel"), screenWidth / 2);
 
   snprintf(str, sizeof(str), _("now: %d %d"), Settings::settings->joystickRawX(),
            Settings::settings->joystickRawY());
-  Font::drawCenterSimpleText(str, screenWidth / 2, screenHeight / 2 + 300, 12., 1.0, 1.0, 1.0,
-                             0.5);
+  addText_Center(0, linesize, screenHeight / 2 + 100 + menusize * 4 + linesize * 1, str,
+                 screenWidth / 2);
 
   snprintf(str, sizeof(str), _("center: %d %d left: %d right: %d up: %d down: %d"),
            Settings::settings->joy_center[0], Settings::settings->joy_center[1],
            Settings::settings->joy_left, Settings::settings->joy_right,
            Settings::settings->joy_up, Settings::settings->joy_down);
-  Font::drawCenterSimpleText(str, screenWidth / 2, screenHeight / 2 + 320, 12., 1.0, 1.0, 1.0,
-                             0.5);
+  addText_Center(0, linesize, screenHeight / 2 + 100 + menusize * 4 + linesize * 3, str,
+                 screenWidth / 2);
 
-  int CX = screenWidth / 2, CY = screenHeight / 2;
-  draw2DRectangle(CX - 100, CY - 100, 200, 200, 0., 0., 1., 1., 0.1, 0.1, 0.4, 0.5);
+  draw2DRectangle(screenWidth / 2 - 85, screenHeight / 2 - 85, 170, 170, 0., 0., 1., 1., 0.3,
+                  0.3, 0.9, 1.0);
 
   double jx = Settings::settings->joystickX();
   double jy = Settings::settings->joystickY();
   int x = (int)(screenWidth / 2 + 50.0 * jx);
   int y = (int)(screenHeight / 2 + 50.0 * jy);
 
-  drawMouse(x - 32, y - 32, 64, 64);
+  drawMouse(x, y, 64, 64);
   Leave2DMode();
 }
 
diff --git a/src/cyclicPlatform.cc b/src/cyclicPlatform.cc
index 0f42c08..f8e5f60 100644
--- a/src/cyclicPlatform.cc
+++ b/src/cyclicPlatform.cc
@@ -20,6 +20,8 @@
 */
 
 #include "cyclicPlatform.h"
+
+#include "animatedCollection.h"
 #include "ball.h"
 #include "game.h"
 #include "map.h"
@@ -67,10 +69,11 @@ void CyclicPlatform::tick(Real dt) {
   map->markCellsUpdated(x1, y1, x2, y2, 1);
 
   if (h < oldHeight) {
-    std::set<Ball *>::iterator iter = Ball::balls->begin();
-    std::set<Ball *>::iterator end = Ball::balls->end();
+    const std::set<Animated *> &balls = Game::current->balls->asSet();
+    std::set<Animated *>::iterator iter = balls.begin();
+    std::set<Animated *>::iterator end = balls.end();
     for (; iter != end; iter++) {
-      Ball *ball = *iter;
+      Ball *ball = (Ball *)*iter;
       if (ball->position[0] >= x1 && ball->position[0] < x2 + 1.0 && ball->position[1] >= y1 &&
           ball->position[1] < y2 + 1.0 &&
           ball->position[2] - ball->radius <=
diff --git a/src/editMode.cc b/src/editMode.cc
index ce3e85b..e29fafb 100644
--- a/src/editMode.cc
+++ b/src/editMode.cc
@@ -348,9 +348,9 @@ void EditMode::saveMap() {
               _("Enter your name here"));
       fprintf(fp, "(start-time 180)\n");
       fprintf(fp, "(set-start-position 250.5 250.5)\n");
-      fprintf(fp, "(add-goal 249 250 #f \"\") ;; %s\n",
+      fprintf(fp, "(add-goal 249.0 250.0 #f \"\") ;; %s\n",
               _("Add the name of the next level here"));
-      fprintf(fp, "(add-flag 248 250 50 1 0.1)\n");
+      fprintf(fp, "(add-flag 248.0 250.0 50 #t 0.1)\n");
       fclose(fp);
     }
   }
diff --git a/src/editWindows.cc b/src/editWindows.cc
index 64fb93c..02a51b8 100644
--- a/src/editWindows.cc
+++ b/src/editWindows.cc
@@ -206,7 +206,7 @@ void EStatusWindow::draw() {
   draw2DRectangle(area3x - 1, y, 2, height, 0., 0., 1., 1., 0.5, 0.5, 0.5, 1.0);
 
   /* TODO. Make the height/colour etc. text selectable areas
-         with the same effect as corresponding menu choise */
+         with the same effect as corresponding menu choice */
 
   Cell& cell = EditMode::editMode->map->cell(EditMode::editMode->x, EditMode::editMode->y);
 
diff --git a/src/enterHighScoreMode.cc b/src/enterHighScoreMode.cc
index 561845e..491768b 100644
--- a/src/enterHighScoreMode.cc
+++ b/src/enterHighScoreMode.cc
@@ -19,11 +19,13 @@
 */
 
 #include "enterHighScoreMode.h"
+
 #include "font.h"
 #include "game.h"
 #include "gamer.h"
 #include "highScore.h"
 #include "menuMode.h"
+#include "menusystem.h"
 #include "player.h"
 
 #include <SDL2/SDL_keyboard.h>
@@ -39,7 +41,7 @@ void EnterHighScoreMode::init() {
   if (low_memory)
     background = NULL;
   else {
-    background = loadImage("enterHighscoreBackground.jpg");
+    background = loadImage("setupBackground.jpg");
   }
 }
 EnterHighScoreMode::EnterHighScoreMode() { memset(name, 0, sizeof(name)); }
@@ -50,15 +52,19 @@ void EnterHighScoreMode::display() {
   draw2DRectangle(0, 0, screenWidth, screenHeight, texMinX, texMinY, texMaxX, texMaxY, 1., 1.,
                   1., 1., texture);
 
+  int headerSize = computeHeaderSize();
+  int fontSize = computeMenuSize();
+
+  clearSelectionAreas();
+  addText_Center(0, headerSize, screenHeight / 2 - 2 * headerSize, _("High Score"),
+                 screenWidth / 2);
+
   char str[256];
   snprintf(str, sizeof(str), _("You got %d points"), Game::current->player1->score);
-  int size = 20;
-  Font::drawCenterSimpleText(str, screenWidth / 2, screenHeight / 2 + 1.3 * size, size, 0.85,
-                             0.85, 0.25, 1.0);
+  addText_Center(0, fontSize, screenHeight / 2, str, screenWidth / 2);
 
   snprintf(str, sizeof(str), _("Enter your name: %s"), name);
-  Font::drawCenterSimpleText(str, screenWidth / 2, screenHeight / 2 - 1.3 * size, size, 0.85,
-                             0.85, 0.25, 1.0);
+  addText_Center(0, fontSize, screenHeight / 2 + 2 * fontSize, str, screenWidth / 2);
 
   displayFrameRate();
   Leave2DMode();
diff --git a/src/font.cc b/src/font.cc
index a665f27..a00230a 100644
--- a/src/font.cc
+++ b/src/font.cc
@@ -27,7 +27,7 @@
 void Font::init() {}
 
 // returns the effective width of the text
-int Font::getTextWidth(const char *text, float size) {
+int Font::getTextWidth(const char *text, int size, int maxwidth) {
   if ((text == NULL) || (strlen(text) == 0)) return (0);
 
   int w, h;
@@ -35,34 +35,35 @@ int Font::getTextWidth(const char *text, float size) {
   TTF_SetFontOutline(active, 2);
   TTF_SizeUTF8(active, text, &w, &h);
   TTF_SetFontOutline(active, 0);
+  if (maxwidth > 0 && maxwidth < w) return maxwidth;
   return w;
 }
 
 void Font::tick(Real /*t*/) { update2DStringCache(); }
 
-int Font::drawSimpleText(const char *text, int x, int y, float sz, float r, float g, float b,
-                         float a) {
+int Font::drawSimpleText(const char *text, int x, int y, int sz, float r, float g, float b,
+                         float a, int maxwidth) {
   if ((text == NULL) || (strlen(text) == 0)) return 0;
 
   int size = (int)sz;
   TTF_Font *active = menuFontForSize(size);
-  return draw2DString(active, text, x, y, r, g, b, a, sz > 10, 0);
+  return draw2DString(active, text, x, y, r, g, b, a, sz >= 10, 0, maxwidth);
 }
 
-int Font::drawRightSimpleText(const char *text, int x, int y, float sz, float r, float g,
-                              float b, float a) {
+int Font::drawRightSimpleText(const char *text, int x, int y, int sz, float r, float g,
+                              float b, float a, int maxwidth) {
   if ((text == NULL) || (strlen(text) == 0)) return 0;
 
   int size = (int)sz;
   TTF_Font *active = menuFontForSize(size);
-  return draw2DString(active, text, x, y, r, g, b, a, sz > 10, 2);
+  return draw2DString(active, text, x, y, r, g, b, a, sz >= 10, 2, maxwidth);
 }
 
-int Font::drawCenterSimpleText(const char *text, int x, int y, float sz, float r, float g,
-                               float b, float a) {
+int Font::drawCenterSimpleText(const char *text, int x, int y, int sz, float r, float g,
+                               float b, float a, int maxwidth) {
   if ((text == NULL) || (strlen(text) == 0)) return 0;
 
   int size = (int)sz;
   TTF_Font *active = menuFontForSize(size);
-  return draw2DString(active, text, x, y, r, g, b, a, sz > 10, 1);
+  return draw2DString(active, text, x, y, r, g, b, a, sz >= 10, 1, maxwidth);
 }
diff --git a/src/font.h b/src/font.h
index 173cf59..3dbe4fb 100644
--- a/src/font.h
+++ b/src/font.h
@@ -34,13 +34,13 @@ class Font {
   static void tick(Real t);
 
   /* Return value is always the width of the rendered text */
-  static int drawSimpleText(const char *text, int x, int y, float sz, float r, float g,
-                            float b, float a);
-  static int drawRightSimpleText(const char *text, int x, int y, float sz, float r, float g,
-                                 float b, float a);
-  static int drawCenterSimpleText(const char *text, int x, int y, float sz, float r, float g,
-                                  float b, float a);
-  static int getTextWidth(const char *text, float sz);
+  static int drawSimpleText(const char *text, int x, int y, int sz, float r, float g, float b,
+                            float a, int maxwidth = 0);
+  static int drawRightSimpleText(const char *text, int x, int y, int sz, float r, float g,
+                                 float b, float a, int maxwidth = 0);
+  static int drawCenterSimpleText(const char *text, int x, int y, int sz, float r, float g,
+                                  float b, float a, int maxwidth = 0);
+  static int getTextWidth(const char *text, int sz, int maxwidth = 0);
 };
 
 #endif
diff --git a/src/game.cc b/src/game.cc
index 9c844f4..0c8ec6f 100644
--- a/src/game.cc
+++ b/src/game.cc
@@ -22,6 +22,8 @@
 #define MARGIN 10
 
 #include "game.h"
+
+#include "animatedCollection.h"
 #include "ball.h"
 #include "forcefield.h"
 #include "gamer.h"
@@ -39,8 +41,8 @@ extern GLfloat colors[5][3];
 
 double Game::defaultScores[SCORE_MAX][2];
 
-Game::Game(char *name, Gamer *g) {
-  Ball::reset();
+Game::Game(const char *name, Gamer *g) {
+  balls = new AnimatedCollection();
   ForceField::reset();
   Pipe::reset();
 
@@ -72,7 +74,7 @@ Game::Game(char *name, Gamer *g) {
 }
 
 Game::Game(Map *editmap) {
-  Ball::reset();
+  balls = new AnimatedCollection();
   ForceField::reset();
   Pipe::reset();
   map = editmap;
@@ -97,18 +99,24 @@ Game::~Game() {
   delete objects;
   delete hooks;
   delete weather;
+  delete balls;
   if (!edit_mode) delete map;
   if (current == this) { current = NULL; }
 }
 
-void Game::loadLevel(char *name) {
+void Game::loadLevel(const char *name) {
   char mapname[256];
   char scmname[256];
 
-  if (player1) {
-    // level scripts might have modified our appearance. Reset them
+  if (player1 && gamer) {
+    /* level scripts might have modified our appearance. Reset them */
     for (int i = 0; i < 3; i++) player1->primaryColor[i] = colors[gamer->color][i];
     player1->texture = gamer->textureNum;
+  } else {
+    /* when there is no gamer (e.g, in help) pick random value */
+    for (int i = 0; i < 3; i++) player1->primaryColor[i] = frandom();
+    player1->primaryColor[((size_t)rand()) % 3] = 1.0;
+    player1->texture = loadTexture("blank.png");
   }
 
   setDefaults();
@@ -172,7 +180,11 @@ void Game::setDefaults() {
 }
 
 void Game::clearLevel() {
-  Ball::reset();
+  if (balls) {
+    delete balls;
+    balls = NULL;
+  };
+  balls = new AnimatedCollection();
   ForceField::reset();
 
   if (weather) weather->clear();
@@ -202,14 +214,16 @@ void Game::tick(Real t) {
   /* The game ticks run at a faster time scale so that the interaction
    * of different moving objects is realistic */
   for (int i = 0; i < steps; i++) {
+    /* Update intersection information */
+    balls->recalculateBboxMap();
+
     gameTime += tstep;
 
-    std::set<GameHook *> *old_hooks = new std::set<GameHook *>(*hooks);
-    std::set<GameHook *>::iterator ih = old_hooks->begin();
-    std::set<GameHook *>::iterator endh = old_hooks->end();
+    std::set<GameHook *> old_hooks(*hooks);
+    std::set<GameHook *>::iterator ih = old_hooks.begin();
+    std::set<GameHook *>::iterator endh = old_hooks.end();
 
     for (; ih != endh; ih++) (*ih)->tick(tstep);
-    delete old_hooks;
   }
   gameTime = origtime + t;
 
diff --git a/src/game.h b/src/game.h
index fbe59b2..7c0ba16 100644
--- a/src/game.h
+++ b/src/game.h
@@ -33,6 +33,7 @@
 #include "general.h"
 #include "glHelp.h"
 
+class AnimatedCollection;
 class Map;
 class Player;
 class Weather;
@@ -40,7 +41,7 @@ class EditMode;
 
 class Game {
  public:
-  Game(char *, class Gamer *gamer);
+  Game(const char *, class Gamer *gamer);
   explicit Game(Map *editmap);
   virtual ~Game();
 
@@ -52,7 +53,7 @@ class Game {
   void add(class GameHook *);
   void remove(class Animated *);
   void remove(class GameHook *);
-  void loadLevel(char *level);
+  void loadLevel(const char *level);
   void clearLevel();
 
   GLfloat fogColor[4];
@@ -68,6 +69,7 @@ class Game {
   Weather *weather;
 
   static Game *current;
+  AnimatedCollection *balls;
 
   char levelName[256];
   char nextLevel[256];
diff --git a/src/glHelp.cc b/src/glHelp.cc
index 179a6d9..b534c22 100644
--- a/src/glHelp.cc
+++ b/src/glHelp.cc
@@ -48,12 +48,16 @@ GLuint theVao = 0;
 
 TTF_Font *ingameFont;
 extern struct timespec displayStartTime;
+extern struct timespec lastDisplayStartTime;
 
 const GLfloat menuColorSelected[4] = {0.86f, 0.86f, 0.86f, 1.f};
 const GLfloat menuColor[4] = {0.86f, 0.86f, 0.25f, 1.f};
 
 double fake_rand[4711];
-double frand(int i) { return fake_rand[i % 4711]; }
+double frand(size_t i) {
+  /* size_t is nonnegative so no inputs will crash */
+  return fake_rand[i % 4711];
+}
 double frand() { return (rand() % (1 << 30)) / ((double)(1 << 30)); }
 
 #define GLHELP_MAX_TEXTURES 256
@@ -124,7 +128,7 @@ static SDL_Surface *drawStringToSurface(struct StringInfo &inf, int outlined) {
 }
 
 int draw2DString(TTF_Font *font, const char *string, int x, int y, float red, float green,
-                 float blue, float alpha, int outlined, int align) {
+                 float blue, float alpha, int outlined, int align, int maxwidth) {
   struct StringInfo inf;
   inf.color.r = 255 * red;
   inf.color.g = 255 * green;
@@ -149,12 +153,11 @@ int draw2DString(TTF_Font *font, const char *string, int x, int y, float red, fl
   struct StringCache &cached = strcache[inf];
   cached.tick = stringTick;
 
-  y -= cached.h / 2;
-
-  draw2DRectangle(x - align * cached.w / 2, y, cached.w, cached.h, cached.texcoord[0],
-                  cached.texcoord[1], cached.texcoord[2], cached.texcoord[3], 1., 1., 1., 1.,
-                  cached.texture);
-  return cached.w;
+  GLfloat shrink = (maxwidth > 0 && maxwidth < cached.w) ? (maxwidth / (GLfloat)cached.w) : 1.;
+  draw2DRectangle(x - shrink * align * cached.w / 2, y - shrink * cached.h / 2,
+                  shrink * cached.w, shrink * cached.h, cached.texcoord[0], cached.texcoord[1],
+                  cached.texcoord[2], cached.texcoord[3], 1., 1., 1., 1., cached.texture);
+  return maxwidth > 0 ? std::min(cached.w, maxwidth) : cached.w;
 }
 
 void update2DStringCache() {
@@ -920,10 +923,10 @@ void message(char *A, char *B) {
   Enter2DMode();
   draw2DRectangle(x1, y1, x2 - x1, y2 - y1, 0., 0., 1., 1., 0.2, 0.5, 0.2, 0.5);
 
-  Font::drawCenterSimpleText(A, screenWidth / 2 + size, screenHeight / 2 - size, size, 0.5,
-                             1.0, 0.2, 1.0);
-  Font::drawCenterSimpleText(B, screenWidth / 2 + size, screenHeight / 2 + 14, size, 0.5, 1.0,
-                             0.2, 1.0);
+  Font::drawCenterSimpleText(A, screenWidth / 2, screenHeight / 2 - size, size, 0.5, 1.0, 0.2,
+                             1.0);
+  Font::drawCenterSimpleText(B, screenWidth / 2, screenHeight / 2 + 14, size, 0.5, 1.0, 0.2,
+                             1.0);
 
   Leave2DMode();
 }
@@ -947,12 +950,12 @@ void multiMessage(int nlines, const char *left[], const char *right[]) {
   for (int i = 0; i < nlines; i++) {
     h_now += 2 * size;
     if (left[i]) {
-      Font::drawSimpleText(left[i], screenWidth / 2 - width / 2 + size,
+      Font::drawSimpleText(left[i], screenWidth / 2 - width / 2,
                            screenHeight / 2 - total_height / 2 + h_now, size, 0.5, 1.0, 0.2,
                            1.0);
     }
     if (right[i]) {
-      Font::drawRightSimpleText(right[i], screenWidth / 2 + width / 2 + size,
+      Font::drawRightSimpleText(right[i], screenWidth / 2 + width / 2,
                                 screenHeight / 2 - total_height / 2 + h_now, size, 0.5, 1.0,
                                 0.2, 1.0);
     }
@@ -1242,8 +1245,8 @@ int resetTextures() {
 
 /* Calculates and displays current framerate */
 void displayFrameRate() {
-  /* We don't include the time spent on Flip(), but everything else we do*/
-  double td = getTimeDifference(displayStartTime, getMonotonicTime());
+  /* Frame rate is given for the previous period. */
+  double td = getTimeDifference(lastDisplayStartTime, displayStartTime);
   if (td > 1.0)
     fps = 1.0;
   else if (td <= 1e-4) {
diff --git a/src/glHelp.h b/src/glHelp.h
index 1c291c3..425f17d 100644
--- a/src/glHelp.h
+++ b/src/glHelp.h
@@ -39,11 +39,11 @@ void glHelpCleanup();
 GLuint loadProgram(const char *fragment, const char *vertex);
 void warnForGLerrors(const char *where_am_i);
 double frand();
-double frand(int);
+double frand(size_t);
 
 /* displays a 2d text on specific screen coordinates, returning width */
 int draw2DString(TTF_Font *, const char *, int x, int y, float red, float green, float blue,
-                 float alpha, int outlined, int align);
+                 float alpha, int outlined, int align, int maxwidth = 0);
 void update2DStringCache();
 /* Common interface for drawing 2d things on the screen */
 void draw2DRectangle(GLfloat x, GLfloat y, GLfloat w, GLfloat h, GLfloat tx, GLfloat ty,
diff --git a/src/helpMode.cc b/src/helpMode.cc
index c1e780b..927a806 100644
--- a/src/helpMode.cc
+++ b/src/helpMode.cc
@@ -21,8 +21,12 @@
 #include "helpMode.h"
 
 #include "font.h"
+#include "game.h"
+#include "gamer.h"
+#include "map.h"
 #include "menuMode.h"
 #include "menusystem.h"
+#include "settings.h"
 
 #include <SDL2/SDL_keyboard.h>
 #include <SDL2/SDL_keycode.h>
@@ -31,7 +35,6 @@
 
 HelpMode *HelpMode::helpMode;
 SDL_Surface *HelpMode::background;
-SDL_Surface *HelpMode::page0, *HelpMode::page1;
 
 #define CODE_BACK 1
 #define CODE_MOREHELP 2
@@ -49,6 +52,7 @@ HelpMode::HelpMode() {
   timeLeft = 0.;
   isExiting = 0;
   page = 0;
+  helpGame = NULL;
 }
 void HelpMode::activated() {
   if (!background) { background = loadImage("helpBackground.jpg"); }
@@ -56,20 +60,7 @@ void HelpMode::activated() {
   /* Loads the background images. */
   bgTexture = LoadTexture(background, bgCoord);
 
-  if (screenWidth < 1024)
-    page0 = loadImage("help0_640.png");
-  else
-    page0 = loadImage("help0_1024.png");
-  p0Texture = LoadTexture(page0, p0coord);
-  SDL_FreeSurface(page0);
-
-  if (screenWidth < 1024)
-    page1 = loadImage("help1_640.png");
-  else
-    page1 = loadImage("help1_1024.png");
-
-  p1Texture = LoadTexture(page1, p1coord);
-  SDL_FreeSurface(page1);
+  helpGame = new Game("help", NULL);
 
   clearKeyboardFocus();
 
@@ -79,13 +70,12 @@ void HelpMode::activated() {
 }
 void HelpMode::deactivated() {
   glDeleteTextures(1, &bgTexture);
-  glDeleteTextures(1, &p0Texture);
-  glDeleteTextures(1, &p1Texture);
 
   if (low_memory && background) {
     SDL_FreeSurface(background);
     background = NULL;
   }
+  delete helpGame;
 }
 void HelpMode::display() {
   // Draw the background using the preloaded texture
@@ -98,66 +88,203 @@ void HelpMode::display() {
   Enter2DMode();
   draw2DRectangle(0, 0, screenWidth, screenHeight, bgCoord[0], bgCoord[1], bgCoord[2],
                   bgCoord[3], 1., 1., 1., 1., bgTexture);
+  Leave2DMode();
+
+  /* for shadow map */
+  glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
+
+  /* Some standard GL settings needed */
+  glEnable(GL_CULL_FACE);
+  glEnable(GL_DEPTH_TEST);
+  glDepthFunc(GL_LEQUAL);
+
+  /* Debugging for problems with some cards */
+  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+  /* Setup how we handle textures based on gfx_details */
+  if (Settings::settings->gfx_details == 5) {
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+  } else {
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+  }
+
+  if (helpGame->fogThickness)
+    glClearColor(Game::current->fogColor[0], Game::current->fogColor[1],
+                 Game::current->fogColor[2], Game::current->fogColor[3]);
+  else
+    glClearColor(0.0, 0.0, 0.0, 0.0);
+
+  if (helpGame->fogThickness && Settings::settings->gfx_details != GFX_DETAILS_NONE) {
+    activeView.fog_enabled = 1;
+    assign(helpGame->fogColor, activeView.fog_color);
+    activeView.fog_start = std::max(0.0, 14.0 - 7.0 * helpGame->fogThickness);
+    activeView.fog_end = 26.0 - 4.0 * helpGame->fogThickness;
+  } else
+    activeView.fog_enabled = 0;
+  GLfloat sunLight[3] = {0.8, 0.8, 0.8};
+  GLfloat ambient[3] = {0.2, 0.2, 0.2};
+  GLfloat black[3] = {0.2, 0.2, 0.2};
+  Coord3d lightPosition = {-100., -100., 150.};
+  assign(sunLight, activeView.light_diffuse);
+  assign(sunLight, activeView.light_specular);
+  assign(lightPosition, activeView.light_position);
+  assign(black, activeView.global_ambient);
+  assign(ambient, activeView.light_ambient);
+  activeView.quadratic_attenuation = 0.;
+
+  /* Render two views of the level map */
+  perspectiveMatrix(25, (GLdouble)screenWidth / (GLdouble)std::max(screenHeight, 1), 0.1, 200,
+                    activeView.projection);
+
+  /* Setup matrixes for the camera perspective */
+  GLdouble step = 16.;
+  Coord3d cameraFrom1 = {0. + step * page, 0., -1.};
+  Coord3d cameraTo1 = {5. + step * page, 5., -8.};
+  Coord3d cameraFrom2 = {0. + step * page, 0. + step, -1.};
+  Coord3d cameraTo2 = {5. + step * page, 5. + step, -8.};
+  lookAtMatrix(cameraFrom1[0], cameraFrom1[1], cameraFrom1[2], cameraTo1[0], cameraTo1[1],
+               cameraTo1[2], 0.0, 0.0, 1.0, activeView.modelview);
+  activeView.day_mode = 1;
+  updateUniforms();
+  if (Settings::settings->doShadows) {
+    renderShadowCascade(cameraTo1, helpGame->map, helpGame);
+  } else {
+    renderDummyShadowCascade();
+  }
+  renderDummyShadowMap();
+
+  glViewport(11 * screenWidth / 20, 11 * screenHeight / 20, 4 * screenWidth / 10,
+             4 * screenHeight / 10);
+  helpGame->map->draw(0, step / 2 + step * page, step / 2);
+  helpGame->draw();
+  helpGame->map->draw(1, step / 2 + step * page, step / 2);
 
-  if (page == 0) {
-    draw2DRectangle(0, 0, screenWidth, screenHeight, p0coord[0], p0coord[1], p0coord[2],
-                    p0coord[3], 1., 1., 1., 1., p0Texture);
+  lookAtMatrix(cameraFrom2[0], cameraFrom2[1], cameraFrom2[2], cameraTo2[0], cameraTo2[1],
+               cameraTo2[2], 0.0, 0.0, 1.0, activeView.modelview);
+
+  updateUniforms();
+  if (Settings::settings->doShadows) {
+    renderShadowCascade(cameraTo1, helpGame->map, helpGame);
+  } else {
+    renderDummyShadowCascade();
   }
+  renderDummyShadowMap();
+  glViewport(11 * screenWidth / 20, 1 * screenHeight / 10, 4 * screenWidth / 10,
+             4 * screenHeight / 10);
+  helpGame->map->draw(0, step / 2 + step * page, 3 * step / 2);
+  helpGame->draw();
+  helpGame->map->draw(1, step / 2 + step * page, 3 * step / 2);
+
+  glViewport(0, 0, screenWidth, screenHeight);
+  Enter2DMode();
+
+  const char *text[] = {_("Your marble:"),
+                        _("Steer this with your mouse, numpad or arrows. "),
+                        _("Left mouse or spacebar is jump."),
+                        _("Shift gives top speed when using keyboard."),
+                        NULL,
+                        _("Mr Black:"),
+                        _("Your enemy. Defeat with Modpill - Spike."),
+                        NULL,
+                        _("Modpill Speed:"),
+                        _("Makes you go faster for short period of time."),
+                        NULL,
+                        _("Modpill Spikes:"),
+                        _("Weapon against Mr Black and grip for icy terrain."),
+                        NULL,
+
+                        _("Modpill Freeze:"),
+                        _("This will freeze you - avoid it."),
+                        NULL,
+                        _("Modpill Glass:"),
+                        _("Protects you from acid, but makes you more fragile."),
+                        NULL,
+                        _("Modpill Nitro:"),
+                        _("Move really fast. Active nitro with second button."),
+                        NULL,
+                        _("Switch:"),
+                        _("Activates/deactivates some object/element in the level."),
+                        NULL,
+
+                        _("Moving spike:"),
+                        _("Obstacle to avoid."),
+                        NULL,
+                        _("Flag:"),
+                        _("Collect for bonus points."),
+                        NULL,
+
+                        _("Normal terrain:"),
+                        _("Can be of any color and is safe to move on."),
+                        NULL,
+                        _("Acid terrain:"),
+                        _("Will kill your marble unless you have a glass modpill."),
+                        NULL,
+
+                        _("Icy terrain:"),
+                        _("Slippery terrain unless you have a spikes modpill."),
+                        NULL,
+                        _("Sandy terrain:"),
+                        _("Soft to land on but will slow you down."),
+                        NULL,
+
+                        _("Goal:"),
+                        _("Will take you to the next level."),
+                        _("Get here before time runs out."),
+                        NULL,
 
-  if (page == 1) {
-    draw2DRectangle(0, 0, screenWidth, screenHeight, p1coord[0], p1coord[1], p1coord[2],
-                    p1coord[3], 1., 1., 1., 1., p1Texture);
+                        _("Force Field:"),
+                        _("You cannot pass this unless you switch it off."),
+                        _("Some are lethal and some are one way."),
+                        NULL,
+
+                        _("Cactus:"),
+                        _("Spiky plant, lethal unless you have a spikes modpill."),
+                        NULL,
+
+                        _("Bird:"),
+                        _("Kills balls it flies across unless they have spikes."),
+                        NULL,
+
+                        _("Teleport:"),
+                        _("Will send your marble somewhere else."),
+                        NULL,
+
+                        _("Tunnel:"),
+                        _("Takes you places, sometimes with great speed."),
+                        NULL,
+                        NULL};
+
+  int s1 = -1, s2 = -1;
+  for (int i = 0, j = 0; text[i]; i++, j++) {
+    if (j == 2 * page) { s1 = i; }
+    if (j == 2 * page + 1) { s2 = i; }
+    while (text[i]) i++;
+  }
+
+  int fontSize = computeLineSize();
+  if (s1 >= 0) {
+    for (int i = s1; text[i]; i++) {
+      Font::drawSimpleText(text[i], 50,
+                           1 * screenHeight / 10 + (i - s1) * 3 * fontSize + fontSize,
+                           fontSize, 0.9, 0.9, 0.25, 1., screenWidth / 2 - 50);
+    }
   }
 
-  if (page == 2) {
-    const char *text[21][2] = {
-        {_("Your marble:"), _("Steer this with your mouse, numpad or arrows. ")},
-        {" ", _("Left mouse or spacebar is jump.")},
-        {" ", _("Shift gives top speed when using keyboard.")},
-        {_("Mr Black:"), _("Your enemy. Defeat with Modpill - Spike.")},
-        {_("Modpill Speed:"), _("Makes you go faster for short period of time.")},
-        {_("Modpill Spikes:"), _("Weapon against Mr Black and grip for icy terrain.")},
-        {_("Modpill Freeze:"), _("This will freeze you - avoid it.")},
-        {_("Modpill Glass:"), _("Protects you from acid, but makes you more fragile.")},
-        {_("Modpill Nitro:"), _("Move really fast. Active nitro with second button.")},
-        {_("Switch:"), _("Activates/deactivates some object/element in the level.")},
-        {_("Moving spike:"), _("Obstacle to avoid.")},
-        {_("Flag:"), _("Collect for bonus points.")},
-        {_("Normal terrain:"), _("Can be of any color and is safe to move on.")},
-        {_("Acid terrain:"), _("Will kill your marble unless you have a glass modpill.")},
-        {_("Icy terrain:"), _("Slippery terrain unless you have a spikes modpill.")},
-        {_("Sandy terrain:"), _("Soft to land on but will slow you down.")},
-        {_("Goal:"), _("Will take you to the next level. ")},
-        {" ", _("Get here before time runs out.")},
-        {_("Force Field:"), _("You cannot pass this unless you switch it off.")},
-        {" ", _("Some are lethal and some are one way.")},
-        {_("Tunnel:"), _("Takes you places, sometimes with great speed.")}};
-
-    for (int i = 0; i < 20; i++) {
-      if (screenWidth <= 800) {
-        Font::drawSimpleText(text[i][0], 50, screenHeight / 2 - 200 + i * 20 + 10, 10, 0.9,
-                             0.9, 0.25, 1.);
-        Font::drawSimpleText(text[i][1], 210, screenHeight / 2 - 200 + i * 20 + 10, 10, 0.9,
-                             0.9, 0.25, 1.);
-      } else if (screenWidth <= 1280) {
-        Font::drawSimpleText(text[i][0], 70, screenHeight / 2 - 200 + i * 24 + 10, 12, 0.9,
-                             0.9, 0.25, 1.);
-        Font::drawSimpleText(text[i][1], 270, screenHeight / 2 - 200 + i * 24 + 10, 12, 0.9,
-                             0.9, 0.25, 1.);
-      } else {
-        Font::drawSimpleText(text[i][0], 90, screenHeight / 2 - 200 + i * 28, 14, 0.9, 0.9,
-                             0.25, 1.);
-        Font::drawSimpleText(text[i][1], 370, screenHeight / 2 - 200 + i * 28, 14, 0.9, 0.9,
-                             0.25, 1.);
-      }
+  if (s2 >= 0) {
+    for (int i = s2; text[i]; i++) {
+      Font::drawSimpleText(text[i], 50,
+                           6 * screenHeight / 10 + (i - s2) * 3 * fontSize + fontSize,
+                           fontSize, 0.9, 0.9, 0.25, 1., screenWidth / 2 - 50);
     }
   }
 
-  int fontSize = 24;
   clearSelectionAreas();
-  addText_Right(CODE_MOREHELP, fontSize / 2, screenHeight - 45, _("More Help"),
-                screenWidth - 16);
-  addText_Left(CODE_BACK, fontSize / 2, screenHeight - 45, _("Back"), 16);
+  int menusize = computeMenuSize();
+  addText_Right(CODE_MOREHELP, menusize, screenHeight - 5 * menusize / 2, _("More Help"),
+                screenWidth - 10 - menusize);
+  addText_Left(CODE_BACK, menusize, screenHeight - 5 * menusize / 2, _("Back"), 10 + menusize);
 
   drawMousePointer();
   displayFrameRate();
@@ -172,6 +299,7 @@ void HelpMode::key(int key) {
   if (key == SDLK_ESCAPE) GameMode::activate(MenuMode::menuMode);
 }
 void HelpMode::idle(Real td) {
+  helpGame->tick(td);
   tickMouse(td);
 
   if (isExiting)
@@ -184,7 +312,8 @@ void HelpMode::mouseDown(int button, int /*x*/, int /*y*/) {
   int selected = getSelectedArea();
 
   if (selected == CODE_MOREHELP) {
-    page = (page + (button == 1 ? 1 : -1)) % 3;
+    int n = 10;
+    page = (page + n + (button == 1 ? 1 : -1)) % n;
   } else if (selected == CODE_BACK) {
     isExiting = 1;
   }
diff --git a/src/helpMode.h b/src/helpMode.h
index 89de43e..7ebec19 100644
--- a/src/helpMode.h
+++ b/src/helpMode.h
@@ -42,10 +42,11 @@ class HelpMode : public GameMode {
   double timeLeft;
   int isExiting, page;
   static SDL_Surface *background;
-  static SDL_Surface *page0, *page1;
 
-  GLuint bgTexture, p0Texture, p1Texture;
-  GLfloat bgCoord[4], p0coord[4], p1coord[4];
+  Game *helpGame;
+
+  GLuint bgTexture;
+  GLfloat bgCoord[4];
 };
 
 #endif
diff --git a/src/hofMode.cc b/src/hofMode.cc
index 5c8c1d4..5010b0f 100644
--- a/src/hofMode.cc
+++ b/src/hofMode.cc
@@ -27,6 +27,8 @@
 #include "menusystem.h"
 #include "settings.h"
 
+#include <set>
+
 #include <SDL2/SDL_keyboard.h>
 #include <SDL2/SDL_keycode.h>
 #include <SDL2/SDL_mouse.h>
@@ -36,6 +38,7 @@ HallOfFameMode *HallOfFameMode::hallOfFameMode;
 SDL_Surface *HallOfFameMode::background;
 
 #define CODE_LEVELSET 1
+#define CODE_RETURN 2
 
 void HallOfFameMode::init() {
   if (low_memory)
@@ -75,53 +78,33 @@ void HallOfFameMode::display() {
   draw2DRectangle(0, 0, screenWidth, screenHeight, texCoord[0], texCoord[1], texCoord[2],
                   texCoord[3], timeLeft, timeLeft, timeLeft, 1., texture);
 
-  int y, dy, size, x;
-  if (screenWidth <= 640)
-    x = 300;
-  else if (screenWidth <= 800)
-    x = 350;
-  else if (screenWidth <= 1024)
-    x = 400;
-  else
-    x = 450;
-  if (screenHeight <= 480) {
-    y = 160;
-    dy = 32;
-    size = 16;
-  } else if (screenHeight <= 600) {
-    y = 200;
-    dy = 40;
-    size = 20;
-  } else if (screenHeight <= 768) {
-    y = 280;
-    dy = 52;
-    size = 24;
-  } else {
-    y = 300;
-    dy = 58;
-    size = 24;
-  }
+  int fontSize = computeMenuSize();
+  int border = computeScreenBorder();
+
+  int y = fontSize * 10;
+  int dy = fontSize * 2;
 
-  int fontSize = size * 2;
-  int col0 = screenWidth / 2 - x;  // screenWidth/2 - 400;
-  int col1 = screenWidth / 2 + x + fontSize / 2;
   Settings *settings = Settings::settings;
   clearSelectionAreas();
-  addText_Left(0, fontSize / 2, y - dy * 2, _("Level Set"), col0);
-  addText_Right(CODE_LEVELSET, fontSize / 2, y - dy * 2, settings->levelSets[levelSet].name,
-                col1);
+  addText_Center(0, computeHeaderSize(), computeHeaderSize(), _("High Scores"),
+                 screenWidth / 2);
+
+  addText_Left(0, fontSize, y - dy * 2, _("Level Set"), border);
+  addText_Right(CODE_LEVELSET, fontSize, y - dy * 2, settings->levelSets[levelSet].name,
+                screenWidth - border);
 
   HighScore *highscore = HighScore::highScore;
 
   for (int i = 0; i < 10; i++) {
-    Font::drawSimpleText(&highscore->names[levelSet][i][0], screenWidth / 2 - x,
-                         y + dy * i - size, size, menuColor[0], menuColor[1], menuColor[2],
-                         menuColor[3]);
+    Font::drawSimpleText(&highscore->names[levelSet][i][0], border, y + dy * i - fontSize,
+                         fontSize, menuColor[0], menuColor[1], menuColor[2], menuColor[3]);
     snprintf(str, sizeof(str), _("%d points"), highscore->points[levelSet][i]);
-    Font::drawRightSimpleText(str, screenWidth / 2 + x + size / 2, y + dy * i - size, size,
+    Font::drawRightSimpleText(str, screenWidth - border, y + dy * i - fontSize, fontSize,
                               menuColor[0], menuColor[1], menuColor[2], menuColor[3]);
   }
 
+  addText_Left(CODE_RETURN, computeMenuSize(), screenHeight - 5 * computeMenuSize() / 2,
+               _("Back"), computeScreenBorder());
   drawMousePointer();
   displayFrameRate();
 
@@ -146,6 +129,9 @@ void HallOfFameMode::mouseDown(int state, int /*mouseX*/, int /*mouseY*/) {
   int selection = getSelectedArea();
   if (selection == CODE_LEVELSET) {
     levelSet = mymod((levelSet + (state == 1 ? 1 : -1)), Settings::settings->nLevelSets);
+  } else if (selection == CODE_RETURN) {
+    isExiting = 1;
+    timeLeft = -1.0;
   } else {
     isExiting = 1;
     timeLeft = 1.0;
diff --git a/src/mainMode.cc b/src/mainMode.cc
index 912ffee..e9422fb 100644
--- a/src/mainMode.cc
+++ b/src/mainMode.cc
@@ -565,14 +565,35 @@ void MainMode::showInfo() {
   Player *player = Game::current->player1;
 
   /* Don't draw the panel if we have released the cursor etc. This is
-     usefull for screenshots. */
+     useful for screenshots. */
   if (SDL_GetModState() & KMOD_CAPS) return;
 
   Enter2DMode();
 
-  // the panel
-  draw2DRectangle(0, 0, 256, 128, 0., 0., 1., 1., 1., 1., 1., 1.,
-                  textures[loadTexture("left_panel.png")]);
+  GLfloat notexco[4][2] = {{0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}};
+
+  GLfloat pvertices[4][2] = {{0.f, 0.f}, {160.f, 0.f}, {0.f, 100.f}, {160.f, 100.f}};
+  GLfloat pcols[4][4] = {
+      {1.0, 1.0, 0.0, 1.0}, {1.0, 0.5, 0.1, 1.0}, {1.0, 0.5, 0.1, 1.0}, {1.0, 0.1, 0.1, 1.0}};
+  draw2DRectangle(0., 0., 160. + 1.5, 100. + 1.5, 0., 0., 1., 1., 0., 0., 0., 1.);
+  draw2DQuad(pvertices, notexco, pcols);
+
+  const char *fieldNames[3] = {_("Lives"), _("Score"), _("Time left")};
+  for (int i = 0; i < 3; i++) {
+    GLfloat s = 29.f;
+    GLfloat mvertices[4][2] = {{8.f, 13.f + i * s},
+                               {152.f, 13.f + i * s},
+                               {8.f, 35.f + i * s},
+                               {152.f, 35.f + i * s}};
+    GLfloat mcols[4][4] = {{0.75, 0.5, 0.0, 1.0},
+                           {1.0, 0.25, 0.0, 1.0},
+                           {0.75, 0.25, 0.0, 1.0},
+                           {1.0, 0.0, 0.0, 1.0}};
+    draw2DRectangle(8.f - 1.5f, 13.f + i * s - 1.5f, 144.f, 22.f, 0., 0., 1., 1., 0., 0., 0.,
+                    1.);
+    draw2DQuad(mvertices, notexco, mcols);
+    Font::drawSimpleText(fieldNames[i], 12, 23 + i * s, 9, 1.0, 1.0, 0.0, 1.0);
+  }
 
   // lives
   for (int i = 0; i < 4; i++) {
@@ -584,28 +605,25 @@ void MainMode::showInfo() {
   // Score
   char str[256];
   snprintf(str, sizeof(str), "%d", player->score);
-  Font::drawRightSimpleText(str, 152, 52, 8, 0.0, 0.0, 0.0, 1.0);
+  Font::drawRightSimpleText(str, 150, 52, 9, 0.0, 0.0, 0.0, 1.0);
 
   // Time left
   snprintf(str, sizeof(str), "%2.2d:%2.2d", player->timeLeft / 60, player->timeLeft % 60);
   if (player->timeLeft < 15 && player->timeLeft % 2)
-    Font::drawRightSimpleText(str, 152, 81, 8, 1.0, 1.0, 1.0, 1.0);
+    Font::drawRightSimpleText(str, 150, 81, 9, 1.0, 1.0, 1.0, 1.0);
   else
-    Font::drawRightSimpleText(str, 152, 81, 8, 0.0, 0.0, 0.0, 1.0);
+    Font::drawRightSimpleText(str, 150, 81, 9, 0.0, 0.0, 0.0, 1.0);
 
   // Health
   draw2DRectangle(8, 3, 144, 5, 0., 0., 1., 1., 0.5, 0.1, 0.1, 1.0);
 
-  GLfloat vertices[4][2] = {{8.f, 3.f},
-                            {8.f + (144.f * (GLfloat)player->health), 3.f},
-                            {8.f, 8.f},
-                            {8.f + (144.f * (GLfloat)player->health), 8.f}};
-  GLfloat texco[4][2] = {
-      0., 0., 0., 0., 0., 0., 0., 0.,
-  };
-  GLfloat cols[4][4] = {
+  GLfloat bvertices[4][2] = {{8.f, 3.f},
+                             {8.f + (144.f * (GLfloat)player->health), 3.f},
+                             {8.f, 8.f},
+                             {8.f + (144.f * (GLfloat)player->health), 8.f}};
+  GLfloat bcols[4][4] = {
       {0.8, 0.8, 0.1, 1.0}, {0.8, 0.1, 0.1, 1.0}, {0.8, 0.8, 0.1, 1.0}, {0.8, 0.1, 0.1, 1.0}};
-  draw2DQuad(vertices, texco, cols);
+  draw2DQuad(bvertices, notexco, bcols);
 
   // Oxygen
   draw2DRectangle(8, 3, (int)(144.0 * (1. - player->oxygen)), 5, 0., 0., 1., 1., 0.2, 0.2, 0.7,
diff --git a/src/menuMode.cc b/src/menuMode.cc
index c43363d..ca1c155 100644
--- a/src/menuMode.cc
+++ b/src/menuMode.cc
@@ -94,18 +94,18 @@ You steer the ball using the mouse and by pressing >spacebar< you can jump a sho
                   textures[loadTexture("header.png")]);
 
   clearSelectionAreas();
-  int fontsize = 24;
-  int sep = 64;
+  int fontSize = computeMenuSize();
+  int sep = 5 * fontSize / 2;
   int baseline = screenHeight - sep * 3;
-  int left = fontsize + 10;
-  int right = screenWidth - 10;
-
-  addText_Left(MENU_NEWGAME, fontsize, baseline + sep * 0, _("New Game"), left);
-  addText_Right(MENU_QUIT, fontsize, baseline + sep * 0, _("Quit"), right);
-  addText_Left(MENU_SETTINGS, fontsize, baseline + sep * 1, _("Settings"), left);
-  addText_Right(MENU_HOF, fontsize, baseline + sep * 1, _("Hall of Fame"), right);
-  addText_Left(MENU_HELP, fontsize, baseline + sep * 2, _("Help"), left);
-  addText_Right(MENU_EDITOR, fontsize, baseline + sep * 2, _("Map Editor"), right);
+  int left = computeScreenBorder();
+  int right = screenWidth - computeScreenBorder();
+
+  addText_Left(MENU_NEWGAME, fontSize, baseline + sep * 0, _("New Game"), left);
+  addText_Right(MENU_QUIT, fontSize, baseline + sep * 0, _("Quit"), right);
+  addText_Left(MENU_SETTINGS, fontSize, baseline + sep * 1, _("Settings"), left);
+  addText_Right(MENU_HOF, fontSize, baseline + sep * 1, _("Hall of Fame"), right);
+  addText_Left(MENU_HELP, fontSize, baseline + sep * 2, _("Help"), left);
+  addText_Right(MENU_EDITOR, fontSize, baseline + sep * 2, _("Map Editor"), right);
 
   /* Draw story text */
   /*
diff --git a/src/menusystem.cc b/src/menusystem.cc
index a1eccf1..2b3bd55 100644
--- a/src/menusystem.cc
+++ b/src/menusystem.cc
@@ -25,6 +25,7 @@
 #include "glHelp.h"
 
 #include <SDL2/SDL_mouse.h>
+#include <set>
 
 #define MAX_MENUS 256
 
@@ -48,17 +49,17 @@ void addArea(int code, int x, int y, int w, int h) {
   sarea->returnCode = code;
 }
 
-void addText_Left(int code, int fontSize, int y0, const char *leftStr, int leftX) {
+void addText_Left(int code, int fontSize, int y0, const char *leftStr, int leftX, int maxX) {
   if (nSelectionAreas >= MAX_MENUS) { error("too many menus active"); }
   int thisArea = nSelectionAreas++;
   const GLfloat *color = ((code && getSelectedArea() == code) || (thisArea == focusArea))
                              ? menuColorSelected
                              : menuColor;
   int width = Font::drawSimpleText(leftStr, leftX, y0, fontSize, color[0], color[1], color[2],
-                                   color[3]);
+                                   color[3], maxX > 0 ? maxX - leftX : 0);
   SelectionArea *sarea = &selectionAreas[thisArea];
   sarea->x0 = leftX;
-  sarea->x1 = leftX + width;
+  sarea->x1 = maxX > 0 ? std::min(leftX + width, maxX) : leftX + width;
   sarea->y0 = y0 - fontSize;
   sarea->y1 = y0 + fontSize;
   sarea->returnCode = code;
@@ -123,45 +124,42 @@ int getSelectedArea() {
   return 0;
 }
 
-int fontsize, screenBorder, top, menuSpacing;
-
-void computeScreenSizes() {
-  if (screenWidth <= 640) {
-    fontsize = 18;
-    screenBorder = 50;
-    menuSpacing = fontsize + 10;
-    top = 150;
-  } else if (screenWidth == 800) {
-    fontsize = 20;
-    screenBorder = 75;
-    menuSpacing = fontsize + 14;
-    top = 180;
-  } else if (screenWidth == 1024) {
-    fontsize = 24;
-    screenBorder = 100;
-    menuSpacing = fontsize + 18;
-    top = 200;
-  } else if (screenWidth >= 1280) {
-    fontsize = 28;
-    screenBorder = 150;
-    menuSpacing = fontsize + 20;
-    top = 200;
-  }
+int computeLineSize() {
+  return std::max(10, std::min(3 * screenWidth / 4, screenHeight) / 64);
+}
+int computeMenuSize() {
+  return std::max(16, std::min(3 * screenWidth / 4, screenHeight) / 40);
+}
+int computeHeaderSize() {
+  return std::max(24, std::min(3 * screenWidth / 4, screenHeight) / 30);
+}
+int computeScreenBorder() {
+  int size = computeMenuSize();
+  return 10 + 2 * size;
 }
 
 void menuItem_Left(int code, int row, const char *leftStr) {
-  computeScreenSizes();
-  addText_Left(code, fontsize, (row + 1) * menuSpacing + top, leftStr, screenBorder);
+  int fontSize = computeMenuSize();
+  int menuSpacing = 17 * fontSize / 10;
+  int screenBorder = computeScreenBorder();
+  int top = 100 + 3 * fontSize;
+  addText_Left(code, fontSize, (row + 1) * menuSpacing + top, leftStr, screenBorder);
 }
 void menuItem_Center(int code, int row, const char *str) {
-  computeScreenSizes();
-  addText_Center(code, fontsize, (row + 1) * menuSpacing + top, str, screenWidth / 2);
+  int fontSize = computeMenuSize();
+  int menuSpacing = 17 * fontSize / 10;
+  int screenBorder = computeScreenBorder();
+  int top = 100 + 3 * fontSize;
+  addText_Center(code, fontSize, (row + 1) * menuSpacing + top, str, screenWidth / 2);
 }
 void menuItem_LeftRight(int code, int row, int indent, const char *leftStr,
                         const char *rightStr) {
-  computeScreenSizes();
-  addText_LeftRight(code, fontsize, (row + 1) * menuSpacing + top, leftStr,
-                    screenBorder + 3 * fontsize * indent / 2, rightStr,
+  int fontSize = computeMenuSize();
+  int menuSpacing = 17 * fontSize / 10;
+  int screenBorder = computeScreenBorder();
+  int top = 100 + 3 * fontSize;
+  addText_LeftRight(code, fontSize, (row + 1) * menuSpacing + top, leftStr,
+                    screenBorder + 3 * fontSize * indent / 2, rightStr,
                     screenWidth - screenBorder);
 }
 
diff --git a/src/menusystem.h b/src/menusystem.h
index 522b3f0..8502181 100644
--- a/src/menusystem.h
+++ b/src/menusystem.h
@@ -26,7 +26,7 @@ void addArea(int code, int x, int y, int w, int h);
 
 /* Primitives for creating selectable text on screen */
 void clearSelectionAreas();
-void addText_Left(int code, int fontSize, int y0, const char *str, int leftX);
+void addText_Left(int code, int fontSize, int y0, const char *str, int leftX, int maxX = 0);
 void addText_Right(int code, int fontSize, int y0, const char *str, int rightX);
 void addText_Center(int code, int fontSize, int y0, const char *str, int cx);
 void addText_LeftRight(int code, int fontSize, int y0, const char *leftStr, int leftX,
@@ -36,6 +36,12 @@ int getSelectedArea();
 void clearKeyboardFocus();
 void moveKeyboardFocus(int reverse);
 
+/* Determine font sizes for the current resolution */
+int computeLineSize();
+int computeMenuSize();
+int computeHeaderSize();
+int computeScreenBorder();
+
 /* And for resolution independent centered menus */
 void menuItem_Left(int code, int row, const char *str);
 void menuItem_Center(int code, int row, const char *str);
diff --git a/src/mmad.cc b/src/mmad.cc
index f29d0ae..19c15a6 100644
--- a/src/mmad.cc
+++ b/src/mmad.cc
@@ -66,7 +66,7 @@ SDL_GLContext mainContext;
 const char *program_name;
 int debug_joystick, repair_joystick;
 int not_yet_windowed = 1;
-struct timespec displayStartTime;
+struct timespec displayStartTime, lastDisplayStartTime;
 
 int theFrameNumber = 0;
 
@@ -295,6 +295,8 @@ void innerMain(void * /*closure*/, int argc, char **argv) {
   program_name = argv[0];
 
   displayStartTime = getMonotonicTime();
+  lastDisplayStartTime = displayStartTime;
+  lastDisplayStartTime.tv_sec -= 1;
   Settings::init();
   Settings *settings = Settings::settings;
   settings->doSpecialLevel = 0;
@@ -500,9 +502,7 @@ void innerMain(void * /*closure*/, int argc, char **argv) {
   /* Main event loop */
   /*                 */
 
-  struct timespec oldTime, newTime;
-  double td;
-  oldTime = getMonotonicTime();
+  double td = 1. / 60.;
 
   /* Initialize random number generator */
   int seed = getMonotonicTime().tv_nsec;
@@ -512,19 +512,11 @@ void innerMain(void * /*closure*/, int argc, char **argv) {
   while (is_running) {
     theFrameNumber++;
 
-    newTime = getMonotonicTime();
-    td = getTimeDifference(oldTime, newTime);
+    td = getTimeDifference(lastDisplayStartTime, displayStartTime);
+    // If timing doesn't work assume 60fps
     if (td <= 0.0) { td = 1. / 60.; }
-    oldTime = newTime;
-
-    // reduced to 5 fps
+    // No slower than 5 fps
     if (td > 0.2) td = 0.2;
-    // we may also add a bottom limit to 'td' to prevent
-    //  precision troubles in physic computation
-    /*
-    // limited to 75 fps
-    if (td < 0.013) td = 0.013;
-    */
 
     /* update font system */
     Font::tick(td);
@@ -545,6 +537,7 @@ void innerMain(void * /*closure*/, int argc, char **argv) {
     warnForGLerrors("uncaught from display routine");
     SDL_GL_SwapWindow(window);
 
+    lastDisplayStartTime = displayStartTime;
     displayStartTime = getMonotonicTime();
     /* Expensive computations has to be done *after* tick+draw to keep world in good
        synchronisation. */
@@ -673,7 +666,7 @@ int main(int argc, char **argv) {
 #ifdef WIN32
           || thisDir[i] == '\\'
 #endif
-          )
+      )
         break;
     if (i >= 0) thisDir[i] = 0;
 
diff --git a/src/modPill.cc b/src/modPill.cc
index 557299c..0f05631 100644
--- a/src/modPill.cc
+++ b/src/modPill.cc
@@ -64,6 +64,7 @@ ModPill::ModPill(Real x, Real y, int kind, int time, int resurrecting)
   position[2] = Game::current->map->getHeight(position[0], position[1]) + radius;
 
   alive = 1;
+  timeLeft = 0.;
 }
 
 ModPill::~ModPill() { this->Animated::~Animated(); }
diff --git a/src/modPill.h b/src/modPill.h
index 4991a90..cc0afba 100644
--- a/src/modPill.h
+++ b/src/modPill.h
@@ -37,7 +37,7 @@ class ModPill : public Ball {
   void die(int);
 
  private:
-  int kind, resurrecting, state, time;
+  int kind, resurrecting, time;
   Real timeLeft;
   Real clock;  // used for animation
 };
diff --git a/src/player.cc b/src/player.cc
index 085c344..b8148ed 100644
--- a/src/player.cc
+++ b/src/player.cc
@@ -20,6 +20,7 @@
 
 #include "player.h"
 
+#include "animatedCollection.h"
 #include "debris.h"
 #include "game.h"
 #include "mainMode.h"
@@ -375,7 +376,7 @@ void Player::restart(Coord3d pos) {
     modTimeLeft[i] = 0.0;*/
 }
 void Player::mouse(int /*state*/, int /*x*/, int /*y*/) {}
-void Player::newLevel() { Ball::balls->insert(this); }
+void Player::newLevel() { Game::current->balls->insert(this); }
 void Player::setHealth(Real d) {
   if (d < health) health = d;
   if (health < 0.0) health = 0.0;
diff --git a/src/settings.cc b/src/settings.cc
index d9ac5ae..c919c9a 100644
--- a/src/settings.cc
+++ b/src/settings.cc
@@ -245,20 +245,28 @@ void Settings::loadLevelSet(const char *setname, const char *shortname) {
     char *skey = scm_to_utf8_string(scm_symbol_to_string(key));
     if (!strcmp(skey, "name")) {
       strncpy(levelSets[nLevelSets].name, sval, 256);
+      levelSets[nLevelSets].name[255] = '\0';
     } else if (!strcmp(skey, "first-level-file")) {
       strncpy(levelSets[nLevelSets].startLevel, sval, 256);
+      levelSets[nLevelSets].startLevel[255] = '\0';
     } else if (!strcmp(skey, "first-level-name")) {
       strncpy(levelSets[nLevelSets].startLevelName, sval, 256);
+      levelSets[nLevelSets].startLevelName[255] = '\0';
     } else if (!strcmp(skey, "desc1")) {
-      strncpy(&levelSets[nLevelSets].description[0][0], sval, 80);
+      strncpy(&levelSets[nLevelSets].description[0][0], sval, 120);
+      levelSets[nLevelSets].description[0][119] = '\0';
     } else if (!strcmp(skey, "desc2")) {
-      strncpy(&levelSets[nLevelSets].description[1][0], sval, 80);
+      strncpy(&levelSets[nLevelSets].description[1][0], sval, 120);
+      levelSets[nLevelSets].description[1][119] = '\0';
     } else if (!strcmp(skey, "desc3")) {
-      strncpy(&levelSets[nLevelSets].description[2][0], sval, 80);
+      strncpy(&levelSets[nLevelSets].description[2][0], sval, 120);
+      levelSets[nLevelSets].description[2][119] = '\0';
     } else if (!strcmp(skey, "desc4")) {
-      strncpy(&levelSets[nLevelSets].description[3][0], sval, 80);
+      strncpy(&levelSets[nLevelSets].description[3][0], sval, 120);
+      levelSets[nLevelSets].description[3][119] = '\0';
     } else if (!strcmp(skey, "desc5")) {
-      strncpy(&levelSets[nLevelSets].description[4][0], sval, 80);
+      strncpy(&levelSets[nLevelSets].description[4][0], sval, 120);
+      levelSets[nLevelSets].description[4][119] = '\0';
     } else {
       warning("Unidentified key '%s' in level set file %s", skey, setname);
     }
@@ -408,11 +416,6 @@ int Settings::joystickButton(int n) {
   if (!joystickIndex) return 0;
   SDL_JoystickUpdate();
   return SDL_JoystickGetButton(joystick, n);
-
-  /*||
-        SDL_JoystickGetButton(joystick,1) ||
-        SDL_JoystickGetButton(joystick,2) ||
-        SDL_JoystickGetButton(joystick,3);  */
 }
 void Settings::setLocale() {
   /* check if the correct language directory exists, otherwise use default */
diff --git a/src/settings.h b/src/settings.h
index 6937f8d..3ae8d33 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -36,7 +36,7 @@ class LevelSet {
   char name[256];
   char startLevel[256];
   char startLevelName[256];
-  char description[5][80];
+  char description[5][120];
   char imagename[256];
 };
 
diff --git a/src/settingsMode.cc b/src/settingsMode.cc
index 15bca53..8430e4e 100644
--- a/src/settingsMode.cc
+++ b/src/settingsMode.cc
@@ -73,7 +73,6 @@ void SettingsMode::deactivated() {
 }
 void SettingsMode::display() {
   int menucount;
-  int titleFontSize = 64;
 
   glClearColor(0.0, 0.0, 0.0, 0.0);
   glClear(GL_COLOR_BUFFER_BIT);  // | GL_DEPTH_BUFFER_BIT);
@@ -81,7 +80,8 @@ void SettingsMode::display() {
   Enter2DMode();
 
   /* Draw title */
-  addText_Center(0, titleFontSize / 2, 64, _("Game Settings"), screenWidth / 2);
+  int titleFontSize = computeHeaderSize();
+  addText_Center(0, titleFontSize, 64, _("Game Settings"), screenWidth / 2);
 
   char str[256];
 
@@ -238,7 +238,8 @@ void SettingsMode::display() {
     // never should happen
     break;
   }
-  menuItem_Left(MENU_RETURN, 10, _("Back"));
+  addText_Left(MENU_RETURN, computeMenuSize(), screenHeight - 5 * computeMenuSize() / 2,
+               _("Back"), computeScreenBorder());
 
   drawMousePointer();
   displayFrameRate();
diff --git a/src/setupMode.cc b/src/setupMode.cc
index c94ee25..6ff958d 100644
--- a/src/setupMode.cc
+++ b/src/setupMode.cc
@@ -71,6 +71,7 @@ SetupMode::SetupMode() : GameMode() {
   name = 0;
 }
 void SetupMode::display() {
+  Settings *settings = Settings::settings;
   glClearColor(0.0, 0.0, 0.0, 0.0);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -100,116 +101,6 @@ void SetupMode::display() {
   draw2DRectangle(0, 0, screenWidth, screenHeight, coord[0], coord[1], coord[2], coord[3], 1.,
                   1., 1., 1., active);
 
-  char str[256];
-  Settings *settings = Settings::settings;
-  int fontSize = 48;
-  int titleFontSize = 64;
-  int col0 = screenWidth / 2 - 400;
-  int col1 = screenWidth / 2 + 100;
-  int row0 = screenHeight / 2 - 100;
-  int rowSep = fontSize + 5;
-
-  int INFO_BASE = screenHeight - 70;
-  int INFO_DELTA = 20;
-  int INFO_RIGHT = 20;
-  double INFO_SIZE = 10.0, INFO_R = 1.0, INFO_G = 1.0, INFO_B = 1.0, INFO_A = 1.0;
-
-  double DESC_SIZE = 14.0, DESC_R = 1.0, DESC_G = 1.0, DESC_B = 1.0, DESC_A = 1.0;
-
-  /* Special fix for lower screen resolutions */
-  if (screenWidth == 640) {
-    fontSize = 32;
-    titleFontSize = 48;
-    col0 = screenWidth / 2 - 300;
-    col1 = screenWidth / 2 + 50;
-    rowSep = fontSize + 5;
-
-    INFO_SIZE = 8;
-    INFO_DELTA = 16;
-
-    DESC_SIZE = 8.0;
-  }
-  if (screenWidth == 800) {
-    fontSize = 32;
-    titleFontSize = 48;
-    col0 = screenWidth / 2 - 350;
-    col1 = screenWidth / 2 + 75;
-    rowSep = fontSize + 5;
-
-    DESC_SIZE = 10.0;
-
-    /*
-    INFO_WIDTH=8;
-    INFO_HEIGHT=8;
-    INFO_DELTA=16;    */
-  }
-
-  int DESC_RIGHT = (int)(col0 - DESC_SIZE);
-  int DESC_BASE = (int)(row0 + rowSep * 4);
-  int DESC_DELTA = (int)(DESC_SIZE * 2);
-
-  /* Draw title */
-  addText_Center(0, titleFontSize / 2, 64, _("Setup new game"), screenWidth / 2);
-
-  /* Name */
-  clearSelectionAreas();
-  addText_Left(0, fontSize / 2, row0 + rowSep * 0, _("Player Name"), col0);
-  addText_Left(CODE_NAME, fontSize / 2, row0 + rowSep * 0, gamer->name, col1);
-
-  /* Level set */
-  addText_Left(0, fontSize / 2, row0 + rowSep * 1, _("Level Set"), col0);
-  if (settings->doSpecialLevel)
-    addText_Left(0, fontSize / 2, row0 + rowSep * 1, _("N/A"), col1);
-  else
-    addText_Left(CODE_LEVEL_SET, fontSize / 2, row0 + rowSep * 1,
-                 settings->levelSets[levelSet].name, col1);
-
-  /* Start level */
-  addText_Left(0, fontSize / 2, row0 + rowSep * 2, _("Level"), col0);
-  if (settings->doSpecialLevel)
-    addText_Left(0, fontSize / 2, row0 + rowSep * 2, settings->specialLevel, col1);
-  else
-    addText_Left(CODE_START_LV, fontSize / 2, row0 + rowSep * 2,
-                 gamer->levels[levelSet][level].name, col1);
-
-  /* Difficulty */
-  addText_Left(0, fontSize / 2, row0 + rowSep * 3, _("Difficulty"), col0);
-  addText_Left(
-      CODE_DIFFICULTY, fontSize / 2, row0 + rowSep * 3,
-      (settings->sandbox
-           ? (settings->difficulty == 0
-                  ? _("Sandbox (Easy)")
-                  : (settings->difficulty == 1 ? _("Sandbox (Normal)") : _("Sandbox (Hard)")))
-           : (settings->difficulty == 0
-                  ? _("Easy")
-                  : (settings->difficulty == 1 ? _("Normal") : _("Hard")))),
-      col1);
-
-  /* Start */
-  addText_Center(CODE_START, fontSize / 2, screenHeight - 64, _("Start Game"),
-                 screenWidth / 2);
-
-  /* Info */
-  snprintf(str, sizeof(str), _("Total games played: %d"), gamer->timesPlayed);
-  Font::drawSimpleText(str, INFO_RIGHT, INFO_BASE + INFO_DELTA * 0, INFO_SIZE, INFO_R, INFO_G,
-                       INFO_B, INFO_A);
-  if (gamer->timesPlayed)
-    snprintf(str, sizeof(str), _("Average score: %d"), gamer->totalScore / gamer->timesPlayed);
-  else
-    snprintf(str, sizeof(str), _("Average score: N/A"));
-  Font::drawSimpleText(str, INFO_RIGHT, INFO_BASE + INFO_DELTA * 1, INFO_SIZE, INFO_R, INFO_G,
-                       INFO_B, INFO_A);
-  snprintf(str, sizeof(str), _("Levels completed: %d"), gamer->nLevelsCompleted);
-  Font::drawSimpleText(str, INFO_RIGHT, INFO_BASE + INFO_DELTA * 2, INFO_SIZE, INFO_R, INFO_G,
-                       INFO_B, INFO_A);
-
-  /* Descriptive level text */
-  int lineno;
-  for (lineno = 0; lineno < 5; lineno++)
-    Font::drawSimpleText(settings->levelSets[levelSet].description[lineno], DESC_RIGHT,
-                         DESC_BASE + DESC_DELTA * lineno, DESC_SIZE, DESC_R, DESC_G, DESC_B,
-                         DESC_A);
-
   Leave2DMode();
 
   /*                      */
@@ -296,6 +187,81 @@ void SetupMode::display() {
 
   Enter2DMode();
 
+  char str[256];
+
+  int lineSize = computeLineSize();
+  int fontSize = computeMenuSize();
+  int titleFontSize = computeHeaderSize();
+  int col0 = computeScreenBorder();
+  int col1 = screenWidth / 2;
+  int col1MaxExtent = screenWidth;
+  int rowSep = 9 * fontSize / 5;
+  int row0 = screenHeight / 2 - rowSep * 4;
+  int lineSep = 2 * lineSize;
+
+  /* Draw title */
+  addText_Center(0, titleFontSize, 32 + titleFontSize / 2, _("Setup new game"),
+                 screenWidth / 2);
+
+  /* Name */
+  clearSelectionAreas();
+  addText_Left(0, fontSize, row0 + rowSep * 0, _("Player Name"), col0);
+  addText_Left(CODE_NAME, fontSize, row0 + rowSep * 0, gamer->name, col1, col1MaxExtent);
+
+  /* Level set */
+  addText_Left(0, fontSize, row0 + rowSep * 1, _("Level Set"), col0);
+  if (settings->doSpecialLevel)
+    addText_Left(0, fontSize, row0 + rowSep * 1, _("N/A"), col1, col1MaxExtent);
+  else
+    addText_Left(CODE_LEVEL_SET, fontSize, row0 + rowSep * 1,
+                 settings->levelSets[levelSet].name, col1, col1MaxExtent);
+
+  /* Start level */
+  addText_Left(0, fontSize, row0 + rowSep * 2, _("Level"), col0);
+  if (settings->doSpecialLevel)
+    addText_Left(0, fontSize, row0 + rowSep * 2, settings->specialLevel, col1, col1MaxExtent);
+  else
+    addText_Left(CODE_START_LV, fontSize, row0 + rowSep * 2,
+                 gamer->levels[levelSet][level].name, col1, col1MaxExtent);
+
+  /* Difficulty */
+  addText_Left(0, fontSize, row0 + rowSep * 3, _("Difficulty"), col0);
+  const char *difficulty_str =
+      (settings->sandbox
+           ? (settings->difficulty == 0
+                  ? _("Sandbox (Easy)")
+                  : (settings->difficulty == 1 ? _("Sandbox (Normal)") : _("Sandbox (Hard)")))
+           : (settings->difficulty == 0
+                  ? _("Easy")
+                  : (settings->difficulty == 1 ? _("Normal") : _("Hard"))));
+  addText_Left(CODE_DIFFICULTY, fontSize, row0 + rowSep * 3, difficulty_str, col1,
+               col1MaxExtent);
+
+  /* Info */
+  snprintf(str, sizeof(str), _("Total games played: %d"), gamer->timesPlayed);
+  Font::drawSimpleText(str, col0, screenHeight - fontSize * 2 - lineSep * 4, lineSize, 1.0,
+                       1.0, 1.0, 1.0);
+  if (gamer->timesPlayed)
+    snprintf(str, sizeof(str), _("Average score: %d"), gamer->totalScore / gamer->timesPlayed);
+  else
+    snprintf(str, sizeof(str), _("Average score: N/A"));
+  Font::drawSimpleText(str, col0, screenHeight - fontSize * 2 - lineSep * 3, lineSize, 1.0,
+                       1.0, 1.0, 1.0);
+  snprintf(str, sizeof(str), _("Levels completed: %d"), gamer->nLevelsCompleted);
+  Font::drawSimpleText(str, col0, screenHeight - fontSize * 2 - lineSep * 2, lineSize, 1.0,
+                       1.0, 1.0, 1.0);
+
+  /* Descriptive level text */
+  int lineno;
+  for (lineno = 0; lineno < 5; lineno++)
+    Font::drawSimpleText(settings->levelSets[levelSet].description[lineno], col0 + lineSize,
+                         row0 + rowSep * 4 + lineSep * lineno, lineSize, 1.0, 1.0, 1.0, 1.0,
+                         screenWidth - col0 - lineSize);
+
+  /* Start */
+  addText_Center(CODE_START, fontSize, screenHeight - 5 * fontSize / 2, _("Start Game"),
+                 screenWidth / 2);
+
   displayFrameRate();
   drawMousePointer();
 
diff --git a/src/sideSpike.cc b/src/sideSpike.cc
index dc73aa5..34c47d8 100644
--- a/src/sideSpike.cc
+++ b/src/sideSpike.cc
@@ -21,6 +21,7 @@
 
 #include "sideSpike.h"
 
+#include "animatedCollection.h"
 #include "ball.h"
 #include "game.h"
 #include "map.h"
@@ -120,9 +121,6 @@ void SideSpike::drawBuffers1(GLuint *idxbufs, GLuint *databufs) {
 void SideSpike::drawBuffers2(GLuint * /*idxbufs*/, GLuint * /*databufs*/) {}
 
 void SideSpike::tick(Real t) {
-  std::set<Ball *>::iterator iter = Ball::balls->begin();
-  std::set<Ball *>::iterator end = Ball::balls->end();
-  Ball *ball;
   double dist, h;
 
   if (is_on) phase += t * this->speed;
@@ -164,8 +162,11 @@ void SideSpike::tick(Real t) {
   double od = 0., aod;  // lateral distance to the spike
   int ol = 0;           // true if possible bounce
 
+  const std::set<Animated *> &balls = Game::current->balls->bboxOverlapsWith(this);
+  std::set<Animated *>::iterator iter = balls.begin();
+  std::set<Animated *>::iterator end = balls.end();
   for (; iter != end; iter++) {
-    ball = *iter;
+    Ball *ball = (Ball *)*iter;
 
     if (!ball->alive) continue;
 
diff --git a/src/spike.cc b/src/spike.cc
index 0676442..a181303 100644
--- a/src/spike.cc
+++ b/src/spike.cc
@@ -22,6 +22,7 @@
 
 #include "spike.h"
 
+#include "animatedCollection.h"
 #include "game.h"
 #include "map.h"
 #include "player.h"
@@ -91,9 +92,6 @@ void Spike::drawBuffers1(GLuint *idxbufs, GLuint *databufs) {
 void Spike::drawBuffers2(GLuint * /*idxbufs*/, GLuint * /*databufs*/) {}
 
 void Spike::tick(Real t) {
-  std::set<Ball *>::iterator iter = Ball::balls->begin();
-  std::set<Ball *>::iterator end = Ball::balls->end();
-  Ball *ball;
   double dist, dx, dy, speed, h;
   int is_sinking = 0;
 
@@ -118,8 +116,11 @@ void Spike::tick(Real t) {
   }
   position[2] = z;
 
+  const std::set<Animated *> &balls = Game::current->balls->bboxOverlapsWith(this);
+  std::set<Animated *>::iterator iter = balls.begin();
+  std::set<Animated *>::iterator end = balls.end();
   for (; iter != end; iter++) {
-    ball = *iter;
+    Ball *ball = (Ball *)*iter;
     if (ball->alive && ball->position[0] > x - 1 && ball->position[0] < x + 1 &&
         ball->position[1] > y - 1 && ball->position[1] < y + 1) {
       dx = ball->position[0] - x;
diff --git a/src/teleport.cc b/src/teleport.cc
index 0fd7842..a07bdd7 100644
--- a/src/teleport.cc
+++ b/src/teleport.cc
@@ -45,6 +45,12 @@ Teleport::Teleport(Real x, Real y, Real dx, Real dy, Real radius) {
   secondaryColor[2] = 0.4;
   secondaryColor[3] = 1.0;
   is_on = 1;
+  boundingBox[0][0] = -2 * radius;
+  boundingBox[1][0] = 2 * radius;
+  boundingBox[0][1] = -2 * radius;
+  boundingBox[1][1] = 2 * radius;
+  boundingBox[0][2] = -2 * radius;
+  boundingBox[1][2] = 2 * radius + 0.5;
 }
 
 int Teleport::generateBuffers(GLuint *&idxbufs, GLuint *&databufs) {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/trackballs.git



More information about the Pkg-games-commits mailing list