summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBarry Wardell <rockbox@barrywardell.net>2007-01-15 20:40:48 +0000
committerBarry Wardell <rockbox@barrywardell.net>2007-01-15 20:40:48 +0000
commit41ee9e33041dd2020e7ee3c44b81cef538b6592f (patch)
tree80dea3488f41fd0c78512760daf86e1a00dd3f32
parent6de815be5cb06e9e8df46fcfdfbf611bce24c99c (diff)
downloadrockbox-41ee9e33041dd2020e7ee3c44b81cef538b6592f.tar.gz
rockbox-41ee9e33041dd2020e7ee3c44b81cef538b6592f.tar.bz2
rockbox-41ee9e33041dd2020e7ee3c44b81cef538b6592f.zip
FS#6539 - Thanks to Tom Ross
Add Jewels, Spacerocks, Wormlet, Rockboy and Sudoku for the e200. Also Includes manual changes for plugins. Add X5 keymappings for wormlet to the manual. Add help text for Jewels on the H10 and give a warning if help text is not defined. Fix bug in spacerocks lives drawing on large screens (larger than Ondio). Change spacerocks comments to C style. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12018 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/SOURCES6
-rw-r--r--apps/plugins/SUBDIRS3
-rw-r--r--apps/plugins/bitmaps/native/SOURCES8
-rw-r--r--apps/plugins/jewels.c26
-rw-r--r--apps/plugins/rockboy/rockboy.c7
-rw-r--r--apps/plugins/rockboy/sys_rockbox.c3
-rw-r--r--apps/plugins/spacerocks.c83
-rw-r--r--apps/plugins/sudoku/SOURCES2
-rw-r--r--apps/plugins/sudoku/sudoku.c12
-rw-r--r--apps/plugins/sudoku/sudoku.h5
-rw-r--r--apps/plugins/wormlet.c5
-rw-r--r--manual/plugins/images/ss-jewels-176x220x16.pngbin0 -> 12533 bytes
-rw-r--r--manual/plugins/images/ss-rockboy-176x220x16.pngbin0 -> 3899 bytes
-rw-r--r--manual/plugins/images/ss-spacerocks-176x220x16.pngbin0 -> 851 bytes
-rw-r--r--manual/plugins/images/ss-sudoku-176x220x16.pngbin0 -> 4667 bytes
-rw-r--r--manual/plugins/images/ss-wormlet-176x220x16.pngbin0 -> 1324 bytes
-rw-r--r--manual/plugins/jewels.tex16
-rw-r--r--manual/plugins/main.tex6
-rw-r--r--manual/plugins/rockboy.tex11
-rw-r--r--manual/plugins/spacerocks.tex2
-rw-r--r--manual/plugins/wormlet.tex32
21 files changed, 154 insertions, 73 deletions
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES
index f3967298a4..f00ac71bed 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -55,9 +55,7 @@ brickmania.c
calculator.c
chip8.c
demystify.c
-#ifndef SANSA_E200
jewels.c
-#endif
minesweeper.c
oscilloscope.c
pong.c
@@ -72,7 +70,7 @@ starfield.c
video.c
#endif
vu_meter.c
-#if !defined(IRIVER_H10_5GB) && !defined(SANSA_E200)
+#if !defined(IRIVER_H10_5GB)
wormlet.c
#endif
@@ -95,9 +93,7 @@ rockboy.c
fireworks.c
xobox.c
#endif
-#if !defined(SANSA_E200)
spacerocks.c
-#endif
#if LCD_DEPTH >= 16
rockpaint.c
#endif
diff --git a/apps/plugins/SUBDIRS b/apps/plugins/SUBDIRS
index 686c4674f3..aff4a21d36 100644
--- a/apps/plugins/SUBDIRS
+++ b/apps/plugins/SUBDIRS
@@ -8,7 +8,8 @@
(CONFIG_KEYPAD == IRIVER_H300_PAD) || \
defined(IPOD_COLOR) || \
defined(IPOD_VIDEO) || \
- defined(TOSHIBA_GIGABEAT_F)
+ defined(TOSHIBA_GIGABEAT_F) || \
+ defined(SANSA_E200)
rockboy
#endif
diff --git a/apps/plugins/bitmaps/native/SOURCES b/apps/plugins/bitmaps/native/SOURCES
index 568597c95a..b98377e846 100644
--- a/apps/plugins/bitmaps/native/SOURCES
+++ b/apps/plugins/bitmaps/native/SOURCES
@@ -66,6 +66,8 @@ jewels.160x128x16.bmp
jewels.160x128x16.bmp
#elif (LCD_WIDTH == 220) && (LCD_HEIGHT == 176)
jewels.220x176x16.bmp
+#elif (LCD_WIDTH == 176) && (LCD_HEIGHT == 220)
+jewels.220x176x16.bmp
#elif (LCD_WIDTH == 240) && (LCD_HEIGHT == 320)
jewels.320x240x16.bmp
#elif (LCD_WIDTH == 320) && (LCD_HEIGHT == 240)
@@ -254,7 +256,11 @@ sudoku_normal.320x240x16.bmp
sudoku_inverse.320x240x16.bmp
#endif
#else
-#if (LCD_WIDTH >= 240) && (LCD_HEIGHT >= 320) && (LCD_DEPTH == 16)
+#if ((LCD_WIDTH == 176) && (LCD_HEIGHT == 220) && (LCD_DEPTH == 16))
+sudoku_start.220x176x16.bmp
+sudoku_normal.220x176x16.bmp
+sudoku_inverse.220x176x16.bmp
+#elif (LCD_WIDTH >= 240) && (LCD_HEIGHT >= 320) && (LCD_DEPTH == 16)
sudoku_start.320x240x16.bmp
sudoku_normal.320x240x16.bmp
sudoku_inverse.320x240x16.bmp
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index ba74879359..d0bf1af5e1 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -123,7 +123,8 @@ PLUGIN_HEADER
#define NUM_SCORES 10
/* use 22x22 tiles (H300, iPod Color) */
-#elif ((LCD_HEIGHT == 176) && (LCD_WIDTH == 220))
+#elif ((LCD_HEIGHT == 176) && (LCD_WIDTH == 220)) || \
+ ((LCD_HEIGHT == 220) && (LCD_WIDTH == 176))
#define TILE_WIDTH 22
#define TILE_HEIGHT 22
#define YOFS 0
@@ -1306,6 +1307,29 @@ static int jewels_main(struct game_context* bj) {
rb->lcd_puts(0, 9, "SELECT to select");
rb->lcd_puts(0, 10, "Long SELECT to show menu");
rb->lcd_puts(0, 11, "A to cancel");
+#elif CONFIG_KEYPAD == SANSA_E200_PAD
+ rb->lcd_puts(0, 2, "Swap pairs of jewels to");
+ rb->lcd_puts(0, 3, "form connected segments");
+ rb->lcd_puts(0, 4, "of three or more of the");
+ rb->lcd_puts(0, 5, "same type.");
+ rb->lcd_puts(0, 7, "Controls:");
+ rb->lcd_puts(0, 8, "Directions to move");
+ rb->lcd_puts(0, 9, "SELECT to select");
+ rb->lcd_puts(0, 10, "Long SELECT to show menu");
+ rb->lcd_puts(0, 11, "POWER to cancel");
+#elif CONFIG_KEYPAD == IRIVER_H10_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, "POWER to cancel");
+#else
+ #warning: missing help text.
#endif
rb->lcd_update();
while(true) {
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index cce0f8c863..d7dd4d8898 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -129,6 +129,13 @@ void setoptions (void)
options.START=BUTTON_POWER;
options.SELECT=BUTTON_SELECT;
options.MENU=BUTTON_MENU;
+
+#elif CONFIG_KEYPAD == SANSA_E200_PAD
+ options.A=BUTTON_SELECT;
+ options.B=BUTTON_REC;
+ options.START=BUTTON_SCROLL_UP;
+ options.SELECT=BUTTON_SCROLL_DOWN;
+ options.MENU=BUTTON_POWER;
#endif
options.maxskip=4;
diff --git a/apps/plugins/rockboy/sys_rockbox.c b/apps/plugins/rockboy/sys_rockbox.c
index 431fe130a0..fb118162b2 100644
--- a/apps/plugins/rockboy/sys_rockbox.c
+++ b/apps/plugins/rockboy/sys_rockbox.c
@@ -181,7 +181,8 @@ void ev_poll(void)
#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD) || \
(CONFIG_KEYPAD == IPOD_4G_PAD) || \
- (CONFIG_KEYPAD == GIGABEAT_PAD)
+ (CONFIG_KEYPAD == GIGABEAT_PAD) || \
+ (CONFIG_KEYPAD == SANSA_E200_PAD)
#ifdef HAVE_WHEEL_POSITION
rb->wheel_send_events(true);
#endif
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 0143af97b7..879a5696da 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -120,17 +120,17 @@ static struct plugin_api* rb; /* global api struct pointer */
#define AST_FIRE_REP BUTTON_SELECT | BUTTON_REPEAT
#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
-#define AST_PAUSE BUTTON_SELECT
+#define AST_PAUSE BUTTON_REC
#define AST_QUIT BUTTON_POWER
-#define AST_THRUST_REP BUTTON_UP | BUTTON_RIGHT
+#define AST_THRUST_REP (BUTTON_UP | BUTTON_REPEAT)
#define AST_THRUST BUTTON_UP
#define AST_HYPERSPACE BUTTON_DOWN
#define AST_LEFT BUTTON_LEFT
-#define AST_LEFT_REP BUTTON_LEFT | BUTTON_RIGHT
+#define AST_LEFT_REP (BUTTON_LEFT | BUTTON_REPEAT)
#define AST_RIGHT BUTTON_RIGHT
-#define AST_RIGHT_REP (BUTTON_RIGHT | BUTTON_RIGHT)
+#define AST_RIGHT_REP (BUTTON_RIGHT | BUTTON_REPEAT)
#define AST_FIRE BUTTON_SELECT
-#define AST_FIRE_REP BUTTON_SELECT | BUTTON_RIGHT
+#define AST_FIRE_REP (BUTTON_SELECT | BUTTON_REPEAT)
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define AST_PAUSE BUTTON_PLAY
@@ -161,7 +161,8 @@ static struct plugin_api* rb; /* global api struct pointer */
(CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == GIGABEAT_PAD)|| \
(CONFIG_KEYPAD == ARCHOS_AV300_PAD)|| \
- (CONFIG_KEYPAD == IRIVER_H10_PAD)
+ (CONFIG_KEYPAD == IRIVER_H10_PAD)|| \
+ (CONFIG_KEYPAD == SANSA_E200_PAD)
#define ENEMY_MISSILE_SURVIVAL_LENGTH 140
#define MISSILE_SURVIVAL_LENGTH 40
#define ASTEROID_SPEED 15
@@ -595,7 +596,7 @@ void create_trail_blaze(int colour, struct Point* position)
yadd = ship.position.y;
}
- //give the point a random countdown timer, so they dissapears at different times
+ /* give the point a random countdown timer, so they dissapears at different times */
tpoint = trailPoints;
n = NUM_TRAIL_POINTS;
while(--n)
@@ -603,9 +604,9 @@ void create_trail_blaze(int colour, struct Point* position)
if(tpoint->alive <= 0 && numtoadd)
{
numtoadd--;
- //take a random x point anywhere between
- //bottom two points of ship.
- tpoint->position.x = (ship.vertices[2].x + (rb->rand()%18000)-9000) + position->x; //ship.position.x;
+ /* take a random x point anywhere between bottom two points of ship. */
+ /* ship.position.x; */
+ tpoint->position.x = (ship.vertices[2].x + (rb->rand()%18000)-9000) + position->x;
tpoint->position.y = (ship.vertices[2].y + (rb->rand()%18000)-9000) + position->y;
switch(colour)
@@ -643,9 +644,9 @@ void create_trail_blaze(int colour, struct Point* position)
tpoint->dec = 4;
break;
}
- //add a proportional bit to the x and y based on dx and dy
+ /* add a proportional bit to the x and y based on dx and dy */
- //give the points a speed based on direction of travel - i.e. opposite
+ /* give the points a speed based on direction of travel - i.e. opposite */
tpoint->position.dx += position->dx;
tpoint->position.dy += position->dy;
@@ -653,17 +654,17 @@ void create_trail_blaze(int colour, struct Point* position)
}
tpoint++;
}
- //find a space in the array of trail_points that is NULL or DEAD or whatever.
- //and place this one here.
+ /* find a space in the array of trail_points that is NULL or DEAD or whatever.
+ and place this one here. */
}
void draw_trail_blaze(void)
{
struct TrailPoint* tpoint;
- //loop through, if alive then move and draw.
- //when drawn, countdown it's timer.
- //if zero kill it!
+ /* loop through, if alive then move and draw.
+ when drawn, countdown it's timer.
+ if zero kill it! */
tpoint = trailPoints;
int n = NUM_TRAIL_POINTS;
@@ -677,7 +678,7 @@ void draw_trail_blaze(void)
move_point(&(tpoint->position));
}
#ifdef HAVE_LCD_COLOR
- //intensity = tpoint->alive/2;
+ /* intensity = tpoint->alive/2; */
if(tpoint->r>0)tpoint->r-=tpoint->dec;
if(tpoint->g>0)tpoint->g-=tpoint->dec;
if(tpoint->b>0)tpoint->b-=tpoint->dec;
@@ -875,8 +876,8 @@ void draw_and_move_enemy(void)
else
{
- //animate_and_draw_explosion(enemy.vertices, NUM_ENEMY_VERTICES,
- // enemy_x, enemy.position.y/SCALE);
+ /* animate_and_draw_explosion(enemy.vertices, NUM_ENEMY_VERTICES,
+ enemy_x, enemy.position.y/SCALE); */
if(game_state != PAUSE_MODE)
{
enemy.explode_countdown--;
@@ -1002,7 +1003,7 @@ bool is_point_within_enemy(struct Point* point)
current_score += 5;
/*enemy_missile.survived = 0;*/
enemy.explode_countdown = EXPLOSION_LENGTH;
- // initialise_explosion(enemy.vertices, NUM_ENEMY_VERTICES);
+ /* initialise_explosion(enemy.vertices, NUM_ENEMY_VERTICES); */
create_trail_blaze(ENEMY_EXPLOSION_COLOUR, &enemy.position);
return true;
}
@@ -1092,7 +1093,7 @@ void check_collisions(void)
{
/*blow up ship*/
ship.explode_countdown = EXPLOSION_LENGTH;
- // initialise_explosion(ship.vertices, NUM_SHIP_VERTICES);
+ /* initialise_explosion(ship.vertices, NUM_SHIP_VERTICES); */
create_trail_blaze(SHIP_EXPLOSION_COLOUR, &ship.position);
}
@@ -1130,7 +1131,7 @@ void check_collisions(void)
if(is_point_within_enemy(&ship.position))
{
ship.explode_countdown = EXPLOSION_LENGTH;
- //initialise_explosion(ship.vertices, NUM_SHIP_VERTICES);
+ /* initialise_explosion(ship.vertices, NUM_SHIP_VERTICES); */
create_trail_blaze(SHIP_EXPLOSION_COLOUR, &ship.position);
create_trail_blaze(ENEMY_EXPLOSION_COLOUR, &enemy.position);
}
@@ -1157,7 +1158,7 @@ void check_collisions(void)
enemy_missile.position.y - ship.position.y))
{
ship.explode_countdown = EXPLOSION_LENGTH;
- //initialise_explosion(ship.vertices, NUM_SHIP_VERTICES);
+ /* initialise_explosion(ship.vertices, NUM_SHIP_VERTICES); */
create_trail_blaze(SHIP_EXPLOSION_COLOUR, &ship.position);
enemy_missile.survived = 0;
enemy_missile.position.x = enemy_missile.position.y = 0;
@@ -1304,7 +1305,11 @@ void draw_lives(void)
{
int n;
int px = (LCD_WIDTH - num_lives*4 - 1);
+ #if(LARGE_LCD)
+ int py = (LCD_HEIGHT-6);
+ #else
int py = (LCD_HEIGHT-4);
+ #endif
SET_FG(COL_PLAYER);
@@ -1312,7 +1317,11 @@ void draw_lives(void)
while(--n)
{
draw_polygon(lives_points, px, py, NUM_SHIP_VERTICES);
+ #if(LARGE_LCD)
+ px += 8;
+ #else
px += 6;
+ #endif
}
}
@@ -1402,9 +1411,9 @@ void initialise_asteroid(struct Asteroid* asteroid, enum asteroid_type type)
asteroid->radius += 6*SCALE;
if(asteroid->type == SMALL)
- asteroid->radius /= 3;//2
+ asteroid->radius /= 3;/*2*/
else if(asteroid->type == LARGE)
- asteroid->radius += 3*SCALE;//2
+ asteroid->radius += 3*SCALE;/*2*/
b = true;
while(b)
{
@@ -1520,9 +1529,9 @@ void draw_and_move_ship(void)
}
else
{
- // animate_and_draw_explosion(ship.vertices, NUM_SHIP_VERTICES,
- // ship.position.x/SCALE,
- // ship.position.y/SCALE);
+ /* animate_and_draw_explosion(ship.vertices, NUM_SHIP_VERTICES,
+ ship.position.x/SCALE,
+ ship.position.y/SCALE); */
if(game_state != PAUSE_MODE)
{
ship.explode_countdown--;
@@ -1550,8 +1559,9 @@ void thrust_ship(void)
{
ship.position.dx += ( ship.vertices[0].x - ship.vertices[2].x )/20;
ship.position.dy += ( ship.vertices[0].y - ship.vertices[2].y )/20;
- /*if dx and dy are below a certain threshold, then set 'em to 0*/
- //but to do this we need to ascertain if the spacehip as moved on screen for more than a certain amount.
+ /*if dx and dy are below a certain threshold, then set 'em to 0
+ but to do this we need to ascertain if the spacehip as moved on screen
+ for more than a certain amount. */
create_trail_blaze(THRUST_COLOUR, &ship.position);
}
@@ -1620,10 +1630,10 @@ void draw_and_move_asteroids(void)
}
else if(asteroid->explode_countdown)
{
- // animate_and_draw_explosion(asteroid->vertices,
- // NUM_ASTEROID_VERTICES,
- // asteroid->position.x/SCALE,
- // asteroid->position.y/SCALE);
+ /* animate_and_draw_explosion(asteroid->vertices,
+ NUM_ASTEROID_VERTICES,
+ asteroid->position.x/SCALE,
+ asteroid->position.y/SCALE); */
asteroid->explode_countdown--;
}
}
@@ -1655,7 +1665,8 @@ void create_stars(void)
}
- //give the point a random countdown timer, so they dissapears at different times
+ /* give the point a random countdown timer, so they dissapears at different
+ times */
tpoint = trailPoints;
n = NUM_TRAIL_POINTS;
while(--n)
diff --git a/apps/plugins/sudoku/SOURCES b/apps/plugins/sudoku/SOURCES
index 8b344bdfeb..7cce555c93 100644
--- a/apps/plugins/sudoku/SOURCES
+++ b/apps/plugins/sudoku/SOURCES
@@ -1,5 +1,3 @@
-#if !defined(SANSA_E200)
sudoku.c
generator.c
templates.c
-#endif
diff --git a/apps/plugins/sudoku/sudoku.c b/apps/plugins/sudoku/sudoku.c
index 9a3a147889..218a544f8c 100644
--- a/apps/plugins/sudoku/sudoku.c
+++ b/apps/plugins/sudoku/sudoku.c
@@ -129,8 +129,7 @@ static const char default_game[9][9] =
#define CELL_WIDTH 12
#define CELL_HEIGHT 12
-#elif ((LCD_HEIGHT==176) && (LCD_WIDTH==220)) || \
- ((LCD_HEIGHT==220) && (LCD_WIDTH==176))
+#elif ((LCD_HEIGHT==176) && (LCD_WIDTH==220))
/* Iriver h300, iPod Color/Photo - 220x176, 9 cells @ 16x16 with 14 border lines */
/* Internal dimensions of a cell */
@@ -151,7 +150,14 @@ static const char default_game[9][9] =
#else /* Vertical layout, scratchpad at the bottom */
#define VERTICAL_LAYOUT
-#if (LCD_HEIGHT>=320) && (LCD_WIDTH>=240)
+#if ((LCD_HEIGHT==220) && (LCD_WIDTH==176))
+/* e200, 9 cells @ 16x16 with 14 border lines */
+
+/* Internal dimensions of a cell */
+#define CELL_WIDTH 16
+#define CELL_HEIGHT 16
+
+#elif (LCD_HEIGHT>=320) && (LCD_WIDTH>=240)
/* Gigabeat - 240x320, 9 cells @ 24x24 with 14 border lines */
/* Internal dimensions of a cell */
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index 2628e3254f..04923be18e 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -116,8 +116,9 @@
#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
-#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT
-#define SUDOKU_BUTTON_MENU (BUTTON_SELECT|BUTTON_REPEAT)
+#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_SCROLL_UP
+#define SUDOKU_BUTTON_TOGGLE BUTTON_SCROLL_DOWN
+#define SUDOKU_BUTTON_MENU BUTTON_SELECT
#define SUDOKU_BUTTON_POSSIBLE BUTTON_REC
#elif
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 5afefb77a8..b301a8ae11 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -200,6 +200,11 @@ PLUGIN_HEADER
#define ARGH_SIZE 6
#define SPEED 4
#define MAX_WORM_SEGMENTS 512
+#elif (LCD_WIDTH == 176) && (LCD_HEIGHT == 220)
+#define FOOD_SIZE 5
+#define ARGH_SIZE 6
+#define SPEED 4
+#define MAX_WORM_SEGMENTS 512
#elif (LCD_WIDTH == 320) && (LCD_HEIGHT == 240)
#define FOOD_SIZE 7
#define ARGH_SIZE 8
diff --git a/manual/plugins/images/ss-jewels-176x220x16.png b/manual/plugins/images/ss-jewels-176x220x16.png
new file mode 100644
index 0000000000..82ff8ff6e9
--- /dev/null
+++ b/manual/plugins/images/ss-jewels-176x220x16.png
Binary files differ
diff --git a/manual/plugins/images/ss-rockboy-176x220x16.png b/manual/plugins/images/ss-rockboy-176x220x16.png
new file mode 100644
index 0000000000..6996b0679e
--- /dev/null
+++ b/manual/plugins/images/ss-rockboy-176x220x16.png
Binary files differ
diff --git a/manual/plugins/images/ss-spacerocks-176x220x16.png b/manual/plugins/images/ss-spacerocks-176x220x16.png
new file mode 100644
index 0000000000..50e91a3693
--- /dev/null
+++ b/manual/plugins/images/ss-spacerocks-176x220x16.png
Binary files differ
diff --git a/manual/plugins/images/ss-sudoku-176x220x16.png b/manual/plugins/images/ss-sudoku-176x220x16.png
new file mode 100644
index 0000000000..83d1f12e09
--- /dev/null
+++ b/manual/plugins/images/ss-sudoku-176x220x16.png
Binary files differ
diff --git a/manual/plugins/images/ss-wormlet-176x220x16.png b/manual/plugins/images/ss-wormlet-176x220x16.png
new file mode 100644
index 0000000000..4cc3a5e94f
--- /dev/null
+++ b/manual/plugins/images/ss-wormlet-176x220x16.png
Binary files differ
diff --git a/manual/plugins/jewels.tex b/manual/plugins/jewels.tex
index b8b56685df..fa1dc17ddb 100644
--- a/manual/plugins/jewels.tex
+++ b/manual/plugins/jewels.tex
@@ -63,6 +63,20 @@ after every one hundred points and randomly clears several jewels.
& Show the in-game menu\\
\end{btnmap}
\end{table}
-
To exit the game, bring up the in-game menu and select \setting{Quit}\\
}
+\opt{SANSA_E200_PAD}{
+ \begin{table}
+ \begin{btnmap}{}{}
+ \ButtonLeft, \ButtonRight, \ButtonUp\ and \ButtonDown
+ & Move the cursor around the jewels \\
+ \ButtonSelect
+ & Select a jewel \\
+ Hold \ButtonSelect
+ & Show the in-game menu\\
+ \ButtonPower
+ & Exit\\
+ \end{btnmap}
+ \end{table}
+}
+
diff --git a/manual/plugins/main.tex b/manual/plugins/main.tex
index acb9bdfbe2..a92c3e2a8c 100644
--- a/manual/plugins/main.tex
+++ b/manual/plugins/main.tex
@@ -15,7 +15,7 @@ text files, chip8 games), or from the \setting{Open with} option on the
\section{Games}
\opt{HAVE_LCD_BITMAP}
{See also the Chip{}-8 emulator in \reference{ref:Chip8emulator}
- \opt{recorder,recorderv2fm,h1xx,h300,ipodcolor,ipodvideo}
+ \opt{recorder,recorderv2fm,h1xx,h300,ipodcolor,ipodvideo,sansa}
{and Rockboy in \reference{ref:Rockboy}}.}
\opt{HAVE_LCD_BITMAP}{\input{plugins/brickmania.tex}}
@@ -58,7 +58,7 @@ text files, chip8 games), or from the \setting{Open with} option on the
\opt{recorder,recorderv2fm,ondio,h1xx,ipod,HAVE_LCD_COLOR}{\input{plugins/sudoku.tex}}
-\opt{recorder,recorderv2fm,ondio,h1xx,h300,IPOD_4G_PAD,IPOD_3G_PAD}{\input{plugins/wormlet.tex}}
+\opt{recorder,recorderv2fm,ondio,h1xx,h300,IPOD_4G_PAD,IPOD_3G_PAD,SANSA_E200_PAD}{\input{plugins/wormlet.tex}}
\opt{SWCODEC}{\input{plugins/xobox.tex}}
@@ -105,7 +105,7 @@ the associated file. Viewers are stored in the
\opt{recorder,recorderv2fm,ondio}{\input{plugins/rockbox_flash.tex}}
-\opt{recorder,recorderv2fm,h1xx,h300,ipodcolor,ipodvideo}{\input{plugins/rockboy.tex}}
+\opt{recorder,recorderv2fm,h1xx,h300,ipodcolor,ipodvideo,sansa}{\input{plugins/rockboy.tex}}
{\input{plugins/search.tex}}
diff --git a/manual/plugins/rockboy.tex b/manual/plugins/rockboy.tex
index 9ed04f7b8c..90e8d409bd 100644
--- a/manual/plugins/rockboy.tex
+++ b/manual/plugins/rockboy.tex
@@ -7,29 +7,34 @@ the gnuboy emulator. To start a game open a ROM file saved as \fname{.gb} or
\textbf{Default keys}
\begin{table}
\begin{btnmap}{}{}
- \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{
+ \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_E200_PAD}{
\opt{RECORDER_PAD}{\ButtonFOne}
\opt{IRIVER_H100_PAD}{\ButtonOn}
\opt{IRIVER_H300_PAD}{\ButtonRec}
+ \opt{SANSA_E200_PAD}{\ButtonSelect}
& A button\\}
- \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{
+ \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_E200_PAD}{
\opt{RECORDER_PAD}{\ButtonFTwo}
\opt{IRIVER_H100_PAD}{\ButtonOff}
\opt{IRIVER_H300_PAD}{\ButtonMode}
+ \opt{SANSA_E200_PAD}{\ButtonRec}
& B button\\}
\opt{RECORDER_PAD}{\ButtonFThree}
\opt{IRIVER_H100_PAD}{\ButtonRec}
\opt{IRIVER_H300_PAD}{\ButtonOn}
\opt{IPOD_4G_PAD}{\ButtonSelect}
+ \opt{SANSA_E200_PAD}{\ButtonScrollUp}
& Start\\
- \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{
+ \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_E200_PAD}{
\opt{RECORDER_PAD}{\ButtonPlay}
\opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonSelect}
+ \opt{SANSA_E200_PAD}{\ButtonScrollDown}
& Select\\}
\opt{RECORDER_PAD}{\ButtonOn & Cycle display scaling modes\\}
\opt{RECORDER_PAD,IRIVER_H300_PAD}{\ButtonOff}
\opt{IRIVER_H100_PAD}{\ButtonMode}
\opt{IPOD_4G_PAD}{Hold \ButtonSelect}
+ \opt{SANSA_E200_PAD}{\ButtonPower}
& Open Rockboy menu\\
\end{btnmap}
\end{table}
diff --git a/manual/plugins/spacerocks.tex b/manual/plugins/spacerocks.tex
index f3eb55f4fd..2eb8870574 100644
--- a/manual/plugins/spacerocks.tex
+++ b/manual/plugins/spacerocks.tex
@@ -32,7 +32,7 @@ UFO will appear -- shoot this for extra points.
%
\opt{RECORDER_PAD}{\ButtonOn}
\opt{ONDIO_PAD}{\ButtonMenu+\ButtonOff}
- \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonRec}
+ \opt{IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_E200_PAD}{\ButtonRec}
\opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonPlay}
\opt{IAUDIO_X5_PAD,IRIVER_H10_PAD}{\ButtonPlay}
& Pause game\\
diff --git a/manual/plugins/wormlet.tex b/manual/plugins/wormlet.tex
index ef64e3d12d..d8d78d594e 100644
--- a/manual/plugins/wormlet.tex
+++ b/manual/plugins/wormlet.tex
@@ -66,16 +66,16 @@ Game controls:}
\renewcommand{\arraystretch}{1.0}
}
-\opt{ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,IPOD_4G_PAD}{
+\opt{ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,IPOD_4G_PAD,SANSA_E200_PAD}{
\begin{table}
\begin{btnmap}{}{}
- \opt{ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IPOD_4G_PAD,IAUDIO_X5_PAD}
+ \opt{ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IPOD_4G_PAD,IAUDIO_X5_PAD,SANSA_E200_PAD}
{\ButtonLeft} & Turn left\\
- \opt{ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IPOD_4G_PAD,IAUDIO_X5_PAD}
+ \opt{ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IPOD_4G_PAD,IAUDIO_X5_PAD,SANSA_E200_PAD}
{\ButtonRight} & Turn right\\
- \opt{ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD}{\ButtonUp}
+ \opt{ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,SANSA_E200_PAD}{\ButtonUp}
\opt{IPOD_4G_PAD}{\ButtonMenu} & Turn Up\\
- \opt{ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD}{\ButtonLeft}
+ \opt{ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,SANSA_E200_PAD}{\ButtonLeft}
\opt{IPOD_4G_PAD}{\ButtonPlay} & Turn Down\\
\end{btnmap}
\end{table}
@@ -115,11 +115,13 @@ The game is over when all worms are dead. The longest worm wins the
game.
\item [Pause the game.]
Press
-\opt{RECORDER_PAD}{\ButtonPlay}\opt{ONDIO_PAD}{\ButtonMenu}
-\opt{IRIVER_H100_PAD,IRIVER_H300_PAD,IPOD_4G_PAD}{\ButtonSelect}
+\opt{RECORDER_PAD,IAUDIO_X5_PAD}{\ButtonPlay}
+\opt{ONDIO_PAD}{\ButtonMenu}
+\opt{IRIVER_H100_PAD,IRIVER_H300_PAD,IPOD_4G_PAD,SANSA_E200_PAD}{\ButtonSelect}
to pause the game. Press
-\opt{RECORDER_PAD}{\ButtonPlay}\opt{ONDIO_PAD}{\ButtonMenu}
-\opt{IRIVER_H100_PAD,IRIVER_H300_PAD,IPOD_4G_PAD}{\ButtonSelect}
+\opt{RECORDER_PAD,IAUDIO_X5_PAD}{\ButtonPlay}
+\opt{ONDIO_PAD}{\ButtonMenu}
+\opt{IRIVER_H100_PAD,IRIVER_H300_PAD,IPOD_4G_PAD,SANSA_E200_PAD}{\ButtonSelect}
again to resume the game.
\item[Stop the game.]
@@ -128,20 +130,24 @@ There are two ways to stop a running game.
\begin{itemize}
\item If you want to quit Wormlet entirely simply hit
\opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
-\opt{IPOD_4G_PAD}{\ButtonMenu+\ButtonSelect}.
+\opt{IPOD_4G_PAD}{\ButtonMenu+\ButtonSelect}
+\opt{IAUDIO_X5_PAD,SANSA_E200_PAD}{\ButtonPower}.
The game will stop immediately and you will return to the game menu.
\item If you want to stop the game and still see the screen hit
\opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}
\opt{ONDIO_PAD}{\ButtonOff+\ButtonMenu}
-\opt{IPOD_4G_PAD}{\ButtonSelect+ButtonPlay}.
+\opt{IPOD_4G_PAD}{\ButtonSelect+ButtonPlay}
+\opt{IAUDIO_X5_PAD,SANSA_E200_PAD}{\ButtonRec}.
This freezes the game. If you hit
\opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}
\opt{ONDIO_PAD}{\ButtonOff+\ButtonMenu}
-\opt{IPOD_4G_PAD}{\ButtonSelect+ButtonPlay}.
+\opt{IPOD_4G_PAD}{\ButtonSelect+\ButtonPlay}
+\opt{IAUDIO_X5_PAD,SANSA_E200_PAD}{\ButtonRec}
button again a new game starts with the same configuration. To return to the
games menu you can hit
\opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
-\opt{IPOD_4G_PAD}{\ButtonMenu+\ButtonSelect}. A stopped game can not be resumed.
+\opt{IPOD_4G_PAD}{\ButtonMenu+\ButtonSelect}
+\opt{IAUDIO_X5_PAD,SANSA_E200_PAD}{\ButtonPower}. A stopped game can not be resumed.
\end{itemize}
\end{description}