From 9e8ba6e00dc4a4137a5187dbe5fe5b1394219735 Mon Sep 17 00:00:00 2001 From: Melodi <62381002+Melodi17@users.noreply.github.com> Date: Fri, 5 Sep 2025 10:20:03 +1000 Subject: stuff --- ROMs/life.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 ROMs/life.c (limited to 'ROMs/life.c') diff --git a/ROMs/life.c b/ROMs/life.c new file mode 100644 index 0000000..f35f9d0 --- /dev/null +++ b/ROMs/life.c @@ -0,0 +1,62 @@ +#include "std.c" +#include "hid.c" +#include "screen.c" + +#define GRID_SIZE 64 +#define GRID_BYTES 8 +#define GRID_WIDTH 8 +#define GRID_HEIGHT 8 + +char getState(char* grid, int index) +{ + int byteIndex = index / 8; + int bitIndex = index % 8; + int byte = grid[byteIndex]; + + return ((byte >> bitIndex) & 1) != 0; +} + +int setState(char* grid, int index, int state) +{ + int byteIndex = index / 8; + int bitIndex = index % 8; + int byte = grid[byteIndex]; + + if (state) + byte |= (1 << bitIndex); + else + byte &= ~(1 << bitIndex); + + grid[byteIndex] = byte; +} + +int drawGrid(char* grid) +{ + screen_clear(COLOR_BLACK); + + for (int y = 0; y < GRID_HEIGHT; y++) + { + for (int x = 0; x < GRID_WIDTH; x++) + { + int index = (y * GRID_WIDTH) + x; + if (getState(grid, index)) + screen_setPixel(x, y, COLOR_WHITE); + } + } +} + +int main() +{ + char* grid = new char[GRID_BYTES]; + + // clear memory + for (int i = 0; i < GRID_BYTES; i++) + grid[i] = 0; + + // turn on pixel at (0,0) + setState(grid, 0, 1); + + drawGrid(grid); + + while (1) { } +} \ No newline at end of file -- cgit v1.3.1