-
Initial OS Options
12/01/2020 at 21:09 • 0 commentsIf the system is going to boot from a cart, like the systems of old, it's going to need to boot an operating system. I've started looking at some, and have a few options I'd like to start with. I'd develop a simple and flexible OS that game developers can customize and install their games into. It would help get developers on board if they didn't have to worry much about the OS and could just install their games and go. A final version, installed on the cart, would have the GUI and all extras stripped away, and load the game immediately upon boot. Ideally, the OS would be custom built for each game, but that might be way too much work, especially if the Pi 400 has plenty of system resources to run a lightweight OS and a game. Considering the Pi 4 can run a full OS and games just fine, that should be no problem at all.
So far, I found the following options:
1) Ubuntu
It turns out there there is a Ubuntu LTS for the Raspberry Pi 400. It's the first OS I've looked at, and it looks pretty good so far. Uses the Snap store, so it would be easy to add things like the game controller program.
2) Gentoo
I'm leaning towards to Gentoo the most so far. From what I gathered, you build the entire OS yourself and can start from a blank slate and add only the things you need. I like that concept. This is my top choice so far. I could offer a basic OS with no optional software, then add instructions for developers to add things like USB controller support and network support.
3) Alpine Linux
This one also looks very promising. As with Gentoo, it's a very basic Linux OS, which you build on top of. The website sure looks more friendly than Gentoo, but that doesn't mean much. I have to research Alpine to see if it really is a good choice. Seeing as it's about 130MB installed, it's a good candidate. It's still huge compared to the 8KB carts used in the C64, but I'm focusing on getting things working immediately, not in a true retro fashion.
I'll be doing some testing of the above OS choices soon, then I'll work on getting a game working on the OS of choice. Once that is finished, I can work on getting a test hardware that will allow me to load code from the SPI bus on the GPIO connector. Finally, I can focus on getting GPIO boot working to boot a system from the GPIO SPI bus, and tie it all together.
I'm aware that it may seem silly to bother including an entire OS with a game, but it would eliminate all of the various problems that come with trying to work with a user's OS and installed software. The hardware will be a fixed variable, as it will be assumed to be the Pi4 or Pi 400, so why not eliminate the OS and software variables? The goal is a super reliable game console that will just work when you plug cartridges into it. For that, elimination of variables is crucial.
-
Initial Game Candidates
12/01/2020 at 18:56 • 0 commentsI don't have the vast collection of game development skills needed to put good games on the cartridges, but luckily there are some fun linux games out there that fall under open source. Here I'll compile a list of games I'd like to see released for the Pi 400, in cartridge format. Even if I have to hand make the carts myself. I'll narrow it down to a single game, figure out the system requirements, any dependancies, and see if I can get it to work. The challenge will come in making sure the OS on the flash drive has everything needed to support the game. Ideally, there would be a very simple OS, and the game developers would just include any extra system software they need on the cart. Either way, I need to get a prototype working, and that means picking a game and just going with it.
1) SuperTuxKart
This one looks fun and simple, and has a decidedly Linux theme to it. I have to download and test it, check system requirements, document some things, and see if the game is fun. The fun is very important.
2) Hedgewars
This one looks like a ton of fun. Like the Worms games I used to play. It has network multiplayer, which is a feature I think would be implementing as well.
3) 0 A.D
This one looks fantastic, and addictive. Apparently it's been around a very long time as well. It does raise a few concerns. First is if it will run on a Raspberry Pi 4 at all. I need to check that for all the games on the list, but I just want a list of fun games in general. Nextm it reminds me of updates. How does one go about safely updating cartridge games, or does one even bother at all? Locking a game into a known working version forever would be a safe way to go about it, but half the magic is in many of the updates. I'll think on that more later.
4) Doom
Of course this one has to be considered. It might end up being the first test game installed on a cart at this point. I'm not fan, but I know a lot of people are, and it might actually be pretty simple to get going. The main reason for putting it in the list is that it is known to run natively on the Raspberry Pi, and won't likely cause issues.
Another native Linux game that can be played on the Pi. I should have known this one would pop up.
This one should have come to mind immediately, but I never really play Minecraft. This makes the most sense for a test program so far. It's well known, fun, easy to play, and is designed to be interfaced with Python for easy programming. I don't know if anyone would want this on a cartridge, but it would provide some interesting challenges, such as implementing Python on a cartridge and using it to interact with a game.
Aside from some simple Pygames, that's all I've got so far. Moving onto OS research.
-
Initial Research
12/01/2020 at 17:04 • 0 commentsI put most of my initial thoughts in the "Details" section already, but I'm very excited to see if this will come together.
I just found that the Raspberry Pi 4 has a 1Mbit EEPROM attached to an SPI bus for the bootloader code. I'm not sure exactly what this could mean for the projuect, but I suspect a custom bootloader could be used to load a minimal OS and boot carts. It might make it impossible to boot the Pi from SD, but it would be worth it to someone who wants a dedicated game console. Maybe someone who wants to give one to their kids and not worry about them breaking it. Needs more research. Further Reading
I don't have a Raspberry Pi 400 yet, but I'll go pick one up for testing as soon as I get the chance. I'm considering drafting standards for the carts and system resources, just to kind of challenge the developers. It's pretty easy to code with near infinite resources, but some strict restrictions, like the limited RAM and audio voices of the Commodore 64, would force developers to get very creative with their design and coding. Then again, leaving everything open could lead to some seriously cool large scale games. Will think on this more later. The SPI interface on the Pi 4 should allow for EEPROM data storage, flash storage, or even SD storage if you really wanted. Although, looking at the prices of SPI flash memory, I think I'd go that route for a development cartridge. Development hardware is a whole other story, and I'll have to sort that out later. I found this flash chip for under $1.96 USD, and at 512MB, it's a good start. Those SPI flash chips go up into the gigabytes, so that would leave a lot of room for options and massive games. Here's a 2GB flash chip for $3.95 USD. It's pretty cheap to buy them in multiple GB sizes. For the truly retro feel, there are still KB sized EEPROM chips available, but the cost per byte is much higher than the flash chips. Looking at the lovely OwlBoy game for linux, it totals 390MB, and could easily fit onto a 512MB flash chip. I'd love to see some of the Linux games released for the Raspberry Pi 400 on cartridge someday.
SPI Bus speed limits on Raspberry Pi 4: Article
Things are getting distracting here, so I'll finish this rambling up and come back later.