Screen Mirroring Guide / How To Screenshot Your Game

Think about the 1024 bytes that are sent as being a single frame that is transmitted. These frames are basically sent over as multiple bursts of data. If you just read the first 1024 bytes you receive and assume that’s a frame, then you’ll most likely be off by a little, reading some of a previous frame and some of the next frame. This will make everything look all distorted.

If you can, depending on the environment, detect the beginning or end of a burst, you should be able to just throw out the data you have for the previous frame.

I tested it for a couple days for a bunch of different games and didn’t notice any sync issues. That sounds like a good way to fix the issue crait. I’ll think about it and post a solution.

Curious: has Anyone attempted this with SPI? :slight_smile:

Well… not exactly.

But I’ve used a logic analizer to record SPI clock and data while developing my fast 18 cycles per SPI byte display routine. With the analyzer I could export the data and convert them to screenshots though.

I had an idea for an OLED display to TV OUT. which should be doable but it is one of many projects on my project heap. Would be awesome to hook Arduboy to a video projector :smiley:

Haven’t thought about other ways yet.

I am working to build an Arduboy clone or mashup that drives an LED matrix. Finding spi transfer is not working in my test project. IDK how the hell the Oled driver can do it’s work.

Ha Ha cool! I’ve thought about that too as I got a bunch of 8x8 LED displays Lying around. But then I realized the 40 I have aren’t enough :joy:

driving led matrixes is less timing sensitive then TV out just clock out the data frequently. You’ll need a lot of shift registers though unless you’re going to use prefab modules ofcourse.

I wired up an Arduboy to an Uno and am using an interrupt to read the data.

I’ll create a new forum post about this tomorrow.

I hit a brick wall. :triumph:

I have been working on a solution to use an FPGA in place of the SSD1306, outputting to VGA! :slight_smile:

The FPGA chip I am aiming at only costs around $7 (AUD), just need to work on a PCB design now - and then I should be able to produce a small board that could slot into any DIY Arduboy in place of the OLED, and plug into VGA… (the breadboard in the photo is just there for a 5V to 3.3V level shifter between the Arduino & the FPGA):


This is a fairly different approach to screen mirroring. Since this topic is a guide to using @crait’s technique, I suggest any further discussion on this hardware been continued in a separate topic.

1 Like

Is there an option for screen mirroring when the Arduboy isn’t detected by the PC? I am using an Arduino Micro and a lot of program’s designed for the Arduboy will not work with the Arduino Micro. Is there a program that can mirror the screen of the Arduino by forcing the Serial Port, since a lot of the program’s only have a connect button and it will automatically search for the Arduboy

No without modifying the program that shows the screen.

No that isn’t the issue, the program running om my PC doesn’t detect the Arduino. even when i start up a game with streaming support

Well, you need the program to detect it first.

What you can try is to tamper your Arduino with the arduboy VID and PID:

The second option is to ask @crait to include more boards in his program.

i’d rather not want to mess with the VID and PID of my arduino, since if i brick it like fully i can’t go back without first having to destroy my Arduboy clone since it is soldered in permanently. (i thought of adding headers so i can remove it later when necessary, but then it became too high and your hands would get in the way and could cause a discomfort while playing)

I guess i’ll send @crait a message to ask if he can support the board (which i think i had done before, so hopefully he is working on it)

There is a third option, use sae to modify the program detection routine, in this case is quite rudimentary, just a string comparison:

Here is the modified program:
new server:

Thanks! I’ll give it a try… but uhh…
I think i might have bricked my Arduino :sweat_smile:
I uploaded a sketch that was using almost all the RAM that was available (18 bytes left) and all i got was a black screen. so i tried to upload the same sketch but with way less particles, which gave me a lot of ram back. But i got a weird error from the Arduino IDE so i unplugged the device and plugged it back in and now all i get is a error from windows as in “The recently connected device caused a malfunction” and i am no longer able to upload any code to it since it doesn’t see the serial port of it :fearful:
This is what device manager reports:
(translated: request for device description failed)

Yup, seems bricked. You can unbrick it but it is another jorney waiting for parts :smiley:

Do you mean as in buy a new Arduino Micro?
But do you think it’ll work again if i burn the bootloader back on or if i use an external programmer?
All i can do is use an Arduino as ISP or an FTDI adapter. But can you really destroy an arduino purely with code?

Getting a new one will take the same and it is probably cheaper. But, yes, you need an external programmer

Okay don’t ask me how, but somehow i got it to work again :face_with_raised_eyebrow:
I notices that sometimes it would be displayed again as an Arduino Micro, but i had to be fast with uploading a sketch since if i waited to long the Arduino would hang and i then i am not able to upload code to it.
But what i did was hold the reset button for some time while plugged in and then there was a chance it appeared again. But it works again :grin: