I can always make these things simply because I want them, but that isn't always a good reason to do so. Yes, I really want this to work out so I can play with it. At the same time, I really want OTHER people to really enjoy this. Maybe it can also be genuinely useful so I can feel good about it. Every PCB and part produced is going to eventually harm the planet in some way at end of life, so I want the hardware to earn it's offset by doing something genuinely useful. To that end, I've been really thinking on the goals of this project. Why does anyone actually NEED something like this, aside from nostaligic fun? I think, if done well, it could actually become a teaching tool of all sorts. Maybe these end up used as a kid's first computer system. A Pi 400, a tv, and read only file system, and software carts. Or perhaps it ends up used as development system, where the carts not only contain hardware such as relays, GPIO pins, and sensors, but also large amounts of data storage for logging and holding project files beyond just code. You'd never have to worry about where your data is kept, as it would be kept on the 1-8GB of built in storage. Local and cloud backups would be possible as well, just in case. For me, managing all the data for software projects is a huge pain. I'm still developing a system of organization for everything, and it has cost me a few projects in the past.
The way I am starting to envision this ROM cart is more of a system of specialized Pi Hats that simplify the experience of programming, working, playing, or learning in general.
I am having a lot of trouble finding a way to make the code and carts universal for all Pi systems. The problem is that I want to boot from the cart itself, but the Pi 4 doesn't seem to support that in any fashion. I could do it with the Pi 3, if I remember correctly, but it doesn't have the processing power to run as a viable desktop computer. The Pi 4 and Pi 400 do. Especially the Pi 400 with it's gigantic heat sink and slightly faster CPU. Booting over SDIO on the GPIO pins SEEMS possible, but I've not been able to confirm either way. This would be the killer feature for me, but I have a plan. Instead of booting from the GPIO SDIO interface, I think I'll try to just autorun code from it when a cart is plugged in. I was trying to avoid modifying the host OS, but I think having to install a small program to use the carts is a decent trade off. I still find a one time install far more pleasant than changing boot devices manually.
In order to get the carts to work, I am looking into packaging programs as ARM compatible appimage files for the Pi 4 and 400. THey would then just live in there own area of the SD NAND flash chip on the cart, and be loaded over the SDIO interface over GPIO pins. The entire program could be loaded into RAM all at once. Startup code on the Pi could be used to detect when a cart was connected, and load the software from the cart. The programs would have to be modified to save to the SD NAND on the cart as well. Maybe a universal load/save system for all the carts that handles that. I think most of the work in this project is going to be in the software, but there are some hardware issues to sort out.
One of the main concerns I have with hardware is actually making sure it is going to be safe to plug in and remove these carts while the system is running. I don't recall the default GPIO pin states of the Pi as it starts up, runs, and shuts down. I am at least aware that this could cause problems, so that will influence the designs of the software and hardware. I also need to make sure the carts could be plugged in upside down without damage, as we all know someone is gonna try it... I need to ensure that the NAND flash will also have everything needed to manage the data, like wear leveling if needed. I'd like a read only partition for the code to load from, as well as read/write areas for saving settings and user data. The hardware is very exciting to me, and I have chosen a PCB manufacturer for the first prototypes. CamptechII, out of Canada seems to have a good reputation and more capabilities than I would need for this project. Plus, they offer custom silkscreening colors! I'd like to match some of the colors to the Pi color scheme, of course. That was a huge decision I needed to make for all upcoming projects. I like Canada, and shipping should be faster than from China. I look forward to placing that order and getting my first boards in for testing. I still have to choose a free and open source PCB design software and learn to use it, but that should be simple enough. I have a fair amount of CAD experience in other areas, and can cobble something workable together.
The first prototype will likely be a hand soldered, bare bones board with only a single SD NAND chip on it. Or maybe even an SD card connected to GPIO. I wish to start on that immediately, but need to work more and pay some bills before I can justify even that meager expense. It's more a problem of getting sucked into the project and spending way too much time on it!
I have tons more thoughts, but will get to work for the day so I can cover my campsite rental for the month, and start working towards the rest of my goals. This project is on my mind and very exciting to me, so expect some progress and updates soon.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
Awesome! Thank you! Truth be told, I'm not a gamer. Mostly because I've found very few games I actually enjoy. They have to be really deep and involved as I get bored easily. Final Fantasy X is one of my favorites I replay every few years. That's kind of the route I'm headed. Deep, interesting games that I'd love to play. Or the opposite. Really dumb, simple comeday games to forget the seriousness of the world. I'm also very interested in developing educational stuff as well. I love teaching and learning, so this platform could be very helpful there.
I hate emulators, if I'm honest. I do use them sometimes, but very rarely. I hadn't really planned on using commercial games, but homebrew and open source. I actually have a C64 that I'm about to get restored and working.
I definitely want different points of view. I'm more of a creative and a story teller who's forcing himself to learn the engineering so I can bring my ideas to life. I'm honestly just very happy to have any outside input on this project at all. Soon I'll be ordering the blank Pi HATs with EEPROM, the memory chips, some real time clock modules(for games to run in the background and such), and some other fun hardware for the carts. Once I get a memory cart prototype done, I'll start the board design and order a few boards from Canada. I will be shipping out a few cart boards to people for testing and development in the future. If you'd be interested in getting one to develop for and play with, let me know. Would be very nice to get outside opinions. I plan on making the silkscreen a work of art, along with the rest of the project. Will be so satisfying to have my first custom board in hand.
Are you sure? yes | no
One longtime dream from back in Atari games; I wished cartridges were sold in boxes that had accurate depictions of gameplay!!! None did. Many of the best funded games had Robert E. Howard type fantasy and sci-fi covers, and others had more abstract designs by cartoonists who apparently never had seen a real video game. I can't wait to make at least one cartridge with actual gameplay depicted!
Are you sure? yes | no
That's an awesome point. Done. I feel the same way, and had planned on doing artwork in the style of the gameplay graphics on the front, as well as screenshots on the back. That always annoyed me when I'd grab a cart I'd never played before, and the epic artwork set my expectations way too high. Epic sci-fi artwork can go on a poster or something. I just showed this project to a good friend of mine who is a graphic artist and musician. He's offered to help me with the design of games and packaging as well as music and sound effects for games. Should be picking up momentum soon. Going to pick up a Pi 400 kit today if all goes well!
Are you sure? yes | no
I don't want to sound too harsh, and GPIO booting sounded like a great goal, but I'm skeptical on the whole idea of cartridges. While they have nostalgia, I mostly associate them with hardware copy-protection, or at least a purpose-built limitation. I think that's why, at a time when Sinclair's ZX computers were inspiring tape hackers in the UK, Atari2600 didn't inspire a homebrew games culture. Arguably a revival of ol' skool cartridge gaming exists now, but that's only because limitations of mass-produced hardware are easier to overcome 35 years later. It could add a physical object nostalgia to RPi emulators, but I'm not seeing any other reasons to create a new cartridge system, especially not for an Open Source project! Maybe for a specific, old, cartridge form factor that already exists?
Are you sure? yes | no
I get that. It's a fun project for me, there's some nostalgia for sure, and there is some convenience to be had. Basically adding mass storage to Pi Hats, so that all project files and software are attached to the hardware. I've not seen anything like this, and I really wish it existed...so I'm creating it. I don't plan on adding copy protection, and I only plan to ever release open source software on carts, if they were to ever ship with software(assuming I ever produce more than just a few for myself, that is). When I think of the Pi 400, I'm reminded of the Commodore 64. Many people actually were. Similar concepts, differnet eras and technology. The carts could turn the Pi 400 into a game system if anyone cared to do so. I miss having my games, all files needed to play them, and all my saves all on a single device. The memory carts are just the first stage. I have plans to integrate more hardware as I get further along. Things like sensor carts, loaded with all kinds of sensors, and multiple gigabytes of data storage for logging and such. Eventually hope to put a microcontroller onto one for use as an all in one development solution for the Pi 400. Another thought on hardware copy protection: I've already found a few chips that should allow me to build an adapter for these carts to be plugged directly into USB. Then they could be used on anything, software permitting. The GPIO boot idea is still being developed as well. Haven't given up on that, just put it on the back burner so the project doesn't stall out.
Anyway, very good points you've made. Hope I answered your questions and such.
Are you sure? yes | no
That's good, thanks. and you cleared up some stuff for me. I didn't find this "Defining Use Cases" page! Sorry! I wasn't sure you had already given this much thought . There's not a lot I can actually help with, I'm more of a PC historian that a tech, which is why I put my two cents in. I sometimes see things engineers don't. And since I had an Atari 2600, in childhood I "get" the nostalgic part of cartridges, its like playing and collecting vinyl albums, Also I've recently started playing Gameboy with my nephews, and scrolling through a list of 365 games in a questionably licensed cartridge really sucks. And some guy on Etsy is selling Commodore 64 Reproduction Boxes for over $50, so WTF do I know about the public's preferred means of gaming? If you get a BOM of Mouser or Digi Key or Adafruit and "paint by number" silkscreened PCBs, I can help at that point. I'm hoping and cheering you get there!
Are you sure? yes | no