I've always wanted to make my own game console. I don't know why the existing Arduino game consoles have this issue with framerate when a 2006's Sony handheld PC had 1GB of RAM and an Intel CPU running Windows XP. Why haven't normal DIY open-sourcing copyright-libertarian hobbyists been able to make something at that magnitude? Don't say money because money is the reason I'm in gamedev scene; wanting to make a game console or anything that has a screen, characters, multimedia and nerdiness to make money.

So the issue has always been how do I find a microcontroller that's enough fast to run a 320x240 display like ILI9341 at 60FPS without stuttering or having to do lots of precalculations for partial screen updates. What about the NES/SNES consoles which didn't even have a framebuffer but which used discrete logic?

  • My scheme was to use ATXMEGA128A1U with a parallel bus and DMA, but it was hard to find a board containing all the stuff I needed and the External Bus Interface.

  • Then I tried to use ESP32 with SPI, but SPI would go max to 80MHz while the screen could only handle 40MHz.

  • Then I tried ESP32 again with 8-bit IO pin permutation which didn't work; it was too slow; maybe it would be faster if I used Xtensa assembly to take advantage of the CPU pipeline in case the dumb C++ compiler compiled machine code that waited 7 cycles for every next operation.

  • But now I'd like to use ESP32 with an I2S bus and DMA which was used for a camera demo and it was really really fast, but I'd like to use it for I2S output for that ILI9341 display. According to my calculations, it should take 10MHz to write out all of the bytes if the bus is 16-bit wide (8 bits for data and 1 bit for Data/Command register) + Read/Write/Select strobes controlled by the bus interface. However, Bitluni has been able to drive it to out of spec values of 580MHz for his VGA library that's superfast, but that month he had nothing to pay his rent with so he licensed the code under a copyleft license (ShareAlike). You know what they say, "The love of money and the lack of money are the roots of all evil.". Money is important, but really... this just makes money an even worse enemy than it was before.

So I guess I'm out of options. There have been many attempts and they have failed. Yes, there's Teensy and stuff, but I need something in the EU which I won't have to pay for more in shipping than the actual product.

So, what are the solutions?

P.S. if I get one of those "off-topic" or "too-broad" or dislikes to my question, I'm deleting it and moving to Reddit and screenshooting how yet again StackExchange is just too formalistic and banhammersome to open conversations.

  • 1
    While it's not a perfect solution for games, maybe this would interest you... – Majenko Jul 15 '19 at 17:50
  • 1
    your post reads like a rant ... it appears that you may be trying to use equipment that is unsuitable for the task ... have you explored something like a Raspberry Pi? – jsotola Jul 15 '19 at 17:52
  • Oh, and the root of evil is not money. The root of evil is -1. – Majenko Jul 15 '19 at 18:02
  • 1
    Wow, especially the PS carried some deep anger. That really doesn't animate to give an answer :/ – chrisl Jul 15 '19 at 18:26
  • didn't NES have a hardware video controller? ... i think that one of the early game consoles had a 1-video-line buffer – jsotola Jul 15 '19 at 19:27

The problem is the whole concept of running an ILI9341 TFT screen at 60FPS from a microcontroller. You can't. It's just not fast enough.

To get those kind of speeds you need to directly interface the TFT panel with the microcontroller. And that takes a special microcontroller with a TFT interface built in. As well as that you need the memory to store the image that you are displaying on the screen.

There are microcontrollers available that can do it quite happily. But they aren't in the "maker scene". Simply because they aren't a common thing to do.

For many years now there has been the PIC24 "DA" range of microcontrollers with a built in GPU and TFT interface - but there is no free C++ compiler, so no Arduino support - so no easy route to using them for beginners.

There are now, though, the PIC32MZ "DA" rage which are more accessible - though still very hard to use. These are much more viable for the kind of thing you want, with 32MB of built in DDR, a TFT panel interface, and available in a 144 pin TQFP chip that is possible for an experienced maker to hand solder.

But the barrier is still software. While chipKIT has full support for the PIC32MZ "EF" range of chips the "DA" range is not yet supported. That's not to say you can't work with them, just not with the Arduino API and IDE.

The more common way to make a games console like device is to take an ARM SoC and interface it with a TFT panel directly. The simplest way for a maker to do that is to put a TFT on a Pi and install Retropie.

And we're not against open discussion as people. It's the site. It's not a site for open discussion. It's a question and answer site. You ask a technical question that you need assistance with, and we tell you the answer. It's not a forum for general discussion. As such, this question will be closed as either "top broad" or "primarily opinion based". However your question does deserve an answer anyway.

| improve this answer | |
  • Thank you for the comprehensive reply and for considering my question. Now, I've been working in AVR ASM and in Notepad++ alongside a MSYS32 for ESP32 development for Windows. So, if it's not Arduino, it's not a problem for me. All I need to know is how to access registers and the datasheet that proves the behavior of registers. An ARM SoC would be good, but I don't want to be bothered with licenses and GPL and ShareAlike and EULAs and patents. Raspberry Pi along with Retropie are not permissive-licensed but copyleft. What ARM SoCs would be good then? Preferably a MIPS SoC? – Foxcat385 Jul 16 '19 at 14:56
  • MIPS is not ARM. Completely different architecture. The problem with SoCs, especially ARM ones (which are prevalent these days) is the difficulty in getting into them. Not only are they hard to work with (generally high density BGA packages which means specialist production facilities that can handle micro-vias) but most SoC manufacturers want you to jump through hoops before they will even let you see a chip. Broadcom still won't let Raspberry develop proper GPU drivers for their chips because it would end up open source. – Majenko Jul 16 '19 at 15:17
  • Allwinner are better in their openness, but still they are hard to work with. A meaty MCU (200MHz or faster) with the right interfacing would be easier to get into, but the problem with them tends to be lack of memory. That's where a SoC excels - with the memory external (and DDR is another whole nightmare to develop for) you really aren't limited to what the manufacturer has decided to allow you to have. When it comes to microcontrollers it really doesn't matter what architecture you go for. Personally I prefer MIPS (PIC32) because I was brought up on MIPS systems at – Majenko Jul 16 '19 at 15:20
  • university (DEC Stations). The new boy on the block, though, Risc V, which is completely open, looks promising. There's some microcontrollers starting to appear. Risc V is based on MIPS, and is available as an open source core for FPGA development. So you could even roll your own system in an FPGA if you want to get really hardcore. That would give you the most flexible system - but again very expensive to get started with. Development tools are $$$$. Plus it takes a whole other set of skills to work with. – Majenko Jul 16 '19 at 15:22
  • I know MIPS is not ARM. The comment length limitation didn't let me say fully. Anyways, I found a European seller of the Teensy 3.5. 3.6 is out of stock (as always). For some weird reason, I cannot find Teensy 3.5 LCD benchmark videos anymore. Google seems to be disranking all non-mainstream things to suck an extreme extent. I'd like to know more about Teensy 3.5 since it's the most powerful thing that's accessible with a decent shipping time/cost, but I need to know the availability of permissive licensed libraries and if 3.5 can do the superfast 3.6's 60fps rendering. I'm unable to get 3.6. – Foxcat385 Jul 17 '19 at 12:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.