From 1d802033e7f66b7b43b036ce9bad06e408517c3b Mon Sep 17 00:00:00 2001 From: MsK` Date: Wed, 26 Dec 2018 12:45:00 +0100 Subject: [PATCH] Create README.md --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..d9b7faf --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# GB-GameOfLife +An implementation of Conway's Game of Life for the GameBoy + +# Project's Backstory +I started this as my first real programming written entirely in assembly. +I thought the gameboy was a good fit for that, with its not too complex +instruction set. I chose Conway's Game of Life because it's quite a +classic of CS exercises and I thought it would be simple enough to do. + +Boy, I was wrong. + +I know the gameboy is far from fast enough to update all pixels on +screen in between each frame. Who would have thought it would also +not be fast enough to just update its 20x18 tiles? That's only 360 +bytes! In the v-blank, the time between two frames are rendered by +the Picture Processing Unit or PPU, and where you have access to +Video RAM, there's barely enough time to write to a quarter of the +tilemap. And that's without reading from it! + +But there's hope: first, the gameboy has enough video ram to hold +two tilemaps, so we can double buffer. Second, the v-blank is not +the only time where you can write to Video RAM, you can also write +in between the PPU rendering lines! That requires synchronising code +with rendering but it should be doable.