The SHARP Memory Display is connected as follows:
These pins can be changed by editing config.h.
(The protective film is still on the screen, so that's why there's a yellow stripe there.)
This is a super basic example, with just the
Screen device defined. In future, the
Controller device will be incorporated using a virtual serial port on the Pico's USB device.
Makefile downloads the Raspberry Pi Pico SDK, TinyUSB and Uxn into the
uxn directories respectively.
If you have picotool installed, you can flash the Pico with:
The SHARP Memory Display is only black and white, while Uxn provides four colors. The current color mapping is:
|fg||3||Blinking, mainly white|
|bg||2||Blinking, mainly white|
|bg||3||Blinking, mainly black|
It's a bit of a bizarre mapping, compared to Uxn's original scheme, and of course flashing can be achieved in the ROM that Uxn runs, but it's an easy way to provide simple UIs where, e.g., the selected tool in a toolbox blinks.
The color mapping is done entirely in the PIO program, so the
Screen's memory can be transferred with DMA out to the SHARP display with hardly any work done by the ARM core.
Writing the whole screen takes around 50 ms or three standard Uxn frames, limited by the communication rate of the display hardware. Individual rows of the display can be written independently, so to improve the framerate only dirty rows are written when
screen_redraw is called. Uxn's
Screen vector is still called at 60 Hz so time-sensitive things run at the correct speed even if writing to the display falls behind.
Controllerdevice over USB, perhaps