summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/battery_bench.c11
-rw-r--r--apps/plugins/bitmaps/mono/SOURCES4
-rw-r--r--apps/plugins/bitmaps/mono/bubbles_bubble.128x96x1.bmpbin0 -> 100 bytes
-rw-r--r--apps/plugins/bitmaps/mono/flipit_cursor.21x21x1.bmpbin0 -> 148 bytes
-rw-r--r--apps/plugins/bitmaps/native/SOURCES18
-rw-r--r--apps/plugins/bitmaps/native/brickmania_ball.4x4x2.bmpbin0 -> 112 bytes
-rw-r--r--apps/plugins/bitmaps/native/brickmania_bricks.128x96x2.bmpbin0 -> 1316 bytes
-rw-r--r--apps/plugins/bitmaps/native/brickmania_menu_bg.160x128x2.bmpbin3676 -> 2956 bytes
-rw-r--r--apps/plugins/bitmaps/native/bubbles_emblem.128x96x2.bmpbin0 -> 280 bytes
-rw-r--r--apps/plugins/bitmaps/native/flipit_tokens.21x42x2.bmpbin0 -> 1080 bytes
-rw-r--r--apps/plugins/bitmaps/native/jewels.128x96x2.bmpbin0 -> 4392 bytes
-rw-r--r--apps/plugins/bitmaps/native/rockblox_background.128x96x2.bmpbin0 -> 12360 bytes
-rw-r--r--apps/plugins/blackjack.c16
-rw-r--r--apps/plugins/bounce.c40
-rw-r--r--apps/plugins/brickmania.c64
-rw-r--r--apps/plugins/bubbles.c69
-rw-r--r--apps/plugins/calculator.c51
-rw-r--r--apps/plugins/chessclock.c10
-rw-r--r--apps/plugins/chip8.c10
-rw-r--r--apps/plugins/chopper.c6
-rw-r--r--apps/plugins/cube.c12
-rw-r--r--apps/plugins/dict.c2
-rw-r--r--apps/plugins/disktidy.c3
-rw-r--r--apps/plugins/fireworks.c6
-rw-r--r--apps/plugins/flipit.c52
-rw-r--r--apps/plugins/jewels.c28
-rw-r--r--apps/plugins/lib/SOURCES3
-rw-r--r--apps/plugins/lib/pluginlib_actions.c27
-rw-r--r--apps/plugins/logo.c11
-rw-r--r--apps/plugins/matrix.c5
-rw-r--r--apps/plugins/mazezam.c12
-rw-r--r--apps/plugins/minesweeper.c54
-rw-r--r--apps/plugins/mosaique.c5
-rw-r--r--apps/plugins/mp3_encoder.c5
-rw-r--r--apps/plugins/oscilloscope.c13
-rw-r--r--apps/plugins/pong.c8
-rw-r--r--apps/plugins/rockblox.c66
-rw-r--r--apps/plugins/sliding_puzzle.c35
-rw-r--r--apps/plugins/snake.c36
-rw-r--r--apps/plugins/snake2.c111
-rw-r--r--apps/plugins/snow.c3
-rw-r--r--apps/plugins/sokoban.c50
-rw-r--r--apps/plugins/solitaire.c27
-rw-r--r--apps/plugins/spacerocks.c13
-rw-r--r--apps/plugins/star.c41
-rw-r--r--apps/plugins/starfield.c7
-rw-r--r--apps/plugins/stats.c4
-rw-r--r--apps/plugins/stopwatch.c8
-rw-r--r--apps/plugins/test_codec.c4
-rw-r--r--apps/plugins/test_fps.c2
-rw-r--r--apps/plugins/test_scanrate.c10
-rw-r--r--apps/plugins/viewer.c12
-rw-r--r--apps/plugins/vu_meter.c9
-rw-r--r--apps/plugins/wormlet.c18
-rw-r--r--apps/plugins/xobox.c9
55 files changed, 817 insertions, 193 deletions
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index 658dfca..6b52a4d 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -135,6 +135,15 @@ PLUGIN_HEADER
#define BATTERY_ON_TXT "SELECT - start"
#define BATTERY_OFF_TXT "POWER - quit"
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+
+#define BATTERY_ON BUTTON_PLAY
+#define BATTERY_OFF BUTTON_REC
+#define BATTERY_RC_ON BUTTON_RC_PLAY
+#define BATTERY_RC_OFF BUTTON_RC_REC
+#define BATTERY_ON_TXT "PLAY - start"
+#define BATTERY_OFF_TXT "REC - quit"
+
#else
#error No keymap defined!
#endif
@@ -231,7 +240,7 @@ void thread(void)
int fd, buffelements, tick = 1, i = 0, skipped = 0, exit = 0;
int fst = 0, lst = 0; /* first and last skipped tick */
unsigned int last_voltage = 0;
-#if CONFIG_CHARGING || defined(HAVE_USB_POWER)
+#if CONFIG_CHARGING || defined(HAVE_USB_POWER)
unsigned int last_state = 0;
#endif
long sleep_time = 5 * HZ;
diff --git a/apps/plugins/bitmaps/mono/SOURCES b/apps/plugins/bitmaps/mono/SOURCES
index a7ce0b5..d2952d1 100644
--- a/apps/plugins/bitmaps/mono/SOURCES
+++ b/apps/plugins/bitmaps/mono/SOURCES
@@ -5,6 +5,8 @@
bubbles_bubble.112x64x1.bmp
#elif (LCD_WIDTH == 132) && (LCD_HEIGHT == 80)
bubbles_bubble.132x80x16.bmp
+#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 96)
+bubbles_bubble.128x96x1.bmp
#elif ((LCD_WIDTH == 160) && (LCD_HEIGHT == 128)) || \
((LCD_WIDTH == 128) && (LCD_HEIGHT == 128))
bubbles_bubble.160x128x1.bmp
@@ -35,6 +37,8 @@ rockblox_background.160x128x1.bmp
flipit_cursor.28x28x1.bmp
#elif LCD_WIDTH >= 125 && LCD_HEIGHT >= 110
flipit_cursor.25x25x1.bmp
+#elif LCD_WIDTH >= 105 && LCD_HEIGHT >= 96
+flipit_cursor.21x21x1.bmp
#elif LCD_WIDTH >= 80 && LCD_HEIGHT >= 62
flipit_cursor.16x13x1.bmp
#endif
diff --git a/apps/plugins/bitmaps/mono/bubbles_bubble.128x96x1.bmp b/apps/plugins/bitmaps/mono/bubbles_bubble.128x96x1.bmp
new file mode 100644
index 0000000..a58ef9c
--- /dev/null
+++ b/apps/plugins/bitmaps/mono/bubbles_bubble.128x96x1.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/mono/flipit_cursor.21x21x1.bmp b/apps/plugins/bitmaps/mono/flipit_cursor.21x21x1.bmp
new file mode 100644
index 0000000..950426d
--- /dev/null
+++ b/apps/plugins/bitmaps/mono/flipit_cursor.21x21x1.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/SOURCES b/apps/plugins/bitmaps/native/SOURCES
index b1393cf..c7ed52b 100644
--- a/apps/plugins/bitmaps/native/SOURCES
+++ b/apps/plugins/bitmaps/native/SOURCES
@@ -59,15 +59,19 @@ brickmania_break.132x80x16.bmp
#elif LCD_DEPTH > 1
brickmania_gameover.86x43x2.bmp
brickmania_menu_items.160x128x2.bmp
-brickmania_ball.5x5x2.bmp
brickmania_menu_bg.160x128x2.bmp
brickmania_pads.160x128x2.bmp
brickmania_powerups.160x128x2.bmp
-brickmania_break.160x128x2.bmp
+//brickmania_break.160x128x2.bmp
#if (LCD_WIDTH >= 160)
+brickmania_ball.5x5x2.bmp
brickmania_bricks.160x128x2.bmp
-#else /* Mini currently */
+#elif LCD_WIDTH >= 138
+brickmania_ball.5x5x2.bmp
brickmania_bricks.138x110x2.bmp
+#else /* M3 currently */
+brickmania_ball.4x4x2.bmp
+brickmania_bricks.128x96x2.bmp
#endif
#else /* mono */
brickmania_gameover.59x30x1.bmp
@@ -113,6 +117,8 @@ bubbles_background.132x80x16.bmp
bubbles_emblem.160x128x2.bmp
#elif (LCD_WIDTH >= 138) && (LCD_HEIGHT >= 110)
bubbles_emblem.138x110x2.bmp
+#elif (LCD_WIDTH >= 128) && (LCD_HEIGHT >= 96)
+bubbles_emblem.128x96x2.bmp
#elif (LCD_WIDTH >= 112) && (LCD_HEIGHT >= 64)
bubbles_emblem.112x64x1.bmp
#endif
@@ -235,6 +241,8 @@ flipit_tokens.17x34x16.bmp
flipit_tokens.28x56x2.bmp
#elif LCD_WIDTH >= 125 && LCD_HEIGHT >= 110
flipit_tokens.25x50x2.bmp
+#elif LCD_WIDTH >= 105 && LCD_HEIGHT >= 96
+flipit_tokens.21x42x2.bmp
#endif
#else /* monochrome */
#if LCD_WIDTH >= 140 && LCD_HEIGHT >= 122
@@ -279,6 +287,8 @@ jewels.112x64x1.bmp
jewels.128x128x16.bmp
#elif (LCD_WIDTH == 132) && (LCD_HEIGHT == 80)
jewels.132x80x16.bmp
+#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 96)
+jewels.128x96x2.bmp
#elif (LCD_WIDTH == 138) && (LCD_HEIGHT == 110)
jewels.138x110x2.bmp
#elif (LCD_WIDTH == 160) && (LCD_HEIGHT == 128) && !defined(HAVE_LCD_COLOR)
@@ -333,6 +343,8 @@ rockblox_background.132x80x16.bmp
rockblox_background.160x128x2.bmp
#elif (LCD_WIDTH == 138) && (LCD_HEIGHT == 110) && (LCD_DEPTH == 2)
rockblox_background.138x110x2.bmp
+#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 96) && (LCD_DEPTH == 2)
+rockblox_background.128x96x2.bmp
#endif
/* Rockpaint */
diff --git a/apps/plugins/bitmaps/native/brickmania_ball.4x4x2.bmp b/apps/plugins/bitmaps/native/brickmania_ball.4x4x2.bmp
new file mode 100644
index 0000000..78329d9
--- /dev/null
+++ b/apps/plugins/bitmaps/native/brickmania_ball.4x4x2.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/brickmania_bricks.128x96x2.bmp b/apps/plugins/bitmaps/native/brickmania_bricks.128x96x2.bmp
new file mode 100644
index 0000000..fe12692
--- /dev/null
+++ b/apps/plugins/bitmaps/native/brickmania_bricks.128x96x2.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/brickmania_menu_bg.160x128x2.bmp b/apps/plugins/bitmaps/native/brickmania_menu_bg.160x128x2.bmp
index 4526af9..40e6a21 100644
--- a/apps/plugins/bitmaps/native/brickmania_menu_bg.160x128x2.bmp
+++ b/apps/plugins/bitmaps/native/brickmania_menu_bg.160x128x2.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/bubbles_emblem.128x96x2.bmp b/apps/plugins/bitmaps/native/bubbles_emblem.128x96x2.bmp
new file mode 100644
index 0000000..2b5293b
--- /dev/null
+++ b/apps/plugins/bitmaps/native/bubbles_emblem.128x96x2.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/flipit_tokens.21x42x2.bmp b/apps/plugins/bitmaps/native/flipit_tokens.21x42x2.bmp
new file mode 100644
index 0000000..dba7d6a
--- /dev/null
+++ b/apps/plugins/bitmaps/native/flipit_tokens.21x42x2.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/jewels.128x96x2.bmp b/apps/plugins/bitmaps/native/jewels.128x96x2.bmp
new file mode 100644
index 0000000..adf9711
--- /dev/null
+++ b/apps/plugins/bitmaps/native/jewels.128x96x2.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/rockblox_background.128x96x2.bmp b/apps/plugins/bitmaps/native/rockblox_background.128x96x2.bmp
new file mode 100644
index 0000000..3f2623c
--- /dev/null
+++ b/apps/plugins/bitmaps/native/rockblox_background.128x96x2.bmp
Binary files differ
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index b4f0da4..fc2f542 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -234,6 +234,22 @@ PLUGIN_HEADER
#define BJACK_RIGHT BUTTON_RIGHT
#define BJACK_LEFT BUTTON_LEFT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+
+#define BJACK_START BUTTON_RC_PLAY
+#define BJACK_QUIT BUTTON_RC_REC
+#define BJACK_MAX (BUTTON_RC_PLAY|BUTTON_RC_VOL_UP)
+#define BJACK_MIN (BUTTON_RC_PLAY|BUTTON_RC_VOL_DOWN)
+#define BJACK_HIT BUTTON_RC_PLAY
+#define BJACK_STAY BUTTON_RC_FF
+#define BJACK_DOUBLEDOWN BUTTON_RC_REW
+#define BJACK_SCORES BUTTON_RC_MENU
+#define BJACK_RESUME BUTTON_RC_MODE
+#define BJACK_UP BUTTON_RC_VOL_UP
+#define BJACK_DOWN BUTTON_RC_VOL_DOWN
+#define BJACK_RIGHT BUTTON_RC_FF
+#define BJACK_LEFT BUTTON_RC_REW
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/bounce.c b/apps/plugins/bounce.c
index f83d993..8216a39 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -30,18 +30,24 @@ PLUGIN_HEADER
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_UP
#define BOUNCE_DOWN BUTTON_DOWN
#define BOUNCE_QUIT (BUTTON_OFF | BUTTON_REL)
#define BOUNCE_MODE (BUTTON_ON | BUTTON_REL)
#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_UP
#define BOUNCE_DOWN BUTTON_DOWN
#define BOUNCE_QUIT (BUTTON_OFF | BUTTON_REL)
#define BOUNCE_MODE (BUTTON_ON | BUTTON_REL)
#elif CONFIG_KEYPAD == ONDIO_PAD
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_UP
#define BOUNCE_DOWN BUTTON_DOWN
#define BOUNCE_QUIT (BUTTON_OFF | BUTTON_REL)
@@ -49,6 +55,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_UP
#define BOUNCE_DOWN BUTTON_DOWN
#define BOUNCE_QUIT (BUTTON_OFF | BUTTON_REL)
@@ -59,53 +67,77 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_SCROLL_BACK
#define BOUNCE_DOWN BUTTON_SCROLL_FWD
#define BOUNCE_QUIT (BUTTON_MENU | BUTTON_REL)
#define BOUNCE_MODE (BUTTON_SELECT | BUTTON_REL)
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_UP
#define BOUNCE_DOWN BUTTON_DOWN
#define BOUNCE_QUIT BUTTON_POWER
#define BOUNCE_MODE BUTTON_PLAY
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_UP
#define BOUNCE_DOWN BUTTON_DOWN
#define BOUNCE_QUIT BUTTON_POWER
#define BOUNCE_MODE BUTTON_A
#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_SCROLL_BACK
#define BOUNCE_DOWN BUTTON_SCROLL_FWD
#define BOUNCE_QUIT BUTTON_POWER
#define BOUNCE_MODE BUTTON_SELECT
#elif CONFIG_KEYPAD == SANSA_C200_PAD
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_UP
#define BOUNCE_DOWN BUTTON_DOWN
#define BOUNCE_QUIT BUTTON_POWER
#define BOUNCE_MODE BUTTON_SELECT
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_SCROLL_UP
#define BOUNCE_DOWN BUTTON_SCROLL_DOWN
#define BOUNCE_QUIT BUTTON_POWER
#define BOUNCE_MODE BUTTON_PLAY
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_UP
#define BOUNCE_DOWN BUTTON_DOWN
#define BOUNCE_QUIT BUTTON_BACK
#define BOUNCE_MODE BUTTON_MENU
#elif (CONFIG_KEYPAD == MROBE100_PAD)
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_UP
#define BOUNCE_DOWN BUTTON_DOWN
#define BOUNCE_QUIT BUTTON_POWER
#define BOUNCE_MODE BUTTON_DISPLAY
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define BOUNCE_LEFT BUTTON_RC_REW
+#define BOUNCE_RIGHT BUTTON_RC_FF
+#define BOUNCE_UP BUTTON_RC_VOL_UP
+#define BOUNCE_DOWN BUTTON_RC_VOL_DOWN
+#define BOUNCE_QUIT BUTTON_RC_REC
+#define BOUNCE_MODE BUTTON_RC_MODE
+
#else
#error No keymap defined!
#endif
@@ -477,12 +509,12 @@ static int loopit(void)
#endif
if(timeout) {
switch(b) {
- case BUTTON_LEFT:
- case BUTTON_LEFT|BUTTON_REPEAT:
+ case BOUNCE_LEFT:
+ case BOUNCE_LEFT|BUTTON_REPEAT:
values[show].num--;
break;
- case BUTTON_RIGHT:
- case BUTTON_RIGHT|BUTTON_REPEAT:
+ case BOUNCE_RIGHT:
+ case BOUNCE_RIGHT|BUTTON_REPEAT:
values[show].num++;
break;
case BOUNCE_UP:
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index b37dd97..d376ad2 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -153,6 +153,17 @@ PLUGIN_HEADER
#define UP BUTTON_UP
#define DOWN BUTTON_DOWN
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+
+#define QUIT BUTTON_RC_REC
+#define LEFT BUTTON_RC_REW
+#define RIGHT BUTTON_RC_FF
+#define SELECT BUTTON_RC_PLAY
+#define UP BUTTON_RC_VOL_UP
+#define DOWN BUTTON_RC_VOL_DOWN
+
+#define RC_QUIT BUTTON_REC
+
#else
#error No keymap defined!
#endif
@@ -177,26 +188,6 @@ enum menu_items {
BM_SEL_QUIT,
};
-/* External bitmaps */
-#if (LCD_WIDTH != 112) && (LCD_HEIGHT != 64)
-extern const fb_data brickmania_menu_bg[];
-extern const fb_data brickmania_gameover[];
-#endif
-extern const fb_data brickmania_menu_items[];
-extern const fb_data brickmania_ball[];
-#ifdef HAVE_LCD_COLOR
-extern const fb_data brickmania_break[];
-#endif
-
-/* normal, glue, fire */
-extern const fb_data brickmania_pads[];
-
-/* +life, -life, glue, fire, normal */
-extern const fb_data brickmania_powerups[];
-
-/* purple, red, blue, pink, green, yellow orange */
-extern const fb_data brickmania_bricks[];
-
#include "brickmania_pads.h"
#include "brickmania_bricks.h"
#include "brickmania_powerups.h"
@@ -225,6 +216,9 @@ extern const fb_data brickmania_bricks[];
#define MENU_BGWIDTH BMPWIDTH_brickmania_menu_bg
#endif
+#ifdef HAVE_LCD_COLOR /* currently no transparency for non-colour */
+#include "brickmania_break.h"
+#endif
#if (LCD_WIDTH == 320) && (LCD_HEIGHT == 240)
@@ -350,7 +344,26 @@ extern const fb_data brickmania_bricks[];
#define STRINGPOS_NAVI 44
#define STRINGPOS_FLIP 44
+/* iAudio M3 */
+#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 96)
+/* The time (in ms) for one iteration through the game loop - decrease this
+ to speed up the game - note that current_tick is (currently) only accurate
+ to 10ms.
+*/
+#define CYCLETIME 50
+
+#define TOPMARGIN 10
+
+#define BMPYOFS_start 42
+#define HIGHSCORE_XPOS 65
+#define HIGHSCORE_YPOS 25
+
+#define STRINGPOS_FINISH 54
+#define STRINGPOS_CONGRATS 44
+#define STRINGPOS_NAVI 44
+#define STRINGPOS_FLIP 44
+/* Archos */
#elif (LCD_WIDTH == 112) && (LCD_HEIGHT == 64)
/* The time (in ms) for one iteration through the game loop - decrease this
to speed up the game - note that current_tick is (currently) only accurate
@@ -1072,7 +1085,7 @@ int help(int when)
#if CONFIG_KEYPAD == ONDIO_PAD
rb->lcd_putsxy(1+xoffset, 7*(h+2)+yoffset,
"MENU Releases the ball/Fire!");
-#elif CONFIG_KEYPAD == RECORDER_PAD
+#elif (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == IAUDIO_M3_PAD)
rb->lcd_putsxy(1+xoffset, 7*(h+2)+yoffset,
"PLAY Releases the ball/Fire!");
#elif CONFIG_KEYPAD == IRIVER_H300_PAD
@@ -1082,7 +1095,11 @@ int help(int when)
rb->lcd_putsxy(1+xoffset, 7*(h+2)+yoffset,
"SELECT Releases the ball/Fire!");
#endif
+#if CONFIG_KEYPAD == IAUDIO_M3_PAD
+ rb->lcd_putsxy(1+xoffset, 8*(h+2)+yoffset, "REC Opens menu/Quit");
+#else
rb->lcd_putsxy(1+xoffset, 8*(h+2)+yoffset, "STOP Opens menu/Quit");
+#endif
#ifdef HAVE_LCD_COLOR
rb->lcd_set_foreground(LCD_RGBPACK(245,0,0));
rb->lcd_putsxy(1+xoffset, 10*(h+2)+yoffset, "Specials");
@@ -1291,6 +1308,8 @@ int game_loop(void)
rb->snprintf(s, sizeof(s), "MENU To Continue");
#elif CONFIG_KEYPAD == IRIVER_H300_PAD
rb->snprintf(s, sizeof(s), "Press NAVI To Continue");
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+ rb->snprintf(s, sizeof(s), "PLAY To Continue");
#else
rb->snprintf(s, sizeof(s), "Press SELECT To Continue");
#endif
@@ -1794,7 +1813,8 @@ int game_loop(void)
int button_right,button_left;
button=rb->button_get(false);
-#ifdef HAS_BUTTON_HOLD
+#if defined(HAS_BUTTON_HOLD) && !defined(HAVE_REMOTE_LCD_AS_MAIN)
+ /* FIXME: Should probably check remote hold here */
if (rb->button_hold())
button = QUIT;
#endif
diff --git a/apps/plugins/bubbles.c b/apps/plugins/bubbles.c
index 05ce15d7..85cde59 100644
--- a/apps/plugins/bubbles.c
+++ b/apps/plugins/bubbles.c
@@ -95,14 +95,21 @@ PLUGIN_HEADER
#endif
+/* external bitmaps */
+#ifdef HAVE_LCD_COLOR
+#include "bubbles_background.h"
+#endif
+#include "bubbles_bubble.h"
+#include "bubbles_emblem.h"
+
+#define BUBBLE_WIDTH BMPWIDTH_bubbles_bubble
+#define BUBBLE_HEIGHT BMPHEIGHT_bubbles_bubble
+#define EMBLEM_WIDTH BMPWIDTH_bubbles_emblem
+#define EMBLEM_HEIGHT (BMPHEIGHT_bubbles_emblem/8)
/* bubbles will consume height of ROW_HEIGHT*(BB_HEIGHT-1)+BUBBLE_HEIGHT*3/2 */
/* 22x22 bubbles (iPod Video) */
#if (LCD_HEIGHT == 240) && (LCD_WIDTH == 320)
-#define BUBBLE_WIDTH 22
-#define BUBBLE_HEIGHT 22
-#define EMBLEM_WIDTH 16
-#define EMBLEM_HEIGHT 16
#define XOFS 72
#define ROW_HEIGHT 18
#define ROW_INDENT 11
@@ -110,10 +117,6 @@ PLUGIN_HEADER
/* 22x22 bubbles (Gigabeat) */
#elif (LCD_HEIGHT == 320) && (LCD_WIDTH == 240)
-#define BUBBLE_WIDTH 22
-#define BUBBLE_HEIGHT 22
-#define EMBLEM_WIDTH 16
-#define EMBLEM_HEIGHT 16
#define XOFS 64
#define ROW_HEIGHT 18
#define ROW_INDENT 11
@@ -121,10 +124,6 @@ PLUGIN_HEADER
/* 16x16 bubbles (H300, iPod Color) */
#elif (LCD_HEIGHT == 176) && (LCD_WIDTH == 220)
-#define BUBBLE_WIDTH 16
-#define BUBBLE_HEIGHT 16
-#define EMBLEM_WIDTH 12
-#define EMBLEM_HEIGHT 12
#define XOFS 46
#define ROW_HEIGHT 14
#define ROW_INDENT 8
@@ -132,10 +131,6 @@ PLUGIN_HEADER
/* 16x16 bubbles (Sansa E200) */
#elif (LCD_HEIGHT == 220) && (LCD_WIDTH == 176)
-#define BUBBLE_WIDTH 16
-#define BUBBLE_HEIGHT 16
-#define EMBLEM_WIDTH 12
-#define EMBLEM_HEIGHT 12
#define XOFS 48
#define ROW_HEIGHT 14
#define ROW_INDENT 8
@@ -143,10 +138,6 @@ PLUGIN_HEADER
/* 12x12 bubbles (iPod Nano) */
#elif (LCD_HEIGHT == 132) && (LCD_WIDTH == 176)
-#define BUBBLE_WIDTH 12
-#define BUBBLE_HEIGHT 12
-#define EMBLEM_WIDTH 8
-#define EMBLEM_HEIGHT 8
#define XOFS 40
#define ROW_HEIGHT 10
#define ROW_INDENT 6
@@ -154,10 +145,6 @@ PLUGIN_HEADER
/* 12x12 bubbles (H100, H10, iAudio X5, iPod 3G, iPod 4G grayscale) */
#elif (LCD_HEIGHT == 128) && ((LCD_WIDTH == 160) || (LCD_WIDTH == 128))
-#define BUBBLE_WIDTH 12
-#define BUBBLE_HEIGHT 12
-#define EMBLEM_WIDTH 8
-#define EMBLEM_HEIGHT 8
#define XOFS 33
#define ROW_HEIGHT 10
#define ROW_INDENT 6
@@ -165,21 +152,20 @@ PLUGIN_HEADER
/* 10x10 bubbles (iPod Mini) */
#elif (LCD_HEIGHT == 110) && (LCD_WIDTH == 138)
-#define BUBBLE_WIDTH 10
-#define BUBBLE_HEIGHT 10
-#define EMBLEM_WIDTH 6
-#define EMBLEM_HEIGHT 6
#define XOFS 33
#define ROW_HEIGHT 8
#define ROW_INDENT 5
#define MAX_FPS 30
+/* 9x9 bubbles (iAudio M3) */
+#elif (LCD_HEIGHT == 96) && (LCD_WIDTH == 128)
+#define XOFS 45
+#define ROW_HEIGHT 7
+#define ROW_INDENT 4
+#define MAX_FPS 30
+
/* 8x8 bubbles (Sansa C200) */
#elif (LCD_HEIGHT == 80) && (LCD_WIDTH == 132)
-#define BUBBLE_WIDTH 8
-#define BUBBLE_HEIGHT 8
-#define EMBLEM_WIDTH 6
-#define EMBLEM_HEIGHT 6
#define XOFS 45
#define ROW_HEIGHT 6
#define ROW_INDENT 4
@@ -187,10 +173,6 @@ PLUGIN_HEADER
/* 8x7 bubbles (Archos recorder, Ondio) */
#elif (LCD_HEIGHT == 64) && (LCD_WIDTH == 112)
-#define BUBBLE_WIDTH 8
-#define BUBBLE_HEIGHT 7
-#define EMBLEM_WIDTH 7
-#define EMBLEM_HEIGHT 5
#define XOFS 33
#define ROW_HEIGHT 5
#define ROW_INDENT 4
@@ -209,13 +191,6 @@ PLUGIN_HEADER
/* collision distance squared */
#define MIN_DISTANCE ((BUBBLE_WIDTH*8)/10)*((BUBBLE_HEIGHT*8)/10)
-/* external bitmaps */
-extern const fb_data bubbles_bubble[];
-extern const fb_data bubbles_emblem[];
-#ifdef HAVE_LCD_COLOR
-extern const fb_data bubbles_background[];
-#endif
-
/* global rockbox api */
static struct plugin_api* rb;
@@ -2473,6 +2448,14 @@ static int bubbles(struct game_context* bb) {
rb->lcd_puts(0, 4, "POWER to exit");
rb->lcd_puts_scroll(0, 5, "SELECT to fire and show high scores, "
"LEFT/RIGHT to aim and change level");
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+ rb->lcd_puts(0, 2, "PLAY to start/pause");
+ rb->lcd_puts(0, 3, "MENU to save/resume");
+ rb->lcd_puts(0, 4, "REC to exit");
+ rb->lcd_puts(0, 5, "MODE to fire");
+ rb->lcd_puts(0, 6, " and show high scores");
+ rb->lcd_puts(0, 7, "REW/FF to aim");
+ rb->lcd_puts(0, 8, "VOL UP/DN to change level");
#endif
#if LCD_WIDTH >= 138
rb->snprintf(str, 28, "Start on level %d of %d", startlevel+1,
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index cfc0f76..53be78f 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -108,6 +108,8 @@ PLUGIN_HEADER
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_OFF
@@ -117,6 +119,8 @@ PLUGIN_HEADER
#define CALCULATOR_CLEAR BUTTON_F1
#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_OFF
@@ -126,6 +130,8 @@ PLUGIN_HEADER
#define CALCULATOR_CLEAR BUTTON_F1
#elif CONFIG_KEYPAD == ONDIO_PAD
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_OFF
@@ -135,6 +141,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_OFF
@@ -149,6 +157,8 @@ PLUGIN_HEADER
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_SCROLL_BACK
#define CALCULATOR_DOWN BUTTON_SCROLL_FWD
#define CALCULATOR_QUIT BUTTON_MENU
@@ -158,6 +168,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_POWER
@@ -168,6 +180,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_POWER
@@ -177,6 +191,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD)
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_POWER
@@ -187,6 +203,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_SCROLL_UP
#define CALCULATOR_DOWN BUTTON_SCROLL_DOWN
#define CALCULATOR_QUIT BUTTON_POWER
@@ -197,6 +215,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_BACK
@@ -207,6 +227,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == MROBE100_PAD)
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_POWER
@@ -214,6 +236,19 @@ PLUGIN_HEADER
#define CALCULATOR_CALC BUTTON_MENU
#define CALCULATOR_CLEAR BUTTON_DISPLAY
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+
+#define CALCULATOR_LEFT BUTTON_RC_REW
+#define CALCULATOR_RIGHT BUTTON_RC_FF
+#define CALCULATOR_UP BUTTON_RC_VOL_UP
+#define CALCULATOR_DOWN BUTTON_RC_VOL_DOWN
+#define CALCULATOR_QUIT BUTTON_RC_REC
+#define CALCULATOR_INPUT BUTTON_RC_PLAY
+#define CALCULATOR_CALC BUTTON_RC_MODE
+#define CALCULATOR_CLEAR BUTTON_RC_MENU
+
+#define CALCULATOR_RC_QUIT BUTTON_REC
+
#else
#error No keymap defined!
#endif
@@ -763,16 +798,16 @@ Invert display new button, invert back previous button
----------------------------------------------------------------------- */
void moveButton(void){
switch(btn){
- case BUTTON_LEFT:
- case BUTTON_LEFT | BUTTON_REPEAT:
+ case CALCULATOR_LEFT:
+ case CALCULATOR_LEFT | BUTTON_REPEAT:
if (n == 0)
n = 4;
else
n--;
break;
- case BUTTON_RIGHT:
- case BUTTON_RIGHT | BUTTON_REPEAT:
+ case CALCULATOR_RIGHT:
+ case CALCULATOR_RIGHT | BUTTON_REPEAT:
if (n == 4)
n = 0;
else
@@ -1458,10 +1493,10 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
break;
#endif
- case BUTTON_LEFT:
- case BUTTON_LEFT | BUTTON_REPEAT:
- case BUTTON_RIGHT:
- case BUTTON_RIGHT | BUTTON_REPEAT:
+ case CALCULATOR_LEFT:
+ case CALCULATOR_LEFT | BUTTON_REPEAT:
+ case CALCULATOR_RIGHT:
+ case CALCULATOR_RIGHT | BUTTON_REPEAT:
case CALCULATOR_UP:
case CALCULATOR_UP | BUTTON_REPEAT:
case CALCULATOR_DOWN:
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 6523021..7d16c7c 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -170,6 +170,16 @@ PLUGIN_HEADER
#define CHC_SETTINGS_OK BUTTON_SELECT
#define CHC_SETTINGS_CANCEL BUTTON_POWER
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define CHC_QUIT BUTTON_RC_REC
+#define CHC_STARTSTOP BUTTON_RC_PLAY
+#define CHC_RESET BUTTON_RC_REW
+#define CHC_MENU BUTTON_RC_MENU
+#define CHC_SETTINGS_INC BUTTON_RC_VOL_UP
+#define CHC_SETTINGS_DEC BUTTON_RC_VOL_DOWN
+#define CHC_SETTINGS_OK BUTTON_RC_PLAY
+#define CHC_SETTINGS_CANCEL BUTTON_RC_REC
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index ab685e5..5fbf1be 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1067,6 +1067,16 @@ STATIC void chip8 (void)
#define CHIP8_KEY7 BUTTON_DISPLAY
#define CHIP8_KEY8 BUTTON_DOWN
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define CHIP8_OFF BUTTON_RC_REC
+#define CHIP8_KEY1 BUTTON_RC_MENU
+#define CHIP8_KEY2 BUTTON_RC_VOL_UP
+#define CHIP8_KEY3 BUTTON_RC_MODE
+#define CHIP8_KEY4 BUTTON_RC_REW
+#define CHIP8_KEY5 BUTTON_RC_PLAY
+#define CHIP8_KEY6 BUTTON_RC_FF
+#define CHIP8_KEY8 BUTTON_RC_VOL_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index 92b01cd..02cc2ff 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -97,6 +97,12 @@ Still To do:
#define ACTION BUTTON_SELECT
#define ACTIONTEXT "SELECT"
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define QUIT BUTTON_RC_REC
+#define ACTION BUTTON_RC_PLAY
+#define ACTION2 BUTTON_RC_MODE
+#define ACTIONTEXT "PLAY"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index dfc6bb3..96d95fc 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -229,6 +229,18 @@ PLUGIN_HEADER
#define CUBE_PAUSE BUTTON_PLAY
#define CUBE_HIGHSPEED BUTTON_SELECT
+#elif (CONFIG_KEYPAD == IAUDIO_M3_PAD)
+#define CUBE_QUIT BUTTON_RC_REC
+#define CUBE_X_INC BUTTON_RC_FF
+#define CUBE_X_DEC BUTTON_RC_REW
+#define CUBE_Y_INC BUTTON_RC_VOL_UP
+#define CUBE_Y_DEC BUTTON_RC_VOL_DOWN
+#define CUBE_Z_INC BUTTON_VOL_UP /* FIXME: quick hack */
+#define CUBE_Z_DEC BUTTON_VOL_DOWN
+#define CUBE_MODE BUTTON_RC_MODE
+#define CUBE_PAUSE BUTTON_RC_PLAY
+#define CUBE_HIGHSPEED BUTTON_RC_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/dict.c b/apps/plugins/dict.c
index e354097..159d1c6 100644
--- a/apps/plugins/dict.c
+++ b/apps/plugins/dict.c
@@ -125,6 +125,8 @@ long reverse (long N) {
#define LP_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
#define LP_QUIT BUTTON_BACK
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define LP_QUIT BUTTON_RC_REC
#else
#define LP_QUIT BUTTON_OFF
#endif
diff --git a/apps/plugins/disktidy.c b/apps/plugins/disktidy.c
index be3407e..3bf8f35 100644
--- a/apps/plugins/disktidy.c
+++ b/apps/plugins/disktidy.c
@@ -79,6 +79,9 @@ enum tidy_system
#elif CONFIG_KEYPAD == MROBE100_PAD
#define TIDY_STOP BUTTON_POWER
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define TIDY_STOP BUTTON_RC_REC
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/fireworks.c b/apps/plugins/fireworks.c
index e233a8e..68fe2eb 100644
--- a/apps/plugins/fireworks.c
+++ b/apps/plugins/fireworks.c
@@ -66,6 +66,12 @@ static struct plugin_api* rb;
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define BTN_MENU BUTTON_POWER
#define BTN_FIRE BUTTON_PLAY
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define BTN_MENU BUTTON_RC_REC
+#define BTN_FIRE BUTTON_RC_PLAY
+
+#else
+#error No keymap defined!
#endif
/* The lowdown on source terminology:
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 4292ef8..831cc85 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -22,6 +22,8 @@ PLUGIN_HEADER
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_OFF
@@ -31,6 +33,8 @@ PLUGIN_HEADER
#define FLIPIT_TOGGLE BUTTON_PLAY
#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_OFF
@@ -40,6 +44,8 @@ PLUGIN_HEADER
#define FLIPIT_TOGGLE BUTTON_SELECT
#elif CONFIG_KEYPAD == PLAYER_PAD
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP_PRE BUTTON_ON
#define FLIPIT_UP (BUTTON_ON | BUTTON_REL)
#define FLIPIT_DOWN BUTTON_MENU
@@ -50,6 +56,8 @@ PLUGIN_HEADER
#define FLIPIT_TOGGLE BUTTON_PLAY
#elif CONFIG_KEYPAD == ONDIO_PAD
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_OFF
@@ -61,6 +69,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_OFF
@@ -76,6 +86,8 @@ PLUGIN_HEADER
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_MENU
#define FLIPIT_DOWN BUTTON_PLAY
#define FLIPIT_QUIT (BUTTON_SELECT | BUTTON_MENU)
@@ -87,6 +99,8 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_POWER
@@ -99,6 +113,8 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == GIGABEAT_PAD
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_POWER
@@ -110,6 +126,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD)
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_POWER
@@ -120,6 +138,8 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_SCROLL_UP
#define FLIPIT_DOWN BUTTON_SCROLL_DOWN
#define FLIPIT_QUIT BUTTON_POWER
@@ -131,6 +151,8 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_BACK
@@ -141,6 +163,8 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == MROBE100_PAD
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_POWER
@@ -149,6 +173,22 @@ PLUGIN_HEADER
#define FLIPIT_STEP_BY_STEP BUTTON_DISPLAY
#define FLIPIT_TOGGLE BUTTON_SELECT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+
+#define FLIPIT_LEFT BUTTON_RC_REW
+#define FLIPIT_RIGHT BUTTON_RC_FF
+#define FLIPIT_UP BUTTON_RC_VOL_UP
+#define FLIPIT_DOWN BUTTON_RC_VOL_DOWN
+#define FLIPIT_QUIT BUTTON_RC_REC
+#define FLIPIT_SHUFFLE BUTTON_RC_MODE
+#define FLIPIT_SOLVE_PRE BUTTON_RC_MENU
+#define FLIPIT_SOLVE (BUTTON_RC_MENU|BUTTON_REPEAT)
+#define FLIPIT_STEP_PRE BUTTON_RC_MENU
+#define FLIPIT_STEP_BY_STEP (BUTTON_RC_MENU|BUTTON_REL)
+#define FLIPIT_TOGGLE BUTTON_RC_PLAY
+
+#define FLIPIT_RC_QUIT BUTTON_REC
+
#else
#error No keymap defined!
#endif
@@ -174,7 +214,7 @@ static int cursor_pos, moves;
#define GRID_TOP MAX(0, ((LCD_HEIGHT - PANEL_HEIGHT - GRID_HEIGHT)/2))
/* draw a spot at the coordinates (x,y), range of p is 0-19 */
-static void draw_spot(int p)
+static void draw_spot(int p)
{
rb->lcd_bitmap_part( flipit_tokens, 0, spots[p] * TK_HEIGHT, TK_WIDTH,
GRID_LEFT + (p%5) * (TK_WIDTH+TK_SPACE),
@@ -448,11 +488,11 @@ static bool flipit_loop(void)
}
break;
- case BUTTON_LEFT:
+ case FLIPIT_LEFT:
move_cursor(-1, 0);
break;
- case BUTTON_RIGHT:
+ case FLIPIT_RIGHT:
move_cursor(1, 0);
break;
@@ -553,6 +593,12 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
rb->lcd_putsxy(2, 28, "[REC-LEFT] shuffle");
rb->lcd_putsxy(2, 38, "[REC-RIGHT] solution");
rb->lcd_putsxy(2, 48, "[REC-SEL] step by step");
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+ rb->lcd_putsxy(2, 8, "[REC] to stop");
+ rb->lcd_putsxy(2, 18, "[PLAY] toggle");
+ rb->lcd_putsxy(2, 28, "[MODE] shuffle");
+ rb->lcd_putsxy(2, 38, "[MENU..] solution");
+ rb->lcd_putsxy(2, 48, "[MENU] step by step");
#endif
rb->lcd_update();
#else /* HAVE_LCD_CHARCELLS */
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index 76019f5..5579c19 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -128,6 +128,16 @@ PLUGIN_HEADER
#define JEWELS_SELECT BUTTON_SELECT
#define JEWELS_CANCEL BUTTON_POWER
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define JEWELS_UP BUTTON_RC_VOL_UP
+#define JEWELS_DOWN BUTTON_RC_VOL_DOWN
+#define JEWELS_LEFT BUTTON_RC_REW
+#define JEWELS_RIGHT BUTTON_RC_FF
+#define JEWELS_SELECT BUTTON_RC_PLAY
+#define JEWELS_CANCEL BUTTON_RC_REC
+
+#define JEWELS_RC_CANCEL BUTTON_REC
+
#else
#error No keymap defined!
#endif
@@ -176,6 +186,13 @@ PLUGIN_HEADER
#define YOFS 6
#define NUM_SCORES 10
+/* use 12x12 tiles (iAudio M3) */
+#elif (LCD_HEIGHT == 96) && (LCD_WIDTH == 128)
+#define TILE_WIDTH 12
+#define TILE_HEIGHT 12
+#define YOFS 0
+#define NUM_SCORES 9
+
/* use 10x10 tiles (Sansa c200) */
#elif (LCD_HEIGHT == 80) && (LCD_WIDTH == 132)
#define TILE_WIDTH 10
@@ -1527,6 +1544,17 @@ static int jewels_main(struct game_context* bj) {
rb->lcd_puts(0, 10, "PLAY to select");
rb->lcd_puts(0, 11, "Long PLAY for menu");
rb->lcd_puts(0, 12, "POWER to cancel");
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+ rb->lcd_puts(0, 2, "Swap pairs of jewels");
+ rb->lcd_puts(0, 3, "to form connected");
+ rb->lcd_puts(0, 4, "segments of three or ");
+ rb->lcd_puts(0, 5, "more of the");
+ rb->lcd_puts(0, 6, "same type.");
+ rb->lcd_puts(0, 8, "Controls:");
+ rb->lcd_puts(0, 9, "Directions or scroll to move");
+ rb->lcd_puts(0, 10, "PLAY to select");
+ rb->lcd_puts(0, 11, "Long PLAY for menu");
+ rb->lcd_puts(0, 12, "REC to cancel");
#else
#warning: missing help text.
#endif
diff --git a/apps/plugins/lib/SOURCES b/apps/plugins/lib/SOURCES
index 6a44c80..f1aded6 100644
--- a/apps/plugins/lib/SOURCES
+++ b/apps/plugins/lib/SOURCES
@@ -3,7 +3,8 @@ configfile.c
fixedpoint.c
playback_control.c
rgb_hsv.c
-#if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4)
+#if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) \
+ && !defined(IAUDIO_M3) /* TODO: Test whether it can be implemented */
grey_core.c
grey_draw.c
grey_parm.c
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index a7fbb35..1cd1058 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -140,6 +140,15 @@ const struct button_mapping generic_directions[] =
{ PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_LEFT_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_MENU},
{ PLA_RIGHT_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_MENU},
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+ { PLA_UP, BUTTON_RC_VOL_UP, BUTTON_NONE},
+ { PLA_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE},
+ { PLA_LEFT, BUTTON_RC_REW, BUTTON_NONE},
+ { PLA_RIGHT, BUTTON_RC_FF, BUTTON_NONE},
+ { PLA_UP_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
+ { PLA_DOWN_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
+ { PLA_LEFT_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE},
+ { PLA_RIGHT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE},
#else
#error pluginlib_actions: Unsupported keypad
#endif
@@ -227,6 +236,13 @@ const struct button_mapping generic_left_right_fire[] =
{ PLA_RIGHT_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_FIRE, BUTTON_MENU, BUTTON_NONE},
{ PLA_FIRE_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+ { PLA_LEFT, BUTTON_RC_REW, BUTTON_NONE},
+ { PLA_RIGHT, BUTTON_RC_FF, BUTTON_NONE},
+ { PLA_LEFT_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE},
+ { PLA_RIGHT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE},
+ { PLA_FIRE, BUTTON_RC_MODE, BUTTON_NONE},
+ { PLA_FIRE_REPEAT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_NONE},
#else
#error pluginlib_actions: Unsupported keypad
#endif
@@ -342,6 +358,12 @@ const struct button_mapping generic_actions[] =
{PLA_MENU, BUTTON_DOWN, BUTTON_NONE},
{PLA_FIRE, BUTTON_MENU, BUTTON_NONE},
{PLA_FIRE_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+ {PLA_QUIT, BUTTON_RC_REC, BUTTON_NONE},
+ {PLA_START, BUTTON_RC_PLAY, BUTTON_NONE},
+ {PLA_MENU, BUTTON_RC_MENU, BUTTON_NONE},
+ {PLA_FIRE, BUTTON_RC_MODE, BUTTON_NONE},
+ {PLA_FIRE_REPEAT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_NONE},
#else
#error pluginlib_actions: Unsupported keypad
#endif
@@ -391,6 +413,11 @@ const struct button_mapping generic_increase_decrease[] =
{PLA_DEC, BUTTON_RC_DOWN, BUTTON_NONE},
{PLA_INC_REPEAT, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_NONE},
{PLA_DEC_REPEAT, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_NONE},
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+ {PLA_INC, BUTTON_RC_VOL_UP, BUTTON_NONE},
+ {PLA_DEC, BUTTON_RC_VOL_DOWN, BUTTON_NONE},
+ {PLA_INC_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
+ {PLA_DEC_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
#else
#error pluginlib_actions: Unsupported keypad
#endif
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c
index 7ac004c..9b33108 100644
--- a/apps/plugins/logo.c
+++ b/apps/plugins/logo.c
@@ -62,6 +62,7 @@ const unsigned char rockbox16x7[] = {
#define LP_INC_X BUTTON_RIGHT
#define LP_DEC_Y (BUTTON_ON | BUTTON_LEFT)
#define LP_INC_Y (BUTTON_ON | BUTTON_RIGHT)
+
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
@@ -70,18 +71,21 @@ const unsigned char rockbox16x7[] = {
#define LP_INC_X BUTTON_RIGHT
#define LP_DEC_Y BUTTON_SCROLL_BACK
#define LP_INC_Y BUTTON_SCROLL_FWD
+
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define LP_QUIT BUTTON_PLAY
#define LP_DEC_X BUTTON_LEFT
#define LP_INC_X BUTTON_RIGHT
#define LP_DEC_Y BUTTON_DOWN
#define LP_INC_Y BUTTON_UP
+
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
#define LP_QUIT BUTTON_POWER
#define LP_DEC_X BUTTON_LEFT
#define LP_INC_X BUTTON_RIGHT
#define LP_DEC_Y BUTTON_DOWN
#define LP_INC_Y BUTTON_UP
+
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define LP_QUIT BUTTON_POWER
#define LP_DEC_X BUTTON_LEFT
@@ -125,6 +129,13 @@ const unsigned char rockbox16x7[] = {
#define LP_DEC_Y BUTTON_DOWN
#define LP_INC_Y BUTTON_UP
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define LP_QUIT BUTTON_RC_REC
+#define LP_DEC_X BUTTON_RC_REW
+#define LP_INC_X BUTTON_RC_FF
+#define LP_DEC_Y BUTTON_RC_VOL_DOWN
+#define LP_INC_Y BUTTON_RC_VOL_UP
+
#else
#define LP_QUIT BUTTON_OFF
#define LP_DEC_X BUTTON_LEFT
diff --git a/apps/plugins/matrix.c b/apps/plugins/matrix.c
index 827b205..19763b6 100644
--- a/apps/plugins/matrix.c
+++ b/apps/plugins/matrix.c
@@ -90,6 +90,11 @@ extern const fb_data matrix_normal[];
#define MATRIX_SLEEP_MORE BUTTON_UP
#define MATRIX_SLEEP_LESS BUTTON_DOWN
#define MATRIX_PAUSE BUTTON_SELECT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define MATRIX_EXIT BUTTON_RC_REC
+#define MATRIX_SLEEP_MORE BUTTON_RC_VOL_UP
+#define MATRIX_SLEEP_LESS BUTTON_RC_VOL_DOWN
+#define MATRIX_PAUSE BUTTON_RC_PLAY
#else
#error Unsupported keypad
#endif
diff --git a/apps/plugins/mazezam.c b/apps/plugins/mazezam.c
index 858d554..69997af 100644
--- a/apps/plugins/mazezam.c
+++ b/apps/plugins/mazezam.c
@@ -165,6 +165,18 @@ MEM_FUNCTION_WRAPPERS(rb);
#define MAZEZAM_QUIT BUTTON_POWER
#define MAZEZAM_QUIT_KEYNAME "[POWER]"
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define MAZEZAM_UP BUTTON_RC_VOL_UP
+#define MAZEZAM_DOWN BUTTON_RC_VOL_DOWN
+#define MAZEZAM_LEFT BUTTON_RC_REW
+#define MAZEZAM_RIGHT BUTTON_RC_FF
+#define MAZEZAM_SELECT BUTTON_RC_PLAY
+
+#define MAZEZAM_RETRY BUTTON_RC_MODE
+#define MAZEZAM_RETRY_KEYNAME "[MODE]"
+#define MAZEZAM_QUIT BUTTON_RC_REC
+#define MAZEZAM_QUIT_KEYNAME "[REC]"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 8b9fe85..afe7a39 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -33,6 +33,8 @@ enum minesweeper_status {
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF
@@ -43,6 +45,8 @@ enum minesweeper_status {
# define MINESWP_INFO BUTTON_F3
#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF
@@ -53,6 +57,8 @@ enum minesweeper_status {
# define MINESWP_INFO BUTTON_F3
#elif CONFIG_KEYPAD == ONDIO_PAD
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF
@@ -63,6 +69,8 @@ enum minesweeper_status {
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF
@@ -77,6 +85,8 @@ enum minesweeper_status {
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
# define MINESWP_SCROLLWHEEL
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_MENU
# define MINESWP_DOWN BUTTON_PLAY
# define MINESWP_NEXT BUTTON_SCROLL_FWD
@@ -88,14 +98,18 @@ enum minesweeper_status {
# define MINESWP_INFO (BUTTON_SELECT | BUTTON_PLAY)
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
-# define MINESWP_UP BUTTON_UP
-# define MINESWP_DOWN BUTTON_DOWN
-# define MINESWP_QUIT BUTTON_POWER
-# define MINESWP_TOGGLE BUTTON_PLAY
-# define MINESWP_DISCOVER BUTTON_SELECT
-# define MINESWP_INFO BUTTON_REC
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
+# define MINESWP_UP BUTTON_UP
+# define MINESWP_DOWN BUTTON_DOWN
+# define MINESWP_QUIT BUTTON_POWER
+# define MINESWP_TOGGLE BUTTON_PLAY
+# define MINESWP_DISCOVER BUTTON_SELECT
+# define MINESWP_INFO BUTTON_REC
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_POWER
@@ -105,6 +119,8 @@ enum minesweeper_status {
#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
# define MINESWP_SCROLLWHEEL
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_POWER
@@ -115,6 +131,8 @@ enum minesweeper_status {
# define MINESWP_INFO (BUTTON_REC|BUTTON_REPEAT)
#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_POWER
@@ -126,6 +144,8 @@ enum minesweeper_status {
# define MINESWP_INFO BUTTON_REC
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_SCROLL_UP
# define MINESWP_DOWN BUTTON_SCROLL_DOWN
# define MINESWP_QUIT BUTTON_POWER
@@ -134,6 +154,8 @@ enum minesweeper_status {
# define MINESWP_INFO (BUTTON_REW | BUTTON_PLAY)
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_BACK
@@ -142,6 +164,8 @@ enum minesweeper_status {
# define MINESWP_INFO BUTTON_MENU
#elif (CONFIG_KEYPAD == MROBE100_PAD)
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_POWER
@@ -149,6 +173,16 @@ enum minesweeper_status {
# define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_INFO BUTTON_MENU
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+# define MINESWP_LEFT BUTTON_RC_REW
+# define MINESWP_RIGHT BUTTON_RC_FF
+# define MINESWP_UP BUTTON_RC_VOL_UP
+# define MINESWP_DOWN BUTTON_RC_VOL_DOWN
+# define MINESWP_QUIT BUTTON_RC_REC
+# define MINESWP_TOGGLE BUTTON_RC_MODE
+# define MINESWP_DISCOVER BUTTON_RC_PLAY
+# define MINESWP_INFO BUTTON_RC_MENU
+
#else
#error No keymap defined!
#endif
@@ -560,14 +594,14 @@ enum minesweeper_status minesweeper( void )
return MINESWEEPER_QUIT;
/* move cursor left */
- case BUTTON_LEFT:
- case BUTTON_LEFT|BUTTON_REPEAT:
+ case MINESWP_LEFT:
+ case MINESWP_LEFT|BUTTON_REPEAT:
x = ( x + width - 1 )%width;
break;
/* move cursor right */
- case BUTTON_RIGHT:
- case BUTTON_RIGHT|BUTTON_REPEAT:
+ case MINESWP_RIGHT:
+ case MINESWP_RIGHT|BUTTON_REPEAT:
x = ( x + 1 )%width;
break;
diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c
index 42037f8..bd1eade 100644
--- a/apps/plugins/mosaique.c
+++ b/apps/plugins/mosaique.c
@@ -117,6 +117,11 @@ PLUGIN_HEADER
#define MOSAIQUE_SPEED BUTTON_DISPLAY
#define MOSAIQUE_RESTART BUTTON_SELECT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define MOSAIQUE_QUIT BUTTON_RC_REC
+#define MOSAIQUE_SPEED BUTTON_RC_MENU
+#define MOSAIQUE_RESTART BUTTON_RC_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index 85ef5c1..d0f4412 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2327,6 +2327,11 @@ void get_mp3_filename(char *wav_name)
#define MP3ENC_NEXT BUTTON_DOWN
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_SELECT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define MP3ENC_PREV BUTTON_RC_VOL_UP
+#define MP3ENC_NEXT BUTTON_RC_VOL_DOWN
+#define MP3ENC_DONE BUTTON_RC_REC
+#define MP3ENC_SELECT BUTTON_RC_FF
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index 13a8c4e..6b816ae 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -168,6 +168,19 @@ PLUGIN_HEADER
#define OSCILLOSCOPE_VOL_UP BUTTON_UP
#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define OSCILLOSCOPE_QUIT BUTTON_RC_REC
+#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_RC_MODE
+#define OSCILLOSCOPE_DRAWMODE (BUTTON_RC_MODE|BUTTON_REL)
+#define OSCILLOSCOPE_ADVMODE BUTTON_RC_MENU
+#define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_RC_MODE
+#define OSCILLOSCOPE_ORIENTATION (BUTTON_RC_MODE|BUTTON_REPEAT)
+#define OSCILLOSCOPE_PAUSE BUTTON_RC_PLAY
+#define OSCILLOSCOPE_SPEED_UP BUTTON_RC_FF
+#define OSCILLOSCOPE_SPEED_DOWN BUTTON_RC_REW
+#define OSCILLOSCOPE_VOL_UP BUTTON_RC_VOL_UP
+#define OSCILLOSCOPE_VOL_DOWN BUTTON_RC_VOL_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index 303d6b1..707f107 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -138,6 +138,14 @@ PLUGIN_HEADER
#define PONG_RIGHT_UP BUTTON_PLAY
#define PONG_RIGHT_DOWN BUTTON_RIGHT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define PONG_QUIT BUTTON_RC_REC
+#define PONG_PAUSE BUTTON_RC_PLAY
+#define PONG_LEFT_UP BUTTON_RC_VOL_UP
+#define PONG_LEFT_DOWN BUTTON_RC_VOL_DOWN
+#define PONG_RIGHT_UP BUTTON_VOL_UP
+#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index d4d9048..f0bdd2a 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -200,6 +200,17 @@ PLUGIN_HEADER
#define ROCKBLOX_DROP BUTTON_SELECT
#define ROCKBLOX_RESTART BUTTON_DISPLAY
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+
+#define ROCKBLOX_OFF BUTTON_RC_REC
+#define ROCKBLOX_ROTATE_RIGHT BUTTON_RC_VOL_DOWN
+#define ROCKBLOX_ROTATE_LEFT BUTTON_RC_VOL_UP
+#define ROCKBLOX_DOWN BUTTON_RC_MENU
+#define ROCKBLOX_LEFT BUTTON_RC_REW
+#define ROCKBLOX_RIGHT BUTTON_RC_FF
+#define ROCKBLOX_DROP BUTTON_RC_PLAY
+#define ROCKBLOX_RESTART BUTTON_RC_MODE
+
#else
#error No keymap defined!
#endif
@@ -325,6 +336,32 @@ PLUGIN_HEADER
#define LEVEL_Y 49
#define LINES_Y 82
+#elif (LCD_WIDTH == 138) && (LCD_HEIGHT == 110)
+
+#define BLOCK_WIDTH 5
+#define BLOCK_HEIGHT 5
+#define BOARD_X 14
+#define BOARD_Y 0
+#define PREVIEW_X 98
+#define PREVIEW_Y 88
+#define LABEL_X 80
+#define SCORE_Y 15
+#define LEVEL_Y 45
+#define LINES_Y 74
+
+#elif (LCD_WIDTH == 132) && (LCD_HEIGHT == 80)
+
+#define BLOCK_WIDTH 4
+#define BLOCK_HEIGHT 4
+#define BOARD_X 10
+#define BOARD_Y 0
+#define PREVIEW_X 89
+#define PREVIEW_Y 61
+#define LABEL_X 78
+#define SCORE_Y 10
+#define LEVEL_Y 30
+#define LINES_Y 50
+
#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 128)
#define BLOCK_WIDTH 6
@@ -338,18 +375,18 @@ PLUGIN_HEADER
#define LEVEL_Y 49
#define LINES_Y 82
-#elif (LCD_WIDTH == 132) && (LCD_HEIGHT == 80)
+#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 96)
#define BLOCK_WIDTH 4
#define BLOCK_HEIGHT 4
-#define BOARD_X 10
-#define BOARD_Y 0
+#define BOARD_X 14
+#define BOARD_Y 2
#define PREVIEW_X 89
-#define PREVIEW_Y 61
-#define LABEL_X 78
-#define SCORE_Y 10
-#define LEVEL_Y 30
-#define LINES_Y 50
+#define PREVIEW_Y 76
+#define LABEL_X 70
+#define SCORE_Y 14
+#define LEVEL_Y 39
+#define LINES_Y 64
#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 64)
@@ -378,19 +415,6 @@ PLUGIN_HEADER
#define LEVEL_X 78
#define LINES_Y 51
-#elif (LCD_WIDTH == 138) && (LCD_HEIGHT == 110)
-
-#define BLOCK_WIDTH 5
-#define BLOCK_HEIGHT 5
-#define BOARD_X 14
-#define BOARD_Y 0
-#define PREVIEW_X 98
-#define PREVIEW_Y 88
-#define LABEL_X 80
-#define SCORE_Y 15
-#define LEVEL_Y 45
-#define LINES_Y 74
-
#endif
#ifndef LEVEL_X
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index 6da6b8b..8d57ede 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -25,6 +25,8 @@ PLUGIN_HEADER
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
#define PUZZLE_QUIT BUTTON_OFF
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
#define PUZZLE_SHUFFLE BUTTON_F1
@@ -32,6 +34,8 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
#define PUZZLE_QUIT BUTTON_OFF
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
#define PUZZLE_SHUFFLE BUTTON_F1
@@ -39,6 +43,8 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == ONDIO_PAD
#define PUZZLE_QUIT BUTTON_OFF
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
#define PUZZLE_SHUFFLE_PICTURE_PRE BUTTON_MENU
@@ -48,6 +54,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define PUZZLE_QUIT BUTTON_OFF
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
#define PUZZLE_SHUFFLE BUTTON_SELECT
@@ -59,6 +67,8 @@ PLUGIN_HEADER
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
#define PUZZLE_QUIT (BUTTON_SELECT | BUTTON_MENU)
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_MENU
#define PUZZLE_DOWN BUTTON_PLAY
#define PUZZLE_SHUFFLE (BUTTON_SELECT | BUTTON_LEFT)
@@ -66,6 +76,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
#define PUZZLE_QUIT BUTTON_POWER
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
#define PUZZLE_SHUFFLE BUTTON_REC
@@ -73,6 +85,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
#define PUZZLE_QUIT BUTTON_POWER
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
#define PUZZLE_SHUFFLE BUTTON_SELECT
@@ -81,6 +95,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD)
#define PUZZLE_QUIT BUTTON_POWER
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
#define PUZZLE_SHUFFLE BUTTON_REC
@@ -88,6 +104,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define PUZZLE_QUIT BUTTON_POWER
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_SCROLL_UP
#define PUZZLE_DOWN BUTTON_SCROLL_DOWN
#define PUZZLE_SHUFFLE BUTTON_REW
@@ -95,6 +113,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
#define PUZZLE_QUIT BUTTON_BACK
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
#define PUZZLE_SHUFFLE BUTTON_SELECT
@@ -102,11 +122,22 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == MROBE100_PAD)
#define PUZZLE_QUIT BUTTON_POWER
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
#define PUZZLE_SHUFFLE BUTTON_SELECT
#define PUZZLE_PICTURE BUTTON_DISPLAY
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define PUZZLE_QUIT BUTTON_RC_REC
+#define PUZZLE_LEFT BUTTON_RC_REW
+#define PUZZLE_RIGHT BUTTON_RC_FF
+#define PUZZLE_UP BUTTON_RC_VOL_UP
+#define PUZZLE_DOWN BUTTON_RC_VOL_DOWN
+#define PUZZLE_SHUFFLE BUTTON_RC_MODE
+#define PUZZLE_PICTURE BUTTON_RC_MENU
+
#else
#error No keymap defined!
#endif
@@ -502,12 +533,12 @@ static int puzzle_loop(void)
draw_playfield();
break;
- case BUTTON_LEFT:
+ case PUZZLE_LEFT:
if ((hole%SPOTS_X)<(SPOTS_X-1) && !puzzle_finished())
move_spot(-1, 0);
break;
- case BUTTON_RIGHT:
+ case PUZZLE_RIGHT:
if ((hole%SPOTS_X)>0 && !puzzle_finished())
move_spot(1, 0);
break;
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index c68b924..f414761 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -38,18 +38,24 @@ PLUGIN_HEADER
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
#define SNAKE_QUIT BUTTON_OFF
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
#define SNAKE_QUIT BUTTON_OFF
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_SELECT
#elif CONFIG_KEYPAD == ONDIO_PAD
#define SNAKE_QUIT BUTTON_OFF
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_MENU
@@ -57,6 +63,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define SNAKE_QUIT BUTTON_OFF
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_ON
@@ -67,18 +75,24 @@ PLUGIN_HEADER
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
#define SNAKE_QUIT (BUTTON_SELECT|BUTTON_MENU)
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_MENU
#define SNAKE_DOWN BUTTON_PLAY
#define SNAKE_PLAYPAUSE BUTTON_SELECT
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
#define SNAKE_QUIT BUTTON_POWER
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_PLAY
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
#define SNAKE_QUIT BUTTON_POWER
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_SELECT
@@ -86,28 +100,46 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD)
#define SNAKE_QUIT BUTTON_POWER
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_SELECT
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define SNAKE_QUIT BUTTON_POWER
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_SCROLL_UP
#define SNAKE_DOWN BUTTON_SCROLL_DOWN
#define SNAKE_PLAYPAUSE BUTTON_PLAY
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
#define SNAKE_QUIT BUTTON_BACK
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_SELECT
#elif (CONFIG_KEYPAD == MROBE100_PAD)
#define SNAKE_QUIT BUTTON_POWER
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_SELECT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define SNAKE_QUIT BUTTON_RC_REC
+#define SNAKE_LEFT BUTTON_RC_REW
+#define SNAKE_RIGHT BUTTON_RC_FF
+#define SNAKE_UP BUTTON_RC_VOL_UP
+#define SNAKE_DOWN BUTTON_RC_VOL_DOWN
+#define SNAKE_PLAYPAUSE BUTTON_RC_PLAY
+
+#define SNAKE_RC_QUIT BUTTON_REC
+
#else
#error No keymap defined!
#endif
@@ -308,13 +340,13 @@ void game (void) {
case SNAKE_UP:
if (dir!=2) dir=0;
break;
- case BUTTON_RIGHT:
+ case SNAKE_RIGHT:
if (dir!=3) dir=1;
break;
case SNAKE_DOWN:
if (dir!=0) dir=2;
break;
- case BUTTON_LEFT:
+ case SNAKE_LEFT:
if (dir!=1) dir=3;
break;
#ifdef SNAKE_RC_QUIT
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index bae520b..07e3991 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -35,6 +35,17 @@ PLUGIN_HEADER
#define WIDTH 28
#define HEIGHT 16
+#if (LCD_WIDTH >= 160) && (LCD_HEIGHT >= 128) && (LCD_DEPTH >= 1)
+#include "snake2_header1.h"
+#include "snake2_header2.h"
+#include "snake2_left.h"
+#include "snake2_right.h"
+#include "snake2_bottom.h"
+#define BMPHEIGHT_snake2_header BMPHEIGHT_snake2_header1
+#define BMPWIDTH_snake2_header BMPWIDTH_snake2_header1
+#endif
+
+
#if (LCD_WIDTH >= 320) && (LCD_HEIGHT >= 240)
#define MULTIPLIER 10 /*Modifier for porting on other screens*/
#define MODIFIER_1 10
@@ -47,14 +58,6 @@ PLUGIN_HEADER
#define TOP_X4 274 /* x-coord of the lowerright item (hi-score) */
#define TOP_Y1 4 /* y-coord of the top row of items */
#define TOP_Y2 25 /* y-coord of the bottom row of items */
- #define BMPHEIGHT_snake2_header 38
- #define BMPWIDTH_snake2_header 320
- #define BMPHEIGHT_snake2_right 192
- #define BMPWIDTH_snake2_right 10
- #define BMPHEIGHT_snake2_left 192
- #define BMPWIDTH_snake2_left 10
- #define BMPHEIGHT_snake2_bottom 10
- #define BMPWIDTH_snake2_bottom 320
#elif (LCD_WIDTH >= 240) && (LCD_HEIGHT >= 168)
#define MULTIPLIER 8
#define MODIFIER_1 8
@@ -67,14 +70,6 @@ PLUGIN_HEADER
#define TOP_X4 194
#define TOP_Y1 4
#define TOP_Y2 25
- #define BMPHEIGHT_snake2_header 38
- #define BMPWIDTH_snake2_header 240
- #define BMPHEIGHT_snake2_right 120
- #define BMPWIDTH_snake2_right 10
- #define BMPHEIGHT_snake2_left 120
- #define BMPWIDTH_snake2_left 10
- #define BMPHEIGHT_snake2_bottom 10
- #define BMPWIDTH_snake2_bottom 240
#elif (LCD_WIDTH >= 220) && (LCD_HEIGHT >= 176)
#define MULTIPLIER 7
#define MODIFIER_1 7
@@ -87,14 +82,6 @@ PLUGIN_HEADER
#define TOP_X4 174
#define TOP_Y1 4
#define TOP_Y2 25
- #define BMPHEIGHT_snake2_header 38
- #define BMPWIDTH_snake2_header 220
- #define BMPHEIGHT_snake2_right 128
- #define BMPWIDTH_snake2_right 10
- #define BMPHEIGHT_snake2_left 128
- #define BMPWIDTH_snake2_left 10
- #define BMPHEIGHT_snake2_bottom 10
- #define BMPWIDTH_snake2_bottom 220
#elif (LCD_WIDTH >= 176) && (LCD_HEIGHT >= 132)
#define MULTIPLIER 5
#define MODIFIER_1 5
@@ -107,14 +94,6 @@ PLUGIN_HEADER
#define TOP_X4 130
#define TOP_Y1 4
#define TOP_Y2 25
- #define BMPHEIGHT_snake2_header 38
- #define BMPWIDTH_snake2_header 176
- #define BMPHEIGHT_snake2_right 84
- #define BMPWIDTH_snake2_right 10
- #define BMPHEIGHT_snake2_left 84
- #define BMPWIDTH_snake2_left 10
- #define BMPHEIGHT_snake2_bottom 10
- #define BMPWIDTH_snake2_bottom 176
#elif (LCD_WIDTH >= 160) && (LCD_HEIGHT >= 128)
#define MULTIPLIER 5
#define MODIFIER_1 5
@@ -127,14 +106,6 @@ PLUGIN_HEADER
#define TOP_X4 114
#define TOP_Y1 4
#define TOP_Y2 25
- #define BMPHEIGHT_snake2_header 38
- #define BMPWIDTH_snake2_header 160
- #define BMPHEIGHT_snake2_right 80
- #define BMPWIDTH_snake2_right 10
- #define BMPHEIGHT_snake2_left 80
- #define BMPWIDTH_snake2_left 10
- #define BMPHEIGHT_snake2_bottom 10
- #define BMPWIDTH_snake2_bottom 160
#else
#define MULTIPLIER 4
#define MODIFIER_1 4
@@ -146,6 +117,8 @@ PLUGIN_HEADER
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_OFF
@@ -158,6 +131,8 @@ PLUGIN_HEADER
#define SNAKE2_PLAYPAUSE_TEXT "Play"
#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_OFF
@@ -170,6 +145,8 @@ PLUGIN_HEADER
#define SNAKE2_PLAYPAUSE_TEXT "Select"
#elif CONFIG_KEYPAD == ONDIO_PAD
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_OFF
@@ -182,6 +159,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_OFF
@@ -197,6 +176,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_MENU
#define SNAKE2_DOWN BUTTON_PLAY
#define SNAKE2_QUIT (BUTTON_SELECT | BUTTON_MENU)
@@ -209,6 +190,8 @@ PLUGIN_HEADER
#define SNAKE2_PLAYPAUSE_TEXT "Select"
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_POWER
@@ -221,6 +204,8 @@ PLUGIN_HEADER
#define SNAKE2_PLAYPAUSE_TEXT "Select"
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_POWER
@@ -234,6 +219,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD)
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_POWER
@@ -246,6 +233,8 @@ PLUGIN_HEADER
#define SNAKE2_PLAYPAUSE_TEXT "Select"
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_SCROLL_UP
#define SNAKE2_DOWN BUTTON_SCROLL_DOWN
#define SNAKE2_QUIT BUTTON_POWER
@@ -258,6 +247,8 @@ PLUGIN_HEADER
#define SNAKE2_PLAYPAUSE_TEXT "FF"
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_BACK
@@ -270,6 +261,8 @@ PLUGIN_HEADER
#define SNAKE2_PLAYPAUSE_TEXT "Select"
#elif (CONFIG_KEYPAD == MROBE100_PAD)
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_POWER
@@ -281,6 +274,20 @@ PLUGIN_HEADER
#define SNAKE2_PLAYPAUSE BUTTON_SELECT
#define SNAKE2_PLAYPAUSE_TEXT "Select"
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define SNAKE2_LEFT BUTTON_RC_REW
+#define SNAKE2_RIGHT BUTTON_RC_FF
+#define SNAKE2_UP BUTTON_RC_VOL_UP
+#define SNAKE2_DOWN BUTTON_RC_VOL_DOWN
+#define SNAKE2_QUIT BUTTON_RC_REC
+#define SNAKE2_LEVEL_UP BUTTON_RC_VOL_UP
+#define SNAKE2_LEVEL_DOWN BUTTON_RC_VOL_DOWN
+#define SNAKE2_MAZE_NEXT BUTTON_RC_FF
+#define SNAKE2_MAZE_LAST BUTTON_RC_REW
+#define SNAKE2_SELECT_TYPE BUTTON_RC_MODE
+#define SNAKE2_PLAYPAUSE BUTTON_RC_PLAY
+#define SNAKE2_PLAYPAUSE_TEXT "Play"
+
#else
#error No keymap defined!
#endif
@@ -314,22 +321,6 @@ static int game_b_level=0;
static int applecount=0;
static char phscore[30];
-#if (LCD_WIDTH >= 160) && (LCD_HEIGHT >= 128)
-#ifdef HAVE_LCD_COLOR
-extern const unsigned short snake2_header1[];
-extern const unsigned short snake2_header2[];
-extern const unsigned short snake2_left[];
-extern const unsigned short snake2_right[];
-extern const unsigned short snake2_bottom[];
-#else
-extern const unsigned char snake2_header1[];
-extern const unsigned char snake2_header2[];
-extern const unsigned char snake2_left[];
-extern const unsigned char snake2_right[];
-extern const unsigned char snake2_bottom[];
-#endif
-#endif
-
#define NORTH 1
#define EAST 2
#define SOUTH 4
@@ -1196,8 +1187,8 @@ void game (void)
if (dir != SOUTH) set_direction(NORTH);
break;
- case BUTTON_RIGHT:
- case BUTTON_RIGHT | BUTTON_REPEAT:
+ case SNAKE2_RIGHT:
+ case SNAKE2_RIGHT | BUTTON_REPEAT:
if (dir != WEST) set_direction(EAST);
break;
@@ -1206,8 +1197,8 @@ void game (void)
if (dir != NORTH) set_direction(SOUTH);
break;
- case BUTTON_LEFT:
- case BUTTON_LEFT | BUTTON_REPEAT:
+ case SNAKE2_LEFT:
+ case SNAKE2_LEFT | BUTTON_REPEAT:
if (dir != EAST) set_direction(WEST);
break;
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c
index 56ebb2e..43a7d00 100644
--- a/apps/plugins/snow.c
+++ b/apps/plugins/snow.c
@@ -57,6 +57,9 @@ PLUGIN_HEADER
#define SNOW_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
#define SNOW_QUIT BUTTON_BACK
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define SNOW_QUIT BUTTON_REC
+#define SNOW_RC_QUIT BUTTON_RC_REC
#else
#define SNOW_QUIT BUTTON_OFF
#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index 66492fd..d665a0a 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -105,6 +105,8 @@ extern const fb_data sokoban_tiles[];
/* variable button definitions */
#if (CONFIG_KEYPAD == RECORDER_PAD) || \
(CONFIG_KEYPAD == ARCHOS_AV300_PAD)
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_UP
#define SOKOBAN_DOWN BUTTON_DOWN
#define SOKOBAN_MENU BUTTON_OFF
@@ -118,6 +120,8 @@ extern const fb_data sokoban_tiles[];
#define BUTTON_SAVE_NAME "ON"
#elif CONFIG_KEYPAD == ONDIO_PAD
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_UP
#define SOKOBAN_DOWN BUTTON_DOWN
#define SOKOBAN_MENU BUTTON_OFF
@@ -133,6 +137,8 @@ extern const fb_data sokoban_tiles[];
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_UP
#define SOKOBAN_DOWN BUTTON_DOWN
#define SOKOBAN_MENU BUTTON_OFF
@@ -150,6 +156,8 @@ extern const fb_data sokoban_tiles[];
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_MENU
#define SOKOBAN_DOWN BUTTON_PLAY
#define SOKOBAN_MENU (BUTTON_SELECT | BUTTON_MENU)
@@ -165,6 +173,8 @@ extern const fb_data sokoban_tiles[];
/* FIXME: if/when simultaneous button presses work for X5/M5,
* add level up/down */
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_UP
#define SOKOBAN_DOWN BUTTON_DOWN
#define SOKOBAN_MENU BUTTON_POWER
@@ -177,6 +187,8 @@ extern const fb_data sokoban_tiles[];
#define BUTTON_SAVE_NAME "SELECT"
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_SCROLL_UP
#define SOKOBAN_DOWN BUTTON_SCROLL_DOWN
#define SOKOBAN_MENU BUTTON_POWER
@@ -191,6 +203,8 @@ extern const fb_data sokoban_tiles[];
#define BUTTON_SAVE_NAME "PLAY"
#elif CONFIG_KEYPAD == GIGABEAT_PAD
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_UP
#define SOKOBAN_DOWN BUTTON_DOWN
#define SOKOBAN_MENU BUTTON_POWER
@@ -204,6 +218,8 @@ extern const fb_data sokoban_tiles[];
#define BUTTON_SAVE_NAME "SELECT"
#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_UP
#define SOKOBAN_DOWN BUTTON_DOWN
#define SOKOBAN_MENU BUTTON_POWER
@@ -218,6 +234,8 @@ extern const fb_data sokoban_tiles[];
#define BUTTON_SAVE_NAME "SELECT"
#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_UP
#define SOKOBAN_DOWN BUTTON_DOWN
#define SOKOBAN_MENU BUTTON_MENU
@@ -231,6 +249,8 @@ extern const fb_data sokoban_tiles[];
#define BUTTON_SAVE_NAME "SELECT"
#elif CONFIG_KEYPAD == MROBE100_PAD
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_UP
#define SOKOBAN_DOWN BUTTON_DOWN
#define SOKOBAN_MENU BUTTON_POWER
@@ -243,6 +263,20 @@ extern const fb_data sokoban_tiles[];
#define BUTTON_SAVE BUTTON_SELECT
#define BUTTON_SAVE_NAME "SELECT"
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define SOKOBAN_LEFT BUTTON_RC_REW
+#define SOKOBAN_RIGHT BUTTON_RC_FF
+#define SOKOBAN_UP BUTTON_RC_VOL_UP
+#define SOKOBAN_DOWN BUTTON_RC_VOL_DOWN
+#define SOKOBAN_MENU BUTTON_RC_REC
+#define SOKOBAN_UNDO BUTTON_RC_MODE
+#define SOKOBAN_REDO BUTTON_RC_MENU
+#define SOKOBAN_PAUSE BUTTON_RC_PLAY
+#define BUTTON_SAVE BUTTON_RC_PLAY
+#define BUTTON_SAVE_NAME "PLAY"
+
+#define SOKOBAN_RC_MENU BUTTON_REC
+
#else
#error No keymap defined!
#endif
@@ -1043,8 +1077,8 @@ static bool load(char *filename, bool silent)
paused = !paused;
break;
- case BUTTON_LEFT:
- case BUTTON_LEFT | BUTTON_REPEAT:
+ case SOKOBAN_LEFT:
+ case SOKOBAN_LEFT | BUTTON_REPEAT:
/* Go back one move */
if (paused) {
if (undo())
@@ -1054,8 +1088,8 @@ static bool load(char *filename, bool silent)
}
break;
- case BUTTON_RIGHT:
- case BUTTON_RIGHT | BUTTON_REPEAT:
+ case SOKOBAN_RIGHT:
+ case SOKOBAN_RIGHT | BUTTON_REPEAT:
/* Go forward one move */
if (paused) {
if (redo())
@@ -1336,13 +1370,13 @@ static bool sokoban_loop(void)
break;
#endif
- case BUTTON_LEFT:
- case BUTTON_LEFT | BUTTON_REPEAT:
+ case SOKOBAN_LEFT:
+ case SOKOBAN_LEFT | BUTTON_REPEAT:
moved = move(SOKOBAN_MOVE_LEFT, false);
break;
- case BUTTON_RIGHT:
- case BUTTON_RIGHT | BUTTON_REPEAT:
+ case SOKOBAN_RIGHT:
+ case SOKOBAN_RIGHT | BUTTON_REPEAT:
moved = move(SOKOBAN_MOVE_RIGHT, false);
break;
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index fba2bf5..62f60c7 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -275,11 +275,36 @@ static struct plugin_api* rb;
# define HK_CUR2STACK "SELECT.."
# define HK_REM2STACK "DISPLAY+RIGHT"
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+# define SOL_QUIT BUTTON_RC_REC
+# define SOL_UP BUTTON_RC_VOL_UP
+# define SOL_DOWN BUTTON_RC_VOL_DOWN
+# define SOL_LEFT BUTTON_RC_REW
+# define SOL_RIGHT BUTTON_RC_FF
+# define SOL_MOVE BUTTON_RC_PLAY
+# define SOL_DRAW_PRE BUTTON_RC_MENU
+# define SOL_DRAW (BUTTON_RC_MENU | BUTTON_REL)
+# define SOL_REM2CUR_PRE BUTTON_RC_MENU
+# define SOL_REM2CUR (BUTTON_RC_MENU | BUTTON_REPEAT)
+# define SOL_CUR2STACK_PRE BUTTON_RC_MODE
+# define SOL_CUR2STACK (BUTTON_RC_MODE | BUTTON_REL)
+# define SOL_REM2STACK_PRE BUTTON_RC_MODE
+# define SOL_REM2STACK (BUTTON_RC_MODE | BUTTON_REPEAT)
+# define HK_LR "REW/FF"
+# define HK_UD "VOL UP/DOWN"
+# define HK_MOVE "PLAY"
+# define HK_DRAW "MENU"
+# define HK_REM2CUR "MENU.."
+# define HK_CUR2STACK "MODE"
+# define HK_REM2STACK "MODE.."
+
#else
#error No keymap defined!
#endif
-#define HK_LR "LEFT/RIGHT"
+#ifndef HK_LR
+# define HK_LR "LEFT/RIGHT"
+#endif
#ifndef HK_UD
# define HK_UD "UP/DOWN"
#endif
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 5d5a1ba..7de18e5 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -187,6 +187,19 @@ static struct plugin_api* rb; /* global api struct pointer */
#define AST_FIRE BUTTON_SELECT
#define AST_FIRE_REP BUTTON_SELECT | BUTTON_REPEAT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define AST_PAUSE BUTTON_RC_PLAY
+#define AST_QUIT BUTTON_RC_REC
+#define AST_THRUST_REP BUTTON_RC_VOL_UP | BUTTON_REPEAT
+#define AST_THRUST BUTTON_RC_VOL_UP
+#define AST_HYPERSPACE BUTTON_RC_VOL_DOWN
+#define AST_LEFT BUTTON_RC_REW
+#define AST_LEFT_REP (BUTTON_RC_REW | BUTTON_REPEAT)
+#define AST_RIGHT BUTTON_RC_FF
+#define AST_RIGHT_REP (BUTTON_RC_FF | BUTTON_REPEAT)
+#define AST_FIRE BUTTON_RC_MODE
+#define AST_FIRE_REP (BUTTON_RC_MODE | BUTTON_REPEAT)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index 56fe89c..04b6642 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -55,6 +55,8 @@ PLUGIN_HEADER
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
#define STAR_QUIT BUTTON_OFF
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_UP
#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_ON
@@ -68,6 +70,8 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
#define STAR_QUIT BUTTON_OFF
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_UP
#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_ON
@@ -81,6 +85,8 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == ONDIO_PAD
#define STAR_QUIT BUTTON_OFF
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_UP
#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL_PRE BUTTON_MENU
@@ -93,6 +99,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define STAR_QUIT BUTTON_OFF
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_UP
#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_MODE
@@ -109,6 +117,8 @@ PLUGIN_HEADER
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
#define STAR_QUIT (BUTTON_SELECT | BUTTON_MENU)
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_MENU
#define STAR_DOWN BUTTON_PLAY
#define STAR_TOGGLE_CONTROL_PRE BUTTON_SELECT
@@ -122,6 +132,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
#define STAR_QUIT BUTTON_POWER
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_UP
#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_SELECT
@@ -136,6 +148,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
#define STAR_QUIT BUTTON_POWER
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_UP
#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_SELECT
@@ -148,6 +162,8 @@ PLUGIN_HEADER
(CONFIG_KEYPAD == SANSA_C200_PAD)
#define STAR_QUIT BUTTON_POWER
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_UP
#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_SELECT
@@ -160,6 +176,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define STAR_QUIT BUTTON_POWER
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_SCROLL_UP
#define STAR_DOWN BUTTON_SCROLL_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_REW
@@ -171,6 +189,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
#define STAR_QUIT BUTTON_BACK
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_UP
#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_SELECT
@@ -182,6 +202,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == MROBE100_PAD)
#define STAR_QUIT BUTTON_POWER
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
#define STAR_UP BUTTON_UP
#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_SELECT
@@ -190,6 +212,19 @@ PLUGIN_HEADER
#define STAR_LEVEL_REPEAT BUTTON_DISPLAY
#define STAR_MENU_RUN BUTTON_SELECT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+
+#define STAR_QUIT BUTTON_RC_REC
+#define STAR_LEFT BUTTON_RC_REW
+#define STAR_RIGHT BUTTON_RC_FF
+#define STAR_UP BUTTON_RC_VOL_UP
+#define STAR_DOWN BUTTON_RC_VOL_DOWN
+#define STAR_TOGGLE_CONTROL BUTTON_RC_MODE
+#define STAR_LEVEL_UP (BUTTON_RC_PLAY|BUTTON_RC_VOL_UP)
+#define STAR_LEVEL_DOWN (BUTTON_RC_PLAY|BUTTON_RC_VOL_DOWN)
+#define STAR_LEVEL_REPEAT (BUTTON_RC_PLAY|BUTTON_RC_MENU)
+#define STAR_MENU_RUN BUTTON_RC_FF
+
#else
#error No keymap defined!
#endif
@@ -514,7 +549,7 @@ void star_display_text(char *str, bool waitkey)
switch (key)
{
case STAR_QUIT:
- case BUTTON_LEFT:
+ case STAR_LEFT:
case STAR_DOWN:
go_on = true;
break;
@@ -769,11 +804,11 @@ static int star_run_game(int current_level)
case STAR_QUIT:
return -1;
- case BUTTON_LEFT:
+ case STAR_LEFT:
move_x = -1;
break;
- case BUTTON_RIGHT:
+ case STAR_RIGHT:
move_x = 1;
break;
diff --git a/apps/plugins/starfield.c b/apps/plugins/starfield.c
index de994ab..163d72b 100644
--- a/apps/plugins/starfield.c
+++ b/apps/plugins/starfield.c
@@ -79,6 +79,13 @@ static struct plugin_api* rb; /* global api struct pointer */
#define STARFIELD_INCREASE_NB_STARS BUTTON_RIGHT
#define STARFIELD_DECREASE_NB_STARS BUTTON_LEFT
#define STARFIELD_TOGGLE_COLOR BUTTON_SELECT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define STARFIELD_QUIT BUTTON_RC_REC
+#define STARFIELD_INCREASE_ZMOVE BUTTON_RC_VOL_UP
+#define STARFIELD_DECREASE_ZMOVE BUTTON_RC_VOL_DOWN
+#define STARFIELD_INCREASE_NB_STARS BUTTON_RC_FF
+#define STARFIELD_DECREASE_NB_STARS BUTTON_RC_REW
+#define STARFIELD_TOGGLE_COLOR BUTTON_RC_MODE
#else
#define STARFIELD_QUIT BUTTON_OFF
diff --git a/apps/plugins/stats.c b/apps/plugins/stats.c
index 12125a3..e72b4bc 100644
--- a/apps/plugins/stats.c
+++ b/apps/plugins/stats.c
@@ -69,6 +69,10 @@ static bool abort;
#elif CONFIG_KEYPAD == MROBE100_PAD
#define STATS_STOP BUTTON_POWER
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define STATS_STOP BUTTON_REC
+#define STATS_STOP_REMOTE BUTTON_RC_REC
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index 53f79ee..ac3c7b7 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -136,6 +136,14 @@ PLUGIN_HEADER
#define STOPWATCH_LAP_TIMER BUTTON_MENU
#define STOPWATCH_SCROLL_UP BUTTON_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define STOPWATCH_QUIT BUTTON_RC_REC
+#define STOPWATCH_START_STOP BUTTON_RC_PLAY
+#define STOPWATCH_RESET_TIMER BUTTON_RC_REW
+#define STOPWATCH_LAP_TIMER BUTTON_RC_FF
+#define STOPWATCH_SCROLL_UP BUTTON_RC_VOL_UP
+#define STOPWATCH_SCROLL_DOWN BUTTON_RC_VOL_DOWN
+#define STOPWATCH_RC_QUIT BUTTON_REC
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/test_codec.c b/apps/plugins/test_codec.c
index 9cbfa70..28e3d18 100644
--- a/apps/plugins/test_codec.c
+++ b/apps/plugins/test_codec.c
@@ -20,10 +20,12 @@
PLUGIN_HEADER
-/* All swcodec targets have BUTTON_SELECT apart from the H10 */
+/* All swcodec targets have BUTTON_SELECT apart from the H10 and M3 */
#if CONFIG_KEYPAD == IRIVER_H10_PAD
#define TESTCODEC_EXITBUTTON BUTTON_RIGHT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define TESTCODEC_EXITBUTTON BUTTON_RC_PLAY
#else
#define TESTCODEC_EXITBUTTON BUTTON_SELECT
#endif
diff --git a/apps/plugins/test_fps.c b/apps/plugins/test_fps.c
index edb6a68..e8ceaed 100644
--- a/apps/plugins/test_fps.c
+++ b/apps/plugins/test_fps.c
@@ -27,6 +27,8 @@ PLUGIN_IRAM_DECLARE
#if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
#define FPS_QUIT BUTTON_MENU
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define FPS_QUIT BUTTON_RC_REC
#elif defined(BUTTON_OFF)
#define FPS_QUIT BUTTON_OFF
#else
diff --git a/apps/plugins/test_scanrate.c b/apps/plugins/test_scanrate.c
index c61a9d7..e6ed1aa 100644
--- a/apps/plugins/test_scanrate.c
+++ b/apps/plugins/test_scanrate.c
@@ -38,6 +38,13 @@ PLUGIN_HEADER
#define SCANRATE_INC BUTTON_RIGHT
#define SCANRATE_DEC BUTTON_LEFT
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define SCANRATE_DONE BUTTON_RC_REC
+#define SCANRATE_FASTINC BUTTON_RC_VOL_UP
+#define SCANRATE_FASTDEC BUTTON_RC_VOL_DOWN
+#define SCANRATE_INC BUTTON_RC_FF
+#define SCANRATE_DEC BUTTON_RC_REW
+
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) \
|| (CONFIG_KEYPAD == IPOD_1G2G_PAD)
#define SCANRATE_DONE BUTTON_MENU
@@ -67,6 +74,9 @@ PLUGIN_HEADER
#define DEFAULT_SCAN_RATE 800
#elif CONFIG_LCD == LCD_IPODMINI
#define DEFAULT_SCAN_RATE 880
+#else
+#define DEFAULT_SCAN_RATE 700
+#warning Generic default scanrate
#endif
#if defined(CPU_PP) && defined(HAVE_ADJUSTABLE_CPU_FREQ)
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c
index ea33314..a7be5db 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -232,6 +232,18 @@ PLUGIN_HEADER
#define VIEWER_MENU BUTTON_MENU
#define VIEWER_AUTOSCROLL BUTTON_DISPLAY
+/* iAUdio M3 keys */
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define VIEWER_QUIT BUTTON_RC_REC
+#define VIEWER_PAGE_UP BUTTON_RC_VOL_UP
+#define VIEWER_PAGE_DOWN BUTTON_RC_VOL_DOWN
+#define VIEWER_SCREEN_LEFT BUTTON_RC_REW
+#define VIEWER_SCREEN_RIGHT BUTTON_RC_FF
+#define VIEWER_MENU BUTTON_RC_MENU
+#define VIEWER_AUTOSCROLL BUTTON_RC_MODE
+
+#define VIEWER_RC_QUIT BUTTON_REC
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 4a02a58..9f09578 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -139,6 +139,15 @@ PLUGIN_HEADER
#define VUMETER_UP BUTTON_UP
#define VUMETER_DOWN BUTTON_DOWN
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+#define VUMETER_QUIT BUTTON_RC_REC
+#define VUMETER_HELP BUTTON_RC_MODE
+#define VUMETER_MENU BUTTON_RC_MENU
+#define VUMETER_MENU_EXIT BUTTON_RC_MENU
+#define VUMETER_MENU_EXIT2 BUTTON_RC_REC
+#define VUMETER_UP BUTTON_RC_VOL_UP
+#define VUMETER_DOWN BUTTON_RC_VOL_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 65e9d85..0da929d 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -202,6 +202,19 @@ PLUGIN_HEADER
#define PLAYERS_TEXT "Up/Down"
#define WORMS_TEXT "Left/Right"
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+
+#define BTN_DIR_UP BUTTON_RC_VOL_UP
+#define BTN_DIR_DOWN BUTTON_RC_VOL_DOWN
+#define BTN_DIR_LEFT BUTTON_RC_REW
+#define BTN_DIR_RIGHT BUTTON_RC_FF
+#define BTN_STARTPAUSE BUTTON_RC_PLAY
+#define BTN_QUIT BUTTON_RC_REC
+#define BTN_STOPRESET BUTTON_RC_MODE
+
+#define PLAYERS_TEXT "VOL UP/DN"
+#define WORMS_TEXT "REW/FF"
+
#else
#error No keymap defined!
#endif
@@ -216,6 +229,11 @@ PLUGIN_HEADER
#define ARGH_SIZE 4
#define SPEED 14
#define MAX_WORM_SEGMENTS 128
+#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 96)
+#define FOOD_SIZE 3
+#define ARGH_SIZE 4
+#define SPEED 12
+#define MAX_WORM_SEGMENTS 128
#elif (LCD_WIDTH == 138) && (LCD_HEIGHT == 110)
#define FOOD_SIZE 4
#define ARGH_SIZE 5
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index dcffbdc..d0d8049 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -130,6 +130,15 @@ PLUGIN_HEADER
#define DOWN BUTTON_DOWN
#define PAUSE BUTTON_DISPLAY
+#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
+
+#define QUIT BUTTON_RC_REC
+#define LEFT BUTTON_RC_REW
+#define RIGHT BUTTON_RC_FF
+#define UP BUTTON_RC_VOL_UP
+#define DOWN BUTTON_RC_VOL_DOWN
+#define PAUSE BUTTON_RC_PLAY
+
#else
#error No keymap defined!
#endif