diff --git a/apps/football/ChangeLog b/apps/football/ChangeLog new file mode 100644 index 000000000..9b91672a5 --- /dev/null +++ b/apps/football/ChangeLog @@ -0,0 +1 @@ +1.00: Initial implementation diff --git a/apps/football/README.md b/apps/football/README.md new file mode 100644 index 000000000..f751b927e --- /dev/null +++ b/apps/football/README.md @@ -0,0 +1,3 @@ +# Classic Football Chronometer Game + +Context: https://www.anaitgames.com/analisis/analisis-casio-football-14 diff --git a/apps/football/app-icon.js b/apps/football/app-icon.js new file mode 100644 index 000000000..7eec578c6 --- /dev/null +++ b/apps/football/app-icon.js @@ -0,0 +1 @@ +atob("MDABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAA/wAAAAAA/wAAAAAA/wAAAAAA/wAAAAAA/wAAAAAA/wAAAAAA/wAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAA//AAAAAA//AAAAAA//AAAAAA//AAAAAADw8AD/AADw8AD/AADw8AD/AADw8AD/AP/wAAD/AP/wAAD/AP/wAAD/AP/wAAD/AA8PAAAAAA8PAAAAAA8PAAAAAA8PAAAAAAAA8AAAAAAA8AAAAAAA8AAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") diff --git a/apps/football/app.js b/apps/football/app.js new file mode 100644 index 000000000..8350bea88 --- /dev/null +++ b/apps/football/app.js @@ -0,0 +1,440 @@ +const digit = []; + +const dash = { + width: 75, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AH4A/AH4A/AH4A/AH4A/AB0D/4AB+AJEBAX/BAk/CQ8PCQ4kDCQoIDCQgkDCQgkECQgIE4ASHFxH8JRgSEEgYSEPJAkEAH4A/AH4A/AH4A/AH4A/ACg=')) +}; +function loadDigits () { + digit[0] = { + width: 80, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AH4AGn//AAngBIMfBIvABIMPBIuABIMHBIoIBg0DBAn+gYSBgIJE/kHBIOABIn4h4JB4F/BIfwj4JB8BQEAoIJBBoJOEv4JBEIJOEIwMHGoIJDIIIJBJIJOEBIQOCJwYJDOIR9DBISFCSIYJCTISlDBIXwBIZoBBP4J/BP4J/BNX+gED//gBIc/BIMB//ABIcf/gDB/+ABIcP/AhCBAYuBFoU+BIkDFoUcBIkBFoUIBIkAFogA/AAZPJMZJ3JRZKfIWZLHJbZL5bBP4J/BP4J/BKPgBIc/BIfABIcfBIeA/4AB/EPBIcBBIX8AwIJB/0DBIQECBIIOCAAQYBBIIiCAAQsBBIPwGwIAC4F/BIPgJQIACAoIJBBoIJDDIIJBJwZQDBIJODKAcAgxODKAZxBJwgABPYROEKASFDAAiRCJwhQCTYYAkA')) + }; + + digit[1] = { + width: 80, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AH4A2wAIHgIJIgYJIg4JIh4JIj4JIn4JIv4JI/4JHgIJIgYJIg4JIh4JIj4JIn4J/BP4J/BP4Jqj//BA0Ah/+BI8H/gJHgf4BI8B+AJHgHgBJFABJAA/J55jIO5KLJT5KzJY5L5nBP4J/BP4J/AAcfBJEPBJEHBJEDBJEBBJEABJN/BJE/BJEfBJEPBJEHBJEDBJEBBJEABJIA/AAwA=')) + }; + + digit[2] = { + width: 80, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AH4AGj//AAnwBIMPBIvgBIMHBIvABIMDBIuABIMBBIsBGQQIE/0DBIV/BIf8g4JCn4JD/EPKA/wj4JCKAngn4JCKAnAv4JCKAmA/4JCKAgEBQYZOEBIgADFgIJHIAKlJBI5oBBP4J/BP4J/BOcfBJEP/wJHg/8Aof/AAP+gf4BAUBBIX/gPwBIUDBIeA8AiDBIfAoA2DBIYSDJQQACEwZeCAAQ6DgF/BJATJE5I7IghPFBIUOMYomDO4g6EwCLDJwgiDAAhyFTohKEToheEBP4J/BP4J/BOHwBJHgBJHAv////8BImABAP//wJEAIIACBIf+BImABIX8g4JD4AJC/EPBIZACgfwj4JDKgUD8E/BIZoCgZODKAkDJwZQEgcBBIhQCgROEKAhOEKAhOEKAhOEKAgAm')) + }; + + digit[3] = { + width: 80, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AH4AGj//AAnwBIMPBIvgBIMHBIvABIMDBIuABIMBBIsBGQQIE/0DBIV/BIf8g4JCn4JD/EPKA/wj4JCKAngn4JCKAnAv4JCKAmA/4JCKAgEBQYZOEBIgADFgIJHIAKlJBI5oBBI58BBP4J/BP4J/BL8/BJEf/wJHh/8BI8H/AFD/4AB/0D+AICgIJDgPgBIUDBIQ5B4AiDBIeAwA2DBIYSDJQIJDEwZeCAAQ6DOQQACJwgTJE5I7JJ5JjEgIUDO4kDFAgJC/kDIwipNj4JIn7HIbZL5TBP4J/BP4J/BJs/BJEfBJEPBIgjB//8g4JDgIIB//+gYJDAgIACBwIJCDAIACwAJDFgIAC4F/IAgAC8E/KggAC+EfIgoAB/EPBIQIDKAROFKAZOGKAROGKAQJI4BOGKAQJI+CfHAEAA==')) + }; + digit[4] = { + width: 80, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AH4AswEBBJOABAoHBgPABIsDBIPgBIsHBIPwBIsPBIP4BIsfBIP8BIs/BIP+BIt/BIP/BIv/BIRQEAwQCBKAkDBIZQEg4JDKAkPBIZQEj4JIn4J/BP4J/BP4JjgAJFj//AYN/8AJDh/+C4QJEg/8C4XAv////+gYjCh+ABAIABgPwC4Q9BAAWAEYUCgYJD4FAFgYJDIAoJDEwRUDAARoGAAROCCZYnJHZJPJMZAABO46hCRYwAFT4YAFWYYAFY4YAFbYYJ/BP4J/BP4Jnj4JIh4JIg4JIgYJIgIJIgAJJv4JIn4JIj4JIh4JIg4JIgYJIgIJIgAJJAH4AGA=')) + }; + + digit[5] = { + width: 80, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AGUP/4AE/gJBg4JF/AJBgYJF+AJBgIJF8AJBwAJF4AJB4F/BImABIPgn4JEIoXwj4ID/wJC/BQEJwUA/hQEJwUA/xQEJwUA/5QEJwQJBKAhOCBIJQEJwQJBKAiVDFggAEIAgJFKgYJFNAYJ/BP4J/BP4Jmv/8BI8//AJHj/wBI8P8E//4ABBIcH4F/BIWABIUDwAIC//ABIUBgIJD8AeDgYJDGwkHBIZKEh4JDLwkfBIZyECZInJHZJPFkChEMYdwUIh3DFAiLDgKvIgbDIJQKvIUIgJFUIZ8FBP4J/BP4J/BL8PBJEHBJEDBJEBBIl//4ABwAJEBAQHBv4JCDAIAC8E/BIQsBAAXwj4JCIAIAC/EPBIRUBAAX8g4JCNAIAC/0DBI//gIJCJwZQCBIQIEKANAJwpQCJwxQCJwxQCJwxQCBJYAwA=')) + }; + + digit[6] = { + width: 80, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AGU//4AE8AJBj4JF4AJBh4JFwAJBg4JFBAMGgYIE/wSCgIJE/gJCwAJE/AJC4F/BIfwBIXgKAhOCg/wKAhOCg/4KAhOD/hQEOwUH/xQDJwRiCKAZOCBIRQDJwQJCGwQAEBIJKCBIxeCBP4J/BP4J/BOED//gBI0B//ABI0A/+ABI9/CoIAB/gJDnwpBAAP+BIccHoIACBIcIh4JDFgkfBIZAEBIhUEv4JDNAgJE/ATNn4nIHZBPGKARjFgIUCO4sDFASLFg48COQsPKARyGUILHGn6hBBIJyGco4J/BP4J/BP4Jm8AJDn4JD4AJDj4JDwAJDh4JDgP/AAP8AwIJB/0DBIQECBIIOCAAQYBBIP4EQIACwAJC+A2BAAXAv4JB8BKBAAQFBBIINBBIYZBBIIhBAAYtBBIJODKAcAgxODKAZnBJwhQCOIYAEPoROEKASZDAAilCJwhQCTYYAuA==')) + }; + + digit[7] = { + width: 80, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AGUH/4AE/wJBgYJF/gJBgIJF+AeCBJN/BIngsAJBn4JE4HgBIMfBImBBIUPBIkDBIRQE/0HBIRQE/kPBIRQE/EfBIRQE+E/BIZQD8AJEKAfABYIJCKAYsBBIYADIAIJHKgIJHNAIJ/BP4J/BP4Jzg//4AJGgf/wAJGgP/BAwAB/wJIvgJInAJIiAJIAH5PPMZJ3JRZCfJWZLHJfM4J/BP4J/BP4JNg4JIgYJIgIJIgAJJv4JIn4JIj4JIh4JIeg4JIgYJIgIJIgAJJsAJIkAJIAH4AQA=')) + }; + + digit[8] = { + width: 80, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AGUf/4AE+AJBh4JF8AJBg4JF4AJBgYJFwAIBgIJFgOAgeABAn+A4MD4F/BIf8g4JB8E/BIf4h4JB+BQEAoIJBBoJOEn4JBEIJOEv4JBGoJOEAIIHBKAgEBBIRQDDAQJCKAYsCBISFCSIYJCTISlDBIX4BIZoBBP4J/BP4J/BNkB//wBIcf/4DB//gBIcP/wDBv/ABIcH/ghCwH/AAP+gYtCj4pBAAUBFoUOHoIACwAtCgkHBIfAoA2DBIZAEJQIACKgheBAARoGBKInJHZBPJMZJ3JRZKfJWZDHJfM4J/BP4J/BP4JP+AJDj4JD8AJDh4JD4AJDg4JDwH/AAP+AwQCBgIJCAgQJBBwQACDAIJB/giBAAXAv4JB/A2BAAXgn4JB+BKBAAQFBBIINBBIYZBBIIhBBIYtBBIJODKAYJBJwhQCwECJwhQCwBxCAAh9CJwhQCTIYAEUoROEKASbDAFwA=')) + }; + + digit[9] = { + width: 80, + height: 128, + bpp: 1, + buffer: require('heatshrink').decompress(atob('AGUP/4AE/gJBg4JF/AJBgYJF+AJBgIJF8AJBwAJF4FAgHAv4JEwHAgHgn4JEgIJB+EfBAf+gYJB/BQE/kHBIIDBJwkPBIIXBJwkfBIIrBJwk/BIRQEJYIJCKAgOBBIXgIwYiBBIR7CQ4YJCR4SbDBISjCV4YJC/wJDFYIJ/BP4J/BP4Jjv/8BIcP/+AgE//AJDg//C4XwBIcDEYUP8E//4ABgIjCg/Av4JCwAjCgeABAQ5BuAJBgMBBIfgkAsDBIY2EIAIACJQhUBAAReENAIACOQgTJE5I7JJ5KhBMYwABO44ABRY4AFT4YAFWYYAFY4YAFbYYJ/BP4J/BP4Jnh4JIg4JIgYJIgIJEv//AAOABIgICA4N/BIQYBAAXgn4JCFgIAC+EfBIRABAAX4h4JCKgIAC/kHBIRoBAAX+gYJCn4JD/8BBIRODKAQJCBAhQBoBOFKAROGKAROGKAROGKAQJLAGA=')) + }; +} + +// sprites + +const left0 = { + width: 8, + height: 10, + bpp: 1, + transparent: 0, + buffer: atob('ADAwEDgUcCgEAA==') +}; + +const left1 = { + width: 8, + height: 10, + bpp: 1, + transparent: 0, + buffer: atob('ADAwEDh0ECAoAA==') +}; + +const left2 = { + width: 8, + height: 10, + bpp: 1, + transparent: 0, + buffer: atob('ADAwEBg4EBg0AA==') +}; + +const left4 = { + width: 8, + height: 10, + bpp: 1, + transparent: 0, + buffer: atob('ABgYVDgQEChEAA==') +}; + +const right0 = { + width: 8, + height: 10, + bpp: 1, + transparent: 0, + buffer: atob('AAwMCBwoDhQgAA==') +}; + +const right1 = { + width: 8, + height: 10, + bpp: 1, + transparent: 0, + buffer: atob('AAwMCBwuCAQUAA==') +}; + +const right2 = { + width: 8, + height: 10, + bpp: 1, + transparent: 0, + buffer: atob('AAwMCBgcCBgsAA==') +}; + +const right4 = left4; + +const ball0 = { + width: 8, + height: 10, + bpp: 1, + transparent: 0, + buffer: atob('AAAAAAAwMAAAAA==') +}; + +const ball1 = { + width: 8, + height: 10, + bpp: 1, + transparent: 0, + buffer: atob('AAAAAAAAGBgAAA==') +}; +const gol01 = { + width: 8, + height: 10, + bpp: 1, + transparent: 0, + buffer: atob('ABhkhIS0sIAAAA==') +}; + +const gol11 = { + width: 8, + height: 10, + bpp: 1, + buffer: require('heatshrink').decompress(atob('gEYk0hkMthsBBAI=')) + +}; + +loadDigits(); + +let goalFrame = 0; +let score0 = 0; +let score1 = 0; + +function printNumber (n, x, y, options) { + if (n > 9 || n < -1) { + console.log(n); + return; // error + } + if (digit.length === 0) { + g.setColor(1, 1, 1); + if (options.scale == 0.2) { + g.setFont12x20(1); + } else { + g.setFont12x20(2.5); + } + g.drawString('' + n, x, y); + return; + } + const img = (n == -1) ? dash : digit[n]; + if (img) { + // g.setColor(0,0,0); + // g.fillRect(x,y,x+32*options.scale,64*options.scale); + g.setColor(1, 1, 1); + g.drawImage(img, x, y, options); + } +} +let inc = 0; +let msinc = 0; +let seq0 = 0; +let seq1 = 0; +let goaler = -1; +const w = g.getWidth(); +let owner = -1; +g.setBgColor(0, 0, 0); +g.clear(); +g.setColor(1, 1, 1); +function onStop () { + if (goalFrame > 0) { + return; + } + stopped = !stopped; + if (stopped) { + // Bangle.beep(); + if (msinc == 0) { + // GOOL + if (owner == 0) { + score0++; + goaler = 0; + } else if (owner == 1) { + score1++; + goaler = 1; + } + goalFrame = 5; + } + let newOwner = 0; + if (msinc % 2) { + newOwner = 1; + } else { + newOwner = 0; + } + if (newOwner) { + seq0--; + seq1++; + } else { + seq0++; + seq1--; + } + if (seq0 < 0) seq0 = 0; + if (seq0 > 3) seq0 = 3; + if (seq1 < 0) seq1 = 0; + if (seq1 > 3) seq1 = 3; + owner = newOwner; + } + refresh(); + refresh_ms(); +} +var stopped = true; +Bangle.on('tap', function (pos) { + console.log('touch', pos); + if (endGame) { + Bangle.beep(); + score0 = 0; + score1 = 0; + seq0 = 0; + seq1 = 0; + inc = 0; + msinc = 0; + stopped = true; + endGame = false; + } else { + if (inc == 0) { + autogame(); + } else { + onStop(); + } + } +}); +g.setFont12x20(3); +let part = 0; +let endInc = 0; +var endGame = false; +function refresh () { + g.clear(); + if (inc > 59) { + inc = 0; + part++; + } + if (inc > 44) { + if (part < 2) { + part++; + } + if (part >= 2) { + if (score0 != score1) { + endGame = true; + endInc = inc; + inc = 0; + } + } + // end of 1st or 2nd part of the game? + } + let two = (inc < 10) ? '0' + inc : '' + inc; + if (endGame) { + g.setColor(0, 0, 0); + g.fillRect(0, 64, w, h); + if (inc % 2) { + two = (endInc < 10) ? '0' + endInc : '' + endInc; + printNumber(-1, 2, 64 + 16, { scale: 0.4 }); + printNumber(part, 34, 64 + 16, { scale: 0.4 }); + printNumber(two[0], 74, 64 + 16, { scale: 0.4 }); + printNumber(two[1], 74 + 32, 64 + 16, { scale: 0.4 }); + } + } else { + // seconds + printNumber(0, 2, 64 + 16, { scale: 0.4 }); + printNumber(part, 34, 64 + 16, { scale: 0.4 }); + printNumber(two[0], 74, 64 + 16, { scale: 0.4 }); + printNumber(two[1], 74 + 32, 64 + 16, { scale: 0.4 }); + } + refresh_ms(); + refresh_score(); + refresh_pixels(); +} + +function refresh_pixels () { + let frame4 = inc % 2; + if (goalFrame > 0) { + frame4 = goalFrame % 2; + if (goaler == 0) { + g.drawImage(frame4 ? right4 : right0, 20, 10, { scale: 5 }); + g.setColor(1, 1, 1); + g.drawImage(gol11, w - 50, 10, { scale: 5 }); + } else if (goaler == 1) { + g.drawImage(frame4 ? left0 : left4, w - 50, 10, { scale: 5 }); + g.setColor(1, 1, 1); + g.drawImage(gol01, 30, 10, { scale: 5 }); + } + return; + } + if (endGame) { + if (score0 > score1) { + g.drawImage(frame4 ? right1 : right0, 5 + (seq0 * 10), 10, { scale: 5 }); + } else if (score0 < score1) { + g.drawImage(frame4 ? left0 : left1, w - 30 - (seq1 * 10), 10, { scale: 5 }); + } + return; + } + g.drawImage(frame4 ? right1 : right0, 5 + (seq0 * 10), 10, { scale: 5 }); + g.drawImage(frame4 ? left0 : left1, w - 30 - (seq1 * 10), 10, { scale: 5 }); + let bx = (owner == 0) ? w / 3 : w / 2; + bx += 2; + g.drawImage(frame4 ? ball0 : ball1, bx, 10, { scale: 5 }); +} +let dots = 0; +function refresh_dots () { + if (endGame) { + dots = 0; + } else { + dots++; + } + if (dots % 2) { + g.setColor(1, 1, 1); + } else { + g.setColor(0, 0, 0); + } + const x = 67; + let y = 100; + g.fillRect(x, y, x + 4, y + 4); + y += 16; + g.fillRect(x, y, x + 4, y + 4); +} + +const h = g.getHeight(); + +function refresh_ms () { + if (endGame) { + if (inc % 2) { + printNumber(-1, 80 + 64 - 4, 64 + 16 + 8 + 16, { scale: 0.2 }); + printNumber(-1, 80 + 64 + 16 - 4, 64 + 32 + 8, { scale: 0.2 }); + } + return; + } + // nanoseconds + if (msinc > 59) { + msinc = 0; + } + g.setColor(0, 0, 0); + g.fillRect(80 + 64, h / 2, 80 + 64 + 32, g.getHeight()); + const two = (msinc < 10) ? '0' + msinc : '' + msinc; + printNumber(two[0], 80 + 64 - 4, 64 + 16 + 8 + 16, { scale: 0.2 }); + printNumber(two[1], 80 + 64 + 16 - 4, 64 + 32 + 8, { scale: 0.2 }); +} + +function refresh_score () { + g.setColor(0, 0, 0); + g.fillRect(0, h - 32, w, h); + let two = (score0 < 10) ? '0' + score0 : '' + score0; + printNumber(two[0], 64 - 16, 32 + 64 + 16 + 8 + 16, { scale: 0.2 }); + printNumber(two[1], 64, 32 + 64 + 32 + 8, { scale: 0.2 }); + two = (score1 < 10) ? '0' + score1 : '' + score1; + printNumber(two[0], 32 + 64, 32 + 64 + 16 + 8 + 16, { scale: 0.2 }); + printNumber(two[1], 32 + 64 + 16, 32 + 64 + 32 + 8, { scale: 0.2 }); +} +refresh(); + +setInterval(function () { + if (!stopped || endGame) { + inc++; + } + if (goalFrame > 0) { + goalFrame--; + } + refresh(); +}, 1000); + +setInterval(function () { + refresh_dots(); +}, 500); + +setInterval(function () { + if (!stopped) { + msinc++; + if (msinc > 59) { + msinc = 0; + } + } +}, 10); + +setInterval(function () { + if (!stopped) { + refresh_ms(); + } +}, 250); + +function autogame () { + if (endGame) { + return; + } + onStop(); + if (stopped) { + setTimeout(autogame, 500); + } else { + setTimeout(autogame, 315 + 10 * (Math.random() * 5)); + } +} + +Bangle.setOptions({ lockTimeout: 0, backlightTimeout: 0 }); +autogame(); diff --git a/apps/football/app.png b/apps/football/app.png new file mode 100644 index 000000000..80d7cea15 Binary files /dev/null and b/apps/football/app.png differ diff --git a/apps/football/media/ball0.png b/apps/football/media/ball0.png new file mode 100644 index 000000000..5b890c180 Binary files /dev/null and b/apps/football/media/ball0.png differ diff --git a/apps/football/media/ball1.png b/apps/football/media/ball1.png new file mode 100644 index 000000000..c72e56189 Binary files /dev/null and b/apps/football/media/ball1.png differ diff --git a/apps/football/media/dash.png b/apps/football/media/dash.png new file mode 100644 index 000000000..6a9b0c4ac Binary files /dev/null and b/apps/football/media/dash.png differ diff --git a/apps/football/media/digit0.png b/apps/football/media/digit0.png new file mode 100644 index 000000000..33856cc5e Binary files /dev/null and b/apps/football/media/digit0.png differ diff --git a/apps/football/media/digit1.png b/apps/football/media/digit1.png new file mode 100644 index 000000000..53b914ded Binary files /dev/null and b/apps/football/media/digit1.png differ diff --git a/apps/football/media/digit2.png b/apps/football/media/digit2.png new file mode 100644 index 000000000..7a7787b05 Binary files /dev/null and b/apps/football/media/digit2.png differ diff --git a/apps/football/media/digit3.png b/apps/football/media/digit3.png new file mode 100644 index 000000000..a197d5993 Binary files /dev/null and b/apps/football/media/digit3.png differ diff --git a/apps/football/media/digit4.png b/apps/football/media/digit4.png new file mode 100644 index 000000000..f2810a0b6 Binary files /dev/null and b/apps/football/media/digit4.png differ diff --git a/apps/football/media/digit5.png b/apps/football/media/digit5.png new file mode 100644 index 000000000..d8027c362 Binary files /dev/null and b/apps/football/media/digit5.png differ diff --git a/apps/football/media/digit6.png b/apps/football/media/digit6.png new file mode 100644 index 000000000..bd7980045 Binary files /dev/null and b/apps/football/media/digit6.png differ diff --git a/apps/football/media/digit7.png b/apps/football/media/digit7.png new file mode 100644 index 000000000..9ef0df11a Binary files /dev/null and b/apps/football/media/digit7.png differ diff --git a/apps/football/media/digit8.png b/apps/football/media/digit8.png new file mode 100644 index 000000000..6916a301a Binary files /dev/null and b/apps/football/media/digit8.png differ diff --git a/apps/football/media/digit9.png b/apps/football/media/digit9.png new file mode 100644 index 000000000..d8d327523 Binary files /dev/null and b/apps/football/media/digit9.png differ diff --git a/apps/football/media/digits.png b/apps/football/media/digits.png new file mode 100644 index 000000000..68ace56af Binary files /dev/null and b/apps/football/media/digits.png differ diff --git a/apps/football/media/digits128.png b/apps/football/media/digits128.png new file mode 100644 index 000000000..f363a7e8e Binary files /dev/null and b/apps/football/media/digits128.png differ diff --git a/apps/football/media/digits64.png b/apps/football/media/digits64.png new file mode 100644 index 000000000..445c14dfa Binary files /dev/null and b/apps/football/media/digits64.png differ diff --git a/apps/football/media/gol00.png b/apps/football/media/gol00.png new file mode 100644 index 000000000..3b16aa967 Binary files /dev/null and b/apps/football/media/gol00.png differ diff --git a/apps/football/media/gol01.png b/apps/football/media/gol01.png new file mode 100644 index 000000000..3b16aa967 Binary files /dev/null and b/apps/football/media/gol01.png differ diff --git a/apps/football/media/gol10.png b/apps/football/media/gol10.png new file mode 100644 index 000000000..178b6fe3d Binary files /dev/null and b/apps/football/media/gol10.png differ diff --git a/apps/football/media/gol11.png b/apps/football/media/gol11.png new file mode 100644 index 000000000..732fa815d Binary files /dev/null and b/apps/football/media/gol11.png differ diff --git a/apps/football/media/left0.png b/apps/football/media/left0.png new file mode 100644 index 000000000..20599cbb7 Binary files /dev/null and b/apps/football/media/left0.png differ diff --git a/apps/football/media/left1.png b/apps/football/media/left1.png new file mode 100644 index 000000000..b6ffc22f9 Binary files /dev/null and b/apps/football/media/left1.png differ diff --git a/apps/football/media/left2.png b/apps/football/media/left2.png new file mode 100644 index 000000000..11ff8885f Binary files /dev/null and b/apps/football/media/left2.png differ diff --git a/apps/football/media/left4.png b/apps/football/media/left4.png new file mode 100644 index 000000000..a7301a4f8 Binary files /dev/null and b/apps/football/media/left4.png differ diff --git a/apps/football/media/right0.png b/apps/football/media/right0.png new file mode 100644 index 000000000..ac418ad7b Binary files /dev/null and b/apps/football/media/right0.png differ diff --git a/apps/football/media/right1.png b/apps/football/media/right1.png new file mode 100644 index 000000000..31554cbc3 Binary files /dev/null and b/apps/football/media/right1.png differ diff --git a/apps/football/media/right2.png b/apps/football/media/right2.png new file mode 100644 index 000000000..8c8d0ece4 Binary files /dev/null and b/apps/football/media/right2.png differ diff --git a/apps/football/media/right4.png b/apps/football/media/right4.png new file mode 100644 index 000000000..83a78b52c Binary files /dev/null and b/apps/football/media/right4.png differ diff --git a/apps/football/metadata.json b/apps/football/metadata.json new file mode 100644 index 000000000..253026c39 --- /dev/null +++ b/apps/football/metadata.json @@ -0,0 +1,31 @@ +{ + "id": "football", + "name": "football", + "shortName": "football", + "version": "1.00", + "type": "app", + "description": "Classic football game of the CASIO chronometer", + "icon": "app.png", + "allow_emulator": true, + "tags": "games", + "supports": [ + "BANGLEJS2" + ], + "readme": "README.md", + "storage": [ + { + "name": "football.app.js", + "url": "app.js" + }, + { + "name": "football.img", + "url": "app-icon.js", + "evaluate": true + } + ], + "screenshots": [ + { + "url": "screenshot.png" + } + ] +} diff --git a/apps/football/screenshot.png b/apps/football/screenshot.png new file mode 100644 index 000000000..5742fe9e1 Binary files /dev/null and b/apps/football/screenshot.png differ