9 comments

  • ollybee 2 minutes ago
    [delayed]
  • haunter 2 hours ago
    The GameBoy emulator's code also looks like the GameBoy. Slow clap this is insane, definitely my favorite entry.

    https://github.com/ioccc-src/winner/blob/master/2025/ncw1/pr...

    The author, Nick Craig-Wood, is the creator of rclone!

    • nickcw 28 minutes ago
      Glad you enjoyed it :-)

      If you want to see how the sausage was made, here is the source:

      https://github.com/ncw/ioccc-gameboy

      You'll find an unobfuscated version (kind-of) there too. This the the one I actually worked on then I had a program squash all the variable names and squeeze it into the gameboy shape

      The size limit for the entry was the killer. You are allowed 2503 non white space characters (a simplification - the rules are complicated) in IOCCC entries and 4K total code size. This isn't a lot to fit a Z80 processor and a GameBoy hardware emulator in!

      I first wrote a full Gameboy emulator in C. It started out at about 6000 non white space characters. I then spent about about 100 hours work trying to get it to fit into the 2503 limit. For a long time I wasn't sure it was going to fit.

      I decided making the emulator play Tetris (which is a fairly simple game) was the target so I stripped out features like the half carry flag in the Z80 emulator and the windowing system in the Gameboy emulation which Tetris didn't need. I also abused the C code terribly doing things with implicit int I can never un-see. I also got creative with the IOCCC rules which are implemented in a C program which checks your source and I spent some time reverse engineering that looking for loopholes! I discovered that the operators defined in <iso646.h> only count for one token which was very useful.

      Once I had it small enough I had to supply some games to run with it. I created 4, a test program written in z80 assembler, a pi calculator (written in assembler), a 3d tic tac toe game (written in C with gbdk-2020) and a chess program also written in C. I discovered that quite a few open source games ran on the emulator too so I added a downloader for those where I could. Apparently not many games use BCD arithmetic - who would have thought!

      It was a fun project.

      • kees99 23 minutes ago
        Uh... is this supposed to be valid standalone C?

        GCC says there are a bunch of undefined symbols, first one being "R" right in the beginning:

          typedef  unsigned  char u;
          u w,X,T,D[1<<16],t[]=R,U=255;
        • dezgeg 21 minutes ago
          That's defined in Makefile
          • nickcw 9 minutes ago
            That is correct. It is cheating, but the judges let a small amount of it slide, especially if you come up with an amusing enough justification. I could not get it to fit otherwise!
    • sourcecodeplz 2 hours ago
      Damn, that is cool! Looking at me typing css & php...
  • s-macke 1 hour ago
    My favorite is the 366-byte C program emulator that can run Linux and Doom [0]. The VM implements an OISC - a One Instruction Set Computer [1].

    [0] https://github.com/ioccc-src/winner/blob/master/2025/cable/p...

    [1] https://github.com/ioccc-src/winner/blob/master/2025/cable/R...

  • yayitswei 1 hour ago
    In case anyone was wondering, the IOCCC specifically permits LLM use in their guidelines.

    "The IOCCC has a rich history of remarkable winning entries created by authors who skillfully employed various techniques (often their own tools) to develop their code."

    • zerr 26 minutes ago
      So it turned into an LLM-gymnastics competition?
  • aquir 2 hours ago
    The website itself is obfuscated, it’s not easy to find the C sources at all!
  • nsoonhui 1 hour ago
    I'm not sure this kind of competition is still meaningful, given that LLM can easily convert a program clearly written in any programming language to the most obfuscated C code, and can still easily verify it's correctness in an automated way.

    Do I miss anything?

    • s-macke 58 minutes ago
      Yes, you haven’t tried it. LLMs are actually awesome at deobfuscation, but terrible at obfuscation. They just can’t do it yet.

      They also lack the creativity needed for those entries. Obfuscation is only one part of it. Coming up with the idea is another. Many entries also have special qualities that make them true works of art.

      • fooker 35 minutes ago
        > They just can’t do it yet.

        Have you tried it or are you guessing this?

        • s-macke 13 minutes ago
          Yes, I’ve tried it. For example, this was my winning entry from a year ago [0]. The LLM only performs trivial obfuscation, not advanced transformations.

          For example:

            if (x == 1 || x == 2) { ...
          
          can be transformed into:

            if (!(2+x*x-3*x)) { ...
          
          An LLM will do this if you explicitly ask it to, but not on its own.

          [0] https://github.com/ioccc-src/winner/blob/master/2024/macke/p...

          • tromp 0 minutes ago
            One of the main instruments of obfuscation (and the way to get more out of the size constraints) is making the code as short as possible, so in that example you'd prefer

                if (!(x/2-1)) { ...
      • awesome_dude 22 minutes ago
        They should train on some of my colleagues code - they have an inate skill of turning anything simple and clear into a mindboggling mess
    • jjav 1 hour ago
      > Do I miss anything?

      That human art is worth the humanity in the art.

      As soon as anything is automated, it's worth nothing.

    • visha1v 1 hour ago
      yes llm can do it but i think competitions have more to do with developing scientific temperament, competitive mindset and complex problem solving skills. that's why i think they are still relevant and will be relevant for a long time.
    • hulitu 1 hour ago
      > Do I miss anything?

      School ? /s

  • TZubiri 12 minutes ago
    I love the submissions of IOCCC generally, but the schedule and submission process looks like a mess, is that part of the joke? Or is it just because being consistent and designing a simple process is hard¡
  • larodi 2 hours ago
    Tis a pity to not have LLMs compete, given level of obfuscation they be capable of.
    • lifthrasiir 2 hours ago
      In my experience LLMs were pretty good at deobfuscating many entries (including mine) but very awful at generating any significantly obfuscated code. So obfuscation can be regarded as a truly humane art---at least for now.
      • nickcw 23 minutes ago
        I pointed Claude Opus 4.7 at my Forth entry ( https://github.com/ioccc-src/winner/blob/master/2025/ncw3/pr... ) and it absolutely refused to have anything to do with it citing security violations and accusing me of creating malware :-)

        Claude seems OK with it now, so I don't know whether that was a glitch but it was quite funny.

      • TZubiri 11 minutes ago
        I mean they can generate 1 million lines of code, it's obfuscation by brute force, how are you going to read that if not with another LLM
        • lifthrasiir 8 minutes ago
          IOCCC disallows such entries for the obvious reason ;-)
    • shakna 57 minutes ago
      LLMs are allowed. [0]

      > You are free to use whatever tools you wish to write your code. This includes tools that are AI based, LLM (large language model), Virtual coding assistants, code generators, or similar tools, as well as your own tools. The IOCCC judges do not discriminate on the basis of the tools used to write obfuscated C code so long as you are the ultimate author of the code you submit.

      [0] https://www.ioccc.org/faq.html#ai

    • AlotOfReading 1 hour ago
      It's a bit annoying getting frontier models to even work on IOCCC code because of "safety", but even if you get around that LLMs just aren't very good at it. Obfuscating code involves a level of creativity and deviousness that LLMs struggle to meet.
    • t_mahmood 51 minutes ago
      Maybe, but it can't make the gameboy code look like a gameboy too, unless asked to, and that probably would not work even. That's the difference between an LLM and a human, and that's what make this competition worthwhile.
  • rurban 2 hours ago
    So like at a film festival, 90% of the entries won a price, but unlike a film festival there's not a single best. Weird, like modern education.