DMD shading was broken on some sequence (T2 fire sequence was blinking for example),
alpha segment where not dimming / blinking as they are on the real hardware.
This PR fixes this by:
rewriting the FIRQ implementation: FIRQ has 3 possible sources (WPC high res timer, DMD programmable interrupt, sound board) which must be managed and acknowledged by the CPU separately. This was only (very) partially implemented. It should be ok now. It also fix the HSYNC / VSYNC rates of the DMD (122Hz)
implementing the missing WPC high res timer. This part was made by guessing since I did not find any reference. It looks good (easiest test is BOP service menu) but is based on guessed frequency and behavior.
rewrite the DMD PWM shading code to something very similar to what was recently done for GTS3 (accumulate frame and apply a low pass FIR filter).
I made tests to validate everything and it looks good (even Phantom Haus :) ) but these are somewhat deep changes that should be more thoroughly tested if possible, especially for PROC (I don't have the setup to test it)
While moving forward with the review of the DMD code for VPX DMD renderer and following @toxieainc comment (see https://github.com/vpinball/pinmame/pull/306), 2 bugs appeared:
This PR fixes this by:
I made tests to validate everything and it looks good (even Phantom Haus :) ) but these are somewhat deep changes that should be more thoroughly tested if possible, especially for PROC (I don't have the setup to test it)