zedrummer
Registered
Hi friends
After reading this thread https://www.pinballinfo.com/communi...-led-not-colordmd-or-pin2dmd-but-zedmd.57155/ , I wanted to clarify why and how I coded ZeDMD real DMD then Serum colorization format.
I have been a coder as a hobbyist since I was 8, I'm now 49. I've always spent a lot of my spare time coding, even now that I have music and lutherie as a hobbyist, this is still really important.
After making my vpin back in 2018, I started to work on a FULL home made jukebox starting from scratch, wood working and software. At one point, I wanted to add some extra lighting using LED strip. As I wanted the lighting to be reacting to music, I discovered ESP32 µcontrollers. Eventually I made this:
(the code has changed a little bit).
ESP32 are cheap (around 8€) and extremely powerful. In my JB, there are about 1000 LEDs in LED strips and as you can see, I can display an animation LED per LED without any slowdown. And interfacing the ESP32 with a PC is not a big deal for simple tasks.
Then I had some spare 128x32 LED matrices at home and decided to try to make a simple Tetris with just the ESP32, as this is a really simple game to code (the first game I made back when I was 11 or 12). It took me only 2 days for something really smooth.
That's when it all started, I then wondered why I wouldn't try to create a real DMD with it. I was not sure I could do it, but I contacted Freezy who gave me some overall guidelines on how to code an "output driver" for dmdext. Eventually, I had the first version of ZeDMD working with dmdext and displaying any format from original 4-or-16-shades of orange roms to 16-or-64-color VNI/PAL colorizations to FlexDMD/any frontend 256 color images. The device was far from being optimized and displaying a 256 color animation was quite slow.
At that moment, Lucky1 released his PAC format, aimed at replacing any VNI/PAL and targeting only Pin2DMD. I tried to PM him and talk about releasing it for any real DMD. He seemed not to be OK with that and I told him that as I don't want to abandon my ZeDMD (without colorization, the device had no future), I may start to design the Serum colorization format and to code its editor ColorizingDMD (https://github.com/zesinger/ColorizingDMD).
When the first Serums were released (Scared Stiff by Dtatane https://vpuniverse.com/files/file/13489-scared-stiff-bally-1996-dmd-64-colors-serum-format/ and Tron by Ebor https://vpuniverse.com/files/file/14216-tron-legacy-stern-2011-dmd-64-colors-serum-format-v22-final/), I was contacted by Markus Kalkbrenner, a german guy who had a full system called PPUC (https://github.com/mkalkbrenner/PPUC) based on Pin2DMD aimed at real pinball machines. He was interested in adding the Serum decoding and ZeDMD device to his project. As all my projects are open-source and available on Github, he started to propose improvement and huge optimizations for the ZeDMD mainly on the connection and communication code. As coding for the Serum editor is a full time job, I proposed to Markus to become the owner of the ZeDMD as he really deserves it: now, thanks to him, ZeDMD (128x32) and ZeDMD HD (256x64) support compression, the device can cope with any colour depth at any resolution.
For those looking for a tutorial, I tried to wrote a comprehensive one here https://www.pincabpassion.net/t14796-zedmd-installation-english.
On my side, you can see what is possible with the Serum format looking on the update thread at VPU https://vpuniverse.com/forums/topic/8542-new-features-for-colorizingdmd-editor/ or at the comprehensive tuto about the editor https://www.pincabpassion.net/t15414-comprehensive-tuto-about-colorizingdmd. I think there is great potential, we have more and more colorization authors joining, you can check the WIPs joining the community on the Discord server https:// discord .gg/aK2dNaB6xR.
I saw the question: how colorization works? if you read the tuto you'll have the comprehensive answer, but in short: the colorization program receives the raw/original frame, tries to identify it (calculating a hashcode and comparing it with all the hashcodes available in the colorization file), then it knows which corresponding colorized frame is to be displayed. That's a little more complicated, as there is dynamic content like scores and such, but you've got the idea.
I hope this answer makes things clear. Don't hesitate to ask for more.
Thanks
David aka Zedrummer or Zed
After reading this thread https://www.pinballinfo.com/communi...-led-not-colordmd-or-pin2dmd-but-zedmd.57155/ , I wanted to clarify why and how I coded ZeDMD real DMD then Serum colorization format.
I have been a coder as a hobbyist since I was 8, I'm now 49. I've always spent a lot of my spare time coding, even now that I have music and lutherie as a hobbyist, this is still really important.
After making my vpin back in 2018, I started to work on a FULL home made jukebox starting from scratch, wood working and software. At one point, I wanted to add some extra lighting using LED strip. As I wanted the lighting to be reacting to music, I discovered ESP32 µcontrollers. Eventually I made this:
(the code has changed a little bit).
ESP32 are cheap (around 8€) and extremely powerful. In my JB, there are about 1000 LEDs in LED strips and as you can see, I can display an animation LED per LED without any slowdown. And interfacing the ESP32 with a PC is not a big deal for simple tasks.
Then I had some spare 128x32 LED matrices at home and decided to try to make a simple Tetris with just the ESP32, as this is a really simple game to code (the first game I made back when I was 11 or 12). It took me only 2 days for something really smooth.
That's when it all started, I then wondered why I wouldn't try to create a real DMD with it. I was not sure I could do it, but I contacted Freezy who gave me some overall guidelines on how to code an "output driver" for dmdext. Eventually, I had the first version of ZeDMD working with dmdext and displaying any format from original 4-or-16-shades of orange roms to 16-or-64-color VNI/PAL colorizations to FlexDMD/any frontend 256 color images. The device was far from being optimized and displaying a 256 color animation was quite slow.
At that moment, Lucky1 released his PAC format, aimed at replacing any VNI/PAL and targeting only Pin2DMD. I tried to PM him and talk about releasing it for any real DMD. He seemed not to be OK with that and I told him that as I don't want to abandon my ZeDMD (without colorization, the device had no future), I may start to design the Serum colorization format and to code its editor ColorizingDMD (https://github.com/zesinger/ColorizingDMD).
When the first Serums were released (Scared Stiff by Dtatane https://vpuniverse.com/files/file/13489-scared-stiff-bally-1996-dmd-64-colors-serum-format/ and Tron by Ebor https://vpuniverse.com/files/file/14216-tron-legacy-stern-2011-dmd-64-colors-serum-format-v22-final/), I was contacted by Markus Kalkbrenner, a german guy who had a full system called PPUC (https://github.com/mkalkbrenner/PPUC) based on Pin2DMD aimed at real pinball machines. He was interested in adding the Serum decoding and ZeDMD device to his project. As all my projects are open-source and available on Github, he started to propose improvement and huge optimizations for the ZeDMD mainly on the connection and communication code. As coding for the Serum editor is a full time job, I proposed to Markus to become the owner of the ZeDMD as he really deserves it: now, thanks to him, ZeDMD (128x32) and ZeDMD HD (256x64) support compression, the device can cope with any colour depth at any resolution.
For those looking for a tutorial, I tried to wrote a comprehensive one here https://www.pincabpassion.net/t14796-zedmd-installation-english.
On my side, you can see what is possible with the Serum format looking on the update thread at VPU https://vpuniverse.com/forums/topic/8542-new-features-for-colorizingdmd-editor/ or at the comprehensive tuto about the editor https://www.pincabpassion.net/t15414-comprehensive-tuto-about-colorizingdmd. I think there is great potential, we have more and more colorization authors joining, you can check the WIPs joining the community on the Discord server https:// discord .gg/aK2dNaB6xR.
I saw the question: how colorization works? if you read the tuto you'll have the comprehensive answer, but in short: the colorization program receives the raw/original frame, tries to identify it (calculating a hashcode and comparing it with all the hashcodes available in the colorization file), then it knows which corresponding colorized frame is to be displayed. That's a little more complicated, as there is dynamic content like scores and such, but you've got the idea.
I hope this answer makes things clear. Don't hesitate to ask for more.
Thanks
David aka Zedrummer or Zed
Last edited: