/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * $Id$ * * Copyright (C) 2002 Daniel Stenberg * * All files in this archive are subject to the GNU General Public License. * See the file COPYING in the source tree root for full license agreement. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/ #include "config.h" #include "options.h" #ifdef USE_DEMOS #include "lcd.h" #include "button.h" #include "kernel.h" #include "menu.h" #include "sprintf.h" #ifdef SIMULATOR #include #endif #include #define SS_TITLE "Bouncer" #define SS_TITLE_FONT 2 static unsigned char table[]={ 26,28,30,33,35,37,39,40,42,43,45,46,46,47,47,47,47,47,46,46,45,43,42,40,39,37,35,33,30,28,26,24,21,19,17,14,12,10,8,7,5,4,2,1,1,0,0,0,0,0,1,1,2,4,5,7,8,10,12,14,17,19,21,23, }; static unsigned char xtable[]={ 54,58,63,67,71,75,79,82,85,88,91,93,95,97,98,99,99,99,99,99,97,96,94,92,90,87,84,80,77,73,69,65,60,56,52,47,43,39,34,30,26,22,19,15,12,9,7,5,3,2,0,0,0,0,0,1,2,4,6,8,11,14,17,20,24,28,32,36,41,45,49 }; static signed char speed[]={ 1,2,3,3,3,2,1,0,-1,-2,-2,-2,-1,0,0,1, }; #define XDIFF -4 #define YDIFF -6 extern const unsigned char char_gen_12x16[][22]; enum { NUM_XSANKE, NUM_YSANKE, NUM_XADD, NUM_YADD, NUM_XDIST, NUM_YDIST, NUM_LAST }; struct counter { char *what; int num; }; struct counter values[]={ {"xsanke", 1}, {"ysanke", 1}, {"xadd", 1}, {"yadd", 1}, {"xdist", -4}, {"ydistt", -6}, }; static void loopit(void) { int b; unsigned int y=100; unsigned int x=100; unsigned int yy,xx; unsigned int i; unsigned int ysanke=0; unsigned int xsanke=0; char rock[]="ROCKbox"; int show=0; int timeout=0; char buffer[30]; lcd_clear_display(); while(1) { b = button_get_w_tmo(HZ/10); if ( b & BUTTON_OFF ) break; else if(b != BUTTON_NONE) timeout=20; y+= speed[ysanke&15] + values[NUM_YADD].num; x+= speed[xsanke&15] + values[NUM_XADD].num; lcd_clear_display(); if(timeout) { switch(b) { case BUTTON_LEFT: values[show].num--; break; case BUTTON_RIGHT: values[show].num++; break; case BUTTON_UP: if(++show == NUM_LAST) show=0; break; case BUTTON_DOWN: if(--show < 0) show=NUM_LAST-1; break; } snprintf(buffer, 30, "%s: %d", values[show].what, values[show].num); lcd_putsxy(0, 56, buffer, 0); timeout--; } for(i=0, yy=y, xx=x; i