Micro Arcade Reverse Engineering

So I’m working on making a replacement PCB for the Micro Arcade that you can reuse the case, color screen, battery and speaker.

So far I’ve probed the pinout to be:

1: VCC
2: GND*
3: VCC
4: VCC
5: GND*
6: CS**
7: REST
8: DAT/MOSI
9: CLK
10: D/C***

*GND low side switch, signal is open when system is off, tied to ground when powered on.
**CS signal is low when writing data
***D/C signal is low when writing commands, high when writing data

UPDATE: Figured it out!


The next step will be to use the signal analyser to capture the init sequence and compare it to some graphics drivers values, hopefully it will match. Then I just gotta figure out what to do with pin 7 and 10 as it isn’t totally obvious how they function. Under the oscilloscope it appears that they are tri state and ringing off the clock signal.

Does anyone have any ideas or interest in the project? If you’d like to help reverse engineer one of these and have the tools/knowledge to do so but lack the Micro Arcade to work on let me know! If you have one but don’t want to risk damaging it but can help out, let me know!

5 Likes

7/10 might be MISO?

I don’t need another project right now, but I’m totally down. What’s the microcontroller? It’s probably firmware locked, possibly even OTP…

That is so pre jun/2020

Nah it’s only a display bus there is no input there. The microcontroller is a blob of epoxy.

I think that the same company behind the micro arcade, made some micro arcade cabinets with all the games preloaded but only 1 selected with some soldering. But I didnt saw anything similar when I opened my microarcade.

A lot of these LCD controllers (ILI9340 being a typical example; I bought tons of modules using those from AliExpress) have SDI/SDO, and you can read from them (not that you usually need to). They usually have another signal called D which controls whether it’s a data (as in, pixels) or display commands (reading/writing registers, etc)

I wired up with a test sketch for the nokia style screen didn’t get anywhere, was hoping it would be that easy!

I’m really hoping that the display is documented and has a library for it, I’m not gonna be smart enough to reverse engineer the whole display command set…

I wonder if the Tiny Arcade cabinets have the same display protocol, I think so I think those are a little bigger I wonder if they are easier to identify.

Command: 0x2A
Data: 0x00,0x02,0x00,0x81
Command: 0x2B
Data: 0x00, 0x03, 0x00, 0x82
Command: 0x2C

Looks like it is setting up 128 rows and columns with some kind of offset?

Does this look familiar to anyone?

Figured out the pinouts, pretty sure anyways - updated the post.

It’s not the nokia controller because that uses 9 bit SPI so that’s good.

I hope you figure this out … I would love to program one of these little devices!

Looks like it may be the humble ILI9341 or similar, looks like quite a few LCD use that init sequence.

0x2A looks like column set, and 0x2B looks like page set.

UPDATE:
Looks like it’s gonna be an ST7735 (maybe)

Looking at this module, the LCD looks the same, just different ribbon connector.

1 Like

Those commands are not unique to one controller. Try doing a reset and catch the display initialisation commands.

1 Like

That is what I did. That’s all that is init before frame data is sent.

Got it working!

Awesome it is a ST7735 it is the same as:

Here is the pinouts and information needed to replicate, although I cut the lines to the epoxy blob on this so that it wouldn’t interfere with this testing…

ASIDE:

Wow these screens are actually quite brilliant and sharp! I always had suspected the highly aliased graphics resources on the MicroArcade where the reason for less than stunning visuals, and I’m happy to share that is true! With better content this display will look much better.

2 Likes

Hey @Mr.Blinky your homemade package has an ST7565, how much different would it be to support the 7735? :slight_smile:

So the same display as is used for the ESPboy.

1 Like

I can hardly believe that. Most display controllers need some initialisation or at least a display on command if the default configuration is enough.

An ST7735 starts with display off. Check page 69 on this datasheet power on/reset values.

ST7735 fastest mode would be using 12-bit color mode. Rendering Arduboys display in an 128x64 window would still be 12 times slower than an Arduboy display update.Most games will have major slowdowns. IMO not worth the trouble (when using Atmega32u4 MCU)

2 Likes

Exactly.
Render from the Arduboy OLED 1-bit screen buffer to ST7735 is possible only due to a powerful ESP8266 microcontroller.

Lol I finally get a color screen working and finally and now they say there isn’t enough performance, after years of arguing that there is.

Isn’t there like an 8 color mode or something for these displays?

Anyways, my plan is to run it from a more powerful processor.

Lots of emulators for the ESP32.

ALSO: working with RGB565 is a pain in the butt and/or I’m an idiot. Just trying to write a basic color cycle is proving to be tough.

HaHaHa :smiley:

Only know of two OLED controllers :slight_smile:

With parallel mode, the right display and a few tricks you can use a color display with 8-bit MCUs though (with a good frame rate)