It sounds like a memory buffer gets corrupted resulting unexpected artifacts appearing on the display. As these types of displays are normally completely refreshed each frame, the corrupted memory likely in is the processor.
Consider adding:
dmd.clearScreen(true);
... in the update loop before completely describing what is to be displayed. This line of code was found on line 84 of this DMD example code on the DMD GITLAB repository.
Added later...
Other possible causes to consider:
- Some Arduino boards have linear power regulators which require higher voltages then that required to operate the processor. If you are using such an Arduino, make sure you allow for this unexpected consumption of voltage.
- HUB 75 like displays need to be continuously updated and require consistent timing. Even though it may make this project pointless, consider removing any conditionally executed code which may disturb the timing of the HUB 75 like control signals. Test the resulting code for any unexpected display behavior over similar time and under similar power conditions.
- If powering the HUB 75 like display separately, make sure there is a robust common ground wire connecting the Arduino and HUB 75 like display.
- Keep all wiring / cables as short as possible. In many examples, the HUB 75 like display cable is less than one foot (~30 cm) long.