IOCCC 2025 Winners: 25 Obfuscated C Programs, Hat Tricks, and a GameBoy Emulator
The 29th International Obfuscated C Code Contest (IOCCC) winners have been announced, showcasing 25 entries that push the boundaries of confusing, creative, and technically impressive C code. The contest, which closed in 2025, attracted near-record submission quality—matching the high bar set by IOCCC28 after the four-year hiatus from 2020 to 2024.
Hat Tricks and New Locations
Three authors achieved a hat trick (three winning entries each):
- Yusuke Endoh (2025/endoh1, endoh2, endoh3)
- Nick Craig-Wood (2025/ncw1, ncw2, ncw3)
- Don Yang (2025/yang1, yang2, yang3)
Additionally, the contest saw its first winner from Taiwan: jingp49 (2025/jingp49) with a Dr. WHO sequence entry.
Notable Winning Entries
- 2025/cable – Best imaginary emulator: a Subleq computer.
- 2025/cesmoak – Retro space award: Black hole punchcard Fortran.
- 2025/endoh3 – Most resilient: a patch/diff quine.
- 2025/jhshrvdp – Most likely to teleport: a quasi-rogue-like game.
- 2025/jingp49 – Who won award: Dr. WHO sequence.
- 2025/ncw1 – Best real emulator: GameBoy emulator.
- 2025/tompng – Most soothing: ocean sound generator.
- 2025/uellenberg – Ping pong prize: Quine pong.
- 2025/yang2 – Most magical word: Zoltraak encoding.
New Fun Challenges
Each winning entry now includes a "Fun challenge" under the Judges' remarks. These challenges ask readers to create alternative versions of the code, produce explanations, or improve the entry. Open challenges accept GitHub pull requests. If the judges agree your solution is better, they'll consider it.
Rules Rewrite
The IOCCC rules and guidelines for IOCCC29 were substantially rewritten. Version 29.15 of the rules and 29.08 of the guidelines were used, thanks to volunteer contributions for edits, text rewrites, and consolidation.
Compiling and Running
If you encounter compilation problems, the FAQ recommends trying updated versions of clang or gcc. Specific FAQs cover:
- Compiling IOCCC entries
- IOCCC entry dependencies
- Problems compiling entries
- Running IOCCC entries
Next Contest
IOCCC30 is planned to open towards the end of 2026, with a similar submission window closing around Q1 2027. The judges plan to take a vacation after processing early pull requests for IOCCC29.
Technical Details for Developers
- The winning entries are available as a compressed tarball from the IOCCC website.
- Each entry's index.html page contains compilation instructions, author remarks, and now a link to a YouTube segment (once recorded).
- The contest saw a high number of submissions, with many excellent entries not making the final cut. Authors of non-winning entries are encouraged to polish and resubmit for IOCCC30.
Example: 2025/ncw1 – GameBoy Emulator
Nick Craig-Wood's entry is a GameBoy emulator written in obfuscated C. To compile and run:
# Untar the entry
tar -xzf 2025/ncw1.tar.gz
cd 2025/ncw1
# Compile (check index.html for exact command)
cc -o prog prog.c -lm
# Run with a GameBoy ROM
./prog game.gb
The program likely uses bit manipulation and tight loops to emulate the GameBoy's Z80-like CPU and graphics.
Why It Matters
IOCCC entries are a masterclass in C programming, pushing the limits of what's possible with the language. They often reveal clever algorithms, compiler quirks, and creative use of the preprocessor. Studying them can improve your understanding of C and inspire novel approaches to problem-solving.
