Create README.md
This commit is contained in:
24
README.md
Normal file
24
README.md
Normal file
@@ -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.
|
||||
Reference in New Issue
Block a user