From e34df30333c15d14951edbba4caaed7f6adc1a16 Mon Sep 17 00:00:00 2001 From: Kilian Neuner Date: Wed, 3 Aug 2011 19:02:05 +0200 Subject: [PATCH 1/3] fix zoom: long click = in, double click = out --- firmware/loadable/mandelbrot.c | 49 +++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/firmware/loadable/mandelbrot.c b/firmware/loadable/mandelbrot.c index 2d9ae16..f66b691 100644 --- a/firmware/loadable/mandelbrot.c +++ b/firmware/loadable/mandelbrot.c @@ -36,7 +36,8 @@ void ram(void) { struct mb { long rmin, rmax, imin, imax; - bool dirty, dup, ddown, dleft, dright; + bool dirty, dup, ddown, dleft, dright, clickmark; + int count, limitZIn, limitZOut; } mandel; void mandelInit() { @@ -48,12 +49,16 @@ void mandelInit() { mandel.rmax = fixpt(1); mandel.imin = fixpt(-2); mandel.imax = fixpt(2); - + mandel.count = 0; + mandel.limitZIn = 40; + mandel.limitZOut = 30; + mandel.dirty = true; mandel.dup = false; mandel.ddown = false; mandel.dleft = false; mandel.dright = false; + mandel.clickmark = false; } void mandelMove() { @@ -65,7 +70,7 @@ void mandelMove() { char key = getInputRaw(); - if (key == BTN_LEFT) { + if (key == BTN_LEFT) { mandel.imax -=is; mandel.imin -=is; mandel.dleft = true; @@ -77,23 +82,37 @@ void mandelMove() { mandel.rmax += rs; mandel.rmin += rs; mandel.ddown = true; - } else if (key == BTN_UP) { - mandel.rmax -= rs; - mandel.rmin -= rs; - mandel.dup = true; - } else if (key == (BTN_ENTER + BTN_UP)) { - mandel.imin = mandel.imin + (mandel.imax-mandel.imin)/10; - mandel.imax = mandel.imax - (mandel.imax-mandel.imin)/10; - mandel.rmin = mandel.rmin +(mandel.rmax-mandel.rmin)/10; - mandel.rmax = mandel.rmax -(mandel.rmax-mandel.rmin)/10; - mandel.dirty = true; - } else if (key == (BTN_ENTER + BTN_DOWN)) { - mandel.imin = mandel.imin - (mandel.imax-mandel.imin)/10; + } else if (key == BTN_UP) { + mandel.rmax -= rs; + mandel.rmin -= rs; + mandel.dup = true; + } else if (key == BTN_ENTER) { + if (mandel.count < mandel.limitZIn) { + mandel.count = mandel.count + 1; + } + } else if (key == BTN_NONE) { + if(mandel.count > 0 ) { + mandel.count = mandel.count - 1; + mandel.clickmark = true; + } + if (mandel.count == 0 ) { + mandel.clickmark = false; + } + } + if (mandel.count > mandel.limitZOut && mandel.clickmark && key == BTN_ENTER) { + mandel.imin = mandel.imin - (mandel.imax-mandel.imin)/10; mandel.imax = mandel.imax + (mandel.imax-mandel.imin)/10; mandel.rmin = mandel.rmin -(mandel.rmax-mandel.rmin)/10; mandel.rmax = mandel.rmax +(mandel.rmax-mandel.rmin)/10; mandel.dirty = true; } + if (mandel.count == mandel.limitZIn && key == BTN_ENTER) { + mandel.imin = mandel.imin + (mandel.imax-mandel.imin)/10; + mandel.imax = mandel.imax - (mandel.imax-mandel.imin)/10; + mandel.rmin = mandel.rmin +(mandel.rmax-mandel.rmin)/10; + mandel.rmax = mandel.rmax -(mandel.rmax-mandel.rmin)/10; + mandel.dirty = true; + } } void mandelPixel(int x, int y) { From 858429cd159807ffdd05da645ba4237765f9da1c Mon Sep 17 00:00:00 2001 From: Kilian Neuner Date: Wed, 3 Aug 2011 20:15:24 +0200 Subject: [PATCH 2/3] fix zoom: doubleclick = out, longclick = in; zoomlimits --- firmware/l0dable/mandel.c | 57 ++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/firmware/l0dable/mandel.c b/firmware/l0dable/mandel.c index d00503a..e47916f 100644 --- a/firmware/l0dable/mandel.c +++ b/firmware/l0dable/mandel.c @@ -5,7 +5,6 @@ #include "lcd/render.h" #include "lcd/display.h" #include "lcd/allfonts.h" - #include "usetable.h" #define FIXSIZE 25 @@ -38,7 +37,8 @@ void ram(void) { struct mb { long rmin, rmax, imin, imax; - bool dirty, dup, ddown, dleft, dright; + bool dirty, dup, ddown, dleft, dright, clickmark; + int presscount, presslimitzin, presslimitzout, zoomlevel, maxzoomin, maxzoomout; } mandel; void mandelInit() { @@ -50,12 +50,19 @@ void mandelInit() { mandel.rmax = fixpt(1); mandel.imin = fixpt(-2); mandel.imax = fixpt(2); - + mandel.presscount = 0; + mandel.presslimitzin = 40; + mandel.presslimitzout = 30; + mandel.zoomlevel = 0; + mandel.maxzoomin = 65; + mandel.maxzoomout = -12; + mandel.dirty = true; mandel.dup = false; mandel.ddown = false; mandel.dleft = false; mandel.dright = false; + mandel.clickmark = false; } void mandelMove() { @@ -67,7 +74,7 @@ void mandelMove() { char key = getInputRaw(); - if (key == BTN_LEFT) { + if (key == BTN_LEFT) { mandel.imax -=is; mandel.imin -=is; mandel.dleft = true; @@ -79,23 +86,41 @@ void mandelMove() { mandel.rmax += rs; mandel.rmin += rs; mandel.ddown = true; - } else if (key == BTN_UP) { - mandel.rmax -= rs; - mandel.rmin -= rs; - mandel.dup = true; - } else if (key == (BTN_ENTER + BTN_UP)) { + } else if (key == BTN_UP) { + mandel.rmax -= rs; + mandel.rmin -= rs; + mandel.dup = true; + } else if (key == BTN_ENTER) { + if (mandel.presscount < mandel.presslimitzin) { + mandel.presscount = mandel.presscount + 1; + } + } else if (key == BTN_NONE) { + if(mandel.presscount > 0 ) { + mandel.presscount = mandel.presscount - 1; + mandel.clickmark = true; + } + if (mandel.presscount == 0 ) { + mandel.clickmark = false; + } + } + if (mandel.presscount > mandel.presslimitzout && mandel.clickmark && key == BTN_ENTER && mandel.zoomlevel >= mandel.maxzoomout) { + mandel.imin = mandel.imin - (mandel.imax-mandel.imin)/10; + mandel.imax = mandel.imax + (mandel.imax-mandel.imin)/10; + mandel.rmin = mandel.rmin -(mandel.rmax-mandel.rmin)/10; + mandel.rmax = mandel.rmax +(mandel.rmax-mandel.rmin)/10; + mandel.dirty = true; + delayms(10); + mandel.zoomlevel = mandel.zoomlevel - 1 ; + } + else if (mandel.presscount == mandel.presslimitzin && key == BTN_ENTER && mandel.zoomlevel <= mandel.maxzoomin ) { mandel.imin = mandel.imin + (mandel.imax-mandel.imin)/10; mandel.imax = mandel.imax - (mandel.imax-mandel.imin)/10; mandel.rmin = mandel.rmin +(mandel.rmax-mandel.rmin)/10; mandel.rmax = mandel.rmax -(mandel.rmax-mandel.rmin)/10; mandel.dirty = true; - } else if (key == (BTN_ENTER + BTN_DOWN)) { - mandel.imin = mandel.imin - (mandel.imax-mandel.imin)/10; - mandel.imax = mandel.imax + (mandel.imax-mandel.imin)/10; - mandel.rmin = mandel.rmin -(mandel.rmax-mandel.rmin)/10; - mandel.rmax = mandel.rmax +(mandel.rmax-mandel.rmin)/10; - mandel.dirty = true; - } + delayms(10); + mandel.zoomlevel = mandel.zoomlevel + 1 ; + } } void mandelPixel(int x, int y) { From dd4666b3d71bcbd80665d096beaff2d246bec181 Mon Sep 17 00:00:00 2001 From: iggy Date: Wed, 3 Aug 2011 21:18:11 +0200 Subject: [PATCH 3/3] scoring bug in invaders --- firmware/l0dable/spaceinvaders.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/l0dable/spaceinvaders.c b/firmware/l0dable/spaceinvaders.c index 0ba30c7..a7f62ec 100644 --- a/firmware/l0dable/spaceinvaders.c +++ b/firmware/l0dable/spaceinvaders.c @@ -77,6 +77,7 @@ void ram(void) { screen_intro(); game.rokets = 3; game.level = 1; + game.score = 0; init_game(); screen_level(); while (game.rokets>=0) { @@ -162,7 +163,6 @@ void init_game(void) { game.killed = 0; game.step = false; game.ufo = DISABLED; - game.score = 0; init_enemy(); for (int col=0; col