From 89a3b0b4e0d6c592755bf91620ca22fe473f592f Mon Sep 17 00:00:00 2001 From: israelochoa Date: Thu, 3 Jul 2025 14:06:36 +0200 Subject: [PATCH 1/6] Adding the BrickBreaker game --- apps/bbreaker/ChangeLog | 3 + apps/bbreaker/README.md | 26 +++ apps/bbreaker/app-icon.js | 1 + apps/bbreaker/app.js | 313 ++++++++++++++++++++++++++++++++++++ apps/bbreaker/bbreaker.png | Bin 0 -> 1603 bytes apps/bbreaker/metadata.json | 16 ++ apps/bbreaker/playing.png | Bin 0 -> 2683 bytes 7 files changed, 359 insertions(+) create mode 100644 apps/bbreaker/ChangeLog create mode 100644 apps/bbreaker/README.md create mode 100644 apps/bbreaker/app-icon.js create mode 100644 apps/bbreaker/app.js create mode 100644 apps/bbreaker/bbreaker.png create mode 100644 apps/bbreaker/metadata.json create mode 100644 apps/bbreaker/playing.png diff --git a/apps/bbreaker/ChangeLog b/apps/bbreaker/ChangeLog new file mode 100644 index 000000000..4e6f77f17 --- /dev/null +++ b/apps/bbreaker/ChangeLog @@ -0,0 +1,3 @@ +0.01: It works somehow, early version for testers and feedback :) +0.02: Changed almost all code with Frederic version of Pong and adjusted to be a BrickBreaker!, still Alpha +0.03: Rewrote the whole thing to have less code and better graphics, now it works. \ No newline at end of file diff --git a/apps/bbreaker/README.md b/apps/bbreaker/README.md new file mode 100644 index 000000000..032bb87a8 --- /dev/null +++ b/apps/bbreaker/README.md @@ -0,0 +1,26 @@ +# BrickBreaker + +A simple BreakOut clone for the Banglejs + +![Screenshot](bbreaker.png) + +## Usage + +![Screenshot](playing.png) + +Buttons 1 and 3 to move the BrickBreaker! + +Button 2 to pause and start the game again. + +## Disclaimer + +This game was created to learn JS and how to interact with Banglejs, meaning that it may not be perfect :). + +Built with love with base on the tutorial: 2D breakout game using pure JavaScript +https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript + +Started on 2020 but rewrote all in 2025 and this is the version I got without having issues with Memory Exhaustion. + +## Creator + +Israel Ochoa \ No newline at end of file diff --git a/apps/bbreaker/app-icon.js b/apps/bbreaker/app-icon.js new file mode 100644 index 000000000..03637c126 --- /dev/null +++ b/apps/bbreaker/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABERESEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREREjMhEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERIzMzEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERESMzMzMhEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABERESMzMzMyEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAREREjMzMzMhEREAAAAAAAAAAAAAAAAAAAAAAAAAAAABERIzMzMzIREREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERIzMzMzIRERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREjMzMyEREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERIzMhEREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARETIREREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEREQAAAAAAAAAREREREREREREAAAEREREAAAAAAAAAEREQAAAAAAAAARERERERERERERAAERERERAAAAAAAAABEAAAAAAAAAABEREREREREREREAAREREREAAAAAAAAAAAAAAAAAAAAAERIiIiIiIiIhEQABESIhEQAAAAAAAAAAAAAAAAAAAAARIzMzMzMzMzIRAAESMzIRAAAAAAAAAAAAAAAAAAAAABEjMzMzMzMzMhEAARIzMhEAAAAAAAAAAAAAAAAAAAAAESMzMzMzMzMyEQABEjMyEQAAAAAAAAAAAAAAAAAAAAARIzMzMzMzMzIRAAESMzIRAAAAAAAAAAAAAAAAAAAAABEREREREREREREAAREREREAAAAAAAAAAAAAAAAAAAAAEREREREREREREQABEREREQAAAAAAAAAAAAAAAAAAAAARERERERERERERAAERERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEREREREREREREAARERERERERERERAAAAAAAAAAAAABEREREREREREREQAREREREREREREREAAAAAAAAAAAAAERERERERERERERABEREREREREREREQAAAAAAAAAAAAAREjMzMzMzMzMREAERIzMzMzMzMzERAAAAAAAAAAAAABESMzMzMzMzMxEQAREjMzMzMzMzMREAAAAAAAAAAAAAERIzMzMzMzMzERABESMzMzMzMzMxEQAAAAAAAAAAAAAREjMzMzMzMzMREAERIzMzMzMzMzERAAAAAAAAAAAAABESIiIiIiIiIhEQAREiIiIiIiIiIREAAAAAAAAAAAAAERERERERERERERABEREREREREREREQAAAAAAAAAAAAABEREREREREREREAERERERERERERERAAAAAAAAAAAAAAAREREREREREREAABERERERERERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERERERERERAAABEREREREREREQAAAREREQAAAAAAEREREREREREREQABEREREREREREREAAREREREAAAAAARERERERERERERAAEREREREREREREQABEREREQAAAAABESIiIiIiIiIREAAREiIiIiIiIiERAAERIiERAAAAAAESMzMzMzMzMyEQABEjMzMzMzMzMhEAARIzIREAAAAAARIzMzMzMzMzIRAAESMzMzMzMzMyEQABEjMhEQAAAAABEjMzMzMzMzMhEAARIzMzMzMzMzIRAAESMyERAAAAAAESMzMzMzMzMyEQABEjMzMzMzMzMhEAARIzIREAAAAAARERERERERERERAAEREREREREREREQABEREREQAAAAABEREREREREREREAARERERERERERERAAERERERAAAAAAEREREREREREREQABEREREREREREREAARERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")) \ No newline at end of file diff --git a/apps/bbreaker/app.js b/apps/bbreaker/app.js new file mode 100644 index 000000000..6ff36d63d --- /dev/null +++ b/apps/bbreaker/app.js @@ -0,0 +1,313 @@ +(function () { + const BALL_RADIUS = 3; + const PADDLE_WIDTH = 26; + const PADDLE_HEIGHT = 6; + const BRICK_ROWS = 4; + const BRICK_HEIGHT = 8; + const BRICK_PADDING = 4; + const BRICK_OFFSET_TOP = 40; + const BRICK_OFFSET_LEFT = 2; + const SPEED_MULTIPLIER = 1.1; + const PADDLE_SPEED = 12; + + let ball, paddle, interval; + let bricks = []; + let BRICK_WIDTH, BRICK_COLS; + let paddleIntervalLeft, paddleIntervalRight; + let score = 0; + let level = 1; + let highScore = 0; + let paused = false; + let gameOver = false; + let lives = 3; + + const storage = require("Storage"); + const BEEP = () => Bangle.buzz(100); + + function loadHighScore() { + const saved = storage.readJSON("breakout_highscore.json", 1); + highScore = saved && saved.highScore ? saved.highScore : 0; + } + + function saveHighScore() { + if (score > highScore) { + highScore = score; + storage.writeJSON("breakout_highscore.json", { highScore }); + } + } + + function initBricks() { + bricks = []; // Reset the array completely + for (let r = 0; r < BRICK_ROWS; r++) { + for (let c = 0; c < BRICK_COLS; c++) { + let brickX = BRICK_OFFSET_LEFT + c * (BRICK_WIDTH + BRICK_PADDING); + let brickY = BRICK_OFFSET_TOP + r * (BRICK_HEIGHT + BRICK_PADDING); + bricks.push({ x: brickX, y: brickY, status: 1 }); + } + } + } + + function showGetReady(callback) { + g.clear(); + g.setFont("6x8", 2); + g.setFontAlign(0, 0); + g.setColor(1, 1, 0); + g.drawString("GET READY!", g.getWidth() / 2, g.getHeight() / 2); + g.flip(); + setTimeout(callback, 1500); // wait 1.5 seconds then start + } + + function initGame() { + const screenWidth = g.getWidth(); + BRICK_COLS = Math.min(5, Math.floor((screenWidth - BRICK_OFFSET_LEFT + BRICK_PADDING) / (15 + BRICK_PADDING))); + BRICK_WIDTH = Math.floor((screenWidth - BRICK_OFFSET_LEFT - (BRICK_COLS - 1) * BRICK_PADDING) / BRICK_COLS); + + ball = { + x: screenWidth / 2, + y: g.getHeight() - 20, + dx: 3, + dy: -3, + radius: BALL_RADIUS + }; + + paddle = { + x: screenWidth / 2 - PADDLE_WIDTH / 2, + y: g.getHeight() - 10, + width: PADDLE_WIDTH, + height: PADDLE_HEIGHT + }; + lives = 3; + score = 0; + level = 1; + gameOver = false; + paused = false; + loadHighScore(); + initBricks(); + } + + function drawLives() { + const heartSize = 6; + const spacing = 2; + const startX = g.getWidth() - (lives * (heartSize + spacing)) - 2; + const y = 12; + + g.setColor(1, 0, 0); // red + + for (let i = 0; i < lives; i++) { + const x = startX + i * (heartSize + spacing); + g.fillPoly([ + x + 3, y, + x + 6, y + 3, + x + 3, y + 6, + x, y + 3 + ], true); + } + } + + function drawBricks() { + g.setColor(0, 1, 0); + for (let i = 0; i < bricks.length; i++) { + let b = bricks[i]; + if (b.status) { + g.fillRect(b.x, b.y, b.x + BRICK_WIDTH, b.y + BRICK_HEIGHT); + } + } + } + + function drawBall() { + g.setColor(1, 1, 1); + g.fillCircle(ball.x, ball.y, ball.radius); + g.setColor(0.7, 0.7, 0.7); + g.fillCircle(ball.x - 0.5, ball.y - 0.5, ball.radius - 1); + } + + function drawPaddle() { + g.setColor(0,1, 1); + g.fillRect(paddle.x, paddle.y, paddle.x + paddle.width, paddle.y + paddle.height); + } + + function drawHUD() { + g.setColor(1, 1, 1); + g.setFont("6x8", 1); + g.setFontAlign(-1, -1); + g.drawString("Score: " + score, 2, 2); + g.setFontAlign(0, -1); + g.drawString("High: " + highScore, g.getWidth() / 2, 2); + g.setFontAlign(1, -1); + g.drawString("Lvl: " + level, g.getWidth() - 2, 2); + drawLives(); + if (paused) { + g.setFontAlign(0, 0); + g.drawString("PAUSED", g.getWidth() / 2, g.getHeight() / 2); + } + } + + function draw() { + g.clear(); + drawBricks(); + drawBall(); + drawPaddle(); + drawHUD(); + g.flip(); + } + + function showGameOver() { + g.clear(); + g.setFont("6x8", 2); + g.setFontAlign(0, 0); + g.setColor(1, 0, 0); + g.drawString("GAME OVER", g.getWidth() / 2, g.getHeight() / 2 - 20); + g.setFont("6x8", 1); + g.setColor(1, 1, 1); + g.drawString("Score: " + score, g.getWidth() / 2, g.getHeight() / 2); + g.drawString("High: " + highScore, g.getWidth() / 2, g.getHeight() / 2 + 12); + g.drawString("BTN2 = Restart", g.getWidth() / 2, g.getHeight() / 2 + 28); + g.flip(); + } + + function collisionDetection() { + for (let i = 0; i < bricks.length; i++) { + let b = bricks[i]; + if (b.status) { + if ( + ball.x + ball.radius > b.x && + ball.x - ball.radius < b.x + BRICK_WIDTH && + ball.y + ball.radius > b.y && + ball.y - ball.radius < b.y + BRICK_HEIGHT + ) { + ball.dy = -ball.dy; + b.status = 0; + score += 10; + break; + } + } + } + } + + + function allBricksCleared() { + for (let i = 0; i < bricks.length; i++) { + if (bricks[i].status !== 0) return false; + } + return true; + } + + function update() { + if (paused || gameOver) return; + + ball.x += ball.dx; + ball.y += ball.dy; + + if (ball.x + ball.radius > g.getWidth() || ball.x - ball.radius < 0) { + ball.dx = -ball.dx; + } + if (ball.y - ball.radius < 0) { + ball.dy = -ball.dy; + } + + if ( + ball.y + ball.radius >= paddle.y && + ball.x >= paddle.x && + ball.x <= paddle.x + paddle.width + ) { + ball.dy = -ball.dy; + ball.y = paddle.y - ball.radius; + } + + if (ball.y + ball.radius > g.getHeight()) { + lives--; + if (lives > 0) { + // Reset ball and paddle only + ball.x = g.getWidth() / 2; + ball.y = g.getHeight() - 30; + ball.dx = 3; + ball.dy = -3; + paddle.x = g.getWidth() / 2 - PADDLE_WIDTH / 2; + paddle.y = g.getHeight() - 20; + draw(); + return; + } else { + clearInterval(interval); + interval = undefined; + if (paddleIntervalLeft) { + clearInterval(paddleIntervalLeft); + paddleIntervalLeft = null; + } + if (paddleIntervalRight) { + clearInterval(paddleIntervalRight); + paddleIntervalRight = null; + } + saveHighScore(); + gameOver = true; + draw(); + setTimeout(showGameOver, 50); + return; + } + } + + collisionDetection(); + + if (allBricksCleared()) { + ball.dx *= SPEED_MULTIPLIER; + ball.dy *= SPEED_MULTIPLIER; + level++; + initBricks(); + } + + draw(); + } + + function movePaddle(x) { + if (gameOver || paused) return; // prevent paddle movement when not needed + paddle.x += x; + if (paddle.x < 0) paddle.x = 0; + if (paddle.x + paddle.width > g.getWidth()) { + paddle.x = g.getWidth() - paddle.width; + } + } + + function startGame() { + initGame(); + draw(); + showGetReady(() => { + interval = setInterval(update, 80); + }); + } + + setWatch(() => { + if (gameOver) { + startGame(); + } else { + paused = !paused; + draw(); + } + }, BTN2, { repeat: true, edge: "rising" }); + + setWatch(() => { + if (!paddleIntervalLeft) { + paddleIntervalLeft = setInterval(() => movePaddle(-PADDLE_SPEED), 50); + } + }, BTN1, { repeat: true, edge: "rising" }); + + setWatch(() => { + if (paddleIntervalLeft) { + clearInterval(paddleIntervalLeft); + paddleIntervalLeft = null; + } + }, BTN1, { repeat: true, edge: "falling" }); + + setWatch(() => { + if (!paddleIntervalRight) { + paddleIntervalRight = setInterval(() => movePaddle(PADDLE_SPEED), 50); + } + }, BTN3, { repeat: true, edge: "rising" }); + + setWatch(() => { + if (paddleIntervalRight) { + clearInterval(paddleIntervalRight); + paddleIntervalRight = null; + } + }, BTN3, { repeat: true, edge: "falling" }); + + startGame(); +})(); \ No newline at end of file diff --git a/apps/bbreaker/bbreaker.png b/apps/bbreaker/bbreaker.png new file mode 100644 index 0000000000000000000000000000000000000000..eb8be32afc1c1da1bb2517d7a936545692bd3b91 GIT binary patch literal 1603 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 Date: Thu, 3 Jul 2025 14:32:31 +0200 Subject: [PATCH 2/6] Ficing bbreaker image file --- apps/bbreaker/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bbreaker/app-icon.js b/apps/bbreaker/app-icon.js index 03637c126..c60adb55b 100644 --- a/apps/bbreaker/app-icon.js +++ b/apps/bbreaker/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABERESEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREREjMhEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERIzMzEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERESMzMzMhEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABERESMzMzMyEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAREREjMzMzMhEREAAAAAAAAAAAAAAAAAAAAAAAAAAAABERIzMzMzIREREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERIzMzMzIRERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREjMzMyEREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERIzMhEREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARETIREREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEREQAAAAAAAAAREREREREREREAAAEREREAAAAAAAAAEREQAAAAAAAAARERERERERERERAAERERERAAAAAAAAABEAAAAAAAAAABEREREREREREREAAREREREAAAAAAAAAAAAAAAAAAAAAERIiIiIiIiIhEQABESIhEQAAAAAAAAAAAAAAAAAAAAARIzMzMzMzMzIRAAESMzIRAAAAAAAAAAAAAAAAAAAAABEjMzMzMzMzMhEAARIzMhEAAAAAAAAAAAAAAAAAAAAAESMzMzMzMzMyEQABEjMyEQAAAAAAAAAAAAAAAAAAAAARIzMzMzMzMzIRAAESMzIRAAAAAAAAAAAAAAAAAAAAABEREREREREREREAAREREREAAAAAAAAAAAAAAAAAAAAAEREREREREREREQABEREREQAAAAAAAAAAAAAAAAAAAAARERERERERERERAAERERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEREREREREREREAARERERERERERERAAAAAAAAAAAAABEREREREREREREQAREREREREREREREAAAAAAAAAAAAAERERERERERERERABEREREREREREREQAAAAAAAAAAAAAREjMzMzMzMzMREAERIzMzMzMzMzERAAAAAAAAAAAAABESMzMzMzMzMxEQAREjMzMzMzMzMREAAAAAAAAAAAAAERIzMzMzMzMzERABESMzMzMzMzMxEQAAAAAAAAAAAAAREjMzMzMzMzMREAERIzMzMzMzMzERAAAAAAAAAAAAABESIiIiIiIiIhEQAREiIiIiIiIiIREAAAAAAAAAAAAAERERERERERERERABEREREREREREREQAAAAAAAAAAAAABEREREREREREREAERERERERERERERAAAAAAAAAAAAAAAREREREREREREAABERERERERERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERERERERERAAABEREREREREREQAAAREREQAAAAAAEREREREREREREQABEREREREREREREAAREREREAAAAAARERERERERERERAAEREREREREREREQABEREREQAAAAABESIiIiIiIiIREAAREiIiIiIiIiERAAERIiERAAAAAAESMzMzMzMzMyEQABEjMzMzMzMzMhEAARIzIREAAAAAARIzMzMzMzMzIRAAESMzMzMzMzMyEQABEjMhEQAAAAABEjMzMzMzMzMhEAARIzMzMzMzMzIRAAESMyERAAAAAAESMzMzMzMzMyEQABEjMzMzMzMzMhEAARIzIREAAAAAARERERERERERERAAEREREREREREREQABEREREQAAAAABEREREREREREREAARERERERERERERAAERERERAAAAAAEREREREREREREQABEREREREREREREAARERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")) \ No newline at end of file +atob("QECCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABVAAAAAAAAAAAAAAAAAAAFVQAAAAAAAAAAAAAAAAAAFVVAAAAAAAAAAAAAAAAAAVWlUAAAAAAAAAAAAAAAABVW+VAAAAAAAAAAAAAAAAFVb/1UAAAAAAAAAAAAAAAFVv/+VAAAAAAAAAAAAAAAVVv//lUAAAAAAAAAAAAABVW//+VUAAAAAAAAAAAAAAVb//5VUAAAAAAAAAAAAAAFb//5VQAAAAAAAAAAAAAABW//lVAAAAAAAAAAAAAAAAFb+VVAAAAAAAAAAAAAAAABV5VUAAAAAAAAAAAAAAAAAFVVQAAAAAAAAAAAAAAAAAAVVAAAABVVVVVUAFVUAAAAFVAAAABVVVVVVQFVVQAAAAUAAAAAVVVVVVUBVVUAAAAAAAAAAFqqqqqVAWqVAAAAAAAAAABb////5QFv5QAAAAAAAAAAW////+UBb+UAAAAAAAAAAFv////lAW/lAAAAAAAAAABb////5QFv5QAAAAAAAAAAVVVVVVUBVVUAAAAAAAAAAFVVVVVVAVVVAAAAAAAAAABVVVVVVQFVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVVUBVVVVVVQAAAAAAVVVVVVVBVVVVVVUAAAAAAFVVVVVVQVVVVVVVAAAAAABW////9UFb////1QAAAAAAVv////VBW////9UAAAAAAFb////1QVv////VAAAAAABW////9UFb////1QAAAAAAVqqqqqVBWqqqqpUAAAAAAFVVVVVVQVVVVVVVAAAAAAAVVVVVVUFVVVVVVQAAAAAABVVVVVUAVVVVVVQAAAAAAAAAAAAAAAAAAAAAAAAFVVVVVQAVVVVVVABVVAAAFVVVVVVAVVVVVVUBVVUAABVVVVVVQFVVVVVVAVVVAAAWqqqqpUBaqqqqlQFqlQAAFv////lAW////+UBb5UAABb////5QFv////lAW+VAAAW////+UBb////5QFvlQAAFv////lAW////+UBb5UAABVVVVVVQFVVVVVVAVVVAAAVVVVVVUBVVVVVVQFVVQAAFVVVVVVAVVVVVVUBVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") \ No newline at end of file From 59fe43719e9e833d0c932b876a8ffe4401893a09 Mon Sep 17 00:00:00 2001 From: israelochoa Date: Thu, 3 Jul 2025 14:36:48 +0200 Subject: [PATCH 3/6] Fixing bbreaker image file --- apps/bbreaker/bbreaker.png | Bin 1603 -> 2074 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/bbreaker/bbreaker.png b/apps/bbreaker/bbreaker.png index eb8be32afc1c1da1bb2517d7a936545692bd3b91..d32d7209984c7d0b57bcf6d9615da5b79109f761 100644 GIT binary patch literal 2074 zcmV+#2<7*QP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007 zbV*G`2k8d`3?mr%)rCg@00&-4L_t(&-tCxMY*g13hQGDXnHi5Sz!)6IMv1uvD5cOU zB_&lFC&56$)RkhJ23jeKqE?EOs(tBG)IOx?OI0apo2Ej2Y4egMHbf=ZHHIqb#Zf}i zwA^D%0S62w27DQNW;|!kUVX5kHXeIsAa;n#dKqcXI{WN@@3sDatp&I3w%xYdcH3^k z+d@3A*q|K!ay0F(3PtLw|u z%J)UIO_gm5Anws}^a5?Cd-1ITc))ox z@_6P$C@`dRPRxP zwC;ZO(*b}o2pj~y9tpc{)$&qGibAN4&{fJRM=uQU)`=ee(bOs$+J169@q@)ld!uf#&J3lzbuEX85Uyi9jLWGwD`C&LO zxVL%tt3$Vp4pddwJ}t=e;eg{lQ?;1RD{&eQcGI8mP#6T-RQR#L2mAIk`nOyyv|+=e z`5G`y3J-+?4$Z&KejeCbWJUMwfCt?BanXs2RdM^RH|dGs=Nj)o5bg#y?-82 z{7HpO)E>adGbl@~mFFGDKhwHrSLPE{Qvq7;8gcF@2;fTQY9(cr?jaAWI@@=&+^C6z z-erWj#o++?uDRZ)444|gzUG|?;Kdt_&9Ye`o?Kf&QOM2c+aLG%<=;-xpGb}SzaZ#P z|HX2aloU?t<4#9nDG+iD^JnKVI~>U9Ul?+5%*4Xj72(dJ5O+tyT$#*gx*0;IjcTS3 zfC$hR_jvbI4+X)@pBNlYk?{NpTTY}b2haA>JD9lMN2U#cDoF&r6!X||;Cxm*DuB6G z8;Yk&3cZFEW2P%!E_xb;v zO027?6|wTLD9-_TIesf8%FC_IjW1Shsaqw=3qXWiOK)X2@a(?kMw@d8ITi!DO_BQ* zuvvcEjAph9q1E+Iy(F=oI-pX)T&q0OvueV92tmv?0Ek?0V9E%rctZPf_a5}^`6qqa~T20 zF|_=rk86#^sM^h+lgHX6CFBP(&K9^7P4MdjT~~|BPe=z8RBj^4bleYFxPCH1CNfgL zob8Ke4j_S^!DQP1qr*Pu`r_odnQx$XXc#9=VR%CT91-5>?4|u;G%Fg5CVfkViDzYO7jT*bi2|+3mU8PDB z;NHL*Nn>U8XiM1wEY$Hn251Iq_BD+R6WsrCyAhyRM2Un0W@Tw%R)xmpp(O2>V)#~r zh%G=(1k@=AI%Z{QA;By}YS^><`@#T8UtQnPh*6UO4Z23m@{$4~`2j9QhiUJLA;R1# z%W12yXl_1F++Q(rsToe~a92NP-tHu3{c+h^S{P*em+xX$79Ck%EJ;V}36e2y9PJkb z9kzVFlx26$;=q|J9QpVRLCHeMTqEQM9ZVJtd0xPf&dtck8U?}39G~=@v?YlF@&Y4k zOjd5VlL?g($qZoBZ}K(B>JW^9$=uA?y=WEyjKHz(C@<`5&n^dI9&yi32(5E{34Z(5 z$?S3z)SPSiN<(qD4Sqt_3Q{p?z;Obg!$~Heh`3 zM?lF9R4JW7KXxJ!o~!O~>?gqT>*_%tBQ0qK?z3wD1p~Vmn^7IE0RR9107*qoM6N<$ Eg0@V;5C8xG literal 1603 zcmV-J2E6%+P)zUIirMBC!URhKXri`T zG`f-fA<42#lTFPsmzgcw{@Ah~f4JzfY&x>(R$!T0(1MI?G8M(e;E#zDgBTGN>JY5Z z_MQD9Wu>$aN^dFA_xbOgd+zt1dvbew?>i6B(9qD((9qD(crc-Gh#GTE`H+y_qtN#1 zGRw7aj3ElWNU`i(^AjZT7tB};24vza02u&SH zlEz|-F%5B1eG4H42FJz_;|v=?uYjCo=2XSa9|16X+sDVqSe>4NjA;oVBG~@Ej&F`$ z_B1=(tjw$`D{T@GvrvY-2^x)SV_|S?RNTB7K(xnh&`HRhm4p>@lMyZJ`uww}Pk`xS(!Kx3rY4L*!P8SPYhql$ zzIKNbe_U(>5rLTjfFwmR0XQNgazXe_K&II|R(2>~F=Gw9_KEmtJzje15oDz$LL&d$ zhtsXVdbSm%r&@5=rS#buxGfQt2#!Bw{3bx}KmnN6_B~64oEb?lJ(-MHL*PYId-)cM zjyI$AcDJ{giBSZ-{%zadJy(TAE(rg#VO;Wld~0zk=BJDcDAH_qU}tSJ>RUQ|n~o9l zdRtk^u}}jI7kFqF7IwVAZ*vWquwnq|6#y#7>%eN zgtGHi?jX=Q07!W#8lNnijdQJ?*j3w%Ci|U!zD(E;=Jl1&!5Sk^TF z7zY54CX7K-`yF4mdQxbEt=v)-rWnJ@phw{)d8Ri3eCnsE9YpUtJ8x{OuC8|ZY4uudMI++I(N>AfZwgTIv(X-j#z^6>s)7hP(&p6s&@n$pe6%2`^_ZU6lv`#3+E6 z$pe54!UkVs$O&L3IaCc_WMTsV5V2@&gRep8IbiL=DOfst;;{M_{&WgB8;U=msh`&6A{x=AS{tC>|8RfPE04u_^2h=7*UIATWXj@ztM=QirLe&Du zMTF8L7K;M_oCfy?2B*%U2sjK8(4$EFedsaXXZXDfEXg$$GO>`iz!LDM&04a{GhU<$ zBNC{CT*_w$50+K%`OK0}eN~<8WhpSOy-og%L>#L-B%wD_#Vp9ZX@wkI#Sv z$SfZM5cnNZa4 Date: Thu, 3 Jul 2025 14:39:04 +0200 Subject: [PATCH 4/6] Hope I fix the image this time --- apps/bbreaker/app-icon.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/bbreaker/app-icon.js b/apps/bbreaker/app-icon.js index c60adb55b..1d30cdc28 100644 --- a/apps/bbreaker/app-icon.js +++ b/apps/bbreaker/app-icon.js @@ -1 +1,5 @@ -atob("QECCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABVAAAAAAAAAAAAAAAAAAAFVQAAAAAAAAAAAAAAAAAAFVVAAAAAAAAAAAAAAAAAAVWlUAAAAAAAAAAAAAAAABVW+VAAAAAAAAAAAAAAAAFVb/1UAAAAAAAAAAAAAAAFVv/+VAAAAAAAAAAAAAAAVVv//lUAAAAAAAAAAAAABVW//+VUAAAAAAAAAAAAAAVb//5VUAAAAAAAAAAAAAAFb//5VQAAAAAAAAAAAAAABW//lVAAAAAAAAAAAAAAAAFb+VVAAAAAAAAAAAAAAAABV5VUAAAAAAAAAAAAAAAAAFVVQAAAAAAAAAAAAAAAAAAVVAAAABVVVVVUAFVUAAAAFVAAAABVVVVVVQFVVQAAAAUAAAAAVVVVVVUBVVUAAAAAAAAAAFqqqqqVAWqVAAAAAAAAAABb////5QFv5QAAAAAAAAAAW////+UBb+UAAAAAAAAAAFv////lAW/lAAAAAAAAAABb////5QFv5QAAAAAAAAAAVVVVVVUBVVUAAAAAAAAAAFVVVVVVAVVVAAAAAAAAAABVVVVVVQFVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVVUBVVVVVVQAAAAAAVVVVVVVBVVVVVVUAAAAAAFVVVVVVQVVVVVVVAAAAAABW////9UFb////1QAAAAAAVv////VBW////9UAAAAAAFb////1QVv////VAAAAAABW////9UFb////1QAAAAAAVqqqqqVBWqqqqpUAAAAAAFVVVVVVQVVVVVVVAAAAAAAVVVVVVUFVVVVVVQAAAAAABVVVVVUAVVVVVVQAAAAAAAAAAAAAAAAAAAAAAAAFVVVVVQAVVVVVVABVVAAAFVVVVVVAVVVVVVUBVVUAABVVVVVVQFVVVVVVAVVVAAAWqqqqpUBaqqqqlQFqlQAAFv////lAW////+UBb5UAABb////5QFv////lAW+VAAAW////+UBb////5QFvlQAAFv////lAW////+UBb5UAABVVVVVVQFVVVVVVAVVVAAAVVVVVVUBVVVVVVQFVVQAAFVVVVVVAVVVVVVUBVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") \ No newline at end of file +{ + width : 48, height : 48, bpp : 2, + transparent : 0, + buffer : atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAFUAAAAAAAAAAAAAAAAAAAVVAAAAAAAAAAAAAAAAAAAVVUAAAAAAAAAAAAAAAAABVaVQAAAAAAAAAAAAAAAAFVb5UAAAAAAAAAAAAAAAAVVv/VQAAAAAAAAAAAAAAAVW//5UAAAAAAAAAAAAAABVW//+VQAAAAAAAAAAAAAFVb//5VQAAAAAAAAAAAAABVv//lVQAAAAAAAAAAAAAAVv//lVAAAAAAAAAAAAAAAFb/+VUAAAAAAAAAAAAAAAAVv5VUAAAAAAAAAAAAAAAAFXlVQAAAAAAAAAAAAAAAAAVVVAAAAAAAAAAAAAAAAAABVUAAAAFVVVVVQAVVQAAAAVUAAAAFVVVVVVAVVVAAAABQAAAABVVVVVVQFVVQAAAAAAAAAAWqqqqpUBapUAAAAAAAAAAFv////lAW/lAAAAAAAAAABb////5QFv5QAAAAAAAAAAW////+UBb+UAAAAAAAAAAFv////lAW/lAAAAAAAAAABVVVVVVQFVVQAAAAAAAAAAVVVVVVUBVVUAAAAAAAAAAFVVVVVVAVVVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVVVVQFVVVVVVAAAAAABVVVVVVUFVVVVVVQAAAAAAVVVVVVVBVVVVVVUAAAAAAFb////1QVv////VAAAAAABW////9UFb////1QAAAAAAVv////VBW////9UAAAAAAFb////1QVv////VAAAAAABWqqqqpUFaqqqqlQAAAAAAVVVVVVVBVVVVVVUAAAAAABVVVVVVQVVVVVVVAAAAAAAFVVVVVQBVVVVVVAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVVABVVVVVUAFVUAAAVVVVVVUBVVVVVVQFVVQAAFVVVVVVAVVVVVVUBVVUAABaqqqqlQFqqqqqVAWqVAAAW////+UBb////5QFvlQAAFv////lAW////+UBb5UAABb////5QFv////lAW+VAAAW////+UBb////5QFvlQAAFVVVVVVAVVVVVVUBVVUAABVVVVVVQFVVVVVVAVVVAAAVVVVVVUBVVVVVVQFVVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") +} \ No newline at end of file From 3bed4a9e1065e14fb6711c8bb529a9ca5921f537 Mon Sep 17 00:00:00 2001 From: IsReal8a Date: Thu, 3 Jul 2025 14:42:19 +0200 Subject: [PATCH 5/6] Now for sure! fixing the image --- apps/bbreaker/app-icon.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/bbreaker/app-icon.js b/apps/bbreaker/app-icon.js index 1d30cdc28..8e74af7ba 100644 --- a/apps/bbreaker/app-icon.js +++ b/apps/bbreaker/app-icon.js @@ -1,5 +1 @@ -{ - width : 48, height : 48, bpp : 2, - transparent : 0, - buffer : atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAFUAAAAAAAAAAAAAAAAAAAVVAAAAAAAAAAAAAAAAAAAVVUAAAAAAAAAAAAAAAAABVaVQAAAAAAAAAAAAAAAAFVb5UAAAAAAAAAAAAAAAAVVv/VQAAAAAAAAAAAAAAAVW//5UAAAAAAAAAAAAAABVW//+VQAAAAAAAAAAAAAFVb//5VQAAAAAAAAAAAAABVv//lVQAAAAAAAAAAAAAAVv//lVAAAAAAAAAAAAAAAFb/+VUAAAAAAAAAAAAAAAAVv5VUAAAAAAAAAAAAAAAAFXlVQAAAAAAAAAAAAAAAAAVVVAAAAAAAAAAAAAAAAAABVUAAAAFVVVVVQAVVQAAAAVUAAAAFVVVVVVAVVVAAAABQAAAABVVVVVVQFVVQAAAAAAAAAAWqqqqpUBapUAAAAAAAAAAFv////lAW/lAAAAAAAAAABb////5QFv5QAAAAAAAAAAW////+UBb+UAAAAAAAAAAFv////lAW/lAAAAAAAAAABVVVVVVQFVVQAAAAAAAAAAVVVVVVUBVVUAAAAAAAAAAFVVVVVVAVVVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVVVVQFVVVVVVAAAAAABVVVVVVUFVVVVVVQAAAAAAVVVVVVVBVVVVVVUAAAAAAFb////1QVv////VAAAAAABW////9UFb////1QAAAAAAVv////VBW////9UAAAAAAFb////1QVv////VAAAAAABWqqqqpUFaqqqqlQAAAAAAVVVVVVVBVVVVVVUAAAAAABVVVVVVQVVVVVVVAAAAAAAFVVVVVQBVVVVVVAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVVABVVVVVUAFVUAAAVVVVVVUBVVVVVVQFVVQAAFVVVVVVAVVVVVVUBVVUAABaqqqqlQFqqqqqVAWqVAAAW////+UBb////5QFvlQAAFv////lAW////+UBb5UAABb////5QFv////lAW+VAAAW////+UBb////5QFvlQAAFVVVVVVAVVVVVVUBVVUAABVVVVVVQFVVVVVVAVVVAAAVVVVVVUBVVVVVVQFVVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") -} \ No newline at end of file +atob("MDCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAAAAAAAAAAAVQAAAAAAAAAAAAAFWUAAAAAAAAAAAABVuUAAAAAAAAAAAAVa/lAAAAAAAAAAABWv/lQAAAAAAAAAAVb/+VAAAAAAAAAABW//lUAAAAAAAAAABX/6VAAAAAAAAAAAAW/lUAAAAAAAAAAAAFpVAAAAAAAAAAAAAFVQAAAAAAAAAAAAABUAAAFVVVVQVVQAAAQAAAFVVVVQVVQAAAAAAAFv//5QW5QAAAAAAAG///9QW9QAAAAAAAG///9QW9QAAAAAAAFqqqpQWpQAAAAAAAFVVVVQVVQAAAAAAAFVVVVQVVQAAAAAAAAAAAAAAAAAAAABVVVVQFVVVVQAAAAFVVVVUVVVVVQAAAAFqqqqUWqqqpQAAAAFv//+UW///9QAAAAFv//+UW///9QAAAAFv//+UWv//5QAAAAFVVVVUVVVVVQAAAABVVVVUFVVVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVVUFVVVVQVVQABaqqqUFqqqpQWpQABv//+UF///9QW5QABv//+UG///9QW5QABv//+UG///9QW5QABaqqqUFqqqpQWlQABVVVVUFVVVVQVVQAAVVVVABVVVVABUAAAAAAAAAAAAAAAAAA==") \ No newline at end of file From 43e851c82df4f5471f3266766365679dd9c9589a Mon Sep 17 00:00:00 2001 From: IsReal8a Date: Thu, 3 Jul 2025 14:45:01 +0200 Subject: [PATCH 6/6] Commenting BEEP as I don't need it right now --- apps/bbreaker/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bbreaker/app.js b/apps/bbreaker/app.js index 6ff36d63d..5a5e65e17 100644 --- a/apps/bbreaker/app.js +++ b/apps/bbreaker/app.js @@ -22,7 +22,7 @@ let lives = 3; const storage = require("Storage"); - const BEEP = () => Bangle.buzz(100); + //const BEEP = () => Bangle.buzz(100); function loadHighScore() { const saved = storage.readJSON("breakout_highscore.json", 1);