From 4105c50e9802d8c48c457ca327cac871345d9402 Mon Sep 17 00:00:00 2001 From: zanostro Date: Wed, 22 Oct 2025 18:46:30 +0200 Subject: [PATCH] added zoge --- .gitignore | 23 +++++++++ zoge/zoge.asm | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 .gitignore create mode 100644 zoge/zoge.asm diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dbda62e --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# === Windows junk === +*.Zone.Identifier + +# === VS Code settings === +.vscode/ +.code-workspace + +# === MacOS junk (if ever used) === +.DS_Store + +# === Linux trash (optional) === +*.swp +*~ + +# === Node modules (if applicable) === +node_modules/ + +# === Python cache (if applicable) === +__pycache__/ +*.pyc + +autotester +sictools.jar diff --git a/zoge/zoge.asm b/zoge/zoge.asm new file mode 100644 index 0000000..16c1881 --- /dev/null +++ b/zoge/zoge.asm @@ -0,0 +1,137 @@ +. code +bounce START 0 + + LDA NUM_B + MUL D_SIZE + STA MAXIDX + + +LOOP LDX INDEX + + LDA ballX,X + COMP maxX + JEQ X_WALL . hits right wall + + COMP ZERO + JEQ X_WALL . hits left wall + +cmpY LDA ballY,X + COMP maxY + JEQ Y_WALL . hits bottom + + COMP ZERO + JEQ Y_WALL . hits top + +endCOMP LDA bColour,X + STA colour + + LDA ballX,X + LDB ballY,X + LDT HEIGHT + MULR T, B .flatten + ADDR B, A + + STX INDEX + RMO A, X . copy flattened old coordinates to X + + LDCH BLACK . clear screen + +STCH SCREEN,X + LDX INDEX + + LDA ballX,X .//calculae new X + LDT bSpeedX,X + ADDR T, A + STA ballX,X + + LDB ballY,X . calculate new Y + LDT bSpeedY, X + ADDR T, B + STB ballY,X + + LDT HEIGHT + MULR T, B . flatten + ADDR B, A + + STX INDEX + RMO A, X . copy flattened old coordinates to X + + LDA colour + +STCH SCREEN,X . update screen + LDX INDEX + + . reset + LDA #3 + ADDR A,X + STX INDEX + + LDA MAXIDX + COMPR X,A + JLT LOOP . while X < A -> keep looping balls + + LDX #0 . wrap + STX INDEX + J LOOP + + +halt J halt + + END bounce + +. functions +X_WALL LDB bSpeedX,X + LDT MINUS1 + MULR B, T + STT bSpeedX,X + J cmpY + +Y_WALL LDB bSpeedY,X + LDT MINUS1 + MULR B, T + STT bSpeedY,X + J endCOMP + + +. data +ZERO WORD 0 +MINUS1 WORD -1 + +D_SIZE WORD 3 +INDEX WORD 0 +MAXIDX RESW 1 + +NUM_B WORD 3 + +colour RESW 1 + +. ball data +ballX WORD 60 + WORD 32 + WORD 32 + +ballY WORD 32 + WORD 32 + WORD 32 + +bSpeedX WORD 1 + WORD 0 + WORD 1 + +bSpeedY WORD 1 + WORD 1 + WORD 0 + +bColour WORD 195 . blue + WORD 204 . green + WORD 240 . red + +maxX WORD 63 +maxY WORD 63 +WIDTH WORD 64 +HEIGHT WORD 64 + +. colors +BLACK BYTE 0 + +. screen + ORG 0xA000 +SCREEN RESB 4096