summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2002-10-13 12:48:31 +0000
committerDaniel Stenberg <daniel@haxx.se>2002-10-13 12:48:31 +0000
commitf84d6bf886a0f99122faf1156664cac32afe9808 (patch)
treed7a4c03ce30438d38d7efcb70f5101ec73f3e2aa
parent4aff85fe95140e4b47672954f4e899c71e81b5c2 (diff)
downloadrockbox-f84d6bf886a0f99122faf1156664cac32afe9808.tar.gz
rockbox-f84d6bf886a0f99122faf1156664cac32afe9808.zip
Now, try press ON while watching the bounce screen. I'm sure we can think
of something more fun to do with this in the future. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2604 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/recorder/bounce.c76
1 files changed, 73 insertions, 3 deletions
diff --git a/apps/recorder/bounce.c b/apps/recorder/bounce.c
index fdf7fcd4f9..a1f22b56fa 100644
--- a/apps/recorder/bounce.c
+++ b/apps/recorder/bounce.c
@@ -225,8 +225,63 @@ static void addclock(void)
}
}
+#define LETTERS_ON_SCREEN 12
-static void loopit(void)
+#define YSPEED 2
+#define XSPEED 3
+#define YADD -4
+
+static int scrollit(void)
+{
+ int b;
+ unsigned int y=100;
+ int x=LCD_WIDTH;
+ unsigned int yy,xx;
+ unsigned int i;
+ int textpos=0;
+
+ char rock[]="Rockbox! Pure pleasure. Pure fun. Oooh. What fun! ;-) ";
+ int letter;
+
+ while(button_get(false) & BUTTON_REL);
+
+ lcd_clear_display();
+ while(1)
+ {
+ b = button_get_w_tmo(HZ/10);
+ if ( b & BUTTON_OFF )
+ return 0;
+ else if ( b & BUTTON_ON )
+ return 1;
+
+ lcd_clear_display();
+
+ for(i=0, yy=y, xx=x; i< LETTERS_ON_SCREEN; i++) {
+ letter = rock[(i+textpos) % (sizeof(rock)-1) ];
+
+ lcd_bitmap((char *)char_gen_12x16[letter-0x20],
+ xx, table[yy&63],
+ 11, 16, false);
+ yy += YADD;
+ xx+= LCD_WIDTH/LETTERS_ON_SCREEN;
+ }
+ addclock();
+ lcd_update();
+
+ x-= XSPEED;
+
+ if(x < 0) {
+ x += LCD_WIDTH/LETTERS_ON_SCREEN;
+ y += YADD;
+ textpos++;
+ }
+
+ y+=YSPEED;
+
+ }
+}
+
+static int loopit(void)
{
int b;
unsigned int y=100;
@@ -242,12 +297,16 @@ static void loopit(void)
int timeout=0;
char buffer[30];
+ while(button_get(false) & BUTTON_REL);
+
lcd_clear_display();
while(1)
{
b = button_get_w_tmo(HZ/10);
if ( b & BUTTON_OFF )
- break;
+ return 0;
+ if ( b & BUTTON_ON )
+ return 1;
else if(b != BUTTON_NONE)
timeout=20;
@@ -336,9 +395,20 @@ bool bounce(void)
lcd_update();
sleep(HZ);
- loopit();
+ do {
+ h= loopit();
+ if(h)
+ h= scrollit();
+ } while(h);
+
return false;
}
#endif
+
+/* -----------------------------------------------------------------
+ * local variables:
+ * eval: (load-file "../../firmware/rockbox-mode.el")
+ * end:
+ */