When the second band had played its last encore, before the legendary DJ took the stage, a cadre of hardware hackers climbed three steps with a twinkle in their eyes and glowing electronics in their hands. I’m surprised and relieved that the nugget of excitement that first led me to twiddle a byte in a microcontroller is still alive, and this moment — this crossroads of hacker family — stirred that molten hot center of adventure in everyone.
The badge hacking demoscene is a welcoming one. No blinking pixel is too simple, and no half-implemented idea falls short of impressing everyone because they prove the creativity, effort, and courage of each who got up to share their creation. How could we ever get together as a community and not do this?
It was after midnight before we began the demoparty. I somehow managed to come to the Hackaday | Belgrade conference without a USB webcam to use as a top-down camera. I also didn’t line up someone to record with a camera until minutes before. Please forgive our technical difficulties — we first tried to use a laptop webcam to project to the bigscreen. When that failed, focusing on the badges because tough for our ad-hoc camera operator. This video is a hack, but I think it’s worth looking past its tech problems.
The crowd gathered as close to the stage as possible and there was electricity in the audience as the wiles of the day were explained. Join me after the break for a brief rundown of each demo, along with a timestamp to find it in the video.
The platform used for the Hackaday | Belgrade badge is the creation of Voja Antonic. It is a single PCB with 8×16 LED display, four directional buttons plus a fifth user button, and an IR receiver with IR LED for transmitting. The PIC18LF25K50 (which were donated by Microchip for the event) is running a bootloader that allows the badge to be programmed using a micro-USB cable. Programming options were many, using the abstracted C code to tinker without intimate knowledge of the underlying hardware, drilling down to the memory mapped electronics handled by Voja’s ‘kernel’, or going beyond to overwrite the bootloader using a programmer to run your own completely custom code. We saw every level of hacking this code, as well as a custom hardware hack. Much of this code has been posted to Hackaday.io.
00:34 [Der Knopf] Fly Badge: This is an implementation of a game similar to Flappy Bird. This is an online entry, which was written without ever having the hardware to test it out. It runs a little quickly but is very playable.
01:36 [Mike Harrison], our keynote speaker, came prepared to the conference. He had been watching the development of the badge and began writing his own completely custom code for the hardware a few weeks before the conference. He met up with the Hackaday crew the night before the event and asked if he could get an early badge to work on his code. He didn’t disappoint. His demo is a greyscale with gamma correction which allows for more control than basic on/off of the pixels. He went on to implement several interesting visualizations based on this work.
03:29 [Milos] and his friend built a blast off and landing for a pixel in the display. There is a numeric count down, the pixel starts at the bottom but loses velocity over time until it reaches its apex and begins to accelerate toward the bottom of the display.
04:14 [Radovan] built a maze hunting game which he compares to “Reverse Pacman”. This is because the enemy AI is not very smart so you end up chasing it in order to prove that the player dies if crashing into it. I believe the maze itself is randomly generated, something I wish I knew more about!
05:07 [Luka] and [Yuri] introduce themselves as “two beer consumers from Slovenia”. They were the only two who pulled off a hardware hack on this particular badge — well done! They removed the LED modules (which are socketed on the badge), added a pull-down resistor to the MOSFET row driver and a capacitor to filter DC and used it to drive a pair of headphones. A chiptunes audio hack! This was their first time trying out audio synthesis and mentioned that they spent a few hours with little success — I have been there myself and I think it’s awesome they got it in the end.
06:47 This entry builds some of your favorite 8-bit video game characters into the badge; Space Invaders, Galaxian, and a game by Konami called Phoenix. For good measure she also added some Korean characters. Future plans include adding the “splat” animation from Lemmings.
07:28 [Jan], [Benjamin] and [Erik] worked as a team on this entry. They utilized the IR communications features of the badge to play two-player pong. Give the video a moment to properly focus and you will clearly see one paddle on each of the badges and the ball bouncing back and forth, making the air-gapped divide between them (can you call it air-gapped if there is wireless comms? No, but go with me). The IR is front-facing so I believe they are holding a finger over the IR LED to direct its shine toward its neighbor. A very impressive implementation.
09:14 [Matt Evans] produced a retro-Amiga demo of “metaballs” or “blobs”. The visualization is modeling the physics of electric field strengths. He mentions he had planned to work on a greyscale library but then saw [Mike Harrison’s] implementation above. That code proved a tricky to pull into his project but I still found [Matt’s] visualization on monochrome to be excellent.
10:10 [Nick] made a security hack. Voja’s badge firmware includes the ability to receive custom messages via IR, but you must know the badge’s serial number to use in the preamble of that transmission. [Nick] coded a transmitter application that cycles through all 3-digit serial numbers to spam the victim badges with the message ‘YOLO’. Badges don’t require a terminating character at the end of the message. As long as the badge is in range, its receive buffer will get filled with “YOLO”, plus the next badge serial number “YOLO” again, etc.
11:00 [Jeramias] wasn’t at the conference but sent in code for the demoparty. [Dave Darko] loaded it onto his badge and demonstrated it for Jeramias. It is Conway’s game of life running on the badge. The implementation includes speed adjustment and starting-state regeneration. But he also built an editor which allows you to set up a custom drawn state.
12:45 [Michele Perla] and [Milan Maletic] worked on a 2-player game but this one is played on just one badge. This is something of a running game inspired by the Chrome browser T-Rex minigame. The player uses two buttons to jump or duck, the opponent uses two buttons to launch high or low obstacles for the player to avoid. This uses the badge in a 16×8 sideways orientation (like the Fly Badge demoed first) and we all found it very amusing that it displays “DEAD” when the player is hit by an obstacle.
14:43 [Jan Koshier] made the game “Snake” for the badge. It starts with two dots, one is the snake and the other the fruit. As the snake eats fruit it gets longer and longer. The game ends if the snake hits the wall or its own table.
16:00 The voting begins.
18:00 [Spoiler Warning] Third place was awarded to [Mike Harrison] for his greyscale demo. Second place went to [Luka] and [Yuri] for their chiptunes build. First place went to the team of three for their Two-player pong. Prizes are from the Hackaday Store. The three top winners received a Beaglebone Green, all others who presented their hacks received a Hackaday Huzzah board. All of the online entries will receive a Hackaday Omnibus.
Thanks again to all who participated, and to the demoparty audience whose excitement and enthusiasm made it special. I guessed on spelling of names so if you want that fixed, or plan to upload your code and want it added to the collection please send me a message on Hackaday.io.