I've decided to have another crack at a hand-held games console project. I've had various ideas for doing this over the years. I built one based around a PIC18F4520 many years ago but didn't get far with trying to write the software for it. More recently (but still long ago) I had the idea that maybe the OggBox might make a simple console, if you hold it sideways the 4 buttons under one hand and the top two buttons in the other hand. Last year I got most of the way through designing one in my summer holiday, but the parts are all now out of stock and it was based on a PIC32 which I've now decided is a very bad idea having had to use them professionally since.
The chip supply crisis is still in full effect and I have almost no free time so this is going to be an interesting challenge, but I thought I'd document my process from the beginning this time and see where I get.
What does it need?
I want to make something that looks somewhat like a fully assembled Nintendo Switch, or Steam Deck. So:
- A big screen in the middle
- Analogue joysticks on either side
- Some shoulder buttons and d-pad buttons
- Speakers would be nice
- Some kind of basic battery management and a LiPo battery
- An SD card slot to load games off
What can I make it out of?
If I could just pick parts I'd probably pick an STM32H745 dual core so I could use one core for graphics processing and the other for general logic. Well, the usual sources are useless. The chip crisis is in full effect so main distributors and just picking the "best part for the job" isn't going to work. It's going to have to be a case of make it out of what I can get. Fortunately a project like this has a very small production run, so if I can find, scavenge or buy just one or two parts.
I considered a Raspbery Pi Pico because they're easy to get hold of, but it's just too small for what I wanted to do. While it's got a lot of RAM for a processor of its class it's got no external bus for RAM which means you can't extend memory for doing things like big frame buffers or running code from RAM so you can load programs from SD card. It's also short on I/O and ADCs, for two analogue joysticks you'd need 4 ADC channels and the Pico only has 3. Some of those problems can be overcome (I2C ADC for example) but the size constraint is really bothering me.
I think I'm going to go back to the trusty old STM32F429-DISC1 discovery board. This has a screen (although it's a bit small so I might not use it), processor and a nice big 8MB of SDRAM. There are still a couple of people selling these at a reasonable price and I've got one on the shelf. If things go well and I want to make a proper PCB I can always blow the processor and RAM off one of these boards with hot-air rework.
I always like to have a block diagram early on which illustrates the physical components of my system with rough assignments of number of pins or what type of bus the peripheral will connect on.