diff options
| author | Melodi <62381002+Melodi17@users.noreply.github.com> | 2025-09-05 10:20:03 +1000 |
|---|---|---|
| committer | Melodi <62381002+Melodi17@users.noreply.github.com> | 2025-09-05 10:20:03 +1000 |
| commit | 9e8ba6e00dc4a4137a5187dbe5fe5b1394219735 (patch) | |
| tree | e5a54706a8a85243fdb0fe0f2ed73fb7b7566bcd /ROMs/life.c | |
| parent | 4ea967c6089bbcaba5d71145546d288e186fba40 (diff) | |
stuff
Diffstat (limited to 'ROMs/life.c')
| -rw-r--r-- | ROMs/life.c | 62 |
1 files changed, 62 insertions, 0 deletions
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 |
