White shadow / lines on screen?

I just noticed while playing Mystic Balloon some white lines/shadow on the screen of my Arduboy. It seems to occur when there are black straight horizontal lines. Is this normal? I bought mine from Seeedstudio and got it a few days ago.

No white lines/shadow on straight vertical or curve lines.

All three of my arduboys do this. So guessing it’s just how the screen works.


Thanks! It’s not that deal breaker but i hope they fix it with the next version of Arduboy.

I kinda like it myself. Gives the screen some character.

I think is called ghosting. And it is normal.


I tried a 0.96" oled screen with a pro micro i have and the display looks great without any ghosting. It’s looks better than the screen on my Arduboy. Also tried a 1.3" oled screen but it looks even worse and ghosting is still there.

OLEDs dont have ghosting like LCDs do by merit of how each display technology works. LCDs rely on a physical property of viscous liquid crystals having to flow and bend polarized light and so there is a physical time constant/delay to switching on and off pixels (and thus “ghosting”, an after image of rapidly moving sprites, is visible). OLEDs however can switch basically at the latency of the tft backplane which is on the order of nanoseconds (since diodes/transistors switch very quickly, much too fast to be noticeable by the human eye). This is actually the property that is used to multiplex the rapidly flashed columns to look like the whole display is lit due to the persistence of vision to our eyes. This banding/interference pattern is actually an artifact of the multiplexing (lighting a single column at a time and scanning left to right rapidly, etc). In the driver settings you can actually adjust the multiplex scan rates and alter duty to change brightness both of which can minimize this effect.


So how do you adjust the multiplex settings in an Arduboy?

You’d have to tweak the oled initialization function and recompile each game with the help of the ssd1306 datasheet to know which register to set to what value. Another possibly easier way would be to find the location in the precompiled game hex files where that instruction is called (you’d have to figure out the byte sequence for that register write first) and manually change the value (this could be automated like blinky’s ssd1309 patching program).

Interesting. Can you do it for one sketch? patching the games would be the easy part. I can patch all http://arduboy.ried.cl in few minutes

Interesting. I’m looking at the datasheet and found:

10.1.11 Set Multiplex Ratio (A8h)
This command switches the default 63 multiplex mode to any multiplex ratio, ranging from 16 to 63. The output pads COM0~COM63 will be switched to the corresponding COM signal.

And found these lines under Arduboy2Core.cpp:

// Set Multiplex Ratio v = 0x3F
// 0xA8, 0x3F,

The default value is 63 which is 0x3F in hexadecimal.

Unfortunately this is an artifact of the OLED screen, they all do this. I generally recommend games design their artwork with white on black to avoid this but some people cannot avoid the allure of a bright background. The settings you are seeing are theoretically related to the issue but would need to be adjusted on a line by line basis and there is no provision to be able to do that. I’d love to get Vsync but that’s a whole other battle we fought years ago.

1 Like