The 1 kB Challenge deadline has come and gone. The judges have done their work, and we’re ready to announce the winners. Before you jump down to find out who won, I’d like to take a moment to say thanks to everyone who participated. We had some incredible entries. To say that judging was hard is quite an understatement. Even [Eben Upton], father of the Raspberry Pi got in on the action. He created a new helicopter game for the classic BBC Micro. Look for writeups on the winners and many of the other entries in the coming weeks.
Grand Prize
The grand prize goes to [Jaromir Sukuba] for Brainf*cktor. [Jaromir] went above and beyond this time. He created a computer which can be programmed in everyone’s favorite esoteric programming language. Brainf*cktor uses 1019 bytes of program memory in [Jaromir’s] PIC18F26K22. You can write, execute and edit programs. [Jaromir] ran into a bit of a problem with his LCD. The character tables would have thrown him over the 1 kB limit. Not a problem – he designed his own compressed character set, which is included in the 1019 bytes mentioned above. All the clever software takes physical form with a homemade PCB, and a case built from blank PCB material. Best of all, [Jaromir] has explained his software tricks, as well as included a full build log for anyone who wants to replicate his project. All that hard work will be rewarded with a Digi-Comp II kit from EMSL.
First Prize
First prize goes to [Dumitru Stama] with M0S – CortexM0 RTOS in 1024 bytes. Operating systems are complex beasts. Many of our readers have toyed with the Linux Kernel. But writing a real-time OS from scratch? That’s quite an undertaking. [Dumitru] didn’t shy away from the challenge. He designed a Real-Time Operating System (RTOS) for ARM processors, written completely in ARM thumb assembly instructions. This is no bare-bones executive. M0S has a rich list of features, including preemptive task scheduling, mutexes, and inter-process communication. [Dumitru] even gave us memory allocation with an implementation of malloc() and free(). The OS was demonstrated with a NUCLEO-F072RB board from ST-Micro.
[Dumitru] didn’t just drop a GitHub link and run. He documented M0S with seven project logs and a 37-minute long video. The video uses electronic whiteboard drawings to clearly explain all the internal workings of the operating system, as well as how to use it.
[Dumitru] is the proud new owner of a Maker Select 3D printer V2!
Second Prize
Second prize goes to [Cyrille Gindreau] with 1K Challange Laser. Vector lasers generally take lots of memory. You have to manage galvanometers, laser drive, and perform all the magic it takes to convert a set of vectors to lines drawn in space. The project uses 912 bytes of program and initialized data memory to command an MSP430 to draw an image.
Proving that flattery will get you everywhere, [Cyrille] picked the Hackaday logo as the subject. The Jolly Wrencher is not exactly simple to convert to vector format, though. It took some careful optimizations to come up with an image that fit within 1 kB. [Cyrille] wins a Bulbdial Clock kit from EMSL.
Third Prize
Third prize goes to [Mark Sherman] with tinygames. Video games have been around for awhile, but they are never quite this small. [Mark] coaxed the minuscule Atmel ATtiny84 to play Centipede with only 1024 bytes of program memory. Even the BOM is kept small, with just a few support components. Control is handled by an Atari 2600 compatible joystick. Video is black and white NTSC, which is demonstrated on a period accurate CRT. [Mark] generates his video by racing the electron beam, exactly the same way the Atari 2600 did it.
[Mark] will take home a Blinkytile kit from Blinkinlabs.
Final thoughts
First of all, I’d like to thank the judges. Our own [Jenny List], [Gerrit Coetzee], [Pedro Umbelino], [Bil Herd], and [Brian Benchoff] worked hard with me in judging this contest. I’d also like to thank our community for creating some amazing projects. The contest may be over, but these projects are now out there for others to build, enjoy, and learn from.
I’ve wanted to organize this contest since [Jeri Ellsworth] and [Chris Gammell] took on the 555 contest way back in 2011. The problem is creating a set of rules that would be relatively fair to every architecture. I think 133 entries to this contest proves that we found a very fair set of constraints. It is safe to say this won’t be the last 1 kB Challenge here at Hackaday, so if you have ideas for future editions, share them in the comments!
Oh my, grand prize – that’s awesome!
Thanks to HaD team for making this great contest and other participants for making tough competition.
Regarding future contests, some random ideas: what about having 8-pin MCU contest? Or “under 1mW” contest.
Agreed – a low power contest would be interesting. Maybe an under 1WH challenge – do the most useful thing for the longest time…
Related to the low-power one, maybe a low-power by solar cell and capacitor/battery with a specific small type of cell specified.
So not only does it need to be low power overall, but self contained and recurring.
How about ‘CR2032 Challenge’?
+1
I thought of that,
People are abusing CR2032 for tens of miliamps of continuous current. CR2032 will manage to do that for tens of minutes or thereabouts and then fail. So, CR2032 doesn’t actually mean the device is low-power. That’s why I specified power in Watts instead to make them think about the design instead of just throwing CR2032 randomly,
What about a pin-reduced version? or some other physical constraint?
Good choice! Well deserved prices. Congrats to all the winners!
Congrats to the winnersssss!!!
AAAAAnd the second Congrats goes to The Judges!
AAAAAAAnd the third Congrats goes to all The Participants!!!!!
AAAAAAAAAnd, the most important one prize, the Honorable Mention goes to all HackADay Readers!
Yeaaaaaaa!!! (fireworks here :o)
That compressed character set idea was the best idea I had seen in a very long time.
+1
I dig the 2nd prize, Reminiscent of the demoscene. 3rd is cool too, everyone loves an arcade classic. 1st is impressive, but I don’t know enough to fully appreciate it.
/pedantry
Shouldn’t this be the 1kiB challenge?
No. Stupid revisionism. A kilobyte is 1024 bytes and the rest follows from it.
Blame Microsoft / software folk.
I blame the French, and hard drive manufacturers.
Apart from that, congrats to the winners, some nice projects there! It’s nice to see low-memory, low-MIPS software doing something great. That’s all people had in the old days!
So if I use 4 kB I can have a real-time operating system that is programmed in BF and has a laser display system, as well as some installed software, a game? Awesome!
I was just about to say something similar, now combine 1 and 2 and write a OS in BF – from scratch and without any $real_language-to-BF-converter of course! :-)
Seriously, really interesting stuff here. It’s really cool to see people trying really hard to NOT produce bloatware.
Only if you use a MCU that can understand and switch between AVR, ARM and MSP430 instruction sets on-the-fly.
PIC too but point stands lol
There are no architecture exclusive instructions or methods used are there? You can implement all of the the logic on any of them.
You can… the instructions are more or less the same in meaning, but formatted completely differently and with very different register sets. For starters, AVR is 8-bit, MSP430 is 16-bit and ARM is 32-bit!
Why stop at 4K? Imagine you had 4 Jiggabytes! Then you could load buggy webpages that steal your banking credentials! More is more!
yes!
Congrats to all the winners! There’s some serious creativity here!
This just goes to support the notion 64KB should be more than enough to program anything anyone could ever want to do. /s
Aside from that historical reference, I’d like to pass along my congratulations too.
It was 640kB
You only need 133K for this entire competition!
Yes, at the beginning of the time of the C64 you could think that. :-) And then sometimes games started to force you to swap floppies in and out of this really-slow 1541. :-)
Oh man, the thing that caused me to throw in my towel didn’t even make the top list! That crazy OS in a KB.
There’s always next time! And maybe on an esp8266 :)
Your OS really made me say wow and knew I never had a chance (never did anyway). But put in a fairly lame project (got a like! lol) to support hackaday contest numbers.
Centipede in 1kB? That’s pretty nifty!
I have to say that I enjoyed this contest a lot — it made me learn a lot of things, more than any other previously. Thank you!
Thanks! Helping folks learn new techniques was one of my goals with this contest.
Rgba – elevated … google it
Congratulations to everyone.
Always under appreciated, the Kernel is program of all programs
Congrats to everyone who came out ahead of me. And thanks everyone! ( Oh, and I don’t want to like, hey give me my prize, but I’ve moved since last time Hackaday sent me something, so if there’s a place to update our addresses in our profiles.. I don’t see it anywhere. Thanks! )
You might want to email HaD just to be sure they get the correct info.
And congratulations!
Congratz to all the winners & everyone who took part, This was way above my level of skill so I sat this one out.
Love the Centipede hack. I played around with Stella (Atari 2600) code back around 2001 and wrote the “Definitive Combat Disassembly” which is still up at AtariAge. Even with the advantage of a more modern CPU the tricks used to pack it in 1K are eerily familiar.
Excellent work, everyone! Those were some amazing projects!
Wow, there are some true craftsmen left! Beautiful work.
Congrats, all! Perty slick!
Kudos to all competitors! Very impressive!
An excellent contest idea… A Thank You goes to HAD for the contest.
Blast from the past… it’s the way we had to do things back in the 70’s. Reminds me why I got out of the electronics closet and into R/C Aviation.
Clearly the “S” on the “MOS” screen shot is upside down.
Nice entries, congrats to all winners and thanks to the judges.
Maybe the next contest could be a 4k contest? That’s a common size for demo parties, too, see e.g. http://www.assembly.org/summer16/demoscene/rules/ My project needed 2k, so I couldn’t submit it for this contest, and if you have some more offset to implement some sophisticated packer or interpreter, bigger projects could be implemented. For example the whole C64 BASIC interpreter was implemented in 8k. But then the contest should run longer, like half a year.
I preferred the Space Invaders in 1kB submission (with vga) over the snake game.. still awesome efforts by all the creators who entered.
I never thought much of this as a challenge as most of my work projects rarely exceed 1KB of code, however the quality and the functionality in many of these blew my mind and made my code seem bloated and wasteful, it also made me realise there are some very clever people out there and I’m not one of them.
Congratulations to all those who took part and especially the winners who were very deserving.
Don’t get down on yourself – many of these projects provided an education for me – and I’m an editor here! A lot of clever techniques can be found in old books and magazines. The people back then made do with tiny resources because that’s all they had at the time.
Thank you for this awesome challenge, really high quality entries.
I also want to thank the judges for choosing one of my entries for the first prize.
I hope to see this contest again soon
I have an idea: Why dont you do a 1 Mega byte challenge.That would be cool.