Hardware pdf documentation video cpu etc - By dreamer3

Author :  dreamer3

I wanted to compile a list of all the technical documentation/resources to anyone wanting to hack on the core library or really push the hardware to it's limits:

CPU: ARM Cortex m0+ / Amtel ATSAMD21???

I put the ??? because I"m not sure of the exact hardware variant chip we're using - but I'm also not sure it matters (as long as it's not the L variant, which has different Atmel reference docs).

Video: ST7735

The ST7735 is a single-chip controller/driver for 262K-color, graphic type TFT-LCD. 

  • http://www.displayfuture.com/Display/datasheet/controller/ST7735.pdf (2.1mb)
  • VSYNC is not connected - Rodot: TDLR: We don't have VSYNC but it's not a problem. (https://gamebuino.com/community/topic/will-vsync-from-the-display-controller-be-connected-to-the-mcu)
  • Interface is 3 or 4 line serial over SPI, which means write-only. You can't read the VRAM on the chip.
  • Regardless of the API video mode (80x64, 160x128, RGB or indexed etc) chosen the core library internally drives the chip using the RGB565 (16 bit) data transfer mode, allowing 65k potential colors. ¬†When using indexed color the conversion is done on the fly as the data is sent to the video hardware.
  • The chip also supports 12-bit and 18-bit color data transfer modes. ¬†I'm not sure why you'd ever need 18 but 12 could prove useful if anyone wanted to really push the frame rate. (reduces the data you have to push over SPI by 25%). ¬†Note: It should be pretty easy to test benefits here by just modifying the library to downsample 16 bit to 12bit before it sends it over the wire - to test the potential gains. [12 bit is only 4,096 colors]
  • For libraries to bridge simpler platforms with reduced/lesser graphics requirements (Arduboy, black and white, etc.) faster frame rates should be easily possible. ¬†(by using 12-bit mode and only pushing the relevant part of the screen 60+ FPS should easily be possible)


The 8 hardware button/switches are directly wired over the SPI bus (CS pin=25).  You transmit a byte and then the byte you receive in response is the real-time button state (one bit per button).


So far this is all I've got.  I could zip everything up but I'm not sure about the attachment limits here.  When I work on a project like this I typically download all the PDFs once into a local folder so I have them handy for easy access.

If I've gotten any of the links or details wrong, please let me know.  This is more for people who want to hack on the core library or push the hardware to it's limits - or do crazy things.  You probably don't need to know any of this to write a basic app using the Gamebuino API.  

Though I do think the ST7735 reference might still be useful for people wanting to do slightly non-standard things with the graphics hardware.

Author :  BitMachine

Exactly what I was looking for. Thank you!

Author :  dreamer3

No problem.  This is everything that I wish had been in one place when I first discovered the META, so glad to know it's useful to others.

Author :  BitMachine

I'm wondering why they decided to go with ATSAMD21(Arduino Zero) instaed of ATSAM3X8E(Arduino Due)?

48 vs 84 MHz
32 vs 96 SRAM

256 vs 512 Flash

I imagine that the Due will run better in full resolution(160x128) then the Zero. 160x128 is really close to the game boy's 160x144 resolution and 3xSRAM will give more space for cool graphics.

Any idea? Maybe cost?!

Author :  DFX2KX

cost, basically, and Programming on a limited RAM budget builds good programming habits.

Though now that you've made me aware of that chip, I'm going to eye it for backpack graphics accelerator possibilities.

Author :  Aurélien Rodot

The DUE chip is super expensive and Arduino gave up on it a while ago, to focus on the Zero. The first prototypes of the Gamebuino META were named Gamebuino DUE... guess why. Today you'd be better off using a Raspberry Pi Zero instead.

Author :  BitMachine

Thank you for taking the time to answer my question. I checked the prices and you are right. In farnell.com ATSAM3X8E is ‚ā¨6,97 vs ‚ā¨2,20 for ATSAMD21(100+).

I agree with DFX2KX that the limited RAM will be fun. I just hope that the full screen resolution mode will be useful.

I really like what I have seen so far.

Author :  DFX2KX

7 euros? youch. indeed, that's approaching low-end android/linux SoC territory.

I agree with DFX2KX that the limited RAM will be fun. I just hope that the full screen resolution mode will be useful.

Well, depending on the day you ask me, it's either fun or infuriating. :D. There is a certain beauty about wondering where you can optimize individual bits here and there. Given the amount of ram on tap with the META, I think most of us will have to go out or our way to push the hardware if we want to run up against that RAM limitation.

That said, that's exactly what people did with the classic from the moment we got our hands on them.

Author :  makerSquirrel

Since it is so much fun to resurrect topics which have been dead for months, I recycle this discussion for my comment:

I just wanted to state the aspect that next to the Arduino DUE chip there is another possibly interesting alternative as well: ATSAMD51, a 120MHz ARM M4F core, having 192-256kB RAM and 512kB-1MB flash storage. It therefore beats the DUE chip in practically every aspect. And the nice thing: while the DUE chip is crazily expensive (atm about 4-5 times the price of the ATSAMD21), the ATSAMD51 sits in the middle, so less than twice the price of the ASTAMD21, even for the 256kB RAM version. Funfact: I checked that 2 weeks ago, where the ATSAMD51 with 192kB was only ~50 cent more expensive as the ATSAMD21, so there are high price fluctuations.

The M4F(ARMVv7) ARM core is much faster than the M0+ (ARMv6) core of the ATSAMD21, it has an out-of-order architecture (like practically all modern processors), while the ATSAMD21 has the slower in-order architecture, a floating point unit (FPU), which speeds up any float handling, and the nicest thing of all: (afaik) code compiled for the M0+ should run without modification on the M4F, which means that all Gamebuino Meta games should work with that chip without recompiling. The chip itself is of course arduino compatible and i.e. used by adafruit Feather M4 express (https://www.adafruit.com/product/3857 ).

So if you ever plan to bring a soft update to the META (META+, META++ ?), this would be an interesting core.

P.S.: but wait, what about the CPU of the ESP32? While it is theoretically even more powerful (dual core, 160-240MHz, 520kB RAM), it has no FPU and it is not compile-code compatible with the ATSAMD21, which means that all games have to be recompiled. Next: I have worked a while with the ESP8266 (not the ESP32 yet) and its flash was extremely unstable. Nice for tinkering, but bad for repeated flashing like we do. Its Bt/Wifi capabilities would be very interesting for multiplayer, though.

P.P.S.: Both processors do not solve (although they reduce) the problem with limited bandwidth to the TFT (bottle neck for higher resolutions) and SD card (i.e. bottleneck for puffered images).

Author :  jicehel

For me, the more big critic done on META is his resolution for the price. Some expected a bigest resolution for the price. But better resolution mean more memory so yes the ATSAMD51 could be a solution with a 128 x 96 or 160 x 128. Maybe this console should not let all ports open as it's probably not for same usage but could have a communication way build in (bluetooth, wifi or just radio or IR). I don't know if Aurélien want already works on next generation of Gamebuino ( it's probably too early for that) and then i don't know that could be impact on the price (i could imagine a + 25 to + 40 euro impact, but it's just a very approximative idea of the integration of this techno in the console).

Author :  makerSquirrel

yes, more resolution would of course always be nice, but in the other threads, Aurelién already made quite clear, that there the bandwidth to send the information to the display is the bottleneck. The same goes for puffering stuff on the SD card.

Since that issue seems to be licence-related (fast bandwidth costs a lot of money in licence fees as I have understood so far, I also assume more complicated controller layout and such), the "easiest" upgrade would be replacing the ATSAMD21 with a pin-compatible version (if exists) of the ATSAMD51. Increasing the Screenpuffer to ~20kB probably would then still be within the transmission limits, but I am no expert on that part.

Author :  jicehel

Me nether, i just transmit the most frequent problem that i have read on forum about the META for some users. The META is fine for alot people but some are looking for a gaming console and it's one of the thing that they argue. So for me theit could be 3 sort of Gamebuino: the classic: low cost, very usefull and easy to learn / the META muti use: robotic / games / learn / and as you the META+ or Playingbuino or something like that for the Gamers with a cost a little higer but with all integrated things to play with (maybe accelorometer / bluetooth / better screen / maybe based on ATSAMD51)

Author :  Mischa

I have dealt with the ODROID-GO (ESP32) a bit and have to say it is a "nice device".
Yes, it has "better" hardware specifications than our META, but mainly it is a game emulator for Game Boy (Color), Game Gear, NES, etc. And it is doing this job (when you find the "grey game images") very good.
And you have have more or less fun to assembly it for yourself.

And Yes, you can learn to program with Arduino.
But it is used to run pre-made emulators and some IoT functionality with Arduino. Great game programming like META is not covered.

The Arduino libraries are very limited and you can't use the full hardware specs (eg. external RAM). Things, like sprites or other nice programming stuff for games you will not found; sorry.

So, for unlocking and using all the special hardware features you need special toolchains...but for about 30 bucks you can¬īt get a better hardware for running classic game images.

I love my Gamebuino Classic und META and will never change it (only if Aurelién will start the next great project...)

Author :  jicehel

yes same for me: I have alot fun with Gamebuino and META. I'll probably make an homemade Arduboy as their community is really amazing too (alot of different profiles) and i follow activity from Aurélien (of course) and (Albert, the m8 who have make the MAKERbuino project and make a MAKERphone project now on Kickstarter). I'll not be able to make a project alone from scartch. I have not the capacity, not the time and not the money and they make that already very fine...  ;)

Author :  makerSquirrel

Yop, I agree. But the MAKERphone is actually part of why I resurrected this discussion, since I fear that the mass of people always runs to the fastest device (especially if it has "maker" in its name ;) ), since the ESP32 is considerably faster (and has much more RAM) than the ATSAMD21, and the MAKERphone is using the same display as gamebuino meta, I expect that soon many people will start porting/recompiling for the MAKERphone...

And for me hardware is one thing, but a good library for developing games is at least as essential and here, Aurelién and his team has invested a lot of work that I appreciate.

Author :  jicehel

Makerphone and META haven't same goals. With Makerphone, you'll learn microPython too (and i want to do it) but not all want to do it. Makerphone is a phone with applis asw... it's not like META but yes it's could dran some people even i don't think that it's will have a big impact.

Author :  Sorunome

Since that issue seems to be licence-related (fast bandwidth costs a lot of money in licence fees as I have understood so far, I also assume more complicated controller layout and such),

It's bottlenecked by the way we communicate with the screen - over SPI. And the SAMD21 SPI interface can only go so high

Author :  makerSquirrel

Ok, so I mixed that up, thanks for the correction.

I am not good at reading datasheets ( especially the 2000+ pages stuff: http://ww1.microchip.com/downloads/en/DeviceDoc/SAM-D5xE5x-Family-Datasheet-01507B.pdf ), but if I get that correctly, the ATSAMD51 has more pony power than the ATSAMD21 on that part. Keywords like Quad SPI and 32 bit extension for SPI sound promising for me ;)

Well, I assume the ATSAMD51 had been in discussion while the development phase for the META was ongoing and I think you had good arguments against it ;)

[Edit] but at least dreaming about more RAM is nice :P