PinPal is a handheld device that acts as a controller for your iPhone. It has four hardware buttons and a DMD display. It is made specifically for the newly released VPX (Visual Pinball X) app on the Apple iOS App Store.
The VPX iOS app has built-in support for a ZeDMD display device, and I've built specific firmware for the Lilygo T-Display S3 AMOLED device. The display refresh speed is high enough for enjoyable gameplay, and there are also different scaling modes available to simulate a DMD pixel display. The ZeDMD firmware has full support for colorized DMD with the help of Serum.
There are 4 different scaling methods available; this is using the 2x2 pixel mode ( this is drawn in a 4x4 black pixel block to simulate the DMD effect ).
-- Update 22-10-2024
Todo:
After weeks of tinkering, I've completed the first prototype of my portable pinball handheld device. While it still has some rough edges, it fully works as I originally envisioned. The current version is designed for the iPhone Pro Max series with a USB-C connector. Moving forward, I plan to release four versions:
iPhone 15/16 Pro Max (USB-C) — already released
iPhone 15/16 Pro (USB-C)
iPhone 13/14 Pro Max (Lightning)
iPhone 13/14 Pro (Lightning)
At the moment, I'm experimenting with different button configurations to improve comfort, as I'm not entirely satisfied with the current layout. I’ve also developed firmware for the ESP32 Zero that emulates a keyboard for the hardware buttons. In the next iteration, I’ll be converting this firmware to function as a game controller, which should resolve the issue of the on-screen keyboard interfering with gameplay.
I’ll be releasing all of my 3D printable files in both STL and STEP formats. I’m not a professional 3D modeler; so the models are not perfect :-)
I encourage others to take my designs, improve upon them, and make the project better or start their own versions of this concept!
Stay tuned, i will document this later.
I would like to thank the following people for help on this project, without them this wouldn't have been possible: