From 6eca09e9178c445f1dd4e6adff4bc65bbb926d09 Mon Sep 17 00:00:00 2001 From: abhinavgolwalkar Date: Thu, 19 Nov 2020 20:02:27 +0000 Subject: [PATCH] app added --- apps.json | 27 +++++++- apps/supmariodark/ChangeLog | 1 + apps/supmariodark/README.md | 39 +++++++++++ apps/supmariodark/banner-down.js | 1 + apps/supmariodark/banner-up.js | 1 + apps/supmariodark/brick2.js | 1 + apps/supmariodark/enemy.js | 1 + apps/supmariodark/flower.js | 1 + apps/supmariodark/flower_b.js | 1 + apps/supmariodark/mario_wh.js | 1 + apps/supmariodark/pipe.js | 1 + apps/supmariodark/supmario30x24.bin.js | 1 + apps/supmariodark/supmario30x24.wdt.js | 1 + apps/supmariodark/supmariodark-icon.js | 1 + apps/supmariodark/supmariodark.js | 90 +++++++++++++++++++++++++ apps/supmariodark/supmariodark.png | Bin 0 -> 6833 bytes 16 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 apps/supmariodark/ChangeLog create mode 100644 apps/supmariodark/README.md create mode 100644 apps/supmariodark/banner-down.js create mode 100644 apps/supmariodark/banner-up.js create mode 100644 apps/supmariodark/brick2.js create mode 100644 apps/supmariodark/enemy.js create mode 100644 apps/supmariodark/flower.js create mode 100644 apps/supmariodark/flower_b.js create mode 100644 apps/supmariodark/mario_wh.js create mode 100644 apps/supmariodark/pipe.js create mode 100644 apps/supmariodark/supmario30x24.bin.js create mode 100644 apps/supmariodark/supmario30x24.wdt.js create mode 100644 apps/supmariodark/supmariodark-icon.js create mode 100644 apps/supmariodark/supmariodark.js create mode 100644 apps/supmariodark/supmariodark.png diff --git a/apps.json b/apps.json index 4846ca199..2d8701cc8 100644 --- a/apps.json +++ b/apps.json @@ -2407,5 +2407,28 @@ {"name":"tilthydro.app.js","url":"app.js"}, {"name":"tilthydro.img","url":"app-icon.js","evaluate":true} ] -} -] +}, +{ "id": "supmariodark", + "name": "Super mario clock night mode", + "shortName":"supmariodark", + "icon": "supmariodark.png", + "version":"0.01", + "description": "Super mario clock in night mode", + "tags": "clock", + "type" : "clock", + "storage": [ + {"name":"supmariodark.app.js","url":"supmariodark.js"}, + {"name":"supmariodark.img","url":"supmariodark-icon.js","evaluate":true}, + {"name":"supmario30x24.bin","url":"supmario30x24.bin.js"}, + {"name":"supmario30x24.wdt","url":"supmario30x24.wdt.js"}, + {"name":"banner-up.img","url":"banner-up.js","evaluate":true}, + {"name":"banner-down.img","url":"banner-down.js","evaluate":true}, + {"name":"brick2.img","url":"brick2.js","evaluate":true}, + {"name":"enemy.img","url":"enemy.js","evaluate":true}, + {"name":"flower.img","url":"flower.js","evaluate":true}, + {"name":"flower_b.img","url":"flower_b.js","evaluate":true}, + {"name":"mario_wh.img","url":"mario_wh.js","evaluate":true}, + {"name":"pipe.img","url":"pipe.js","evaluate":true} + ] + } +] \ No newline at end of file diff --git a/apps/supmariodark/ChangeLog b/apps/supmariodark/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/supmariodark/ChangeLog @@ -0,0 +1 @@ +0.01: New App! diff --git a/apps/supmariodark/README.md b/apps/supmariodark/README.md new file mode 100644 index 000000000..cef9f2124 --- /dev/null +++ b/apps/supmariodark/README.md @@ -0,0 +1,39 @@ +# Notifications (default) + +A handler for displaying notifications that displays them in a bar at the top of the screen + +This is not an app, but instead it is a library that can be used by +other applications or widgets to display messages. + +## Usage + +```JS +options = { + on : bool, // turn screen on, default true + size : int, // height of notification, default 80 (max) + title : string, // optional title + id // optional notification ID, used with hide() + src : string, // optional source name + body : string, // optional body text + icon : string, // optional icon (image string) + render function(area) {} // function callback to render in area{x,y,w,h} +}; +// eg... show notification +require("notify").show({title:"Test", body:"Hello"}); +// or display lots of text, with a phone icon +require("notify").show({ + title:"Hello", + src:"Test", + body:"This is a really really really long bit of text that has to be wrapped", + icon:require("heatshrink").decompress(atob("jEYxH+ACcejwUUAAYWVjESCqoABCqoYNCpQXLCxgXJQowtTA4ZbSZiwW/C4gWWjAXVZwIuVWhxFIC6z6OLpIXSCywXYDAIWVAAYXTA==")) +}); +// remove it (can also be removed by tapping) +require("notify").hide(); + +// Use ID to only hide a specific notification if it is still visible +require("notify").show({id:1, title:"Test", body:"Some Alert"}); +require("notify").show({id:"msg", title:"Message", body:"Incoming Message"}); // replaces Test Alert +require("notify").hide({id:1}); // does nothing, because the Test Alert was already replaced +require("notify").hide({id:"msg"}); // hides Message +require("notify").hide(); // hides current notification, whatever it was +``` diff --git a/apps/supmariodark/banner-down.js b/apps/supmariodark/banner-down.js new file mode 100644 index 000000000..9073e6b78 --- /dev/null +++ b/apps/supmariodark/banner-down.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("5EYxH+rVa/2KxX+6/X/wA/AH4A2XIS/CYoLH/AH4A/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y/5P/AH7H/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y87I/AH7G4Y5jWDAH4A/Y+wDBY5IIBa4TJ/AH7F0WoS+DY4jQDCQgA/ACZyLAH5fVXobGDAILRDNP7H/LvC8DYgbJCBYbJDAH4A/AGS5FYYbLDBwgA/ACpwLAH5hXYQgFGJv7H/L/TAFA4gIFAH4A/AGi7CXo4KDAH4AXNxIA/MC5jJMv7H/MP4AD")); \ No newline at end of file diff --git a/apps/supmariodark/banner-up.js b/apps/supmariodark/banner-up.js new file mode 100644 index 000000000..2442ceff5 --- /dev/null +++ b/apps/supmariodark/banner-up.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("5EYxH+AAsvAH4AYMAxh/MMRj/Y/4A/MZDUNAH4A/AF69IA4tkAH4AWNw5H/L7TAFAohN/Y/5h9YQjGHOA4A/AH4AtZA7LEYovXAH4AUOA5H/LrC8DYgTGCBQRn/Y/5f7XobHEaIZyLAH4A/AFK1EXwbHGCIZT/AH7J3AYLHKa4YA/AH7H2XALHMKH4A/ZHLH/AH4A/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y/7H/AH7H/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y8oA=")); \ No newline at end of file diff --git a/apps/supmariodark/brick2.js b/apps/supmariodark/brick2.js new file mode 100644 index 000000000..66b66ce88 --- /dev/null +++ b/apps/supmariodark/brick2.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("hsLxH+y3XAAkAA4YDBywAEgAHDAggMRFAIMJAIIABGZJFDIDIpCCZArCBoYMHIQIdCFgsAA=")); \ No newline at end of file diff --git a/apps/supmariodark/enemy.js b/apps/supmariodark/enemy.js new file mode 100644 index 000000000..6384afeb9 --- /dev/null +++ b/apps/supmariodark/enemy.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("iEQxH+AAucAAQKGBw4QKBwoQIBw4QGAoMrBosrBQQdE6AQElfQEIgPEAAgPEDIYPBBQQEEAAvQAAIEGACIwFAAhxIBwoABRwpYCB5ZqFAAYGBB5AQDAoQgJAwgND")); \ No newline at end of file diff --git a/apps/supmariodark/flower.js b/apps/supmariodark/flower.js new file mode 100644 index 000000000..75c5b834a --- /dev/null +++ b/apps/supmariodark/flower.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("iEQxH+AAfXAAwMEBpARGAoXHAAwQDBom6AAgRFB5wvPJ6BvQAAkSiQIIBIgFHAwIQFAgwFCAgQFEBI4GFFAo0HB5gIEAApuKBg4=")); \ No newline at end of file diff --git a/apps/supmariodark/flower_b.js b/apps/supmariodark/flower_b.js new file mode 100644 index 000000000..d79f04e33 --- /dev/null +++ b/apps/supmariodark/flower_b.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("iEQxH+AAfHAAwMEBpARGAoV4AAwQDBom6AAgRFB5wvPJ6BvQAAkSiQKJB5IEDBIIFFBQ4ECAogJHAwoCEGgwPOFYxjNDY/+A")); \ No newline at end of file diff --git a/apps/supmariodark/mario_wh.js b/apps/supmariodark/mario_wh.js new file mode 100644 index 000000000..c8a52eafa --- /dev/null +++ b/apps/supmariodark/mario_wh.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("iEgxH+AAvPAAYLGBo3P44OOB5wyJ3QABDgICCEAwMFCYYRFBhAQFFggPDEAwbGIgQACJo4QHL4w9JQAogFV5G654rDAgIOHB44+HB5BfGB5IQCBIYPFEAgJIAowJFAAoPI44NDAgILDRIYfHUw4PL/wPNN4IOJCAbNDABQOIA5z1EB6qxEc4wHSWIoPHAA4PJA==")); \ No newline at end of file diff --git a/apps/supmariodark/pipe.js b/apps/supmariodark/pipe.js new file mode 100644 index 000000000..da1f1a1f3 --- /dev/null +++ b/apps/supmariodark/pipe.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("iUgxH+xQAG64AGBAOKmANBmAACCwwOECKAALCIn+EAYAL/xaBGxIiFCP4R/CP4R/CP4R/CP4RTA=")); \ No newline at end of file diff --git a/apps/supmariodark/supmario30x24.bin.js b/apps/supmariodark/supmario30x24.bin.js new file mode 100644 index 000000000..218041c14 --- /dev/null +++ b/apps/supmariodark/supmario30x24.bin.js @@ -0,0 +1 @@ +atob("A/4AA/4AA/4AH//AH//AH//A4AH44AH44AH44AA44AA44AA4/AA4/AA4/AA4H//AH//AH//AA/4AA/4AA/4AAAAAAAA4AAA4AAA4HAA4HAA4HAA4///4///4///4///4///4///4AAA4AAA4AAA4AAA4AAA4AAA4AAAAHAH4HAH4HAH4/A/4/A/4/A/44H/44H/44H/44H444H444H444/444/444/44//A4//A4//A4H4A4H4A4H4A4AAAAAAHAAAHAAAHA4AH44AH44AH44HA44HA44HA44/A44/A44/A4//A4//A4//A4/H/4/H/4/H/44A/A4A/A4A/AAAAAAH4AAH4AAH4AA/4AA/4AA/4AH44AH44AH44A/A4A/A4A/A4A///4///4///4///4///4///4AA4AAA4AAA4AAAAA/4HA/4HA/4HA/4H4/4H4/4H444A444A444A444A444A444A444A444A444A44//44//44//4AH/AAH/AAH/AAAAAA//AA//AA//AH//4H//4H//4/HA4/HA4/HA44HA44HA44HA44HA44HA44HA44H/44H/44H/4AA/AAA/AAA/AAAAA/AAA/AAA/AAA/AAA/AAA/AAA4A/44A/44A/44H/44H/44H/44/AA4/AA4/AA/4AA/4AA/4AA/AAA/AAA/AAAAAAAH4/AH4/AH4/A//A4//A4//A44/A44/A44/A44HA44HA44HA44HA44HA44HA4H4/4H4/4H4/4AA/AAA/AAA/AAAAAH4AAH4AAH4AA//A4//A4//A44HA44HA44HA44HA44HA44HA44HH44HH44HH4///A///A///AH/4AH/4AH/4AAAAAPw/APw/APw/APw/APw/APw/APw/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AA/4AA/4A//4A//4A//4//4A//4A//4A//4A//4A//4AA//4A//4A//4AA/4AA/4AA/4AAAA///4///4///4///4///4///44HA44HA44HA44HA44HA44HA4///4///4///4H4/AH4/AH4/AAAAAA/4AA/4AA/4AH//AH//AH//A/AH4/AH4/AH44AA44AA44AA44AA44AA44AA44AA44AA44AA4AAAA///4///4///4///4///4///44AA44AA44AA4/AH4/AH4/AH4H//AH//AH//AA/4AA/4AA/4AAAAA///4///4///4///4///4///44HA44HA44HA44HA44HA44HA44AA44AA44AA4AAAA///4///4///4///4///4///44HAA4HAA4HAA4HAA4HAA4HAA4AAA4AAA4AAAAAAAA/4AA/4AA/4AH//AH//AH//A/AH4/AH4/AH44HA44HA44HA44HA44HA44HA44H/44H/44H/44H/44H/44H/4AAAA///4///4///4///4///4///4AHAAAHAAAHAAAHAAAHAAAHAA///4///4///4///4///4///4AAAA///4///4///4///4///4///4AAAAAAA4AAA4AAA4AAA4AAA4AAA4AAA4AAA4AAA4///4///4///4///A///A///AAAAA///4///4///4///4///4///4A/4AA/4AA/4AH4/AH4/AH4/A/AH4/AH4/AH44AA44AA44AA4AAAA///4///4///4///4///4///4AAA4AAA4AAA4AAA4AAA4AAA4AAAA///4///4///4///4///4///4//4A//4A//4AA//4A//4A//4A//4A//4A//4//4A//4A//4A///4///4///4///4///4///4AAAA///4///4///4///4///4///4//AA//AA//AAA//AA//AA//A///4///4///4///4///4///4AAAAA/4AA/4AA/4AH//AH//AH//A/AH4/AH4/AH44AA44AA44AA44AA44AA44AA4/AH4/AH4/AH4H//AH//AH//AA/4AA/4AA/4AAAAA///4///4///4///4///4///44HAA4HAA4HAA4HAA4HAA4HAA//AA//AA//AAH4AAH4AAH4AAAAAAA/4AA/4AA/4AH//AH//AH//A/AH4/AH4/AH44AA44AA44AA44AA44AA44AA4/AH//AH//AH/H//HH//HH//HA/4HA/4HA/4HAAAA///4///4///4///4///4///44HAA4HAA4HAA4H4A4H4A4H4A///4///4///4H4H4H4H4H4H4AAAAH4A4H4A4H4A4//A4//A4//A44HA44HA44HA44HA44HA44HA44H/44H/44H/44A/A4A/A4A/AAAAA4AAA4AAA4AAA4AAA4AAA4AAA///4///4///4///4///4///44AAA4AAA4AAA4AAA4AAA4AAAAAAA///A///A///A///4///4///4AAA4AAA4AAA4AAA4AAA4AAA4///4///4///4///A///A///AAAAA/4AA/4AA/4AA//4A//4A//4AAH/4AH/4AH/4AH/4AH/4AH/4//4A//4A//4A/4AA/4AA/4AAAAAA/AAA/AAA/AAA//4A//4A//4AA//4A//4A//4A//4A//4A//4//4A//4A//4A//4A//4A//4AA//4A//4A//4A//4A//4A//4//4A//4A//4A/AAA/AAA/AAA/AH4/AH4/AH4/4/4/4/4/4/4A/4AA/4AA/4AA/4AA/4AA/4A/4/4/4/4/4/4/AH4/AH4/AH4AAAA/AAA/AAA/AAA/4AA/4AA/4AAA//4A//4A//4A//4A//4A//4/4AA/4AA/4AA/AAA/AAA/AAAAAAA4A/44A/44A/44H/44H/44H/44/A44/A44/A4/4A4/4A4/4A4/AA4/AA4/AA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); \ No newline at end of file diff --git a/apps/supmariodark/supmario30x24.wdt.js b/apps/supmariodark/supmario30x24.wdt.js new file mode 100644 index 000000000..81aa0682b --- /dev/null +++ b/apps/supmariodark/supmario30x24.wdt.js @@ -0,0 +1 @@ +atob("FhMWFhYWFhYWFggQEBAQEBATExMTEBAWEwcQEw0ZExkTGRMTExMTHhMTEBAQEBAQ"); \ No newline at end of file diff --git a/apps/supmariodark/supmariodark-icon.js b/apps/supmariodark/supmariodark-icon.js new file mode 100644 index 000000000..3d52111e5 --- /dev/null +++ b/apps/supmariodark/supmariodark-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwgGDgeAmALCCQ0IgYeIn/4wYbBxETEIc4xAABBgIAFgf///4gE43eYBIUIxOZAAOYHQ2YC4u7wAEBCwYABGAsDx/5C4MwhO5xO4FomP/GJC4s4CoIBBxGJ3OY3eICwWIHgP5KIQAC3AWB/+P/+JL4OLIYY8BzIXFIwIUBAAWIC4W4OYX/z+Zz+YmYYDCwn/3AXG/OfGAOYzIXI/G4zeYzZ2BzC+CAAOZ3IXD34XD/eILoO5OgJ/CPYYXJTgKQBxKLBF4jAGC4gMBKgIDCKYIWBDwLxFC4m4BwIrBPIJHBEQQwCC4amFIQQICxgECJA7vBLwQOBMIIDB/P+C4IHB/AXBwDYEFwTmB/JIBz/4C4Q3BYwQXFKoLjB3OfUIIgB/3Ix+I5YIBxBfDgEwWgW/3OPF4O//f/9A6B95gBmEzDIk4UAQXBRwJlBAAI7BxB0BhDgBC4pCBI4IVBDoP5TYeYgZ9CC4cBLQQRDdoQXD/c4ToQXBgYABC4OYFAgXGUAQXCMwQXCboYXG3YDC5AuBNARgCDAe4BQIFC/ZSDYAM4xGb3AXCXgX/z4XBGAO734iDxeDhGL3e4mZIBMIeJUgWJLQI0DAoTdBxB4CJAYTBGAQABQgn4YYIjBBQIABxwVBxK2BPQScFOYIIB3YXCzHMLQOJCoOPzO4C4KVCmcQF4OLzHICIOO5nI/4dBCIRGCGwODdgKnBIwIrBxHIC4OP/eZVQQWBwczgYWBgEwnGYxgXCDgPIxGfYIYWBCgQADGAIXBxisBLYKYCBQOIiYWGC4IvDzY+BSgZ9BFo4ABhZHEAAaJCxAXL5hzBCoQEEC5U7CIIABCwQdDze5wAXI3ImDCoQXCxO5zEwOxCGDAAZlBJARGJnCJCABIWIgCEBC5QuJC4RIHCxgXBGAc5GgmDOhBfDc4WDhA0DmYVKC4eJxEwhA0CIhYADmcziCsBGgIcBC5w1GCx4=")) \ No newline at end of file diff --git a/apps/supmariodark/supmariodark.js b/apps/supmariodark/supmariodark.js new file mode 100644 index 000000000..ae3b976b2 --- /dev/null +++ b/apps/supmariodark/supmariodark.js @@ -0,0 +1,90 @@ +// place your const, vars, functions or classes here +var s=require("Storage"); +let stid; +let hour = -1; +let minute = -1; +const resetFace = ()=>{ + Bangle.setLCDMode(); + g.setClipRect(0,24,239,239) + g.clear(); +}; +const readImage =(img) =>{ + return (s.read(img)); +}; +const drawFace = ()=>{ + resetFace(); + g.drawImages([ + {image:readImage("pipe.img"),x:180,y:160,scale:2}, + {image:readImage("flower_b.img"),x:180,y:128,scale:2}, + {image:readImage("mario_wh.img"),x:100,y:132,scale:2}, + {image:readImage("enemy.img"),x:20,y:165,scale:2}, + ]).drawImages([ + {image:readImage("brick2.img"),x:0,y:196,repeat:true,scale:2} + ]); + drawBanner(); +}; + +const resetTimer =()=>{ + if (stid) { + clearInterval(stid); + stid = undefined; + } +} +const startTimer =() =>{ + hour = -1; + minute = -1; + stid = setInterval(onHalfSecond,500); +} +const drawBanner = (h) =>{ + if(h == undefined) h=24; + g.drawImages([ + {image:readImage("banner-up.img"),x:g.getWidth()/2-100,y:50}, + {image:readImage("banner-down.img"),x:g.getWidth()/2-100,y:(50+24+h)} + ]) +}; + +const updateTimeBanner = (h,m)=>{ + m = (m<10?'0':'')+m; + h = (h<10?'0':'')+h; + bx1=g.getWidth()/2-90; + by1=50+10; + bx2=g.getWidth()/2+90; + by2=50+62; + + g.setFontCustom(eval(s.read("supmario30x24.bin")), 48, eval(s.read("supmario30x24.wdt")), 24); + g.setClipRect(bx1,by1,bx2,by2).clearRect(bx1,by1,bx2,by2); + g.drawString(h,bx1+35,75).drawString(":",g.getWidth()/2,75).drawString(m,bx1+110,75).flip(); +}; +let om = 0; +const onHalfSecond =()=>{ + var d = new Date(); + var sec = d.getSeconds(); + hour = d.getHours(); + minute = d.getMinutes(); + if(minute>om)updateTimeBanner(hour,minute); + let im, pos; + if(sec%2 == 0){im = "flower_b.img";pos = 20;} + else{im = "flower.img";pos = 25;} + g.setClipRect(180,128,180+32,128+32).clearRect(180,128,180+32,128+32).drawImage(readImage(im),180,128,{scale:2}); + g.setClipRect(20,165,25+32,165+32).clearRect(20,165,25+32,165+32).drawImage(readImage("enemy.img"),pos,165,{scale:2}); + om = minute; +}; + + +Bangle.on('lcdPower', (on) => { + resetTimer(); + if (on) { + om=-1; + startTimer(); + drawFace(); + } + else { + resetTimer(); + } +}); +resetTimer(); +Bangle.loadWidgets(); +Bangle.drawWidgets(); +drawFace(); +startTimer(); +setWatch(Bangle.showLauncher, BTN2, {repeat:false,edge:"falling"}); \ No newline at end of file diff --git a/apps/supmariodark/supmariodark.png b/apps/supmariodark/supmariodark.png new file mode 100644 index 0000000000000000000000000000000000000000..272ae3f289d6c719bf3ae54d5a442b102dec10b7 GIT binary patch literal 6833 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 literal 0 HcmV?d00001