freezy / dmd-extensions

A toolbox for virtual pinball dot matrix displays.
GNU General Public License v2.0
120 stars 52 forks source link

Colorized Alphanumeric shows frames slowly on real PinDMDv3 #406

Open MikedaSpike opened 10 months ago

MikedaSpike commented 10 months ago

testing the colorized version of diner (https://vpuniverse.com/files/file/15442-diner-williams-1990-dmd-64-colors-serum-format/?tab=reviews&sort=newest#review-13700) and noticed that on the real DMD the frames are very slowly showed. it even ques everything and shows . This makes the DMD run behind the real frames.

To compare I made a video. Top is a virtual DMD and lower is my realDmDv3 https://youtu.be/XdpYBEWACQs

Also added the log file of this run DmdDevice.log

I tested this with 32 bit and 64 bit, and both shows the same result)

also when quitting Visual Pinball, the last frame is still on the DMD

mkalkbrenner commented 10 months ago

Is that issue related to PinDMDv3? Could someone reproduce the issue with ZeDMD or PIN2DMD?

Roadblock62 commented 10 months ago

I can confirm that it's happening with my pindmd3 too.

zesinger commented 10 months ago

@mkalkbrenner I confirm that on my ZeDMD with v3.3.0 there is a delay too, this is not the case with the virtual DMD. EDIT: I'm not 100% sure, but it seems to happen only when there is a background displayed. I can't see how it could be linked to Serum as there is no delay on the virtual DMD.

freezy commented 10 months ago

@zesinger @mkalkbrenner do you want me to investigate further, or are you handling this?

zesinger commented 10 months ago

Let us have a look @freezy , not sure we'll solve it soon, but first we should look on our side

studlygoorite commented 10 months ago

Same with my PinDMD3, pretty sure all was good with an earlier version of Freezy though, if you need to to confirm, just say the word.

zesinger commented 10 months ago

I have led some tests (x86 only):

MikedaSpike commented 9 months ago

Just for notice : same issue with 2.2.1

mkalkbrenner commented 4 months ago

I don't see this delay with the current development build of DMDext: https://youtu.be/B6D00oB4Co8?feature=shared&t=190

@freezy Maybe it is time for a new release?

MikedaSpike commented 4 months ago

I tested with dmdext-2.2.2-SNAPSHOT-r1-x64-Release on my real DMD, but it is still running slow DmdDevice.log

MikedaSpike commented 1 month ago

tested with v2.2.2 and v2.2.2-zedmd RC1 on my PinDMDv3, and still the same. Looks like it is even slower now.

studlygoorite commented 1 month ago

I cannot use the new color alphanumeric DMDs with my PinDMD3 either because of this.

Roadblock62 commented 5 days ago

Is there a firmware update for the PinDMD3 (call it 3.1) to convert it to a ZeDMD ?

zesinger commented 4 days ago

I can not answer for the PinDMD owners, but PinDMD3.1 is based on an ESP32 microcontroller when PinDMD3 is not, so I guess it is not possible. Anyway an ESP32 is 8€/8$ (and a shield is 20 if you don't want to wire it yourself), so you could easily create one.

Roadblock62 commented 4 days ago

Wishful thinking. Hopefully someone will come up with a solution, and I'm willing to modify the hardware. There's a lot of us out here.

MikedaSpike commented 2 days ago

Why rewriting firmware? Isn't it something wrong in the driver ? All is working, for now just the 2 colorizations of alphanumeric is very slow. Not sure if this is caused if the hardware of pindmdv3 is not processing the translation of the alphanumeric to images frames correctly, or that the libserum causes the issue. Strange part is that It is showing fine on the virtual dmd when this is enabled as well.

zesinger commented 2 days ago

libserum can't cause the issue if it doesn't for all the devices (virtual DMD included), libserum just takes an uncolored frame and returns its colorized equivalent (basically receives a memory buffer and returns another one), so it is hardware independent.

MikedaSpike commented 2 days ago

Sorry David, didn't want to make you angry. So, if libserum sends to correct frames (memory buffers) to dmddevice.dll, is something not in sync for the pindmdv3 hardware ? With other words, something that freezy can fix (but don't want to grab the time of him as VPE is already taking a lot of time).

zesinger commented 2 days ago

You really didn't make me angry, just to make clear what it does, so you understand it can't come from there. Some parts of dmdext are done by the device creators (all the code in this sub-directory https://github.com/freezy/dmd-extensions/tree/master/LibDmd/Output ), they are basically device drivers to communicate with the devices. If there are problems with only some specific devices, it is likely that the problem comes from here.