Posts

The home computer is back: huge Update to my raspberry pi 4 bare metal, retro-like gaming console

Image
When I started programming, we were using what they used to call home computers, like the Commodore 64 or the Amiga 500. They were something in between personal computers and gaming consoles. I think they were a brilliant concept, but for some reason that concept has kind of faded out of existence. You could program them and you could play games with them. They were relatively simple in the way they worked compared to PCs and workstations and that was perfect for learning to program. And they could play very nice games too! My gaming console has officially become a modern home computer. I added to it an entire operating system in such a way that when you play a game you get the same performance you would get with bare metal software, and when you stop the game you get the full operating system environment.

Hardware Sprites

Image
Here you can see a crude demo of hardware sprites doing some parallax scrolling on the raspberry pi 4. I know, it's not impressive. But it's important. At the time I am writing this, the linux vc4 driver does not give you full access to hardware sprites as one can accomplish the same using alpha compositing with OpenGL ( and Vulkan ). However, hardware sprites are the least expensive path to do old style 2D games, both in terms of latency and of required computational resources. In simple terms, with this setting we can start creating amiga-like games on the PI, hopefully with way much higher performance.
Image
I started working on a gaming console based on the raspberry pi 4. All bare metal, there is no operating system. Purely old school. So far I have graphics with VSYNC, audio over HDMI and user input like you can see in the following video. Those are the key ingredients to be able to do games. Moreover, I get a very low latency, comparable to that of old consoles, which are much better than current generation consoles from that point of view. If I can get enough people interested I am going to do some crowdfunding to make this into a product. Stay tuned :-)