Index: jewels.c
===================================================================
--- jewels.c	(Revision 26569)
+++ jewels.c	(Arbeitskopie)
@@ -142,17 +142,26 @@
 
 #elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
 #define JEWELS_SCROLLWHEEL
-#define JEWELS_UP     BUTTON_UP
-#define JEWELS_DOWN   BUTTON_DOWN
 #define JEWELS_LEFT   BUTTON_LEFT
 #define JEWELS_RIGHT  BUTTON_RIGHT
-#define JEWELS_PREV   BUTTON_SCROLL_BACK
-#define JEWELS_NEXT   BUTTON_SCROLL_FWD
 #define JEWELS_SELECT BUTTON_SELECT
 #define JEWELS_CANCEL (BUTTON_HOME|BUTTON_REPEAT)
 #define HK_SELECT "SELECT"
 #define HK_CANCEL "HOME"
 
+/* moving with 8, 4, 6 and 2 in the simulator is more comfortable. */
+#ifdef SIMULATOR
+#define JEWELS_PREV   BUTTON_UP
+#define JEWELS_NEXT   BUTTON_DOWN
+#define JEWELS_UP     BUTTON_SCROLL_BACK
+#define JEWELS_DOWN   BUTTON_SCROLL_FWD
+#else
+#define JEWELS_UP     BUTTON_UP
+#define JEWELS_DOWN   BUTTON_DOWN
+#define JEWELS_PREV   BUTTON_SCROLL_BACK
+#define JEWELS_NEXT   BUTTON_SCROLL_FWD
+#endif
+
 #elif CONFIG_KEYPAD == SANSA_C200_PAD || \
 CONFIG_KEYPAD == SANSA_CLIP_PAD || \
 CONFIG_KEYPAD == SANSA_M200_PAD
@@ -392,7 +401,21 @@
     unsigned int num_jewels;
 };
 
+/* define the growth of difficulty.
+ *
+ * for example:
+ * MIN_NUM_JEWELS 4
+ * MAX_NUM_JEWELS 7
+ * LEVELS_PER_DIFFICULTY 3
+ * means:
+ * -> Play with 4 types of jewels in the 1st to the 3rd level
+ * -> Play with 5 types of jewels in the 4rd to the 6th level
+ * -> Play with 6 types of jewels in the 7rd to the 9th level
+ * -> Play with 7 types of jewels from the 10th level
+ */
+#define MIN_NUM_JEWELS 4
 #define MAX_NUM_JEWELS 7
+#define LEVELS_PER_DIFFICULTY 3
 
 #define MAX_PUZZLE_TILES 4
 #define NUM_PUZZLE_LEVELS 10
@@ -1209,11 +1232,17 @@
 static unsigned int jewels_initlevel(struct game_context* bj) {
     unsigned int points = 0;
 
-    switch(bj->type) {
-        case GAME_TYPE_NORMAL:
-            bj->num_jewels = MAX_NUM_JEWELS;
+    switch(bj->type) { 
+        case GAME_TYPE_NORMAL: 
+        {
+            unsigned int difficulty = (bj->level-1)/LEVELS_PER_DIFFICULTY;
+            unsigned int num_jewels = MIN_NUM_JEWELS + difficulty;
+            if(num_jewels>MAX_NUM_JEWELS)
+                num_jewels = MAX_NUM_JEWELS;
+            DEBUGF("level %d -> %d jewels\n", bj->level, num_jewels);
+            bj->num_jewels = num_jewels;
             break;
-
+        }
         case GAME_TYPE_PUZZLE:
         {
             unsigned int i, j;
