From ba371fb595affd68c823926b85718d1d613dc7d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Stenberg?= Date: Sun, 29 Jun 2003 16:33:04 +0000 Subject: Added plugin loader. Moved games, demos and the text viewer to loadable plugins. Copy your *.rock files to /.rockbox/rocks/ git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3769 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/snow.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 apps/plugins/snow.c (limited to 'apps/plugins/snow.c') diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c new file mode 100644 index 0000000..df9966e --- /dev/null +++ b/apps/plugins/snow.c @@ -0,0 +1,111 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2002 Itai Shaked + * + * 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 "plugin.h" + +#ifdef HAVE_LCD_BITMAP + +#define NUM_PARTICLES 100 + +static short particles[NUM_PARTICLES][2]; +static struct plugin_api* rb; + +static bool particle_exists(int particle) +{ + if (particles[particle][0]>=0 && particles[particle][1]>=0 && + particles[particle][0]<112 && particles[particle][1]<64) + return true; + else + return false; +} + +static int create_particle(void) +{ + int i; + + for (i=0; irand()%112); + particles[i][1]=0; + return i; + } + } + return -1; +} + +static void snow_move(void) +{ + int i; + + if (!(rb->rand()%2)) + create_particle(); + + for (i=0; ilcd_clearpixel(particles[i][0],particles[i][1]); + switch ((rb->rand()%7)) { + case 0: + particles[i][0]++; + break; + + case 1: + particles[i][0]--; + break; + + case 2: + break; + + default: + particles[i][1]++; + break; + } + if (particle_exists(i)) + rb->lcd_drawpixel(particles[i][0],particles[i][1]); + } + } +} + +static void snow_init(void) +{ + int i; + + for (i=0; ilcd_clear_display(); +} + +enum plugin_status plugin_start(struct plugin_api* api, void* parameter) +{ + TEST_PLUGIN_API(api); + (void)(parameter); + rb = api; + + snow_init(); + while (1) { + snow_move(); + rb->lcd_update(); + rb->sleep(HZ/20); + + if (rb->button_get(false) == BUTTON_OFF) + return false; + } +} + +#endif -- cgit v1.1