How to create custom mapper for interstate 75?

I have a stack of 4 64x32 hub75 modules. I’ve gotten them hooked up to my Interstate 75w, and after some experimenting I’ve determined that they work hub75 module when chained together, if I set the resolution to 256x32.

However, I’d really like to run the display at 128x64, so I need to be able have the virtual pixel grid which will work with the graphics library, but have it remap the pixels to show up properly when the panels are arranged properly.

However, i’m having a hard time finding the source code where I can go to actually write a new mapper or update the existing ones. I checked github but I think i’m looking in the wrong place. I found the .py files but I didn’t find the lower level code for the software, and in another place i found the micropython code but it didn’t seem to include the support files to compile a new i75 firmware.

any suggestions?

Tagging alone, as I have two 64 x 32 (128x32) that I want to run as 64x64. Mine is an Interstate 75W, RP2040W onboard. Also running an older version of the Pimoroni uf2. It’s been sitting there doing its thing so I haven’t undated it in a while, no real need to.

1 Like

I’m still trying to figure out how to pull the repo the right way so I can recompile everything, i found the hub75.cpp file within the rp2040 section, i thought it would be under the rp2350 section but it seems like it’s a more complicated set of inheritance and dependencies than i expected.

I feel like if i do some dirty math in the hub75 set_color function that might let me do one level of remapping, but i don’t know yet if the picographics uses that at the low level.

I’m hoping one of the devs will point me towards the right function where I can intercept the processing to map the pixels a different way. I don’t need more than like 15fps for my purposes so i don’t care if it’s slow. Otherwise I’ll keep trying to make sense of the codebase.

If you haven’t already, posting on github may get you faster results.

I ended up switching to CircuitPython. The graphics library in pimoroni seems way, way better designed for humans, but the hub75 driver just wasn’t up to the task.

I ended up needing to use a new power supply too; with the micropython driver I could have all four displays running at max brightness and nothing even broke a sweat, whereas with the circuitpython hub75 driver, the display ends up pulling over 10 amps with all panels at full brightness, its also way brighter.

It also natively supported the different resolution, tiling mode, and even the panel serpentine flipping properly. Working with displayio is not a fate I’d wish on anyone, but sadly it’s the only option here.

I have an Adafruit Matrix Portal, it’s what I started out with way back when. Trying to display scrolling text with displayio was so frustrating that I finally just threw in the towel. Right about then the i75W came out and I switched to it. I still can’t do scrolling text with my orientation, but what I am displaying is now easy peasy.