Close
0%
0%

Belgrade Badge Demoscene

Show us your best conference badge firmware hacks even if you're not there!

Friday, March 25, 2016 08:00 am PDT - Saturday, April 9, 2016 04:00 pm CET
Similar projects worth following

Hackaday | Belgrade is completely sold old. If you don't have a ticket, you can't get your hands on this awesome badge. But you can still win some stuff for hacking it!

This Belgrade Badge Demoscene contest challenges you to write the best firmware you can and we'll demo your work at the conference.

Here's How to Enter:

  1. Start a project page for your entry
  2. Use the file hosting feature to upload your code (either .C and .H files, or a precompiled .hex file)
  3. Use the dropdown box on your project page to submit it to the Belgrade Badge Demoscene contest.

How Do I Write Code without Having a Badge?

There is a software emulator already set up for that. Check out this repo from GitHub:

https://github.com/Hack-a-Day/Belgrade_Badge_Demoscene

It uses the SDL2 library to show the hardware badge's LED matrix, and to react to button presses. Write your own code in the bh-badge-animate.c (and .h) files, test them using the software emulator, then iterate until you have something you want to show off.

Demoscene at Conference and Prizes

The day of the conferece we'll be showing off badge hacks done by conference attendees. During this presentation, we'll have "badge surrogates" download your code onto their badge and present it at the conference.

Judging will be at the sole discretion of the Hackaday Staff on hand for the conference. We will pick several top winners and send them a copy of the Hackaday Omnibus.

Demoscene is awesome, and we can't wait to recap all of the submission on the front page. You only have a couple of weeks to pull this together. Better get started right away!

An Example:

I'm working on putting together a sample project page as an entry (check back soon for that) and already have the code for this finished. You can check that out in my own demo repo. Just remember, submitting the code is the minimum you have to do, but it's wise to describe what you have accomplished so that your badge surrogate can do the best job of showing it off at the conference.

I'm Way Too Hardcore to Use Your Emulator

Don't want to do the hand-holding that goes along with the C framework? Great! Clone the official firmware and see what you can do. Fair warning -- this code is not yet bug free. We'll be working on it right down to the day of the conference so don't forget pull changes back into your code base once in a while.

MPLABX Framework

Those attending the conference, or who just want closer access to the hardware but still want to write in C should check out the MPLABX Framework. This is specifically designed to work with the new bootloader/kernel hybrid which Voja Antonic has implemented.

Advance info about bootloader/kernel compliance (thar be dragons here):

This is only for very advanced users (and geeks who are curious). Ignore this if you don't fall into those categories as this is all taken care of by the software emulator, or if you choose to use it, the MPLABX framework.

Voja's work is quite interesting. It handles all of the low-level hardware issues, like display scanning, button debounce, sleep more, and tx/rx using the IR communcations on the badge. The MPLABX Framework above takes care of all the connections needed to work with the bootloader. Here's a synopsis of that:

  • Compiled code should have a code offset of 0x180C and prohibit use of ROM ranges 0x0000-0x180B
  • Memory should be mapped to match the bootloader (find that information in this header file)
  • Interrupt Vectors:
    • The booloader handles interrupts and redirects high and low priority to 0x1800 and 0x1806 respectively
    • Your code must catch those calls at those address and ultimately redirect them to 0x1008
    • In this way you can add your own hardware interrupts and service them. All of this is demonstrated in the main C file of the MPLABX framework.

  • MPLABX Framework for Badge

    Mike Szczys04/04/2016 at 20:51 0 comments

    I have just published a stable MPLABX project for hacking the Hackaday Belgrade Badge:

    https://github.com/Hack-a-Day/hackaday-belgrade-badge-MPLABX

    This is fully compatible with the software emulator and this is what we will use to compile your contest code during the demoparty.

    If you are going to be at Hackaday Belgrade, make sure you download this repository and set up MPLABX and XC8 compiler, also the flash utility, in advance. All of this is discussed in the readme.

    For those of you who can't make it to the conference, this may still relevant. It shows how to get much lower-level access to the hardware (PIC18F25K50). It will also allow you to judge memory and program space usage.

View contest log

Enjoy this contest?

Share      

Discussions

kamnxt wrote 04/09/2016 at 15:24 point

Is it still possible to submit an entry?

  Are you sure? yes | no

matseng wrote 03/26/2016 at 14:17 point

I opened an issue with a mini-HOWTO to get the emulator running under OSX

https://github.com/Hack-a-Day/Belgrade_Badge_Demoscene/issues/3

  Are you sure? yes | no

davedarko wrote 03/26/2016 at 20:07 point

thanks in advance, haven't tried it, but thaaaaanks!

  Are you sure? yes | no

Mike Szczys wrote 03/28/2016 at 13:14 point

Thanks for that! I saw the issue and added a link to it in the readme.

  Are you sure? yes | no

Eager to get building?

Become a member and discover thousands of projects