Hello and happy new years! I have been recently working non-stop on a overhauled version of the Arduboy. I have seen several things I could improve so I thought I should share them with you guys.
New Micro Controller - I couldn’t help but notice that when uploading certain games it almost fills all of the available program space on the 32u4. I also noticed that games don’t run particularly fast on the Arduboy, so the first thing I wanted to include was a quicker micro controller. The 32u4 is been great this far but I believe game devs would have an easier time on a more capable micro controller . This new processor would have to have more space and greater capability than the 32u4 but still be backwards compatible (for the most part) with pre-existing games. Therefore I settled on the ARM32 based SAMD21G18a. This new micro controller boasts a 3x higher clock speed, has 256k of flash 8x that of the 32u4, and has 32k of RAM more than 12x as much as the 32u4. But this processor is still almost completely backwards compatible and can still be programmed over usb using the arduino ide since it is the same controller used in the Arduino MKR.
Storage - Another thing I noticed was storage, as the Arduboy can only hold one game at a time without modification. People have used flash chips wired up to the 32u4 and used a boot loader to manage the games on the flash chips and the Gamebuino uses SD cards, But what if you could use both? Since the SAMD processor I was talking about previously has native support for SD cards and flash chips are easy to include in my design, I could make the serial flash chip primary storage and the SD card could be used as secondary storage. That way it would be easy to have multiple games on the arduboy.
Wireless - I also want to include wireless of some sort for multiplayer between games. And I already have a solution for that, the NRF24L01 wireless chip could be used for wireless serial between 2 or even multiple handhelds.
Display - I wanted to include a bit bigger display since the 1.3 inch oled on the arduboy is a bit small. I plan on including a 2.42 inch ssd1309 oled for better viewing quality.
Battery - I know the battery in the arduboy lasts a pretty long time but I plan on upgrading the battery to a 800Mah or even more so this design should be able to last days between charges.
Controls - I plan on leaving the controls mostly intact other than I want to include a start and select button that is reminiscent of the Gameboy.
Sound - The SAMD has a nice DAC pin that could potentially be used for multiple voice sound or I was also tossing the idea around for a separate 328p programmed to handle up to 3-4 voice sound like on the old tandy computers.
Expansion - Lastly I want to include a expansion header that will be connected to various pins on the micro controller that can be used for radio modules, game cartridges, accelerometers / gyroscopes, or anything else you can connect to a normal arduino.
Now with all these changes while still backwards compatible I don’t think it could be called a Arduboy anymore I was thinking on new names for my design maybe the HAMR (Handheld ARM32 Mini Retro) or the ArduEvo (Arduboy Evolved) I don’t know comment down below for different names. Thank you for your time and have a happy new year!
Hi @JinxLynx you are thinking along the same lines as me. I have just finished a PCB design which you can see the development of in this thread. The main difference between your requirements and my design is that I am using a daylight readable LCD but it would be easy to adapt the board/project to use an OLED. There are also discussions about future devices at this thread. Another thread discussed a rather hushed adaptation of the current design and was hidden to show that the discussion was somewhat hypothetical.
I’m at the stage where I have routed the traces and just need to go over the board layout carefully with a copy of the schematic to check for gross errors. Then I’ll send it off to the fab. I would love to cooperate/collaborate on something with you and I fully understand if you want to implement your own design but there may well be some common ground/components we could use. What country are you in BTW?
Let me know what you think. And good luck!
I was actually looking for somebody to collab with so that would be great! I’m in the US
BTW i’m working on a schematic to the design I described as we speak
Cool - I’m in UK. I use kicad - what EDA do you use?
I use kicad as well for my projects
I have added the kicad to Github and published it under the MIT license (so you can do pretty much what you want with it). Happy to share any footprints etc individually.
Could you please send me the samd21g footprint (not the symbol) I haven’t been able to find it anywhere
I’m on release version of kicad 4.0.6. Let me know if you can’t find it and I’ll dig it out.
@MLXXXp Cool! How are you getting games to load from the SD card? I know how to wire it in hardware but I really need help with the software side (bootloaders, etc.)
@SimonMerrett I noticed that in your design you said it has both SPI flash and an SD card which might not be populated. I was thinking If game devs catch on to this new standard maybe games could be stored on the SD card and since the SAMD21 only has emulated EEPROM maybe the flash could be used for saving game data such as high scores, game settings, etc. just a thought
@JinxLynx if that’s a setup that makes it worth having both, then I’d be happy with it. I just don’t know what arrangements would suit whatever bootloader / game loader approaches that people come up with (I’m not strong on the coding front relative to most of the people on this forum).
By the way, did you find the SAMD21 footprint? I’d be grateful if you could confirm that you think it’s the right one when you do.
I haven’t yet. I’ve only gotten as far as using the standard Arduino SD library to read from the card. I haven’t worked on this system for a long time (I built it over 2 years ago).
You might want to look at what the Gamebuino Meta uses, and do the same or similar, since it’s based on the ATSAMD21.
I’m now leaning towards using a ATSAMD51 series chip. I feel the additional integer divide, floating point math, true random number generator, and better emulation of flash memory would be an advantage for a gaming system. However the Kickstarter campaign, for the board I’m planning to use for a prototype, has been delayed, plus my time has been limited lately.
I’ve been flashing hex’s on a PurpleCardThing from SD using avr_boot which should also run on a Arduboy. I’ve not had time to look into it to see if it’s possible to use a file browse,rename then reboot or assign a hex to each button to avoid double flashing with a loader hex like the Gamebuino classic. The gamebuino classic uses a modified 2boots.
Your using an alternative MCU so I’m not 100% sure what’s available but thought I would share how far I got in the short time I looked into it for 32u4 and 328p.
Skimming the meta manual it looks like it also uses a loader.bin so it’s likely working similar to the classic.
You can mooch through the code here https://github.com/Gamebuino/Loader-META
@MLXXXp I didn’t realise that the meta used a SAMD21 - I thought it was an STM32. Sadly the developers seem to be keeping a lid on the hardware design at the moment. I don’t feel as though they should open source it if that’s the model they want to use but it’s not much help for we who are trying to learn from each other.
You may get find something of use in the repo’s https://github.com/Gamebuino
@Keyboard_Camper Thanks but the repo is all SW, not HW, by the looks of it. I recall the developer having a fairly heated discussion on their forum when someone “threatened” to release HW details of the meta.
@SimonMerrett I did find the right footprint, thank you!
@MLXXXp I’m having some difficulty wiring the oled properly to the samd21’s spi interface. On the breakout board you used, how did you wire the screen?